<?xml version="1.0" encoding="utf-8" ?>
<otrs_package version="1.1">
    <Name>ITSMConfigurationManagement</Name>
    <Version>11.0.15</Version>
    <Vendor>Rother OSS GmbH</Vendor>
    <URL>https://otobo.io/</URL>
    <License>GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007</License>
    <ChangeLog Date="2026-07-27 10:57:51" Version="11.0.15">- Update to OTOBO 11.0.17.
- Various Bugfixes: UniqueNameCheck on edit (#104), enable Class attribute for ACLs also on AJAXUpdate (#87), fix ExternalSource for CI DFs in ImportExport (#86).
- Slightly rework the SysConfig structure for the CI dashboard widgets (#78) - only one DF is allowed for all classes.</ChangeLog>
    <ChangeLog Date="2026-04-24 12:28:44" Version="11.0.14">- Add simple license management.
- Update to OTOBO 11.0.16.
- Various bug fixes. Treat names as raw strings in CIFetch (#45), error log on failing DFSync (#73), CI list in CUIC does not paginate (#78), value validation for GenericInterface (#85), #75, #80</ChangeLog>
    <ChangeLog Date="2026-02-04 16:51:35" Version="11.0.13">Incorporated changes around dynamic field handling of the OTOBO Core of issues #4790 and #4843, targeted at MultiValue fields.</ChangeLog>
    <ChangeLog Date="2025-12-17 13:36:07" Version="11.0.12">Update to OTOBO 11.0.14; Removed hardcoded counters for permission conditions (Issue #70);</ChangeLog>
    <ChangeLog Date="2025-11-12 09:42:03" Version="11.0.11">Prevent hiding pages showing only non dynamic field content on ConfigItemEdit.</ChangeLog>
    <ChangeLog Date="2025-11-07 09:15:51" Version="11.0.10">- ImportExport: Add possibility to import/export sets on single entry level; Sets and Multivalue fields can &quot;keep empty values&quot; for complete fields (no single entry changes).
- Rework AgentITSMConfigItemPrint to be based on visible page content, show description and backlink sections.
- Added history comments for attachment add and delete.
- Various bug fixes, among them issues #66, #59, #63, #65, #58, #54, #21, #61, #15, #56, #57, #52</ChangeLog>
    <ChangeLog Date="2025-08-15 10:37:47" Version="11.0.9">Improve and fix ConfigItemAdd and -Update TransitionActions. Add a mapping SysConfig for Set fields.</ChangeLog>
    <ChangeLog Date="2025-08-14 13:15:07" Version="11.0.8">- Several bugfixes, Issues #17, #39, #47, #49, #51, #53, among others.
- Fixed Regresseion of 11.0.7 where the UpgradeTo11 Console script broke for Subs-&gt;Sets.
- Enable usage of custom &quot;Module&quot; sections.
- Rework how CurInciStateRecalc is triggered from various places.
- Added some more documentation.
- Add new Process TransitionAction: ConfigItemUpdate.</ChangeLog>
    <ChangeLog Date="2025-05-13 10:04:33" Version="11.0.7">- Issue #41: The number of ConfigItems shown in the overview was not correctly used with OTOBO 11.0.9.
- Fix a bug with Excluded Deployment states in ES.</ChangeLog>
    <ChangeLog Date="2025-05-06 15:56:09" Version="11.0.6">- Update to OTOBO 11.0.9.
- Fix Elasticsearch</ChangeLog>
    <ChangeLog Date="2025-05-05 12:40:38" Version="11.0.5">- Added a max height to CI Link sections.
- Temporarily remove old Link Count routine. (Will be replaced in an upcoming release.)
- Added interoperability with DynamicFieldScreens and
- changed SysConfig structure of DynamicFields for search and overview.
- Fix CMDB notifications and add a small doc.
- Added support for searching dynamic field Set inner fields in agent frontend.
- Various Bugfixes.</ChangeLog>
    <ChangeLog Date="2025-03-06 07:23:29" Version="11.0.4">- Use All as default category.
- Update ReadyToImport classes.
- Only trigger Version updates when things changed.
- Added OTOPar CI DynamicField and CI Attributes migrations.
- Various bugfixes</ChangeLog>
    <ChangeLog Date="2024-12-04 06:48:57" Version="11.0.3">- Added various webservice invokers and operations.
- Added documentation.
- Improve some linking situations in the tree view.
- Change internal link directions to align with the standard.
- Added external source parameter for importing/exporting CIs with reference fields (also for webservices).
- Various bug fixes and smaller changes.</ChangeLog>
    <ChangeLog Date="2024-06-21 10:46:57" Version="11.0.2">- Minor naming corrections in the ReadyToAdopt classes
- Improved class export for sets
- Enable defaults for AgentITSMConfigItemSearch
- Implemented cache usage for DefinitionOutOfSync check.
- Enable CodeMirror editor also for role editing.
- Fixed CI counting for AgentITSMConfigItem.
- Added sysconfig to define columns for AgentITSMConfigItemSearch overview.
- Fixed category handling on class import.
- Other minor fixes.</ChangeLog>
    <ChangeLog Date="2024-05-27 13:44:51" Version="11.0.1">Large rework of the CMDB which replaces the XML storage with dynamic fields, and provides a new and highly configurable ConfigItemZoom for both agents and customers.</ChangeLog>
    <Description Lang="en">The OTOBO::ITSM Configuration Management package.</Description>
    <Description Lang="de">Das OTOBO::ITSM Configuration Management Paket.</Description>
    <Description Lang="es">El paquete OTOBO::ITSM Configuration Management.</Description>
    <Description Lang="hu">Az OTOBO::ITSM konfigurációmenedzsment csomag.</Description>
    <Framework Minimum="11.0.14">11.0.x</Framework>
    <IntroInstall Lang="en" Title="Install Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;WELCOME&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        You are about to install the OTOBO package ITSMConfigurationManagement.&lt;br/&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;NOTE&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        The ITSMConfigurationManagement 11 has undergone major changes.&lt;br/&gt;
        It is necessary to migrate your existing ConfigItem classes to the new structure. This can be done via the Console script bin/otobo.Console.pl Admin::ITSM::ConfigItem::UpgradeTo11.
        During its execution the definitions will be updated and dynamic fields for all custom (old xml) attributes will be created.&lt;br/&gt;
        Bundles of new default classes are available and can be imported in Admin-&gt;ConfigItems.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;REQUIRED OTOBO PACKAGES&lt;/strong&gt;
        &lt;ul&gt;
        &lt;li&gt;ITSMCore 11.0.4&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="de" Title="Installation Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;WILLKOMMEN&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Sie sind im Begriff das OTOBO-Paket ITSMConfigurationManagement zu installieren.&lt;br/&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;HINWEIS&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Das Paket ITSMConfigurationManagement wurde mit der Version 11 stark überarbeitet.&lt;br/&gt;
        Nach dem Upgrade von 10.1 müssen bestehende ConfigItem-Klassen zusätzlich auf die neue Struktur migriert werden. Hierzu steht das Console-Kommando bin/otobo.Console.pl Admin::ITSM::ConfigItem::UpgradeTo11 zu Verfügung.
        Dieses ändert die ConfigItem-Klassendefinitionen auf die neue Struktur und legt dynamische Felder für alle konfigurierbaren (d.h. die bisherigen xml-) Attribute an.&lt;br/&gt;
        Neue default-Klassen können unter Admin-&gt;ConfigItems direkt importiert werden.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;BENÖTIGTE OTOBO-PAKETE&lt;/strong&gt;
        &lt;ul&gt;
        &lt;li&gt;ITSMCore 11.0.4&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="es" Title="Install Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;BIENVENIDO&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Usted está punto de instalar el paquete ITSMConfigurationManagement de OTOBO.&lt;br/&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;NOTA&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        El módulo ITSMConfigurationManagement 11 ha sufrido cambios mayores.&lt;br/&gt;
        Es necesario migrar sus definiciones existentes de clases de elementos de configuración (ConfigItems) a la nueva estructura.
        Esto puede ser realizado ejecutando el comando de consola: bin/otobo.Console.pl Admin::ITSM::ConfigItem::UpgradeTo11.
        Durante su ejecución, se actualizarán las definiciones de ConfigItems y se crearán nuevos campos dinámicos para todos los atributos personalizados existentes (antigua estructura XML).&lt;br/&gt;
        Una serie de nuevas clases por defecto están disponibles y pueden ser importadas mediante la opción: Admin-&gt;ConfigItems.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;PAQUETES OTOBO REQUERIDOS&lt;/strong&gt;
        &lt;ul&gt;
        &lt;li&gt;ITSMCore 11.0.4&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="en" Title="Installation Information" Type="post">

        &lt;br/&gt;
        &lt;strong&gt;NOTICE&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        In order to grant users access to the config item menu, you need to add them as member to the group 'itsm-configitem'.
        &lt;br/&gt;
        &lt;br/&gt;
        The menu items that were added by this package will be visible after you log-in to the system again.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="de" Title="Installation Information" Type="post">

        &lt;br/&gt;
        &lt;strong&gt;HINWEIS&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Um Benutzern Zugriff auf das ConfigItem-Menü zu gewähren, müssen diese Mitglied der neuen Gruppe 'itsm-configitem' sein.
        &lt;br/&gt;
        &lt;br/&gt;
        Die von diesem Paket hinzugefügten Menü-Punkte sind erst nach einem erneuten Anmeldevorgang im System sichtbar.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="es" Title="Installation Information" Type="post">

        &lt;br/&gt;
        &lt;strong&gt;ATENCIÓN&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Para permitirles a los usuarios el acceso al menú de los elementos de configuración, es necesario que se den de
        alta como miembros del grupo 'itsm-configitem'.
        &lt;br/&gt;
        &lt;br/&gt;
        Los elementos del menú que se agregaron por este paquete, serpan visibles después reiniciar la sesión al sistema.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))
        &lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroInstall Lang="hu" Title="Telepítési információk" Type="post">

        &lt;br/&gt;
        &lt;strong&gt;FIGYELMEZTETÉS&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Annak érdekében, hogy hozzáférést adjon a felhasználók számára a konfigurációelem menühöz, hozzá kell adnia őket az „itsm-configitem” csoporthoz tagként.
        &lt;br/&gt;
        &lt;br/&gt;
        Azok a menüpontok, amelyeket ez a csomag adott hozzá, azután lesznek láthatóak, miután ismét bejelentkezik a rendszerbe.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroInstall>
    <IntroUninstall Lang="en" Title="Uninstallation Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;ATTENTION&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        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!
        &lt;br/&gt;
        &lt;br/&gt;
        The group 'itsm-configitem' that was created during package installation will be deactivated.
        You can activate this group again in the admin area.
        &lt;br/&gt;
        &lt;br/&gt;
        All links to config item objects will be irrevocably deleted!
        &lt;br/&gt;
        &lt;br/&gt;
        The statistics that are associated with this package, will no longer be available if the package is uninstalled.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUninstall>
    <IntroUninstall Lang="de" Title="Uninstallation Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;ACHTUNG&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Bei der Deinstallation werden die von diesem Paket angelegten Datenbank-Tabellen gelöscht.
        Alle darin enthaltenen Daten gehen unwiderruflich verloren!
        &lt;br/&gt;
        &lt;br/&gt;
        Die von diesem Paket angelegte Gruppe 'itsm-configitem' wird deaktiviert.
        Sie kann jederzeit im Admin-Bereich wieder aktiviert werden.
        &lt;br/&gt;
        &lt;br/&gt;
        Alle Verknüpfungen zu ConfigItem-Objekten werden unwiderruflich gelöscht!
        &lt;br/&gt;
        &lt;br/&gt;
        Nach der Deinstallation sind die zu diesem Paket zugehörigen Statistiken nicht mehr verfügbar.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUninstall>
    <IntroUninstall Lang="es" Title="Uninstallation Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;ATENCIÓN&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Si usted desinstala este paquete, todas las tablas de la base de datos que fueron creadas durante su instalación se eliminarán.
        ¡Todos los datos de dichas tablas se perderán irrevocablemente!
        &lt;br/&gt;
        &lt;br/&gt;
        El grupo 'itsm-configitem' que se creó durante la instalación de este paquete se desactivará.
        Es posible reactivar este grupo en el área de administración.
        &lt;br/&gt;
        &lt;br/&gt;
        ¡Todos los vínculos a objetos de elementos de configuración serán eliminados permanentemente!
        &lt;br/&gt;
        &lt;br/&gt;
        Si usted desinstala este paquete, las estadísticas que están asociadas a él ya no estarán disponibles.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUninstall>
    <IntroUninstall Lang="hu" Title="Eltávolítási információk" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;FIGYELEM&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        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!
        &lt;br/&gt;
        &lt;br/&gt;
        A csomagtelepítés során létrehozott „itsm-configitem” csoport ki lesz kapcsolva.
        Ezt a csoportot az adminisztrációs területen tudja ismét bekapcsolni.
        &lt;br/&gt;
        &lt;br/&gt;
        A konfigurációelem objektumokra mutató összes hivatkozás visszavonhatatlanul törölve lesz!
        &lt;br/&gt;
        &lt;br/&gt;
        Az ehhez a csomaghoz hozzárendelt statisztikák többé nem lesznek elérhetők, ha a csomag eltávolításra kerül.
        &lt;br/&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUninstall>
    <IntroUpgrade Lang="en" Title="Upgrade Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;WELCOME&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        You are about to upgrade the OTOBO package ITSMConfigurationManagement.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;NOTE&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        The ITSMConfigurationManagement 11 has undergone major changes.&lt;br/&gt;
        It is necessary to migrate your existing ConfigItem classes to the new structure. This can be done via the Console script bin/otobo.Console.pl Admin::ITSM::ConfigItem::UpgradeTo11.
        During its execution the definitions will be updated and dynamic fields for all custom (old xml) attributes will be created.&lt;br/&gt;
        Bundles of new default classes are available and can be imported in Admin-&gt;ConfigItems.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;REQUIRED OTOBO PACKAGES&lt;/strong&gt;
        &lt;ul&gt;
        &lt;li&gt;ITSMCore 11.0.4&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUpgrade>
    <IntroUpgrade Lang="de" Title="Upgrade Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;WILLKOMMEN&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Sie sind im Begriff das OTOBO-Paket ITSMConfigurationManagement zu aktualisieren.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;HINWEIS&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Das Paket ITSMConfigurationManagement wurde mit der Version 11 stark überarbeitet.&lt;br/&gt;
        Nach dem Upgrade von 10.1 müssen bestehende ConfigItem-Klassen zusätzlich auf die neue Struktur migriert werden. Hierzu steht das Console-Kommando bin/otobo.Console.pl Admin::ITSM::ConfigItem::UpgradeTo11 zu Verfügung.
        Dieses ändert die ConfigItem-Klassendefinitionen auf die neue Struktur und legt dynamische Felder für alle konfigurierbaren (d.h. die bisherigen xml-) Attribute an.&lt;br/&gt;
        Neue default-Klassen können unter Admin-&gt;ConfigItems direkt importiert werden.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;BENÖTIGTE OTOBO-PAKETE&lt;/strong&gt;
        &lt;ul&gt;
        &lt;li&gt;ITSMCore 11.0.4&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUpgrade>
    <IntroUpgrade Lang="es" Title="Upgrade Information" Type="pre">

        &lt;br/&gt;
        &lt;strong&gt;BIENVENIDO&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        Usted está a punto de actualizar el paquete ITSMConfigurationManagement de OTOBO.&lt;br/&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;NOTA&lt;/strong&gt;
        &lt;br/&gt;
        &lt;br/&gt;
        El módulo ITSMConfigurationManagement 11 ha sufrido cambios mayores.&lt;br/&gt;
        Es necesario migrar sus definiciones existentes de clases de elementos de configuración (ConfigItems) a la nueva estructura.
        Esto puede ser realizado ejecutando el comando de consola: bin/otobo.Console.pl Admin::ITSM::ConfigItem::UpgradeTo11.
        Durante su ejecución, se actualizarán las definiciones de ConfigItems y se crearán nuevos campos dinámicos para todos los atributos personalizados existentes (antigua estructura XML).&lt;br/&gt;
        Una serie de nuevas clases por defecto están disponibles y pueden ser importadas mediante la opción: Admin-&gt;ConfigItems.&lt;br/&gt;
        &lt;br/&gt;
        &lt;strong&gt;PAQUETES OTOBO REQUERIDOS&lt;/strong&gt;
        &lt;ul&gt;
        &lt;li&gt;ITSMCore 11.0.4&lt;/li&gt;
        &lt;/ul&gt;
        &lt;br/&gt;
        ((enjoy))&lt;br/&gt;
        &lt;br/&gt;

    </IntroUpgrade>
    <IntroUpgrade Lang="en" Title="Convert legacy reference fields" Type="post">

        &lt;br/&gt;
        If you have the OTOBO 10.1 package &quot;DynamicFieldITSMConfigItem&quot; installed, in order to migrate the dynamic fields of type &quot;ITSMConfigItemReference&quot; please execute the console command &quot;Admin::ITSM::ConfigItem::ConvertLegacyRefDFs&quot;&lt;br/&gt;

    </IntroUpgrade>
    <PackageRequired Version="11.0.4">ITSMCore</PackageRequired>
    <CodeInstall Type="post">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeInstall();

    </CodeInstall>
    <CodeUpgrade Type="post" Version="11.0.15">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        # discard internally stored object, so that the next access to object creates them newly
        $Kernel::OM-&gt;ObjectsDiscard(
            Objects            =&gt; [$CodeModule],
            ForcePackageReload =&gt; 1,
        );

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUpgradeFromLowerThan_11_0_15();

    </CodeUpgrade>
    <CodeUpgrade Type="post" Version="11.0.7">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        # discard internally stored object, so that the next access to object creates them newly
        $Kernel::OM-&gt;ObjectsDiscard(
            Objects            =&gt; [$CodeModule],
            ForcePackageReload =&gt; 1,
        );

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUpgradeFromLowerThan_11_0_7();

    </CodeUpgrade>
    <CodeUpgrade Type="post">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        # discard internally stored object, so that the next access to object creates them newly
        $Kernel::OM-&gt;ObjectsDiscard(
            Objects            =&gt; [$CodeModule],
            ForcePackageReload =&gt; 1,
        );

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUpgrade();

    </CodeUpgrade>
    <CodeUninstall Type="pre">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUninstall();

    </CodeUninstall>
    <CodeUninstall Type="post">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeUninstallPost();

        {
            # cleanup stats list (only stats related to the given stat objects)
            $Kernel::OM-&gt;Get('Kernel::System::Stats')-&gt;StatsCleanUp(
                ObjectNames =&gt; [ 'ITSMConfigItem' ],
                UserID =&gt; 1,
            );
        }

    </CodeUninstall>
    <CodeReinstall Type="post">

        # create the package name
        my $CodeModule = 'var::packagesetup::' . $Param{Structure}-&gt;{Name}-&gt;{Content};

        $Kernel::OM-&gt;Get($CodeModule)-&gt;CodeReinstall();

    </CodeReinstall>
    <BuildCommitID>739b37f131165d5e67d4bc7df3462f4b496d1b62</BuildCommitID>
    <BuildDate>2026-07-27 10:58:06</BuildDate>
    <BuildHost>opms.rother-oss.com</BuildHost>
    <Filelist>
        <File Location="Custom/Kernel/Modules/AdminACL.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2ZWZkYzdiZjJhMzMyNTI3N2NkNzlhNjBmMGYyNDA3ZjhhZDU5ZTg3IC0gS2VybmVsL01vZHVsZXMvQWRtaW5BQ0wucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFkbWluQUNMOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBzZXQgcHJlZiBmb3IgY29sdW1ucyBrZXkKICAgICRTZWxmLT57UHJlZktleUluY2x1ZGVJbnZhbGlkfSA9ICdJbmNsdWRlSW52YWxpZCcgLiAnLScgLiAkU2VsZi0+e0FjdGlvbn07CgogICAgbXkgJVByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+R2V0UHJlZmVyZW5jZXMoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgJFNlbGYtPntJbmNsdWRlSW52YWxpZH0gPSAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUluY2x1ZGVJbnZhbGlkfSB9OwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAkU2VsZi0+e1N1YmFjdGlvbn0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3ViYWN0aW9uJyApIHx8ICcnOwogICAgJFBhcmFte0luY2x1ZGVJbnZhbGlkfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdJbmNsdWRlSW52YWxpZCcgKTsKCiAgICBpZiAoIGRlZmluZWQgJFBhcmFte0luY2x1ZGVJbnZhbGlkfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgS2V5ICAgID0+ICRTZWxmLT57UHJlZktleUluY2x1ZGVJbnZhbGlkfSwKICAgICAgICAgICAgVmFsdWUgID0+ICRQYXJhbXtJbmNsdWRlSW52YWxpZH0sCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPntJbmNsdWRlSW52YWxpZH0gPSAkUGFyYW17SW5jbHVkZUludmFsaWR9OwogICAgfQojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgJFBhcmFte09iamVjdFR5cGV9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09iamVjdFR5cGUnICkgfHwgJ1RpY2tldCc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgbXkgJEFDTElEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0lEJyApIHx8ICcnOwoKICAgIG15ICRTeW5jaHJvbml6ZU1lc3NhZ2UgPSBUcmFuc2xhdGFibGUoCiAgICAgICAgJ0FDTCBpbmZvcm1hdGlvbiBmcm9tIGRhdGFiYXNlIGlzIG5vdCBpbiBzeW5jIHdpdGggdGhlIHN5c3RlbSBjb25maWd1cmF0aW9uLCBwbGVhc2UgZGVwbG95IGFsbCBBQ0xzLicKICAgICk7CgogICAgbXkgJFN5bmNocm9uaXplZE1lc3NhZ2VWaXNpYmxlID0gMDsKCiAgICBteSAkQUNMT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkFDTDo6REI6OkFDTCcpOwoKICAgIGlmICggJEFDTE9iamVjdC0+QUNMc05lZWRTeW5jKCkgKSB7CgogICAgICAgICMgY3JlYXRlIGEgbm90aWZpY2F0aW9uIGlmIHN5c3RlbSBpcyBub3QgdXAgdG8gZGF0ZQogICAgICAgICRQYXJhbXtOb3RpZnlEYXRhfSA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSW5mbyA9PiAkU3luY2hyb25pemVNZXNzYWdlLAogICAgICAgICAgICB9LAogICAgICAgIF07CiAgICAgICAgJFN5bmNocm9uaXplZE1lc3NhZ2VWaXNpYmxlID0gMTsKICAgIH0KCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgQUNMSW1wb3J0CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUNMSW1wb3J0JyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgbXkgJVVwbG9hZFN0dWZmID0gJFBhcmFtT2JqZWN0LT5HZXRVcGxvYWRBbGwoCiAgICAgICAgICAgIFBhcmFtICA9PiAnRmlsZVVwbG9hZCcsCiAgICAgICAgICAgIFNvdXJjZSA9PiAnc3RyaW5nJywKICAgICAgICApOwoKICAgICAgICBteSAkT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllcyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzJyApIHx8ICcnOwoKICAgICAgICBteSAkQUNMSW1wb3J0ID0gJEFDTE9iamVjdC0+QUNMSW1wb3J0KAogICAgICAgICAgICBDb250ZW50ICAgICAgICAgICAgICAgICAgID0+ICRVcGxvYWRTdHVmZntDb250ZW50fSwKICAgICAgICAgICAgT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllcyA9PiAkT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllcywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJEFDTEltcG9ydC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICBteSAkTWVzc2FnZSA9ICRBQ0xJbXBvcnQtPntNZXNzYWdlfQogICAgICAgICAgICAgICAgfHwgVHJhbnNsYXRhYmxlKAogICAgICAgICAgICAgICAgICAgICdBQ0xzIGNvdWxkIG5vdCBiZSBJbXBvcnRlZCBkdWUgdG8gYSB1bmtub3duIGVycm9yLCBwbGVhc2UgY2hlY2sgT1RPQk8gbG9ncyBmb3IgbW9yZSBpbmZvcm1hdGlvbicKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJE1lc3NhZ2UsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRBQ0xJbXBvcnQtPntBZGRlZEFDTHN9ICkgewogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtOb3RpZnlEYXRhfSB9LCB7CiAgICAgICAgICAgICAgICBJbmZvID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBBQ0xzIGhhdmUgYmVlbiBhZGRlZCBzdWNjZXNzZnVsbHk6ICVzJywKICAgICAgICAgICAgICAgICAgICAkQUNMSW1wb3J0LT57QWRkZWRBQ0xzfQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkQUNMSW1wb3J0LT57VXBkYXRlZEFDTHN9ICkgewogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtOb3RpZnlEYXRhfSB9LCB7CiAgICAgICAgICAgICAgICBJbmZvID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBBQ0xzIGhhdmUgYmVlbiB1cGRhdGVkIHN1Y2Nlc3NmdWxseTogJXMnLAogICAgICAgICAgICAgICAgICAgICRBQ0xJbXBvcnQtPntVcGRhdGVkQUNMc30KICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGlmICggJEFDTEltcG9ydC0+e0FDTEVycm9yc30gKSB7CiAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte05vdGlmeURhdGF9IH0sIHsKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgICAgICBJbmZvICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgJ1RoZXJlIHdoZXJlIGVycm9ycyBhZGRpbmcvdXBkYXRpbmcgdGhlIGZvbGxvd2luZyBBQ0xzOiAlcy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cgZmlsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nLAogICAgICAgICAgICAgICAgICAgICRBQ0xJbXBvcnQtPntBQ0xFcnJvcnN9CiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgaWYgKAogICAgICAgICAgICAoICRBQ0xJbXBvcnQtPntVcGRhdGVkQUNMc30gfHwgJEFDTEltcG9ydC0+e0FkZGVkQUNMc30gKQogICAgICAgICAgICAmJiAhJFN5bmNocm9uaXplZE1lc3NhZ2VWaXNpYmxlCiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAkUGFyYW17Tm90aWZ5RGF0YX0gPSBbCiAgICAgICAgICAgICAgICBAeyAkUGFyYW17Tm90aWZ5RGF0YX0gfHwgW10gfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJbmZvID0+ICRTeW5jaHJvbml6ZU1lc3NhZ2UsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRTZWxmLT5fU2hvd092ZXJ2aWV3KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEFDTE5ldwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FDTE5ldycgKSB7CgogICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dFZGl0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEFjdGlvbiA9PiAnTmV3JywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgQUNMTmV3QWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUNMTmV3QWN0aW9uJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgIyBnZXQgQUNMIGRhdGEKICAgICAgICBteSAkQUNMRGF0YTsKCiAgICAgICAgIyBnZXQgcGFyYW1ldGVyIGZyb20gd2ViIGJyb3dzZXIKICAgICAgICBteSAkR2V0UGFyYW0gPSAkU2VsZi0+X0dldFBhcmFtcygpOwoKICAgICAgICAjIHNldCBuZXcgY29uZmd1cmF0aW9uCiAgICAgICAgJEFDTERhdGEtPntOYW1lfSAgICAgICAgICAgPSAkR2V0UGFyYW0tPntOYW1lfTsKICAgICAgICAkQUNMRGF0YS0+e0NvbW1lbnR9ICAgICAgICA9ICRHZXRQYXJhbS0+e0NvbW1lbnR9OwogICAgICAgICRBQ0xEYXRhLT57RGVzY3JpcHRpb259ICAgID0gJEdldFBhcmFtLT57RGVzY3JpcHRpb259OwogICAgICAgICRBQ0xEYXRhLT57U3RvcEFmdGVyTWF0Y2h9ID0gJEdldFBhcmFtLT57U3RvcEFmdGVyTWF0Y2h9IHx8IDA7CiAgICAgICAgJEFDTERhdGEtPntWYWxpZElEfSAgICAgICAgPSAkR2V0UGFyYW0tPntWYWxpZElEfTsKCiAgICAgICAgIyBjaGVjayByZXF1aXJlZCBwYXJhbWV0ZXJzCiAgICAgICAgbXkgJUVycm9yOwogICAgICAgIGlmICggISRHZXRQYXJhbS0+e05hbWV9ICkgewoKICAgICAgICAgICAgIyBhZGQgc2VydmVyIGVycm9yIGVycm9yIGNsYXNzCiAgICAgICAgICAgICRFcnJvcntOYW1lU2VydmVyRXJyb3J9ICAgICAgICA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICRFcnJvcntOYW1lU2VydmVyRXJyb3JNZXNzYWdlfSA9IFRyYW5zbGF0YWJsZSgnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCcpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJEdldFBhcmFtLT57VmFsaWRJRH0gKSB7CgogICAgICAgICAgICAjIGFkZCBzZXJ2ZXIgZXJyb3IgZXJyb3IgY2xhc3MKICAgICAgICAgICAgJEVycm9ye1ZhbGlkSURTZXJ2ZXJFcnJvcn0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEVycm9ye1ZhbGlkSURTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gVHJhbnNsYXRhYmxlKCdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkJyk7CiAgICAgICAgfQoKICAgICAgICAjIGlmIHRoZXJlIGlzIGFuIGVycm9yIHJldHVybiB0byBlZGl0IHNjcmVlbgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoIFwlRXJyb3IgKSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5fU2hvd0VkaXQoCiAgICAgICAgICAgICAgICAlRXJyb3IsCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBBQ0xEYXRhID0+ICRBQ0xEYXRhLAogICAgICAgICAgICAgICAgQWN0aW9uICA9PiAnTmV3JywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgb3RoZXJ3aXNlIHNhdmUgY29uZmlndXJhdGlvbiBhbmQgcmV0dXJuIHRvIG92ZXJ2aWV3IHNjcmVlbgogICAgICAgIG15ICRBQ0xJRCA9ICRBQ0xPYmplY3QtPkFDTEFkZCgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJEFDTERhdGEtPntOYW1lfSwKICAgICAgICAgICAgQ29tbWVudCAgICAgICAgPT4gJEFDTERhdGEtPntDb21tZW50fSwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJEFDTERhdGEtPntEZXNjcmlwdGlvbn0sCiAgICAgICAgICAgIFN0b3BBZnRlck1hdGNoID0+ICRBQ0xEYXRhLT57U3RvcEFmdGVyTWF0Y2h9LAogICAgICAgICAgICBWYWxpZElEICAgICAgICA9PiAkQUNMRGF0YS0+e1ZhbGlkSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgIE9iamVjdFR5cGUgICAgID0+ICRQYXJhbXtPYmplY3RUeXBlfSwKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICApOwoKICAgICAgICAjIHNob3cgZXJyb3IgaWYgY2FuJ3QgY3JlYXRlCiAgICAgICAgaWYgKCAhJEFDTElEICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnVGhlcmUgd2FzIGFuIGVycm9yIGNyZWF0aW5nIHRoZSBBQ0wnKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgcmVkaXJlY3QgdG8gZWRpdCBzY3JlZW4KIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPUFDTEVkaXQ7SUQ9JEFDTElEIiApOwogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPUFDTEVkaXQ7SUQ9JEFDTElEO09iamVjdFR5cGU9JFBhcmFte09iamVjdFR5cGV9IiApOwojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgQUNMRWRpdAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FDTEVkaXQnICkgewoKICAgICAgICAjIGNoZWNrIGZvciBBQ0xJRAogICAgICAgIGlmICggISRBQ0xJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05lZWQgQUNMSUQhJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBBQ0wgZGF0YQogICAgICAgIG15ICRBQ0xEYXRhID0gJEFDTE9iamVjdC0+QUNMR2V0KAogICAgICAgICAgICBJRCAgICAgPT4gJEFDTElELAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZm9yIHZhbGlkIEFDTCBkYXRhCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJEFDTERhdGEpICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCBnZXQgZGF0YSBmb3IgQUNMSUQgJXMnLCAkQUNMSUQgKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRKU09OT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkpTT04nKTsKCiAgICAgICAgaWYgKCAkQUNMRGF0YS0+e0NvbmZpZ01hdGNofSApIHsKICAgICAgICAgICAgJEFDTERhdGEtPntDb25maWdNYXRjaH0gPSAkSlNPTk9iamVjdC0+RW5jb2RlKAogICAgICAgICAgICAgICAgRGF0YSA9PiAkQUNMRGF0YS0+e0NvbmZpZ01hdGNofSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggJEFDTERhdGEtPntDb25maWdDaGFuZ2V9ICkgewogICAgICAgICAgICAkQUNMRGF0YS0+e0NvbmZpZ0NoYW5nZX0gPSAkSlNPTk9iamVjdC0+RW5jb2RlKAogICAgICAgICAgICAgICAgRGF0YSA9PiAkQUNMRGF0YS0+e0NvbmZpZ0NoYW5nZX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93RWRpdCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBBQ0xJRCAgID0+ICRBQ0xJRCwKICAgICAgICAgICAgQUNMRGF0YSA9PiAkQUNMRGF0YSwKICAgICAgICAgICAgQWN0aW9uICA9PiAnRWRpdCcsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEFDTEVkaXRBY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBQ0xFZGl0QWN0aW9uJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgIyBnZXQgd2Vic2VyaWNlIGNvbmZpZ3VyYXRpb24KICAgICAgICBteSAkQUNMRGF0YTsKCiAgICAgICAgIyBnZXQgcGFyYW1ldGVyIGZyb20gd2ViIGJyb3dzZXIKICAgICAgICBteSAkR2V0UGFyYW0gPSAkU2VsZi0+X0dldFBhcmFtcygpOwoKICAgICAgICAjIHNldCBuZXcgY29uZmd1cmF0aW9uCiAgICAgICAgJEFDTERhdGEtPntOYW1lfSAgICAgICAgICAgPSAkR2V0UGFyYW0tPntOYW1lfTsKICAgICAgICAkQUNMRGF0YS0+e0NvbW1lbnR9ICAgICAgICA9ICRHZXRQYXJhbS0+e0NvbW1lbnR9OwogICAgICAgICRBQ0xEYXRhLT57RGVzY3JpcHRpb259ICAgID0gJEdldFBhcmFtLT57RGVzY3JpcHRpb259OwogICAgICAgICRBQ0xEYXRhLT57U3RvcEFmdGVyTWF0Y2h9ID0gJEdldFBhcmFtLT57U3RvcEFmdGVyTWF0Y2h9IHx8IDA7CiAgICAgICAgJEFDTERhdGEtPntWYWxpZElEfSAgICAgICAgPSAkR2V0UGFyYW0tPntWYWxpZElEfTsKICAgICAgICAkQUNMRGF0YS0+e0NvbmZpZ01hdGNofSAgICA9ICRHZXRQYXJhbS0+e0NvbmZpZ01hdGNofSAgfHwgJyc7CiAgICAgICAgJEFDTERhdGEtPntDb25maWdDaGFuZ2V9ICAgPSAkR2V0UGFyYW0tPntDb25maWdDaGFuZ2V9IHx8ICcnOwojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICRBQ0xEYXRhLT57T2JqZWN0VHlwZX0gICAgID0gJEdldFBhcmFtLT57T2JqZWN0VHlwZX0gfHwgJ1RpY2tldCc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIG15ICVFcnJvcjsKICAgICAgICBpZiAoICEkR2V0UGFyYW0tPntOYW1lfSApIHsKCiAgICAgICAgICAgICMgYWRkIHNlcnZlciBlcnJvciBlcnJvciBjbGFzcwogICAgICAgICAgICAkRXJyb3J7TmFtZVNlcnZlckVycm9yfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkRXJyb3J7TmFtZVNlcnZlckVycm9yTWVzc2FnZX0gPSBUcmFuc2xhdGFibGUoJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnKTsKICAgICAgICB9CgogICAgICAgIGlmICggISRHZXRQYXJhbS0+e1ZhbGlkSUR9ICkgewoKICAgICAgICAgICAgIyBhZGQgc2VydmVyIGVycm9yIGVycm9yIGNsYXNzCiAgICAgICAgICAgICRFcnJvcntWYWxpZElEU2VydmVyRXJyb3J9ICAgICAgICA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICRFcnJvcntWYWxpZElEU2VydmVyRXJyb3JNZXNzYWdlfSA9IFRyYW5zbGF0YWJsZSgnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCcpOwogICAgICAgIH0KCiAgICAgICAgIyBpZiB0aGVyZSBpcyBhbiBlcnJvciByZXR1cm4gdG8gZWRpdCBzY3JlZW4KICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCBcJUVycm9yICkgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dFZGl0KAogICAgICAgICAgICAgICAgJUVycm9yLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgQUNMRGF0YSA9PiAkQUNMRGF0YSwKICAgICAgICAgICAgICAgIEFjdGlvbiAgPT4gJ0VkaXQnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2Ugc2F2ZSBjb25maWd1cmF0aW9uIGFuZCByZXR1cm4gdG8gb3ZlcnZpZXcgc2NyZWVuCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQUNMT2JqZWN0LT5BQ0xVcGRhdGUoCiAgICAgICAgICAgIElEICAgICAgICAgICAgID0+ICRBQ0xJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJEFDTERhdGEtPntOYW1lfSwKICAgICAgICAgICAgQ29tbWVudCAgICAgICAgPT4gJEFDTERhdGEtPntDb21tZW50fSwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJEFDTERhdGEtPntEZXNjcmlwdGlvbn0sCiAgICAgICAgICAgIFN0b3BBZnRlck1hdGNoID0+ICRBQ0xEYXRhLT57U3RvcEFmdGVyTWF0Y2h9IHx8IDAsCiAgICAgICAgICAgIFZhbGlkSUQgICAgICAgID0+ICRBQ0xEYXRhLT57VmFsaWRJRH0sCiAgICAgICAgICAgIENvbmZpZ01hdGNoICAgID0+ICRBQ0xEYXRhLT57Q29uZmlnTWF0Y2h9ICB8fCAnJywKICAgICAgICAgICAgQ29uZmlnQ2hhbmdlICAgPT4gJEFDTERhdGEtPntDb25maWdDaGFuZ2V9IHx8ICcnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgIE9iamVjdFR5cGUgICAgID0+ICRQYXJhbXtPYmplY3RUeXBlfSwKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICApOwoKICAgICAgICAjIHNob3cgZXJyb3IgaWYgY2FuJ3QgdXBkYXRlCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdUaGVyZSB3YXMgYW4gZXJyb3IgdXBkYXRpbmcgdGhlIEFDTCcpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKAogICAgICAgICAgICBkZWZpbmVkICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb250aW51ZUFmdGVyU2F2ZScgKQogICAgICAgICAgICAmJiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb250aW51ZUFmdGVyU2F2ZScgKSBlcSAnMScgKQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBpZiB0aGUgdXNlciB3b3VsZCBsaWtlIHRvIGNvbnRpbnVlIGVkaXRpbmcgdGhlIEFDTCwganVzdCByZWRpcmVjdCB0byB0aGUgZWRpdCBzY3JlZW4KICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4KIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgICAgICAgICAgICAgICAgICJBY3Rpb249QWRtaW5BQ0w7U3ViYWN0aW9uPUFDTEVkaXQ7SUQ9JEFDTElEIgogICAgICAgICAgICAgICAgICAgICJBY3Rpb249QWRtaW5BQ0w7U3ViYWN0aW9uPUFDTEVkaXQ7SUQ9JEFDTElEO09iamVjdFR5cGU9JFBhcmFte09iamVjdFR5cGV9IgojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgb3RoZXJ3aXNlIHJldHVybiB0byBvdmVydmlldwojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07T2JqZWN0VHlwZT0kUGFyYW17T2JqZWN0VHlwZX0iICk7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgfQogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgU3luYwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FDTERlcGxveScgKSB7CgogICAgICAgIG15ICRMb2NhdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpIC4gJy9LZXJuZWwvQ29uZmlnL0ZpbGVzL1paWkFDTC5wbSc7CgogICAgICAgIG15ICRBQ0xEdW1wU3VjY2VzcyA9ICRBQ0xPYmplY3QtPkFDTER1bXAoCiAgICAgICAgICAgIFJlc3VsdFR5cGUgPT4gJ0ZJTEUnLAogICAgICAgICAgICBMb2NhdGlvbiAgID0+ICRMb2NhdGlvbiwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJFBhcmFte09iamVjdFR5cGV9LAojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICk7CgogICAgICAgIGlmICgkQUNMRHVtcFN1Y2Nlc3MpIHsKCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEFDTE9iamVjdC0+QUNMc05lZWRTeW5jUmVzZXQoKTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHByZXNlbGVjdGlvbiBjYWNoZSBUT0RPOiByZWJ1aWxkIHRoZSBjYWNoZSBwcm9wZXJseSAoYSBzaW1wbGUgJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5TZXRBQ0xQcmVzZWxlY3Rpb25DYWNoZSgpOyB1c2VzIHRoZSBvbGQgQUNMcykKICAgICAgICAgICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVGlja2V0QUNMJywgICAgICAjIG9ubHkgW2EtekEtWjAtOV9dIGNoYXJzIHVzYWJsZQogICAgICAgICAgICAgICAgVHlwZSA9PiAkUGFyYW17T2JqZWN0VHlwZX0gLiAnQUNMJywgICAgICAjIG9ubHkgW2EtekEtWjAtOV9dIGNoYXJzIHVzYWJsZQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICAgICAgS2V5ICA9PiAnUHJlc2VsZWN0aW9uJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkU3VjY2VzcykgewojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApOwogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtPYmplY3RUeXBlPSRQYXJhbXtPYmplY3RUeXBlfSIgKTsKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIHNob3cgZXJyb3IgaWYgY2FuJ3Qgc2V0IHN0YXRlCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ1RoZXJlIHdhcyBhbiBlcnJvciBzZXR0aW5nIHRoZSBlbnRpdHkgc3luYyBzdGF0dXMuJyksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBzaG93IGVycm9yIGlmIGNhbid0IHN5bmNoCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdUaGVyZSB3YXMgYW4gZXJyb3Igc3luY2hyb25pemluZyB0aGUgQUNMcy4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBBQ0xEZWxldGUgQUpBWAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FDTERlbGV0ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgICMgY2hlY2sgZm9yIEFDTElECiAgICAgICAgcmV0dXJuIGlmICEkQUNMSUQ7CgogICAgICAgIG15ICRDaGVja1Jlc3VsdCA9ICRTZWxmLT5fQ2hlY2tBQ0xEZWxldGUoIElEID0+ICRBQ0xJRCApOwoKICAgICAgICBteSAkSlNPTjsKICAgICAgICBpZiAoICRDaGVja1Jlc3VsdC0+e1N1Y2Nlc3N9ICkgewoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQUNMT2JqZWN0LT5BQ0xEZWxldGUoCiAgICAgICAgICAgICAgICBJRCAgICAgPT4gJEFDTElELAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICVEZWxldGVSZXN1bHQgPSAoCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgICAgICBTdWNjZXNzID0+ICRTdWNjZXNzLAogICAgICAgICAgICAgICAgU3VjY2VzcyAgICA9PiAkU3VjY2VzcywKICAgICAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJFBhcmFte09iamVjdFR5cGV9LAojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkRGVsZXRlUmVzdWx0e01lc3NhZ2V9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQUNMICVzIGNvdWxkIG5vdCBiZSBkZWxldGVkJywgJEFDTElEICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYnVpbGQgSlNPTiBvdXRwdXQKICAgICAgICAgICAgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJURlbGV0ZVJlc3VsdCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBidWlsZCBKU09OIG91dHB1dAogICAgICAgICAgICAkSlNPTiA9ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAleyRDaGVja1Jlc3VsdH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZW5kIEpTT04gcmVzcG9uc2UKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb24nLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTiwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEFDTEV4cG9ydAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FDTEV4cG9ydCcgKSB7CgogICAgICAgIG15ICRBQ0xJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdJRCcgKSB8fCAnJzsKICAgICAgICBteSAkQUNMRGF0YTsKICAgICAgICBteSAkQUNMU2luZ2xlRGF0YTsKIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgICAgIG15ICRGaWxlbmFtZSA9ICdFeHBvcnRfQUNMLnltbCc7CiAgICAgICAgbXkgJEZpbGVuYW1lID0gICdFeHBvcnRfJyAuICRQYXJhbXtPYmplY3RUeXBlfSAuICdfQUNMLnltbCc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgICAgIGlmICgkQUNMSUQpIHsKCiAgICAgICAgICAgICRBQ0xTaW5nbGVEYXRhID0gJEFDTE9iamVjdC0+QUNMR2V0KAogICAgICAgICAgICAgICAgSUQgICAgID0+ICRBQ0xJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJEFDTFNpbmdsZURhdGEgfHwgIUlzSGFzaFJlZldpdGhEYXRhKCRBQ0xTaW5nbGVEYXRhKSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ1RoZXJlIHdhcyBhbiBlcnJvciBnZXR0aW5nIGRhdGEgZm9yIEFDTCB3aXRoIElEICVzJywgJEFDTElEICksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkQUNMTmFtZSA9ICRBQ0xTaW5nbGVEYXRhLT57TmFtZX07CiAgICAgICAgICAgICRBQ0xOYW1lID1+IHN7W15hLXpBLVowLTktX119e199eG1zZzsgICAgIyBjbGVhbnVwIG5hbWUgZm9yIHNhdmluZwoKIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgICAgICAgICAkRmlsZW5hbWUgPSAnRXhwb3J0X0FDTF8nIC4gJEFDTE5hbWUgLiAnLnltbCc7CiAgICAgICAgICAgICRGaWxlbmFtZSA9ICdFeHBvcnRfJyAuICRQYXJhbXtPYmplY3RUeXBlfSAuICdfQUNMXycgLiAkQUNMTmFtZSAuICcueW1sJzsKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgJEFDTERhdGEgID0gWyRBQ0xTaW5nbGVEYXRhXTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIEdldCBhbGwgSURzIGZyb20gdmFsaWQgdGFibGUgaW5jbHVkaW5nIGludmFsaWQtdGVtcG9yYXJpbHkgc3RhdHVzLgogICAgICAgICAgICAjIFNlZSBidWcjMTM1OTIgKGh0dHBzOi8vYnVncy5vdHJzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM1OTIpLgogICAgICAgICAgICBteSAlVmFsaWRMaXN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgpOwogICAgICAgICAgICBteSBAVmFsaWRMaXN0SURzID0gZ3JlcCB7ICRWYWxpZExpc3R7JF99IH0gc29ydCBrZXlzICVWYWxpZExpc3Q7CgogICAgICAgICAgICAkQUNMRGF0YSA9ICRBQ0xPYmplY3QtPkFDTExpc3RHZXQoCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICAgICAgICAgVmFsaWRJRHMgPT4gXEBWYWxpZExpc3RJRHMsCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgICAgICBPYmplY3RUeXBlcyA9PiBbJFBhcmFte09iamVjdFR5cGV9XSwKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY29udmVydCB0aGUgQUNMIGRhdGEgaGFzaCB0byBzdHJpbmcKICAgICAgICBteSAkQUNMRGF0YVlBTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5EdW1wKCBEYXRhID0+ICRBQ0xEYXRhICk7CgogICAgICAgICMgc2VuZCB0aGUgcmVzdWx0IHRvIHRoZSBicm93c2VyCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWw7IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEFDTERhdGFZQU1MLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnYXR0YWNobWVudCcsCiAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgQUNMQ29weQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FDTENvcHknICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAjIGdldCBBQ0wgZGF0YQogICAgICAgIG15ICRBQ0xEYXRhID0gJEFDTE9iamVjdC0+QUNMR2V0KAogICAgICAgICAgICBJRCAgICAgPT4gJEFDTElELAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJEFDTERhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIlVua25vd24gQUNMICRBQ0xJRCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgbmV3IEFDTCBuYW1lLgogICAgICAgIG15ICRDb3VudCAgID0gMTsKICAgICAgICBteSAkQUNMTmFtZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJyVzIChjb3B5KSAlcycsICRBQ0xEYXRhLT57TmFtZX0sICRDb3VudCApOwogICAgICAgIHdoaWxlICgKICAgICAgICAgICAgJEFDTE9iamVjdC0+QUNMR2V0KAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICRBQ0xOYW1lLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfQogICAgICAgICAgICApCiAgICAgICAgICAgICYmICRDb3VudCA8IDEwMAogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkQUNMTmFtZSA9fiBzL1xkKyQvJENvdW50LzsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSBzYXZlIGNvbmZpZ3VyYXRpb24gYW5kIHJldHVybiB0byBvdmVydmlldyBzY3JlZW4KICAgICAgICBteSAkQUNMSUQgPSAkQUNMT2JqZWN0LT5BQ0xBZGQoCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICRBQ0xOYW1lLAogICAgICAgICAgICBDb21tZW50ICAgICAgICA9PiAkQUNMRGF0YS0+e0NvbW1lbnR9LAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICA9PiAkQUNMRGF0YS0+e0Rlc2NyaXB0aW9ufSwKICAgICAgICAgICAgQ29uZmlnTWF0Y2ggICAgPT4gJEFDTERhdGEtPntDb25maWdNYXRjaH0gICAgfHwgJycsCiAgICAgICAgICAgIENvbmZpZ0NoYW5nZSAgID0+ICRBQ0xEYXRhLT57Q29uZmlnQ2hhbmdlfSAgIHx8ICcnLAogICAgICAgICAgICBTdG9wQWZ0ZXJNYXRjaCA9PiAkQUNMRGF0YS0+e1N0b3BBZnRlck1hdGNofSB8fCAwLAogICAgICAgICAgICBWYWxpZElEICAgICAgICA9PiAkQUNMRGF0YS0+e1ZhbGlkSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgIE9iamVjdFR5cGUgICAgID0+ICRQYXJhbXtPYmplY3RUeXBlfSwKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICApOwoKICAgICAgICAjIHNob3cgZXJyb3IgaWYgY2FuJ3QgY3JlYXRlCiAgICAgICAgaWYgKCAhJEFDTElEICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnVGhlcmUgd2FzIGFuIGVycm9yIGNyZWF0aW5nIHRoZSBBQ0wnKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgcmV0dXJuIHRvIG92ZXJ2aWV3CiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApOwogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07T2JqZWN0VHlwZT0kUGFyYW17T2JqZWN0VHlwZX0iICk7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBPdmVydmlldwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fU2hvd092ZXJ2aWV3KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KfQoKc3ViIF9TaG93T3ZlcnZpZXcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJEFDTE9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBQ0w6OkRCOjpBQ0wnKTsKICAgIG15ICRPdXRwdXQgICAgICAgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgIGlmICggJFNlbGYtPntVc2VySUR9ID09IDEgKSB7CgogICAgICAgICMgc2hvdyBlcnJvciBub3RmeSwgZG9uJ3Qgd29yayB3aXRoIHVzZXIgaWQgMQogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICBJbmZvICAgICA9PgogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKCdQbGVhc2Ugbm90ZSB0aGF0IEFDTCByZXN0cmljdGlvbnMgd2lsbCBiZSBpZ25vcmVkIGZvciB0aGUgU3VwZXJ1c2VyIGFjY291bnQgKFVzZXJJRCAxKS4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBub3RpZmljYXRpb25zIGlmIGFueQogICAgaWYgKCAkUGFyYW17Tm90aWZ5RGF0YX0gKSB7CiAgICAgICAgZm9yIG15ICROb3RpZmljYXRpb24gKCBAeyAkUGFyYW17Tm90aWZ5RGF0YX0gfSApIHsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICAleyROb3RpZmljYXRpb259LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHJlc3RyaWN0IHZhbGlkIHN0YXRlIGlmIG5lZWRlZAogICAgbXkgJVZhbGlkTGlzdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgpOwogICAgbXkgJVZhbGlkTG9va3VwID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwogICAgbXkgQFZhbGlkSURzICAgID0gKCAkVmFsaWRMb29rdXB7J3ZhbGlkJ30sICRWYWxpZExvb2t1cHsnaW52YWxpZC10ZW1wb3JhcmlseSd9ICk7CiAgICBpZiAoICRTZWxmLT57SW5jbHVkZUludmFsaWR9ICkgewogICAgICAgIHB1c2ggQFZhbGlkSURzLCAkVmFsaWRMb29rdXB7J2ludmFsaWQnfTsKICAgIH0KCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAkUGFyYW17T2JqZWN0VHlwZVNlbGVjdGlvblN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnT2JqZWN0VHlwZScsCiAgICAgICAgRGF0YSAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpY2tldCAgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJ0lUU00gQ29uZmlnSXRlbScsCiAgICAgICAgfSwKICAgICAgICBQb3NzaWJsZU5vbmUgID0+IDAsCiAgICAgICAgVHJhbnNsYXRpb24gICA9PiAwLAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte09iamVjdFR5cGV9IHx8ICdUaWNrZXQnLAogICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZSBXNzVwYycsCiAgICApOwojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgICMgZ2V0IEFDTCBsaXN0CiAgICBteSAkQUNMTGlzdCA9ICRBQ0xPYmplY3QtPkFDTExpc3QoCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiMgICAgICAgICBWYWxpZElEcyA9PiBcQFZhbGlkSURzLAogICAgICAgIFVzZXJJRCAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBWYWxpZElEcyAgICA9PiBcQFZhbGlkSURzLAogICAgICAgIE9iamVjdFR5cGVzID0+IFskUGFyYW17T2JqZWN0VHlwZX1dLAojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgKTsKCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRBQ0xMaXN0KSApIHsKCiAgICAgICAgIyBzb3J0IGRhdGEgbnVtZXJpY2FsbHkKICAgICAgICBteSBAQUNMSURzU29ydGVkID0gc29ydCB7ICRBQ0xMaXN0LT57JGF9IGNtcCAkQUNMTGlzdC0+eyRifSB9IGtleXMgJXskQUNMTGlzdH07CgogICAgICAgICMgZ2V0IGVhY2ggQUNMcyBkYXRhCiAgICAgICAgZm9yIG15ICRBQ0xJRCAoQEFDTElEc1NvcnRlZCkgewoKICAgICAgICAgICAgbXkgJEFDTERhdGEgPSAkQUNMT2JqZWN0LT5BQ0xHZXQoCiAgICAgICAgICAgICAgICBJRCAgICAgPT4gJEFDTElELAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2V0IHRoZSB2YWxpZCBzdGF0ZQogICAgICAgICAgICAkQUNMRGF0YS0+e1ZhbGlkSUR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTG9va3VwKCBWYWxpZElEID0+ICRBQ0xEYXRhLT57VmFsaWRJRH0gKTsKCiAgICAgICAgICAgICMgcHJpbnQgZWFjaCBBQ0wgaW4gb3ZlcnZpZXcgdGFibGUKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBQ0xSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJXskQUNMRGF0YX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIHByaW50IG5vIGRhdGEgZm91bmQgbWVzc2FnZQogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBQ0xOb0RhdGFSb3cnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CgogICAgJFBhcmFte0luY2x1ZGVJbnZhbGlkQ2hlY2tlZH0gPSAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA/ICdjaGVja2VkJyA6ICcnOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5BQ0wnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfU2hvd0VkaXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgQUNMIGluZm9ybWF0aW9uCiAgICBteSAkQUNMRGF0YSA9ICRQYXJhbXtBQ0xEYXRhfSB8fCB7fTsKCiAgICAjIGRlY2lkZSB3aGV0aGVyIHRvIHNob3cgZGVsZXRlIGJ1dHRvbgogICAgaWYgKCAkUGFyYW17QWN0aW9ufSBlcSAnRWRpdCcgJiYgJEFDTERhdGEgJiYgJEFDTERhdGEtPntWYWxpZElEfSBuZSAnMScgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0FDTERlbGV0ZUFjdGlvbicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJXskQUNMRGF0YX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KCk7CiAgICBteSAlVmFsaWRMb29rdXAgPSByZXZlcnNlICVWYWxpZExpc3Q7CgogICAgJFBhcmFte1ZhbGlkT3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgPT4gXCVWYWxpZExpc3QsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVmFsaWRJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkQUNMRGF0YS0+e1ZhbGlkSUR9IHx8ICRWYWxpZExvb2t1cHsnaW52YWxpZC10ZW1wb3JhcmlseSd9LAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZSBWYWxpZGF0ZV9SZXF1aXJlZCAnIC4gKCAkUGFyYW17RXJyb3JzfS0+eydWYWxpZElESW52YWxpZCd9IHx8ICcnICksCiAgICApOwoKIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAjIGZvciBjb21wYXRhYmlsaXR5IHdpdGggSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgJFBhcmFte09iamVjdFR5cGV9ID0gJ1RpY2tldCc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICBteSAkQ29uZmlnUHJlZml4ID0gJFBhcmFte09iamVjdFR5cGV9IGVxICdDb25maWdJdGVtJyA/ICdJVFNNQ29uZmlnSXRlbScgOiAnJzsKCiAgICBteSAkQUNMS2V5c0xldmVsMU1hdGNoID0gJENvbmZpZ09iamVjdC0+R2V0KCAkQ29uZmlnUHJlZml4IC4gJ0FDTEtleXNMZXZlbDFNYXRjaCcgKSB8fCB7fTsKICAgICRQYXJhbXtBQ0xLZXlzTGV2ZWwxTWF0Y2h9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRBQ0xLZXlzTGV2ZWwxTWF0Y2gsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdJdGVtQWRkJywKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBJdGVtQWRkIEl0ZW1BZGRMZXZlbDEnLAogICAgICAgIElEICAgICAgICAgICA9PiAnSXRlbUFkZExldmVsMU1hdGNoJywKICAgICAgICBUcmVlVmlldyAgICAgPT4gMSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICk7CgogICAgbXkgJEFDTEtleXNMZXZlbDFDaGFuZ2UgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICRDb25maWdQcmVmaXggLiAnQUNMS2V5c0xldmVsMUNoYW5nZScgKSB8fCB7fTsKICAgICRQYXJhbXtBQ0xLZXlzTGV2ZWwxQ2hhbmdlfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkQUNMS2V5c0xldmVsMUNoYW5nZSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0l0ZW1BZGQnLAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplIEl0ZW1BZGQgSXRlbUFkZExldmVsMScsCiAgICAgICAgSUQgICAgICAgICAgID0+ICdJdGVtQWRkTGV2ZWwxQ2hhbmdlJywKICAgICAgICBUcmVlVmlldyAgICAgPT4gMSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICk7CgogICAgbXkgJEFDTEtleXNMZXZlbDJQb3NzaWJsZSA9ICRDb25maWdPYmplY3QtPkdldCggJENvbmZpZ1ByZWZpeCAuICdBQ0xLZXlzTGV2ZWwyOjpQb3NzaWJsZScgKSB8fCB7fTsKICAgICRQYXJhbXtBQ0xLZXlzTGV2ZWwyUG9zc2libGV9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRBQ0xLZXlzTGV2ZWwyUG9zc2libGUsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdJdGVtQWRkJywKICAgICAgICBJRCAgICAgICAgICAgPT4gJ1Bvc3NpYmxlJywKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBJdGVtQWRkIExldmVsVG9CZUFkZGVkJywKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICk7CgogICAgbXkgJEFDTEtleXNMZXZlbDJQb3NzaWJsZUFkZCA9ICRDb25maWdPYmplY3QtPkdldCggJENvbmZpZ1ByZWZpeCAuICdBQ0xLZXlzTGV2ZWwyOjpQb3NzaWJsZUFkZCcgKSB8fCB7fTsKICAgICRQYXJhbXtBQ0xLZXlzTGV2ZWwyUG9zc2libGVBZGR9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRBQ0xLZXlzTGV2ZWwyUG9zc2libGVBZGQsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdJdGVtQWRkJywKICAgICAgICBJRCAgICAgICAgICAgPT4gJ1Bvc3NpYmxlQWRkJywKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBJdGVtQWRkIExldmVsVG9CZUFkZGVkJywKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICk7CgogICAgbXkgJEFDTEtleXNMZXZlbDJQb3NzaWJsZU5vdCA9ICRDb25maWdPYmplY3QtPkdldCggJENvbmZpZ1ByZWZpeCAuICdBQ0xLZXlzTGV2ZWwyOjpQb3NzaWJsZU5vdCcgKSB8fCB7fTsKICAgICRQYXJhbXtBQ0xLZXlzTGV2ZWwyUG9zc2libGVOb3R9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRBQ0xLZXlzTGV2ZWwyUG9zc2libGVOb3QsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdJdGVtQWRkJywKICAgICAgICBJRCAgICAgICAgICAgPT4gJ1Bvc3NpYmxlTm90JywKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBJdGVtQWRkIExldmVsVG9CZUFkZGVkJywKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICk7CgogICAgbXkgJEFDTEtleXNMZXZlbDJQcm9wZXJ0aWVzID0gJENvbmZpZ09iamVjdC0+R2V0KCAkQ29uZmlnUHJlZml4IC4gJ0FDTEtleXNMZXZlbDI6OlByb3BlcnRpZXMnICkgfHwge307CiAgICAkUGFyYW17QUNMS2V5c0xldmVsMlByb3BlcnRpZXN9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRBQ0xLZXlzTGV2ZWwyUHJvcGVydGllcywKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0l0ZW1BZGQnLAogICAgICAgIElEICAgICAgICAgICA9PiAnUHJvcGVydGllcycsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUgSXRlbUFkZCBMZXZlbFRvQmVBZGRlZCcsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICApOwoKICAgIG15ICRBQ0xLZXlzTGV2ZWwyUHJvcGVydGllc0RhdGFiYXNlID0gJENvbmZpZ09iamVjdC0+R2V0KCAkQ29uZmlnUHJlZml4IC4gJ0FDTEtleXNMZXZlbDI6OlByb3BlcnRpZXNEYXRhYmFzZScgKSB8fCB7fTsKICAgICRQYXJhbXtBQ0xLZXlzTGV2ZWwyUHJvcGVydGllc0RhdGFiYXNlfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkQUNMS2V5c0xldmVsMlByb3BlcnRpZXNEYXRhYmFzZSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0l0ZW1BZGQnLAogICAgICAgIElEICAgICAgICAgICA9PiAnUHJvcGVydGllc0RhdGFiYXNlJywKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBJdGVtQWRkIExldmVsVG9CZUFkZGVkJywKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICk7CgogICAgJFBhcmFte0FDTEtleXNMZXZlbDRQcmVmaXhlc30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJycgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0V4YWN0IG1hdGNoJyksCiAgICAgICAgICAgICdbTm90XScgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdOZWdhdGVkIGV4YWN0IG1hdGNoJyksCiAgICAgICAgICAgICdbUmVnRXhwXScgICAgPT4gVHJhbnNsYXRhYmxlKCdSZWd1bGFyIGV4cHJlc3Npb24nKSwKICAgICAgICAgICAgJ1tyZWdleHBdJyAgICA9PiBUcmFuc2xhdGFibGUoJ1JlZ3VsYXIgZXhwcmVzc2lvbiAoaWdub3JlIGNhc2UpJyksCiAgICAgICAgICAgICdbTm90UmVnRXhwXScgPT4gVHJhbnNsYXRhYmxlKCdOZWdhdGVkIHJlZ3VsYXIgZXhwcmVzc2lvbicpLAogICAgICAgICAgICAnW05vdHJlZ2V4cF0nID0+IFRyYW5zbGF0YWJsZSgnTmVnYXRlZCByZWd1bGFyIGV4cHJlc3Npb24gKGlnbm9yZSBjYXNlKScpLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0l0ZW1QcmVmaXgnLAogICAgICAgIENsYXNzICAgICAgICAgID0+ICdJdGVtUHJlZml4JywKICAgICAgICBJRCAgICAgICAgICAgICA9PiAnUHJlZml4ZXMnLAogICAgICAgIFNvcnQgICAgICAgICAgID0+ICdJbmRpdmlkdWFsS2V5JywKICAgICAgICBTb3J0SW5kaXZpZHVhbCA9PiBbICcnLCAnW05vdF0nLCAnW1JlZ0V4cF0nLCAnW3JlZ2V4cF0nLCAnW05vdFJlZ0V4cF0nLCAnW05vdHJlZ2V4cF0nIF0sCiAgICAgICAgVHJhbnNsYXRpb24gICAgPT4gMCwKICAgICAgICBBdXRvQ29tcGxldGUgICA9PiAnb2ZmJywKICAgICk7CgogICAgIyBnZXQgbGlzdCBvZiBhbGwgcG9zc2libGUgZHluYW1pYyBmaWVsZHMKICAgIG15ICREeW5hbWljRmllbGRMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgIE9iamVjdFR5cGUgPT4gJFBhcmFte09iamVjdFR5cGV9LAogICAgICAgIFJlc3VsdFR5cGUgPT4gJ0hBU0gnLAogICAgKTsKICAgIG15ICVEeW5hbWljRmllbGROYW1lcyA9IHJldmVyc2UgJXskRHluYW1pY0ZpZWxkTGlzdH07CiAgICBteSAlRHluYW1pY0ZpZWxkczsKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoIHNvcnQga2V5cyAlRHluYW1pY0ZpZWxkTmFtZXMgKSB7CiAgICAgICAgJER5bmFtaWNGaWVsZHN7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGROYW1lIH0gPSAkRHluYW1pY0ZpZWxkTmFtZTsKICAgIH0KICAgICRQYXJhbXtBQ0xLZXlzTGV2ZWwzRHluYW1pY0ZpZWxkc30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRzLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnTmV3RGF0YUtleURyb3Bkb3duJywKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBOZXdEYXRhS2V5RHJvcGRvd24nLAogICAgICAgIElEICAgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkJywKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICk7CgogICAgIyBnZXQgbGlzdCBvZiBhbGwgcG9zc2libGUgYWN0aW9ucwogICAgbXkgQFBvc3NpYmxlQWN0aW9uc0xpc3Q7CiAgICBteSAkQUNMS2V5c0xldmVsM0FjdGlvbnMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0FDTEtleXNMZXZlbDM6OkFjdGlvbnMnKSB8fCB7fTsKCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRBQ0xLZXlzTGV2ZWwzQWN0aW9uc30gKSB7CiAgICAgICAgcHVzaCBAUG9zc2libGVBY3Rpb25zTGlzdCwgQHsgJEFDTEtleXNMZXZlbDNBY3Rpb25zLT57JEtleX0gfTsKICAgIH0KCiAgICAkUGFyYW17QUNMS2V5c0xldmVsM0FjdGlvbnN9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+IFxAUG9zc2libGVBY3Rpb25zTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ05ld0RhdGFLZXlEcm9wZG93bicsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUgTmV3RGF0YUtleURyb3Bkb3duIEJvb2xlYW4nLAogICAgICAgIElEICAgICAgICAgICA9PiAnQWN0aW9uJywKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICk7CgogICAgJFBhcmFte1Bvc3NpYmxlQWN0aW9uc0xpc3R9ID0gXEBQb3NzaWJsZUFjdGlvbnNMaXN0OwoKICAgIGlmICggZGVmaW5lZCAkQUNMRGF0YS0+e1N0b3BBZnRlck1hdGNofSAmJiAkQUNMRGF0YS0+e1N0b3BBZnRlck1hdGNofSA9PSAxICkgewogICAgICAgICRQYXJhbXtDaGVja2VkfSA9ICdjaGVja2VkICc7CiAgICB9CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgIyBzaG93IG5vdGlmaWNhdGlvbnMgaWYgYW55CiAgICBpZiAoICRQYXJhbXtOb3RpZnlEYXRhfSApIHsKICAgICAgICBmb3IgbXkgJE5vdGlmaWNhdGlvbiAoIEB7ICRQYXJhbXtOb3RpZnlEYXRhfSB9ICkgewogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5vdGlmeSgKICAgICAgICAgICAgICAgICV7JE5vdGlmaWNhdGlvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGRhdGEgZm9yIEpTCiAgICBteSBAQUNMRWRpdFBvc3NpYmxlQWN0aW9uc0xpc3Q7CiAgICBmb3IgbXkgJEl0ZW0gKEBQb3NzaWJsZUFjdGlvbnNMaXN0KSB7CiAgICAgICAgbXkgJUFDTEVkaXQgPSAoCiAgICAgICAgICAgIGxhYmVsID0+ICRJdGVtLAogICAgICAgICAgICB2YWx1ZSA9PiAkSXRlbQogICAgICAgICk7CiAgICAgICAgcHVzaCBAQUNMRWRpdFBvc3NpYmxlQWN0aW9uc0xpc3QsIFwlQUNMRWRpdDsKICAgIH0KCiAgICAjIHNldCBBQ0wgZGF0YQogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdQb3NzaWJsZUFjdGlvbnNMaXN0JywKICAgICAgICBWYWx1ZSA9PiBcQEFDTEVkaXRQb3NzaWJsZUFjdGlvbnNMaXN0LAogICAgKTsKCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgIyBmb3IgY29tcGF0YWJpbGl0eSB3aXRoIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgIGRlbGV0ZSAkUGFyYW17T2JqZWN0VHlwZX07CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gIkFkbWluQUNMJFBhcmFte0FjdGlvbn0iLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJXskQUNMRGF0YX0sCiAgICAgICAgfSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9HZXRQYXJhbXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CiAgICBteSAkR2V0UGFyYW07CgogICAgIyBnZXQgcGFyYW1ldGVycyBmcm9tIHdlYiBicm93c2VyCiAgICBmb3IgbXkgJFBhcmFtTmFtZSAoCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICBxdyggTmFtZSBFbnRpdHlJRCBDb21tZW50IERlc2NyaXB0aW9uIFN0b3BBZnRlck1hdGNoIFZhbGlkSUQgQ29uZmlnTWF0Y2ggQ29uZmlnQ2hhbmdlICkKICAgICAgICBxdyggTmFtZSBPYmplY3RUeXBlIEVudGl0eUlEIENvbW1lbnQgRGVzY3JpcHRpb24gU3RvcEFmdGVyTWF0Y2ggVmFsaWRJRCBDb25maWdNYXRjaCBDb25maWdDaGFuZ2UgKQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICkKICAgIHsKICAgICAgICAkR2V0UGFyYW0tPnskUGFyYW1OYW1lfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKQogICAgICAgICAgICB8fCAnJzsKICAgIH0KCiAgICBpZiAoICRHZXRQYXJhbS0+e0NvbmZpZ01hdGNofSApIHsKICAgICAgICAkR2V0UGFyYW0tPntDb25maWdNYXRjaH0gPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICBEYXRhID0+ICRHZXRQYXJhbS0+e0NvbmZpZ01hdGNofSwKICAgICAgICApOwogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkR2V0UGFyYW0tPntDb25maWdNYXRjaH0gKSApIHsKICAgICAgICAgICAgJEdldFBhcmFtLT57Q29uZmlnTWF0Y2h9ID0gdW5kZWY7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJEdldFBhcmFtLT57Q29uZmlnQ2hhbmdlfSApIHsKICAgICAgICAkR2V0UGFyYW0tPntDb25maWdDaGFuZ2V9ID0gJEpTT05PYmplY3QtPkRlY29kZSgKICAgICAgICAgICAgRGF0YSA9PiAkR2V0UGFyYW0tPntDb25maWdDaGFuZ2V9LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRHZXRQYXJhbS0+e0NvbmZpZ0NoYW5nZX0gKSApIHsKICAgICAgICAgICAgJEdldFBhcmFtLT57Q29uZmlnQ2hhbmdlfSA9IHVuZGVmOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJEdldFBhcmFtOwp9CgpzdWIgX0NoZWNrQUNMRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgQUNMIGRhdGEKICAgIG15ICRBQ0xEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkFDTDo6REI6OkFDTCcpLT5BQ0xHZXQoCiAgICAgICAgSUQgICAgID0+ICRQYXJhbXtJRH0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBjaGVjayBmb3IgdmFsaWQgQUNMIGRhdGEKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRBQ0xEYXRhKSApIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gIkNvdWxkIG5vdCBnZXQgZGF0YSBmb3IgQUNMSUQgJFBhcmFte0lEfSIsCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBBQ0xEYXRhID0+ICRBQ0xEYXRhLAogICAgfTsKfQoKMTsK</File>
        <File Location="Custom/Kernel/Modules/AdminDynamicField.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2ZWZkYzdiZjJhMzMyNTI3N2NkNzlhNjBmMGYyNDA3ZjhhZDU5ZTg3IC0gS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFkbWluRHluYW1pY0ZpZWxkOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIHNldCBwcmVmIGZvciBjb2x1bW5zIGtleQogICAgJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9ID0gJ0luY2x1ZGVJbnZhbGlkJyAuICctJyAuICRTZWxmLT57QWN0aW9ufTsKCiAgICBteSAlUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA9ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9IH07CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0R5bmFtaWNGaWVsZERlbGV0ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fRHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0lUU01Db25maWdJdGVtVmVyc2lvblVwZGF0ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25TeW5jKCkgKSB7CiAgICAgICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgcmV0dXJuICRTZWxmLT5fU2hvd092ZXJ2aWV3KAogICAgICAgICVQYXJhbSwKICAgICAgICBBY3Rpb24gPT4gJ092ZXJ2aWV3JywKICAgICk7Cn0KCiMgQUpBWCBzdWItYWN0aW9uCnN1YiBfRHluYW1pY0ZpZWxkRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExvZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgIG15ICRDb25maXJtZWQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlybWVkJyApOwoKICAgIGlmICggISRDb25maXJtZWQgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAnUHJpb3JpdHknID0+ICdlcnJvcicsCiAgICAgICAgICAgICdNZXNzYWdlJyAgPT4gIk5lZWQgJ0NvbmZpcm1lZCchIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnSUQnICk7CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgSUQgPT4gJElELAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiQ291bGQgbm90IGZpbmQgRHluYW1pY0ZpZWxkICRJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0ludGVybmFsRmllbGR9ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgJ1ByaW9yaXR5JyA9PiAnZXJyb3InLAogICAgICAgICAgICAnTWVzc2FnZScgID0+ICJDb3VsZCBub3QgZGVsZXRlIGludGVybmFsIER5bmFtaWNGaWVsZCAkSUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkVmFsdWVzRGVsZXRlU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+QWxsVmFsdWVzRGVsZXRlKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIG15ICRTdWNjZXNzOwoKICAgIGlmICgkVmFsdWVzRGVsZXRlU3VjY2VzcykgewogICAgICAgICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgICAgICBJRCAgICAgPT4gJElELAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBlbmNvZGluZyBkb2VzIG5vdCBtYXR0ZXIsIGFzICRTdWNjZXNzIGlzIGVpdGhlciB1bmRlZiBvciBhbiBpbnRlZ2VyCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5BdHRhY2htZW50KAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgIENvbnRlbnQgICAgID0+ICRTdWNjZXNzLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgpzdWIgX1Nob3dPdmVydmlldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRmllbGRUeXBlQ29uZmlnICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdEeW5hbWljRmllbGRzOjpEcml2ZXInKTsKICAgIG15ICRPYmplY3RUeXBlRmlsdGVyICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnT2JqZWN0VHlwZUZpbHRlcicgKSB8fCAnJzsKICAgIG15ICROYW1lc3BhY2VGaWx0ZXIgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnTmFtZXNwYWNlRmlsdGVyJyApICB8fCAnJzsKCiAgICAkUGFyYW17SW5jbHVkZUludmFsaWR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ0luY2x1ZGVJbnZhbGlkJyApOwoKICAgIGlmICggZGVmaW5lZCAkUGFyYW17SW5jbHVkZUludmFsaWR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBLZXkgICAgPT4gJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9LAogICAgICAgICAgICBWYWx1ZSAgPT4gJFBhcmFte0luY2x1ZGVJbnZhbGlkfSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA9ICRQYXJhbXtJbmNsdWRlSW52YWxpZH07CiAgICB9CiAgICAkUGFyYW17SW5jbHVkZUludmFsaWRDaGVja2VkfSA9ICRTZWxmLT57SW5jbHVkZUludmFsaWR9ID8gJ2NoZWNrZWQnIDogJyc7CgogICAgbXkgJE91dHB1dCA9IGpvaW4gJycsCiAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXI7CgojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIG15ICVDSURlZmluaXRpb25zT3V0T2ZTeW5jID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25OZWVkU3luYygpOwoKICAgIGlmICggJUNJRGVmaW5pdGlvbnNPdXRPZlN5bmMgKSB7CiAgICAgICAgbXkgJENJU3luY2hyb25pemVNZXNzYWdlID0gVHJhbnNsYXRhYmxlKAogICAgICAgICAgICAnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJwogICAgICAgICk7CgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICBJbmZvID0+ICRDSVN5bmNocm9uaXplTWVzc2FnZSwKICAgICAgICApOwogICAgfQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgICMgY2hlY2sgZm9yIHBvc3NpYmxlIG9yZGVyIGNvbGxpc2lvbnMgb3IgZ2FwcwogICAgbXkgJE9yZGVyU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZE9yZGVyQ2hlY2soKTsKICAgIGlmICggISRPcmRlclN1Y2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fRHluYW1pY0ZpZWxkT3JkZXJSZXNldCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyBjYWxsIGFsbCBuZWVkZWQgdGVtcGxhdGUgYmxvY2tzCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNYWluJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0KICAgICk7CgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJEZpZWxkVHlwZUNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnRmllbGRzIGNvbmZpZ3VyYXRpb24gaXMgbm90IHZhbGlkJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB0aGUgZmllbGQgdHlwZXMgKGJhY2tlbmRzKSBhbmQgaXRzIGNvbmZpZyBkaWFsb2dzCiAgICBteSAlRmllbGRUeXBlczsKICAgIG15ICVGaWVsZERpYWxvZ3M7CiAgICBGSUVMRFRZUEU6CiAgICBmb3IgbXkgJEZpZWxkVHlwZSAoIHNvcnQga2V5cyAleyRGaWVsZFR5cGVDb25maWd9ICkgewoKICAgICAgICBuZXh0IEZJRUxEVFlQRSBpZiAhJEZpZWxkVHlwZUNvbmZpZy0+eyRGaWVsZFR5cGV9OwogICAgICAgIG5leHQgRklFTERUWVBFIGlmICRGaWVsZFR5cGVDb25maWctPnskRmllbGRUeXBlfS0+e0Rpc2FibGVkQWRkfTsKCiAgICAgICAgIyBhZGQgdGhlIGZpZWxkIHR5cGUgdG8gdGhlIGxpc3QKICAgICAgICAkRmllbGRUeXBlc3skRmllbGRUeXBlfSA9ICRGaWVsZFR5cGVDb25maWctPnskRmllbGRUeXBlfS0+e0Rpc3BsYXlOYW1lfTsKCiAgICAgICAgIyBnZXQgdGhlIGNvbmZpZyBkaWFsb2cKICAgICAgICAkRmllbGREaWFsb2dzeyRGaWVsZFR5cGV9ID0gJEZpZWxkVHlwZUNvbmZpZy0+eyRGaWVsZFR5cGV9LT57Q29uZmlnRGlhbG9nfTsKICAgIH0KCiAgICBteSAkT2JqZWN0VHlwZUNvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnRHluYW1pY0ZpZWxkczo6T2JqZWN0VHlwZScpOwogICAgbXkgJE5hbWVzcGFjZXMgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0R5bmFtaWNGaWVsZDo6TmFtZXNwYWNlcycpOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRPYmplY3RUeXBlQ29uZmlnKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdPYmplY3RzIGNvbmZpZ3VyYXRpb24gaXMgbm90IHZhbGlkJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG1ha2UgT2JqZWN0VHlwZUNvbmZpZyBsb2NhbCB2YXJpYWJsZSB0byBwcm9wZXIgc29ydGluZwogICAgbXkgJU9iamVjdFR5cGVDb25maWcgPSAleyRPYmplY3RUeXBlQ29uZmlnfTsKCiAgICAjIGN5Y2xlIHRob3VnaHQgYWxsIG9iamVjdHMgdG8gY3JlYXRlIHRoZSBzZWxlY3QgYWRkIGZpZWxkIHNlbGVjdHMKICAgIG15IEBPYmplY3RUeXBlczsKICAgIG15ICVPYmplY3RUeXBlc1RyYW5zbGF0ZWQ7CgogICAgT0JKRUNUVFlQRToKICAgIGZvciBteSAkT2JqZWN0VHlwZSAoCiAgICAgICAgc29ydCB7CiAgICAgICAgICAgICggaW50ICRPYmplY3RUeXBlQ29uZmlneyRhfS0+e1ByaW99IHx8IDAgKSA8PT4gKCBpbnQgJE9iamVjdFR5cGVDb25maWd7JGJ9LT57UHJpb30gfHwgMCApCiAgICAgICAgfSBrZXlzICVPYmplY3RUeXBlQ29uZmlnCiAgICAgICAgKQogICAgewogICAgICAgIG5leHQgT0JKRUNUVFlQRSB1bmxlc3MgJE9iamVjdFR5cGVDb25maWctPnskT2JqZWN0VHlwZX07CgogICAgICAgIG15ICRTZWxlY3ROYW1lID0gJE9iamVjdFR5cGUgLiAnRHluYW1pY0ZpZWxkJzsKCiAgICAgICAgbXkgQEZpZWxkTGlzdDsKICAgICAgICBteSBAUmVmZXJlbmNlRHluYW1pY0ZpZWxkczsKICAgICAgICBGSUVMRFRZUEU6CiAgICAgICAgZm9yIG15ICRGaWVsZFR5cGVOYW1lICggc29ydCB7ICRGaWVsZERpYWxvZ3N7JGF9IGNtcCAkRmllbGREaWFsb2dzeyRifSB9IGtleXMgJUZpZWxkVHlwZXMgKSB7CgogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEZpZWxkVHlwZUNvbmZpZy0+eyRGaWVsZFR5cGVOYW1lfXtPYmplY3RUeXBlc30gKSApIHsKICAgICAgICAgICAgICAgIG5leHQgRklFTERUWVBFIHVubGVzcyBhbnkgeyAkT2JqZWN0VHlwZSBlcSAkXyB9ICRGaWVsZFR5cGVDb25maWctPnskRmllbGRUeXBlTmFtZX17T2JqZWN0VHlwZXN9LT5AKjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBncm91cCByZWZlcmVuY2UgZmllbGQgdHlwZXMgdG8gc2hvdyBpbiB0cmVlIHZpZXcKICAgICAgICAgICAgbXkgJFZhbHVlID0gJEZpZWxkVHlwZXN7JEZpZWxkVHlwZU5hbWV9OwogICAgICAgICAgICBpZiAoICRGaWVsZERpYWxvZ3N7JEZpZWxkVHlwZU5hbWV9ID1+IC9eQWRtaW5EeW5hbWljRmllbGRSZWZlcmVuY2UkLyApIHsKICAgICAgICAgICAgICAgICRWYWx1ZSA9ICdSZWZlcmVuY2U6OicgLiAkVmFsdWU7CiAgICAgICAgICAgICAgICBwdXNoIEBSZWZlcmVuY2VEeW5hbWljRmllbGRzLCAkRmllbGRUeXBlTmFtZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBARmllbGRMaXN0LCB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkRmllbGRUeXBlTmFtZSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkRmllbGQgKEBGaWVsZExpc3QpIHsKCiAgICAgICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgiRnJvbnRlbmQ6Ok1vZHVsZSIpLT57ICRGaWVsZERpYWxvZ3N7ICRGaWVsZC0+e0tleX0gfSB9ICkgewogICAgICAgICAgICAgICAgJEZpZWxkLT57RGlzYWJsZWR9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgdGhlIEFkZCBEeW5hbWljIEZpZWxkIHNlbGVjdAogICAgICAgIG15ICRBZGREeW5hbWljRmllbGRTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXEBGaWVsZExpc3QsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJFNlbGVjdE5hbWUsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgPT4gMSwKICAgICAgICAgICAgVHJhbnNsYXRpb24gICA9PiAxLAogICAgICAgICAgICBTb3J0ICAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJy0nLAogICAgICAgICAgICBUcmVlVmlldyAgICAgID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZSBXNzVwYycsCiAgICAgICAgKTsKCiAgICAgICAgIyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgUmVmZXJlbmNlIGR5bmFtaWMgZmllbGRzLgogICAgICAgICMgSW5qZWN0IGFkZGl0aW9uYWwgZGF0YSBpbnRvIHRoZSBvcHRpb24gdGFnLgogICAgICAgICMgRS5nLiA8b3B0aW9uIHZhbHVlPSJSZWZlcmVuY2U6OklUU01Db25maWdJdGVtIiBkYXRhLXJlZmVyZW5jZWRfb2JqZWN0X3R5cGU9IklUU01Db25maWdJdGVtIj4mbmJzcDsmbmJzcDtJVFNNQ29uZmlnSXRlbTwvb3B0aW9uPgogICAgICAgICMgU2VlIGh0dHBzOi8vd3d3Lnczc2Nob29scy5jb20vdGFncy9hdHRfZGF0YS0uYXNwCiAgICAgICAgbXkgJFJlZmVyZW5jZUZpZWxkc1N0cmcgPSBqb2luKCAnfCcsIEBSZWZlcmVuY2VEeW5hbWljRmllbGRzICk7CiAgICAgICAgJEFkZER5bmFtaWNGaWVsZFN0cmcgPX4gc1sgKHZhbHVlPSIoJFJlZmVyZW5jZUZpZWxkc1N0cmcpIik+XVsgJDEgZGF0YS1yZWZlcmVuY2VkX29iamVjdF90eXBlPSIkMiI+XWc7CgogICAgICAgIG15ICRPYmplY3RUeXBlTmFtZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkczo6T2JqZWN0VHlwZScpCiAgICAgICAgICAgIC0+eyRPYmplY3RUeXBlfS0+e0Rpc3BsYXlOYW1lfSB8fCAkT2JqZWN0VHlwZTsKCiAgICAgICAgcHVzaCBAT2JqZWN0VHlwZXMsICRPYmplY3RUeXBlOwoKICAgICAgICBpZiAoICRPYmplY3RUeXBlTmFtZSBuZSAnQXJ0aWNsZScgKSB7CiAgICAgICAgICAgICRPYmplY3RUeXBlc1RyYW5zbGF0ZWR7JE9iamVjdFR5cGV9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRPYmplY3RUeXBlTmFtZSk7CiAgICAgICAgfQoKICAgICAgICAjIGNhbGwgQWN0aW9uQWRkRHluYW1pY0ZpZWxkIGJsb2NrCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0FjdGlvbkFkZER5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgQWRkRHluYW1pY0ZpZWxkU3RyZyA9PiAkQWRkRHluYW1pY0ZpZWxkU3RyZywKICAgICAgICAgICAgICAgIE9iamVjdFR5cGUgICAgICAgICAgPT4gJE9iamVjdFR5cGUsCiAgICAgICAgICAgICAgICBPYmplY3RUeXBlTmFtZSAgICAgID0+ICRPYmplY3RUeXBlTmFtZSwKICAgICAgICAgICAgICAgIFNlbGVjdE5hbWUgICAgICAgICAgPT4gJFNlbGVjdE5hbWUsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgaWYgKCAkT2JqZWN0VHlwZU5hbWUgZXEgJ0lUU00gQ29uZmlnSXRlbScgJiYgJUNJRGVmaW5pdGlvbnNPdXRPZlN5bmMgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQWN0aW9uRHluYW1pY0ZpZWxkRXh0cmEnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgICAgPT4gJ0FkbWluRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICBTdWJhY3Rpb24gICA9PiAnSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uVXBkYXRlJywKICAgICAgICAgICAgICAgICAgICBUZXh0ICAgICAgICA9PiAnU3luYyBDSSBEZWZpbml0aW9ucycsCiAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0RlcGxveSBkeW5hbWljIGZpZWxkIGNoYW5nZXM6IEFkZCBuZXcgZGVmaW5pdGlvbnMgZm9yIGFsbCBhZmZlY3RlZCBJVFNNQ29uZmlnSXRlbSBjbGFzc2VzLicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0U3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcJU9iamVjdFR5cGVzVHJhbnNsYXRlZCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZE9iamVjdFR5cGUnLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkT2JqZWN0VHlwZUZpbHRlciwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZE9iamVjdFR5cGUnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZE9iamVjdFN0cmcgPT4gJER5bmFtaWNGaWVsZE9iamVjdFN0cmcsCiAgICAgICAgfSwKICAgICk7CgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJE5hbWVzcGFjZXMpICkgewogICAgICAgIG15ICVOYW1lc3BhY2VTZWxlY3Rpb24gPSAoCiAgICAgICAgICAgICc8bm9uZT4nID0+ICc8JyAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnbm9uZScpIC4gJz4nLAogICAgICAgICAgICBtYXAgeyAkXyA9PiAkXyB9ICROYW1lc3BhY2VzLT5AKiwKICAgICAgICApOwoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkTmFtZXNwYWNlU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVOYW1lc3BhY2VTZWxlY3Rpb24sCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkTmFtZXNwYWNlJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICROYW1lc3BhY2VGaWx0ZXIsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkTmFtZXNwYWNlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lc3BhY2VTdHJnID0+ICREeW5hbWljRmllbGROYW1lc3BhY2VTdHJnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnT2JqZWN0VHlwZXMnLAogICAgICAgIFZhbHVlID0+IFxAT2JqZWN0VHlwZXMKICAgICk7CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnRHluYW1pY0ZpZWxkcycsCiAgICAgICAgVmFsdWUgPT4gXCVGaWVsZERpYWxvZ3MKICAgICk7CgogICAgIyBjYWxsIGhpbnQgYmxvY2sKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0hpbnQnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyBtZXJnZSBUaWNrZXQgYW5kIEFydGljbGUgaW50byBvbmUgdHlwZQogICAgbXkgJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZjsKICAgIGlmICggJE9iamVjdFR5cGVGaWx0ZXIgZXEgJ1RpY2tldCcgKSB7CiAgICAgICAgJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZiA9IFsgJ1RpY2tldCcsICdBcnRpY2xlJyBdOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZiA9ICRPYmplY3RUeXBlRmlsdGVyID8gWyRPYmplY3RUeXBlRmlsdGVyXSA6IHVuZGVmOwogICAgfQoKICAgICMgZ2V0IGNvbXBsZXRlIGR5bmFtaWMgZmllbGRzIGxpc3QKICAgIG15ICREeW5hbWljRmllbGRzTGlzdEFsbCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3QoCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICk7CgogICAgIyBnZXQgZmlsdGVyZWQgZHluYW1pYyBmaWVsZHMgbGlzdAogICAgbXkgJER5bmFtaWNGaWVsZHNMaXN0RmlsdGVyZWQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgIE9iamVjdFR5cGUgPT4gJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZiwKICAgICAgICBOYW1lc3BhY2UgID0+ICROYW1lc3BhY2VGaWx0ZXIsCiAgICAgICAgVmFsaWQgICAgICA9PiAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA/IDAgOiAxLAogICAgKTsKCiAgICBteSAkRmlsdGVyU3RyZyA9ICcnOwogICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCRPYmplY3RUeXBlRmlsdGVyKSApIHsKICAgICAgICAkRmlsdGVyU3RyZyAuPSAiO09iamVjdFR5cGVGaWx0ZXI9IiAuICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGUgPT4gJ1slIERhdGEuRmlsdGVyIHwgdXJpICVdJywKICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgRmlsdGVyID0+ICRPYmplY3RUeXBlRmlsdGVyLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJE5hbWVzcGFjZXMpICkgewogICAgICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSgkTmFtZXNwYWNlRmlsdGVyKSApIHsKICAgICAgICAgICAgJEZpbHRlclN0cmcgLj0gIjtOYW1lc3BhY2VGaWx0ZXI9IiAuICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICdbJSBEYXRhLkZpbHRlciB8IHVyaSAlXScsCiAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgRmlsdGVyID0+ICROYW1lc3BhY2VGaWx0ZXIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHByaW50IHRoZSBsaXN0IG9mIGR5bmFtaWMgZmllbGRzCiAgICAkU2VsZi0+X0R5bmFtaWNGaWVsZHNMaXN0U2hvdygKICAgICAgICBEeW5hbWljRmllbGRzID0+ICREeW5hbWljRmllbGRzTGlzdEZpbHRlcmVkLAogICAgICAgIFRvdGFsICAgICAgICAgPT4gc2NhbGFyIEB7JER5bmFtaWNGaWVsZHNMaXN0RmlsdGVyZWR9LAogICAgICAgIE1heEZpZWxkT3JkZXIgPT4gc2NhbGFyIEB7JER5bmFtaWNGaWVsZHNMaXN0QWxsfSwKICAgICAgICBGaWx0ZXJTdHJnICAgID0+ICRGaWx0ZXJTdHJnLAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluRHluYW1pY0ZpZWxkJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEZpbHRlclN0cmcgPT4gJEZpbHRlclN0cmcsCiAgICAgICAgfSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX0R5bmFtaWNGaWVsZHNMaXN0U2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkRmllbGRUeXBlQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdEeW5hbWljRmllbGRzOjpEcml2ZXInKTsKCiAgICAjIGNoZWNrIHN0YXJ0IG9wdGlvbiwgaWYgaGlnaGVyIHRoYW4gZmllbGRzIGF2YWlsYWJsZSwgc2V0CiAgICAjIGl0IHRvIHRoZSBsYXN0IGZpZWxkIHBhZ2UKICAgIG15ICRTdGFydEhpdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxOwoKICAgICMgZ2V0IHBlcnNvbmFsIHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSA9ICdBZG1pbkR5bmFtaWNGaWVsZHNPdmVydmlld1BhZ2VTaG93bic7CiAgICBteSAkUGFnZVNob3duICAgICAgICAgICAgICAgPSAkU2VsZi0+e1Nlc3Npb259eyRQYWdlU2hvd25QcmVmZXJlbmNlc0tleX0gfHwgMzU7CiAgICBteSAkR3JvdXAgICAgICAgICAgICAgICAgICAgPSAnRHluYW1pY0ZpZWxkc092ZXJ2aWV3UGFnZVNob3duJzsKCiAgICAjIGdldCBkYXRhIHNlbGVjdGlvbgogICAgbXkgJURhdGE7CiAgICBteSAkQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdQcmVmZXJlbmNlc0dyb3VwcycpOwogICAgaWYgKCAkQ29uZmlnICYmICRDb25maWctPnskR3JvdXB9ICYmICRDb25maWctPnskR3JvdXB9LT57RGF0YX0gKSB7CiAgICAgICAgJURhdGEgPSAleyAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9IH07CiAgICB9CgogICAgIyBjYWxjdWxhdGUgbWF4LiBzaG93biBwZXIgcGFnZQogICAgaWYgKCAkU3RhcnRIaXQgPiAkUGFyYW17VG90YWx9ICkgewogICAgICAgIG15ICRQYWdlcyA9IGludCggKCAkUGFyYW17VG90YWx9IC8gJFBhZ2VTaG93biApICsgMC45OTk5OSApOwogICAgICAgICRTdGFydEhpdCA9ICggKCAkUGFnZXMgLSAxICkgKiAkUGFnZVNob3duICkgKyAxOwogICAgfQoKICAgICMgYnVpbGQgbmF2IGJhcgogICAgbXkgJExpbWl0ICAgPSAkUGFyYW17TGltaXR9IHx8IDIwXzAwMDsKICAgIG15ICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICBMaW1pdCAgICAgPT4gJExpbWl0LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgUGFnZVNob3duID0+ICRQYWdlU2hvd24sCiAgICAgICAgQWxsSGl0cyAgID0+ICRQYXJhbXtUb3RhbH0gfHwgMCwKICAgICAgICBBY3Rpb24gICAgPT4gJ0FjdGlvbj0nIC4gJExheW91dE9iamVjdC0+e0FjdGlvbn0sCiAgICAgICAgTGluayAgICAgID0+ICRQYXJhbXtMaW5rUGFnZX0sCiAgICAgICAgSURQcmVmaXggID0+ICRMYXlvdXRPYmplY3QtPntBY3Rpb259LAogICAgKTsKCiAgICAjIGJ1aWxkIHNob3duIGR5bmFtaWMgZmllbGRzIHBlciBwYWdlCiAgICAkUGFyYW17UmVxdWVzdGVkVVJMfSAgICA9ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IjsKICAgICRQYXJhbXtHcm91cH0gICAgICAgICAgID0gJEdyb3VwOwogICAgJFBhcmFte1ByZWZlcmVuY2VzS2V5fSAgPSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXk7CiAgICAkUGFyYW17UGFnZVNob3duU3RyaW5nfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSwKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFnZVNob3duLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVEYXRhLAogICAgICAgIFNvcnQgICAgICAgID0+ICdOdW1lcmljVmFsdWUnLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICBpZiAoJVBhZ2VOYXYpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhZ2VOYXYsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRleHRTZXR0aW5ncycsCiAgICAgICAgICAgIERhdGEgPT4geyAlUGFnZU5hdiwgJVBhcmFtLCB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBpZiBhdCBsZWFzdCAxIGR5bmFtaWMgZmllbGQgaXMgcmVnaXN0ZXJlZCBpbiB0aGUgc3lzdGVtCiAgICBpZiAoICRQYXJhbXtUb3RhbH0gKSB7CgogICAgICAgICMgZ2V0IGR5bmFtaWMgZmllbGRzIGRldGFpbHMKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgIERZTkFNSUNGSUVMRElEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkSUQgKCBAeyAkUGFyYW17RHluYW1pY0ZpZWxkc30gfSApIHsKICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgaWYgKCAkQ291bnRlciA+PSAkU3RhcnRIaXQgJiYgJENvdW50ZXIgPCAoICRQYWdlU2hvd24gKyAkU3RhcnRIaXQgKSApIHsKCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgIElEID0+ICREeW5hbWljRmllbGRJRCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRElEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkRGF0YSk7CgogICAgICAgICAgICAgICAgIyBjb252ZXJ0IFZhbGlkSUQgdG8gVmFsaWRpdHkgc3RyaW5nCiAgICAgICAgICAgICAgICBteSAkVmFsaWQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgVmFsaWRJRCA9PiAkRHluYW1pY0ZpZWxkRGF0YS0+e1ZhbGlkSUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgb2JqZWN0IHR5cGUgZGlzcGxheSBuYW1lCiAgICAgICAgICAgICAgICBteSAkT2JqZWN0VHlwZU5hbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0R5bmFtaWNGaWVsZHM6Ok9iamVjdFR5cGUnKQogICAgICAgICAgICAgICAgICAgIC0+eyAkRHluYW1pY0ZpZWxkRGF0YS0+e09iamVjdFR5cGV9IH0tPntEaXNwbGF5TmFtZX0KICAgICAgICAgICAgICAgICAgICB8fCAkRHluYW1pY0ZpZWxkRGF0YS0+e09iamVjdFR5cGV9OwoKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBmaWVsZCB0eXBlIGRpc3BsYXkgbmFtZQogICAgICAgICAgICAgICAgbXkgJEZpZWxkVHlwZU5hbWUgPSAkRmllbGRUeXBlQ29uZmlnLT57ICREeW5hbWljRmllbGREYXRhLT57RmllbGRUeXBlfSB9LT57RGlzcGxheU5hbWV9CiAgICAgICAgICAgICAgICAgICAgfHwgJER5bmFtaWNGaWVsZERhdGEtPntGaWVsZFR5cGV9OwoKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBmaWVsZCBiYWNrZW5kIGRpYWxvZwogICAgICAgICAgICAgICAgbXkgJENvbmZpZ0RpYWxvZyA9ICRGaWVsZFR5cGVDb25maWctPnsgJER5bmFtaWNGaWVsZERhdGEtPntGaWVsZFR5cGV9IH0tPntDb25maWdEaWFsb2d9CiAgICAgICAgICAgICAgICAgICAgfHwgJyc7CgogICAgICAgICAgICAgICAgIyBwcmludCBlYWNoIGR5bmFtaWMgZmllbGQgcm93CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdEeW5hbWljRmllbGRzUm93JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXskRHluYW1pY0ZpZWxkRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkICAgICAgICAgID0+ICRWYWxpZCwKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnRGlhbG9nICAgPT4gJENvbmZpZ0RpYWxvZywKICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRUeXBlTmFtZSAgPT4gJEZpZWxkVHlwZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdFR5cGVOYW1lID0+ICRPYmplY3RUeXBlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyU3RyZyAgICAgPT4gJFBhcmFte0ZpbHRlclN0cmd9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgSW50ZXJuYWwgZmllbGRzIGNhbiBub3QgYmUgZGVsZXRlZC4KICAgICAgICAgICAgICAgIGlmICggISREeW5hbWljRmllbGREYXRhLT57SW50ZXJuYWxGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RlbGV0ZUxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICV7JER5bmFtaWNGaWVsZERhdGF9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWQgICAgICAgICAgPT4gJFZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnRGlhbG9nICAgPT4gJENvbmZpZ0RpYWxvZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkVHlwZU5hbWUgID0+ICRGaWVsZFR5cGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0VHlwZU5hbWUgPT4gJE9iamVjdFR5cGVOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0Nsb25lTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskRHluYW1pY0ZpZWxkRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxpZCAgICAgICAgICA9PiAkVmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWdEaWFsb2cgICA9PiAkQ29uZmlnRGlhbG9nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRUeXBlTmFtZSAgPT4gJEZpZWxkVHlwZU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RUeXBlTmFtZSA9PiAkRHluYW1pY0ZpZWxkRGF0YS0+e09iamVjdFR5cGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBvdGhlcndpc2Ugc2hvdyBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWF4RmllbGRPcmRlcicsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIE1heEZpZWxkT3JkZXIgPT4gJFBhcmFte01heEZpZWxkT3JkZXJ9LAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIF9EeW5hbWljRmllbGRPcmRlclJlc2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRSZXNldFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZE9yZGVyUmVzZXQoKTsKCiAgICAjIHNob3cgZXJyb3IgbWVzc2FnZSBpZiB0aGUgb3JkZXIgcmVzZXQgd2FzIG5vdCBzdWNjZXNzZnVsCiAgICBpZiAoICEkUmVzZXRTdWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoCiAgICAgICAgICAgICAgICAnQ291bGQgbm90IHJlc2V0IER5bmFtaWMgRmllbGQgb3JkZXIgcHJvcGVybHksIHBsZWFzZSBjaGVjayB0aGUgZXJyb3IgbG9nIGZvciBtb3JlIGRldGFpbHMuJwogICAgICAgICAgICApLAogICAgICAgICk7CiAgICB9CgogICAgIyByZWRpcmVjdCB0byBtYWluIHNjcmVlbgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgIE9QID0+ICJBY3Rpb249QWRtaW5EeW5hbWljRmllbGQiLAogICAgKTsKfQoKMTsK</File>
        <File Location="Custom/Kernel/Modules/AdminDynamicFieldScreen.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIFpudW55IEdtYkgsIGh0dHA6Ly96bnVueS5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2ZWZkYzdiZjJhMzMyNTI3N2NkNzlhNjBmMGYyNDA3ZjhhZDU5ZTg3IC0gS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGRTY3JlZW4ucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFkbWluRHluYW1pY0ZpZWxkU2NyZWVuOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6TGFuZ3VhZ2UnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlpudW55SGVscGVyJywKKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IGJsZXNzIHslUGFyYW19LCAkVHlwZTsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJFpudW55SGVscGVyT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpabnVueUhlbHBlcicpOwoKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAjIHNldCBwcmVmIGZvciBzZWxlY3RlZCBvYmplY3QgdHlwZSBrZXkKICAgICRTZWxmLT57UHJlZktleVNlbGVjdGVkT2JqZWN0VHlwZX0gPSAnU2VsZWN0ZWRPYmplY3RUeXBlJyAuICctJyAuICRTZWxmLT57QWN0aW9ufTsKCiAgICBteSAlUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e1NlbGVjdGVkT2JqZWN0VHlwZX0gPSAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleVNlbGVjdGVkT2JqZWN0VHlwZX0gfSB8fCAnJzsKCiAgICAjIGZldGNoIHNlbGVjdGVkIG9iamVjdCB0eXBlIGZyb20gZnJvbnRlbmQgYW5kIHNlZSBpZiBjaGFuZ2UgaXMgbmVlZGVkCiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkU2VsZWN0ZWRPYmplY3RUeXBlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NlbGVjdGVkT2JqZWN0VHlwZScgKTsKICAgIGlmIChkZWZpbmVkICRTZWxlY3RlZE9iamVjdFR5cGUpIHsKCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAkU2VsZi0+e1ByZWZLZXlTZWxlY3RlZE9iamVjdFR5cGV9LAogICAgICAgICAgICBWYWx1ZSAgPT4gJFNlbGVjdGVkT2JqZWN0VHlwZSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+e1NlbGVjdGVkT2JqZWN0VHlwZX0gPSAkU2VsZWN0ZWRPYmplY3RUeXBlOwogICAgfQoKICAgICMgY2hlY2sgaWYgb2JqZWN0IHR5cGUgcmVzdHJpY3Rpb25zIG5lZWQgdG8gYmUgZGVyaXZlZCBmcm9tIHNlbGVjdGVkIGR5bmFtaWMgZmllbGQgb3Igc2NyZWVuCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRERlNjcmVlbnNPYmplY3RUeXBlc0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnRHluYW1pY0ZpZWxkU2NyZWVuczo6T2JqZWN0VHlwZXMnKTsKICAgIG15ICRBY3Rpb25UeXBlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1R5cGUnICk7CiAgICBteSAkRGVyaXZlZE9iamVjdFR5cGU7CiAgICBteSBAT2JqZWN0VHlwZXNGaWx0ZXI7CiAgICBpZiAoICRBY3Rpb25UeXBlICkgewogICAgICAgIG15ICRFbGVtZW50ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VsZW1lbnQnICk7CgogICAgICAgIGlmICgkQWN0aW9uVHlwZSBlcSAnRHluYW1pY0ZpZWxkU2NyZWVuJykgewogICAgICAgICAgICBteSAkREZTY3JlZW5zQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdEeW5hbWljRmllbGRTY3JlZW5zJyk7CiAgICAgICAgICAgIENPTkZJR0tFWToKICAgICAgICAgICAgZm9yIG15ICRDb25maWdLZXkgKGtleXMgJERGU2NyZWVuc0NvbmZpZy0+JSopIHsKICAgICAgICAgICAgICAgIGlmICgkREZTY3JlZW5zQ29uZmlnLT57JENvbmZpZ0tleX17JEVsZW1lbnR9KSB7CgogICAgICAgICAgICAgICAgICAgIGlmICgkQ29uZmlnS2V5IGVxICdGcmFtZXdvcmsnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBPYmplY3RUeXBlc0ZpbHRlciA9IHF3KFRpY2tldCBBcnRpY2xlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBPYmplY3RUeXBlc0ZpbHRlciA9IEB7ICRERlNjcmVlbnNPYmplY3RUeXBlc0NvbmZpZy0+eyRDb25maWdLZXl9IC8vIFtdIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGxhc3QgQ09ORklHS0VZOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICgkQWN0aW9uVHlwZSBlcSAnRGVmYXVsdENvbHVtbnNTY3JlZW4nKSB7CiAgICAgICAgICAgIG15ICREZWZhdWx0U2NyZWVuc0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnRGVmYXVsdENvbHVtbnNTY3JlZW5zJyk7CiAgICAgICAgICAgIENPTkZJR0tFWToKICAgICAgICAgICAgZm9yIG15ICRDb25maWdLZXkgKGtleXMgJERlZmF1bHRTY3JlZW5zQ29uZmlnLT4lKikgewogICAgICAgICAgICAgICAgaWYgKCREZWZhdWx0U2NyZWVuc0NvbmZpZy0+eyRDb25maWdLZXl9eyRFbGVtZW50fSkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoJENvbmZpZ0tleSBlcSAnRnJhbWV3b3JrJykgewogICAgICAgICAgICAgICAgICAgICAgICBAT2JqZWN0VHlwZXNGaWx0ZXIgPSBxdyhUaWNrZXQgQXJ0aWNsZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBAT2JqZWN0VHlwZXNGaWx0ZXIgPSBAeyAkREZTY3JlZW5zT2JqZWN0VHlwZXNDb25maWctPnskQ29uZmlnS2V5fSAvLyBbXSB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBsYXN0IENPTkZJR0tFWTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoJEFjdGlvblR5cGUgZXEgJ0R5bmFtaWNGaWVsZCcpIHsKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICREZXJpdmVkT2JqZWN0VHlwZSA9ICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfTsKICAgICAgICAgICAgQE9iamVjdFR5cGVzRmlsdGVyID0gKCREZXJpdmVkT2JqZWN0VHlwZSk7CiAgICAgICAgICAgIGlmICgkRGVyaXZlZE9iamVjdFR5cGUgZXEgJ1RpY2tldCcpIHsKICAgICAgICAgICAgICAgIHB1c2ggQE9iamVjdFR5cGVzRmlsdGVyLCAnQXJ0aWNsZSc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBteSAkREZPYmplY3RUeXBlc0NvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkczo6T2JqZWN0VHlwZScpOwogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJERGU2NyZWVuc09iamVjdFR5cGVzQ29uZmlnKSApIHsKICAgICAgICAgICAgREZTQ1JFRU5TT0JKRUNUVFlQRToKICAgICAgICAgICAgZm9yIG15ICRERlNjcmVlbk9iamVjdFR5cGUgKCBtYXAgeyAkREZTY3JlZW5zT2JqZWN0VHlwZXNDb25maWctPnskX30tPkAqIH0ga2V5cyAkREZTY3JlZW5zT2JqZWN0VHlwZXNDb25maWctPiUqICkgewoKICAgICAgICAgICAgICAgIG5leHQgREZTQ1JFRU5TT0JKRUNUVFlQRSB1bmxlc3MgJERGT2JqZWN0VHlwZXNDb25maWctPnskREZTY3JlZW5PYmplY3RUeXBlfTsKCiAgICAgICAgICAgICAgICAkU2VsZi0+e0VuYWJsZWRPYmplY3RUeXBlc30gLy89IFtdOwogICAgICAgICAgICAgICAgcHVzaCAkU2VsZi0+e0VuYWJsZWRPYmplY3RUeXBlc30tPkAqLCAkREZTY3JlZW5PYmplY3RUeXBlOwoKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkREZTY3JlZW5PYmplY3RUeXBlIGVxICRTZWxmLT57U2VsZWN0ZWRPYmplY3RUeXBlfQogICAgICAgICAgICAgICAgICAgIHx8ICggJERGU2NyZWVuT2JqZWN0VHlwZSBlcSAnQXJ0aWNsZScgJiYgJFNlbGYtPntTZWxlY3RlZE9iamVjdFR5cGV9IGVxICdUaWNrZXQnICkKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQE9iamVjdFR5cGVzRmlsdGVyLCAkREZTY3JlZW5PYmplY3RUeXBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIWdyZXAgeyAkXyBlcSAnVGlja2V0JyB9ICRTZWxmLT57RW5hYmxlZE9iamVjdFR5cGVzfS0+QCogKSB7CiAgICAgICAgICAgICRTZWxmLT57RW5hYmxlZE9iamVjdFR5cGVzfSAvLz0gW107CiAgICAgICAgICAgIHB1c2ggJFNlbGYtPntFbmFibGVkT2JqZWN0VHlwZXN9LT5AKiwgJ1RpY2tldCc7CiAgICAgICAgfQogICAgICAgIGlmICggJFNlbGYtPntTZWxlY3RlZE9iamVjdFR5cGV9IGVxICdUaWNrZXQnICYmICEoZ3JlcCB7ICRfIGVxICdUaWNrZXQnIH0gQE9iamVjdFR5cGVzRmlsdGVyKSApIHsKICAgICAgICAgICAgcHVzaCBAT2JqZWN0VHlwZXNGaWx0ZXIsIHF3KFRpY2tldCBBcnRpY2xlKTsKICAgICAgICB9CiAgICB9CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgbXkgJER5bmFtaWNGaWVsZHMgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5HZXRWYWxpZER5bmFtaWNGaWVsZHMoCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgT2JqZWN0VHlwZSA9PiBbICdUaWNrZXQnLCAnQXJ0aWNsZScgXSwKICAgICAgICBPYmplY3RUeXBlID0+IFxAT2JqZWN0VHlwZXNGaWx0ZXIsCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICApOwogICAgJFNlbGYtPntEeW5hbWljRmllbGRzfSA9ICREeW5hbWljRmllbGRzOwoKICAgIG15ICRWYWxpZER5bmFtaWNGaWVsZFNjcmVlbkxpc3QgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9WYWxpZER5bmFtaWNGaWVsZFNjcmVlbkxpc3RHZXQoCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgIE9iamVjdFR5cGUgPT4gJERlcml2ZWRPYmplY3RUeXBlIHx8ICRTZWxmLT57U2VsZWN0ZWRPYmplY3RUeXBlfSwKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgKTsKCiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZFNjcmVlbnN9ICAgPSAkVmFsaWREeW5hbWljRmllbGRTY3JlZW5MaXN0LT57RHluYW1pY0ZpZWxkU2NyZWVuc307CiAgICAkU2VsZi0+e0RlZmF1bHRDb2x1bW5zU2NyZWVuc30gPSAkVmFsaWREeW5hbWljRmllbGRTY3JlZW5MaXN0LT57RGVmYXVsdENvbHVtbnNTY3JlZW5zfTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBvYmplY3RzCiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CiAgICBteSAkWm51bnlIZWxwZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Wm51bnlIZWxwZXInKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYW5ndWFnZU9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6TGFuZ3VhZ2UnKTsKCiAgICAkU2VsZi0+e1N1YmFjdGlvbn0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3ViYWN0aW9uJyApIHx8ICcnOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRWxlbWVudCBUeXBlKSkgewogICAgICAgICRQYXJhbXskTmVlZGVkfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICROZWVkZWQgKTsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgIG15ICVDb25maWcgPSAkU2VsZi0+X0dldENvbmZpZyglUGFyYW0pOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgRWRpdAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0VkaXQnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dFZGl0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIERhdGEgPT4gXCVDb25maWcsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEFjdHZpdHlEaWFsb2dFZGl0QWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRWRpdEFjdGlvbicgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgcGFyYW1ldGVycwogICAgICAgIG15IEBBdmFpbGFibGVFbGVtZW50cyA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdBdmFpbGFibGVFbGVtZW50cycgKTsKCiAgICAgICAgbXkgQERpc2FibGVkRWxlbWVudHMgICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICdEaXNhYmxlZEVsZW1lbnRzJyApOwogICAgICAgIG15IEBBc3NpZ25lZEVsZW1lbnRzICAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnQXNzaWduZWRFbGVtZW50cycgKTsKICAgICAgICBteSBAQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ0Fzc2lnbmVkUmVxdWlyZWRFbGVtZW50cycgKTsKCiAgICAgICAgIyBnZXQgYWxsIEVsZW1lbnRzCiAgICAgICAgbXkgJUF2YWlsYWJsZUVsZW1lbnRzICAgICAgICA9IG1hcCB7ICRfID0+IHVuZGVmIH0gQEF2YWlsYWJsZUVsZW1lbnRzOwogICAgICAgIG15ICVEaXNhYmxlZEVsZW1lbnRzICAgICAgICAgPSBtYXAgeyAkXyA9PiAnMCcgfSBARGlzYWJsZWRFbGVtZW50czsKICAgICAgICBteSAlQXNzaWduZWRFbGVtZW50cyAgICAgICAgID0gbWFwIHsgJF8gPT4gJzEnIH0gQEFzc2lnbmVkRWxlbWVudHM7CiAgICAgICAgbXkgJUFzc2lnbmVkUmVxdWlyZWRFbGVtZW50cyA9IG1hcCB7ICRfID0+ICcyJyB9IEBBc3NpZ25lZFJlcXVpcmVkRWxlbWVudHM7CgogICAgICAgICMgYnVpbGQgY29uZmlnIGhhc2gKICAgICAgICBteSAlQ29uZmlnID0gKAogICAgICAgICAgICAlQXZhaWxhYmxlRWxlbWVudHMsCiAgICAgICAgICAgICVEaXNhYmxlZEVsZW1lbnRzLAogICAgICAgICAgICAlQXNzaWduZWRFbGVtZW50cywKICAgICAgICAgICAgJUFzc2lnbmVkUmVxdWlyZWRFbGVtZW50cywKICAgICAgICApOwoKICAgICAgICBteSAkU3VjY2VzczsKICAgICAgICBteSAlU2NyZWVuQ29uZmlnOwogICAgICAgICRTY3JlZW5Db25maWd7ICRQYXJhbXtFbGVtZW50fSB9IHx8PSB7fTsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIGVsZW1lbnQKICAgICAgICBpZiAoICRQYXJhbXtUeXBlfSBlcSAnRHluYW1pY0ZpZWxkJyApIHsKCiAgICAgICAgICAgICRTY3JlZW5Db25maWd7ICRQYXJhbXtFbGVtZW50fSB9ID0gXCVDb25maWc7CgogICAgICAgICAgICAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X0R5bmFtaWNGaWVsZHNTY3JlZW5Db25maWdJbXBvcnQoCiAgICAgICAgICAgICAgICBDb25maWcgPT4gXCVTY3JlZW5Db25maWcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBhcmFte1R5cGV9IGVxICdEeW5hbWljRmllbGRTY3JlZW4nICkgewoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBzb3J0IGtleXMgJUNvbmZpZyApIHsKICAgICAgICAgICAgICAgICRTY3JlZW5Db25maWd7ICRQYXJhbXtFbGVtZW50fSB9LT57JER5bmFtaWNGaWVsZH0gPSAkQ29uZmlneyREeW5hbWljRmllbGR9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X0R5bmFtaWNGaWVsZHNTY3JlZW5FbmFibGUoJVNjcmVlbkNvbmZpZyk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBhcmFte1R5cGV9IGVxICdEZWZhdWx0Q29sdW1uc1NjcmVlbicgKSB7CgogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIHNvcnQga2V5cyAlQ29uZmlnICkgewogICAgICAgICAgICAgICAgJFNjcmVlbkNvbmZpZ3sgJFBhcmFte0VsZW1lbnR9IH0tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZCB9ID0gJENvbmZpZ3skRHluYW1pY0ZpZWxkfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9EZWZhdWx0Q29sdW1uc0VuYWJsZSglU2NyZWVuQ29uZmlnKTsKICAgICAgICB9CgogICAgICAgICRQYXJhbXtQcmlvcml0eX0gPSAnSW5mbyc7CiAgICAgICAgJFBhcmFte01lc3NhZ2V9ICA9ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKAogICAgICAgICAgICAiU2V0dGluZ3Mgd2VyZSBzYXZlZC4iLAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkUGFyYW17UHJpb3JpdHl9ID0gJ0Vycm9yJzsKICAgICAgICAgICAgJFBhcmFte01lc3NhZ2V9ICA9ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgIlN5c3RlbSB3YXMgbm90IGFibGUgdG8gc2F2ZSB0aGUgc2V0dGluZyEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRTZWxmLT5fU2hvd0VkaXQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgRGF0YSA9PiBcJUNvbmZpZywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgUmVzZXQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdSZXNldCcgKSB7CgogICAgICAgICRTZWxmLT57U3ViYWN0aW9ufSA9ICdFZGl0JzsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAkUGFyYW17VHlwZX0gbmUgJ0R5bmFtaWNGaWVsZFNjcmVlbicKICAgICAgICAgICAgJiYgJFBhcmFte1R5cGV9IG5lICdEZWZhdWx0Q29sdW1uc1NjcmVlbicKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5fU2hvd092ZXJ2aWV3KCk7CiAgICAgICAgfQoKICAgICAgICBteSAkRXhjbHVzaXZlTG9ja0dVSUQ7CiAgICAgICAgbXkgJVNldHRpbmcgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtFbGVtZW50fSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkU2V0dGluZ3tFeGNsdXNpdmVMb2NrR1VJRH0gKSB7CgogICAgICAgICAgICAjIFNldHRpbmcgaXMgbm90IGxvY2tlZCB5ZXQuCiAgICAgICAgICAgICRFeGNsdXNpdmVMb2NrR1VJRCA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdMb2NrKAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIERlZmF1bHRJRCA9PiAkU2V0dGluZ3tEZWZhdWx0SUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRTZXR0aW5ne0V4Y2x1c2l2ZUxvY2tVc2VySUR9ICE9ICRTZWxmLT57VXNlcklEfSApIHsKCiAgICAgICAgICAgICMgU29tZW9uZSBlbHNlIGxvY2tlZCB0aGUgc2V0dGluZy4KICAgICAgICAgICAgJFBhcmFte1ByaW9yaXR5fSA9ICdFcnJvcic7CiAgICAgICAgICAgICRQYXJhbXtNZXNzYWdlfSAgPSAkTGFuZ3VhZ2VPYmplY3QtPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICJTZXR0aW5nIGlzIGxvY2tlZCBieSBhbm90aGVyIHVzZXIhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dFZGl0KAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJUNvbmZpZywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIEFscmVhZHkgbG9ja2VkIHRvIHRoaXMgdXNlci4KICAgICAgICAgICAgJEV4Y2x1c2l2ZUxvY2tHVUlEID0gJFNldHRpbmd7RXhjbHVzaXZlTG9ja0dVSUR9OwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nUmVzZXQoCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgID0+ICRQYXJhbXtFbGVtZW50fSwKICAgICAgICAgICAgRXhjbHVzaXZlTG9ja0dVSUQgPT4gJEV4Y2x1c2l2ZUxvY2tHVUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CgogICAgICAgICAgICAkUGFyYW17UHJpb3JpdHl9ID0gJ0Vycm9yJzsKICAgICAgICAgICAgJFBhcmFte01lc3NhZ2V9ICA9ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgIlN5c3RlbSB3YXMgbm90IGFibGUgdG8gcmVzZXQgdGhlIHNldHRpbmchIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dFZGl0KAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJUNvbmZpZywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdVbmxvY2soCiAgICAgICAgICAgIERlZmF1bHRJRCA9PiAkU2V0dGluZ3tEZWZhdWx0SUR9LAogICAgICAgICk7CgogICAgICAgICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fUmVidWlsZENvbmZpZygpOwoKICAgICAgICAkUGFyYW17UHJpb3JpdHl9ID0gJ0luZm8nOwogICAgICAgICRQYXJhbXtNZXNzYWdlfSAgPSAkTGFuZ3VhZ2VPYmplY3QtPlRyYW5zbGF0ZSgKICAgICAgICAgICAgIlNldHRpbmdzIHdlcmUgcmVzZXQuIiwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJFBhcmFte1ByaW9yaXR5fSA9ICdFcnJvcic7CiAgICAgICAgICAgICRQYXJhbXtNZXNzYWdlfSAgPSAkTGFuZ3VhZ2VPYmplY3QtPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICJTeXN0ZW0gd2FzIG5vdCBhYmxlIHRvIHJlc2V0IHRoZSBzZXR0aW5nISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBuZXcgY29uZmlnCiAgICAgICAgJUNvbmZpZyA9ICRTZWxmLT5fR2V0Q29uZmlnKCVQYXJhbSk7CgogICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dFZGl0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIERhdGEgPT4gXCVDb25maWcsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEVycm9yCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93T3ZlcnZpZXcoKTsKICAgIH0KCiAgICByZXR1cm47Cn0KCnN1YiBfU2hvd092ZXJ2aWV3IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAlRHluYW1pY0ZpZWxkcyAgICAgICAgID0gJXsgJFNlbGYtPntEeW5hbWljRmllbGRzfSB9OwogICAgbXkgJUR5bmFtaWNGaWVsZFNjcmVlbnMgICA9ICV7ICRTZWxmLT57RHluYW1pY0ZpZWxkU2NyZWVuc30gfTsKICAgIG15ICVEZWZhdWx0Q29sdW1uc1NjcmVlbnMgPSAleyAkU2VsZi0+e0RlZmF1bHRDb2x1bW5zU2NyZWVuc30gfTsKCiAgICAjIHNob3cgb3V0cHV0CiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnT3ZlcnZpZXcnICk7CgojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICMgc2hvdyBvYmplY3QgdHlwZSBzZWxlY3Rpb24KICAgIG15ICREeW5hbWljRmllbGRPYmplY3RUeXBlU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZFNlbGVjdGVkT2JqZWN0VHlwZScsCiAgICAgICAgRGF0YSAgICAgICAgICA9PiAkU2VsZi0+e0VuYWJsZWRPYmplY3RUeXBlc30sCiAgICAgICAgUG9zc2libGVOb25lICA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEICAgID0+ICRTZWxmLT57U2VsZWN0ZWRPYmplY3RUeXBlfSwKICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUgVzc1cGMnLAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdEeW5hbWljRmllbGRPYmplY3RUeXBlJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgRHluYW1pY0ZpZWxkT2JqZWN0VHlwZVN0cmcgPT4gJER5bmFtaWNGaWVsZE9iamVjdFR5cGVTdHJnLAogICAgICAgIH0KICAgICk7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgZm9yIG15ICREeW5hbWljRmllbGRTY3JlZW4gKCBzb3J0IHsgJER5bmFtaWNGaWVsZFNjcmVlbnN7JGF9IGNtcCAkRHluYW1pY0ZpZWxkU2NyZWVuc3skYn0gfSBrZXlzICVEeW5hbWljRmllbGRTY3JlZW5zICkgewoKICAgICAgICAjIG91dHB1dCByb3cgZm9yIER5bmFtaWNGaWVsZFNjcmVlbgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEeW5hbWljRmllbGRTY3JlZW5PdmVydmlld1JvdycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkU2NyZWVuID0+ICREeW5hbWljRmllbGRTY3JlZW4sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFNjcmVlbnN7JER5bmFtaWNGaWVsZFNjcmVlbn0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBmb3IgbXkgJERlZmF1bHRDb2x1bW5zU2NyZWVuICggc29ydCB7ICREZWZhdWx0Q29sdW1uc1NjcmVlbnN7JGF9IGNtcCAkRGVmYXVsdENvbHVtbnNTY3JlZW5zeyRifSB9IGtleXMgJURlZmF1bHRDb2x1bW5zU2NyZWVucyApIHsKCiAgICAgICAgIyBvdXRwdXQgcm93IGZvciBEZWZhdWx0Q29sdW1ucwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEZWZhdWx0Q29sdW1uc1NjcmVlbk92ZXJ2aWV3Um93JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBEZWZhdWx0Q29sdW1uc1NjcmVlbiA9PiAkRGVmYXVsdENvbHVtbnNTY3JlZW4sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAkRGVmYXVsdENvbHVtbnNTY3JlZW5zeyREZWZhdWx0Q29sdW1uc1NjcmVlbn0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICElRHluYW1pY0ZpZWxkcyApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTm9EYXRhRm91bmRNc2cnLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBzb3J0IGtleXMgJUR5bmFtaWNGaWVsZHMgKSB7CgogICAgICAgICAgICAjIG91dHB1dCByb3cgZm9yIER5bmFtaWNGaWVsZAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZCA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkc3skRHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluRHluYW1pY0ZpZWxkU2NyZWVuJywKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9TaG93RWRpdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJE5vQXNzaWduZWRSZXF1aXJlZEZpZWxkUm93OwoKICAgICRQYXJhbXtBY3Rpb259ID0gJ0VkaXQnOwoKICAgIG15ICVEYXRhICAgICAgICAgICAgICAgICAgPSAleyAkUGFyYW17RGF0YX0gfHwge30gfTsKICAgIG15ICVEeW5hbWljRmllbGRzICAgICAgICAgPSAleyAkU2VsZi0+e0R5bmFtaWNGaWVsZHN9IH07CiAgICBteSAlRHluYW1pY0ZpZWxkU2NyZWVucyAgID0gJXsgJFNlbGYtPntEeW5hbWljRmllbGRTY3JlZW5zfSB9OwogICAgbXkgJURlZmF1bHRDb2x1bW5zU2NyZWVucyA9ICV7ICRTZWxmLT57RGVmYXVsdENvbHVtbnNTY3JlZW5zfSB9OwoKICAgIG15ICVTY3JlZW5zID0gKAogICAgICAgICV7ICRTZWxmLT57RHluYW1pY0ZpZWxkU2NyZWVuc30gfSwKICAgICAgICAleyAkU2VsZi0+e0RlZmF1bHRDb2x1bW5zU2NyZWVuc30gfSwKICAgICk7CgogICAgIyBsb2NhbGl6ZSBhdmFpbGFibGUgZmllbGRzLCBkeW5hbWljIGZpZWxkcyBzY3JlZW5zIGFuZCBkZWZhdWx0IGNvbHVtbiBzY3JlZW5zCiAgICBteSAlQXZhaWxhYmxlRWxlbWVudHMgPSAlRHluYW1pY0ZpZWxkczsKICAgIG15ICVPdGhlckVsZW1lbnRzICAgICA9ICVEZWZhdWx0Q29sdW1uc1NjcmVlbnM7CgogICAgIyBzZXQgZGVmYXVsdCBzaXplIGZvciB0ZW1wbGF0ZQogICAgJFBhcmFte1NpemV9ICAgPSAnU2l6ZTFvZjQnOwogICAgJFBhcmFte0hlYWRlcn0gPSAnRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgU2NyZWVuJzsKCiAgICBpZiAoICRQYXJhbXtUeXBlfSBlcSAnRHluYW1pY0ZpZWxkJyApIHsKCiAgICAgICAgJUF2YWlsYWJsZUVsZW1lbnRzID0gJVNjcmVlbnM7CiAgICAgICAgJU90aGVyRWxlbWVudHMgICAgID0gJUR5bmFtaWNGaWVsZHM7CgogICAgICAgICRQYXJhbXtIZWFkZXJ9ICAgICAgPSAnU2NyZWVucyBmb3IgdGhpcyBEeW5hbWljIEZpZWxkJzsKICAgICAgICAkUGFyYW17SGlkZGVuUmVzZXR9ID0gJ0hpZGRlbic7CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtUeXBlfSBlcSAnRHluYW1pY0ZpZWxkU2NyZWVuJyApIHsKCiAgICAgICAgIyByZW1vdmUgQXNzaWduZWRSZXF1aXJlZEZpZWxkUm93IG9mZiB0ZW1wbGF0ZSBpZiBzY3JlZW4gaXMgQWdlbnRUaWNrZXRab29tIG9kZXIgQ3VzdG9tVGlja2V0Wm9vbQogICAgICAgIGlmICggJFBhcmFte0VsZW1lbnR9ID1+IG17Wm9vbX1tc3hpICkgewoKICAgICAgICAgICAgIyBBc3NpZ25lZFJlcXVpcmVkIGlzIG5vdCBuZWVkZWQgZm9yIFpvb20tVmlld3MKICAgICAgICAgICAgJE5vQXNzaWduZWRSZXF1aXJlZEZpZWxkUm93ID0gMTsKICAgICAgICAgICAgJFBhcmFte1NpemV9ICAgICAgICAgICAgICAgID0gJ1NpemUxb2YzJzsKICAgICAgICAgICAgJFBhcmFte0hpZGRlblJlcXVpcmVkfSAgICAgID0gJ0hpZGRlbic7CiAgICAgICAgfQogICAgICAgICVPdGhlckVsZW1lbnRzID0gJUR5bmFtaWNGaWVsZFNjcmVlbnM7CiAgICB9CgogICAgIyBvdXRwdXQgaW5wdXQgcGFnZQogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRWRpdCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzaG93cyBzaWRlYmFyIHNlbGVjdGlvbgogICAgZm9yIG15ICRFbGVtZW50ICggc29ydCB7ICRPdGhlckVsZW1lbnRzeyRhfSBjbXAgJE90aGVyRWxlbWVudHN7JGJ9IH0ga2V5cyAlT3RoZXJFbGVtZW50cyApIHsKCiAgICAgICAgIyBvdXRwdXQgcm93CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0FjdGlvbk92ZXJ2aWV3Um93RWRpdCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRWxlbWVudCAgICA9PiAkT3RoZXJFbGVtZW50c3skRWxlbWVudH0sCiAgICAgICAgICAgICAgICBFbGVtZW50S2V5ID0+ICRFbGVtZW50LAogICAgICAgICAgICAgICAgVHlwZSAgICAgICA9PiAkUGFyYW17VHlwZX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB1c2VkIGZpZWxkcyBieSB0aGUgZHluYW1pYyBmaWVsZCBncm91cAogICAgaWYgKCVEYXRhKSB7CgogICAgICAgIEVMRU1FTlQ6CiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggc29ydCBrZXlzICVEYXRhICkgewoKICAgICAgICAgICAgbmV4dCBFTEVNRU5UIGlmICFkZWZpbmVkICREYXRheyRFbGVtZW50fTsKICAgICAgICAgICAgbmV4dCBFTEVNRU5UIGlmICEkQXZhaWxhYmxlRWxlbWVudHN7JEVsZW1lbnR9OwoKICAgICAgICAgICAgIyByZW1vdmUgYWxsIHNwYWNlcyAjIG9yIDoKICAgICAgICAgICAgbXkgJElEID0gJEVsZW1lbnQ7CiAgICAgICAgICAgICRJRCA9fiBzL1xzLy9nOwogICAgICAgICAgICAkSUQgPX4gcy9cIyovL2c7CiAgICAgICAgICAgICRJRCA9fiBzL1w6XDovL2c7CgogICAgICAgICAgICBteSAkQmxvY2tOYW1lID0gdW5kZWY7CgogICAgICAgICAgICBpZiAoICREYXRheyRFbGVtZW50fSBlcSAwICkgewogICAgICAgICAgICAgICAgJEJsb2NrTmFtZSA9ICdEaXNhYmxlZEZpZWxkUm93JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICREYXRheyRFbGVtZW50fSBlcSAxICkgewogICAgICAgICAgICAgICAgJEJsb2NrTmFtZSA9ICdBc3NpZ25lZEZpZWxkUm93JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICREYXRheyRFbGVtZW50fSBlcSAyICYmICEkTm9Bc3NpZ25lZFJlcXVpcmVkRmllbGRSb3cgKSB7CiAgICAgICAgICAgICAgICAkQmxvY2tOYW1lID0gJ0Fzc2lnbmVkUmVxdWlyZWRGaWVsZFJvdyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgRUxFTUVOVCBpZiAhJEJsb2NrTmFtZTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkQmxvY2tOYW1lLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgRWxlbWVudCA9PiAkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICBMYWJlbCAgID0+ICRBdmFpbGFibGVFbGVtZW50c3skRWxlbWVudH0sCiAgICAgICAgICAgICAgICAgICAgSUQgICAgICA9PiAkSUQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyByZW1vdmUgdXNlZCBmaWVsZHMgZnJvbSBhdmFpbGFibGUgbGlzdAogICAgICAgICAgICBkZWxldGUgJEF2YWlsYWJsZUVsZW1lbnRzeyRFbGVtZW50fTsKICAgICAgICB9CiAgICB9CgogICAgIyBkaXNwbGF5IGF2YWlsYWJsZSBmaWVsZHMKICAgIGZvciBteSAkRWxlbWVudCAoCiAgICAgICAgc29ydCB7ICRBdmFpbGFibGVFbGVtZW50c3skYX0gY21wICRBdmFpbGFibGVFbGVtZW50c3skYn0gfQogICAgICAgIGtleXMgJUF2YWlsYWJsZUVsZW1lbnRzCiAgICAgICAgKQogICAgewogICAgICAgICMgcmVtb3ZlIGFsbCBzcGFjZXMgIyBvciA6CiAgICAgICAgbXkgJElEID0gJEVsZW1lbnQ7CiAgICAgICAgJElEID1+IHMvXHMvL2c7CiAgICAgICAgJElEID1+IHMvXCMqLy9nOwogICAgICAgICRJRCA9fiBzL1w6XDovL2c7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBdmFpbGFibGVGaWVsZFJvdycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRWxlbWVudCA9PiAkRWxlbWVudCwKICAgICAgICAgICAgICAgIExhYmVsICAgPT4gJEF2YWlsYWJsZUVsZW1lbnRzeyRFbGVtZW50fSwKICAgICAgICAgICAgICAgIElEICAgICAgPT4gJElELAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICBpZiAoICRQYXJhbXtNZXNzYWdlfSAmJiAkUGFyYW17UHJpb3JpdHl9ICkgewogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICBQcmlvcml0eSA9PiAkUGFyYW17UHJpb3JpdHl9IHx8ICdJbmZvJywKICAgICAgICAgICAgSW5mbyAgICAgPT4gJFBhcmFte01lc3NhZ2V9LAogICAgICAgICk7CiAgICB9CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbicsCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfR2V0Q29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFpudW55SGVscGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlpudW55SGVscGVyJyk7CgogICAgbXkgJUNvbmZpZzsKICAgIHJldHVybiAlQ29uZmlnIGlmICFkZWZpbmVkICRQYXJhbXtUeXBlfTsKCiAgICAjIGdldCBjb25maWcgb2YgZWxlbWVudAogICAgaWYgKCAkUGFyYW17VHlwZX0gZXEgJ0R5bmFtaWNGaWVsZCcgKSB7CiAgICAgICAgbXkgJUNvbmZpZ0l0ZW1Db25maWcgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9EeW5hbWljRmllbGRzU2NyZWVuQ29uZmlnRXhwb3J0KAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IFsgJFBhcmFte0VsZW1lbnR9IF0sCiAgICAgICAgKTsKCiAgICAgICAgJUNvbmZpZyA9ICV7ICRDb25maWdJdGVtQ29uZmlneyAkUGFyYW17RWxlbWVudH0gfSB8fCB7fSB9OwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17VHlwZX0gZXEgJ0R5bmFtaWNGaWVsZFNjcmVlbicgKSB7CgogICAgICAgIG15ICVDb25maWdJdGVtQ29uZmlnID0gJFpudW55SGVscGVyT2JqZWN0LT5fRHluYW1pY0ZpZWxkc1NjcmVlbkdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbXMgPT4gWyAkUGFyYW17RWxlbWVudH0gXSwKICAgICAgICApOwoKICAgICAgICAlQ29uZmlnID0gJXsgJENvbmZpZ0l0ZW1Db25maWd7ICRQYXJhbXtFbGVtZW50fSB9IHx8IHt9IH07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtUeXBlfSBlcSAnRGVmYXVsdENvbHVtbnNTY3JlZW4nICkgewoKICAgICAgICBteSAlQ29uZmlnSXRlbUNvbmZpZyA9ICRabnVueUhlbHBlck9iamVjdC0+X0R5bmFtaWNGaWVsZHNEZWZhdWx0Q29sdW1uc0dldCgKICAgICAgICAgICAgQ29uZmlnSXRlbXMgPT4gWyAkUGFyYW17RWxlbWVudH0gXSwKICAgICAgICApOwoKICAgICAgICAlQ29uZmlnID0gJXsgJENvbmZpZ0l0ZW1Db25maWd7ICRQYXJhbXtFbGVtZW50fSB9IHx8IHt9IH07CiAgICB9CgogICAgcmV0dXJuICVDb25maWc7Cgp9CgoxOwo=</File>
        <File Location="Custom/Kernel/Modules/AgentDashboardCommon.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2ZWZkYzdiZjJhMzMyNTI3N2NkNzlhNjBmMGYyNDA3ZjhhZDU5ZTg3IC0gS2VybmVsL01vZHVsZXMvQWdlbnREYXNoYm9hcmRDb21tb24ucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50RGFzaGJvYXJkQ29tbW9uOwoKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6REJPYmplY3QpCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7JVBhcmFtfSwgJFR5cGU7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQmFja2VuZENvbmZpZ0tleSAgPSAnRGFzaGJvYXJkQmFja2VuZCc7CiAgICBteSAkTWFpbk1lbnVDb25maWdLZXkgPSAnQWdlbnREYXNoYm9hcmQ6Ok1haW5NZW51JzsKICAgIG15ICRVc2VyU2V0dGluZ3NLZXkgICA9ICdVc2VyRGFzaGJvYXJkJzsKCiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyJyApIHsKICAgICAgICAkQmFja2VuZENvbmZpZ0tleSAgPSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kJzsKICAgICAgICAkTWFpbk1lbnVDb25maWdLZXkgPSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpNYWluTWVudSc7CiAgICAgICAgJFVzZXJTZXR0aW5nc0tleSAgID0gJ1VzZXJDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyJzsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntBY3Rpb259IGVxICdBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyJyApIHsKICAgICAgICAkQmFja2VuZENvbmZpZ0tleSAgPSAnQWdlbnRDdXN0b21lclVzZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCc7CiAgICAgICAgJE1haW5NZW51Q29uZmlnS2V5ID0gJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXI6Ok1haW5NZW51JzsKICAgICAgICAkVXNlclNldHRpbmdzS2V5ICAgPSAnVXNlckN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyJzsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgbG9hZCBiYWNrZW5kcwogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgkQmFja2VuZENvbmZpZ0tleSk7CiAgICBpZiAoICEkQ29uZmlnICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdObyBzdWNoIGNvbmZpZyBmb3IgJXMnLCAkQmFja2VuZENvbmZpZ0tleSApLAogICAgICAgICk7CiAgICB9CgogICAgIyBHZXQgYWxsIGNvbmZpZ3VyZWQgc3RhdGlzdGljcyBmcm9tIHRoZSBzeXN0ZW0gdGhhdCBzaG91bGQgYmUgc2hvd24gYXMgYSBkYXNoYm9hcmQgd2lkZ2V0CiAgICAjICAgYW5kIHJlZ2lzdGVyIHRoZW0gZHluYW1pY2FsbHkgaW4gdGhlIGNvbmZpZ3VyYXRpb24uCiAgICBteSBAU3RhdHNJRHM7CiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnREYXNoYm9hcmQnICkgewoKICAgICAgICBteSAkU3RhdHNIYXNoID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyktPlN0YXRzTGlzdEdldCgKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRTdGF0c0hhc2gpICkgewogICAgICAgICAgICBTVEFUSUQ6CiAgICAgICAgICAgIGZvciBteSAkU3RhdElEICggc29ydCBrZXlzICV7JFN0YXRzSGFzaH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRJRCBpZiAhJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57U2hvd0FzRGFzaGJvYXJkV2lkZ2V0fTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICAgICAgICAgICAgICBuZXh0IFNUQVRJRCBpZiAhJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57UGVybWlzc2lvbn07CiAgICAgICAgICAgICAgICBuZXh0IFNUQVRJRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkU3RhdHNIYXNoLT57JFN0YXRJRH0tPntQZXJtaXNzaW9ufSApOwoKICAgICAgICAgICAgICAgIG15IEBTdGF0c1Blcm1pc3Npb25Hcm91cE5hbWVzOwogICAgICAgICAgICAgICAgZm9yIG15ICRHcm91cElEICggQHsgJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57UGVybWlzc2lvbn0gfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTdGF0c1Blcm1pc3Npb25Hcm91cE5hbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoIEdyb3VwSUQgPT4gJEdyb3VwSUQgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG15ICRTdGF0c1Blcm1pc3Npb25Hcm91cHMgPSBqb2luKCAnOycsIEBTdGF0c1Blcm1pc3Npb25Hcm91cE5hbWVzICk7CgogICAgICAgICAgICAgICAgIyByZXBsYWNlIGFsbCBsaW5lIGJyZWFrcyB3aXRoIHNwYWNlcyAob3RoZXJ3aXNlIFRyYW5zbGF0ZSgpIHdpbGwgbm90IHdvcmsgY29ycmVjdGx5KQogICAgICAgICAgICAgICAgJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57RGVzY3JpcHRpb259ID1+IHN7XHI/XG58XHJ9eyB9bXN4ZzsKCiAgICAgICAgICAgICAgICBteSAkRGVzY3JpcHRpb24gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRTdGF0c0hhc2gtPnskU3RhdElEfS0+e0Rlc2NyaXB0aW9ufSApOwoKICAgICAgICAgICAgICAgIG15ICRUaXRsZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFN0YXRzSGFzaC0+eyRTdGF0SUR9LT57VGl0bGV9ICk7CiAgICAgICAgICAgICAgICAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1N0YXRpc3RpYycpIC4gJzogJwogICAgICAgICAgICAgICAgICAgIC4gJFRpdGxlIC4gJyAoJwogICAgICAgICAgICAgICAgICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCdTdGF0czo6U3RhdHNIb29rJykKICAgICAgICAgICAgICAgICAgICAuICRTdGF0c0hhc2gtPnskU3RhdElEfS0+e1N0YXROdW1iZXJ9IC4gJyknOwoKICAgICAgICAgICAgICAgICRDb25maWctPnsgKCAkU3RhdElEICsgMTAwMCApIC4gJy1TdGF0cycgfSA9IHsKICAgICAgICAgICAgICAgICAgICAnQmxvY2snICAgICAgID0+ICdDb250ZW50TGFyZ2UnLAogICAgICAgICAgICAgICAgICAgICdEZWZhdWx0JyAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAnTW9kdWxlJyAgICAgID0+ICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkOjpTdGF0cycsCiAgICAgICAgICAgICAgICAgICAgJ1RpdGxlJyAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgJ1N0YXRJRCcgICAgICA9PiAkU3RhdElELAogICAgICAgICAgICAgICAgICAgICdEZXNjcmlwdGlvbicgPT4gJERlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgICAgICdHcm91cCcgICAgICAgPT4gJFN0YXRzUGVybWlzc2lvbkdyb3VwcywKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBwdXNoIEBTdGF0c0lEcywgJFN0YXRJRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0Rhc2hib2FyZFN0YXRzSURzJywKICAgICAgICAgICAgICAgIFZhbHVlID0+IFxAU3RhdHNJRHMKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyJyApIHsKCiAgICAgICAgJFNlbGYtPntDdXN0b21lcklEfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDdXN0b21lcklEJyApOwoKICAgICAgICAjIGNoZWNrIEN1c3RvbWVySUQgcHJlc2VuY2UgZm9yIGFsbCBzdWJhY3Rpb25zIHRoYXQgbmVlZCBpdAogICAgICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IG5lICdVcGRhdGVQb3NpdGlvbicgKSB7CiAgICAgICAgICAgIGlmICggISRTZWxmLT57Q3VzdG9tZXJJRH0gKSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNPbkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29kZSA9PiAnQ29yZS5BZ2VudC5DdXN0b21lckluZm9ybWF0aW9uQ2VudGVyU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coKTsnCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntBY3Rpb259IGVxICdBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyJyApIHsKCiAgICAgICAgJFNlbGYtPntDdXN0b21lclVzZXJJRH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ3VzdG9tZXJVc2VySUQnICk7CgogICAgICAgICMgY2hlY2sgQ3VzdG9tZXJVc2VySUQgcHJlc2VuY2UgZm9yIGFsbCBzdWJhY3Rpb25zIHRoYXQgbmVlZCBpdAogICAgICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IG5lICdVcGRhdGVQb3NpdGlvbicgKSB7CgogICAgICAgICAgICBpZiAoICEkU2VsZi0+e0N1c3RvbWVyVXNlcklEfSApIHsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU09uRG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICAgICAgICAgICAgICBDb2RlID0+ICdDb3JlLkFnZW50LkN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coKTsnCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRTZXNzaW9uT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKTsKICAgIG15ICRVc2VyT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICMgdXBkYXRlL2Nsb3NlIGl0ZW0KICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdVcGRhdGVSZW1vdmUnICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICBteSAkTmFtZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdOYW1lJyApOwogICAgICAgIG15ICRLZXkgID0gJFVzZXJTZXR0aW5nc0tleSAuICROYW1lOwoKICAgICAgICAjIE1hbmRhdG9yeSB3aWRnZXRzIGNhbid0IGJlIHJlbW92ZWQuCiAgICAgICAgaWYgKCAkQ29uZmlnLT57JE5hbWV9ICYmICRDb25maWctPnskTmFtZX0tPntNYW5kYXRvcnl9ICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgc2Vzc2lvbgogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAkS2V5LAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnRGVtb1N5c3RlbScpICkgewogICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gMCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSI7CiAgICAgICAgaWYgKCAkU2VsZi0+e0N1c3RvbWVySUR9ICkgewogICAgICAgICAgICAkVVJMIC49ICI7Q3VzdG9tZXJJRD0iIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJFNlbGYtPntDdXN0b21lcklEfSApOwogICAgICAgIH0KICAgICAgICBpZiAoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICAgICAkVVJMIC49ICI7Q3VzdG9tZXJVc2VySUQ9IiAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9ICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICRVUkwsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHVwZGF0ZSBwcmVmZXJlbmNlcwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1VwZGF0ZVByZWZlcmVuY2VzJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgbXkgJE5hbWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTmFtZScgKTsKCiAgICAgICAgIyBnZXQgcHJlZmVyZW5jZXMgc2V0dGluZ3MKICAgICAgICBteSBAUHJlZmVyZW5jZXNPbmx5ID0gJFNlbGYtPl9FbGVtZW50KAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgIENvbmZpZ3MgICAgICAgICA9PiAkQ29uZmlnLAogICAgICAgICAgICBQcmVmZXJlbmNlc09ubHkgPT4gMSwKICAgICAgICApOwogICAgICAgIGlmICggIUBQcmVmZXJlbmNlc09ubHkgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05vIHByZWZlcmVuY2VzIGZvciAlcyEnLCAkTmFtZSApLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyByZW1lbWJlciBwcmVmZXJlbmNlcwogICAgICAgIGZvciBteSAkUGFyYW0gKEBQcmVmZXJlbmNlc09ubHkpIHsKCiAgICAgICAgICAgICMgZ2V0IHBhcmFtcwogICAgICAgICAgICBteSAkVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW0tPntOYW1lfSApOwoKICAgICAgICAgICAgIyB1cGRhdGUgcnVudGltZSB2YXJzCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPnsgJFBhcmFtLT57TmFtZX0gfSA9ICRWYWx1ZTsKCiAgICAgICAgICAgICMgdXBkYXRlIHNlc3Npb24KICAgICAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJFBhcmFtLT57TmFtZX0sCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB1cGRhdGUgcHJlZmVyZW5jZXMKICAgICAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdEZW1vU3lzdGVtJykgKSB7CiAgICAgICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBLZXkgICAgPT4gJFBhcmFtLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZGVsaXZlciBuZXcgY29udGVudCBwYWdlCiAgICAgICAgbXkgJUVsZW1lbnRSZWxvYWQgPSAkU2VsZi0+X0VsZW1lbnQoCiAgICAgICAgICAgIE5hbWUgICAgPT4gJE5hbWUsCiAgICAgICAgICAgIENvbmZpZ3MgPT4gJENvbmZpZywKICAgICAgICAgICAgQUpBWCAgICA9PiAxCiAgICAgICAgKTsKICAgICAgICBpZiAoICElRWxlbWVudFJlbG9hZCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ2FuXCd0IGdldCBlbGVtZW50IGRhdGEgb2YgJXMhJywgJE5hbWUgKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkeyAkRWxlbWVudFJlbG9hZHtDb250ZW50fSB9LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgdXBkYXRlIHNldHRpbmdzCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnVXBkYXRlU2V0dGluZ3MnICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICBteSBAQmFja2VuZHMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnQmFja2VuZCcgKTsKICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJXskQ29uZmlnfSApIHsKICAgICAgICAgICAgbXkgJEFjdGl2ZSA9IDA7CiAgICAgICAgICAgIEJBQ0tFTkQ6CiAgICAgICAgICAgIGZvciBteSAkQmFja2VuZCAoQEJhY2tlbmRzKSB7CiAgICAgICAgICAgICAgICBuZXh0IEJBQ0tFTkQgaWYgJEJhY2tlbmQgbmUgJE5hbWU7CiAgICAgICAgICAgICAgICAkQWN0aXZlID0gMTsKICAgICAgICAgICAgICAgIGxhc3QgQkFDS0VORDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBNYW5kYXRvcnkgd2lkZ2V0cyBjYW4gbm90IGJlIHJlbW92ZWQuCiAgICAgICAgICAgIGlmICggJENvbmZpZy0+eyROYW1lfS0+e01hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgICAgICAkQWN0aXZlID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJEtleSA9ICRVc2VyU2V0dGluZ3NLZXkgLiAkTmFtZTsKCiAgICAgICAgICAgICMgdXBkYXRlIHNlc3Npb24KICAgICAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgICAgPT4gJEtleSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkQWN0aXZlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB1cGRhdGUgcHJlZmVyZW5jZXMKICAgICAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdEZW1vU3lzdGVtJykgKSB7CiAgICAgICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBLZXkgICAgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJEFjdGl2ZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSI7CiAgICAgICAgaWYgKCAkU2VsZi0+e0N1c3RvbWVySUR9ICkgewogICAgICAgICAgICAkVVJMIC49ICI7Q3VzdG9tZXJJRD0iIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJFNlbGYtPntDdXN0b21lcklEfSApOwogICAgICAgIH0KICAgICAgICBpZiAoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICAgICAkVVJMIC49ICI7Q3VzdG9tZXJVc2VySUQ9IiAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9ICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICRVUkwsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHVwZGF0ZSBwb3NpdGlvbgogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1VwZGF0ZVBvc2l0aW9uJyApIHsKCiAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgbXkgQEJhY2tlbmRzID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ0JhY2tlbmQnICk7CgogICAgICAgICMgZ2V0IG5ldyBvcmRlcgogICAgICAgIG15ICRLZXkgID0gJFVzZXJTZXR0aW5nc0tleSAuICdQb3NpdGlvbic7CiAgICAgICAgbXkgJERhdGEgPSAnJzsKICAgICAgICBmb3IgbXkgJEJhY2tlbmQgKEBCYWNrZW5kcykgewogICAgICAgICAgICAkQmFja2VuZCA9fiBzeyBcQSBEYXNoYm9hcmQgKC4rPykgLWJveCBceiB9eyQxfWd4bXM7CiAgICAgICAgICAgICREYXRhIC49ICRCYWNrZW5kIC4gJzsnOwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgc2Vzc2lvbgogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAkS2V5LAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJERhdGEsCiAgICAgICAgKTsKCiAgICAgICAgIyB1cGRhdGUgcHJlZmVyZW5jZXMKICAgICAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0RlbW9TeXN0ZW0nKSApIHsKICAgICAgICAgICAgJFVzZXJPYmplY3QtPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIEtleSAgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICREYXRhLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZW5kIHN1Y2Nlc3NmdWwgcmVzcG9uc2UKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENoYXJzZXQgICAgID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICcxJywKICAgICAgICApOwogICAgfQoKICAgICMgZGVsaXZlciBlbGVtZW50CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRWxlbWVudCcgKSB7CgogICAgICAgIG15ICROYW1lID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hbWUnICk7CgogICAgICAgICMgZ2V0IHRoZSBjb2x1bW4gZmlsdGVycyBmcm9tIHRoZSB3ZWIgcmVxdWVzdAogICAgICAgIG15ICVDb2x1bW5GaWx0ZXI7CiAgICAgICAgbXkgJUdldENvbHVtbkZpbHRlcjsKICAgICAgICBteSAlR2V0Q29sdW1uRmlsdGVyU2VsZWN0OwoKICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgIHF3KE93bmVyIFJlc3BvbnNpYmxlIFN0YXRlIFF1ZXVlIFByaW9yaXR5IFR5cGUgTG9jayBTZXJ2aWNlIFNMQSBDdXN0b21lcklEIEN1c3RvbWVyVXNlcklEKQogICAgICAgICAgICBxdyhPd25lciBSZXNwb25zaWJsZSBTdGF0ZSBRdWV1ZSBQcmlvcml0eSBUeXBlIExvY2sgU2VydmljZSBTTEEgQ3VzdG9tZXJJRCBDdXN0b21lclVzZXJJRCBDbGFzcyBDdXJEZXBsU3RhdGUgQ3VySW5jaVN0YXRlKQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lIC4gJE5hbWUgKQogICAgICAgICAgICAgICAgfHwgJyc7CiAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkRmlsdGVyVmFsdWUgZXEgJyc7CgogICAgICAgICAgICBpZiAoICRDb2x1bW5OYW1lIGVxICdDdXN0b21lcklEJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJENvbHVtbkZpbHRlcnskQ29sdW1uTmFtZX0gfSwgICAgICAgICAgICRGaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJENvbHVtbkZpbHRlcnsgJENvbHVtbk5hbWUgLiAnUmF3JyB9IH0sICRGaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW5OYW1lIGVxICdDdXN0b21lclVzZXJJRCcgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRDb2x1bW5GaWx0ZXJ7Q3VzdG9tZXJVc2VyTG9naW59IH0sICAgICRGaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJENvbHVtbkZpbHRlcntDdXN0b21lclVzZXJMb2dpblJhd30gfSwgJEZpbHRlclZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAeyAkQ29sdW1uRmlsdGVyeyAkQ29sdW1uTmFtZSAuICdJRHMnIH0gfSwgJEZpbHRlclZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkR2V0Q29sdW1uRmlsdGVyeyAkQ29sdW1uTmFtZSAuICROYW1lIH0gPSAkRmlsdGVyVmFsdWU7CiAgICAgICAgICAgICRHZXRDb2x1bW5GaWx0ZXJTZWxlY3R7JENvbHVtbk5hbWV9ID0gJEZpbHRlclZhbHVlOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgIFZhbGlkICAgICAgPT4gMSwKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ1RpY2tldCddLAogICAgICAgICAgICBPYmplY3RUeXBlID0+IFsnVGlja2V0JywgJ0lUU01Db25maWdJdGVtJ10sCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgKTsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgbXkgJEZpbHRlclZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgICAgIFBhcmFtID0+ICdDb2x1bW5GaWx0ZXJEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICROYW1lCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhZGVmaW5lZCAkRmlsdGVyVmFsdWU7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRGaWx0ZXJWYWx1ZSBlcSAnJzsKCiAgICAgICAgICAgICRDb2x1bW5GaWx0ZXJ7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gewogICAgICAgICAgICAgICAgRXF1YWxzID0+ICRGaWx0ZXJWYWx1ZSwKICAgICAgICAgICAgfTsKICAgICAgICAgICAgJEdldENvbHVtbkZpbHRlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJE5hbWUgfSA9ICRGaWx0ZXJWYWx1ZTsKICAgICAgICAgICAgJEdldENvbHVtbkZpbHRlclNlbGVjdHsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRmlsdGVyVmFsdWU7CiAgICAgICAgfQoKICAgICAgICBteSAkU29ydEJ5ICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICk7CiAgICAgICAgbXkgJE9yZGVyQnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXJCeScgKTsKCiAgICAgICAgbXkgJUVsZW1lbnQgPSAkU2VsZi0+X0VsZW1lbnQoCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgQ29uZmlncyAgICAgICAgICAgICAgID0+ICRDb25maWcsCiAgICAgICAgICAgIEFKQVggICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICAgPT4gJFNvcnRCeSwKICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICBDb2x1bW5GaWx0ZXIgICAgICAgICAgPT4gXCVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgIEdldENvbHVtbkZpbHRlciAgICAgICA9PiBcJUdldENvbHVtbkZpbHRlciwKICAgICAgICAgICAgR2V0Q29sdW1uRmlsdGVyU2VsZWN0ID0+IFwlR2V0Q29sdW1uRmlsdGVyU2VsZWN0LAogICAgICAgICk7CgogICAgICAgIGlmICggISVFbGVtZW50ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDYW5cJ3QgZ2V0IGVsZW1lbnQgZGF0YSBvZiAlcyEnLCAkTmFtZSApLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENoYXJzZXQgICAgID0+ICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICR7ICRFbGVtZW50e0NvbnRlbnR9IH0sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBkZWxpdmVyIGVsZW1lbnQKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYRmlsdGVyVXBkYXRlJyApIHsKCiAgICAgICAgbXkgJEVsZW1lbnRDaGFuZ2VkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VsZW1lbnRDaGFuZ2VkJyApOwogICAgICAgIG15ICgkTmFtZSkgICAgICAgICA9ICRFbGVtZW50Q2hhbmdlZCA9fiBteyAoIFxkezR9IC0gLio/ICkgXHogfWd4bXM7CiAgICAgICAgbXkgJENvbHVtbiAgICAgICAgID0gJEVsZW1lbnRDaGFuZ2VkOwogICAgICAgICRDb2x1bW4gPX4gc3sgXEEgQ29sdW1uRmlsdGVyIH17fWd4bXM7CiAgICAgICAgJENvbHVtbiA9fiBzeyAkTmFtZSB9e31neG1zOwoKICAgICAgICBteSAkRmlsdGVyQ29udGVudCA9ICRTZWxmLT5fRWxlbWVudCgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgIEZpbHRlckNvbnRlbnRPbmx5ID0+IDEsCiAgICAgICAgICAgIEZpbHRlckNvbHVtbiAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgIEVsZW1lbnRDaGFuZ2VkICAgID0+ICRFbGVtZW50Q2hhbmdlZCwKICAgICAgICAgICAgQ29uZmlncyAgICAgICAgICAgPT4gJENvbmZpZywKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRmlsdGVyQ29udGVudCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ2FuXCd0IGdldCBmaWx0ZXIgY29udGVudCBkYXRhIG9mICVzIScsICROYW1lICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb24nLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmlsdGVyQ29udGVudCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICB9CgogICAgIyBzdG9yZSBsYXN0IHF1ZXVlIHNjcmVlbgogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgKTsKCiAgICBteSAlQ29udGVudEJsb2NrRGF0YTsKCiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyJyApIHsKCiAgICAgICAgJENvbnRlbnRCbG9ja0RhdGF7Q3VzdG9tZXJJRH0gPSAkU2VsZi0+e0N1c3RvbWVySUR9OwoKICAgICAgICAjIEgxIHRpdGxlCiAgICAgICAgJENvbnRlbnRCbG9ja0RhdGF7Q3VzdG9tZXJJRFRpdGxlfSA9ICRTZWxmLT57Q3VzdG9tZXJJRH07CgogICAgICAgIG15ICVDdXN0b21lckNvbXBhbnlEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScpLT5DdXN0b21lckNvbXBhbnlHZXQoCiAgICAgICAgICAgIEN1c3RvbWVySUQgPT4gJFNlbGYtPntDdXN0b21lcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICRDdXN0b21lckNvbXBhbnlEYXRhe0N1c3RvbWVyQ29tcGFueU5hbWV9ICkgewogICAgICAgICAgICAkQ29udGVudEJsb2NrRGF0YXtDdXN0b21lcklEVGl0bGV9ID0gIiRDdXN0b21lckNvbXBhbnlEYXRhe0N1c3RvbWVyQ29tcGFueU5hbWV9ICgkU2VsZi0+e0N1c3RvbWVySUR9KSI7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e0FjdGlvbn0gZXEgJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXInICkgewoKICAgICAgICBteSAlQ3VzdG9tZXJVc2VyRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgVXNlciA9PiAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAkQ29udGVudEJsb2NrRGF0YXtDdXN0b21lclVzZXJJRH0gPSAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfTsKCiAgICAgICAgIyBIMSB0aXRsZQogICAgICAgICRDb250ZW50QmxvY2tEYXRhe0N1c3RvbWVyVXNlcklEVGl0bGV9ID0gIlwiJEN1c3RvbWVyVXNlckRhdGF7VXNlckZ1bGxuYW1lfVwiIDwkQ3VzdG9tZXJVc2VyRGF0YXtVc2VyRW1haWx9PiI7CgogICAgfQoKICAgICMgc2hvdyBkYXNoYm9hcmQKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0NvbnRlbnQnLAogICAgICAgIERhdGEgPT4gXCVDb250ZW50QmxvY2tEYXRhLAogICAgKTsKCiAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAjIGdldCBzaG93biBiYWNrZW5kcwogICAgbXkgJUJhY2tlbmRzOwogICAgQkFDS0VORDoKICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAleyRDb25maWd9ICkgewoKICAgICAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICAgICAgaWYgKCAkQ29uZmlnLT57JE5hbWV9LT57R3JvdXB9ICkgewogICAgICAgICAgICBteSAkUGVybWlzc2lvbk9LID0gMDsKICAgICAgICAgICAgbXkgQEdyb3VwcyAgICAgICA9IHNwbGl0IC87LywgJENvbmZpZy0+eyROYW1lfS0+e0dyb3VwfTsKICAgICAgICAgICAgR1JPVVA6CiAgICAgICAgICAgIGZvciBteSAkR3JvdXAgKEBHcm91cHMpIHsKICAgICAgICAgICAgICAgIG15ICRIYXNQZXJtaXNzaW9uID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJEdyb3VwLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAncm8nLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICgkSGFzUGVybWlzc2lvbikgewogICAgICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uT0sgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgR1JPVVA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbmV4dCBCQUNLRU5EIGlmICEkUGVybWlzc2lvbk9LOwogICAgICAgIH0KCiAgICAgICAgbXkgJEtleSA9ICRVc2VyU2V0dGluZ3NLZXkgLiAkTmFtZTsKICAgICAgICBpZiAoIGRlZmluZWQgJFNlbGYtPntTZXNzaW9ufXskS2V5fSApIHsKICAgICAgICAgICAgJEJhY2tlbmRzeyROYW1lfSA9ICRTZWxmLT57U2Vzc2lvbn17JEtleX07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQmFja2VuZHN7JE5hbWV9ID0gJENvbmZpZy0+eyROYW1lfS0+e0RlZmF1bHR9OwogICAgICAgIH0KCiAgICAgICAgIyBBbHdheXMgc2hvdyB3aWRnZXRzIHdpdGggbWFuZGF0b3J5IGZsYWcuCiAgICAgICAgaWYgKCAkQ29uZmlnLT57JE5hbWV9LT57TWFuZGF0b3J5fSApIHsKICAgICAgICAgICAgJEJhY2tlbmRzeyROYW1lfSA9ICRDb25maWctPnskTmFtZX0tPntNYW5kYXRvcnl9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBvcmRlciBvZiBwbHVnaW5zCiAgICBteSAkS2V5ID0gJFVzZXJTZXR0aW5nc0tleSAuICdQb3NpdGlvbic7CiAgICBteSBAT3JkZXI7CiAgICBteSAkVmFsdWUgPSAkU2VsZi0+e1Nlc3Npb259eyRLZXl9OwoKICAgIGlmICgkVmFsdWUpIHsKICAgICAgICBAT3JkZXIgPSBzcGxpdCAvOy8sICRWYWx1ZTsKCiAgICAgICAgIyBvbmx5IHVzZSBhY3RpdmUgYmFja2VuZHMKICAgICAgICBAT3JkZXIgPSBncmVwIHsgJENvbmZpZy0+eyRffSB9IEBPcmRlcjsKICAgIH0KICAgIGlmICggIUBPcmRlciApIHsKICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJUJhY2tlbmRzICkgewogICAgICAgICAgICBwdXNoIEBPcmRlciwgJE5hbWU7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIG5vdCBvcmRlcmVkIHBsdWdpbnMgKGUuIGcuIG5ldyBhY3RpdmUpCiAgICBOQU1FOgogICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVCYWNrZW5kcyApIHsKICAgICAgICBteSAkSW5jbHVkZWQgPSAwOwogICAgICAgIElURU06CiAgICAgICAgZm9yIG15ICRJdGVtIChAT3JkZXIpIHsKICAgICAgICAgICAgbmV4dCBJVEVNIGlmICRJdGVtIG5lICROYW1lOwogICAgICAgICAgICAkSW5jbHVkZWQgPSAxOwogICAgICAgIH0KICAgICAgICBuZXh0IE5BTUUgaWYgJEluY2x1ZGVkOwogICAgICAgIHB1c2ggQE9yZGVyLCAkTmFtZTsKICAgIH0KCiAgICAjIGdldCBkZWZhdWx0IGNvbHVtbnMKICAgIG15ICRDb2x1bW5zID0gJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IHx8ICRDb25maWdPYmplY3QtPkdldCgnRGVmYXVsdE92ZXJ2aWV3Q29sdW1ucycpIHx8IHt9OwoKICAgICMgdHJ5IGV2ZXJ5IGJhY2tlbmQgdG8gbG9hZCBhbmQgZXhlY3V0ZSBpdAogICAgbXkgQENvbnRhaW5lck5hbWVzOwogICAgTkFNRToKICAgIGZvciBteSAkTmFtZSAoQE9yZGVyKSB7CgogICAgICAgICMgZ2V0IGVsZW1lbnQgZGF0YQogICAgICAgIG15ICVFbGVtZW50ID0gJFNlbGYtPl9FbGVtZW50KAogICAgICAgICAgICBOYW1lICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgQ29uZmlncyAgPT4gJENvbmZpZywKICAgICAgICAgICAgQmFja2VuZHMgPT4gXCVCYWNrZW5kcywKICAgICAgICApOwogICAgICAgIG5leHQgTkFNRSBpZiAhJUVsZW1lbnQ7CgogICAgICAgICMgTmFtZUZvcm0gKHRvIHN1cHBvcnQgSUUsIGlzIG5vdCB3b3JraW5nIHdpdGggIi0iIGluIGZvcm0gbmFtZXMpCiAgICAgICAgbXkgJE5hbWVGb3JtID0gJE5hbWU7CiAgICAgICAgJE5hbWVGb3JtID1+IHN7LX17fWc7CgogICAgICAgIG15ICVKU0RhdGEgPSAoCiAgICAgICAgICAgIE5hbWUgICAgID0+ICROYW1lLAogICAgICAgICAgICBOYW1lRm9ybSA9PiAkTmFtZUZvcm0sCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAQ29udGFpbmVyTmFtZXMsIFwlSlNEYXRhOwoKICAgICAgICAjIHJlbmRlcmluZwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICRFbGVtZW50e0NvbmZpZ30tPntCbG9ja30sCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICBOYW1lRm9ybSAgICAgICA9PiAkTmFtZUZvcm0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICA9PiAkeyAkRWxlbWVudHtDb250ZW50fSB9LAogICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfSB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgcmVmcmVzaCBsaW5rIGlmIHJlZnJlc2hpbmcgaXMgYXZhaWxhYmxlCiAgICAgICAgaWYgKCAkRWxlbWVudHtDb25maWd9LT57Q2FuUmVmcmVzaH0gKSB7CgogICAgICAgICAgICBteSAkTmFtZUhUTUwgPSAkTmFtZTsKICAgICAgICAgICAgJE5hbWVIVE1MID1+IHN7LX17X314bXNnOwoKICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NhblJlZnJlc2gtJyAuICROYW1lLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgIE5hbWVIVE1MID0+ICROYW1lSFRNTCwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkRWxlbWVudHtDb25maWd9LT57QmxvY2t9IC4gJ1JlZnJlc2gnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgIE5hbWVIVE1MID0+ICROYW1lSFRNTCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIERvIG5vdCBzaG93IHRoZSBkZWxldGUgbGluayBpZiB0aGUgd2lkZ2V0IGlzIG1hbmRhdG9yeS4KICAgICAgICBpZiAoICEkQ29uZmlnLT57JE5hbWV9LT57TWFuZGF0b3J5fSApIHsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkRWxlbWVudHtDb25maWd9LT57QmxvY2t9IC4gJ1JlbW92ZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAleyAkRWxlbWVudHtDb25maWd9IH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFNlbGYtPntDdXN0b21lclVzZXJJRH0gfHwgJycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBpZiBjb2x1bW4gaXMgbm90IGEgZGVmYXVsdCBjb2x1bW4sIGFkZCBpdCBmb3IgdHJhbnNsYXRpb24KICAgICAgICBmb3IgbXkgJENvbHVtbiAoIHNvcnQga2V5cyAleyAkRWxlbWVudHtDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IH0gKSB7CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJENvbHVtbnMtPnskQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICRDb2x1bW5zLT57JENvbHVtbn0gPSAkRWxlbWVudHtDb25maWd9LT57RGVmYXVsdENvbHVtbnN9LT57JENvbHVtbn07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2hvdyBzZXR0aW5ncyBsaW5rIGlmIHByZWZlcmVuY2VzIGFyZSBhdmFpbGFibGUKICAgICAgICBpZiAoICRFbGVtZW50e1ByZWZlcmVuY2VzfSAmJiBAeyAkRWxlbWVudHtQcmVmZXJlbmNlc30gfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICRFbGVtZW50e0NvbmZpZ30tPntCbG9ja30gLiAnUHJlZmVyZW5jZXMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgIE5hbWVGb3JtID0+ICROYW1lRm9ybSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIFBBUkFNOgogICAgICAgICAgICBmb3IgbXkgJFBhcmFtICggQHsgJEVsZW1lbnR7UHJlZmVyZW5jZXN9IH0gKSB7CgogICAgICAgICAgICAgICAgIyBzcGVjaWFsIHBhcmFtZXRlcnMgYXJlIGFkZGVkLCB3aGljaCBkbyBub3QgaGF2ZSBhIHR0IGJsb2NrLAogICAgICAgICAgICAgICAgIyBiZWNhdXNlIHRoZSBkaXNwbGF5ZWQgZmllbGRzIGFyZSBhZGRlZCB3aXRoIHRoZSBvdXRwdXQgZmlsdGVyLAogICAgICAgICAgICAgICAgIyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIGNhbGwgYW55IGJsb2NrIGhlcmUKICAgICAgICAgICAgICAgIG5leHQgUEFSQU0gaWYgISRQYXJhbS0+e0Jsb2NrfTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRFbGVtZW50e0NvbmZpZ30tPntCbG9ja30gLiAnUHJlZmVyZW5jZXNJdGVtJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUZvcm0gPT4gJE5hbWVGb3JtLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW0tPntCbG9ja30gZXEgJ09wdGlvbicgKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtLT57T3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkUGFyYW0tPntEYXRhfSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhcmFtLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbS0+e1NlbGVjdGVkSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAkUGFyYW0tPntUcmFuc2xhdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRFbGVtZW50e0NvbmZpZ30tPntCbG9ja30gLiAnUHJlZmVyZW5jZXNJdGVtJyAuICRQYXJhbS0+e0Jsb2NrfSwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXsgJEVsZW1lbnR7Q29uZmlnfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAleyRQYXJhbX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgID0+ICRTZWxmLT57U2Vzc2lvbn17ICRQYXJhbS0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVQcmVmID0+ICRQYXJhbS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZUZvcm0gPT4gJE5hbWVGb3JtLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIG1vcmUgbGluawogICAgICAgIGlmICggJEVsZW1lbnR7Q29uZmlnfS0+e0xpbmt9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEVsZW1lbnR7Q29uZmlnfS0+e0Jsb2NrfSAuICdNb3JlJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICV7ICRFbGVtZW50e0NvbmZpZ30gfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ0NvbnRhaW5lck5hbWVzJywKICAgICAgICBWYWx1ZSA9PiBcQENvbnRhaW5lck5hbWVzLAogICAgKTsKCiAgICAjIGJ1aWxkIG1haW4gbWVudQogICAgbXkgJE1haW5NZW51Q29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCRNYWluTWVudUNvbmZpZ0tleSk7CiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRNYWluTWVudUNvbmZpZykgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ01haW5NZW51JyApOwoKICAgICAgICBmb3IgbXkgJE1haW5NZW51SXRlbSAoIHNvcnQga2V5cyAleyRNYWluTWVudUNvbmZpZ30gKSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ01haW5NZW51SXRlbScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAleyAkTWFpbk1lbnVDb25maWctPnskTWFpbk1lbnVJdGVtfSB9LAogICAgICAgICAgICAgICAgICAgIEN1c3RvbWVySUQgICAgID0+ICRTZWxmLT57Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFNlbGYtPntDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFkZCB0cmFuc2xhdGlvbnMgZm9yIHRoZSBhbGxvY2F0aW9uIGxpc3RzIGZvciByZWd1bGFyIGNvbHVtbnMKICAgIGlmICggJENvbHVtbnMgJiYgSXNIYXNoUmVmV2l0aERhdGEoJENvbHVtbnMpICkgewoKICAgICAgICBDT0xVTU46CiAgICAgICAgZm9yIG15ICRDb2x1bW4gKCBzb3J0IGtleXMgJXskQ29sdW1uc30gKSB7CgogICAgICAgICAgICAjIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgdHJhbnNsYXRlZCBpbiB0aGUgbmV4dCBibG9jawogICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAkQ29sdW1uID1+IG17IFxBIER5bmFtaWNGaWVsZF8gfXhtczsKCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZCA9ICRDb2x1bW47CiAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnRXNjYWxhdGlvblRpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdTZXJ2aWNlIFRpbWUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0VzY2FsYXRpb25SZXNwb25zZVRpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdGaXJzdCBSZXNwb25zZSBUaW1lJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdFc2NhbGF0aW9uU29sdXRpb25UaW1lJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnU29sdXRpb24gVGltZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnRXNjYWxhdGlvblVwZGF0ZVRpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdVcGRhdGUgVGltZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnUGVuZGluZ1RpbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdQZW5kaW5nIHRpbGwnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1c3RvbWVyQ29tcGFueU5hbWUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXN0b21lciBOYW1lJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXN0b21lcklEJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VzdG9tZXIgSUQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1c3RvbWVyTmFtZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1c3RvbWVyIFVzZXIgTmFtZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VzdG9tZXJVc2VySUQnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXN0b21lciBVc2VyIElEJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW4nIC4gJENvbHVtbiwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVHJhbnNsYXRlZFdvcmQpLAogICAgICAgICAgICApOwoKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgdHJhbnNsYXRpb25zIGZvciB0aGUgYWxsb2NhdGlvbiBsaXN0cyBmb3IgZHluYW1pYyBmaWVsZCBjb2x1bW5zCiAgICBteSAkQ29sdW1uc0R5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydUaWNrZXQnXSwKICAgICk7CgogICAgaWYgKCAkQ29sdW1uc0R5bmFtaWNGaWVsZCAmJiBJc0FycmF5UmVmV2l0aERhdGEoJENvbHVtbnNEeW5hbWljRmllbGQpICkgewoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIHNvcnQgQHskQ29sdW1uc0R5bmFtaWNGaWVsZH0gKSB7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZDsKCiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnQ29sdW1uRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGQtPntMYWJlbH0gKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbQogICAgICAgICksCiAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwp9CgpzdWIgX0VsZW1lbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTmFtZSAgICAgICAgICAgICAgICAgID0gJFBhcmFte05hbWV9OwogICAgbXkgJENvbmZpZ3MgICAgICAgICAgICAgICA9ICRQYXJhbXtDb25maWdzfTsKICAgIG15ICRCYWNrZW5kcyAgICAgICAgICAgICAgPSAkUGFyYW17QmFja2VuZHN9OwogICAgbXkgJFNvcnRCeSAgICAgICAgICAgICAgICA9ICRQYXJhbXtTb3J0Qnl9OwogICAgbXkgJE9yZGVyQnkgICAgICAgICAgICAgICA9ICRQYXJhbXtPcmRlckJ5fTsKICAgIG15ICRDb2x1bW5GaWx0ZXIgICAgICAgICAgPSAkUGFyYW17Q29sdW1uRmlsdGVyfTsKICAgIG15ICRHZXRDb2x1bW5GaWx0ZXIgICAgICAgPSAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfTsKICAgIG15ICRHZXRDb2x1bW5GaWx0ZXJTZWxlY3QgPSAkUGFyYW17R2V0Q29sdW1uRmlsdGVyU2VsZWN0fTsKCiAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICBpZiAoICRDb25maWdzLT57JE5hbWV9LT57R3JvdXB9ICkgewogICAgICAgIG15ICRQZXJtaXNzaW9uT0sgPSAwOwogICAgICAgIG15IEBHcm91cHMgICAgICAgPSBzcGxpdCAvOy8sICRDb25maWdzLT57JE5hbWV9LT57R3JvdXB9OwogICAgICAgIEdST1VQOgogICAgICAgIGZvciBteSAkR3JvdXAgKEBHcm91cHMpIHsKICAgICAgICAgICAgbXkgJEhhc1Blcm1pc3Npb24gPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJEdyb3VwLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdybycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkSGFzUGVybWlzc2lvbikgewogICAgICAgICAgICAgICAgJFBlcm1pc3Npb25PSyA9IDE7CiAgICAgICAgICAgICAgICBsYXN0IEdST1VQOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBpZiAhJFBlcm1pc3Npb25PSzsKICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZHMKICAgIG15ICRNb2R1bGUgPSAkQ29uZmlncy0+eyROYW1lfS0+e01vZHVsZX07CgogICAgcmV0dXJuIHVubGVzcyAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCRNb2R1bGUpOwoKICAgIG15ICRPYmplY3QgPSAkTW9kdWxlLT5uZXcoCiAgICAgICAgJXskU2VsZn0sCiAgICAgICAgQ29uZmlnICAgICAgICAgICAgICAgID0+ICRDb25maWdzLT57JE5hbWV9LAogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICA9PiAkTmFtZSwKICAgICAgICBDdXN0b21lcklEICAgICAgICAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgQ3VzdG9tZXJVc2VySUQgICAgICAgID0+ICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9IHx8ICcnLAogICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgICA9PiAkU29ydEJ5LAogICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICBDb2x1bW5GaWx0ZXIgICAgICAgICAgPT4gJENvbHVtbkZpbHRlciwKICAgICAgICBHZXRDb2x1bW5GaWx0ZXIgICAgICAgPT4gJEdldENvbHVtbkZpbHRlciwKICAgICAgICBHZXRDb2x1bW5GaWx0ZXJTZWxlY3QgPT4gJEdldENvbHVtbkZpbHRlclNlbGVjdCwKICAgICk7CgogICAgIyBnZXQgbW9kdWxlIGNvbmZpZwogICAgbXkgJUNvbmZpZyA9ICRPYmplY3QtPkNvbmZpZygpOwoKICAgICMgUGVyZm9ybSB0aGUgYWN0dWFsIGRhdGEgZmV0Y2hpbmcgYW5kIGNvbXB1dGF0aW9uIG9uIHRoZSBtaXJyb3IgREIsIGlmIGNvbmZpZ3VyZWQKICAgIGxvY2FsICRLZXJuZWw6OlN5c3RlbTo6REI6OlVzZU1pcnJvckRCID0gMTsKCiAgICAjIGdldCBtb2R1bGUgcHJlZmVyZW5jZXMKICAgIG15IEBQcmVmZXJlbmNlcyA9ICRPYmplY3QtPlByZWZlcmVuY2VzKCk7CgogICAgcmV0dXJuIEBQcmVmZXJlbmNlcyBpZiAkUGFyYW17UHJlZmVyZW5jZXNPbmx5fTsKCiAgICAjIFBlcmZvcm0gdGhlIGFjdHVhbCBkYXRhIGZldGNoaW5nIGFuZCBjb21wdXRhdGlvbiBvbiB0aGUgbWlycm9yIERCLCBpZiBjb25maWd1cmVkCiAgICBsb2NhbCAkS2VybmVsOjpTeXN0ZW06OkRCOjpVc2VNaXJyb3JEQiA9IDE7CgogICAgaWYgKCAkUGFyYW17RmlsdGVyQ29udGVudE9ubHl9ICkgewogICAgICAgIG15ICRGaWx0ZXJDb250ZW50ID0gJE9iamVjdC0+RmlsdGVyQ29udGVudCgKICAgICAgICAgICAgRmlsdGVyQ29sdW1uICAgPT4gJFBhcmFte0ZpbHRlckNvbHVtbn0sCiAgICAgICAgICAgIENvbmZpZyAgICAgICAgID0+ICRDb25maWdzLT57JE5hbWV9LAogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9IHx8ICcnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRGaWx0ZXJDb250ZW50OwogICAgfQoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBhZGQgYmFja2VuZCB0byBzZXR0aW5ncyBzZWxlY3Rpb24KICAgIGlmICgkQmFja2VuZHMpIHsKICAgICAgICBteSAkQ2hlY2tlZCA9ICcnOwogICAgICAgIGlmICggJEJhY2tlbmRzLT57JE5hbWV9IHx8ICRDb25maWdzLT57JE5hbWV9LT57TWFuZGF0b3J5fSApIHsKICAgICAgICAgICAgJENoZWNrZWQgPSAnY2hlY2tlZCAnOwogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayB3aGV0aGVyIHRoZSB3aWRnZXQgaXMgZm9yY2libHkgZGlzcGxheWVkLgogICAgICAgICMgTWFuZGF0b3J5IHdpZGdldHMgYXJlIGRpc3BsYXllZCBhcyByZWFkLW9ubHkuCiAgICAgICAgbXkgJFJlYWRvbmx5ID0gJyc7CiAgICAgICAgaWYgKCAkQ29uZmlncy0+eyROYW1lfS0+e01hbmRhdG9yeX0gKSB7CiAgICAgICAgICAgICRSZWFkb25seSA9ICdkaXNhYmxlZD0iZGlzYWJsZWQiJzsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDb250ZW50U2V0dGluZ3MnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVDb25maWcsCiAgICAgICAgICAgICAgICBOYW1lICAgICA9PiAkTmFtZSwKICAgICAgICAgICAgICAgIENoZWNrZWQgID0+ICRDaGVja2VkLAogICAgICAgICAgICAgICAgUmVhZG9ubHkgPT4gJFJlYWRvbmx5LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiBpZiAhJEJhY2tlbmRzLT57JE5hbWV9OwogICAgfQoKICAgICMgY2hlY2sgYmFja2VuZHMgY2FjaGUgKGh0bWwgcGFnZSBjYWNoZSkKICAgIG15ICRDb250ZW50OwogICAgbXkgJENhY2hlS2V5ICAgID0gJENvbmZpZ3tDYWNoZUtleX07CiAgICBteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKCiAgICBpZiAoICEkQ2FjaGVLZXkgKSB7CiAgICAgICAgJENhY2hlS2V5ID0gJE5hbWUgLiAnLScKICAgICAgICAgICAgLiAoICRTZWxmLT57Q3VzdG9tZXJJRH0gICAgIHx8ICcnICkgLiAnLScKICAgICAgICAgICAgLiAoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9IHx8ICcnICkgLiAnLScKICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57VXNlckxhbmd1YWdlfTsKICAgIH0KICAgIGlmICggJENvbmZpZ3tDYWNoZVRUTH0gKSB7CiAgICAgICAgJENvbnRlbnQgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICAgICAgVHlwZSA9PiAnRGFzaGJvYXJkJywKICAgICAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGV4ZWN1dGUgYmFja2VuZHMKICAgIG15ICRDYWNoZVVzZWQgPSAxOwogICAgaWYgKCAhZGVmaW5lZCAkQ29udGVudCB8fCAkU29ydEJ5ICkgewogICAgICAgICRDYWNoZVVzZWQgPSAwOwogICAgICAgICRDb250ZW50ICAgPSAkT2JqZWN0LT5SdW4oCiAgICAgICAgICAgIEFKQVggICAgICAgICAgID0+ICRQYXJhbXtBSkFYfSwKICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgPT4gJFNlbGYtPntDdXN0b21lcklEfSAgICAgfHwgJycsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9IHx8ICcnLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBpZiBjb250ZW50IHNob3VsZCBiZSBzaG93bgogICAgcmV0dXJuIGlmICEkQ29udGVudDsKCiAgICAjIHNldCBjYWNoZSAoaHRtbCBwYWdlIGNhY2hlKQogICAgaWYgKCAhJENhY2hlVXNlZCAmJiAkQ29uZmlne0NhY2hlVFRMfSApIHsKICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0Rhc2hib2FyZCcsCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICAgICAgVmFsdWUgPT4gJENvbnRlbnQsCiAgICAgICAgICAgIFRUTCAgID0+ICRDb25maWd7Q2FjaGVUVEx9ICogNjAsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJldHVybiByZXN1bHQKICAgIHJldHVybiAoCiAgICAgICAgQ29udGVudCAgICAgPT4gXCRDb250ZW50LAogICAgICAgIENvbmZpZyAgICAgID0+IFwlQ29uZmlnLAogICAgICAgIFByZWZlcmVuY2VzID0+IFxAUHJlZmVyZW5jZXMsCiAgICApOwp9CgoxOwo=</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AdminACL.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2ZWZkYzdiZjJhMzMyNTI3N2NkNzlhNjBmMGYyNDA3ZjhhZDU5ZTg3IC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkFDTC50dAojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0Ij4KICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJBQ0wgTWFuYWdlbWVudCIpIHwgaHRtbCAlXTwvaDE+CgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCdBQ0wgTWFuYWdlbWVudCcpLAogICAgICAgICAgICB9LAogICAgICAgIF0KICAgICVdCgogICAgWyUgSU5DTFVERSAiQnJlYWRjcnVtYi50dCIgUGF0aCA9IEJyZWFkY3J1bWJQYXRoICVdCgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkZpbHRlciBieSB2YWxpZCBzdGF0ZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IkluY2x1ZGVJbnZhbGlkIiBuYW1lPSJJbmNsdWRlSW52YWxpZCIgdmFsdWU9IjEiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkluY2x1ZGUgaW52YWxpZCBBQ0xzIikgfCBodG1sICVdIiBbJSBEYXRhLkluY2x1ZGVJbnZhbGlkQ2hlY2tlZCB8IGh0bWwgJV0vPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSW5jbHVkZUludmFsaWQiPlslIFRyYW5zbGF0ZSgiSW5jbHVkZSBpbnZhbGlkIEFDTHMiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJPYmplY3RTZWxlY3Rpb24iPlslIFRyYW5zbGF0ZSgiT2JqZWN0IFR5cGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuT2JqZWN0VHlwZVNlbGVjdGlvblN0cmcgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDwvZGl2PgojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+CiAgICAgICAgICAgICAgICAgICAgPGxpPgojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BQ0xOZXciIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciBDcmVhdGUiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1wbHVzLXNxdWFyZSI+PC9pPlslIFRyYW5zbGF0ZSgiQ3JlYXRlIE5ldyBBQ0wiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QUNMTmV3O09iamVjdFR5cGU9WyUgRGF0YS5PYmplY3RUeXBlIHwgaHRtbCAlXSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyIENyZWF0ZSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXBsdXMtc3F1YXJlIj48L2k+WyUgVHJhbnNsYXRlKCJDcmVhdGUgTmV3IEFDTCIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8bGk+CiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFDTERlcGxveSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtcm9ja2V0Ij48L2k+WyUgVHJhbnNsYXRlKCJEZXBsb3kgQUNMcyIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BQ0xEZXBsb3k7T2JqZWN0VHlwZT1bJSBEYXRhLk9iamVjdFR5cGUgfCBodG1sICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1yb2NrZXQiPjwvaT5bJSBUcmFuc2xhdGUoIkRlcGxveSBBQ0xzIikgfCBodG1sICVdPC9zcGFuPjwvYT4KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT4KIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QUNMRXhwb3J0IiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1kb3dubG9hZCI+PC9pPlslIFRyYW5zbGF0ZSgiRXhwb3J0IEFDTHMiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QUNMRXhwb3J0O09iamVjdFR5cGU9WyUgRGF0YS5PYmplY3RUeXBlIHwgaHRtbCAlXSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtZG93bmxvYWQiPjwvaT5bJSBUcmFuc2xhdGUoIkV4cG9ydCBBQ0xzIikgfCBodG1sICVdPC9zcGFuPjwvYT4KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj48bGFiZWwgZm9yPSJGaWx0ZXJBQ0xzIj5bJSBUcmFuc2xhdGUoIkZpbHRlciBmb3IgQUNMcyIpIHwgaHRtbCAlXTwvbGFiZWw+PC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJGaWx0ZXJBQ0xzIiBjbGFzcz0iRmlsdGVyQm94IiBwbGFjZWhvbGRlcj0iWyUgVHJhbnNsYXRlKCJKdXN0IHN0YXJ0IHR5cGluZyB0byBmaWx0ZXIuLi4iKSB8IGh0bWwgJV0iIG5hbWU9IkZpbHRlckFDTHMiIHZhbHVlPSIiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZpbHRlciBmb3IgQUNMcyIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQ29uZmlndXJhdGlvbiBJbXBvcnQiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJIZXJlIHlvdSBjYW4gdXBsb2FkIGEgY29uZmlndXJhdGlvbiBmaWxlIHRvIGltcG9ydCBBQ0xzIHRvIHlvdXIgc3lzdGVtLiBUaGUgZmlsZSBuZWVkcyB0byBiZSBpbiAueW1sIGZvcm1hdCBhcyBleHBvcnRlZCBieSB0aGUgQUNMIGVkaXRvciBtb2R1bGUuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkFDTEltcG9ydCIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRm9ybUlEIiB2YWx1ZT0iWyUgRGF0YS5Gb3JtSUQgfCBodG1sICVdIi8+CiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iT2JqZWN0VHlwZSIgdmFsdWU9IlslIERhdGEuT2JqZWN0VHlwZSB8IGh0bWwgJV0iLz4KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJGaWxlVXBsb2FkIiBpZD0iRmlsZVVwbG9hZCIgdHlwZT0iZmlsZSIgc2l6ZT0iMTgiIGNsYXNzPSJGaXhlZCBXMTAwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5GaWxlVXBsb2FkSW52YWxpZCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkZpbGVVcGxvYWRFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJGaWxlVXBsb2FkU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJTZXBhcmF0ZWQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9Ik92ZXJ3cml0ZUV4aXN0aW5nRW50aXRpZXMiIG5hbWU9Ik92ZXJ3cml0ZUV4aXN0aW5nRW50aXRpZXMiIHZhbHVlPSIxIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik92ZXJ3cml0ZUV4aXN0aW5nRW50aXRpZXMiPlslIFRyYW5zbGF0ZSgiT3ZlcndyaXRlIGV4aXN0aW5nIEFDTHM/IikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJVcGxvYWQgQUNMIGNvbmZpZ3VyYXRpb24iKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxpIGNsYXNzPSJmYSBmYS11cGxvYWQiPjwvaT5bJSBUcmFuc2xhdGUoIkltcG9ydCBBQ0wgY29uZmlndXJhdGlvbihzKSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRGVzY3JpcHRpb24iKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUbyBjcmVhdGUgYSBuZXcgQUNMIHlvdSBjYW4gZWl0aGVyIGltcG9ydCBBQ0xzIHdoaWNoIHdlcmUgZXhwb3J0ZWQgZnJvbSBhbm90aGVyIHN5c3RlbSBvciBjcmVhdGUgYSBjb21wbGV0ZSBuZXcgb25lLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ2hhbmdlcyB0byB0aGUgQUNMcyBoZXJlIG9ubHkgYWZmZWN0IHRoZSBiZWhhdmlvciBvZiB0aGUgc3lzdGVtLCBpZiB5b3UgZGVwbG95IHRoZSBBQ0wgZGF0YSBhZnRlcndhcmRzLiBCeSBkZXBsb3lpbmcgdGhlIEFDTCBkYXRhLCB0aGUgbmV3bHkgbWFkZSBjaGFuZ2VzIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgY29uZmlndXJhdGlvbi4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRvIGRlbGV0ZSBhbiBleGlzdGluZyBBQ0wgeW91IGhhdmUgdG8gc2V0IHRoZSB2YWxpZGl0eSB0byBpbnZhbGlkIGFuZCBzYXZlIGl0LiBBZnRlcndhcmRzIGEgbmV3IGJ1dHRvbiB0byBkZWxldGUgdGhlIEFDTCB3aWxsIGFwcGVhci4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQUNMcyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJBQ0xOb3RlIj5bJSBUcmFuc2xhdGUoIlBsZWFzZSBub3RlOiBUaGlzIHRhYmxlIHJlcHJlc2VudHMgdGhlIGV4ZWN1dGlvbiBvcmRlciBvZiB0aGUgQUNMcy4gSWYgeW91IG5lZWQgdG8gY2hhbmdlIHRoZSBvcmRlciBpbiB3aGljaCBBQ0xzIGFyZSBleGVjdXRlZCwgcGxlYXNlIGNoYW5nZSB0aGUgbmFtZXMgb2YgdGhlIGFmZmVjdGVkIEFDTHMuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiIGlkPSJBQ0xzIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkFDTCBuYW1lIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNvbW1lbnQiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDZW50ZXIgVzEwcGMiPlslIFRyYW5zbGF0ZSgiRXhwb3J0IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2VudGVyIFcxMHBjIj5bJSBUcmFuc2xhdGUoIkNvcHkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBQ0xSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHIgWyUgSUYgRGF0YS5WYWxpZElEICE9ICJ2YWxpZCIlXWNsYXNzPSJJbnZhbGlkIlslIEVORCAlXT4KIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFDTEVkaXQ7SUQ9WyUgRGF0YS5JRCB8IHVyaSAlXSI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QUNMRWRpdDtJRD1bJSBEYXRhLklEIHwgdXJpICVdO09iamVjdFR5cGU9WyUgRGF0YS5PYmplY3RUeXBlIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9hPjwvdGQ+CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5Db21tZW50IHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgVHJhbnNsYXRlKERhdGEuVmFsaWRJRCkgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj48YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QUNMRXhwb3J0O0lEPVslIERhdGEuSUQgfCB1cmkgJV07WyUgRW52KCJDaGFsbGVuZ2VUb2tlblBhcmFtIikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtZG93bmxvYWQiPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJFeHBvcnQiKSB8IGh0bWwgJV08L3NwYW4+PC9hPjwvdGQ+CiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+PGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFDTENvcHk7SUQ9WyUgRGF0YS5JRCB8IHVyaSAlXTtbJSBFbnYoIkNoYWxsZW5nZVRva2VuUGFyYW0iKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jb3B5Ij48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiQ29weSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj48YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QUNMQ29weTtJRD1bJSBEYXRhLklEIHwgdXJpICVdO09iamVjdFR5cGU9WyUgRGF0YS5PYmplY3RUeXBlIHwgdXJpICVdO1slIEVudigiQ2hhbGxlbmdlVG9rZW5QYXJhbSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNvcHkiPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJDb3B5IikgfCBodG1sICVdPC9zcGFuPjwvYT48L3RkPgojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiQUNMUm93IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQUNMTm9EYXRhUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJBQ0xOb0RhdGFSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9IkZpbHRlck1lc3NhZ2UgSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSI1Ij5bJSBUcmFuc2xhdGUoIk5vIG1hdGNoZXMgZm91bmQuIikgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AdminACLEdit.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2YjM4ODhiNTUwNTQ5NGM1ZmNjZWY4ODdkYzI2Mjc3NzU4MjdhMmFkIC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkFDTEVkaXQudHQKIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCI+CiAgICA8aDEgY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRWRpdCBBQ0wgJXMiLCBEYXRhLk5hbWUpIHwgaHRtbCAlXTwvaDE+CgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCdBQ0wgTWFuYWdlbWVudCcpLAogICAgICAgICAgICAgICAgTGluayA9PiBFbnYoIkFjdGlvbiIpLAogICAgICAgICAgICB9LAogICAgICAgIF0KICAgICVdCgogICAgWyUgVVNFIEVkaXRUaXRsZSA9IFN0cmluZyhUcmFuc2xhdGUoIkVkaXQgQUNMIikpICVdCiAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsgTmFtZSA9PiBFZGl0VGl0bGUuYXBwZW5kKCAnOiAnLCBEYXRhLk5hbWUgKSB9KSAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBDZW50ZXIgRnVsbHNpemUgQmFjayI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIkdvIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07T2JqZWN0VHlwZT1bJSBEYXRhLk9iamVjdFR5cGUgfCB1cmkgJV0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIENlbnRlciBGdWxsc2l6ZSBCYWNrIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtbGVmdCI+PC9pPlslIFRyYW5zbGF0ZSgiR28gdG8gb3ZlcnZpZXciKSB8IGh0bWwgJV08L3NwYW4+PC9hPgojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrU3RhcnQoIkFDTERlbGV0ZUFjdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBpZD0iQUNMRGVsZXRlIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBUcmFzaCBDZW50ZXIgRnVsbHNpemUiIGRhdGEtZGlhbG9nLWVsZW1lbnQ9IkRlbGV0ZUFDTENvbmZpcm1hdGlvbkRpYWxvZyIgZGF0YS1kaWFsb2ctdGl0bGU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIEFDTCIpIHwgaHRtbCAlXSIgZGF0YS1pZD0iWyUgRGF0YS5JRCB8IGh0bWwgJV0iPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+WyUgVHJhbnNsYXRlKCJEZWxldGUgSW52YWxpZCBBQ0wiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBQ0xEZWxldGVBY3Rpb24iKSAlXQogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPlslIFRyYW5zbGF0ZSgiTWF0Y2ggc2V0dGluZ3MiKSB8IGh0bWwgJV08L3N0cm9uZz46IFslIFRyYW5zbGF0ZSgiU2V0IHVwIG1hdGNoaW5nIGNyaXRlcmlhIGZvciB0aGlzIEFDTC4gVXNlICdQcm9wZXJ0aWVzJyB0byBtYXRjaCB0aGUgY3VycmVudCBzY3JlZW4gb3IgJ1Byb3BlcnRpZXNEYXRhYmFzZScgdG8gbWF0Y2ggYXR0cmlidXRlcyBvZiB0aGUgY3VycmVudCB0aWNrZXQgdGhhdCBhcmUgaW4gdGhlIGRhdGFiYXNlLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+WyUgVHJhbnNsYXRlKCJDaGFuZ2Ugc2V0dGluZ3MiKSB8IGh0bWwgJV08L3N0cm9uZz46IFslIFRyYW5zbGF0ZSgiU2V0IHVwIHdoYXQgeW91IHdhbnQgdG8gY2hhbmdlIGlmIHRoZSBjcml0ZXJpYSBtYXRjaC4gS2VlcCBpbiBtaW5kIHRoYXQgJ1Bvc3NpYmxlJyBpcyBhbiBleGNsdXNpdmUgd2hpdGUgbGlzdCwgJ1Bvc3NpYmxlQWRkJyBhIHdoaXRlIGxpc3QsICdQb3NzaWJsZU5vdCcgYSBibGFjayBsaXN0LiAnUG9zc2libGUnIGFsc28gaGlkZXMgdGhlIGVtcHR5IHZhbHVlLCB3aGljaCB5b3UgY291bGQgYWRkIGFnYWluIHdpdGggJ1tlbXB0eV0nLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ2hlY2sgdGhlIG9mZmljaWFsICVzZG9jdW1lbnRhdGlvbiVzLiIpIHwgaHRtbCB8IFJlcGxhY2VQbGFjZWhvbGRlcnMoJzxhIGhyZWY9Imh0dHBzOi8vZG9jLm90b2JvLm9yZy9tYW51YWwvYWRtaW4vMTEuMC9lbi9jb250ZW50L2FkbWluaXN0cmF0aW9uLWFyZWEvcHJvY2Vzc2VzLWF1dG9tYXRpb24vYWNjZXNzLWNvbnRyb2wtbGlzdHMuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPicsICc8L2E+JykgICVdCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGlkPSJBQ0xGb3JtIiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBFeHBhbmRlZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkVkaXQgQUNMIEluZm9ybWF0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkFDTEVkaXRBY3Rpb24iLz4KIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iT2JqZWN0VHlwZSIgdmFsdWU9IlslIERhdGEuT2JqZWN0VHlwZSB8IGh0bWwgJV0iLz4KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb250aW51ZUFmdGVyU2F2ZSIgaWQ9IkNvbnRpbnVlQWZ0ZXJTYXZlIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iSUQiIHZhbHVlPSJbJSBEYXRhLklEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNvbmZpZ01hdGNoIiB2YWx1ZT0iWyUgRGF0YS5Db25maWdNYXRjaCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb25maWdDaGFuZ2UiIHZhbHVlPSJbJSBEYXRhLkNvbmZpZ0NoYW5nZSB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5hbWUiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgaWQ9Ik5hbWUiIHZhbHVlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5OYW1lU2VydmVyRXJyb3IgfCBodG1sICVdIiBtYXhsZW5ndGg9IjcwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJDb21tZW50Ij5bJSBUcmFuc2xhdGUoIkNvbW1lbnQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IkNvbW1lbnQiIGlkPSJDb21tZW50IiB2YWx1ZT0iWyUgRGF0YS5Db21tZW50IHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIFslIERhdGEuQ29tbWVudFNlcnZlckVycm9yIHwgaHRtbCAlXSIgbWF4bGVuZ3RoPSI3MCIvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRGVzY3JpcHRpb24iPlslIFRyYW5zbGF0ZSgiRGVzY3JpcHRpb24iKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG5hbWU9IkRlc2NyaXB0aW9uIiBpZD0iRGVzY3JpcHRpb24iIGNsYXNzPSJXNTBwYyBbJSBEYXRhLkRlc2NyaXB0aW9uU2VydmVyRXJyb3IgfCBodG1sICVdIiByb3dzPSI1IiBtYXhsZW5ndGg9IjIwMCI+WyUgRGF0YS5EZXNjcmlwdGlvbiB8IGh0bWwgJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU3RvcEFmdGVyTWF0Y2giPlslIFRyYW5zbGF0ZSgiU3RvcCBhZnRlciBtYXRjaCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IlN0b3BBZnRlck1hdGNoIiBpZD0iU3RvcEFmdGVyTWF0Y2giIHZhbHVlPSIxIiBbJSBEYXRhLkNoZWNrZWQgJV0gLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlZhbGlkSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiVmFsaWRpdHkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWxpZE9wdGlvbiAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVmFsaWRJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVmFsaWRJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIEV4cGFuZGVkIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2hvdyBvciBoaWRlIHRoZSBjb250ZW50IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJFZGl0IEFDTCBTdHJ1Y3R1cmUiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBBQ0xTdHJ1Y3R1cmUiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBQ0xGaWVsZHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlslIFRyYW5zbGF0ZSgiTWF0Y2ggc2V0dGluZ3MiKSB8IGh0bWwgJV08L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBQ0xGaWVsZEdyb3VwIiBpZD0iQUNMTWF0Y2giPjwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFDTEtleXNMZXZlbDFNYXRjaCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEFDTFN0cnVjdHVyZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFDTEZpZWxkcyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+WyUgVHJhbnNsYXRlKCJDaGFuZ2Ugc2V0dGluZ3MiKSB8IGh0bWwgJV08L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBQ0xGaWVsZEdyb3VwIiBpZD0iQUNMQ2hhbmdlIj48L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BQ0xLZXlzTGV2ZWwxQ2hhbmdlICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iSGlkZGVuIiBpZD0iVGVtcGxhdGVMZXZlbDEiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkRhdGFJdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJUcmlnZ2VyIENvbGxhcHNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ikljb24gUmVtb3ZlQnV0dG9uIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPjwvc3Ryb25nPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iRXZlbiBMYXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ikljb24gQWRkQnV0dG9uIj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUtbyI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkhpZGRlbiIgaWQ9IlRlbXBsYXRlTGV2ZWwyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJEYXRhSXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iVHJpZ2dlciBDb2xsYXBzZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJY29uIFJlbW92ZUJ1dHRvbiI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz48L3N0cm9uZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJY29uIEFkZEJ1dHRvbiBOb01hcmdpbiI+PGkgY2xhc3M9ImZhIGZhLXBsdXMtc3F1YXJlLW8iPjwvaT48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iTmV3RGF0YUtleSIgZGF0YS1sZXZlbD0iMyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkhpZGRlbiIgaWQ9IlRlbXBsYXRlTGV2ZWwyTGFzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iRGF0YUl0ZW0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlRyaWdnZXIgQ29sbGFwc2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSWNvbiBSZW1vdmVCdXR0b24iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+PC9zdHJvbmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Ikxhc3RMZXZlbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFDTEtleXNMZXZlbDRQcmVmaXhlcyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSWNvbiBBZGRCdXR0b24gQWRkRGF0YUl0ZW0iPjxpIGNsYXNzPSJmYSBmYS1wbHVzLXNxdWFyZS1vIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iSGlkZGVuIiBpZD0iVGVtcGxhdGVMZXZlbDMiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkRhdGFJdGVtIEVkaXRhYmxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJY29uIFJlbW92ZUJ1dHRvbiI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BQ0xLZXlzTGV2ZWw0UHJlZml4ZXMgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ikljb24gQWRkQnV0dG9uIEFkZERhdGFJdGVtIj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUtbyI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkhpZGRlbiIgaWQ9IlRlbXBsYXRlTGV2ZWw0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJEYXRhSXRlbSBFZGl0YWJsZSI+PGVtPng8L2VtPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BQ0xLZXlzTGV2ZWwyUG9zc2libGUgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFDTEtleXNMZXZlbDJQb3NzaWJsZUFkZCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQUNMS2V5c0xldmVsMlBvc3NpYmxlTm90ICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BQ0xLZXlzTGV2ZWwyUHJvcGVydGllcyAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQUNMS2V5c0xldmVsMlByb3BlcnRpZXNEYXRhYmFzZSAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQUNMS2V5c0xldmVsM0R5bmFtaWNGaWVsZHMgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFDTEtleXNMZXZlbDNBY3Rpb25zICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgRXhwYW5kZWQiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTYXZlIEFDTCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgU3BhY2luZ1RvcCBTYXZlQnV0dG9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIGlkPSJTdWJtaXRBbmRDb250aW51ZSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIGFuZCBmaW5pc2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJDYW5jZWwiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0iRGlhbG9ncyIgY2xhc3M9IkhpZGRlbiI+CiAgICA8ZGl2IGlkPSJEZWxldGVBQ0xDb25maXJtYXRpb25EaWFsb2ciPgogICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEFDTD8iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgPHAgY2xhc3M9IlNwYWNpbmdUb3AiPjxzdHJvbmc+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvc3Ryb25nPjwvcD4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AdminACLNew.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBmZjllMjk3YmFmMjg3ZTE2MDcxZDNhYzZhZDdmNmMxM2YxMWFjN2ZhIC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkFDTE5ldy50dAojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0Ij4KICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJDcmVhdGUgTmV3IEFDTCIpIHwgaHRtbCAlXTwvaDE+CgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCdBQ0wgTWFuYWdlbWVudCcpLAogICAgICAgICAgICAgICAgTGluayA9PiBFbnYoIkFjdGlvbiIpLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0ZSgiQ3JlYXRlIE5ldyBBQ0wiKSwKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIgQmFjayI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIkdvIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07T2JqZWN0VHlwZT1bJSBEYXRhLk9iamVjdFR5cGUgfCBodG1sICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIgQmFjayI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIkdvIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkNyZWF0ZSBhIG5ldyBBQ0wgYnkgc3VibWl0dGluZyB0aGUgZm9ybSBkYXRhLiBBZnRlciBjcmVhdGluZyB0aGUgQUNMLCB5b3Ugd2lsbCBiZSBhYmxlIHRvIGFkZCBjb25maWd1cmF0aW9uIGl0ZW1zIGluIGVkaXQgbW9kZS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQ3JlYXRlIE5ldyBBQ0wiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJBQ0xOZXdBY3Rpb24iLz4KIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJPYmplY3RUeXBlIiB2YWx1ZT0iWyUgRGF0YS5PYmplY3RUeXBlIHwgaHRtbCAlXSIvPgojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTmFtZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLk5hbWVTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIG1heGxlbmd0aD0iNzAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNvbW1lbnQiPlslIFRyYW5zbGF0ZSgiQ29tbWVudCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iQ29tbWVudCIgaWQ9IkNvbW1lbnQiIHZhbHVlPSJbJSBEYXRhLkNvbW1lbnQgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMgWyUgRGF0YS5Db21tZW50U2VydmVyRXJyb3IgfCBodG1sICVdIiBtYXhsZW5ndGg9IjcwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZXNjcmlwdGlvbiI+WyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbmFtZT0iRGVzY3JpcHRpb24iIGlkPSJEZXNjcmlwdGlvbiIgY2xhc3M9Ilc1MHBjIFslIERhdGEuRGVzY3JpcHRpb25TZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHJvd3M9IjUiIG1heGxlbmd0aD0iMjAwIj5bJSBEYXRhLkRlc2NyaXB0aW9uIHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTdG9wQWZ0ZXJNYXRjaCI+WyUgVHJhbnNsYXRlKCJTdG9wIGFmdGVyIG1hdGNoIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iU3RvcEFmdGVyTWF0Y2giIGlkPSJTdG9wQWZ0ZXJNYXRjaCIgdmFsdWU9IjEiIFslIERhdGEuQ2hlY2tlZCAlXSAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iVmFsaWRJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbGlkT3B0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJWYWxpZElERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJWYWxpZElEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJDYW5jZWwiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AdminDynamicField.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2ZWZkYzdiZjJhMzMyNTI3N2NkNzlhNjBmMGYyNDA3ZjhhZDU5ZTg3IC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZC50dAojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNYWluIikgJV0KPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCI+CiAgICA8aDEgY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRHluYW1pYyBGaWVsZHMgTWFuYWdlbWVudCIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZShEYXRhLkFjdGlvbikgfCBodG1sICVdPC9oMT4KCiAgICBbJSBCcmVhZGNydW1iUGF0aCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGUoJ0R5bmFtaWMgRmllbGRzIE1hbmFnZW1lbnQnKSwKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkZpbHRlciBieSB2YWxpZCBzdGF0ZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IkluY2x1ZGVJbnZhbGlkIiBuYW1lPSJJbmNsdWRlSW52YWxpZCIgdmFsdWU9IjEiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkluY2x1ZGUgaW52YWxpZCBkeW5hbWljIGZpZWxkcyIpIHwgaHRtbCAlXSIgWyUgRGF0YS5JbmNsdWRlSW52YWxpZENoZWNrZWQgfCBodG1sICVdLz4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkluY2x1ZGVJbnZhbGlkIj5bJSBUcmFuc2xhdGUoIkluY2x1ZGUgaW52YWxpZCBkeW5hbWljIGZpZWxkcyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+PGxhYmVsIGZvcj0iRmlsdGVyRHluYW1pY0ZpZWxkcyI+WyUgVHJhbnNsYXRlKCJGaWx0ZXIgZm9yIER5bmFtaWMgRmllbGRzIikgfCBodG1sICVdPC9sYWJlbD48L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IkZpbHRlckR5bmFtaWNGaWVsZHMiIGNsYXNzPSJGaWx0ZXJCb3giIHBsYWNlaG9sZGVyPSJbJSBUcmFuc2xhdGUoIkp1c3Qgc3RhcnQgdHlwaW5nIHRvIGZpbHRlci4uLiIpIHwgaHRtbCAlXSIgbmFtZT0iRmlsdGVyRHluYW1pY0ZpZWxkcyIgdmFsdWU9IiIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRmlsdGVyIGZvciBkeW5hbWljIGZpZWxkcyIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGRPYmplY3RUeXBlIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkR5bmFtaWNGaWVsZE9iamVjdFN0cmcgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiRmlsdGVyIGZpZWxkIGJ5IG9iamVjdCB0eXBlIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkT2JqZWN0VHlwZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZE5hbWVzcGFjZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5EeW5hbWljRmllbGROYW1lc3BhY2VTdHJnICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIkZpbHRlciBmaWVsZCBieSBuYW1lc3BhY2UiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGROYW1lc3BhY2UiKSAlXQogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkFjdGlvbkFkZER5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8aDQ+PGxhYmVsIGZvcj0iWyUgRGF0YS5TZWxlY3ROYW1lIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCBEYXRhLk9iamVjdFR5cGVOYW1lICkgfCBodG1sICVdPC9sYWJlbD48L2g0PgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFkZER5bmFtaWNGaWVsZFN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIkFkZCBuZXcgZmllbGQgZm9yIG9iamVjdCIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuT2JqZWN0VHlwZSkgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2xpPgojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKWyUgUmVuZGVyQmxvY2tTdGFydCgiQWN0aW9uRHluYW1pY0ZpZWxkRXh0cmEiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIERhdGEuQWN0aW9uIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5TdWJhY3Rpb24gfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciIgdHlwZT0ic3VibWl0IiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGV4dCkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtcm9ja2V0Ij48L2k+WyUgVHJhbnNsYXRlKERhdGEuVGV4dCkgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKERhdGEuRGVzY3JpcHRpb24pIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uRHluYW1pY0ZpZWxkRXh0cmEiKSAlXQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudApbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uQWRkRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSGludCIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkhpbnQiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUbyBhZGQgYSBuZXcgZmllbGQsIHNlbGVjdCB0aGUgZmllbGQgdHlwZSBmcm9tIG9uZSBvZiB0aGUgb2JqZWN0J3MgbGlzdCwgdGhlIG9iamVjdCBkZWZpbmVzIHRoZSBib3VuZGFyeSBvZiB0aGUgZmllbGQgYW5kIGl0IGNhbid0IGJlIGNoYW5nZWQgYWZ0ZXIgdGhlIGZpZWxkIGNyZWF0aW9uLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiMgVE9ETzogQWRkIHRoZSBhY3R1YWxseSBuZXcgZmllbGRzCiMgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiMgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgojICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIk5ldyBEeW5hbWljIEZpZWxkcyIpIHwgaHRtbCAlXTwvaDI+CiMgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgojICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgojICAgICAgICAgICAgICAgICAgICA8cD4KIyAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiV291bGQgeW91IGxpa2UgdG8gYmVuZWZpdCBmcm9tIGFkZGl0aW9uYWwgZHluYW1pYyBmaWVsZCB0eXBlcz8gWW91IGhhdmUgZnVsbCBhY2Nlc3MgdG8gdGhlIGZvbGxvd2luZyBmaWVsZCB0eXBlczoiKSB8IGh0bWwgJV0KIyAgICAgICAgICAgICAgICAgICAgPC9wPgojICAgICAgICAgICAgICAgICAgICA8ZGw+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+WyUgVHJhbnNsYXRlKCdEYXRhYmFzZScpIHwgaHRtbCAlXTwvZHQ+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+WyUgVHJhbnNsYXRlKCdVc2UgZXh0ZXJuYWwgZGF0YWJhc2VzIGFzIGNvbmZpZ3VyYWJsZSBkYXRhIHNvdXJjZXMgZm9yIHRoaXMgZHluYW1pYyBmaWVsZC4nKSB8IGh0bWwgJV08L2RkPgojCiMgICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+WyUgVHJhbnNsYXRlKCdXZWIgc2VydmljZScpIHwgaHRtbCAlXTwvZHQ+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+WyUgVHJhbnNsYXRlKCdFeHRlcm5hbCB3ZWIgc2VydmljZXMgY2FuIGJlIGNvbmZpZ3VyZWQgYXMgZGF0YSBzb3VyY2VzIGZvciB0aGlzIGR5bmFtaWMgZmllbGQuJykgfCBodG1sICVdPC9kZD4KIwojICAgICAgICAgICAgICAgICAgICAgICAgPGR0PlslIFRyYW5zbGF0ZSgnQ29udGFjdCB3aXRoIGRhdGEnKSB8IGh0bWwgJV08L2R0PgojICAgICAgICAgICAgICAgICAgICAgICAgPGRkPlslIFRyYW5zbGF0ZSgnVGhpcyBmZWF0dXJlIGFsbG93cyB0byBhZGQgKG11bHRpcGxlKSBjb250YWN0cyB3aXRoIGRhdGEgdG8gdGlja2V0cy4nKSB8IGh0bWwgJV08L2RkPgojICAgICAgICAgICAgICAgICAgICA8L2RsPgojICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSGludCIpICVdCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJEeW5hbWljIEZpZWxkcyBMaXN0IikgfCBodG1sICVdPC9oMj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRleHRTZXR0aW5ncyIpICVdCiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkNvbnRleHRGdW5jdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQ29udGV4dFNldHRpbmdzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9IlNob3dDb250ZXh0U2V0dGluZ3NEaWFsb2ciIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNldHRpbmdzIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jb2ciPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2V0dGluZ3MiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDb250ZXh0U2V0dGluZ3NEaWFsb2dDb250YWluZXIiIGNsYXNzPSJIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBpZD0iQ29udGV4dFNldHRpbmdzRGlhbG9nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iQWdlbnRQcmVmZXJlbmNlcyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJVcGRhdGUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iR3JvdXAiIHZhbHVlPSJbJSBEYXRhLkdyb3VwIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJSZWRpcmVjdFVSTCIgdmFsdWU9IlslIERhdGEuUmVxdWVzdGVkVVJMIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJbJSBEYXRhLlByZWZlcmVuY2VzS2V5IHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJEeW5hbWljIGZpZWxkcyBwZXIgcGFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUGFnZVNob3duU3RyaW5nICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRleHRTZXR0aW5ncyIpICVdCgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRHluYW1pY0ZpZWxkc1BhZ2luYXRpb24iPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlBhZ2luYXRpb24iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VOYXZCYXIiKSAlXQogICAgICAgICAgICAgICAgICAgIFslIERhdGEuUmVzdWx0TG9uZyAlXQogICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2l0ZU5hdkJhckxvbmcgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciIpICVdCiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJEeW5hbWljRmllbGRzQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSIgaWQ9IkR5bmFtaWNGaWVsZHNUYWJsZSIgc3VtbWFyeT0iTGlzdCBvZiBhbGwgcmVnaXN0ZXJlZCBEeW5hbWljIEZpZWxkcyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkxhYmVsIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIk9yZGVyIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIlR5cGUiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiT2JqZWN0IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIlZhbGlkaXR5IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNvcHkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkc1JvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iTWFzdGVyQWN0aW9uWyUgSUYgRGF0YS5WYWxpZElEICE9IDElXSBJbnZhbGlkWyUgRU5EICVdIiBpZD0iRHluYW1pY0ZpZWxkSURfWyUgRGF0YS5JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBEYXRhLkNvbmZpZ0RpYWxvZyB8IHVyaSAlXTtTdWJhY3Rpb249Q2hhbmdlO09iamVjdFR5cGU9WyUgRGF0YS5PYmplY3RUeXBlIHwgdXJpICVdO0ZpZWxkVHlwZT1bJSBEYXRhLkZpZWxkVHlwZSB8IHVyaSAlXTtJRD1bJSBEYXRhLklEIHwgdXJpICVdWyUgRGF0YS5GaWx0ZXJTdHJnICVdIiB0aXRsZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuTmFtZSAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5GaWVsZE9yZGVyICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgVHJhbnNsYXRlKERhdGEuRmllbGRUeXBlTmFtZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgVHJhbnNsYXRlKERhdGEuT2JqZWN0VHlwZU5hbWUpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlslIFRyYW5zbGF0ZShEYXRhLlZhbGlkKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNsb25lTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkR5bmFtaWNGaWVsZENsb25lIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRGF0YS5Db25maWdEaWFsb2cgJV07U3ViYWN0aW9uPUFkZDtDbG9uZUZpZWxkSUQ9WyUgRGF0YS5JRCB8IHVyaSAlXVslIERhdGEuRmlsdGVyU3RyZyAlXTtGaWVsZFR5cGU9WyUgRGF0YS5GaWVsZFR5cGUgfCB1cmkgJV07T2JqZWN0VHlwZT1bJSBEYXRhLk9iamVjdFR5cGVOYW1lIHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDb3B5IHRoaXMgZmllbGQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY29weSI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIkNsb25lTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZWxldGVMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iVHJhc2hDYW4gRHluYW1pY0ZpZWxkRGVsZXRlIiBocmVmPSIjIiBkYXRhLXF1ZXJ5LXN0cmluZz0iQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkO1N1YmFjdGlvbj1EeW5hbWljRmllbGREZWxldGU7SUQ9WyUgRGF0YS5JRCB8IHVyaSAlXVslIERhdGEuRmlsdGVyU3RyZyAlXTtbJSBFbnYoIkNoYWxsZW5nZVRva2VuUGFyYW0iKSB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRlbGV0ZSB0aGlzIGZpZWxkIikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSB0aGlzIGZpZWxkIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiRGVsZXRlTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkc1JvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iRmlsdGVyTWVzc2FnZSBIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjciPlslIFRyYW5zbGF0ZSgiTm8gbWF0Y2hlcyBmb3VuZC4iKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTWF4RmllbGRPcmRlciIpICVdCiAgICAgICAgPGlucHV0IGlkPSJNYXhGaWVsZE9yZGVyIiB0eXBlPSJoaWRkZW4iIG5hbWU9Ik1heEZpZWxkT3JkZXIiIHZhbHVlPSJbJSBEYXRhLk1heEZpZWxkT3JkZXIgfCBodG1sICVdIi8+ClslIFJlbmRlckJsb2NrRW5kKCJNYXhGaWVsZE9yZGVyIikgJV0KCiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTWFpbiIpICVdCg==</File>
        <File Location="Custom/Kernel/Output/HTML/Templates/Standard/AdminDynamicFieldScreen.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxMi0yMDIwIFpudW55IEdtYkgsIGh0dHA6Ly96bnVueS5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBkY2ZiMDhjNDQ0MTQzM2Y5OTkyY2QwYTBjNmNhNmUyNDBhYTU2YTQ2IC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZFNjcmVlbi50dAojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3IikgJV0KPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCI+CiAgICA8aDEgY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiTWFuYWdlbWVudCBvZiBEeW5hbWljIEZpZWxkcyA8LT4gU2NyZWVucyIpIHwgaHRtbCAlXTwvaDE+CgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCdNYW5hZ2VtZW50IG9mIER5bmFtaWMgRmllbGRzIDwtPiBTY3JlZW5zJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgXQogICAgJV0KCiAgICBbJSBJTkNMVURFICJCcmVhZGNydW1iLnR0IiBQYXRoID0gQnJlYWRjcnVtYlBhdGggJV0KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkT2JqZWN0VHlwZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5EeW5hbWljRmllbGRPYmplY3RUeXBlU3RyZyAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJGaWx0ZXIgYnkgb2JqZWN0IHR5cGUiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGRPYmplY3RUeXBlIikgJV0KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIk92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1wbHVzLXNxdWFyZSI+PC9pPlslIFRyYW5zbGF0ZSgiRHluYW1pYyBGaWVsZHMiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIk92ZXJ2aWV3IikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQgTGF5b3V0R3JpZCBDb2x1bW5zV2l0aFNwYWNpbmciPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNpemUxb2YzIj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSIgaWQ9IkR5bmFtaWNGaWVsZFNjcmVlbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkhlYWRlciI+WyUgVHJhbnNsYXRlKCJEeW5hbWljIEZpZWxkcyBTY3JlZW5zIikgfCBodG1sICVdPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJGaWx0ZXJNZXNzYWdlIEhpZGRlbiI+WyUgVHJhbnNsYXRlKCJObyBtYXRjaGVzIGZvdW5kLiIpIHwgaHRtbCAlXTwvbGk+ClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZFNjcmVlbk92ZXJ2aWV3Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2siIGlkPSJbJSBEYXRhLk5hbWUgfCB1cmkgJV0iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1FZGl0O1R5cGU9RHluYW1pY0ZpZWxkU2NyZWVuO0VsZW1lbnQ9WyUgRGF0YS5EeW5hbWljRmllbGRTY3JlZW4gfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJEeW5hbWljRmllbGRTY3JlZW5PdmVydmlld1JvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU2l6ZTFvZjMiPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFibGVsaWtlIiBpZD0iRGVmYXVsdENvbHVtbnNTY3JlZW5zIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJIZWFkZXIiPlslIFRyYW5zbGF0ZSgiRGVmYXVsdCBDb2x1bW5zIFNjcmVlbnMiKSB8IGh0bWwgJV08L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkZpbHRlck1lc3NhZ2UgSGlkZGVuIj5bJSBUcmFuc2xhdGUoIk5vIG1hdGNoZXMgZm91bmQuIikgfCBodG1sICVdPC9saT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRGVmYXVsdENvbHVtbnNTY3JlZW5PdmVydmlld1JvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBpZD0iWyUgRGF0YS5OYW1lIHwgdXJpICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249RWRpdDtUeXBlPURlZmF1bHRDb2x1bW5zU2NyZWVuO0VsZW1lbnQ9WyUgRGF0YS5EZWZhdWx0Q29sdW1uc1NjcmVlbiB8IHVyaSAlXSI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkRlZmF1bHRDb2x1bW5zU2NyZWVuT3ZlcnZpZXdSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNpemUxb2YzIj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSIgaWQ9IkR5bmFtaWNGaWVsZHMiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkhlYWRlciI+WyUgVHJhbnNsYXRlKCJEeW5hbWljIEZpZWxkcyIpIHwgaHRtbCAlXTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iRmlsdGVyTWVzc2FnZSBIaWRkZW4iPlslIFRyYW5zbGF0ZSgiTm8gbWF0Y2hlcyBmb3VuZC4iKSB8IGh0bWwgJV08L2xpPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOb0RhdGFGb3VuZE1zZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0gPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkIiA+WyUgVHJhbnNsYXRlKCJBZGQgRHluYW1pYyBGaWVsZCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRHluYW1pY0ZpZWxkT3ZlcnZpZXdSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayIgaWQ9IlslIERhdGEuTmFtZSB8IHVyaSAlXSIgdGl0bGU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0gKFslIERhdGEuRHluYW1pY0ZpZWxkIHwgaHRtbCAlXSkiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1FZGl0O1R5cGU9RHluYW1pY0ZpZWxkO0VsZW1lbnQ9WyUgRGF0YS5EeW5hbWljRmllbGQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSAoPHN0cm9uZz5bJSBEYXRhLkR5bmFtaWNGaWVsZCB8IGh0bWwgJV08L3N0cm9uZz4pPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkT3ZlcnZpZXdSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkVkaXQiKSAlXQo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0Ij4KICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJNYW5hZ2VtZW50IG9mIER5bmFtaWMgRmllbGRzIDwtPiBTY3JlZW5zIikgfCBodG1sICVdPC9oMT4KCiAgICBbJSBVU0UgRWRpdFRpdGxlID0gU3RyaW5nKERhdGEuQnJlYWRjcnVtYlRpdGxlKSAlXQoKICAgIFslIEJyZWFkY3J1bWJQYXRoID0gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0ZSgnTWFuYWdlbWVudCBvZiBEeW5hbWljIEZpZWxkcyA8LT4gU2NyZWVucycpLAogICAgICAgICAgICAgICAgTGluayA9PiBFbnYoIkFjdGlvbiIpLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+IEVkaXRUaXRsZS5hcHBlbmQoRGF0YS5UeXBlLCAiIC0gIiAsRGF0YS5FbGVtZW50ICApLAogICAgICAgICAgICB9CiAgICAgICAgXQogICAgJV0KCiAgICBbJSBEeW5hbWljRmllbGRTZWxlY3RlZCA9ICggRGF0YS5UeXBlID09ICdEeW5hbWljRmllbGQnICkgJV0KCiAgICBbJSBJTkNMVURFICJCcmVhZGNydW1iLnR0IiBQYXRoID0gQnJlYWRjcnVtYlBhdGggJV0KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+CiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtbGVmdCI+PC9pPlslIFRyYW5zbGF0ZSgiT3ZlcnZpZXciKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWRtaW5EeW5hbWljRmllbGQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXBsdXMtc3F1YXJlIj48L2k+WyUgVHJhbnNsYXRlKCJEeW5hbWljIEZpZWxkcyIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJMaXN0IikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJGaWx0ZXJFbGVtZW50cyIgY2xhc3M9Ilc5NXBjIiBuYW1lPSJGaWx0ZXJFbGVtZW50cyIgdmFsdWU9IiIgdGl0bGU9IlslIFRyYW5zbGF0ZSgnRmlsdGVyJykgfCBodG1sICVdIiBwbGFjZWhvbGRlcj0iWyUgVHJhbnNsYXRlKCdGaWx0ZXInKSB8IGh0bWwgJV0uLi4iIC8+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSBTcGFjaW5nVG9wIiBpZD0iRWxlbWVudHMiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIkFjdGlvbk92ZXJ2aWV3Um93RWRpdCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB0aXRsZT0iWyUgRGF0YS5FbGVtZW50IHwgaHRtbCAlXVslIElGIER5bmFtaWNGaWVsZFNlbGVjdGVkICVdIChbJSBEYXRhLkVsZW1lbnRLZXkgfCBodG1sICVdKVslIEVORCAlXSI+PGEgY2xhc3M9IkFzQmxvY2siIGlkPSJbJSBUcmFuc2xhdGUoRGF0YS5FbGVtZW50KSB8IGh0bWwgJV0iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1FZGl0O1R5cGU9WyUgRGF0YS5UeXBlIHwgdXJpICVdO0VsZW1lbnQ9WyUgRGF0YS5FbGVtZW50S2V5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5FbGVtZW50KSB8IGh0bWwgJV1bJSBJRiBEeW5hbWljRmllbGRTZWxlY3RlZCAlXSAoPHN0cm9uZz5bJSBEYXRhLkVsZW1lbnRLZXkgfCBodG1sICVdPC9zdHJvbmc+KVslIEVORCAlXTwvYT48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uT3ZlcnZpZXdSb3dFZGl0IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKERhdGEuSGVhZGVyKSB8IGh0bWwgJV0gLSBbJSBEYXRhLkVsZW1lbnQgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGZvcm0gaWQ9J0Zvcm0nIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlslIERhdGEuQWN0aW9uIHwgaHRtbCAlXUFjdGlvbiIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlR5cGUiIHZhbHVlPSJbJSBEYXRhLlR5cGUgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRWxlbWVudCIgdmFsdWU9IlslIERhdGEuRWxlbWVudCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGaWVsZHMiIHZhbHVlPSIiLz4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJMYXlvdXRHcmlkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU2l6ZTFvZjEgU3BhY2luZ0JvdHRvbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIllvdSBjYW4gYXNzaWduIGVsZW1lbnRzIHRvIHRoaXMgU2NyZWVuL0ZpZWxkIGJ5IGRyYWdnaW5nIHRoZSBlbGVtZW50cyB3aXRoIHRoZSBtb3VzZSBmcm9tIHRoZSBsZWZ0IGxpc3QgdG8gdGhlIHJpZ2h0IGxpc3QuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJPcmRlcmluZyB0aGUgZWxlbWVudHMgd2l0aGluIHRoZSBsaXN0IGlzIGFsc28gcG9zc2libGUgYnkgZHJhZyAnbicgZHJvcC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTGF5b3V0R3JpZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlslIERhdGEuU2l6ZSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJGaWx0ZXJBdmFpbGFibGVFbGVtZW50cyIgc3R5bGU9IndpZHRoOjkwJTsiIG5hbWU9IkZpbHRlckF2YWlsYWJsZUVsZW1lbnRzIiB2YWx1ZT0iIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCdGaWx0ZXIgYXZhaWxhYmxlIGVsZW1lbnRzJykgfCBodG1sICVdIiBwbGFjZWhvbGRlcj0iWyUgVHJhbnNsYXRlKCdGaWx0ZXIgYXZhaWxhYmxlIGVsZW1lbnRzJykgfCBodG1sICVdLi4uIiAvPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSdBbGxTZWxlY3RlZEF2YWlsYWJsZUVsZW1lbnRzJyBjbGFzcz0iQ2FsbEZvckFjdGlvbiBXOTBwYyBDZW50ZXIgU3BhY2luZ1RvcCIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyB3aWR0aDo4NSU7Ij48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPlslIFRyYW5zbGF0ZSgic2VsZWN0ZWQgdG8gYXZhaWxhYmxlIGVsZW1lbnRzIikgfCBodG1sICVdPC9zcGFuPjwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSBXOTBwYyBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iU2VsZWN0QWxsQXZhaWxhYmxlRWxlbWVudHMiIGlkPSJTZWxlY3RBbGxBdmFpbGFibGVFbGVtZW50cyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgnVG9nZ2xlIGFsbCBhdmFpbGFibGUgZWxlbWVudHMnKSB8IGh0bWwgJV0iIHZhbHVlPSIiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQXZhaWxhYmxlIEVsZW1lbnRzIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFsbG9jYXRpb25MaXN0IFRhYmxlbGlrZSBXOTBwYyIgc3R5bGU9Im1heC1oZWlnaHQ6IGluaGVyaXQ7IiBpZD0iQXZhaWxhYmxlRWxlbWVudHMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdmFpbGFibGVGaWVsZFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdWyUgSUYgIUR5bmFtaWNGaWVsZFNlbGVjdGVkICVdIChbJSBUcmFuc2xhdGUoRGF0YS5FbGVtZW50KSB8IGh0bWwgJV0pWyUgRU5EICVdIiBpZD0iWyUgRGF0YS5JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IlNlbGVjdEFsbEF2YWlsYWJsZUVsZW1lbnRzIiB2YWx1ZT0iWyUgRGF0YS5JRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXVslIElGICFEeW5hbWljRmllbGRTZWxlY3RlZCAlXSAoPHN0cm9uZz5bJSBEYXRhLkVsZW1lbnQgfCBodG1sICVdPC9zdHJvbmc+KVslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBdmFpbGFibGVFbGVtZW50cyIgIHZhbHVlPSJbJSBEYXRhLkVsZW1lbnQgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQXZhaWxhYmxlRmllbGRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJbJSBEYXRhLlNpemUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iRmlsdGVyRGlzYWJsZWRFbGVtZW50cyIgc3R5bGU9IndpZHRoOjkwJTsiIG5hbWU9IkZpbHRlckRpc2FibGVkRWxlbWVudHMiIHZhbHVlPSIiIHRpdGxlPSJbJSBUcmFuc2xhdGUoJ0ZpbHRlciBkaXNhYmxlZCBlbGVtZW50cycpIHwgaHRtbCAlXSIgcGxhY2Vob2xkZXI9IlslIFRyYW5zbGF0ZSgnRmlsdGVyIGRpc2FibGVkIGVsZW1lbnRzJykgfCBodG1sICVdLi4uIiAvPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSdBbGxTZWxlY3RlZERpc2FibGVkRWxlbWVudHMnIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFc5MHBjIENlbnRlciBTcGFjaW5nVG9wIiBzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOjg1JTsiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+WyUgVHJhbnNsYXRlKCJzZWxlY3RlZCB0byBkaXNhYmxlZCBlbGVtZW50cyIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJsZWxpa2UgVzkwcGMgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IlNlbGVjdEFsbERpc2FibGVkRWxlbWVudHMiIGlkPSJTZWxlY3RBbGxEaXNhYmxlZEVsZW1lbnRzIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCdUb2dnbGUgYWxsIGRpc2FibGVkIGVsZW1lbnRzJykgfCBodG1sICVdIiB2YWx1ZT0iIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkRpc2FibGVkIEVsZW1lbnRzIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFsbG9jYXRpb25MaXN0IFRhYmxlbGlrZSBXOTBwYyIgc3R5bGU9Im1heC1oZWlnaHQ6IGluaGVyaXQ7IiBpZD0iRGlzYWJsZWRFbGVtZW50cyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkRpc2FibGVkRmllbGRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXVslIElGICFEeW5hbWljRmllbGRTZWxlY3RlZCAlXSAoWyUgVHJhbnNsYXRlKERhdGEuRWxlbWVudCkgfCBodG1sICVdKVslIEVORCAlXSIgaWQ9IlslIERhdGEuSUQgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJTZWxlY3RBbGxEaXNhYmxlZEVsZW1lbnRzIiB2YWx1ZT0iWyUgRGF0YS5JRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXVslIElGICFEeW5hbWljRmllbGRTZWxlY3RlZCAlXSAoPHN0cm9uZz5bJSBEYXRhLkVsZW1lbnQgfCBodG1sICVdPC9zdHJvbmc+KVslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJEaXNhYmxlZEVsZW1lbnRzIiB2YWx1ZT0iWyUgRGF0YS5FbGVtZW50IHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkRpc2FibGVkRmllbGRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlslIERhdGEuU2l6ZSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJGaWx0ZXJBc3NpZ25lZEVsZW1lbnRzIiBzdHlsZT0id2lkdGg6OTAlOyIgbmFtZT0iRmlsdGVyQXNzaWduZWRFbGVtZW50cyIgdmFsdWU9IiIgdGl0bGU9IlslIFRyYW5zbGF0ZSgnRmlsdGVyIGFzc2lnbmVkIGVsZW1lbnRzJykgfCBodG1sICVdIiBwbGFjZWhvbGRlcj0iWyUgVHJhbnNsYXRlKCdGaWx0ZXIgYXNzaWduZWQgZWxlbWVudHMnKSB8IGh0bWwgJV0uLi4iIC8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9J0FsbFNlbGVjdGVkQXNzaWduZWRFbGVtZW50cycgY2xhc3M9IkNhbGxGb3JBY3Rpb24gVzkwcGMgQ2VudGVyIFNwYWNpbmdUb3AiIHN0eWxlPSJkaXNwbGF5OiBibG9jazsgd2lkdGg6ODUlOyI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT5bJSBUcmFuc2xhdGUoInNlbGVjdGVkIHRvIGFzc2lnbmVkIGVsZW1lbnRzIikgfCBodG1sICVdPC9zcGFuPjwvYT4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSBXOTBwYyBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iU2VsZWN0QWxsQXNzaWduZWRFbGVtZW50cyIgaWQ9IlNlbGVjdEFsbEFzc2lnbmVkRWxlbWVudHMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoJ1RvZ2dsZSBhbGwgYXNzaWduZWQgZWxlbWVudHMnKSB8IGh0bWwgJV0iIHZhbHVlPSIiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQXNzaWduZWQgRWxlbWVudHMiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWxsb2NhdGlvbkxpc3QgVGFibGVsaWtlIFc5MHBjIiBzdHlsZT0ibWF4LWhlaWdodDogaW5oZXJpdDsiIGlkPSJBc3NpZ25lZEVsZW1lbnRzIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQXNzaWduZWRGaWVsZFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdWyUgSUYgIUR5bmFtaWNGaWVsZFNlbGVjdGVkICVdIChbJSBUcmFuc2xhdGUoRGF0YS5FbGVtZW50KSB8IGh0bWwgJV0pWyUgRU5EICVdIiBpZD0iWyUgRGF0YS5JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IlNlbGVjdEFsbEFzc2lnbmVkRWxlbWVudHMiIHZhbHVlPSJbJSBEYXRhLklEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdWyUgSUYgIUR5bmFtaWNGaWVsZFNlbGVjdGVkICVdICg8c3Ryb25nPlslIERhdGEuRWxlbWVudCB8IGh0bWwgJV08L3N0cm9uZz4pWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFzc2lnbmVkRWxlbWVudHMiIHZhbHVlPSJbJSBEYXRhLkVsZW1lbnQgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQXNzaWduZWRGaWVsZFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iWyUgRGF0YS5TaXplIHwgaHRtbCAlXSBbJSBEYXRhLkhpZGRlblJlcXVpcmVkIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IkZpbHRlckFzc2lnbmVkUmVxdWlyZWRFbGVtZW50cyIgc3R5bGU9IndpZHRoOjkwJTsiIG5hbWU9IkZpbHRlckFzc2lnbmVkUmVxdWlyZWRFbGVtZW50cyIgdmFsdWU9IiIgdGl0bGU9IlslIFRyYW5zbGF0ZSgnRmlsdGVyIGFzc2lnbmVkIHJlcXVpcmVkIGVsZW1lbnRzJykgfCBodG1sICVdIiBwbGFjZWhvbGRlcj0iWyUgVHJhbnNsYXRlKCdGaWx0ZXIgYXNzaWduZWQgcmVxdWlyZWQgZWxlbWVudHMnKSB8IGh0bWwgJV0uLi4iIC8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9J0FsbFNlbGVjdGVkQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzJyBjbGFzcz0iQ2FsbEZvckFjdGlvbiBXOTBwYyBDZW50ZXIgU3BhY2luZ1RvcCIgc3R5bGU9ImRpc3BsYXk6IGJsb2NrOyB3aWR0aDo4NSU7Ij48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPlslIFRyYW5zbGF0ZSgic2VsZWN0ZWQgdG8gYXNzaWduZWQgcmVxdWlyZWQgZWxlbWVudHMiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFibGVsaWtlIFc5MHBjIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJTZWxlY3RBbGxBc3NpZ25lZFJlcXVpcmVkRWxlbWVudHMiIGlkPSJTZWxlY3RBbGxBc3NpZ25lZFJlcXVpcmVkRWxlbWVudHMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoJ1RvZ2dsZSBhbGwgYXNzaWduZWQgcmVxdWlyZWQgZWxlbWVudHMnKSB8IGh0bWwgJV0iIHZhbHVlPSIiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQXNzaWduZWQgUmVxdWlyZWQgRWxlbWVudHMiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFsbG9jYXRpb25MaXN0IFRhYmxlbGlrZSBXOTBwYyIgc3R5bGU9Im1heC1oZWlnaHQ6IGluaGVyaXQ7IiBpZD0iQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQXNzaWduZWRSZXF1aXJlZEZpZWxkUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV1bJSBJRiAhRHluYW1pY0ZpZWxkU2VsZWN0ZWQgJV0gKFslIFRyYW5zbGF0ZShEYXRhLkVsZW1lbnQpIHwgaHRtbCAlXSlbJSBFTkQgJV0iIGlkPSJbJSBEYXRhLklEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iU2VsZWN0QWxsQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzIiB2YWx1ZT0iWyUgRGF0YS5JRCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV1bJSBJRiAhRHluYW1pY0ZpZWxkU2VsZWN0ZWQgJV0gKDxzdHJvbmc+WyUgRGF0YS5FbGVtZW50IHwgaHRtbCAlXTwvc3Ryb25nPilbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzIiB2YWx1ZT0iWyUgRGF0YS5FbGVtZW50IHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQXNzaWduZWRSZXF1aXJlZEZpZWxkUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV0iID5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9IlslIERhdGEuSGlkZGVuUmVzZXQgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdPC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UmVzZXQ7VHlwZT1bJSBEYXRhLlR5cGUgfCB1cmkgJV07RWxlbWVudD1bJSBEYXRhLkVsZW1lbnQgfCB1cmkgJV0iIGNsYXNzPSJDYWxsRm9yQWN0aW9uIENlbnRlciBbJSBEYXRhLkhpZGRlblJlc2V0IHwgaHRtbCAlXSIgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT5bJSBUcmFuc2xhdGUoIlJlc2V0IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRWRpdCIpICVdCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+Cg==</File>
        <File Location="Custom/Kernel/System/ACL/DB/ACL.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2ZWZkYzdiZjJhMzMyNTI3N2NkNzlhNjBmMGYyNDA3ZjhhZDU5ZTg3IC0gS2VybmVsL1N5c3RlbS9BQ0wvREIvQUNMLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkFDTDo6REI6OkFDTDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkVuY29kZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdG9yYWdlOjpTMycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6RmllbGRSZXN0cmljdGlvbnMnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6WUFNTCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkFDTDo6REI6OkFDTAoKPWhlYWQxIERFU0NSSVBUSU9OCgpBQ0wgREIgQUNMIGJhY2tlbmQKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhIEFDTCBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIG15ICRBQ0xPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QUNMOjpEQjo6QUNMJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIGZpbmQgb3V0IHdoZXRoZXIgbG9hZGVyIGZpbGVzIGFyZSBzdG9yZWQgaW4gUzMgb3IgaW4gdGhlIGZpbGUgc3lzdGVtCiAgICAkU2VsZi0+e1MzQWN0aXZlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU3RvcmFnZTo6UzM6OkFjdGl2ZScpID8gMSA6IDA7CgogICAgIyBnZXQgdGhlIGNhY2hlIFRUTCAoaW4gc2Vjb25kcykKICAgICRTZWxmLT57Q2FjaGVUVEx9ID0gaW50KCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0FDTDo6Q2FjaGVUVEwnKSB8fCAzNjAwICk7CgogICAgIyBzZXQgbG93ZXIgaWYgZGF0YWJhc2UgaXMgY2FzZSBzZW5zaXRpdmUKICAgICRTZWxmLT57TG93ZXJ9ID0gJyc7CiAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdDYXNlU2Vuc2l0aXZlJykgKSB7CiAgICAgICAgJFNlbGYtPntMb3dlcn0gPSAnTE9XRVInOwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIEFDTEFkZCgpCgphZGQgbmV3IEFDTAoKcmV0dXJucyB0aGUgaWQgb2YgdGhlIGNyZWF0ZWQgQUNMIGlmIHN1Y2Nlc3Mgb3IgdW5kZWYgb3RoZXJ3aXNlCgogICAgbXkgJElEID0gJEFDTC0+QUNMQWRkKAogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdOYW1lT2ZBQ0wnICAgICAgICAgICAjIG1hbmRhdG9yeQogICAgICAgIENvbW1lbnQgICAgICAgID0+ICdDb21tZW50JywgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJ0Rlc2NyaXB0aW9uJywgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBTdG9wQWZ0ZXJNYXRjaCA9PiAxLCAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIENvbmZpZ01hdGNoICAgID0+ICRDb25maWdNYXRjaEhhc2hSZWYsICAjIG9wdGlvbmFsCiAgICAgICAgQ29uZmlnQ2hhbmdlICAgPT4gJENvbmZpZ0NoYW5nZUhhc2hSZWYsICMgb3B0aW9uYWwKICAgICAgICBWYWxpZElEICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgIyBtYW5kYXRvcnkKICAgICAgICBVc2VySUQgICAgICAgICA9PiAxMjMsICAgICAgICAgICAgICAgICAgIyBtYW5kYXRvcnkKIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICBPYmplY3RUeXBlICAgICA9PiAnVGlja2V0JywgICAgICAgICAgICAgIyBvcHRpb25hbCAoY3VycmVudGx5IFRpY2tldCBvciBDb25maWdJdGVtLCBkZWZhdWx0cyB0byBUaWNrZXQpCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICApOwoKUmV0dXJuczoKCiAgICAkSUQgPSA1Njc7Cgo9Y3V0CgpzdWIgQUNMQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgICMgc2V0IGRlZmF1bHQgZm9yIG9iamVjdCB0eXBlCiAgICAkUGFyYW17T2JqZWN0VHlwZX0gLy89ICdUaWNrZXQnOwojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEtleSAocXcoTmFtZSBWYWxpZElEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEtleX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRLZXkhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB5YW1sIG9iamVjdAogICAgbXkgJFlBTUxPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKICAgICMgZGVmaW5lIERlc2NyaXB0aW9uIGZpZWxkIGlmIG5vdCBwcmVzZW50CiAgICAkUGFyYW17RGVzY3JpcHRpb259IC8vPSAnJzsKCiAgICBteSAkQ29uZmlnTWF0Y2ggID0gJyc7CiAgICBteSAkQ29uZmlnQ2hhbmdlID0gJyc7CgogICAgaWYgKCAkUGFyYW17Q29uZmlnTWF0Y2h9ICkgewoKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0NvbmZpZ01hdGNofSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ29uZmlnTWF0Y2ggbmVlZHMgdG8gYmUgYSB2YWxpZCBoYXNoIHdpdGggZGF0YSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkQ29uZmlnTWF0Y2ggPSAkWUFNTE9iamVjdC0+RHVtcCggRGF0YSA9PiAkUGFyYW17Q29uZmlnTWF0Y2h9ICk7CiAgICB9CgogICAgaWYgKCAkUGFyYW17Q29uZmlnQ2hhbmdlfSApIHsKCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtDb25maWdDaGFuZ2V9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb25maWdDaGFuZ2UgbmVlZHMgdG8gYmUgYSB2YWxpZCBoYXNoIHdpdGggZGF0YSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkQ29uZmlnQ2hhbmdlID0gJFlBTUxPYmplY3QtPkR1bXAoIERhdGEgPT4gJFBhcmFte0NvbmZpZ0NoYW5nZX0gKTsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgY2hlY2sgaWYgQUNMIHdpdGggdGhpcyBuYW1lIGFscmVhZHkgZXhpc3RzCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gIgogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBhY2wKICAgICAgICAgICAgV0hFUkUgJFNlbGYtPntMb3dlcn0obmFtZSkgPSAkU2VsZi0+e0xvd2VyfSg/KSIsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte05hbWV9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJEFDTEV4aXN0czsKICAgIHdoaWxlICggbXkgQERhdGEgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQUNMRXhpc3RzID0gMTsKICAgIH0KCiAgICBpZiAoJEFDTEV4aXN0cykgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQW4gQUNMIHdpdGggdGhlIG5hbWUgJyRQYXJhbXtOYW1lfScgYWxyZWFkeSBleGlzdHMuIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIFNRTAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgU1FMID0+ICcKIyAgICAgICAgICAgICBJTlNFUlQgSU5UTyBhY2wgKCBuYW1lLCBjb21tZW50cywgZGVzY3JpcHRpb24sIHN0b3BfYWZ0ZXJfbWF0Y2gsIGNvbmZpZ19tYXRjaCwKIyAgICAgICAgICAgICAgICAgY29uZmlnX2NoYW5nZSwgdmFsaWRfaWQsIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnksIGNoYW5nZV90aW1lLCBjaGFuZ2VfYnkgKQojICAgICAgICAgICAgIFZBTFVFUyAoPywgPywgPywgPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgSU5TRVJUIElOVE8gYWNsICggbmFtZSwgY29tbWVudHMsIGRlc2NyaXB0aW9uLCBzdG9wX2FmdGVyX21hdGNoLCBjb25maWdfbWF0Y2gsCiAgICAgICAgICAgICAgICBjb25maWdfY2hhbmdlLCB2YWxpZF9pZCwgb2JqZWN0X3R5cGUsIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnksIGNoYW5nZV90aW1lLCBjaGFuZ2VfYnkgKQogICAgICAgICAgICBWQUxVRVMgKD8sID8sID8sID8sID8sID8sID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte05hbWV9LCAgIFwkUGFyYW17Q29tbWVudH0sIFwkUGFyYW17RGVzY3JpcHRpb259LCBcJFBhcmFte1N0b3BBZnRlck1hdGNofSwKIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgICAgICAgICBcJENvbmZpZ01hdGNoLCAgIFwkQ29uZmlnQ2hhbmdlLCAgIFwkUGFyYW17VmFsaWRJRH0sCiAgICAgICAgICAgIFwkQ29uZmlnTWF0Y2gsICAgXCRDb25maWdDaGFuZ2UsICAgXCRQYXJhbXtWYWxpZElEfSwgXCRQYXJhbXtPYmplY3RUeXBlfSwKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgXSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICA9PiAnU0VMRUNUIGlkIEZST00gYWNsIFdIRVJFIG5hbWUgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOYW1lfSBdLAogICAgKTsKCiAgICBteSAkSUQ7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkSUQgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAhJElEOwoKICAgICMgZGVsZXRlIGNhY2hlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdBQ0xFZGl0b3JfQUNMJywKICAgICk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIElOU0VSVCBJTlRPIGFjbF9zeW5jICggYWNsX2lkLCBzeW5jX3N0YXRlLCBjcmVhdGVfdGltZSwgY2hhbmdlX3RpbWUgKQogICAgICAgICAgICBWQUxVRVMgKD8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCBjdXJyZW50X3RpbWVzdGFtcCknLAogICAgICAgIEJpbmQgPT4gWyBcJElELCBcJ25vdF9zeW5jJyBdLAogICAgKTsKCiAgICByZXR1cm4gJElEOwp9Cgo9aGVhZDIgQUNMRGVsZXRlKCkKCmRlbGV0ZSBhbiBBQ0wKCnJldHVybnMgMSBpZiBzdWNjZXNzIG9yIHVuZGVmIG90aGVyd2lzZQoKICAgIG15ICRTdWNjZXNzID0gJEFDTE9iamVjdC0+QUNMRGVsZXRlKAogICAgICAgIElEICAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBBQ0xEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRLZXkgKHF3KElEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEtleX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRLZXkhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgZXhpc3RzCiAgICBteSAkQUNMID0gJFNlbGYtPkFDTEdldCgKICAgICAgICBJRCAgICAgPT4gJFBhcmFte0lEfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkQUNMKTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZGVsZXRlIEFDTAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGFjbCBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0lEfSBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSBjYWNoZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoCiAgICAgICAgVHlwZSA9PiAnQUNMRWRpdG9yX0FDTCcsCiAgICApOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBhY2xfc3luYyAoIGFjbF9pZCwgc3luY19zdGF0ZSwgY3JlYXRlX3RpbWUsIGNoYW5nZV90aW1lICkKICAgICAgICAgICAgVkFMVUVTICg/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgY3VycmVudF90aW1lc3RhbXApJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtJRH0sIFwnZGVsZXRlZCcgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBBQ0xHZXQoKQoKZ2V0IEFDTCBhdHRyaWJ1dGVzCgogICAgbXkgJEFDTCA9ICRBQ0xPYmplY3QtPkFDTEdldCgKICAgICAgICBJRCAgICAgICAgICAgICAgPT4gMTIzLCAgICAgICAgICAjIElEIG9yIG5hbWUgaXMgbmVlZGVkCiAgICAgICAgTmFtZSAgICAgICAgICAgID0+ICdBQ0wxJywKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gMTIzLCAgICAgICAgICAjIG1hbmRhdG9yeQogICAgKTsKClJldHVybnM6CgogICAgJEFDTCA9IHsKICAgICAgICBJRCAgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ3NvbWUgbmFtZScsCiAgICAgICAgQ29tbWVudCAgICAgICAgPT4gJ0NvbW1lbnQnLAogICAgICAgIERlc2NyaXB0aW9uICAgID0+ICdEZXNjcmlwdGlvbicsCiAgICAgICAgU3RvcEFmdGVyTWF0Y2ggPT4gMSwKICAgICAgICBDb25maWdNYXRjaCAgICA9PiAkQ29uZmlnTWF0Y2hIYXNoUmVmLAogICAgICAgIENvbmZpZ0NoYW5nZSAgID0+ICRDb25maWdDaGFuZ2VIYXNoUmVmLAojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgIE9iamVjdFR5cGUgICAgID0+ICgnVGlja2V0J3wnQ29uZmlnSXRlbScpCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgVmFsaWRJRCAgICAgICAgPT4gMSwKICAgICAgICBDcmVhdGVUaW1lICAgICA9PiAnMjAxMi0wNy0wNCAxNTowODowMCcsCiAgICAgICAgQ2hhbmdlVGltZSAgICAgPT4gJzIwMTItMDctMDQgMTU6MDg6MDAnLAogICAgICAgIENyZWF0ZUJ5ICAgICAgID0+ICd1c2VyX2xvZ2luJywKICAgICAgICBDaGFuZ2VCeSAgICAgICA9PiAndXNlcl9sb2dpbicsCiAgICB9OwoKPWN1dAoKc3ViIEFDTEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICAjIHNldCBkZWZhdWx0IGZvciBvYmplY3QgdHlwZQogICAgJFBhcmFte09iamVjdFR5cGV9IC8vPSAnVGlja2V0JzsKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0lEfSAmJiAhJFBhcmFte05hbWV9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBJRCBvciBOYW1lIScKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENhY2hlS2V5OwogICAgaWYgKCAkUGFyYW17SUR9ICkgewogICAgICAgICRDYWNoZUtleSA9ICdBQ0xHZXQ6OklEOjonIC4gJFBhcmFte0lEfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRDYWNoZUtleSA9ICdBQ0xHZXQ6Ok5hbWU6OicgLiAkUGFyYW17TmFtZX07CiAgICB9CgogICAgIyBnZXQgY2FjaGUgb2JqZWN0CiAgICBteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKCiAgICBteSAkQ2FjaGUgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICdBQ0xFZGl0b3JfQUNMJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CiAgICByZXR1cm4gJENhY2hlIGlmICRDYWNoZTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgU1FMCiAgICBpZiAoICRQYXJhbXtJRH0gKSB7CiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICAgICAgU1FMID0+ICcKIyAgICAgICAgICAgICAgICAgU0VMRUNUIGlkLCBuYW1lLCBjb21tZW50cywgZGVzY3JpcHRpb24sIHN0b3BfYWZ0ZXJfbWF0Y2gsIHZhbGlkX2lkLCBjb25maWdfbWF0Y2gsCiMgICAgICAgICAgICAgICAgICAgICBjb25maWdfY2hhbmdlLCBjcmVhdGVfdGltZSwgY2hhbmdlX3RpbWUsIGNyZWF0ZV9ieSwgY2hhbmdlX2J5CiMgICAgICAgICAgICAgICAgIEZST00gYWNsCiMgICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBTRUxFQ1QgaWQsIG5hbWUsIGNvbW1lbnRzLCBkZXNjcmlwdGlvbiwgc3RvcF9hZnRlcl9tYXRjaCwgdmFsaWRfaWQsIGNvbmZpZ19tYXRjaCwKICAgICAgICAgICAgICAgICAgICBjb25maWdfY2hhbmdlLCBvYmplY3RfdHlwZSwgY3JlYXRlX3RpbWUsIGNoYW5nZV90aW1lLCBjcmVhdGVfYnksIGNoYW5nZV9ieQogICAgICAgICAgICAgICAgRlJPTSBhY2wKICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtJRH0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICAgICAgU1FMID0+ICcKIyAgICAgICAgICAgICAgICAgU0VMRUNUIGlkLCBuYW1lLCBjb21tZW50cywgZGVzY3JpcHRpb24sIHN0b3BfYWZ0ZXJfbWF0Y2gsIHZhbGlkX2lkLCBjb25maWdfbWF0Y2gsCiMgICAgICAgICAgICAgICAgICAgICBjb25maWdfY2hhbmdlLCBjcmVhdGVfdGltZSwgY2hhbmdlX3RpbWUsIGNyZWF0ZV9ieSwgY2hhbmdlX2J5CiMgICAgICAgICAgICAgICAgIEZST00gYWNsCiMgICAgICAgICAgICAgICAgIFdIRVJFIG5hbWUgPSA/JywKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBpZCwgbmFtZSwgY29tbWVudHMsIGRlc2NyaXB0aW9uLCBzdG9wX2FmdGVyX21hdGNoLCB2YWxpZF9pZCwgY29uZmlnX21hdGNoLAogICAgICAgICAgICAgICAgICAgIGNvbmZpZ19jaGFuZ2UsIG9iamVjdF90eXBlLCBjcmVhdGVfdGltZSwgY2hhbmdlX3RpbWUsIGNyZWF0ZV9ieSwgY2hhbmdlX2J5CiAgICAgICAgICAgICAgICBGUk9NIGFjbAogICAgICAgICAgICAgICAgV0hFUkUgbmFtZSA9ID8nLAojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17TmFtZX0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHlhbWwgb2JqZWN0CiAgICBteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBEYXRhID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgIG15ICRDb25maWdNYXRjaCA9ICcnOwogICAgICAgIGlmICggJERhdGFbNl0gKSB7CiAgICAgICAgICAgICRDb25maWdNYXRjaCA9ICRZQU1MT2JqZWN0LT5Mb2FkKCBEYXRhID0+ICREYXRhWzZdICk7CiAgICAgICAgfQoKICAgICAgICBteSAkQ29uZmlnQ2hhbmdlID0gJyc7CiAgICAgICAgaWYgKCAkRGF0YVs3XSApIHsKICAgICAgICAgICAgJENvbmZpZ0NoYW5nZSA9ICRZQU1MT2JqZWN0LT5Mb2FkKCBEYXRhID0+ICREYXRhWzddICk7CiAgICAgICAgfQoKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgSUQgICAgICAgICAgICAgPT4gJERhdGFbMF0sCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICREYXRhWzFdLAogICAgICAgICAgICBDb21tZW50ICAgICAgICA9PiAkRGF0YVsyXSwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJERhdGFbM10gfHwgJycsCiAgICAgICAgICAgIFN0b3BBZnRlck1hdGNoID0+ICREYXRhWzRdIHx8IDAsCiAgICAgICAgICAgIFZhbGlkSUQgICAgICAgID0+ICREYXRhWzVdLAogICAgICAgICAgICBDb25maWdNYXRjaCAgICA9PiAkQ29uZmlnTWF0Y2gsCiAgICAgICAgICAgIENvbmZpZ0NoYW5nZSAgID0+ICRDb25maWdDaGFuZ2UsCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICAgPT4gJERhdGFbOF0sCiMgICAgICAgICAgICAgQ2hhbmdlVGltZSAgICAgPT4gJERhdGFbOV0sCiMgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgPT4gJERhdGFbMTBdLAojICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgID0+ICREYXRhWzExXSwKICAgICAgICAgICAgT2JqZWN0VHlwZSAgICAgPT4gJERhdGFbOF0sCiAgICAgICAgICAgIENyZWF0ZVRpbWUgICAgID0+ICREYXRhWzldLAogICAgICAgICAgICBDaGFuZ2VUaW1lICAgICA9PiAkRGF0YVsxMF0sCiAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgID0+ICREYXRhWzExXSwKICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgPT4gJERhdGFbMTJdLAojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiBpZiAhJERhdGF7SUR9OwoKICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgIyBjb252ZXJ0IFVzZXJJRHMgb3V0c2lkZSBvZiBmZXRjaHJvd0FycmF5LCBvdGhlcndpc2UgVXNlckxvb3VrdXAgd2lsbCByaXNlIHNvbWUgd2FybmluZ3MKICAgIG15ICRDcmVhdGVVc2VyID0gJFVzZXJPYmplY3QtPlVzZXJMb29rdXAoIFVzZXJJRCA9PiAkRGF0YXtDcmVhdGVCeX0gKTsKICAgIG15ICRDaGFuZ2VVc2VyID0gJFVzZXJPYmplY3QtPlVzZXJMb29rdXAoIFVzZXJJRCA9PiAkRGF0YXtDaGFuZ2VCeX0gKTsKICAgICREYXRhe0NyZWF0ZUJ5fSA9ICRDcmVhdGVVc2VyOwogICAgJERhdGF7Q2hhbmdlQnl9ID0gJENoYW5nZVVzZXI7CgogICAgIyBzZXQgY2FjaGUKICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgIFR5cGUgID0+ICdBQ0xFZGl0b3JfQUNMJywKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gXCVEYXRhLAogICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgKTsKCiAgICByZXR1cm4gXCVEYXRhOwp9Cgo9aGVhZDIgQUNMVXBkYXRlKCkKCnVwZGF0ZSBBQ0wgYXR0cmlidXRlcwoKcmV0dXJucyAxIGlmIHN1Y2Nlc3Mgb3IgdW5kZWYgb3RoZXJ3aXNlCgogICAgbXkgJFN1Y2Nlc3MgPSAkQUNMT2JqZWN0LT5BQ0xVcGRhdGUoCiAgICAgICAgSUQgICAgICAgICAgICAgPT4gMTIzLCAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ05hbWVPZkFDTCcsICAgICAgICAgICMgbWFuZGF0b3J5CiAgICAgICAgQ29tbWVudCAgICAgICAgPT4gJ0NvbW1lbnQnLCAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBEZXNjcmlwdGlvbiAgICA9PiAnRGVzY3JpcHRpb24nLCAgICAgICAgIyBvcHRpb25hbAogICAgICAgIFN0b3BBZnRlck1hdGNoID0+IDEsICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgVmFsaWRJRCAgICAgICAgPT4gJ1ZhbGlkSUQnLCAgICAgICAgICAgICMgbWFuZGF0b3J5CiAgICAgICAgQ29uZmlnTWF0Y2ggICAgPT4gJENvbmZpZ01hdGNoSGFzaFJlZiwgICMgb3B0aW9uYWwKICAgICAgICBDb25maWdDaGFuZ2UgICA9PiAkQ29uZmlnQ2hhbmdlSGFzaFJlZiwgIyBvcHRpb25hbAogICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEyMywgICAgICAgICAgICAgICAgICAjIG1hbmRhdG9yeQogICAgKTsKCj1jdXQKCnN1YiBBQ0xVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRLZXkgKHF3KElEIE5hbWUgVmFsaWRJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRLZXl9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkS2V5ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlZmluZSBEZXNjcmlwdGlvbiBmaWVsZCBpZiBub3QgcHJlc2VudAogICAgJFBhcmFte0Rlc2NyaXB0aW9ufSAvLz0gJyc7CgogICAgIyBzZXQgU3RvcEFmdGVyTWF0Y2ggaWYgdW5kZWZpbmVkCiAgICAkUGFyYW17U3RvcEFmdGVyTWF0Y2h9IC8vPSAwOwoKICAgIG15ICRDb25maWdNYXRjaCAgPSAnJzsKICAgIG15ICRDb25maWdDaGFuZ2UgPSAnJzsKCiAgICBmb3IgbXkgJEtleSAocXcoQ29uZmlnTWF0Y2ggQ29uZmlnQ2hhbmdlKSkgewoKICAgICAgICBpZiAoICRQYXJhbXskS2V5fSAmJiAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXskS2V5fSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiJEtleSBuZWVkcyB0byBiZSBhIHZhbGlkIGhhc2ggd2l0aCBkYXRhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgeWFtbCBvYmplY3QKICAgIG15ICRZQU1MT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKCiAgICBpZiAoICRQYXJhbXtDb25maWdNYXRjaH0gJiYgSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtDb25maWdNYXRjaH0gKSApIHsKICAgICAgICAkQ29uZmlnTWF0Y2ggPSAkWUFNTE9iamVjdC0+RHVtcCggRGF0YSA9PiAkUGFyYW17Q29uZmlnTWF0Y2h9ICk7CiAgICB9CgogICAgaWYgKCAkUGFyYW17Q29uZmlnQ2hhbmdlfSAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0NvbmZpZ0NoYW5nZX0gKSApIHsKICAgICAgICAkQ29uZmlnQ2hhbmdlID0gJFlBTUxPYmplY3QtPkR1bXAoIERhdGEgPT4gJFBhcmFte0NvbmZpZ0NoYW5nZX0gKTsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgY2hlY2sgaWYgTmFtZSBhbHJlYWR5IGV4aXN0cwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICIKICAgICAgICAgICAgU0VMRUNUIGlkIEZST00gYWNsCiAgICAgICAgICAgIFdIRVJFICRTZWxmLT57TG93ZXJ9KG5hbWUpID0gJFNlbGYtPntMb3dlcn0oPykKICAgICAgICAgICAgQU5EIGlkICE9ID8iLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtOYW1lfSwgXCRQYXJhbXtJRH0gXSwKICAgICAgICBMSU1JVCA9PiAxLAogICAgKTsKCiAgICBteSAkQUNMRXhpc3RzOwogICAgd2hpbGUgKCBteSBARGF0YSA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRBQ0xFeGlzdHMgPSAxOwogICAgfQoKICAgIGlmICgkQUNMRXhpc3RzKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJBbiBBQ0wgd2l0aCB0aGUgbmFtZSAnJFBhcmFte05hbWV9JyBhbHJlYWR5IGV4aXN0cy4iLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgaWYgbmVlZCB0byB1cGRhdGUgZGIKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBuYW1lLCBjb21tZW50cywgZGVzY3JpcHRpb24sIHN0b3BfYWZ0ZXJfbWF0Y2gsIHZhbGlkX2lkLCBjb25maWdfbWF0Y2gsCiAgICAgICAgICAgICAgICBjb25maWdfY2hhbmdlCiAgICAgICAgICAgIEZST00gYWNsCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0lEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIG15ICRDdXJyZW50TmFtZTsKICAgIG15ICRDdXJyZW50Q29tbWVudDsKICAgIG15ICRDdXJyZW50RGVzY3JpcHRpb247CiAgICBteSAkQ3VycmVudFN0b3BBZnRlck1hdGNoOwogICAgbXkgJEN1cnJlbnRWYWxpZElEOwogICAgbXkgJEN1cnJlbnRDb25maWdNYXRjaDsKICAgIG15ICRDdXJyZW50Q29uZmlnQ2hhbmdlOwogICAgd2hpbGUgKCBteSBARGF0YSA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRDdXJyZW50TmFtZSAgICAgICAgICAgPSAkRGF0YVswXTsKICAgICAgICAkQ3VycmVudENvbW1lbnQgICAgICAgID0gJERhdGFbMV07CiAgICAgICAgJEN1cnJlbnREZXNjcmlwdGlvbiAgICA9ICREYXRhWzJdIHx8ICcnOwogICAgICAgICRDdXJyZW50U3RvcEFmdGVyTWF0Y2ggPSAkRGF0YVszXSB8fCAwOwogICAgICAgICRDdXJyZW50VmFsaWRJRCAgICAgICAgPSAkRGF0YVs0XTsKICAgICAgICAkQ3VycmVudENvbmZpZ01hdGNoICAgID0gJERhdGFbNV07CiAgICAgICAgJEN1cnJlbnRDb25maWdDaGFuZ2UgICA9ICREYXRhWzZdOwogICAgfQoKICAgIGlmICgKICAgICAgICAkQ3VycmVudE5hbWUKICAgICAgICAmJiAkQ3VycmVudE5hbWUgZXEgJFBhcmFte05hbWV9CiAgICAgICAgJiYgJEN1cnJlbnRDb21tZW50IGVxICRQYXJhbXtDb21tZW50fQogICAgICAgICYmICRDdXJyZW50RGVzY3JpcHRpb24gZXEgJFBhcmFte0Rlc2NyaXB0aW9ufQogICAgICAgICYmICRDdXJyZW50U3RvcEFmdGVyTWF0Y2ggZXEgJFBhcmFte1N0b3BBZnRlck1hdGNofQogICAgICAgICYmICRDdXJyZW50VmFsaWRJRCBlcSAkUGFyYW17VmFsaWRJRH0KICAgICAgICAmJiAkQ3VycmVudENvbmZpZ01hdGNoIGVxICRDb25maWdNYXRjaAogICAgICAgICYmICRDdXJyZW50Q29uZmlnQ2hhbmdlIGVxICRDb25maWdDaGFuZ2UKICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyBTUUwKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgYWNsCiAgICAgICAgICAgIFNFVCBuYW1lID0gPywgY29tbWVudHMgPSA/LCBkZXNjcmlwdGlvbiA9ID8sIHN0b3BfYWZ0ZXJfbWF0Y2ggPSA/LCB2YWxpZF9pZCA9ID8sCiAgICAgICAgICAgICAgICBjb25maWdfbWF0Y2ggPSA/LCBjb25maWdfY2hhbmdlID0gPywgY2hhbmdlX3RpbWUgPSBjdXJyZW50X3RpbWVzdGFtcCwgIGNoYW5nZV9ieSA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtOYW1lfSwgICAgXCRQYXJhbXtDb21tZW50fSwgXCRQYXJhbXtEZXNjcmlwdGlvbn0sIFwkUGFyYW17U3RvcEFmdGVyTWF0Y2h9LAogICAgICAgICAgICBcJFBhcmFte1ZhbGlkSUR9LCBcJENvbmZpZ01hdGNoLCAgICBcJENvbmZpZ0NoYW5nZSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LCAgXCRQYXJhbXtJRH0sCiAgICAgICAgXSwKICAgICk7CgogICAgIyBkZWxldGUgY2FjaGUKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0FDTEVkaXRvcl9BQ0wnLAogICAgKTsKCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgSU5TRVJUIElOVE8gYWNsX3N5bmMgKCBhY2xfaWQsIHN5bmNfc3RhdGUsIGNyZWF0ZV90aW1lLCBjaGFuZ2VfdGltZSApCiAgICAgICAgICAgIFZBTFVFUyAoPywgPywgY3VycmVudF90aW1lc3RhbXAsIGN1cnJlbnRfdGltZXN0YW1wKScsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17SUR9LCBcJ25vdF9zeW5jJyBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIEFDTExpc3QoKQoKZ2V0IGFuIEFDTCBsaXN0CgogICAgbXkgJExpc3QgPSAkQUNMT2JqZWN0LT5BQ0xMaXN0KAogICAgICAgIFZhbGlkSURzICAgICAgICA9PiBbJzEnLCcyJ10sICAgICAgICAgICAjIG9wdGlvbmFsLCB0byBmaWx0ZXIgQUNMcyB0aGF0IG1hdGNoIGxpc3RlZCB2YWxpZCBJRHMKICAgICAgICBVc2VySUQgICAgICAgICAgPT4gMSwKIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICBPYmplY3RUeXBlcyAgICAgPT4gWydUaWNrZXQnXSAgICAgICAgICAgIyBvcHRpb25hbCwgY3VycmVudGx5IFRpY2tldCBvciBDb25maWdJdGVtCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICApOwoKICAgIFJldHVybnM6CgogICAgJExpc3QgPSB7CiAgICAgICAgMSA9PiAnTmFtZU9mQUNMJywKICAgIH0KCj1jdXQKCnN1YiBBQ0xMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRWYWxpZElEc1N0cmc7CiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtWYWxpZElEc30gKSApIHsKICAgICAgICAkVmFsaWRJRHNTdHJnID0gJ0FMTCc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkVmFsaWRJRHNTdHJnID0gam9pbiAnLCcsIEB7ICRQYXJhbXtWYWxpZElEc30gfTsKICAgIH0KIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIG15ICRPYmplY3RUeXBlc1N0cmc7CiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtPYmplY3RUeXBlc30gKSApIHsKICAgICAgICAkT2JqZWN0VHlwZXNTdHJnID0gJ0FMTCc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkT2JqZWN0VHlwZXNTdHJnID0gam9pbiAnLCcsIEB7ICRQYXJhbXtPYmplY3RUeXBlc30gfTsKICAgIH0KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICAjIGdldCBjYWNoZSBvYmplY3QKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgY2hlY2sgY2FjaGUKIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgbXkgJENhY2hlS2V5ID0gJ0FDTExpc3Q6OlZhbGlkSURzOjonIC4gJFZhbGlkSURzU3RyZzsKICAgIG15ICRDYWNoZUtleSA9ICdBQ0xMaXN0OjpWYWxpZElEczo6JyAuICRWYWxpZElEc1N0cmcgLiAnOjpPYmplY3RUeXBlczo6JyAuICRPYmplY3RUeXBlc1N0cmc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICBteSAkQ2FjaGUgICAgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICdBQ0xFZGl0b3JfQUNMJywKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CiAgICByZXR1cm4gJENhY2hlIGlmIHJlZiAkQ2FjaGU7CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICBteSAkU1FMID0gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIG5hbWUKICAgICAgICAgICAgRlJPTSBhY2wgJzsKCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICBteSAkR2x1ZVN0cmcgPSAnV0hFUkUnOwojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgaWYgKCAkVmFsaWRJRHNTdHJnIG5lICdBTEwnICkgewoKICAgICAgICBteSAkVmFsaWRJRHNTdHJnREIgPSBqb2luICcsJywgbWFwIHsgJERCT2JqZWN0LT5RdW90ZSggJF8sICdJbnRlZ2VyJyApIH0KICAgICAgICAgICAgQHsgJFBhcmFte1ZhbGlkSURzfSB9OwoKICAgICAgICAkU1FMIC49ICJXSEVSRSB2YWxpZF9pZCBJTiAoJFZhbGlkSURzU3RyZ0RCKSI7CiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgJEdsdWVTdHJnID0gJ0FORCc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICB9CiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFBhcmFte09iamVjdFR5cGVzfSkgKSB7CgogICAgICAgIG15ICRPYmplY3RUeXBlc1N0cmdEQiA9IGpvaW4gJywnLCBtYXAgeyAiJyIgLiAkREJPYmplY3QtPlF1b3RlKCAkXyApIC4gIiciIH0gJFBhcmFte09iamVjdFR5cGVzfS0+QCo7CgogICAgICAgICRTUUwgLj0gIiRHbHVlU3RyZyBvYmplY3RfdHlwZSBJTiAoJE9iamVjdFR5cGVzU3RyZ0RCKSI7CgogICAgfQoKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSggU1FMID0+ICRTUUwgKTsKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJERhdGF7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICB9CgogICAgIyBzZXQgY2FjaGUKICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgIFR5cGUgID0+ICdBQ0xFZGl0b3JfQUNMJywKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gXCVEYXRhLAogICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgKTsKCiAgICByZXR1cm4gXCVEYXRhOwp9Cgo9aGVhZDIgQUNMTGlzdEdldCgpCgpnZXQgYW4gQUNMIGxpc3Qgd2l0aCBhbGwgQUNMIGRldGFpbHMKCiAgICBteSAkTGlzdCA9ICRBQ0xPYmplY3QtPkFDTExpc3RHZXQoCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICBWYWxpZElEcyA9PiBbJzEnLCcyJ10sICMgb3B0aW9uYWwsIHRvIGZpbHRlciBBQ0xzIHRoYXQgbWF0Y2ggbGlzdGVkIHZhbGlkIElEcwojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgIE9iamVjdFR5cGUgICAgICA9PiBbJ1RpY2tldCddICAgICAgICAgICAjIG9wdGlvbmFsLCBjdXJyZW50bHkgVGlja2V0IG9yIENvbmZpZ0l0ZW0KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICk7CgpSZXR1cm5zOgoKICAgICRMaXN0ID0gWwogICAgICAgIHsKICAgICAgICAgICAgSUQgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ3NvbWUgbmFtZScsCiAgICAgICAgICAgIENvbW1lbnQgICAgICAgPT4gJ0NvbW1lbnQnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICdEZXNjcmlwdGlvbicsCiAgICAgICAgICAgIFZhbGlkSUQgICAgICAgPT4gMSwKICAgICAgICAgICAgQ29uZmlnTWF0Y2ggICA9PiAkQ29uZmlnTWF0Y2hIYXNoUmVmLAogICAgICAgICAgICBDb25maWdDaGFuZ2UgID0+ICRDb25maWdDaGFuZ2VIYXNoUmVmLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgID0+ICcyMDEyLTA3LTA0IDE1OjA4OjAwJywKICAgICAgICAgICAgQ2hhbmdlVGltZSAgICA9PiAnMjAxMi0wNy0wNCAxNTowODowMCcsCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgIE9iamVjdFR5cGVzICAgPT4gWydUaWNrZXQnXSwKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgSUQgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ3NvbWUgbmFtZScsCiAgICAgICAgICAgIENvbW1lbnQgICAgICAgPT4gJ0NvbW1lbnQnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICdEZXNjcmlwdGlvbicsCiAgICAgICAgICAgIFZhbGlkSUQgICAgICAgPT4gMSwKICAgICAgICAgICAgQ29uZmlnTWF0Y2ggICA9PiAkQ29uZmlnTWF0Y2hIYXNoUmVmLAogICAgICAgICAgICBDb25maWdDaGFuZ2UgID0+ICRDb25maWdDaGFuZ2VIYXNoUmVmLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgID0+ICcyMDEyLTA3LTA0IDE1OjA4OjAwJywKICAgICAgICAgICAgQ2hhbmdlVGltZSAgICA9PiAnMjAxMi0wNy0wNCAxNTowODowMCcsCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgIE9iamVjdFR5cGUgICAgPT4gJ0NvbmZpZ0l0ZW0nLAojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgIH0sCiAgICBdOwoKPWN1dAoKc3ViIEFDTExpc3RHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFVzZXJJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRWYWxpZElEc1N0cmc7CiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtWYWxpZElEc30gKSApIHsKICAgICAgICAkVmFsaWRJRHNTdHJnID0gJ0FMTCc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkVmFsaWRJRHNTdHJnID0gam9pbiAnLCcsIEB7ICRQYXJhbXtWYWxpZElEc30gfTsKICAgIH0KIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIG15ICRPYmplY3RUeXBlc1N0cmc7CiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtPYmplY3RUeXBlc30gKSApIHsKICAgICAgICAkT2JqZWN0VHlwZXNTdHJnID0gJ0FMTCc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkT2JqZWN0VHlwZXNTdHJnID0gam9pbiAnLCcsIEB7ICRQYXJhbXtPYmplY3RUeXBlc30gfTsKICAgIH0KIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICAjIGdldCBjYWNoZSBvYmplY3QKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgY2hlY2sgY2FjaGUKIyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgbXkgJENhY2hlS2V5ID0gJ0FDTExpc3RHZXQ6OlZhbGlkSURzOjonIC4gJFZhbGlkSURzU3RyZzsKICAgIG15ICRDYWNoZUtleSA9ICdBQ0xMaXN0R2V0OjpWYWxpZElEczo6JyAuICRWYWxpZElEc1N0cmcgLiAnOjpPYmplY3RUeXBlczo6JyAuICRPYmplY3RUeXBlc1N0cmc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgbXkgJENhY2hlICAgID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgVHlwZSA9PiAnQUNMRWRpdG9yX0FDTCcsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwogICAgcmV0dXJuICRDYWNoZSBpZiAkQ2FjaGU7CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICBteSAkU1FMID0gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBhY2wgJzsKCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICBteSAkR2x1ZVN0cmcgPSAnV0hFUkUnOwojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgaWYgKCAkVmFsaWRJRHNTdHJnIG5lICdBTEwnICkgewoKICAgICAgICBteSAkVmFsaWRJRHNTdHJnREIgPSBqb2luICcsJywgbWFwIHsgJERCT2JqZWN0LT5RdW90ZSggJF8sICdJbnRlZ2VyJyApIH0gQHsgJFBhcmFte1ZhbGlkSURzfSB9OwoKICAgICAgICAkU1FMIC49ICJXSEVSRSB2YWxpZF9pZCBJTiAoJFZhbGlkSURzU3RyZ0RCKSI7CiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgJEdsdWVTdHJnID0gJ0FORCc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICB9CiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFBhcmFte09iamVjdFR5cGVzfSkgKSB7CgogICAgICAgIG15ICRPYmplY3RUeXBlc1N0cmdEQiA9IGpvaW4gJywnLCBtYXAgeyAiJyIgLiAkREJPYmplY3QtPlF1b3RlKCAkXyApIC4gIiciIH0gJFBhcmFte09iamVjdFR5cGVzfS0+QCo7CgogICAgICAgICRTUUwgLj0gIiRHbHVlU3RyZyBvYmplY3RfdHlwZSBJTiAoJE9iamVjdFR5cGVzU3RyZ0RCKSI7CgogICAgfQoKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICRTUUwgLj0gJ09SREVSIEJZIGlkJzsKCiAgICAjIFNRTAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICRTUUwsCiAgICApOwoKICAgIG15IEBBQ0xJRHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBBQ0xJRHMsICRSb3dbMF07CiAgICB9CgogICAgbXkgQERhdGE7CiAgICBmb3IgbXkgJEl0ZW1JRCAoQEFDTElEcykgewoKICAgICAgICBteSAkQUNMRGF0YSA9ICRTZWxmLT5BQ0xHZXQoCiAgICAgICAgICAgIElEICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgICAgIHB1c2ggQERhdGEsICRBQ0xEYXRhOwogICAgfQoKICAgICMgc2V0IGNhY2hlCiAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICBUeXBlICA9PiAnQUNMRWRpdG9yX0FDTCcsCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFxARGF0YSwKICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICk7CgogICAgcmV0dXJuIFxARGF0YTsKfQoKPWhlYWQyIEFDTHNOZWVkU3luYygpCgpDaGVjayBpZiB0aGVyZSBhcmUgQUNMcyB0aGF0IGFyZSBub3QgeWV0IGRlcGxveWVkCgogICAgbXkgJFN5bmNDb3VudCA9ICRBQ0xPYmplY3QtPkFDTHNOZWVkU3luYygpOwoKICAgIFJldHVybnM6CgogICAgJFN5bmNDb3VudCA9IDAgfHwgTnVtYmVyIG9mIEFMQ3MgdGhhdCBuZWVkIHRvIGJlIHN5bmNlZAoKPWN1dAoKc3ViIEFDTHNOZWVkU3luYyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgbXkgJFNRTCA9ICcKICAgICAgICBTRUxFQ1QgQ09VTlQoKikKICAgICAgICBGUk9NIGFjbF9zeW5jJzsKCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSggU1FMID0+ICRTUUwgKTsKCiAgICBteSAkTmVlZFN5bmMgPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJE5lZWRTeW5jID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gJE5lZWRTeW5jOwp9Cgo9aGVhZDIgQUNMc05lZWRTeW5jUmVzZXQoKQoKUmVzZXQgc3luY2hyb25pemF0aW9uIGluZm9ybWF0aW9uIGZvciBBQ0xzLgoKPWN1dAoKc3ViIEFDTHNOZWVkU3luY1Jlc2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oIFNRTCA9PiAnREVMRVRFIEZST00gYWNsX3N5bmMnICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBBQ0xEdW1wKCkKCmdldHMgYSBjb21wbGV0ZSBBQ0wgaW5mb3JtYXRpb24gZHVtcCBmcm9tIHRoZSBEQgoKICAgIG15ICRBQ0xEdW1wID0gJEFDTE9iamVjdC0+QUNMRHVtcCgKICAgICAgICBSZXN1bHRUeXBlICA9PiAnRklMRScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVmYXVsdCBpcyAnRklMRScsIG9ubHkgJ0ZJTEUnIGlzIHN1cHBvcnRlZAogICAgICAgIExvY2F0aW9uICAgID0+ICcvb3B0L290b2JvL0tlcm5lbC9Db25maWcvRmlsZXMvWlpaQUNMLnBtJywgIyBtYW5kYXRvcnkgZm9yIFJlc3VsdFR5cGUgPSAnRklMRScKICAgICAgICBVc2VySUQgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2tlZCwgYnV0IG5vdCByZWFsbHkgdXNlZAogICAgKTsKClJldHVybnM6CgogICAgJEFDTER1bXAgPSAnL29wdC9vdG9iby9LZXJuZWwvQ29uZmlnL0ZpbGVzL1paWkFDTC5wbSc7ICAgICAgICAgIyBvciB1bmRlZiBpZiBjYW4ndCB3cml0ZSB0aGUgZmlsZQoKb3IgaW4gY2FzZSBvZiBTMyBzdXBwb3J0CgogICAgJEFDTER1bXAgPSAnS2VybmVsL0NvbmZpZy9GaWxlcy9aWlpBQ0wucG0nOyAgICAgICAgICAgICAgICAgICAgIyBvciB1bmRlZiBpZiBjYW4ndCB3cml0ZSB0byBTMwoKPWN1dAoKc3ViIEFDTER1bXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFVzZXJJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkZWZhdWx0cwogICAgJFBhcmFte1Jlc3VsdFR5cGV9IC8vPSAnRklMRSc7CgogICAgaWYgKCAkUGFyYW17UmVzdWx0VHlwZX0gZXEgJ0ZJTEUnICkgewogICAgICAgIGlmICggISRQYXJhbXtMb2NhdGlvbn0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIExvY2F0aW9uIGZvciBSZXN1bHRUeXBlIFwnRklMRVwnIScsCiAgICAgICAgICAgICk7CgogICAgICAgIH0KICAgIH0KCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgICMgZ2V0IHZhbGlkIEFDTHMKIyAgICAgbXkgJEFDTExpc3QgPSAkU2VsZi0+QUNMTGlzdEdldCgKIyAgICAgICAgIFVzZXJJRCAgID0+IDEsCiMgICAgICAgICBWYWxpZElEcyA9PiBbMV0sCiMgICAgICk7CiMKIyAgICAgbXkgJUFDTER1bXA7CiMKIyAgICAgQUNMOgojICAgICBmb3IgbXkgJEFDTERhdGEgKCBAeyRBQ0xMaXN0fSApIHsKIwojICAgICAgICAgbmV4dCBBQ0wgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRBQ0xEYXRhKTsKIwojICAgICAgICAgbXkgJFByb3BlcnRpZXM7CiMgICAgICAgICBteSAkUHJvcGVydGllc0RhdGFiYXNlOwojICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJEFDTERhdGEtPntDb25maWdNYXRjaH0gKSApIHsKIyAgICAgICAgICAgICAkUHJvcGVydGllcyAgICAgICAgID0gJEFDTERhdGEtPntDb25maWdNYXRjaH0tPntQcm9wZXJ0aWVzfTsKIyAgICAgICAgICAgICAkUHJvcGVydGllc0RhdGFiYXNlID0gJEFDTERhdGEtPntDb25maWdNYXRjaH0tPntQcm9wZXJ0aWVzRGF0YWJhc2V9OwojICAgICAgICAgfQojCiMgICAgICAgICBteSAkUG9zc2libGU7CiMgICAgICAgICBteSAkUG9zc2libGVBZGQ7CiMgICAgICAgICBteSAkUG9zc2libGVOb3Q7CiMgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkQUNMRGF0YS0+e0NvbmZpZ0NoYW5nZX0gKSApIHsKIyAgICAgICAgICAgICAkUG9zc2libGUgICAgPSAkQUNMRGF0YS0+e0NvbmZpZ0NoYW5nZX0tPntQb3NzaWJsZX07CiMgICAgICAgICAgICAgJFBvc3NpYmxlQWRkID0gJEFDTERhdGEtPntDb25maWdDaGFuZ2V9LT57UG9zc2libGVBZGR9OwojICAgICAgICAgICAgICRQb3NzaWJsZU5vdCA9ICRBQ0xEYXRhLT57Q29uZmlnQ2hhbmdlfS0+e1Bvc3NpYmxlTm90fTsKIyAgICAgICAgIH0KIwojICAgICAgICAgJEFDTER1bXB7ICRBQ0xEYXRhLT57TmFtZX0gfSA9IHsKIyAgICAgICAgICAgICBDcmVhdGVUaW1lID0+ICRBQ0xEYXRhLT57Q3JlYXRlVGltZX0sCiMgICAgICAgICAgICAgQ2hhbmdlVGltZSA9PiAkQUNMRGF0YS0+e0NoYW5nZVRpbWV9LAojICAgICAgICAgICAgIENyZWF0ZUJ5ICAgPT4gJEFDTERhdGEtPntDcmVhdGVCeX0sCiMgICAgICAgICAgICAgQ2hhbmdlQnkgICA9PiAkQUNMRGF0YS0+e0NoYW5nZUJ5fSwKIyAgICAgICAgICAgICBDb21tZW50ICAgID0+ICRBQ0xEYXRhLT57Q29tbWVudH0sCiMgICAgICAgICAgICAgVmFsdWVzICAgICA9PiB7CiMgICAgICAgICAgICAgICAgIFN0b3BBZnRlck1hdGNoICAgICA9PiAkQUNMRGF0YS0+e1N0b3BBZnRlck1hdGNofSB8fCAwLAojICAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzICAgICAgICAgPT4gJFByb3BlcnRpZXMgICAgICAgICAgICAgICAgfHwge30sCiMgICAgICAgICAgICAgICAgIFByb3BlcnRpZXNEYXRhYmFzZSA9PiAkUHJvcGVydGllc0RhdGFiYXNlICAgICAgICB8fCB7fSwKIyAgICAgICAgICAgICAgICAgUG9zc2libGUgICAgICAgICAgID0+ICRQb3NzaWJsZSAgICAgICAgICAgICAgICAgIHx8IHt9LAojICAgICAgICAgICAgICAgICBQb3NzaWJsZUFkZCAgICAgICAgPT4gJFBvc3NpYmxlQWRkICAgICAgICAgICAgICAgfHwge30sCiMgICAgICAgICAgICAgICAgIFBvc3NpYmxlTm90ICAgICAgICA9PiAkUG9zc2libGVOb3QgICAgICAgICAgICAgICB8fCB7fSwKIyAgICAgICAgICAgICB9LAojICAgICAgICAgfTsKIyAgICAgfQojCiMgICAgICMgZGVsZXRlIGNhY2hlCiMgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAojICAgICAgICAgVHlwZSA9PiAnQUNMRWRpdG9yX0FDTCcsCiMgICAgICk7CiMKIyAgICAgbXkgJEFDTEl0ZW1zT3V0cHV0ID0gJyc7CiMgICAgIGZvciBteSAkQUNMTmFtZSAoIHNvcnQga2V5cyAlQUNMRHVtcCApIHsKIwojICAgICAgICAgIyBjcmVhdGUgb3V0cHV0CiMgICAgICAgICAkQUNMSXRlbXNPdXRwdXQgLj0gJFNlbGYtPl9BQ0xJdGVtT3V0cHV0KAojICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJEFDTE5hbWUsCiMgICAgICAgICAgICAgVmFsdWUgICAgICA9PiAkQUNMRHVtcHskQUNMTmFtZX17VmFsdWVzfSwKIyAgICAgICAgICAgICBDb21tZW50ICAgID0+ICRBQ0xEdW1weyRBQ0xOYW1lfXtDb21tZW50fSwKIyAgICAgICAgICAgICBDcmVhdGVUaW1lID0+ICRBQ0xEdW1weyRBQ0xOYW1lfXtDcmVhdGVUaW1lfSwKIyAgICAgICAgICAgICBDaGFuZ2VUaW1lID0+ICRBQ0xEdW1weyRBQ0xOYW1lfXtDaGFuZ2VUaW1lfSwKIyAgICAgICAgICAgICBDcmVhdGVCeSAgID0+ICRBQ0xEdW1weyRBQ0xOYW1lfXtDcmVhdGVCeX0sCiMgICAgICAgICAgICAgQ2hhbmdlQnkgICA9PiAkQUNMRHVtcHskQUNMTmFtZX17Q2hhbmdlQnl9LAojICAgICAgICAgKTsKIyAgICAgfQojCiMgICAgICMgYnVpbGQgY29tbWVudCAodGhlcmVmb3JlIHdlIG5lZWQgdG8gdHJpY2sgb3V0IHRoZSBmaWx0ZXIpCiMgICAgIG15ICRQTUZpbGVPdXRwdXQgPSBzcHJpbnRmIDw8J0VORF9QTV9GSUxFJywgJEFDTEl0ZW1zT3V0cHV0OwojICMgT1RPQk8gY29uZmlnIGZpbGUgKGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkKQojICMgVkVSU0lPTjoxLjEKIyBwYWNrYWdlIEtlcm5lbDo6Q29uZmlnOjpGaWxlczo6WlpaQUNMOwojIHVzZSBzdHJpY3Q7CiMgdXNlIHdhcm5pbmdzOwojIG5vIHdhcm5pbmdzICdyZWRlZmluZSc7ICMjIG5vIGNyaXRpYyBxdyhUZXN0aW5nQW5kRGVidWdnaW5nOjpQcm9oaWJpdE5vV2FybmluZ3MpCiMgdXNlIHV0Zjg7CiMgc3ViIExvYWQgewojICAgICBteSAoJEZpbGUsICRTZWxmKSA9IEBfOwojCiMgJXMKIwojICAgICByZXR1cm47CiMgfQojIDE7CiMgRU5EX1BNX0ZJTEUKICAgIG15ICRQTUZpbGVPdXRwdXQgPSA8PCdFTkRfUE1fRklMRSc7CiMgT1RPQk8gY29uZmlnIGZpbGUgKGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkKQojIFZFUlNJT046MS4xCnBhY2thZ2UgS2VybmVsOjpDb25maWc6OkZpbGVzOjpaWlpBQ0w7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKbm8gd2FybmluZ3MgJ3JlZGVmaW5lJzsgIyMgbm8gY3JpdGljIHF3KFRlc3RpbmdBbmREZWJ1Z2dpbmc6OlByb2hpYml0Tm9XYXJuaW5ncykKdXNlIHV0Zjg7CnN1YiBMb2FkIHsKICAgIG15ICgkRmlsZSwgJFNlbGYpID0gQF87CgpFTkRfUE1fRklMRQogICAgZm9yIG15ICRPYmplY3RUeXBlICggcXcoVGlja2V0IENvbmZpZ0l0ZW0pICkgewogICAgICAgICMgZ2V0IHZhbGlkIEFDTHMKICAgICAgICBteSAkQUNMTGlzdCA9ICRTZWxmLT5BQ0xMaXN0R2V0KAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICBWYWxpZElEcyAgICA9PiBbMV0sCiAgICAgICAgICAgIE9iamVjdFR5cGVzID0+IFskT2JqZWN0VHlwZV0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJUFDTER1bXA7CgogICAgICAgIEFDTDoKICAgICAgICBmb3IgbXkgJEFDTERhdGEgKCBAeyRBQ0xMaXN0fSApIHsKCiAgICAgICAgICAgIG5leHQgQUNMIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkQUNMRGF0YSk7CgogICAgICAgICAgICBteSAkUHJvcGVydGllczsKICAgICAgICAgICAgbXkgJFByb3BlcnRpZXNEYXRhYmFzZTsKICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJEFDTERhdGEtPntDb25maWdNYXRjaH0gKSApIHsKICAgICAgICAgICAgICAgICRQcm9wZXJ0aWVzICAgICAgICAgPSAkQUNMRGF0YS0+e0NvbmZpZ01hdGNofS0+e1Byb3BlcnRpZXN9OwogICAgICAgICAgICAgICAgJFByb3BlcnRpZXNEYXRhYmFzZSA9ICRBQ0xEYXRhLT57Q29uZmlnTWF0Y2h9LT57UHJvcGVydGllc0RhdGFiYXNlfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFBvc3NpYmxlOwogICAgICAgICAgICBteSAkUG9zc2libGVBZGQ7CiAgICAgICAgICAgIG15ICRQb3NzaWJsZU5vdDsKICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJEFDTERhdGEtPntDb25maWdDaGFuZ2V9ICkgKSB7CiAgICAgICAgICAgICAgICAkUG9zc2libGUgICAgPSAkQUNMRGF0YS0+e0NvbmZpZ0NoYW5nZX0tPntQb3NzaWJsZX07CiAgICAgICAgICAgICAgICAkUG9zc2libGVBZGQgPSAkQUNMRGF0YS0+e0NvbmZpZ0NoYW5nZX0tPntQb3NzaWJsZUFkZH07CiAgICAgICAgICAgICAgICAkUG9zc2libGVOb3QgPSAkQUNMRGF0YS0+e0NvbmZpZ0NoYW5nZX0tPntQb3NzaWJsZU5vdH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRBQ0xEdW1weyAkQUNMRGF0YS0+e05hbWV9IH0gPSB7CiAgICAgICAgICAgICAgICBDcmVhdGVUaW1lID0+ICRBQ0xEYXRhLT57Q3JlYXRlVGltZX0sCiAgICAgICAgICAgICAgICBDaGFuZ2VUaW1lID0+ICRBQ0xEYXRhLT57Q2hhbmdlVGltZX0sCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgID0+ICRBQ0xEYXRhLT57Q3JlYXRlQnl9LAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICA9PiAkQUNMRGF0YS0+e0NoYW5nZUJ5fSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgPT4gJEFDTERhdGEtPntDb21tZW50fSwKICAgICAgICAgICAgICAgIFZhbHVlcyAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFN0b3BBZnRlck1hdGNoICAgICA9PiAkQUNMRGF0YS0+e1N0b3BBZnRlck1hdGNofSB8fCAwLAogICAgICAgICAgICAgICAgICAgIFByb3BlcnRpZXMgICAgICAgICA9PiAkUHJvcGVydGllcyAgICAgICAgICAgICAgICB8fCB7fSwKICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzRGF0YWJhc2UgPT4gJFByb3BlcnRpZXNEYXRhYmFzZSAgICAgICAgfHwge30sCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGUgICAgICAgICAgID0+ICRQb3NzaWJsZSAgICAgICAgICAgICAgICAgIHx8IHt9LAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlQWRkICAgICAgICA9PiAkUG9zc2libGVBZGQgICAgICAgICAgICAgICB8fCB7fSwKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZU5vdCAgICAgICAgPT4gJFBvc3NpYmxlTm90ICAgICAgICAgICAgICAgfHwge30sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBkZWxldGUgY2FjaGUKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICAgICAgVHlwZSA9PiAnQUNMRWRpdG9yX0FDTCcsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEFDTEl0ZW1zT3V0cHV0ID0gJyc7CiAgICAgICAgZm9yIG15ICRBQ0xOYW1lICggc29ydCBrZXlzICVBQ0xEdW1wICkgewoKICAgICAgICAgICAgIyBjcmVhdGUgb3V0cHV0CiAgICAgICAgICAgICRBQ0xJdGVtc091dHB1dCAuPSAkU2VsZi0+X0FDTEl0ZW1PdXRwdXQoCiAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICRBQ0xOYW1lLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICA9PiAkQUNMRHVtcHskQUNMTmFtZX17VmFsdWVzfSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgPT4gJEFDTER1bXB7JEFDTE5hbWV9e0NvbW1lbnR9LAogICAgICAgICAgICAgICAgQ3JlYXRlVGltZSA9PiAkQUNMRHVtcHskQUNMTmFtZX17Q3JlYXRlVGltZX0sCiAgICAgICAgICAgICAgICBDaGFuZ2VUaW1lID0+ICRBQ0xEdW1weyRBQ0xOYW1lfXtDaGFuZ2VUaW1lfSwKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgPT4gJEFDTER1bXB7JEFDTE5hbWV9e0NyZWF0ZUJ5fSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgPT4gJEFDTER1bXB7JEFDTE5hbWV9e0NoYW5nZUJ5fSwKICAgICAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJE9iamVjdFR5cGUsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIGNvbW1lbnQgKHRoZXJlZm9yZSB3ZSBuZWVkIHRvIHRyaWNrIG91dCB0aGUgZmlsdGVyKQogICAgICAgICRQTUZpbGVPdXRwdXQgLj0gc3ByaW50ZiA8PCdFTkRfUE1fRklMRScsICRBQ0xJdGVtc091dHB1dDsKJXMKRU5EX1BNX0ZJTEUKICAgIH0KICAgICRQTUZpbGVPdXRwdXQgLj0gPDwnRU5EX1BNX0ZJTEUnOwogICAgcmV0dXJuOwp9CjE7CkVORF9QTV9GSUxFCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgaWYgKCAkU2VsZi0+e1MzQWN0aXZlfSApIHsKCiAgICAgICAgIyByZW1vdmUgdGhlIGxlYWRpbmcgL29wdC9vdG9ibyBhcyB0aGUgaG9tZSBwcmVmaXggaXMgYWRkZWQgYXV0b21hdGljYWxseSBpbiB0aGUgUzMgc3RvcmFnZSBvYmplY3QKICAgICAgICBteSAkSG9tZSAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKICAgICAgICBteSAkWlpaRmlsZVBhdGggPSAkUGFyYW17TG9jYXRpb259OwogICAgICAgICRaWlpGaWxlUGF0aCA9fiBze14kSG9tZS8qfXt9OwoKICAgICAgICBteSAkU3RvcmFnZVMzT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0b3JhZ2U6OlMzJyk7CgogICAgICAgICMgb25seSB3cml0ZSB0byBTMywgbm8gZXh0cmEgY29weSBpbiB0aGUgZmlsZSBzeXN0ZW0KICAgICAgICByZXR1cm4gJFN0b3JhZ2VTM09iamVjdC0+U3RvcmVPYmplY3QoCiAgICAgICAgICAgIEtleSAgICAgPT4gJFpaWkZpbGVQYXRoLAogICAgICAgICAgICBDb250ZW50ID0+ICRQTUZpbGVPdXRwdXQsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RmlsZVdyaXRlKAogICAgICAgIExvY2F0aW9uID0+ICRQYXJhbXtMb2NhdGlvbn0sCiAgICAgICAgQ29udGVudCAgPT4gXCRQTUZpbGVPdXRwdXQsCiAgICAgICAgTW9kZSAgICAgPT4gJ3V0ZjgnLAogICAgICAgIFR5cGUgICAgID0+ICdMb2NhbCcsCiAgICApOwoKICAgICMgdXBkYXRlIHByZXNlbGVjdGlvbiBjYWNoZQogICAgI215ICRGaWVsZFJlc3RyaWN0aW9uc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkZpZWxkUmVzdHJpY3Rpb25zJyk7CiAgICAjJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5TZXRBQ0xQcmVzZWxlY3Rpb25DYWNoZSgpOwp9Cgo9aGVhZDIgQUNMSW1wb3J0KCkKCmltcG9ydCBhbiBBQ0wgWUFNTCBmaWxlL2NvbnRlbnQKCiAgICBteSAkQUNMSW1wb3J0ID0gJEFDTE9iamVjdC0+QUNMSW1wb3J0KAogICAgICAgIENvbnRlbnQgICAgICAgICAgICAgICAgICAgPT4gJFlBTUxDb250ZW50LCAjIG1hbmRhdG9yeSwgWUFNTCBmb3JtYXQKICAgICAgICBPdmVyd3JpdGVFeGlzdGluZ0VudGl0aWVzID0+IDAsICAgICAgICAgICAgIyAwIHx8IDEKICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgID0+IDEsICAgICAgICAgICAgIyBtYW5kYXRvcnkKICAgICk7CgpSZXR1cm5zOgoKICAgICRBQ0xJbXBvcnQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICMgMSBpZiBzdWNjZXNzIG9yIHVuZGVmIGlmIG9wZXJhdGlvbiBjb3VsZCBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICBiZSBwZXJmb3JtZWQKICAgICAgICBNZXNzYWdlICAgICA9PiAnVGhlIE1lc3NhZ2UgdG8gc2hvdy4nLCAgICAgIyBlcnJvciBtZXNzYWdlCiAgICAgICAgQWRkZWRBQ0xzICAgPT4gJ0FDTDEsIEFDTDInLCAgICAgICAgICAgICAgICMgbGlzdCBvZiBBQ0xzIGNvcnJlY3RseSBhZGRlZAogICAgICAgIFVwZGF0ZWRBQ0xzID0+ICdBQ0wzLCBBQ0w0JywgICAgICAgICAgICAgICAjIGxpc3Qgb2YgQUNMcyBjb3JyZWN0bHkgdXBkYXRlZAogICAgICAgIEFDTEVycm9ycyAgID0+ICdBQ0w1JywgICAgICAgICAgICAgICAgICAgICAjIGxpc3Qgb2YgQUNMcyB0aGF0IGNvdWxkIG5vdCBiZSBhZGRlZCBvciB1cGRhdGVkCiAgICB9OwoKPWN1dAoKc3ViIEFDTEltcG9ydCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb250ZW50IFVzZXJJRCkpIHsKCiAgICAgICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIiROZWVkZWQgaXMgbWlzc2luZyBjYW4gbm90IGNvbnRpbnVlLiIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgIG15ICRBQ0xEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCggRGF0YSA9PiAkUGFyYW17Q29udGVudH0gKTsKCiAgICBpZiAoIHJlZiAkQUNMRGF0YSBuZSAnQVJSQVknICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoIkNvdWxkbid0IHJlYWQgQUNMIGNvbmZpZ3VyYXRpb24gZmlsZS4gUGxlYXNlIG1ha2Ugc3VyZSB0aGUgZmlsZSBpcyB2YWxpZC4iKSwKICAgICAgICB9OwogICAgfQoKICAgIG15IEBVcGRhdGVkQUNMczsKICAgIG15IEBBZGRlZEFDTHM7CiAgICBteSBAQUNMRXJyb3JzOwoKICAgIEFDTDoKICAgIGZvciBteSAkQUNMICggQHskQUNMRGF0YX0gKSB7CgogICAgICAgIG5leHQgQUNMIGlmICEkQUNMOwogICAgICAgIG5leHQgQUNMIGlmIHJlZiAkQUNMIG5lICdIQVNIJzsKCiAgICAgICAgJEFDTCA9ICRTZWxmLT5fQUNMTWlncmF0ZUZyb20zMygKICAgICAgICAgICAgQUNMICAgID0+ICRBQ0wsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBteSBARXhpc3RpbmdBQ0xzID0gQHsgJFNlbGYtPkFDTExpc3RHZXQoIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSApIHx8IFtdIH07CiAgICAgICAgQEV4aXN0aW5nQUNMcyA9IGdyZXAgeyAkXy0+e05hbWV9IGVxICRBQ0wtPntOYW1lfSB9IEBFeGlzdGluZ0FDTHM7CgogICAgICAgIGlmICggJFBhcmFte092ZXJ3cml0ZUV4aXN0aW5nRW50aXRpZXN9ICYmICRFeGlzdGluZ0FDTHNbMF0gKSB7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPkFDTFVwZGF0ZSgKICAgICAgICAgICAgICAgICV7ICRFeGlzdGluZ0FDTHNbMF0gfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICRBQ0wtPntOYW1lfSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICAgID0+ICRBQ0wtPntDb21tZW50fSwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgID0+ICRBQ0wtPntEZXNjcmlwdGlvbn0gICAgfHwgJycsCiAgICAgICAgICAgICAgICBTdG9wQWZ0ZXJNYXRjaCA9PiAkQUNMLT57U3RvcEFmdGVyTWF0Y2h9IHx8IDAsCiAgICAgICAgICAgICAgICBDb25maWdNYXRjaCAgICA9PiAkQUNMLT57Q29uZmlnTWF0Y2h9ICAgIHx8IHVuZGVmLAogICAgICAgICAgICAgICAgQ29uZmlnQ2hhbmdlICAgPT4gJEFDTC0+e0NvbmZpZ0NoYW5nZX0gICB8fCB1bmRlZiwKICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgICAgID0+ICRBQ0wtPntWYWxpZElEfSAgICAgICAgfHwgMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRTdWNjZXNzKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBVcGRhdGVkQUNMcywgJEFDTC0+e05hbWV9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAQUNMRXJyb3JzLCAkQUNMLT57TmFtZX07CiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBub3cgYWRkIHRoZSBBQ0wKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+QUNMQWRkKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJEFDTC0+e05hbWV9LAogICAgICAgICAgICAgICAgQ29tbWVudCAgICAgICAgPT4gJEFDTC0+e0NvbW1lbnR9LAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJEFDTC0+e0Rlc2NyaXB0aW9ufSAgfHwgJycsCiAgICAgICAgICAgICAgICBDb25maWdNYXRjaCAgICA9PiAkQUNMLT57Q29uZmlnTWF0Y2h9ICB8fCB1bmRlZiwKICAgICAgICAgICAgICAgIENvbmZpZ0NoYW5nZSAgID0+ICRBQ0wtPntDb25maWdDaGFuZ2V9IHx8IHVuZGVmLAogICAgICAgICAgICAgICAgU3RvcEFmdGVyTWF0Y2ggPT4gJEFDTC0+e1N0b3BBZnRlck1hdGNofSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgICAgID0+ICRBQ0wtPntWYWxpZElEfSB8fCAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiMgUm90aGVyT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgICAgICBPYmplY3RUeXBlICAgICA9PiAkQUNMLT57T2JqZWN0VHlwZX0gfHwgJ1RpY2tldCcsCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJFN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgIHB1c2ggQEFkZGVkQUNMcywgJEFDTC0+e05hbWV9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAQUNMRXJyb3JzLCAkQUNMLT57TmFtZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyB1cGRhdGUgcHJlc2VsZWN0aW9uIGNhY2hlCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICBteSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpGaWVsZFJlc3RyaWN0aW9ucycpOwojICAgICAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPlNldEFDTFByZXNlbGVjdGlvbkNhY2hlKCk7CiAgICBmb3IgbXkgJEFDTFR5cGUgKCBxdyhUaWNrZXQgSVRTTUNvbmZpZ0l0ZW0pICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjonIC4gJEFDTFR5cGUgLiAnOjpGaWVsZFJlc3RyaWN0aW9ucycpLT5TZXRBQ0xQcmVzZWxlY3Rpb25DYWNoZSgpOwogICAgfQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgICAgID0+IDEsCiAgICAgICAgQWRkZWRBQ0xzICAgPT4gam9pbiggJywgJywgQEFkZGVkQUNMcyApICAgfHwgJycsCiAgICAgICAgVXBkYXRlZEFDTHMgPT4gam9pbiggJywgJywgQFVwZGF0ZWRBQ0xzICkgfHwgJycsCiAgICAgICAgQUNMRXJyb3JzICAgPT4gam9pbiggJywgJywgQEFDTEVycm9ycyApICAgfHwgJycsCiAgICB9Owp9Cgo9YmVnaW4gSW50ZXJuYWw6Cgo9Y3V0Cgo9aGVhZDIgX0FDTEl0ZW1PdXRwdXQoKQoKY29udmVydHMgYW4gQUNMIHN0cnVjdHVyZSB0byBwZXJsIGNvZGUgc3VpdGFibGUgdG8gYmUgc2F2ZWQgb24gYSBwZXJsIGZpbGUuCgogICAgbXkgJE91dHB1dCA9ICRBQ0xPYmplY3QtPl9BQ0xJdGVtT3V0cHV0ICgKICAgICAgICBLZXkgPT4gJ3NvbWUgQUNMIG5hbWUnLAogICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgUHJvcGVydGllcyA9PiB7CiAgICAgICAgICAgICAgICBUaWNrZXQgPT4gewogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+IFsgJ3NvbWUgcHJpb3JpdHknIF0sCiAgICAgICAgICAgICAgICAgICAgUXVldWUgICAgPT4gWyAnc29tZSBxdWV1ZScgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFByb3BlcnRpZXNEYXRhYmFzZSA9PiB7IH0sICAgICAgICAgICAgICAgICAgICAgICMgc2ltaWxhciB0byBQcm9wZXJ0aWVzIG9yIGVtcHR5IGhhc2ggcmVmCiAgICAgICAgICAgIFBvc3NpYmxlID0+IHsKICAgICAgICAgICAgICAgIFRpY2tldCA9PiB7CiAgICAgICAgICAgICAgICBRdWV1ZSA9PiBbICdzb21lIG90aGVyIHF1ZXVlJyBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBQb3NzaWJsZU5vdCA9PiB7IH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNpbWlsYXIgdG8gUG9zc2libGUgb3IgZW1wdHkgaGFzaCByZWYKICAgICAgICAgICAgUG9zc2libGVBZGQgPT4geyB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaW1pbGFyIHRvIFBvc3NpYmxlIG9yIGVtcHR5IGhhc2ggcmVmCiAgICAgICAgICAgIFN0b3BBZnRlck1hdGNoID0+IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgfSwKICAgICAgICBDb21tZW50ICAgID0+ICdzb21lIGNvbW1lbnQnLAojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgIE9iamVjdFR5cGUgPT4gJ1RpY2tldCcsCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgQ3JlYXRlVGltZSA9PiAnMjAxNC0wNi0wMyAxOTowMzo1NycsCiAgICAgICAgQ2hhbmdlVGltZSA9PiAnMjAxNC0wNi0wMyAxOTo1MToxNycsCiAgICAgICAgQ3JlYXRlQnkgICA9PiAnc29tZSB1c2VyIGxvZ2luJywKICAgICAgICBDaGFuZ2VCeSAgID0+ICdzb21lIHVzZXIgbG9naW4nLAogICAgKTsKCnJldHVybnM6CgogICAgJE91dHB1dCA9ICcKICAgICAgICAjIENyZWF0ZWQ6IDIwMTQtMDYtMDMgMTk6MDM6NTcgKHNvbWUgdXNlciBsb2dpbikKICAgICAgICAjIENoYW5nZWQ6IDIwMTQtMDYtMDMgMTk6NTE6MTcgKHNvbWUgdXNlciBsb2dpbikKICAgICAgICAjIENvbW1lbnQ6IHNvbWUgY29tbWVudAojIFJvdGhlck9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAojICAgICAgICAgJFNlbGYtPntUaWNrZXRBY2x9LT57IjEwMC1FeGFtcGxlLUFDTCJ9ID0gewogICAgICAgICRTZWxmLT57JFBhcmFte09iamVjdFR5cGV9IC4gJ0FjbCd9LT57IjEwMC1FeGFtcGxlLUFDTCJ9ID0gewojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgXFwnUG9zc2libGVcXCcgPT4gewogICAgICAgICAgICBcXCdUaWNrZXRcXCcgPT4gewogICAgICAgICAgICAgIFxcJ1F1ZXVlXFwnID0+IFsKICAgICAgICAgICAgICAgIFxcJ3NvbWUgb3RoZXIgcXVldWVcXCcKICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICBcXCdQb3NzaWJsZUFkZFxcJyA9PiB7fSwKICAgICAgICAgIFxcJ1Bvc3NpYmxlTm90XFwnID0+IHt9LAogICAgICAgICAgXFwnUHJvcGVydGllc1xcJyA9PiB7CiAgICAgICAgICAgIFxcJ1RpY2tldFxcJyA9PiB7CiAgICAgICAgICAgICAgXFwnUHJpb3JpdHlcXCcgPT4gWwogICAgICAgICAgICAgICAgXFwnc29tZSBwcmlvcml0eVxcJwogICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgXFwnUXVldWVcXCcgPT4gWwogICAgICAgICAgICAgICAgXFwnc29tZSBxdWV1ZVxcJwogICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgICAgfSwKICAgICAgICAgIFxcJ1Byb3BlcnRpZXNEYXRhYmFzZVxcJyA9PiB7fSwKICAgICAgICAgIFxcJ1N0b3BBZnRlck1hdGNoXFwnID0+IDAKICAgICAgICB9OwogICAgICAgICc7Cgo9Y3V0CgpzdWIgX0FDTEl0ZW1PdXRwdXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgIyBzZXQgZGVmYXVsdCBmb3Igb2JqZWN0IHR5cGUKICAgICRQYXJhbXtPYmplY3RUeXBlfSAvLz0gJ1RpY2tldCc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgIyB0aG9zZSBwYXJhbXMgYXJlIGV4cGVjdGVkIHRvIG9ubHkgY29udGFpbiBvbmUgbGluZQogICAgZm9yIG15ICRLZXkgKHF3KCBDcmVhdGVCeSBDaGFuZ2VCeSBDb21tZW50ICkpIHsKICAgICAgICAoICRQYXJhbXskS2V5fSApID0gJFBhcmFteyRLZXl9ID1+IC8oLis/KSQvbTsKICAgIH0KCiAgICBteSAkT3V0cHV0ID0gIiMgQ3JlYXRlZDogJFBhcmFte0NyZWF0ZVRpbWV9ICgkUGFyYW17Q3JlYXRlQnl9KVxuIjsKICAgICRPdXRwdXQgLj0gIiMgQ2hhbmdlZDogJFBhcmFte0NoYW5nZVRpbWV9ICgkUGFyYW17Q2hhbmdlQnl9KVxuIjsKCiAgICBpZiAoICRQYXJhbXtDb21tZW50fSApIHsKICAgICAgICAkT3V0cHV0IC49ICIjIENvbW1lbnQ6ICRQYXJhbXtDb21tZW50fVxuIjsKICAgIH0KCiAgICAkT3V0cHV0IC49ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPkR1bXAoCiAgICAgICAgJFBhcmFte1ZhbHVlfSwKICAgICk7CgogICAgIyByZXBsYWNlICJbZW1wdHldIiBieSAnJwogICAgJE91dHB1dCA9fiBze1xbZW1wdHlcXX17fXhtc2c7CgogICAgbXkgJE5hbWUgPSAkUGFyYW17S2V5fTsKICAgICROYW1lID1+IHN7XFx9e1xcXFx9eG1zZzsKICAgICROYW1lID1+IHN7XCd9e1xcJ314bXNnOwojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICAgbXkgJEtleSA9ICckU2VsZi0+e1RpY2tldEFjbH0tPntcJycgLiAkTmFtZSAuICdcJ30nOwogICAgbXkgJEtleSA9ICckU2VsZi0+eycgLiAkUGFyYW17T2JqZWN0VHlwZX0gLiAnQWNsfS0+e1wnJyAuICROYW1lIC4gJ1wnfSc7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgJE91dHB1dCA9fiBze1wkVkFSMX17JEtleX1teHM7CgogICAgcmV0dXJuICRPdXRwdXQgLiAiXG4iOwp9Cgo9aGVhZDIgX0FDTE1pZ3JhdGVGcm9tMzMoKQoKVXBkYXRlcyBBQ0xzIHN0cnVjdHVyZSBteSBjaGFuZ2luZyB0aGUgUG9zc2libGUtPkFjdGlvbiBoYXNoIHJlZiB0byBhIFBvc3NpYmxlTm90LT5BY3Rpb24gYXJyYXkgcmVmCndpdGgganVzdCB0aGUgZWxlbWVudHMgdGhhdCB3aGVyZSBzZXQgdG8gMCBpbiB0aGUgb3JpZ2luYWwgQUNMOgoKICAgIG15ICRBQ0wgPSAkQUNMT2JqZWN0LT5fQUNMTWlncmF0ZUZyb20zMyAoCiAgICAgICAgJEFDTCA9PiB7CiAgICAgICAgICAgIElEICAgICAgICAgID0+IDEyMywKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ3NvbWUgbmFtZScsCiAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICcnLAogICAgICAgICAgICBDb21tZW50ICAgICA9PiAnQ29tbWVudCcsCiAgICAgICAgICAgIENvbmZpZ01hdGNoID0+IHsKICAgICAgICAgICAgICAgIFByb3BlcnRpZXMnID0+IHt9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdDaGFuZ2UgPT4gewogICAgICAgICAgICAgICAgUG9zc2libGUgPT4ge30KICAgICAgICAgICAgICAgICAgICBBY3Rpb24gPT4gewogICAgICAgICAgICAgICAgICAgICAgICBBZ2VudFRpY2tldFBob25lICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgQWdlbnRUaWNrZXRQcmludCAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIEFnZW50VGlja2V0Wm9vbSAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBBZ2VudFRpY2tldENMb3NlICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgQWdlbnRUaWNrZXRDb21wb3NlID0+IDAsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vdCA9PiB7fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3RvcEFmdGVyTWF0Y2ggPT4gMSwKICAgICAgICAgICAgVmFsaWRJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgQ3JlYXRlVGltZSAgICAgPT4gJzIwMTMtMDktMjAgMTE6NTY6MDUnLAogICAgICAgICAgICBDcmVhdGVCeSAgICAgICA9PiAncm9vdEBsb2NhbGhvc3QnLAogICAgICAgICAgICBDaGFuZ2VUaW1lICAgICA9PiAnMjAxNC0wNi0xNiAxMTozMTo1NScsCiAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgID0+ICdyb290QGxvY2FsaG9zdCcsCiAgICAgICAgfTsKICAgICAgICBVc2VySUQgPT4gMTIzLAogICAgKQoKUmV0dXJuczoKCiAgICAgICAgJEFDTCA9IHsKICAgICAgICAgICAgSUQgICAgICAgICAgPT4gMTIzLAogICAgICAgICAgICBOYW1lICAgICAgICA9PiAnc29tZSBuYW1lJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJycsCiAgICAgICAgICAgIENvbW1lbnQgICAgID0+ICdDb21tZW50JywKICAgICAgICAgICAgQ29uZmlnTWF0Y2ggPT4gewogICAgICAgICAgICAgICAgUHJvcGVydGllcycgPT4ge30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0NoYW5nZSA9PiB7CiAgICAgICAgICAgICAgICBQb3NzaWJsZSA9PiB7fSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm90ID0+IHsKICAgICAgICAgICAgICAgICAgICBBY3Rpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnRUaWNrZXRDTG9zZScsCiAgICAgICAgICAgICAgICAgICAgICAgICdBZ2VudFRpY2tldENvbXBvc2UnLAogICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnRUaWNrZXRQcmludCcKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfQogICAgICAgICAgICBTdG9wQWZ0ZXJNYXRjaCA9PiAxLAogICAgICAgICAgICBWYWxpZElEICAgICAgICA9PiAxLAogICAgICAgICAgICBDcmVhdGVCeSAgICAgICA9PiAncm9vdEBsb2NhbGhvc3QnLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgICA9PiAnMjAxMy0wOS0yMCAxMTo1NjowNScsCiAgICAgICAgICAgIENoYW5nZVRpbWUgICAgID0+ICcyMDE0LTA2LTE2IDExOjMxOjU1JywKICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgPT4gJ3Jvb3RAbG9jYWxob3N0JywKICAgICAgICB9OwoKPWN1dAoKc3ViIF9BQ0xNaWdyYXRlRnJvbTMzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEFDTCA9ICRQYXJhbXtBQ0x9OwoKICAgIHJldHVybiAkQUNMIGlmICFyZWYgJEFDTC0+e0NvbmZpZ0NoYW5nZX07CiAgICByZXR1cm4gJEFDTCBpZiAhJEFDTC0+e0NvbmZpZ0NoYW5nZX0tPntQb3NzaWJsZX0tPntBY3Rpb259OwogICAgcmV0dXJuICRBQ0wgaWYgcmVmICRBQ0wtPntDb25maWdDaGFuZ2V9LT57UG9zc2libGV9LT57QWN0aW9ufSBuZSAnSEFTSCc7CgogICAgIyBjb252ZXJ0IG9sZCBoYXNoIGludG8gYW4gYXJyYXkgdXNpbmcgb25seSB0aGUga2V5cyBzZXQgdG8gMCwgYW5kIHNraXAgdGhvc2UgdGhhdCBhcmUgc2V0CiAgICAjIHRvIDEsIHNldCB0aGVtIGFzIFBvc3NpYmxlTm90IGFuZCBkZWxldGUgdGhlIFBvc3NpYmxlLT5BY3Rpb24gc2VjdGlvbiBmcm9tIHRoZSBBQ0wuCiAgICBteSBATmV3QWN0aW9uID0gZ3JlcCB7ICRBQ0wtPntDb25maWdDaGFuZ2V9LT57UG9zc2libGV9LT57QWN0aW9ufS0+eyRffSA9PSAwIH0KICAgICAgICBzb3J0IGtleXMgJXsgJEFDTC0+e0NvbmZpZ0NoYW5nZX0tPntQb3NzaWJsZX0tPntBY3Rpb259IH07CgogICAgZGVsZXRlICRBQ0wtPntDb25maWdDaGFuZ2V9LT57UG9zc2libGV9LT57QWN0aW9ufTsKICAgICRBQ0wtPntDb25maWdDaGFuZ2V9LT57UG9zc2libGVOb3R9LT57QWN0aW9ufSA9IFxATmV3QWN0aW9uOwoKICAgIHJldHVybiAkQUNMOwp9Cgo9ZW5kIEludGVybmFsOgoKPWN1dAoKMTsK</File>
        <File Location="Custom/Kernel/System/CIAttachmentStorage/AttachmentStorageDB.pm" Permission="660" Encode="Base64">IyAtLQojIEtlcm5lbC9TeXN0ZW0vQ0lBdHRhY2htZW50U3RvcmFnZS9BdHRhY2htZW50U3RvcmFnZURCLnBtIC0gYXR0YWNobWVudCBzdG9yYWdlIGluIGxvY2FsIGRhdGEgYmFzZQojIENvcHlyaWdodCAoQykgMjAwNi0yMDE2IGMuYS5wLmUuIElUIEdtYkgsIGh0dHA6Ly93d3cuY2FwZS1pdC5kZQojCiMgd3JpdHRlbi9lZGl0ZWQgYnk6CiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNhcGUtaXQoZG90KWRlCiMgKiBBbm5hKGRvdClMaXR2aW5vdmEoYXQpY2FwZS1pdChkb3QpZGUKIyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMgKiBUb3JzdGVuKGRvdClUaGF1KGF0KWNhcGUoZGFzaClpdChkb3QpZGUKIyAqIE1hcmlvKGRvdClJbGxpbmdlcihhdCljYXBlKGRhc2gpaXQoZG90KWRlCiMKIyAtLQojICRJZDogQXR0YWNobWVudFN0b3JhZ2VEQi5wbSx2IDEuMTEgMjAxNi8wNS8xOCAwNzo0MDo0NyB0dG8gRXhwICQKIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlREI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTUlNRTo6QmFzZTY0Owp1c2UgRGlnZXN0OjpNRDUgcXcobWQ1X2hleCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlREIKCj1oZWFkMSBTWU5PUFNJUwoKUHJvdmlkZXMgYXR0YWNobWVudCBoYW5kbGluZyBmb3IgZGF0YSBiYXNlIGJhY2tlbmQgLSBsb2NhbCwgT1RSUy1kYXRhIGJhc2UuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBBdHRhY2htZW50U3RvcmFnZURCIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEF0dGFjaG1lbnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q0lBdHRhY2htZW50U3RvcmFnZTo6QXR0YWNobWVudFN0b3JhZ2VEQicpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAkU2VsZi0+e0RCT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIEF0dGFjaG1lbnRBZGQoKQoKY3JlYXRlIGEgbmV3IHN0ZC4gYXR0YWNobWVudAoKICAgIG15ICRJRCA9ICRBdHRhY2htZW50T2JqZWN0LT5BdHRhY2htZW50QWRkKAogICAgICAgIEF0dERpcklEID0+IDEyMywKICAgICAgICBEYXRhUmVmICA9PiBcJFNvbWVDb250ZW50LAogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAkSUQgPSAwOwoKICAgICNjaGVjayByZXF1aXJlZCBzdHVmZi4uLgogICAgZm9yZWFjaCAocXcoQXR0RGlySUQgRGF0YVJlZikpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9yJywgTWVzc2FnZSA9PiAiTmVlZCAkXyEiICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgI2VuY29kZSBhdHRhY2htZW50IGlmIGl0J3MgYSBwb3N0Z3Jlc3FsIGJhY2tlbmQuLi4KICAgIGlmICggISRTZWxmLT57REJPYmplY3R9LT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdEaXJlY3RCbG9iJykgKSB7CiAgICAgICAgJFNlbGYtPntFbmNvZGVPYmplY3R9LT5FbmNvZGVPdXRwdXQoICRQYXJhbXtEYXRhUmVmfSApOwoKICAgICAgICAjb3ZlcndyaXRlIGV4aXN0aW5nIHZhbHVlIGluc3RlYWQgb2YgdXNpbmcgYW5vdGhlciBmaWxlc2l6ZSBvZiBtZW1vcnkuLi4KICAgICAgICAkeyAkUGFyYW17RGF0YVJlZn0gfSA9IGVuY29kZV9iYXNlNjQoICR7ICRQYXJhbXtEYXRhUmVmfSB9ICk7CiAgICB9CgogICAgI2RiIHF1b3RpbmcuLi4KICAgIGZvcmVhY2ggKHF3KCBBdHREaXJJRCkpIHsKICAgICAgICAkUGFyYW17JF99ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17JF99LCAnSW50ZWdlcicgKTsKICAgIH0KCiAgICAjYnVpbGQgc3FsLi4uCiAgICBteSAkU1FMID0gIiI7CiAgICBpZiAoICRTZWxmLT57REJPYmplY3R9LT57QmFja2VuZH0tPnsnREI6OlR5cGUnfSA9fiAvb3JhY2xlLyApIHsKICAgICAgICAkU1FMID0gIklOU0VSVCBJTlRPIGF0dGFjaG1lbnRfc3RvcmFnZSAiIC4KICAgICAgICAgICAgIiAoYXR0YWNobWVudF9kaXJlY3RvcnlfaWQsIGRhdGEpICIgLgogICAgICAgICAgICAiIFZBTFVFUyAiIC4KICAgICAgICAgICAgIiAoICRQYXJhbXtBdHREaXJJRH0sIEVNUFRZX0NMT0IoKSkiOwoKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTUUwgPSAiSU5TRVJUIElOVE8gYXR0YWNobWVudF9zdG9yYWdlICIgLgogICAgICAgICAgICAiIChhdHRhY2htZW50X2RpcmVjdG9yeV9pZCwgZGF0YSkgIiAuCiAgICAgICAgICAgICIgVkFMVUVTICIgLgogICAgICAgICAgICAiICggJFBhcmFte0F0dERpcklEfSwgPykiOwogICAgfQoKICAgICNydW4gc3FsLi4uCiAgICBteSAkRG9SZXN1bHQgPSAwOwogICAgJERvUmVzdWx0ID0gJFNlbGYtPntEQk9iamVjdH0tPkRvKAogICAgICAgIFNRTCA9PiAkU1FMLCBCaW5kID0+IFsgJFBhcmFte0RhdGFSZWZ9IF0sICAgICMgQXR0RGlySUQgPT4gJFBhcmFte0F0dERpcklEfQogICAgKTsKCiAgICBpZiAoJERvUmVzdWx0KSB7CgogICAgICAgICNyZXR1cm4gSUQuLi4KICAgICAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICJTRUxFQ1QgaWQgRlJPTSBhdHRhY2htZW50X3N0b3JhZ2UgV0hFUkUgIiAuCiAgICAgICAgICAgICAgICAiYXR0YWNobWVudF9kaXJlY3RvcnlfaWQgPSAkUGFyYW17QXR0RGlySUR9IiwKICAgICAgICApOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRJRCA9ICRSb3dbMF07CiAgICAgICAgfQogICAgICAgIHJldHVybiAkSUQ7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSA9PiAiRmFpbGVkIHRvIGluc2VydCBhdHRhY2htZW50IGRhdGEhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQp9Cgo9aXRlbSBBdHRhY2htZW50R2V0KCkKCnJldHVybnMgYW4gZW50cnkgaW4gYXR0YWNobWVudF9zdG9yYWdlCgogICAgbXkgJURhdGEgPSAkQXR0YWNobWVudE9iamVjdC0+QXR0YWNobWVudEdldCgKICAgICAgICBJRCA9PiAxMjMsICMoc29tZSBhdHRhY2htZW50IHN0b3JhZ2UgaWQpCiAgICAgICAgIyAuLi5PUi4uLgogICAgICAgIEF0dERpcklEID0+IDEyMyAjKHNvbWUgYXR0YWNobWVudCBkaXJlY3RvcnkgaWQpLAogICAgKTsKPWN1dAoKc3ViIEF0dGFjaG1lbnRHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVEYXRhICA9ICgpOwogICAgbXkgJFdIRVJFID0gIiI7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17SUR9ICYmICEkUGFyYW17QXR0RGlySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKCBQcmlvcml0eSA9PiAnZXJyb3InLCBNZXNzYWdlID0+ICJOZWVkIEF0dERpcklEIG9yIElEISIgKTsKICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgfQoKICAgICNkYiBxdW90aW5nLi4uCiAgICBmb3JlYWNoIChxdyggQXR0RGlySUQgSUQpKSB7CiAgICAgICAgJFBhcmFteyRffSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFteyRffSwgJ0ludGVnZXInICk7CiAgICB9CgogICAgI2J1aWxkIHNxbC4uLgogICAgaWYgKCBkZWZpbmVkKCAkUGFyYW17QXR0RGlySUR9ICkgJiYgJFBhcmFte0F0dERpcklEfSApIHsKICAgICAgICAkV0hFUkUgPSAiIFdIRVJFIGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkID0gJFBhcmFte0F0dERpcklEfSI7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkV0hFUkUgPSAiIFdIRVJFIGlkID0gJFBhcmFte0lEfSI7CiAgICB9CgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgaWQsIGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkIEZST00gYXR0YWNobWVudF9zdG9yYWdlICIgLiAkV0hFUkU7CgogICAgaWYgKCAhJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoIFNRTCA9PiAkU1FMLCBFbmNvZGUgPT4gWyAwLCAwLCAxIF0gKSApIHsKICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgfQoKICAgIG15IEBEYXRhID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKTsKCiAgICBpZiAoQERhdGEpIHsKICAgICAgICBteSAkU1FMID0gIlNFTEVDVCBkYXRhIEZST00gYXR0YWNobWVudF9zdG9yYWdlICIgLiAkV0hFUkU7CgogICAgICAgIGlmICggISRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKCBTUUwgPT4gJFNRTCApICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmFpbGVkIHRvIHByZXBhcmUgU1FMIGZvciBGZXRjaHJvd0FycmF5ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIFwlRGF0YTsKICAgICAgICB9CgogICAgICAgIG15IEBBdHRhY2hEYXRhID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKTsKCiAgICAgICAgbXkgJEF0dGFjaERhdGFSZWYgPSBcJEF0dGFjaERhdGFbMF07CgogICAgICAgIGlmICggISRBdHRhY2hEYXRhUmVmICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRmFpbGVkIHRvIEZldGNocm93QXJyYXkhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgICAgIH0KCiAgICAgICAgI2RlY29kZSBhdHRhY2htZW50IGlmIGl0J3MgYSBwb3N0Z3Jlc3FsIGJhY2tlbmQuLi4KICAgICAgICBpZiAoICEkU2VsZi0+e0RCT2JqZWN0fS0+R2V0RGF0YWJhc2VGdW5jdGlvbignRGlyZWN0QmxvYicpICkgewogICAgICAgICAgICAkeyRBdHRhY2hEYXRhUmVmfSA9IGRlY29kZV9iYXNlNjQoICR7JEF0dGFjaERhdGFSZWZ9ICk7CiAgICAgICAgfQoKICAgICAgICAlRGF0YSA9ICgKICAgICAgICAgICAgSUQgICAgICAgPT4gJERhdGFbMF0sCiAgICAgICAgICAgIEF0dERpcklEID0+ICREYXRhWzFdLAoKICAgICAgICAgICAgRGF0YVJlZiA9PiAkQXR0YWNoRGF0YVJlZiwKICAgICAgICApOwoKICAgICAgICAkQXR0YWNoRGF0YVJlZiA9IHVuZGVmOwogICAgfQoKICAgIHJldHVybiBcJURhdGE7Cn0KCj1pdGVtIEF0dGFjaG1lbnRHZXRSZWFsUHJvcGVydGllcygpCgpyZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBhdHRhY2htZW50IGluIHRoZSBzdG9yYWdlIGJhY2tlbmQgYW5kIHRoZSBtZDVzdW0uCgogICAgbXkgUmVhbFByb3BlcnRpZXMgPSBBdHRhY2htZW50U3RvcmFnZU9iamVjdC0+QXR0YWNobWVudEdldFJlYWxQcm9wZXJ0aWVzKAogICAgICAgIEF0dERpcklEID0+IDEyMywgIyhzb21lIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGlkKQogICAgICAgICMuLk9SLi4uCiAgICAgICAgSUQgPT4gMTIzLCAjKHNvbWUgYXR0YWNobWVudCBzdG9yYWdlIGlkKQogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50R2V0UmVhbFByb3BlcnRpZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlUmVhbFByb3BlcnRpZXM7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17QXR0RGlySUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKCBQcmlvcml0eSA9PiAnZXJyb3InLCBNZXNzYWdlID0+ICJOZWVkIEF0dERpcklEISIgKTsKICAgICAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwogICAgfQoKICAgIG15ICREYXRhID0gJFNlbGYtPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgQXR0RGlySUQgPT4gJFBhcmFte0F0dERpcklEfQogICAgKTsKCiAgICBteSAkUmVhbEZpbGVTaXplID0gMDsKICAgIG15ICRSZWFsTUQ1U3VtICAgPSAnJzsKCiAgICBpZiAoIGRlZmluZWQgJERhdGEgJiYgJERhdGEtPntEYXRhUmVmfSApIHsKICAgICAgICBteSAkQ29udGVudCA9ICR7ICREYXRhLT57RGF0YVJlZn0gfTsKICAgICAgICAkU2VsZi0+e0VuY29kZU9iamVjdH0tPkVuY29kZU91dHB1dCggXCRDb250ZW50ICk7CgogICAgICAgICRSZWFsRmlsZVNpemUgPSBieXRlczo6bGVuZ3RoKCRDb250ZW50KTsKICAgICAgICAkUmVhbE1ENVN1bSAgID0gbWQ1X2hleCgkQ29udGVudCk7CiAgICB9CgogICAgJFJlYWxQcm9wZXJ0aWVze1JlYWxGaWxlU2l6ZX0gPSAkUmVhbEZpbGVTaXplOwogICAgJFJlYWxQcm9wZXJ0aWVze1JlYWxNRDVTdW19ICAgPSAkUmVhbE1ENVN1bTsKCiAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwp9CgoxOwoKPWJhY2sKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKGh0dHA6Ly9vdHJzLm9yZy8pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgoKPWN1dA==</File>
        <File Location="Custom/Kernel/System/CIAttachmentStorage/AttachmentStorageFS.pm" Permission="660" Encode="Base64">IyAtLQojIEtlcm5lbC9TeXN0ZW0vQ0lBdHRhY2htZW50U3RvcmFnZS9BdHRhY2htZW50U3RvcmFnZUZTLnBtIC0gYXR0YWNobWVudCBzdG9yYWdlIGluIGZpbGUgc3lzdGVtCiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2VkaXRlZCBieToKIyAqIFRvcnN0ZW4oZG90KVRoYXUoYXQpY2FwZS1pdChkb3QpZGUKIyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlLWl0KGRvdClkZQojICogTWFyaW8oZG90KUlsbGluZ2VyKGF0KWNhcGUtaXQoZG90KWRlCiMgLS0KIyAkSWQ6IEF0dGFjaG1lbnRTdG9yYWdlRlMucG0sdiAxLjE0IDIwMTYvMDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZUZTOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1JTUU6OkJhc2U2NDsKdXNlIEZpbGU6OnN0YXQ7CnVzZSBEaWdlc3Q6Ok1ENSBxdyhtZDVfaGV4KTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlRlMKCj1oZWFkMSBTWU5PUFNJUwoKUHJvdmlkZXMgYXR0YWNobWVudCBoYW5kbGluZyBmb3IgZmlsZSBzeXN0ZW0gYmFja2VuZC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9b3ZlciA0Cgo9Y3V0Cgo9aXRlbSBuZXcoKQoKY3JlYXRlIEF0dGFjaG1lbnRTdG9yYWdlRlMgb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQXR0YWNobWVudE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZUZTJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAkU2VsZi0+e0RCT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVtIEF0dGFjaG1lbnRBZGQoKQoKY3JlYXRlIGEgbmV3IHN0ZC4gYXR0YWNobWVudAoKICAgIG15ICRJRCA9ICRBdHRhY2htZW50T2JqZWN0LT5BdHRhY2htZW50QWRkKAogICAgICAgIEF0dERpcklEID0+IDEyMywKICAgICAgICBEYXRhUmVmICA9PiBcJFNvbWVDb250ZW50LAogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAkcmV0VmFsID0gMTsKCiAgICAjY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGZvcmVhY2ggKHF3KEF0dERpcklEIERhdGFSZWYpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coIFByaW9yaXR5ID0+ICdlcnJvcicsIE1lc3NhZ2UgPT4gIk5lZWQgJF8hIiApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICNidWlsZCBhdHRhY2htZW50IGRhdGEgZmlsZSBwYXRoLi4uCiAgICAkcmV0VmFsID0gJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0hvbWUnKSAuCiAgICAgICAgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0F0dGFjaG1lbnRTdG9yYWdlRlM6OlN0b3JhZ2VEaXJlY3RvcnknKTsKCiAgICAjY2hlY2sgaWYgZGVzdGluYXRpb24gcGF0aCBleGlzdHMuLi4KICAgIGlmICggIS1kICRyZXRWYWwgKSB7CiAgICAgICAgaWYgKCAhRmlsZTo6UGF0aDo6bWtwYXRoKCBbJHJldFZhbF0sIDAsIDA3NzUgKSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICJBdHRhY2htZW50U3RvcmFnZUZTIHBhdGggZG9lcyBub3QgZXhpc3QgbmVpdGhlciBJIGNhbiBjcmVhdGUgaXQgKCRyZXRWYWwpOiAkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjYnVpbGQgYXR0YWNobWVudCBkYXRhIGZpbGUgcGF0aC4uLgogICAgJHJldFZhbCAuPSAiLyIgLiAkUGFyYW17QXR0RGlySUR9IC4gIi5kYXQiOwoKICAgICN3cml0ZSB0aGUgYXR0YWNobWVudCBkYXRhIGZpbGUuLi4KICAgIGlmICggb3BlbiggbXkgJERBVEEsICI+IiwgIiRyZXRWYWwiICkgKSB7CiAgICAgICAgYmlubW9kZSgkREFUQSk7CiAgICAgICAgcHJpbnQgJERBVEEgJHsgJFBhcmFte0RhdGFSZWZ9IH07CiAgICAgICAgY2xvc2UoJERBVEEpOwogICAgICAgIHJldHVybiAkcmV0VmFsOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4gTk9UIHdyaXRlIGZpbGUgKCRyZXRWYWwpOiAkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9Cn0KCj1pdGVtIEF0dGFjaG1lbnRHZXQoKQoKcmV0dXJucyBhbiBlbnRyeSBpbiBhdHRhY2htZW50X3N0b3JhZ2UKCiAgICBteSAlRGF0YSA9ICRBdHRhY2htZW50T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgIEF0dERpcklEID0+IDEyMywgIyhzb21lIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGlkKQogICAgICAgICMuLk9SLi4uCiAgICAgICAgRmlsZVBhdGggPT4gJy9wYXRoL3RvL3RoZS9hdHRhY2htZW50L2ZpbGUuZGF0JywKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJURhdGEgICAgID0gKCk7CiAgICBteSAkRmlsZVBhdGggPSAnJzsKCiAgICAjY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGlmICggISRQYXJhbXtBdHREaXJJRH0gJiYgISRQYXJhbXtGaWxlUGF0aH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coIFByaW9yaXR5ID0+ICdlcnJvcicsIE1lc3NhZ2UgPT4gIk5lZWQgQXR0RGlySUQgb3IgRmlsZVBhdGghIiApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgaWYgKCBkZWZpbmVkKCAkUGFyYW17RmlsZVBhdGh9ICkgJiYgJFBhcmFte0ZpbGVQYXRofSApIHsKICAgICAgICAkRmlsZVBhdGggPSAkUGFyYW17RmlsZVBhdGh9OwogICAgfQoKICAgICNjaGVjayBpZiBQYXJhbUlEIGlzIGRlZmluZWQKICAgIGlmICggZGVmaW5lZCggJFBhcmFte0F0dERpcklEfSApICYmICRQYXJhbXtBdHREaXJJRH0gKSB7CgogICAgICAgICNkYiBxdW90aW5nLi4uCiAgICAgICAgZm9yZWFjaCAocXcoIEF0dERpcklEKSkgewogICAgICAgICAgICAkUGFyYW17JF99ID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCAkUGFyYW17JF99LCAnSW50ZWdlcicgKTsKICAgICAgICB9CgogICAgICAgICNidWlsZCBzcWwuLi4KICAgICAgICBteSAkU1FMID0gIlNFTEVDVCBmaWxlX3BhdGggRlJPTSBhdHRhY2htZW50X2RpcmVjdG9yeSAiCiAgICAgICAgICAgIC4gIldIRVJFIGlkPSRQYXJhbXtBdHREaXJJRH0iOwoKICAgICAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICRTUUwsCiAgICAgICAgKTsKCiAgICAgICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRGaWxlUGF0aCA9ICREYXRhWzBdOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICEkRmlsZVBhdGggKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICJDb3VsZCBOT1QgZmluZCBmaWxlIHBhdGggZm9yIGdpdmVuIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGlkICgkUGFyYW17QXR0RGlySUR9KSEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gXCVEYXRhOwogICAgfQoKICAgICNnZXQgdGhlIGF0dGFjaG1lbnQgZGF0YSBmaWxlLi4uCiAgICBpZiAoIG9wZW4oIG15ICREQVRBLCAiPCIsICRGaWxlUGF0aCApICkgewogICAgICAgIG15ICRDb3VudGVyID0gMDsKICAgICAgICBteSAkRGF0YSAgICA9ICIiOwogICAgICAgIGJpbm1vZGUoJERBVEEpOwogICAgICAgIHdoaWxlICg8JERBVEE+KSB7CiAgICAgICAgICAgICREYXRhIC49ICRfOwogICAgICAgIH0KICAgICAgICBjbG9zZSgkREFUQSk7CgogICAgICAgICMgc2V0IERhdGFSZWYgcGFyYW0KICAgICAgICAkRGF0YXtEYXRhUmVmfSA9IFwkRGF0YTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IG9wZW4gJEZpbGVQYXRoOiAkISAhIiwKICAgICAgICApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgcmV0dXJuIFwlRGF0YTsKfQoKPWl0ZW0gQXR0YWNobWVudEdldFJlYWxQcm9wZXJ0aWVzKCkKCnJldHVybnMgdGhlIHNpemUgb2YgdGhlIGF0dGFjaG1lbnQgaW4gdGhlIHN0b3JhZ2UgYmFja2VuZCBhbmQgdGhlIG1kNXN1bS4KCiAgICBteSBSZWFsUHJvcGVydGllcyA9IEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2htZW50R2V0UmVhbFByb3BlcnRpZXMoCiAgICAgICAgQXR0RGlySUQgPT4gMTIzLCAjKHNvbWUgYXR0YWNobWVudCBkaXJlY3RvcnkgaWQpCiAgICApOwoKPWN1dAoKc3ViIEF0dGFjaG1lbnRHZXRSZWFsUHJvcGVydGllcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJVJlYWxQcm9wZXJ0aWVzOwoKICAgICNjaGVjayByZXF1aXJlZCBzdHVmZi4uLgogICAgaWYgKCAhJFBhcmFte0F0dERpcklEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9yJywgTWVzc2FnZSA9PiAiTmVlZCBBdHREaXJJRCEiICk7CiAgICAgICAgcmV0dXJuICVSZWFsUHJvcGVydGllczsKICAgIH0KCiAgICBteSAkRGF0YSA9ICRTZWxmLT5BdHRhY2htZW50R2V0KAogICAgICAgIEF0dERpcklEID0+ICRQYXJhbXtBdHREaXJJRH0KICAgICk7CgogICAgbXkgJFJlYWxGaWxlU2l6ZSA9IDA7CiAgICBteSAkUmVhbE1ENVN1bSAgID0gJyc7CgogICAgaWYgKGRlZmluZWQgJERhdGEgJiYgJERhdGEtPntEYXRhUmVmfSkgewogICAgICAgIG15ICRDb250ZW50ID0gJHsgJERhdGEtPntEYXRhUmVmfSB9OwogICAgICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fS0+RW5jb2RlT3V0cHV0KCBcJENvbnRlbnQgKTsKCiAgICAgICAgJFJlYWxGaWxlU2l6ZSA9IGJ5dGVzOjpsZW5ndGgoJENvbnRlbnQpOwogICAgICAgICRSZWFsTUQ1U3VtICAgPSBtZDVfaGV4KCRDb250ZW50KTsKICAgIH0KCiAgICAkUmVhbFByb3BlcnRpZXN7UmVhbEZpbGVTaXplfSA9ICRSZWFsRmlsZVNpemU7CiAgICAkUmVhbFByb3BlcnRpZXN7UmVhbE1ENVN1bX0gICA9ICRSZWFsTUQ1U3VtOwoKICAgIHJldHVybiAlUmVhbFByb3BlcnRpZXM7Cn0KCjE7Cgo9YmFjawoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoaHR0cDovL290cnMub3JnLykuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCgo9Y3V0</File>
        <File Location="Custom/Kernel/System/CIAttachmentStorage/AttachmentStorage.pm" Permission="660" Encode="Base64">IyAtLQojIEtlcm5lbC9TeXN0ZW0vQ0lBdHRhY2htZW50U3RvcmFnZS9BdHRhY2htZW50U3RvcmFnZS5wbSAtIGxpYiBmb3IgYXR0YWNobWVudCBtYW5hZ2VtZW50CiMgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTYgYy5hLnAuZS4gSVQgR21iSCwgaHR0cDovL3d3dy5jYXBlLWl0LmRlCiMKIyB3cml0dGVuL2VkaXRlZCBieToKIyAqIFRvcnN0ZW4oZG90KVRoYXUoYXQpY2FwZS1pdChkb3QpZGUKIyAqIEFubmEoZG90KUxpdHZpbm92YShhdCljYXBlLWl0KGRvdClkZQojICogRG9yb3RoZWEoZG90KURvZXJmZmVsKGF0KWNhcGUtaXQoZG90KWRlCiMgKiBNYXJpbyhkb3QpSWxsaW5nZXIoYXQpY2FwZS1pdChkb3QpZGUKIyAtLQojICRJZDogQXR0YWNobWVudFN0b3JhZ2UucG0sdiAxLjE0IDIwMTYvMDUvMTggMDc6NDA6NDcgdHRvIEV4cCAkCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQ7CnVzZSBEaWdlc3Q6Ok1ENSBxdyhtZDVfaGV4KTsKdXNlIEVuY29kZSBxdyhlbmNvZGVfdXRmOCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6Q0lBdHRhY2htZW50U3RvcmFnZTo6QXR0YWNobWVudFN0b3JhZ2UgLSBzdGQuIGF0dGFjaG1lbnQgbGliCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBhdHRhY2htZW50IHN0b3JhZ2UgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgpjcmVhdGUgc3RkLiBhdHRhY2htZW50IG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAkU2VsZi0+e0RCT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICRTZWxmLT57RW5jb2RlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKTsKICAgICRTZWxmLT57TG9nT2JqZWN0fSAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgICRTZWxmLT57TWFpbk9iamVjdH0gICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgIyBnZXQgY29uZmlndXJlZCBzdG9yYWdlIGJhY2tlbmRzLi4uCiAgICBteSAkQmFja2VuZFJlZiA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdBdHRhY2htZW50U3RvcmFnZTo6U3RvcmFnZUJhY2tlbmRNb2R1bGVzJyk7CiAgICBpZiAoICEoIHJlZigkQmFja2VuZFJlZikgZXEgJ0hBU0gnICkgKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICNyZXRyaWV2ZSByZXF1aXJlZCBzdG9yYWdlIGJhY2tlbmQgbW9kdWxlcy4uLgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgZGlzdGluY3Qoc3RvcmFnZV9iYWNrZW5kKSBGUk9NIGF0dGFjaG1lbnRfZGlyZWN0b3J5IjsKICAgIGlmICggJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoIFNRTCA9PiAkU1FMICkgKSB7CiAgICAgICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRCYWNrZW5kUmVmLT57ICREYXRhWzBdIH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjbG9hZCBzdG9yYWdlIGJhY2tlbmRzLi4uCiAgICBmb3IgbXkgJEN1cnJLZXkgKCBrZXlzKCAleyRCYWNrZW5kUmVmfSApICkgewogICAgICAgIGlmICggJEJhY2tlbmRSZWYtPnskQ3VycktleX0gJiYgJFNlbGYtPntNYWluT2JqZWN0fS0+UmVxdWlyZSgkQ3VycktleSkgKSB7CiAgICAgICAgICAgICRTZWxmLT57JEN1cnJLZXl9ID0gJEtlcm5lbDo6T00tPkdldCgkQ3VycktleSk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKPWl0ZW0gQXR0YWNobWVudFN0b3JhZ2VHZXREaXJlY3RvcnkoKQoKZ2V0IGFuIGF0dGFjaG1lbnQgLSByZXR1cm5zIGF0dGFjaG1lbnQgZGlyZWN0b3J5IGVudHJ5IHdpdGhvdXQgYXR0YWNobWVudCBjb250ZW50CgogICAgbXkgJURhdGEgPSAkQXR0YWNobWVudFN0b3JhZ2VPYmplY3QtPkF0dGFjaG1lbnRTdG9yYWdlR2V0RGlyZWN0b3J5KAogICAgICAgIElEID0+ICRJRCwKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudFN0b3JhZ2VHZXREaXJlY3RvcnkgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVEYXRhID0gKCk7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17SUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlID0+ICJOZWVkIElEISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgZ2V0IGF0dGFjaG1lbnQgZGlyZWN0b3J5CiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICNkYiBxdW90aW5nLi4uCiAgICBmb3JlYWNoIChxdyggSUQpKSB7CiAgICAgICAgJFBhcmFteyRffSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFteyRffSwgJ0ludGVnZXInICk7CiAgICB9CgogICAgI2J1aWxkIHNxbC4uLgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgaWQsIHN0b3JhZ2VfYmFja2VuZCwgZmlsZV9wYXRoLCAiIC4KICAgICAgICAiZmlsZV9uYW1lICIgLgogICAgICAgICJGUk9NIGF0dGFjaG1lbnRfZGlyZWN0b3J5ICIgLgogICAgICAgICJXSEVSRSBpZD0kUGFyYW17SUR9IjsKCiAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJFNRTCwKICAgICk7CgogICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJURhdGEgPSAoCiAgICAgICAgICAgIEF0dERpcklEICAgICAgID0+ICREYXRhWzBdLAogICAgICAgICAgICBTdG9yYWdlQmFja2VuZCA9PiAkRGF0YVsxXSwKICAgICAgICAgICAgRmlsZVBhdGggICAgICAgPT4gJERhdGFbMl0sCiAgICAgICAgICAgIEZpbGVOYW1lICAgICAgID0+ICREYXRhWzNdLAogICAgICAgICk7CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgZ2V0IGF0dGFjaG1lbnQgZGlyZWN0b3J5IHByZWZlcmVuY2VzCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICNidWlsZCBzcWwuLi4KICAgICRTUUwgPSAiU0VMRUNUIHByZWZlcmVuY2VzX2tleSwgcHJlZmVyZW5jZXNfdmFsdWUgIiAuCiAgICAgICAgIkZST00gYXR0YWNobWVudF9kaXJfcHJlZmVyZW5jZXMgIiAuCiAgICAgICAgIldIRVJFIGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkPSRQYXJhbXtJRH0iOwoKICAgICRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAkU1FMLAogICAgKTsKCiAgICBteSAlUHJlZmVyZW5jZXM7CgogICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFByZWZlcmVuY2VzeyAkRGF0YVswXSB9ID0gJERhdGFbMV07CiAgICB9CgogICAgI2FkZCBwcmVmZXJlbmNlcwogICAgJERhdGF7UHJlZmVyZW5jZXN9ID0gXCVQcmVmZXJlbmNlczsKCiAgICByZXR1cm4gJURhdGE7Cn0KCj1pdGVtIEF0dGFjaG1lbnRTdG9yYWdlR2V0KCkKCmdldCBhbiBhdHRhY2htZW50CgogICAgbXkgJURhdGEgPSAkQXR0YWNobWVudFN0b3JhZ2VPYmplY3QtPkF0dGFjaG1lbnRTdG9yYWdlR2V0KAogICAgICAgIElEID0+ICRJRCwKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudFN0b3JhZ2VHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVEYXRhID0gKCk7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBpZiAoICEkUGFyYW17SUR9ICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlID0+ICJOZWVkIElEISIKICAgICAgICApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgI2dldCBkaXJlY3RvcnkgZGF0YS4uLgogICAgJURhdGEgPSAkU2VsZi0+QXR0YWNobWVudFN0b3JhZ2VHZXREaXJlY3RvcnkoIElEID0+ICRQYXJhbXtJRH0gKTsKCiAgICBpZiAoICFkZWZpbmVkKCAkRGF0YXtBdHREaXJJRH0gKSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSA9PiAiTm8gYXR0YWNobWVudCB3aXRoIHRoaXMgSUQgZXhpc3RzISIKICAgICAgICApOwogICAgICAgIHJldHVybiBcJURhdGE7CiAgICB9CgogICAgI2dldCB0aGUgYWN0dWFsIGF0dGFjaG1lbnQuLi4KICAgIG15ICRBdHRhY2htZW50UmVmID0gJFNlbGYtPnsgJERhdGF7U3RvcmFnZUJhY2tlbmR9IH0tPkF0dGFjaG1lbnRHZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIEF0dERpcklEID0+ICREYXRhe0F0dERpcklEfSwKICAgICk7CgogICAgIyREYXRhe0NvbnRlbnRUeXBlfSA9ICRBdHRhY2htZW50UmVmLT57RGF0YVR5cGV9OwoKICAgICMgZ2V0IENvbnRlbnRSZWYgZm9yIERCIGJhY2tlbmQKICAgIGlmICggJEF0dGFjaG1lbnRSZWYtPntEYXRhUmVmfSApIHsKICAgICAgICAkRGF0YXtDb250ZW50UmVmfSA9ICRBdHRhY2htZW50UmVmLT57RGF0YVJlZn07CiAgICB9CgogICAgIyBnZXQgQ29udGVudFJlZiBmb3IgRlMgYmFja2VuZAogICAgZWxzaWYgKCBleGlzdHMoICRBdHRhY2htZW50UmVmLT57RGF0YX0gKSApIHsKICAgICAgICAkRGF0YXtDb250ZW50UmVmfSA9IFwkQXR0YWNobWVudFJlZi0+e0RhdGF9OwogICAgfQoKICAgICRBdHRhY2htZW50UmVmID0gdW5kZWY7CiAgICAkQXR0YWNobWVudFJlZiA9IHt9OwoKICAgIHJldHVybiBcJURhdGE7Cn0KCj1pdGVtICBBdHRhY2htZW50U3RvcmFnZUdldFJlYWxQcm9wZXJ0aWVzKCkKCmdldCB0aGUgYXR0YWNobWVudCdzIHNpemUgb24gZGlzayBhbmQgdGhlIG1kNXN1bQoKICAgIG15ICVEYXRhID0gJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2htZW50U3RvcmFnZUdldFJlYWxQcm9wZXJ0aWVzKAogICAgICAgIEF0dERpcklEICAgICAgPT4gJEF0dERpcklELAogICAgICAgU3RvcmFnZUJhY2tlbmQgPT4gIktlcm5lbDo6U3lzdGVtOjpBdHRhY2htZW50U3RvcmFnZURCIiwKICAgICk7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudFN0b3JhZ2VHZXRSZWFsUHJvcGVydGllcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJVJlYWxQcm9wZXJ0aWVzOwoKICAgICMgY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGlmICggISRQYXJhbXtBdHREaXJJRH0gJiYgISRQYXJhbXtTdG9yYWdlQmFja2VuZH0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIEF0dERpcklEIGFuZCBTdG9yYWdlQmFja2VuZCEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwogICAgfQoKICAgICMgZ2V0IHRoZSBhY3R1YWwgYXR0YWNobWVudCBwcm9wZXJ0aWVzLi4uCiAgICAlUmVhbFByb3BlcnRpZXMgPSAkU2VsZi0+eyAkUGFyYW17U3RvcmFnZUJhY2tlbmR9IH0tPkF0dGFjaG1lbnRHZXRSZWFsUHJvcGVydGllcygKICAgICAgICBBdHREaXJJRCA9PiAkUGFyYW17QXR0RGlySUR9LAogICAgKTsKCiAgICByZXR1cm4gJVJlYWxQcm9wZXJ0aWVzOwp9Cgo9aXRlbSBBdHRhY2htZW50U3RvcmFnZUFkZCgpCgpjcmVhdGUgYSBuZXcgYXR0YWNobWVudCBkaXJlY3RvcnkgZW50cnkgYW5kIHdyaXRlIGF0dGFjaG1lbnQgdG8gdGhlIHNwZWNpZmllZCBiYWNrZW5kCgogICAgbXkgJElEID0gJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2htZW50U3RvcmFnZUFkZCgKICAgICAgICBTdG9yYWdlQmFja2VuZCA9PiAnS2VybmVsOjpTeXN0ZW06OkF0dGFjaG1lbnRTdG9yYWdlREInLAogICAgICAgIERhdGFSZWYgPT4gJFNvbWVDb250ZW50UmVmZXJlbmNlLAogICAgICAgIEZpbGVOYW1lID0+ICdTb21lRmlsZU5hbWUuemlwJywKICAgICAgICBVc2VySUQgPT4gMTIzLAogICAgICAgIFByZWZlcmVuY2VzICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhVHlwZSAgICAgICAgICAgPT4gJ3RleHQveG1sJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVDdXN0b21QYXJhbXMgICA9PiAnd2l0aCBvdXIgb3duIHZhbHVlJywKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50U3RvcmFnZUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJElEICAgICA9IDA7CiAgICBteSAkTUQ1c3VtID0gJyc7CgogICAgI2NoZWNrIHJlcXVpcmVkIHN0dWZmLi4uCiAgICBmb3JlYWNoIChxdyhEYXRhUmVmIEZpbGVOYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJOZWVkICRfISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICEoICRQYXJhbXtTdG9yYWdlQmFja2VuZH0gKSApIHsKICAgICAgICAkUGFyYW17U3RvcmFnZUJhY2tlbmR9ID0KICAgICAgICAgICAgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ0F0dGFjaG1lbnRTdG9yYWdlOjpEZWZhdWx0U3RvcmFnZUJhY2tlbmRNb2R1bGUnKTsKICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgKDEpIGNyZWF0ZSBhdHRhY2htZW50IGRpcmVjdG9yeSBlbnRyeS4uLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjZGIgcXVvdGluZy4uLgogICAgZm9yZWFjaCAocXcoIFN0b3JhZ2VCYWNrZW5kIEZpbGVOYW1lKSkgewogICAgICAgICRQYXJhbXskX30gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXskX30gKTsKICAgIH0KICAgIGZvcmVhY2ggKHF3KCBVc2VySUQgKSkgewogICAgICAgICRQYXJhbXskX30gPSAkU2VsZi0+e0RCT2JqZWN0fS0+UXVvdGUoICRQYXJhbXskX30sICdJbnRlZ2VyJyApOwogICAgfQoKICAgICNidWlsZCBzcWwuLi4KICAgIG15ICRTUUwgPSAiSU5TRVJUIElOVE8gYXR0YWNobWVudF9kaXJlY3RvcnkgKCIgLgogICAgICAgICIgc3RvcmFnZV9iYWNrZW5kLCAiIC4KICAgICAgICAiIGZpbGVfcGF0aCwgZmlsZV9uYW1lLCAgIiAuCiAgICAgICAgIiBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5KSAiIC4KICAgICAgICAiIFZBTFVFUyAoIiAuCiAgICAgICAgIiAnJFBhcmFte1N0b3JhZ2VCYWNrZW5kfScsICIgLgogICAgICAgICIgJycsICckUGFyYW17RmlsZU5hbWV9JywgIiAuCiAgICAgICAgIiBjdXJyZW50X3RpbWVzdGFtcCwgJFBhcmFte1VzZXJJRH0sIGN1cnJlbnRfdGltZXN0YW1wLCAkUGFyYW17VXNlcklEfSkiOwoKICAgICNydW4gU1FMLi4uCiAgICBpZiAoICRTZWxmLT57REJPYmplY3R9LT5EbyggU1FMID0+ICRTUUwgKSApIHsKCiAgICAgICAgIy4uLmFuZCBnZXQgdGhlIElELi4uCiAgICAgICAgJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAiU0VMRUNUIG1heChpZCkgRlJPTSBhdHRhY2htZW50X2RpcmVjdG9yeSBXSEVSRSAiIC4KICAgICAgICAgICAgICAgICJmaWxlX25hbWUgPSAnJFBhcmFte0ZpbGVOYW1lfScgQU5EICIgLgogICAgICAgICAgICAgICAgInN0b3JhZ2VfYmFja2VuZCA9ICckUGFyYW17U3RvcmFnZUJhY2tlbmR9JyBBTkQgIiAuCiAgICAgICAgICAgICAgICAiY3JlYXRlX2J5ID0gJFBhcmFte1VzZXJJRH0iLAogICAgICAgICk7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgJElEID0gJFJvd1swXTsKICAgICAgICB9CgogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBOT1QgaW5zZXJ0IGF0dGFjaG1lbnQgaW4gYXR0YWNobWVudCBkaXJlY3RvcnkhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICMgKDIpIHNhdmUgYXR0YWNobWVudCBkaXJlY3RvcnkgcHJlZmVyZW5jZXMgLi4uCiAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAjIG1kNXN1bSBjYWxjdWxhdGlvbgogICAgJFNlbGYtPntFbmNvZGVPYmplY3R9LT5FbmNvZGVPdXRwdXQoICR7ICRQYXJhbXtEYXRhUmVmfSB9ICk7CiAgICAkUGFyYW17UHJlZmVyZW5jZXN9LT57TUQ1U3VtfSA9IG1kNV9oZXgoICR7ICRQYXJhbXtEYXRhUmVmfSB9ICk7CgogICAgIyBzaXplIGNhbGN1bGF0aW9uCiAgICAkUGFyYW17UHJlZmVyZW5jZXN9LT57RmlsZVNpemVCeXRlc30gPSBieXRlczo6bGVuZ3RoKCAkeyAkUGFyYW17RGF0YVJlZn0gfSApOwoKICAgIG15ICRGaWxlU2l6ZSA9ICRQYXJhbXtQcmVmZXJlbmNlc30tPntGaWxlU2l6ZUJ5dGVzfTsKICAgIGlmICggJEZpbGVTaXplID4gKCAxMDI0ICogMTAyNCApICkgewogICAgICAgICRGaWxlU2l6ZSA9IHNwcmludGYgIiUuMWYgTUJ5dGVzIiwgKCAkRmlsZVNpemUgLyAoIDEwMjQgKiAxMDI0ICkgKTsKICAgIH0KICAgIGVsc2lmICggJEZpbGVTaXplID4gMTAyNCApIHsKICAgICAgICAkRmlsZVNpemUgPSBzcHJpbnRmICIlLjFmIEtCeXRlcyIsICggJEZpbGVTaXplIC8gMTAyNCApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEZpbGVTaXplID0gJEZpbGVTaXplIC4gJyBCeXRlcyc7CiAgICB9CiAgICAkUGFyYW17UHJlZmVyZW5jZXN9LT57RmlsZVNpemV9ID0gJEZpbGVTaXplOwoKICAgICMgaW5zZXJ0IHByZWZlcmVuY2VzCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkUGFyYW17UHJlZmVyZW5jZXN9IH0gKSB7CiAgICAgICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gYXR0YWNobWVudF9kaXJfcHJlZmVyZW5jZXMgJwogICAgICAgICAgICAgICAgLiAnKGF0dGFjaG1lbnRfZGlyZWN0b3J5X2lkLCBwcmVmZXJlbmNlc19rZXksIHByZWZlcmVuY2VzX3ZhbHVlKSBWQUxVRVMgKCA/LCA/LCA/KScsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJElELCBcJEtleSwgXCRQYXJhbXtQcmVmZXJlbmNlc30tPnskS2V5fSBdLAogICAgICAgICk7CgogICAgfQoKICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIyAoMykgY3JlYXRlIGF0dGFjaG1lbnQgc3RvcmFnZSBlbnRyeSAoID0gc2F2ZSBmaWxlKS4uLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgbXkgJEF0dElEID0gJFNlbGYtPnsgJFBhcmFte1N0b3JhZ2VCYWNrZW5kfSB9LT5BdHRhY2htZW50QWRkKAogICAgICAgIEF0dERpcklEID0+ICRJRCwKICAgICAgICBEYXRhUmVmICA9PiAkUGFyYW17RGF0YVJlZn0sCiAgICApOwoKICAgIGlmICggISRBdHRJRCApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIE5PVCBzdG9yZSBhdHRhY2htZW50IGluIHN0b3JhZ2UgKCRQYXJhbXtTdG9yYWdlQmFja2VuZH0pISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAjICg0KSB1cGRhdGUgYXR0YWNobWVudCBkaXJlY3RvcnkgKGkuZS4gZmlsZSBwYXRoKS4uLgogICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgJEF0dElEID0gJFNlbGYtPntEQk9iamVjdH0tPlF1b3RlKCRBdHRJRCk7CiAgICAkU1FMICAgPSAiVVBEQVRFIGF0dGFjaG1lbnRfZGlyZWN0b3J5IFNFVCAiIC4KICAgICAgICAiIGZpbGVfcGF0aCA9ICckQXR0SUQnICIgLgogICAgICAgICIgV0hFUkUgaWQgPSAkSUQiOwoKICAgIGlmICggJFNlbGYtPntEQk9iamVjdH0tPkRvKCBTUUwgPT4gJFNRTCApICkgewogICAgICAgIHJldHVybiAkSUQ7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIE5PVCB1cGRhdGUgYXR0YWNobWVudCBkaXJlY3RvcnkgKElEPSRJRCwgZmlsZV9wYXRoPSRBdHRJRCkhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KfQoKPWl0ZW0gQXR0YWNobWVudFN0b3JhZ2VTZWFyY2goKQoKcmV0dXJucyBhdHRhY2htZW50IGRpcmVjdG9yeSBJRHMgZm9yIHRoZSBnaXZlbiBGaWxlTmFtZQoKICAgIG15IEBEYXRhID0gJEF0dGFjaG1lbnRTdG9yYWdlT2JqZWN0LT5BdHRhY2htZW50U3RvcmFnZVNlYXJjaCgKICAgICAgICBGaWxlTmFtZSA9PiAnU29tZUZpbGVOYW1lLnppcCcsCiAgICAgICAgVXNpbmdXaWxkY2FyZHMgPT4gMSwgKDEgfHwgMCwgb3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEF0dGFjaG1lbnRTdG9yYWdlU2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSBAUmVzdWx0ID0gKCk7CiAgICBteSAkV0hFUkUgID0gIihpZCA+IDApIjsKCiAgICAjY2hlY2sgcmVxdWlyZWQgc3R1ZmYuLi4KICAgIGlmICggISRQYXJhbXtGaWxlTmFtZX0gKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIEZpbGVOYW1lISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjZGIgcXVvdGluZy4uLgogICAgZm9yZWFjaCAocXcoIEZpbGVOYW1lICkpIHsKICAgICAgICBpZiAoIGRlZmluZWQoICRQYXJhbXskX30gKSAmJiAoICRQYXJhbXskX30gKSApIHsKICAgICAgICAgICAgJFBhcmFteyRffSA9ICRTZWxmLT57REJPYmplY3R9LT5RdW90ZSggJFBhcmFteyRffSApOwogICAgICAgIH0KICAgIH0KCiAgICAjYnVpbGQgV0hFUkUtY2xhdXNlLi4uCiAgICBpZiAoICRQYXJhbXtVc2luZ1dpbGRjYXJkc30gKSB7CiAgICAgICAgJFdIRVJFIC49ICIgQU5EIChmaWxlX25hbWUgTElLRSAnJFBhcmFte0ZpbGVOYW1lfScpIjsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRXSEVSRSAuPSAiIEFORCAoZmlsZV9uYW1lID0gJyRQYXJhbXtGaWxlTmFtZX0nKSI7CiAgICB9CgogICAgI2J1aWxkIHNxbC4uLgogICAgbXkgJFNRTCA9ICJTRUxFQ1QgaWQgRlJPTSBhdHRhY2htZW50X2RpcmVjdG9yeSAiIC4KICAgICAgICAiV0hFUkUgIiAuICRXSEVSRTsKCiAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJFNRTCwKICAgICk7CgogICAgd2hpbGUgKCBteSBARGF0YSA9ICRTZWxmLT57REJPYmplY3R9LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCggQFJlc3VsdCwgJERhdGFbMF0gKTsKICAgIH0KCiAgICByZXR1cm4gQFJlc3VsdDsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChodHRwOi8vb3Rycy5vcmcvKS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KCj1jdXQ=</File>
        <File Location="Custom/Kernel/System/DynamicField/Driver/Lens.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojICRvcmlnaW46IG90b2JvIC0gNTljZWNmNDkwYjI2M2MzNTNmYWY0NzliNzIyYTFiZjA4N2VmMTM5MyAtIEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9MZW5zLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpMZW5zOwoKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGFyYW1PYmplY3QpCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpCYXNlKTsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OkZvcm1DYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50Cik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpMZW5zIC0gZHJpdmVyIGZvciB0aGUgTGVucyBkeW5hbWljIGZpZWxkCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFjY2VzcyB0byBhbiBhdHRyaWJ1dGUgb2YgYSByZWZlcmVuY2VkIG9iamVjdC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgpUaGlzIGR5bmFtaWMgZmllbGQgZHJpdmVyIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG9mIEw8S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZD4uClBsZWFzZSBsb29rIHRoZXJlIGZvciBhIGRldGFpbGVkIHJlZmVyZW5jZSBvZiB0aGUgZnVuY3Rpb25zLgoKPWhlYWQyIG5ldygpCgppdCBpcyB1c3VhbGx5IG5vdCBuZWNlc3NhcnkgdG8gZXhwbGljaXRseSBjcmVhdGUgaW5zdGFuY2VzIG9mIGR5bmFtaWMgZmllbGQgZHJpdmVycy4KSW5zdGFuY2VzIG9mIHRoZSBkcml2ZXJzIGFyZSBjcmVhdGVkIGluIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUKZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdCBDPEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQ+LgoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoJFR5cGUpID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIFVzZWQgZm9yIGRlY2xhcmluZyBDU1MgY2xhc3NlcwogICAgJFNlbGYtPntGaWVsZENTU0NsYXNzfSA9ICdEeW5hbWljRmllbGRMZW5zJzsKCiAgICAjIHNldCBmaWVsZCBiZWhhdmlvcnMKICAgICMgICBOT1RFIGJlaGF2aW9ycyBJc0FDTFJlZHVjaWJsZSBhbmQgSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUgZ2V0IG92ZXJyaWRkZW4gd2l0aCB0aGUgYXR0cmlidXRlIGZpZWxkcyBiZWhhdmlvcnMgaW4gc3ViIEhhc0JlaGF2aW9yCiAgICAkU2VsZi0+e0JlaGF2aW9yc30gPSB7CiAgICAgICAgJ0lzQUNMUmVkdWNpYmxlJyAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgJ0lzTm90aWZpY2F0aW9uRXZlbnRDb25kaXRpb24nID0+IDEsCiAgICAgICAgJ0lzU29ydGFibGUnICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzRmlsdHJhYmxlJyAgICAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgJ0lzU3RhdHNDb25kaXRpb24nICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlJyAgID0+IDAsCiAgICAgICAgJ0lzSGlkZGVuSW5UaWNrZXRJbmZvcm1hdGlvbicgID0+IDAsCiAgICAgICAgJ1NldHNEeW5hbWljQ29udGVudCcgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzU2V0Q2FwYWJsZScgICAgICAgICAgICAgICAgID0+IDEsCiAgICB9OwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFZhbHVlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgICMgaW4gc2V0IGNhc2UsIGFuIGFycmF5cmVmIG9mIG9iamVjdCBpZHMgaXMgcmV0dXJuZWQKICAgIG15ICRSZWZlcmVuY2VkT2JqZWN0SUQgPSAkU2VsZi0+X0dldFJlZmVyZW5jZWRPYmplY3RJRCgKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgICAgID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgICAgIEVkaXRGaWVsZFZhbHVlICAgICAgICAgPT4gJFBhcmFte1VzZVJlZmVyZW5jZUVkaXRGaWVsZH0sCiAgICAgICAgU2V0ICAgICAgICAgICAgICAgICAgICA9PiAkUGFyYW17U2V0fSwKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkUmVmZXJlbmNlZE9iamVjdElEOwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICAjIEdldCB0aGUgZHluYW1pYyBmaWVsZCBjb25maWcgZm9yIHRoZSByZWZlcmVuY2VkIG9iamVjdAogICAgbXkgJFJlZmVyZW5jZURGQ29uZmlnID0gJFNlbGYtPl9HZXRSZWZlcmVuY2VERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgIG15ICRPYmplY3RJRE9yTmFtZSA9ICRSZWZlcmVuY2VERkNvbmZpZy0+e0ZpZWxkVHlwZX0gPX4gL15DdXN0b21lci8gPyAnT2JqZWN0TmFtZScgOiAnT2JqZWN0SUQnOwoKICAgICMgaW4gc2V0IGNhc2UsIHZhbHVlcyBuZWVkIHRvIGJlIGNvbGxlY3RlZCBvbmUgYnkgb25lCiAgICBpZiAoICRQYXJhbXtTZXR9ICkgewogICAgICAgIG15IEBWYWx1ZXM7CiAgICAgICAgZm9yIG15ICRSZWZJRCAoICRSZWZlcmVuY2VkT2JqZWN0SUQtPkAqICkgewogICAgICAgICAgICBpZiAoICEkUmVmSUQgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBWYWx1ZXMsIHVuZGVmOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAVmFsdWVzLCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICAgICAgICAgICAgICAgICAgJE9iamVjdElET3JOYW1lICAgID0+ICRSZWZJRCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIFxAVmFsdWVzOwogICAgfQoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlR2V0KAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICAgICAgJE9iamVjdElET3JOYW1lICAgID0+ICRSZWZlcmVuY2VkT2JqZWN0SUQsCiAgICApOwp9CgpzdWIgVmFsdWVTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIG5vdCBleHBsaWNpdGx5IGRlYWN0aXZhdGVkIHdlIGFzc3VtZSBiZWluZyBvbiBhbiBlZGl0IG1hc2sKICAgIG15ICRFZGl0RmllbGRWYWx1ZSA9ICRQYXJhbXtFZGl0RmllbGRWYWx1ZX0gLy8gMTsKICAgIG15ICRMZW5zREZDb25maWcgICA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKIyAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAojICAgICk7CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgIyBHZXQgdGhlIGR5bmFtaWMgZmllbGQgY29uZmlnIGZvciB0aGUgcmVmZXJlbmNlZCBvYmplY3QKICAgIG15ICRSZWZlcmVuY2VERkNvbmZpZyA9ICRTZWxmLT5fR2V0UmVmZXJlbmNlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICBteSAkT2JqZWN0SURPck5hbWUgPSAkUmVmZXJlbmNlREZDb25maWctPntGaWVsZFR5cGV9ID1+IC9eQ3VzdG9tZXIvID8gJ09iamVjdE5hbWUnIDogJ09iamVjdElEJzsKCiAgICAjIGluIHNldCBjYXNlLCB3ZSBpdGVyYXRlIG92ZXIgdGhlIHZhbHVlcyBhbmQgc2V0IHRoZW0gb25lIGJ5IG9uZQogICAgaWYgKCAkUGFyYW17U2V0fSApIHsKICAgICAgICBJTkRFWDoKICAgICAgICBmb3IgbXkgJFNldEluZGV4ICggMCAuLiAkI3sgJFBhcmFte1ZhbHVlfSB9ICkgewoKICAgICAgICAgICAgJExlbnNERkNvbmZpZy0+e1NldEluZGV4fSA9ICRTZXRJbmRleDsKCiAgICAgICAgICAgICMgd2l0aCBwYXJhbSBTZXRJbmRleCwgYSBzaW5nbGUgb2JlY3QgaWQgaXMgcmV0dXJuZWQKICAgICAgICAgICAgIyBhcyB3ZSBhcmUgYWxyZWFkeSBzYXZpbmcgd2UgdHJ1c3QsIHRoYXQgdGhlIHJlZmVyZW5jZSBlZGl0IGZpZWxkIGhhcyBiZWVuIHZhbGlkYXRlZAogICAgICAgICAgICBteSAkUmVmZXJlbmNlZE9iamVjdElEID0gJFNlbGYtPl9HZXRSZWZlcmVuY2VkT2JqZWN0SUQoCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgICAgID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICAgICAgICAgICAgICBFZGl0RmllbGRWYWx1ZSAgICAgICAgID0+ICRFZGl0RmllbGRWYWx1ZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY2xlYW4gdXAgb2JqZWN0IGlkIGluIGNhc2UgdGhhdCBPYmplY3ROYW1lIGlzIHBhc3NlZCB0byBub3QgY29sbGlkZQogICAgICAgICAgICBpZiAoICRPYmplY3RJRE9yTmFtZSBlcSAnT2JqZWN0TmFtZScgKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgJFBhcmFte09iamVjdElEfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmV4dCBJTkRFWCB1bmxlc3MgJFJlZmVyZW5jZWRPYmplY3RJRDsKCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgICAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdElEICAgICA9PiAkUmVmZXJlbmNlZE9iamVjdElELAogICAgICAgICAgICApOwoKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17VmFsdWV9WyRTZXRJbmRleF0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSGFuZGxlZCAgPT4gMCwKICAgICAgICAgICAgICAgIEVkaXRGaWVsZFZhbHVlICAgICA9PiAwLAogICAgICAgICAgICAgICAgU2V0ICAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEF0dHJpYnV0ZURGQ29uZmlnLAogICAgICAgICAgICAgICAgJE9iamVjdElET3JOYW1lICAgID0+ICRSZWZlcmVuY2VkT2JqZWN0SUQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgYXMgd2UgYXJlIGFscmVhZHkgc2F2aW5nIHdlIHRydXN0LCB0aGF0IHRoZSByZWZlcmVuY2UgZWRpdCBmaWVsZCBoYXMgYmVlbiB2YWxpZGF0ZWQKICAgIG15ICRSZWZlcmVuY2VkT2JqZWN0SUQgPSAkU2VsZi0+X0dldFJlZmVyZW5jZWRPYmplY3RJRCgKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgICAgID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgICAgIEVkaXRGaWVsZFZhbHVlICAgICAgICAgPT4gJEVkaXRGaWVsZFZhbHVlLAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRSZWZlcmVuY2VkT2JqZWN0SUQ7CgogICAgIyBjbGVhbiB1cCBvYmplY3QgaWQgaW4gY2FzZSB0aGF0IE9iamVjdE5hbWUgaXMgcGFzc2VkIHRvIG5vdCBjb2xsaWRlCiAgICBpZiAoICRPYmplY3RJRE9yTmFtZSBlcSAnT2JqZWN0TmFtZScgKSB7CiAgICAgICAgZGVsZXRlICRQYXJhbXtPYmplY3RJRH07CiAgICB9CgojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgICAgIFJlZmVyZW5jZWRPYmplY3RJRCAgICAgPT4gJFJlZmVyZW5jZWRPYmplY3RJRCwKICAgICk7CgojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVTZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIENvbmZpZ0l0ZW1IYW5kbGVkICA9PiAwLAogICAgICAgIEVkaXRGaWVsZFZhbHVlICAgICA9PiAwLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICAgICAgJE9iamVjdElET3JOYW1lICAgID0+ICRSZWZlcmVuY2VkT2JqZWN0SUQsCiAgICApOwp9CgpzdWIgVmFsdWVWYWxpZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICk7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVWYWxpZGF0ZSgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBTZWFyY2hTUUxHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGVuc0RGQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlNlYXJjaFNRTEdldCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBTZWFyY2hTUUxPcmRlckZpZWxkR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBUT0RPCiAgICByZXR1cm4gJyc7Cn0KCnN1YiBFZGl0RmllbGRSZW5kZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGVuc0RGQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgICMgVGhlIGVkaXQgZmllbGQgc2hvdWxkIGJlIHJlbmRlcmVkIGxpa2UgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgcmVmZXJlbmNlZCBvYmplY3QsCiAgICAjIEJ1dCBuYW1lIGFuZCBMYWJlbCBzaG91bGQgYmUgdGhhdCBvZiB0aGUgTGVucyBkeW5hbWljIGZpZWxkLgogICAgJEF0dHJpYnV0ZURGQ29uZmlnLT57TmFtZX0gID0gJExlbnNERkNvbmZpZy0+e05hbWV9OwogICAgJEF0dHJpYnV0ZURGQ29uZmlnLT57TGFiZWx9ID0gJExlbnNERkNvbmZpZy0+e0xhYmVsfTsKICAgIG15ICRBdHRyaWJ1dGVGaWVsZEhUTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkVkaXRGaWVsZFJlbmRlcigKICAgICAgICAlUGFyYW0sCiAgICAgICAgVXNlRGVmYXVsdFZhbHVlICAgID0+IDAsCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7CgogICAgcmV0dXJuICRBdHRyaWJ1dGVGaWVsZEhUTUw7Cn0KCnN1YiBFZGl0RmllbGRWYWx1ZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMZW5zREZDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgIyBUaGUgbmFtZSB1c2VkIGluIHRoZSBHVUkgaXMgdGhlIG5hbWUgb2YgdGhlIExlbnMKICAgICRBdHRyaWJ1dGVERkNvbmZpZy0+e05hbWV9ID0gJExlbnNERkNvbmZpZy0+e05hbWV9OwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEF0dHJpYnV0ZURGQ29uZmlnLAogICAgKTsKfQoKc3ViIEVkaXRGaWVsZFZhbHVlVmFsaWRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGZldGNoIGF0dHJpYnV0ZSBkZiBjb25maWcKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICk7CgogICAgIyBjYWxsIGF0dHJpYnV0ZSBkZiBjb25maWcgdmFsaWRhdGlvbgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RWRpdEZpZWxkVmFsdWVWYWxpZGF0ZSgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgTmFtZSA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtOYW1lfSwKICAgICAgICB9LAogICAgKTsKfQoKc3ViIERpc3BsYXlWYWx1ZVJlbmRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMZW5zREZDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgcmV0dXJuICcnIHVubGVzcyAkQXR0cmlidXRlREZDb25maWc7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICVQYXJhbSwgICAgIyBlLmcuIFZhbHVlIGFuZCBIVE1MT3V0cHV0CiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBTZWFyY2hGaWVsZFJlbmRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMZW5zREZDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+U2VhcmNoRmllbGRSZW5kZXIoCiAgICAgICAgJVBhcmFtLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiB7CiAgICAgICAgICAgICRBdHRyaWJ1dGVERkNvbmZpZy0+JSosCiAgICAgICAgICAgIE5hbWUgID0+ICRMZW5zREZDb25maWctPntOYW1lfSwKICAgICAgICAgICAgTGFiZWwgPT4gJExlbnNERkNvbmZpZy0+e0xhYmVsfSwKICAgICAgICB9CiAgICApOwp9CgpzdWIgU2VhcmNoRmllbGRWYWx1ZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMZW5zREZDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgbXkgJFJlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+U2VhcmNoRmllbGRWYWx1ZUdldCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgTmFtZSAgPT4gJExlbnNERkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBMYWJlbCA9PiAkTGVuc0RGQ29uZmlnLT57TGFiZWx9LAogICAgICAgIH0KICAgICk7CiAgICByZXR1cm4gJFJlc3VsdDsKfQoKc3ViIFNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGVuc0RGQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgIG15ICRSZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiB7CiAgICAgICAgICAgICRBdHRyaWJ1dGVERkNvbmZpZy0+JSosCiAgICAgICAgICAgIE5hbWUgID0+ICRMZW5zREZDb25maWctPntOYW1lfSwKICAgICAgICAgICAgTGFiZWwgPT4gJExlbnNERkNvbmZpZy0+e0xhYmVsfSwKICAgICAgICB9CiAgICApOwogICAgcmV0dXJuICRSZXN1bHQ7Cn0KCnN1YiBTZWFyY2hGaWVsZFByZWZlcmVuY2VzIHsKCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMZW5zREZDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgbXkgJFJlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgTmFtZSAgPT4gJExlbnNERkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBMYWJlbCA9PiAkTGVuc0RGQ29uZmlnLT57TGFiZWx9LAogICAgICAgIH0KICAgICk7CiAgICByZXR1cm4gJFJlc3VsdDsKfQoKc3ViIFN0YXRzRmllbGRQYXJhbWV0ZXJCdWlsZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiB7CiAgICAgICAgTmFtZSAgICA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e0xhYmVsfSwKICAgICAgICBFbGVtZW50ID0+ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TmFtZX0sCiAgICB9Owp9CgpzdWIgU3RhdHNTZWFyY2hGaWVsZFBhcmFtZXRlckJ1aWxkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAjIHNldCBvcGVyYXRvcgogICAgbXkgJE9wZXJhdG9yID0gJ0VxdWFscyc7CgogICAgIyBzZWFyY2ggZm9yIGEgd2lsZCBjYXJkIGluIHRoZSB2YWx1ZQogICAgaWYgKCAkVmFsdWUgJiYgJFZhbHVlID1+IG17XCp9ICkgewoKICAgICAgICAjIGNoYW5nZSBvcGVyYXRvcgogICAgICAgICRPcGVyYXRvciA9ICdMaWtlJzsKICAgIH0KCiAgICByZXR1cm4gewogICAgICAgICRPcGVyYXRvciA9PiAkVmFsdWUsCiAgICB9Owp9CgpzdWIgUmVhZGFibGVWYWx1ZVJlbmRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICcnOwoKICAgICMgY2hlY2sgdmFsdWUKICAgIG15IEBWYWx1ZXM7CiAgICBpZiAoIHJlZiAkUGFyYW17VmFsdWV9IGVxICdBUlJBWScgKSB7CiAgICAgICAgQFZhbHVlcyA9IEB7ICRQYXJhbXtWYWx1ZX0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBWYWx1ZXMgPSAoICRQYXJhbXtWYWx1ZX0gKTsKICAgIH0KCiAgICAjIHByZXZlbnQgam9pbmluZyB1bmRlZmluZWQgdmFsdWVzCiAgICBAVmFsdWVzID0gbWFwIHsgJF8gLy8gJycgfSBAVmFsdWVzOwoKICAgICMgc2V0IG5ldyBsaW5lIHNlcGFyYXRvcgogICAgbXkgJEl0ZW1TZXBhcmF0b3IgPSAnLCAnOwoKICAgICMgT3V0cHV0IHRyYW5zZm9ybWF0aW9ucwogICAgJFZhbHVlID0gam9pbiggJEl0ZW1TZXBhcmF0b3IsIEBWYWx1ZXMgKTsKICAgIG15ICRUaXRsZSA9ICRWYWx1ZTsKCiAgICAjIGN1dCBzdHJpbmdzIGlmIG5lZWRlZAogICAgaWYgKCAkUGFyYW17VmFsdWVNYXhDaGFyc30gJiYgbGVuZ3RoKCRWYWx1ZSkgPiAkUGFyYW17VmFsdWVNYXhDaGFyc30gKSB7CiAgICAgICAgJFZhbHVlID0gc3Vic3RyKCAkVmFsdWUsIDAsICRQYXJhbXtWYWx1ZU1heENoYXJzfSApIC4gJy4uLic7CiAgICB9CiAgICBpZiAoICRQYXJhbXtUaXRsZU1heENoYXJzfSAmJiBsZW5ndGgoJFRpdGxlKSA+ICRQYXJhbXtUaXRsZU1heENoYXJzfSApIHsKICAgICAgICAkVGl0bGUgPSBzdWJzdHIoICRUaXRsZSwgMCwgJFBhcmFte1RpdGxlTWF4Q2hhcnN9ICkgLiAnLi4uJzsKICAgIH0KCiAgICAjIHJldHVybiBhIGRhdGEgc3RydWN0dXJlCiAgICByZXR1cm4gewogICAgICAgIFZhbHVlID0+ICRWYWx1ZSwKICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICB9Owp9CgpzdWIgVGVtcGxhdGVWYWx1ZVR5cGVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntOYW1lfTsKCiAgICAjIHNldCB0aGUgZmllbGQgdHlwZXMKICAgIG15ICRFZGl0VmFsdWVUeXBlICAgPSAnU0NBTEFSJzsKICAgIG15ICRTZWFyY2hWYWx1ZVR5cGUgPSAnU0NBTEFSJzsKCiAgICAjIHJldHVybiB0aGUgY29ycmVjdCBzdHJ1Y3R1cmUKICAgIGlmICggJFBhcmFte0ZpZWxkVHlwZX0gZXEgJ0VkaXQnICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICRGaWVsZE5hbWUgPT4gJEVkaXRWYWx1ZVR5cGUsCiAgICAgICAgfTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte0ZpZWxkVHlwZX0gZXEgJ1NlYXJjaCcgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgJ1NlYXJjaF8nIC4gJEZpZWxkTmFtZSA9PiAkU2VhcmNoVmFsdWVUeXBlLAogICAgICAgIH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICAkRmllbGROYW1lICAgICAgICAgICAgID0+ICRFZGl0VmFsdWVUeXBlLAogICAgICAgICAgICAnU2VhcmNoXycgLiAkRmllbGROYW1lID0+ICRTZWFyY2hWYWx1ZVR5cGUsCiAgICAgICAgfTsKICAgIH0KfQoKc3ViIFJhbmRvbVZhbHVlU2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkbyBub3RoaW5nIGJ1dCByZXBvcnRpbmcgc3VjY2VzcwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIFZhbHVlICAgPT4gMSwKICAgIH07Cn0KCnN1YiBPYmplY3RNYXRjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRGaWVsZE5hbWUgPSAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e05hbWV9OwoKICAgICMgcmV0dXJuIGZhbHNlIGlmIGZpZWxkIGlzIG5vdCBkZWZpbmVkCiAgICByZXR1cm4gMCB1bmxlc3MgZGVmaW5lZCAkUGFyYW17T2JqZWN0QXR0cmlidXRlc30tPnskRmllbGROYW1lfTsKCiAgICAjIHJldHVybiBmYWxzZSBpZiBub3QgbWF0Y2gKICAgIHJldHVybiAxIGlmICRQYXJhbXtPYmplY3RBdHRyaWJ1dGVzfS0+eyRGaWVsZE5hbWV9IGVxICRQYXJhbXtWYWx1ZX07CiAgICByZXR1cm4gMDsKfQoKc3ViIEhpc3RvcmljYWxWYWx1ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHJldHVybiB0aGUgaGlzdG9yaWNhbCB2YWx1ZXMgZnJvbSBkYXRhYmFzZQogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGRWYWx1ZScpLT5IaXN0b3JpY2FsVmFsdWVHZXQoCiAgICAgICAgRmllbGRJRCAgID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57SUR9LAogICAgICAgIFZhbHVlVHlwZSA9PiAnVGV4dCcsCiAgICApOwp9CgpzdWIgVmFsdWVMb29rdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICApOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlTG9va3VwKAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEF0dHJpYnV0ZURGQ29uZmlnLAogICAgKTsKfQoKc3ViIFZhbHVlSXNEaWZmZXJlbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICApOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlSXNEaWZmZXJlbnQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICApOwp9CgpzdWIgSGFzQmVoYXZpb3IgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIFRPRE86IFRoaW5rIGFib3V0IGFkZGl0aW9uYWwgYmVoYXZpb3JzIHdlIGNhbiBqdXN0IGFkb3B0IGZyb20gdGhlIGF0dHJpYnV0ZSBmaWVsZAogICAgIyBmb3IgY2VydGFpbiBiZWhhdmlvcnMgaW5zdGVhZCB1c2UgdGhlIGF0dHJpYnV0ZSBmaWVsZCBiZWhhdmlvcnMKICAgIGlmICggYW55IHsgJFBhcmFte0JlaGF2aW9yfSBlcSAkXyB9IHF3L0lzQUNMUmVkdWNpYmxlIElzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlLyApIHsKICAgICAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJldHVybiBzdWNjZXNzIGlmIHRoZSBkeW5hbWljIGZpZWxkIGhhcyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IKICAgIHJldHVybiAkU2VsZi0+U1VQRVI6Okhhc0JlaGF2aW9yKCBCZWhhdmlvciA9PiAkUGFyYW17QmVoYXZpb3J9ICk7Cn0KCnN1YiBQb3NzaWJsZVZhbHVlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICk7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+UG9zc2libGVWYWx1ZXNHZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICApOwp9CgpzdWIgQnVpbGRTZWxlY3Rpb25EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgKTsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICApOwp9CgpzdWIgR2V0RmllbGRTdGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKICAgIG15ICROZWVkc1Jlc2V0OwoKICAgICMgcmVzZXQgaWYgdGhlIHJlZmVyZW5jZWQgb2JqZWN0IGNoYW5nZXMKICAgIGlmICggJFBhcmFte0NoYW5nZWRFbGVtZW50c317ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1JlZmVyZW5jZURGTmFtZX0gfSApIHsKICAgICAgICAkTmVlZHNSZXNldCA9IDE7CiAgICB9CgogICAgIyBvciBpZiB3ZSBoYXZlIHRoZSBmaWVsZCByZWFwcGVhcgogICAgZWxzaWYgKCAkUGFyYW17Q2FjaGVkVmlzaWJpbGl0eX0gJiYgISRQYXJhbXtDYWNoZWRWaXNpYmlsaXR5fXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gKSB7CiAgICAgICAgJE5lZWRzUmVzZXQgPSAxOwogICAgfQoKICAgICMgVE9ETzogYWxzbyBvbiBpbml0aWFsIHJ1bj8KCiAgICByZXR1cm4gKCkgaWYgISROZWVkc1Jlc2V0OwoKICAgIG15ICRERlBhcmFtID0gJFBhcmFte0dldFBhcmFtfXtEeW5hbWljRmllbGR9OwoKICAgIG15ICRBdHRyaWJ1dGVGaWVsZFZhbHVlOwogICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJFNlbGYtPkhhc0JlaGF2aW9yKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnLAogICAgKTsKCiAgICBteSAlUmV0dXJuOwogICAgbXkgJFJlZmVyZW5jZUlEID0gJERGUGFyYW0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UmVmZXJlbmNlREZOYW1lfSB9ID8gJERGUGFyYW0tPnsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UmVmZXJlbmNlREZOYW1lfSB9WzBdIDogdW5kZWY7CgogICAgIyBnZXQgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHJlZmVyZW5jZWQgYXR0cmlidXRlIGZpZWxkIGlmIGFuIG9iamVjdCBpcyByZWZlcmVuY2VkCiAgICBpZiAoJFJlZmVyZW5jZUlEKSB7CgogICAgICAgIG15ICRSZWZlcmVuY2VERk5hbWUgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtSZWZlcmVuY2VERk5hbWV9IC4gKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57UHJvY2Vzc1N1ZmZpeH0gLy8gJycgKTsKCiAgICAgICAgaWYgKCBkZWZpbmVkICRQYXJhbXtTZXRJbmRleH0gKSB7CiAgICAgICAgICAgICRSZWZlcmVuY2VERk5hbWUgLj0gIl8kUGFyYW17U2V0SW5kZXh9IjsKICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e1NldEluZGV4fSA9ICRQYXJhbXtTZXRJbmRleH07CiAgICAgICAgfQoKICAgICAgICAjIGlmIHRoZSB2YWx1ZSB3b3VsZCBjaGFuZ2UsIHdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhlIHVzZXIgaXMgcmVhbGx5IGFsbG93ZWQKICAgICAgICAjIHRvIGFjY2VzcyB0aGUgcHJvdmlkZWQgcmVmZXJlbmNlZCBvYmplY3QgdmlhIHRoaXMgZm9ybQogICAgICAgICMgdGhpcyBpcyB0aGUgY2FzZSBpZiBlaXRoZXIgdGhlIHJlZmVyZW5jZWQgb2JqZWN0IHdhcyBzaG93biB2aWEgYSBzZWFyY2ggKDEpCiAgICAgICAgIyBvciBpcyBjdXJyZW50bHkgc3RvcmVkIGZvciB0aGUgZWRpdGVkIHRpY2tldC9jaS8uLi4gKDIpCiAgICAgICAgbXkgJExhc3RTZWFyY2hSZXN1bHRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6Rm9ybUNhY2hlJyktPkdldEZvcm1EYXRhKAogICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLAogICAgICAgICAgICBLZXkgICAgICAgICAgPT4gJ1Bvc3NpYmxlVmFsdWVzXycgLiAkUmVmZXJlbmNlREZOYW1lLAogICAgICAgICk7CgogICAgICAgICMgaW4gc2V0IGNhc2UsIHdlIGZldGNoIHRoZSB0ZW1wbGF0ZSB2YWx1ZXMgYW5kIGVpdGhlciBjb25jYXQgdGhlbSB0byB0aGUgc2VhcmNoIHJlc3VsdHMKICAgICAgICAjICAgb3IsIGlmIG5vIHNlYXJjaCByZXN1bHRzIGFyZSBwcmVzZW50LCB1c2UgdGhlIHRlbXBsYXRlIHZhbHVlcyBlbnRpcmVseQogICAgICAgIGlmICggZGVmaW5lZCAkUGFyYW17U2V0SW5kZXh9ICkgewogICAgICAgICAgICBteSAkVGVtcGxhdGVOYW1lICAgICAgICAgID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UmVmZXJlbmNlREZOYW1lfSAuICdfVGVtcGxhdGUnOwogICAgICAgICAgICBteSAkVGVtcGxhdGVTZWFyY2hSZXN1bHRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6Rm9ybUNhY2hlJyktPkdldEZvcm1EYXRhKAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKSwKICAgICAgICAgICAgICAgIEtleSAgICAgICAgICA9PiAnUG9zc2libGVWYWx1ZXNfJyAuICRUZW1wbGF0ZU5hbWUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoIHJlZiAkTGFzdFNlYXJjaFJlc3VsdHMgJiYgcmVmICRUZW1wbGF0ZVNlYXJjaFJlc3VsdHMgKSB7CiAgICAgICAgICAgICAgICBwdXNoICRMYXN0U2VhcmNoUmVzdWx0cy0+QCosICRUZW1wbGF0ZVNlYXJjaFJlc3VsdHMtPkAqOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggcmVmICRUZW1wbGF0ZVNlYXJjaFJlc3VsdHMgKSB7CiAgICAgICAgICAgICAgICAkTGFzdFNlYXJjaFJlc3VsdHMgPSAkVGVtcGxhdGVTZWFyY2hSZXN1bHRzOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGlmIGEgc2VhcmNoIGhhcyBhbHJlYWR5IGJlZW4gcGVyZm9ybWVkIGZvciB0aGlzIGZvcm0gaWQKICAgICAgICBteSAkQWxsb3dlZCA9ICggZ3JlcCB7ICRfIGVxICRSZWZlcmVuY2VJRCB9ICRMYXN0U2VhcmNoUmVzdWx0cy0+QCogKSA/IDEgOiAwOwoKICAgICAgICAjIGFib3J0IGlmIHJlcXVlc3RlZCB2YWx1ZSBpcyBub3QgYWxsb3dlZAogICAgICAgIGlmICggISRBbGxvd2VkICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlZhbHVlICRSZWZlcmVuY2VJRCBmb3IgbGVucyBmaWVsZCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gaXMgbm90IGFsbG93ZWQuIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJEF0dHJpYnV0ZUZpZWxkVmFsdWUgPSAkU2VsZi0+VmFsdWVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAoKICAgICAgICAgICAgIyBUT0RPOiBJbnN0ZWFkIHdlIGNvdWxkIGp1c3Qgc2VuZCAkREZQYXJhbS0+eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtSZWZlcmVuY2VERk5hbWV9IH0gYXMgT2JqZWN0SUQKICAgICAgICAgICAgIyBidXQgd2Ugd291bGQgbmVlZCB0byBpbnRlcnByZXQgaXQgbGF0ZXIgKGZyb20gQ29uZmlnSXRlbUlEIHRvIExhc3RWZXJzaW9uSUQsIGUuZy4pCiAgICAgICAgICAgICMgVE9ETzogVmFsaWRhdGUgdGhlIFJlZmVyZW5jZSBPYmplY3RJRCBoZXJlLCBvciBlYXJsaWVyLCB0byBwcmV2ZW50IGRhdGEgbGVha3MhCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICAgICA9PiAxLCAgICAjIHdpbGwgbm90IGJlIHVzZWQ7CiAgICAgICAgICAgIFVzZVJlZmVyZW5jZUVkaXRGaWVsZCA9PiAxLAogICAgICAgICkgLy8gJyc7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkQXR0cmlidXRlRmllbGRWYWx1ZSA9ICcnOwogICAgfQoKICAgICMgc2V0IHRoZSBuZXcgdmFsdWUgaWYgaXQgZGlmZmVycwogICAgaWYgKAogICAgICAgICRTZWxmLT5WYWx1ZUlzRGlmZmVyZW50KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgVmFsdWUxICAgICAgICAgICAgID0+ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0ifSwKICAgICAgICAgICAgVmFsdWUyICAgICAgICAgICAgID0+ICRBdHRyaWJ1dGVGaWVsZFZhbHVlLAogICAgICAgICkKICAgICAgICApCiAgICB7CiAgICAgICAgJFJldHVybntOZXdWYWx1ZX0gPSAkQXR0cmlidXRlRmllbGRWYWx1ZTsKCiAgICAgICAgIyBhbHJlYWR5IHdyaXRlIHRoZSBuZXcgdmFsdWUgdG8gREZQYXJhbSwgZm9yIHBvc3NpYmxlIHZhbHVlcyBjaGVjayBmdXJ0aGVyIGRvd24KICAgICAgICAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In0gPSAkQXR0cmlidXRlRmllbGRWYWx1ZTsKICAgIH0KCiAgICAjIGlmIHRoaXMgZmllbGQgaXMgbm9uIEFDTCByZWR1Y2libGUsIHNldCB0aGUgZmllbGQgdmFsdWVzCiAgICByZXR1cm4gJVJldHVybiBpZiAhJElzQUNMUmVkdWNpYmxlOwoKICAgICMgZ2V0IHBvc3NpYmxlIHZhbHVlcyBpZiBBQ0xSZWR1Y2libGUKICAgICMgdGhpcyBpcyB3aGF0IHRoZSBGaWVsZFJlc3RyaWN0aW9ucyBvYmplY3Qgd291bGQgZG8gZm9yIG90aGVyIGZpZWxkcwogICAgbXkgJFBvc3NpYmxlVmFsdWVzID0gJFNlbGYtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgKTsKCiAgICAjIGNvbnZlcnQgcG9zc2libGUgdmFsdWVzIGtleSA9PiB2YWx1ZSB0byBrZXkgPT4ga2V5IGZvciBBQ0xzIHVzaW5nIGEgSGFzaCBzbGljZQogICAgbXkgJUFjbERhdGEgPSAleyRQb3NzaWJsZVZhbHVlc307CiAgICBAQWNsRGF0YXsga2V5cyAlQWNsRGF0YSB9ID0ga2V5cyAlQWNsRGF0YTsKCiAgICAjIHNldCBwb3NzaWJsZSB2YWx1ZXMgZmlsdGVyIGZyb20gQUNMcwogICAgaWYgKCAkUGFyYW17VGlja2V0T2JqZWN0fSApIHsKICAgICAgICBteSAkQUNMID0gJFBhcmFte1RpY2tldE9iamVjdH0tPlRpY2tldEFjbCgKICAgICAgICAgICAgJXsgJFBhcmFte0dldFBhcmFtfSB9LAogICAgICAgICAgICBUaWNrZXRJRCAgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBBY3Rpb24gICAgICAgICA9PiAkUGFyYW17QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRQYXJhbXtDdXN0b21lclVzZXJ9IHx8ICcnLAogICAgICAgICAgICBSZXR1cm5UeXBlICAgICA9PiAnVGlja2V0JywKICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBEYXRhICAgICAgICAgICA9PiBcJUFjbERhdGEsCiAgICAgICAgKTsKICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICBteSAlRmlsdGVyID0gJFBhcmFte1RpY2tldE9iamVjdH0tPlRpY2tldEFjbERhdGEoKTsKCiAgICAgICAgICAgICMgY29udmVydCBGaWx0ZXIga2V5ID0+IGtleSBiYWNrIHRvIGtleSA9PiB2YWx1ZSB1c2luZyBtYXAKICAgICAgICAgICAgJXskUG9zc2libGVWYWx1ZXN9ID0gbWFwIHsgJF8gPT4gJFBvc3NpYmxlVmFsdWVzLT57JF99IH0ga2V5cyAlRmlsdGVyOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0NvbmZpZ0l0ZW1PYmplY3R9ICkgewogICAgICAgIG15ICRBQ0wgPSAkUGFyYW17Q29uZmlnSXRlbU9iamVjdH0tPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICV7ICRQYXJhbXtHZXRQYXJhbX0gfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkUGFyYW17QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnQ29uZmlnSXRlbScsCiAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlQWNsRGF0YSwKICAgICAgICApOwogICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgIG15ICVGaWx0ZXIgPSAkUGFyYW17Q29uZmlnSXRlbU9iamVjdH0tPkNvbmZpZ0l0ZW1BY2xEYXRhKCk7CgogICAgICAgICAgICAjIGNvbnZlcnQgRmlsdGVyIGtleSA9PiBrZXkgYmFjayB0byBrZXkgPT4gdmFsdWUgdXNpbmcgbWFwCiAgICAgICAgICAgICV7JFBvc3NpYmxlVmFsdWVzfSA9IG1hcCB7ICRfID0+ICRQb3NzaWJsZVZhbHVlcy0+eyRffSB9IGtleXMgJUZpbHRlcjsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgJ1ByaW9yaXR5JyA9PiAnZXJyb3InLAogICAgICAgICAgICAnTWVzc2FnZScgID0+ICJOZWVkIFRpY2tldCBvciBDSSBPYmplY3QuIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gKCk7CiAgICB9CgogICAgIyBjaGVjayB3aGV0aGVyIGFsbCBzZWxlY3RlZCBlbnRyaWVzIGFyZSBzdGlsbCB2YWxpZAogICAgaWYgKAogICAgICAgIGRlZmluZWQgJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfSJ9CiAgICAgICAgJiYKICAgICAgICAoICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0ifSB8fCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In0gZXEgJzAnICkKICAgICAgICApCiAgICB7CiAgICAgICAgIyBtdWx0aXNlbGVjdCBmaWVsZHMKICAgICAgICBpZiAoIHJlZiggJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfSJ9ICkgKSB7CiAgICAgICAgICAgIFNFTEVDVEVEOgogICAgICAgICAgICBmb3IgbXkgJFNlbGVjdGVkICggQHsgJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfSJ9IH0gKSB7CgogICAgICAgICAgICAgICAgIyBpZiBhIHNlbGVjdGVkIHZhbHVlIGlzIG5vdCBwb3NzaWJsZSBhbnltb3JlCiAgICAgICAgICAgICAgICBpZiAoICFkZWZpbmVkICRQb3NzaWJsZVZhbHVlcy0+eyRTZWxlY3RlZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFJldHVybntOZXdWYWx1ZX0gPSBncmVwIHsgZGVmaW5lZCAkUG9zc2libGVWYWx1ZXMtPnskU2VsZWN0ZWR9IH0gQHsgJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfSJ9IH07CgogICAgICAgICAgICAgICAgICAgIGxhc3QgU0VMRUNURUQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2luZ2xlc2VsZWN0IGZpZWxkcwogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRQb3NzaWJsZVZhbHVlcy0+eyAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In0gfSApIHsKICAgICAgICAgICAgICAgICRSZXR1cm57TmV3VmFsdWV9ID0gJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICgKICAgICAgICAlUmV0dXJuLAogICAgICAgIFBvc3NpYmxlVmFsdWVzID0+ICRQb3NzaWJsZVZhbHVlcywKICAgICk7Cn0KCj1oZWFkMSBpbnRlcm5hbCBtZXRob2RzCgpNZXRob2RzIHRoYXQgYXJlIHVzZWQgb25seSBpbnRlcm5hbGx5LgoKPWhlYWQyIF9HZXRSZWZlcmVuY2VERkNvbmZpZygpCgpBIGR5bmFtaWMgZmllbGQgY29uZmlndXJhdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgZGVsZWdhdGUuCgo9Y3V0CgojVE9ETzogaW4gQ0kgZGVmaW5pdGlvbnMgc3RvcmUgdGhlIGRlZmluaXRpb24gaWQgb3IgZGYgY29uZmlncyBpbiB0aGUgbGVucyBjb25maWcgYW5kIHVzZSB0aGlzIG9uZSBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IGRmIGNvbmZpZ3MKc3ViIF9HZXRSZWZlcmVuY2VERkNvbmZpZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgJFNlbGYtPntSZWZlcmVuY2VERkNhY2hlfXsgJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0lEfSB9IC8vPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKIyAgICAgICAgSUQgPT4gJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317UmVmZXJlbmNlREZ9LAojICAgICk7CiAgICAjIGNvbmZpZyBpdGVtcyBhbmQgY2kgdmVyc2lvbnMgc3RvcmUgdGhlaXIgcmVzcGVjdGl2ZSByZWZlcmVuY2UgY29uZmlncyBhcyBwYXJ0IG9mIHRoZSBsZW5zIGNvbmZpZwogICAgIyBlbHNlIHVzZSBzdGFuZGFyZCBkeW5hbWljIGZpZWxkIGdldAogICAgJFNlbGYtPntSZWZlcmVuY2VERkNhY2hlfXsgJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0lEfSB9IC8vPSAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317UmVmZXJlbmNlREZDb25maWd9CiAgICAgICAgLy8gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIElEID0+ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1JlZmVyZW5jZURGfSwKICAgICAgICApOwojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgIHJldHVybiAkU2VsZi0+e1JlZmVyZW5jZURGQ2FjaGV9eyAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317SUR9IH07Cn0KCj1oZWFkMiBfR2V0QXR0cmlidXRlREZDb25maWcoKQoKQSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyYXRpb24gdGhhdCBjYW4gYmUgdXNlZCBhcyBhIGRlbGVnYXRlLgoKPWN1dAoKc3ViIF9HZXRBdHRyaWJ1dGVERkNvbmZpZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggIWRlZmluZWQgJFNlbGYtPntBdHRyaWJ1dGVERkNhY2hlfXsgJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0lEfSB9ICkgewogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgSUQgPT4gJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317QXR0cmlidXRlREZ9LAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPntBdHRyaWJ1dGVERkNhY2hlfXsgJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0lEfSB9ID0gJER5bmFtaWNGaWVsZENvbmZpZyA/IHsgJER5bmFtaWNGaWVsZENvbmZpZy0+JSogfSA6IHt9OwogICAgfQoKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAjcmV0dXJuICRTZWxmLT57QXR0cmlidXRlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfTsKICAgIGlmICggJFBhcmFte1JlZmVyZW5jZWRPYmplY3RJRH0gJiYgJFNlbGYtPntSZWZlcmVuY2VERkNhY2hlfXsgJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0lEfSB9ICkgewogICAgICAgIG15ICRSZWZlcmVuY2VERkNvbmZpZyA9ICRTZWxmLT57UmVmZXJlbmNlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfTsKCiAgICAgICAgaWYgKCAkUmVmZXJlbmNlREZDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyApIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkUGFyYW17UmVmZXJlbmNlZE9iamVjdElEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICRTZWxmLT57QXR0cmlidXRlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfS0+JSosCiAgICAgICAgICAgICAgICAgICAgQ0lDbGFzcyA9PiAkQ29uZmlnSXRlbS0+e0NsYXNzfSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAnTWVzc2FnZScgID0+ICJObyBDb25maWdJdGVtIHdpdGggSUQgJyRQYXJhbXtSZWZlcmVuY2VkT2JqZWN0SUR9Jy4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4geyAkU2VsZi0+e0F0dHJpYnV0ZURGQ2FjaGV9eyAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317SUR9IH0tPiUqIH07CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50Cn0KCj1oZWFkMiBfR2V0UmVmZXJlbmNlZE9iamVjdElEKCkKClRoZSBjb25maWcgb2YgdGhlIGxlbnMgY29udGFpbnMgdGhlIElEIG9mIGFub3RoZXIgZHluYW1pYyBmaWVsZC4gVGhhdCBmaWVsZCBpcyBhIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIHRoYXQKcmVmZXJlbmNlcyBhbm90aGVyIG9iamVjdC4gVGhlIElEIG9mIHRoZSByZWZlcmVuY2VkIG9iamVjdCBpcyB0aGUgdmFsdWUgb2YgdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkLgoKPWN1dAoKc3ViIF9HZXRSZWZlcmVuY2VkT2JqZWN0SUQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGV4dHJhY3QgcGFyYW1zCiAgICBteSAkTGVuc0RGQ29uZmlnID0gJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9OwoKICAgICMgR2V0IHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZyBmb3IgdGhlIHJlZmVyZW5jZWQgb2JqZWN0CiAgICBteSAkUmVmZXJlbmNlREZDb25maWcgPSAkU2VsZi0+X0dldFJlZmVyZW5jZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgaWYgKCAkUGFyYW17RWRpdEZpZWxkVmFsdWV9ICkgewoKICAgICAgICAjIHN1ZmZpeCBuYW1lIHdpdGggcHJvY2VzcyBpZCBhbmQgc2V0IGluZGV4LCBpZiBwcmVzZW50CiAgICAgICAgbXkgJFJlZmVyZW5jZURGTmFtZSA9ICRSZWZlcmVuY2VERkNvbmZpZy0+e05hbWV9OwogICAgICAgIGlmICggJExlbnNERkNvbmZpZy0+e1Byb2Nlc3NTdWZmaXh9ICkgewogICAgICAgICAgICAkUmVmZXJlbmNlREZOYW1lIC49ICRMZW5zREZDb25maWctPntQcm9jZXNzU3VmZml4fTsKICAgICAgICB9CgogICAgICAgIGlmICggZGVmaW5lZCAkTGVuc0RGQ29uZmlnLT57U2V0SW5kZXh9ICkgewogICAgICAgICAgICAkUmVmZXJlbmNlREZOYW1lIC49ICJfJExlbnNERkNvbmZpZy0+e1NldEluZGV4fSI7CiAgICAgICAgfQoKICAgICAgICBteSAkT2JqZWN0SUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAgICAgJFJlZmVyZW5jZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFJlZmVyZW5jZURGTmFtZSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLAogICAgICAgICAgICBUcmFuc2Zvcm1EYXRlcyA9PiAwLAogICAgICAgICAgICBGb3JMZW5zICAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIHJldHVybiBpZiAhJE9iamVjdElEOwogICAgICAgIHJldHVybiAkT2JqZWN0SUQtPlswXTsKICAgIH0KCiAgICBteSAkT2JqZWN0SUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlR2V0KAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkUmVmZXJlbmNlREZDb25maWcsCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgRm9yTGVucyAgICAgICAgICAgID0+IDEsCiAgICAgICAgU2V0ICAgICAgICAgICAgICAgID0+ICRQYXJhbXtTZXR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISRPYmplY3RJRDsKCiAgICAjIGluIHNldCBjYXNlLCB3ZSBuZWVkIHRvIG1hcCB0aGUgcmV0dXJuZWQgYXJyYXkgb2YgYXJyYXlzIGludG8gYW4gYXJyYXkgb2YgZmlyc3QgdmFsdWVzIGFzIG11bHRpdmFsdWUgbGVuc2VzIGFyZSBub3Qgc3VwcG9ydGVkIGF0IHRoZSBtb21lbnQKICAgIGlmICggJFBhcmFte1NldH0gKSB7CiAgICAgICAgbXkgQE9iamVjdElEcyA9IG1hcCB7ICRfLT5bMF0gfSAkT2JqZWN0SUQtPkAqOwogICAgICAgIHJldHVybiBcQE9iamVjdElEczsKICAgIH0KCiAgICByZXR1cm4gJE9iamVjdElELT5bMF07Cn0KCjE7Cg==</File>
        <File Location="Custom/Kernel/System/ZnunyHelper.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMjAgWm51bnkgR21iSCwgaHR0cDovL3pudW55LmNvbS8KIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCiMgLS0KIyAkb3JpZ2luOiBvdG9ibyAtIDZiYjJiYzcyZDYxOTc1ODFhNjI1NWE2OTY4Y2Q0ZWM0NTIxZjc3MGMgLSBLZXJuZWwvU3lzdGVtL1pudW55SGVscGVyLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBvZDo6U3BlbGxDaGVjaykKCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlpudW55SGVscGVyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBMaXN0OjpBbGxVdGlscyBxdyhub25lKTsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljQWdlbnQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpOb3RpZmljYXRpb25FdmVudCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlBhY2thZ2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpQb3N0TWFzdGVyOjpGaWx0ZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpQcmlvcml0eScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlByb2Nlc3NNYW5hZ2VtZW50OjpEQjo6RW50aXR5JywKICAgICdLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OkRCOjpQcm9jZXNzJywKICAgICdLZXJuZWw6OlN5c3RlbTo6UXVldWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTTEEnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3RhbmRhcmRUZW1wbGF0ZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN0YXRlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3RvcmFibGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OlZhbGlkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6WUFNTCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlpudW55SGVscGVyCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBabnVueUhlbHBlciBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJFpudW55SGVscGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlpudW55SGVscGVyJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IFwlUGFyYW07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBfSXRlbVJldmVyc2VMaXN0R2V0KCkKCmNoZWNrcyBpZiBhIGl0ZW0gKGZvciBleGFtcGxlIGEgc2VydmljZSBuYW1lKSBpcyBpbiBhIHJldmVyc2UgaXRlbSBsaXN0IChmb3IgZXhhbXBsZSByZXZlcnNlICVTZXJ2aWNlTGlzdCkKd2l0aCBjYXNlIHNlbnNpdGl2ZSBjaGVjawoKICAgIG15ICRJdGVtSUQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9JdGVtUmV2ZXJzZUxpc3RHZXQoJFNlcnZpY2VOYW1lLCAlU2VydmljZUxpc3RSZXZlcnNlKTsKClJldHVybnM6CgogICAgbXkgJEl0ZW1JRCA9IDEyMzsKCj1jdXQKCnN1YiBfSXRlbVJldmVyc2VMaXN0R2V0IHsKICAgIG15ICggJFNlbGYsICRJdGVtTmFtZSwgJUl0ZW1MaXN0UmV2ZXJzZSApID0gQF87CgogICAgcmV0dXJuIGlmICEkSXRlbU5hbWU7CgogICAgJEl0ZW1OYW1lID1+IHN7XEFccyp9e31nOwogICAgJEl0ZW1OYW1lID1+IHN7XHMqXHp9e31nOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIG15ICRJdGVtSUQ7CiAgICBpZiAoICREQk9iamVjdC0+e0JhY2tlbmR9LT57J0RCOjpDYXNlU2Vuc2l0aXZlJ30gKSB7CiAgICAgICAgJEl0ZW1JRCA9ICRJdGVtTGlzdFJldmVyc2V7JEl0ZW1OYW1lfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIG15ICVJdGVtTGlzdFJldmVyc2VMQyA9IG1hcCB7IGxjICRfID0+ICRJdGVtTGlzdFJldmVyc2V7JF99IH0ga2V5cyAlSXRlbUxpc3RSZXZlcnNlOwoKICAgICAgICAkSXRlbUlEID0gJEl0ZW1MaXN0UmV2ZXJzZUxDeyBsYyAkSXRlbU5hbWUgfTsKICAgIH0KCiAgICByZXR1cm4gJEl0ZW1JRDsKfQoKPWl0ZW0gX1Bvc3RtYXN0ZXJYSGVhZGVyQWRkKCkKClRoaXMgZnVuY3Rpb24gYWRkcyBhIFBvc3RtYXN0ZXIgWC1IZWFkZXIgdG8gdGhlIGxpc3Qgb2YgUG9zdG1hc3RlciBYLUhlYWRlcnMgdG8gdGhlIFN5c0NvbmZpZy4KCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1Bvc3RtYXN0ZXJYSGVhZGVyQWRkKAogICAgICAgIEhlYWRlciA9PiAnWC1PVFJTLU93bkhlYWRlcicKICAgICk7CgogICAgb3IKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1Bvc3RtYXN0ZXJYSGVhZGVyQWRkKAogICAgICAgIEhlYWRlciA9PiBbCiAgICAgICAgICAgICdYLU9UUlMtT3duSGVhZGVyJywKICAgICAgICAgICAgJ0Fub3RoZXJIZWFkZXInLAogICAgICAgIF0KICAgICk7Cgo9Y3V0CgpzdWIgX1Bvc3RtYXN0ZXJYSGVhZGVyQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KEhlYWRlcikpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgQEhlYWRlcnNUb0FkZDsKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17SGVhZGVyfSApICkgewogICAgICAgIEBIZWFkZXJzVG9BZGQgPSBAeyAkUGFyYW17SGVhZGVyfSB9OwogICAgfQogICAgZWxzaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17SGVhZGVyfSApICkgewogICAgICAgIHB1c2ggQEhlYWRlcnNUb0FkZCwgJFBhcmFte0hlYWRlcn07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJ0hlYWRlcicgc2hvdWxkIGJlIGFuIEFycmF5UmVmIG9mIFN0cmluZyB3aXRoIGRhdGEhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkQ29uZmlndXJlZEhlYWRlcnMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Bvc3RtYXN0ZXJYLUhlYWRlcicpOwogICAgcmV0dXJuIGlmIHJlZiAkQ29uZmlndXJlZEhlYWRlcnMgbmUgJ0FSUkFZJzsKCiAgICBteSAlQ29uZmlndXJlZEhlYWRlcnMgPSBtYXAgeyAkXyA9PiAxIH0gQHskQ29uZmlndXJlZEhlYWRlcnN9OwoKICAgIEhFQURFUjoKICAgIGZvciBteSAkSGVhZGVyVG9BZGQgKEBIZWFkZXJzVG9BZGQpIHsKICAgICAgICAkQ29uZmlndXJlZEhlYWRlcnN7JEhlYWRlclRvQWRkfSA9IDE7CiAgICB9CgogICAgcmV0dXJuICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFNldHRpbmdzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1Bvc3RtYXN0ZXJYLUhlYWRlcicsCiAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gWyBzb3J0IGtleXMgJUNvbmZpZ3VyZWRIZWFkZXJzIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBDb21tZW50cyA9PiAnUG9zdG1hc3RlclgtSGVhZGVyIHNldHRpbmdzIGFkZGVkLicsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7Cn0KCj1pdGVtIF9Qb3N0bWFzdGVyWEhlYWRlclJlbW92ZSgpCgpUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgYSBQb3N0bWFzdGVyIFgtSGVhZGVyIGZyb20gdGhlIGxpc3Qgb2YgUG9zdG1hc3RlciBYLUhlYWRlcnMgaW4gdGhlIFN5c0NvbmZpZy4KCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1Bvc3RtYXN0ZXJYSGVhZGVyUmVtb3ZlKAogICAgICAgIEhlYWRlciA9PiAnWC1PVFJTLU93bkhlYWRlcicKICAgICk7CgogICAgb3IKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1Bvc3RtYXN0ZXJYSGVhZGVyUmVtb3ZlKAogICAgICAgIEhlYWRlciA9PiBbCiAgICAgICAgICAgICdYLU9UUlMtT3duSGVhZGVyJywKICAgICAgICAgICAgJ0Fub3RoZXJIZWFkZXInLAogICAgICAgIF0KICAgICk7Cgo9Y3V0CgpzdWIgX1Bvc3RtYXN0ZXJYSGVhZGVyUmVtb3ZlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KEhlYWRlcikpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgQEhlYWRlcnNUb1JlbW92ZTsKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17SGVhZGVyfSApICkgewogICAgICAgIEBIZWFkZXJzVG9SZW1vdmUgPSBAeyAkUGFyYW17SGVhZGVyfSB9OwogICAgfQogICAgZWxzaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17SGVhZGVyfSApICkgewogICAgICAgIHB1c2ggQEhlYWRlcnNUb1JlbW92ZSwgJFBhcmFte0hlYWRlcn07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJ0hlYWRlcicgc2hvdWxkIGJlIGFuIEFycmF5UmVmIG9mIFN0cmluZyB3aXRoIGRhdGEhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkQ29uZmlndXJlZEhlYWRlcnMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Bvc3RtYXN0ZXJYLUhlYWRlcicpOwogICAgcmV0dXJuIGlmIHJlZiAkQ29uZmlndXJlZEhlYWRlcnMgbmUgJ0FSUkFZJzsKCiAgICBteSAlQ29uZmlndXJlZEhlYWRlcnMgPSBtYXAgeyAkXyA9PiAxIH0gQHskQ29uZmlndXJlZEhlYWRlcnN9OwoKICAgIEhFQURFUjoKICAgIGZvciBteSAkSGVhZGVyVG9SZW1vdmUgKEBIZWFkZXJzVG9SZW1vdmUpIHsKICAgICAgICBkZWxldGUgJENvbmZpZ3VyZWRIZWFkZXJzeyRIZWFkZXJUb1JlbW92ZX07CiAgICB9CgogICAgcmV0dXJuICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFNldHRpbmdzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1Bvc3RtYXN0ZXJYLUhlYWRlcicsCiAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gWyBzb3J0IGtleXMgJUNvbmZpZ3VyZWRIZWFkZXJzIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBDb21tZW50cyA9PiAnUG9zdG1hc3RlclgtSGVhZGVyIHNldHRpbmdzIHJlbW92ZWQuJywKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKfQoKPWl0ZW0gX0V2ZW50QWRkKCkKClRoaXMgZnVuY3Rpb24gYWRkcyBhbiBFdmVudCB0byB0aGUgbGlzdCBvZiBFdmVudHMgb2YgYW4gT2JqZWN0IHRvIHRoZSBTeXNDb25maWcuCgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9FdmVudEFkZCgKICAgICAgICBPYmplY3QgPT4gJ1RpY2tldCcsICMgVGlja2V0LCBBcnRpY2xlLCBRdWV1ZSwgLi4uCiAgICAgICAgRXZlbnQgID0+ICdNeUN1c3RvbUV2ZW50JwogICAgKTsKCiAgICBvcgoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fRXZlbnRBZGQoCiAgICAgICAgT2JqZWN0ID0+ICdUaWNrZXQnLAogICAgICAgIEV2ZW50ICA9PiBbCiAgICAgICAgICAgICdNeUN1c3RvbUV2ZW50JywKICAgICAgICAgICAgJ0Fub3RoZXJDdXN0b21FdmVudCcsCiAgICAgICAgXQogICAgKTsKCj1jdXQKCnN1YiBfRXZlbnRBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMb2dPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoT2JqZWN0IEV2ZW50KSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSBAQWRkRXZlbnRzOwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtFdmVudH0gKSApIHsKICAgICAgICBAQWRkRXZlbnRzID0gQHsgJFBhcmFte0V2ZW50fSB9OwogICAgfQogICAgZWxzaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17RXZlbnR9ICkgKSB7CiAgICAgICAgcHVzaCBAQWRkRXZlbnRzLCAkUGFyYW17RXZlbnR9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICdFdmVudCcgc2hvdWxkIGJlIGFuIEFycmF5UmVmIG9mIFN0cmluZyB3aXRoIGRhdGEhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkRXZlbnRzID0gJENvbmZpZ09iamVjdC0+R2V0KCdFdmVudHMnKTsKCiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRFdmVudHMpOwoKICAgICRFdmVudHMtPnsgJFBhcmFte09iamVjdH0gfSB8fD0gW107CgogICAgbXkgQENvbmZpZ0V2ZW50cyA9IEB7ICRFdmVudHMtPnsgJFBhcmFte09iamVjdH0gfSB9OwoKICAgIEVWRU5UOgogICAgZm9yIG15ICRBZGRFdmVudCAoQEFkZEV2ZW50cykgewogICAgICAgIG5leHQgRVZFTlQgaWYgZ3JlcCB7ICRBZGRFdmVudCBlcSAkXyB9IEBDb25maWdFdmVudHM7CiAgICAgICAgcHVzaCBAQ29uZmlnRXZlbnRzLCAkQWRkRXZlbnQ7CiAgICB9CgogICAgcmV0dXJuICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFNldHRpbmdzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0V2ZW50cyMjIycgLiAkUGFyYW17T2JqZWN0fSwKICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiBcQENvbmZpZ0V2ZW50cywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgICAgIENvbW1lbnRzID0+ICdFdmVudCBzZXR0aW5ncyBhZGRlZC4nLAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICApOwp9Cgo9aXRlbSBfRXZlbnRSZW1vdmUoKQoKVGhpcyBmdW5jdGlvbiByZW1vdmVzIGFuIEV2ZW50IHRvIHRoZSBsaXN0IG9mIEV2ZW50cyBvZiBhbiBPYmplY3QgdG8gdGhlIFN5c0NvbmZpZy4KCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X0V2ZW50UmVtb3ZlKAogICAgICAgIE9iamVjdCA9PiAnVGlja2V0JywgIyBUaWNrZXQsIEFydGljbGUsIFF1ZXVlLCAuLi4KICAgICAgICBFdmVudCAgPT4gJ015Q3VzdG9tRXZlbnQnCiAgICApOwoKICAgIG9yCgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9FdmVudFJlbW92ZSgKICAgICAgICBPYmplY3QgPT4gJ1RpY2tldCcsCiAgICAgICAgRXZlbnQgID0+IFsKICAgICAgICAgICAgJ015Q3VzdG9tRXZlbnQnLAogICAgICAgICAgICAnQW5vdGhlckN1c3RvbUV2ZW50JywKICAgICAgICBdCiAgICApOwoKPWN1dAoKc3ViIF9FdmVudFJlbW92ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJExvZ09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhPYmplY3QgRXZlbnQpKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJyROZWVkZWQnIGlzIG5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15IEBSZW1vdmVFdmVudHM7CiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0V2ZW50fSApICkgewogICAgICAgIEBSZW1vdmVFdmVudHMgPSBAeyAkUGFyYW17RXZlbnR9IH07CiAgICB9CiAgICBlbHNpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtFdmVudH0gKSApIHsKICAgICAgICBwdXNoIEBSZW1vdmVFdmVudHMsICRQYXJhbXtFdmVudH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJ0V2ZW50JyBzaG91bGQgYmUgYW4gQXJyYXlSZWYgb2YgU3RyaW5nIHdpdGggZGF0YSEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRFdmVudHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0V2ZW50cycpOwoKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEV2ZW50cyk7CgogICAgJEV2ZW50cy0+eyAkUGFyYW17T2JqZWN0fSB9IHx8PSBbXTsKCiAgICBteSBAQ29uZmlnRXZlbnRzOwogICAgRVZFTlQ6CiAgICBmb3IgbXkgJEN1cnJlbnRFdmVudCAoIEB7ICRFdmVudHMtPnsgJFBhcmFte09iamVjdH0gfSB9ICkgewogICAgICAgIG5leHQgRVZFTlQgaWYgZ3JlcCB7ICRDdXJyZW50RXZlbnQgZXEgJF8gfSBAUmVtb3ZlRXZlbnRzOwogICAgICAgIHB1c2ggQENvbmZpZ0V2ZW50cywgJEN1cnJlbnRFdmVudDsKICAgIH0KCiAgICByZXR1cm4gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ3NTZXQoCiAgICAgICAgU2V0dGluZ3MgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnRXZlbnRzIyMjJyAuICRQYXJhbXtPYmplY3R9LAogICAgICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+IFxAQ29uZmlnRXZlbnRzLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgQ29tbWVudHMgPT4gJ0V2ZW50IHNldHRpbmdzIHJlbW92ZWQuJywKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKfQoKPWl0ZW0gX1ZhbGlkRHluYW1pY0ZpZWxkU2NyZWVuTGlzdEdldCgpCgpSZXR1cm5zIGEgbGlzdCBvZiB2YWxpZCBzY3JlZW5zIGZvciBkeW5hbWljIGZpZWxkcy4KCiAgICBteSAkVmFsaWREeW5hbWljRmllbGRTY3JlZW5MaXN0ID0gJFpudW55SGVscGVyT2JqZWN0LT5fVmFsaWREeW5hbWljRmllbGRTY3JlZW5MaXN0R2V0KAojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICBPYmplY3RUeXBlID0+IFsgJ1RpY2tldCcsICdBcnRpY2xlJyBdLCAgIyBBUlJBWSByZWYsIGVuYWJsZXMgZmlsdGVyaW5nIGJ5IG9iamVjdCB0eXBlCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsICMgSEFTSCBvciBBUlJBWSwgZGVmYXVsdHMgdG8gQVJSQVkKICAgICk7CgpSZXR1cm5zIGFzIEhBU0g6CgogICAgbXkgJFZhbGlkRHluYW1pY0ZpZWxkU2NyZWVuTGlzdCA9IHsKICAgICAgICAnRHluYW1pY0ZpZWxkU2NyZWVucycgPT4gewogICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20jIyNEeW5hbWljRmllbGQnID0+ICdBZ2VudFRpY2tldFpvb20nLAogICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20jIyNQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkJyA9PiAnUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZCcKICAgICAgICAgICBbLi4uXQogICAgICAgIH0sCiAgICAgICAgJ0RlZmF1bHRDb2x1bW5zU2NyZWVucycgPT4gewogICAgICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMTAtVGlja2V0RXNjYWxhdGlvbicgPT4gJ0Rhc2hib2FyZFdpZGdldCBUaWNrZXRFc2NhbGF0aW9uJywKICAgICAgICAgICAgJ0Rhc2hib2FyZEJhY2tlbmQjIyMwMTMwLVRpY2tldE9wZW4nID0+ICdEYXNoYm9hcmRXaWRnZXQgVGlja2V0T3BlbicsCiAgICAgICAgICAgIFsuLi5dCiAgICAgICAgfQogICAgfTsKClJldHVybnMgYXMgQVJSQVk6CgogICAgbXkgJFZhbGlkRHluYW1pY0ZpZWxkU2NyZWVuTGlzdCA9IHsKICAgICAgICAnRHluYW1pY0ZpZWxkU2NyZWVucycgPT4gWwogICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20jIyNEeW5hbWljRmllbGQnLAogICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20jIyNQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkJywKICAgICAgICAgICBbLi4uXQogICAgICAgIF0sCiAgICAgICAgJ0RlZmF1bHRDb2x1bW5zU2NyZWVucycgPT4gWwogICAgICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMTAtVGlja2V0RXNjYWxhdGlvbicsCiAgICAgICAgICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDEzMC1UaWNrZXRPcGVuJywKICAgICAgICAgICAgWy4uLl0KICAgICAgICBdCiAgICB9OwoKPWN1dAoKc3ViIF9WYWxpZER5bmFtaWNGaWVsZFNjcmVlbkxpc3RHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkUGFja2FnZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQYWNrYWdlJyk7CgogICAgJFBhcmFte1Jlc3VsdH0gPSBsYyggJFBhcmFte1Jlc3VsdH0gLy8gJ2FycmF5JyApOwojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIG15ICRERlNjcmVlbnNGaWx0ZXJLZXk7CiAgICBpZiAoJFBhcmFte09iamVjdFR5cGV9KSB7CgogICAgICAgIGlmICggJFBhcmFte09iamVjdFR5cGV9IGVxICdUaWNrZXQnICkgewogICAgICAgICAgICAkREZTY3JlZW5zRmlsdGVyS2V5ID0gJ0ZyYW1ld29yayc7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkREZTY3JlZW5zT2JqZWN0VHlwZXNDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0R5bmFtaWNGaWVsZFNjcmVlbnM6Ok9iamVjdFR5cGVzJyk7CiAgICAgICAgICAgIGZvciBteSAkREZTY3JlZW5zS2V5IChrZXlzICRERlNjcmVlbnNPYmplY3RUeXBlc0NvbmZpZy0+JSopIHsKICAgICAgICAgICAgICAgIGlmIChncmVwIHsgJF8gZXEgJFBhcmFte09iamVjdFR5cGV9IH0gJERGU2NyZWVuc09iamVjdFR5cGVzQ29uZmlnLT57JERGU2NyZWVuc0tleX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgICRERlNjcmVlbnNGaWx0ZXJLZXkgPSAkREZTY3JlZW5zS2V5OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgIG15ICRWYWxpZFNjcmVlbnM7CiAgICBTQ1JFRU46CiAgICBmb3IgbXkgJFNjcmVlbiAocXcoRHluYW1pY0ZpZWxkU2NyZWVucyBEZWZhdWx0Q29sdW1uc1NjcmVlbnMpKSB7CgogICAgICAgICRWYWxpZFNjcmVlbnMtPnskU2NyZWVufSA9IHt9OwogICAgICAgIG15ICRTY3JlZW5SZWdpc3RyYXRpb25zID0gJENvbmZpZ09iamVjdC0+R2V0KCRTY3JlZW4pOwoKICAgICAgICBSRUdJU1RSQVRJT046CiAgICAgICAgZm9yIG15ICRSZWdpc3RyYXRpb24gKCBzb3J0IGtleXMgJXskU2NyZWVuUmVnaXN0cmF0aW9uc30gKSB7CiAgICAgICAgICAgIGlmICggJFJlZ2lzdHJhdGlvbiA9fiBte15JVFNNLip9eG1zaSApIHsKICAgICAgICAgICAgICAgIG15ICRJc0luc3RhbGxlZCA9ICRQYWNrYWdlT2JqZWN0LT5QYWNrYWdlSXNJbnN0YWxsZWQoCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkUmVnaXN0cmF0aW9uLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG5leHQgUkVHSVNUUkFUSU9OIGlmICEkSXNJbnN0YWxsZWQ7CiAgICAgICAgICAgIH0KCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICBuZXh0IFJFR0lTVFJBVElPTiBpZiAoJERGU2NyZWVuc0ZpbHRlcktleSAmJiAkUmVnaXN0cmF0aW9uIG5lICRERlNjcmVlbnNGaWx0ZXJLZXkgKTsKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICAgICAgICAgICV7ICRWYWxpZFNjcmVlbnMtPnskU2NyZWVufSB9ID0gKAogICAgICAgICAgICAgICAgJXsgJFZhbGlkU2NyZWVucy0+eyRTY3JlZW59IH0sCiAgICAgICAgICAgICAgICAleyAkU2NyZWVuUmVnaXN0cmF0aW9ucy0+eyRSZWdpc3RyYXRpb259IH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIGNvbmZpZyBpcyBhbHJlYWR5IHZhbGlkIC8gZGVmaW5lZAogICAgICAgIGZvciBteSAkQ3VycmVudENvbmZpZyAoIHNvcnQga2V5cyAleyAkVmFsaWRTY3JlZW5zLT57JFNjcmVlbn0gfSApIHsKICAgICAgICAgICAgbXkgKCAkQ29uZmlnUGF0aCwgJEtleSApID0gc3BsaXQgLyMjIy8sICRDdXJyZW50Q29uZmlnOwogICAgICAgICAgICBteSAkQ29uZmlnRGF0YSA9ICRDb25maWdPYmplY3QtPkdldCgkQ29uZmlnUGF0aCk7CgogICAgICAgICAgICBkZWxldGUgJFZhbGlkU2NyZWVucy0+eyRTY3JlZW59LT57JEN1cnJlbnRDb25maWd9IGlmICFkZWZpbmVkICRDb25maWdEYXRhLT57JEtleX07CiAgICAgICAgfQoKICAgICAgICBuZXh0IFNDUkVFTiBpZiBsYyAkUGFyYW17UmVzdWx0fSBuZSAnYXJyYXknOwoKICAgICAgICBteSBAQXJyYXkgPSBzb3J0IGtleXMgJXsgJFZhbGlkU2NyZWVucy0+eyRTY3JlZW59IH07CiAgICAgICAgJFZhbGlkU2NyZWVucy0+eyRTY3JlZW59ID0gXEBBcnJheTsKICAgIH0KICAgIHJldHVybiAkVmFsaWRTY3JlZW5zOwp9Cgo9aXRlbSBfRGVmYXVsdENvbHVtbnNHZXQoKQoKVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBEZWZhdWx0Q29sdW1uIEF0dHJpYnV0ZXMgb2YgdGhlIHJlcXVlc3RlZCBTeXNDb25maWdzLgoKICAgIG15IEBDb25maWdzID0gKAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFN0YXR1c1ZpZXcjIyNEZWZhdWx0Q29sdW1ucycsCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0UXVldWUjIyNEZWZhdWx0Q29sdW1ucycsCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0UmVzcG9uc2libGVWaWV3IyMjRGVmYXVsdENvbHVtbnMnLAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFdhdGNoVmlldyMjI0RlZmF1bHRDb2x1bW5zJywKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRMb2NrZWRWaWV3IyMjRGVmYXVsdENvbHVtbnMnLAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEVzY2FsYXRpb25WaWV3IyMjRGVmYXVsdENvbHVtbnMnLAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFNlYXJjaCMjI0RlZmF1bHRDb2x1bW5zJywKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZXJ2aWNlIyMjRGVmYXVsdENvbHVtbnMnLAoKICAgICAgICAjIHN1YnN0cnVjdHVyZSBvZiBEZWZhdWx0Q29sdW1ucwogICAgICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDEwMC1UaWNrZXRQZW5kaW5nUmVtaW5kZXInLAogICAgICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDExMC1UaWNrZXRFc2NhbGF0aW9uJywKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMjAtVGlja2V0TmV3JywKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMzAtVGlja2V0T3BlbicsCgogICAgICAgICMgc3Vic3RydWN0dXJlIG9mIERlZmF1bHRDb2x1bW5zCiAgICAgICAgJ0FnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAxMDAtQ0lDLVRpY2tldFBlbmRpbmdSZW1pbmRlcicsCiAgICAgICAgJ0FnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAxMTAtQ0lDLVRpY2tldEVzY2FsYXRpb24nLAogICAgICAgICdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMTIwLUNJQy1UaWNrZXROZXcnLAogICAgICAgICdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMTMwLUNJQy1UaWNrZXRPcGVuJywKICAgICk7CgogICAgbXkgJUNvbmZpZ3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9EZWZhdWx0Q29sdW1uc0dldChAQ29uZmlncyk7CgpSZXR1cm5zOgoKICAgIG15ICVDb25maWdzID0gKAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFN0YXR1c1ZpZXcjIyNEZWZhdWx0Q29sdW1ucycgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgID0+IDIsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEICAgICAgICAgICAgPT4gMQogICAgICAgICAgICBEeW5hbWljRmllbGRfRHJvcGRvd25UZXN0ID0+IDEsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZF9Bbm90aGVyb25lICAgPT4gMiwKICAgICAgICB9LAogICAgICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDEwMC1UaWNrZXRQZW5kaW5nUmVtaW5kZXInID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICAgICA9PiAyLAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCAgICAgICAgICAgID0+IDEKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX0Ryb3Bkb3duVGVzdCA9PiAxLAogICAgICAgICAgICBEeW5hbWljRmllbGRfQW5vdGhlcm9uZSAgID0+IDIsCiAgICAgICAgfSwKICAgICk7Cgo9Y3V0CgpzdWIgX0RlZmF1bHRDb2x1bW5zR2V0IHsKICAgIG15ICggJFNlbGYsIEBTY3JlZW5Db25maWcgKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIHJldHVybiAxIGlmICFAU2NyZWVuQ29uZmlnOwogICAgbXkgJUNvbmZpZ3M7CgogICAgVklFVzoKICAgIGZvciBteSAkVmlldyAoQFNjcmVlbkNvbmZpZykgewoKICAgICAgICBteSAkRnJvbnRlbmRQYXRoID0gJFZpZXc7CgogICAgICAgIGlmICgKICAgICAgICAgICAgJFZpZXcgIX4gbXsoRGFzaGJvYXJkQmFja2VuZHxBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQpfXhtc2kKICAgICAgICAgICAgJiYgJFZpZXcgIX4gbXsoXHcrOjopK1x3K314bXNpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRGcm9udGVuZFBhdGggPSAiVGlja2V0OjpGcm9udGVuZDo6JFZpZXciOwogICAgICAgIH0KCiAgICAgICAgbXkgQEtleXMgICA9IHNwbGl0IC8jIyMvLCAkRnJvbnRlbmRQYXRoOwogICAgICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoICRLZXlzWzBdICk7CgogICAgICAgICMgY2hlY2sgaWYgY29uZmlnIGhhcyBEZWZhdWx0Q29sdW1ucyBhdHRyaWJ1dGUgYW5kIHNldCBpdAogICAgICAgIGlmICggISQjS2V5cyAmJiAkQ29uZmlnLT57RGVmYXVsdENvbHVtbnN9ICkgewogICAgICAgICAgICBwdXNoIEBLZXlzLCAnRGVmYXVsdENvbHVtbnMnOwogICAgICAgIH0KCiAgICAgICAgSU5ERVg6CiAgICAgICAgZm9yIG15ICRJbmRleCAoIDEgLi4gJCNLZXlzICkgewogICAgICAgICAgICBsYXN0IElOREVYIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkQ29uZmlnKTsKICAgICAgICAgICAgJENvbmZpZyA9ICRDb25maWctPnsgJEtleXNbJEluZGV4XSB9OwogICAgICAgIH0KCiAgICAgICAgbmV4dCBWSUVXIGlmIHJlZiAkQ29uZmlnIG5lICdIQVNIJzsKCiAgICAgICAgbXkgJUV4aXN0aW5nU2V0dGluZyA9ICV7JENvbmZpZ307CiAgICAgICAgJENvbmZpZ3N7JFZpZXd9IHx8PSB7fTsKCiAgICAgICAgIyBjaGVja3MgaWYgc3Vic3RydWN0dXJlIG9mIERlZmF1bHRDb2x1bW5zIGV4aXN0cyBpbiBzZXR0aW5ncwogICAgICAgIGlmICggJEV4aXN0aW5nU2V0dGluZ3tEZWZhdWx0Q29sdW1uc30gKSB7CiAgICAgICAgICAgICRDb25maWdzeyRWaWV3fSA9ICRFeGlzdGluZ1NldHRpbmd7RGVmYXVsdENvbHVtbnN9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJENvbmZpZ3N7JFZpZXd9ID0gXCVFeGlzdGluZ1NldHRpbmc7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAlQ29uZmlnczsKfQoKPWl0ZW0gX0RlZmF1bHRDb2x1bW5zRW5hYmxlKCkKClRoaXMgZnVuY3Rpb24gZW5hYmxlcyB0aGUgZ2l2ZW4gQXR0cmlidXRlcyBmb3IgdGhlIHJlcXVlc3RlZCBEZWZhdWx0Q29sdW1ucy4KCiAgICBteSAlQ29uZmlncyA9ICgKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTdGF0dXNWaWV3IyMjRGVmYXVsdENvbHVtbnMnID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICAgICA9PiAyLAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCAgICAgICAgICAgID0+IDEKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX0Ryb3Bkb3duVGVzdCA9PiAxLAogICAgICAgICAgICBEeW5hbWljRmllbGRfQW5vdGhlcm9uZSAgID0+IDIsCiAgICAgICAgfSwKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMDAtVGlja2V0UGVuZGluZ1JlbWluZGVyJyA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgPT4gMiwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgICAgICAgICAgICA9PiAxCiAgICAgICAgICAgIER5bmFtaWNGaWVsZF9Ecm9wZG93blRlc3QgPT4gMSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX0Fub3RoZXJvbmUgICA9PiAyLAogICAgICAgIH0sCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0UXVldWUjIyNEZWZhdWx0Q29sdW1ucycgICAgICAgICAgID0+IHt9LAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFJlc3BvbnNpYmxlVmlldyMjI0RlZmF1bHRDb2x1bW5zJyA9PiB7fSwKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRXYXRjaFZpZXcjIyNEZWZhdWx0Q29sdW1ucycgICAgICAgPT4ge30sCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TG9ja2VkVmlldyMjI0RlZmF1bHRDb2x1bW5zJyAgICAgID0+IHt9LAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEVzY2FsYXRpb25WaWV3IyMjRGVmYXVsdENvbHVtbnMnICA9PiB7fSwKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNEZWZhdWx0Q29sdW1ucycgICAgICAgICAgPT4ge30sCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U2VydmljZSMjI0RlZmF1bHRDb2x1bW5zJyAgICAgICAgID0+IHt9LAoKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMTAtVGlja2V0RXNjYWxhdGlvbicgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMjAtVGlja2V0TmV3JyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMzAtVGlja2V0T3BlbicgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDEwMC1DSUMtVGlja2V0UGVuZGluZ1JlbWluZGVyJyA9PiB7fSwKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDExMC1DSUMtVGlja2V0RXNjYWxhdGlvbicgICAgICA9PiB7fSwKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDEyMC1DSUMtVGlja2V0TmV3JyAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDEzMC1DSUMtVGlja2V0T3BlbicgICAgICAgICAgICA9PiB7fSwKICAgICk7CgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9EZWZhdWx0Q29sdW1uc0VuYWJsZSglQ29uZmlncyk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfRGVmYXVsdENvbHVtbnNFbmFibGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJVNjcmVlbkNvbmZpZyA9ICVQYXJhbTsKICAgIG15IEBTZXR0aW5nczsKCiAgICBteSAkTm9Db25maWdSZWJ1aWxkID0gMDsKICAgIGlmICggJFBhcmFte05vQ29uZmlnUmVidWlsZH0gKSB7CiAgICAgICAgJE5vQ29uZmlnUmVidWlsZCA9IDE7CiAgICAgICAgZGVsZXRlICRQYXJhbXtOb0NvbmZpZ1JlYnVpbGR9OwogICAgfQoKICAgIFZJRVc6CiAgICBmb3IgbXkgJFZpZXcgKCBzb3J0IGtleXMgJVNjcmVlbkNvbmZpZyApIHsKCiAgICAgICAgbmV4dCBWSUVXIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSggJFNjcmVlbkNvbmZpZ3skVmlld30gKTsKCiAgICAgICAgbXkgJEZyb250ZW5kUGF0aCA9ICRWaWV3OwoKICAgICAgICBpZiAoCiAgICAgICAgICAgICRWaWV3ICF+IG17KERhc2hib2FyZEJhY2tlbmR8QWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kKX14bXNpCiAgICAgICAgICAgICYmICRWaWV3ICF+IG17KFx3Kzo6KStcdyt9eG1zaQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRnJvbnRlbmRQYXRoID0gIlRpY2tldDo6RnJvbnRlbmQ6OiRWaWV3IjsKICAgICAgICB9CgogICAgICAgIG15IEBLZXlzICAgPSBzcGxpdCAvIyMjLywgJEZyb250ZW5kUGF0aDsKICAgICAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCAkS2V5c1swXSApOwoKICAgICAgICAjIGNoZWNrIGlmIGNvbmZpZyBoYXMgRGVmYXVsdENvbHVtbnMgYXR0cmlidXRlIGFuZCBzZXQgaXQKICAgICAgICBpZiAoICEkI0tleXMgJiYgJENvbmZpZy0+e0RlZmF1bHRDb2x1bW5zfSApIHsKICAgICAgICAgICAgcHVzaCBAS2V5cywgJ0RlZmF1bHRDb2x1bW5zJzsKICAgICAgICB9CgogICAgICAgIElOREVYOgogICAgICAgIGZvciBteSAkSW5kZXggKCAxIC4uICQjS2V5cyApIHsKICAgICAgICAgICAgbGFzdCBJTkRFWCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJENvbmZpZyk7CiAgICAgICAgICAgICRDb25maWcgPSAkQ29uZmlnLT57ICRLZXlzWyRJbmRleF0gfTsKICAgICAgICB9CgogICAgICAgIG5leHQgVklFVyBpZiByZWYgJENvbmZpZyBuZSAnSEFTSCc7CgogICAgICAgIG15ICVFeGlzdGluZ1NldHRpbmcgPSAleyRDb25maWd9OwoKICAgICAgICAjIGFkZCB0aGUgbmV3IHNldHRpbmdzCiAgICAgICAgbXkgJU5ld0R5bmFtaWNGaWVsZENvbmZpZzsKCiAgICAgICAgIyBjaGVja3MgaWYgRGVmYXVsdENvbHVtbnMgZXhpc3RzIGluIHNldHRpbmdzIChEYXNoYm9hcmRCYWNrZW5kIyMjMDEzMC1UaWNrZXRPcGVuKQogICAgICAgIGlmICggJEV4aXN0aW5nU2V0dGluZ3tEZWZhdWx0Q29sdW1uc30gKSB7CgogICAgICAgICAgICAleyAkRXhpc3RpbmdTZXR0aW5ne0RlZmF1bHRDb2x1bW5zfSB9ID0gKAogICAgICAgICAgICAgICAgJXsgJEV4aXN0aW5nU2V0dGluZ3tEZWZhdWx0Q29sdW1uc30gfSwKICAgICAgICAgICAgICAgICV7ICRTY3JlZW5Db25maWd7JFZpZXd9IH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZGVsZXRlIGFsbCB1bmRlZiBwYXJhbXMKICAgICAgICAgICAgQ09ORklHOgogICAgICAgICAgICBmb3IgbXkgJEN1cnJlbnRDb25maWcgKCBzb3J0IGtleXMgJXsgJEV4aXN0aW5nU2V0dGluZ3tEZWZhdWx0Q29sdW1uc30gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHIGlmIGRlZmluZWQgJEV4aXN0aW5nU2V0dGluZ3tEZWZhdWx0Q29sdW1uc30tPnskQ3VycmVudENvbmZpZ307CiAgICAgICAgICAgICAgICBkZWxldGUgJEV4aXN0aW5nU2V0dGluZ3tEZWZhdWx0Q29sdW1uc30tPnskQ3VycmVudENvbmZpZ307CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICVOZXdEeW5hbWljRmllbGRDb25maWcgPSAlRXhpc3RpbmdTZXR0aW5nOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJU5ld0R5bmFtaWNGaWVsZENvbmZpZyA9ICgKICAgICAgICAgICAgICAgICVFeGlzdGluZ1NldHRpbmcsCiAgICAgICAgICAgICAgICAleyAkU2NyZWVuQ29uZmlneyRWaWV3fSB9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGRlbGV0ZSBhbGwgdW5kZWYgcGFyYW1zCiAgICAgICAgICAgIENPTkZJRzoKICAgICAgICAgICAgZm9yIG15ICRDdXJyZW50Q29uZmlnICggc29ydCBrZXlzICVOZXdEeW5hbWljRmllbGRDb25maWcgKSB7CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJRyBpZiBkZWZpbmVkICROZXdEeW5hbWljRmllbGRDb25maWd7JEN1cnJlbnRDb25maWd9OwogICAgICAgICAgICAgICAgZGVsZXRlICROZXdEeW5hbWljRmllbGRDb25maWd7JEN1cnJlbnRDb25maWd9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSB0aGUgU3lzQ29uZmlnCiAgICAgICAgbXkgJFN5c0NvbmZpZ0tleSA9IGpvaW4gJyMjIycsIEBLZXlzOwoKICAgICAgICBwdXNoIEBTZXR0aW5ncywgewogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkU3lzQ29uZmlnS2V5LAogICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiBcJU5ld0R5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICB9OwogICAgfQoKICAgICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFNldHRpbmdzID0+IFxAU2V0dGluZ3MsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICBDb21tZW50cyA9PiAnRGVmYXVsdCBjb2x1bW5zIHNldHRpbmdzIGVuYWJsZWQuJywKICAgICk7CgogICAgcmV0dXJuIDEgaWYgJE5vQ29uZmlnUmVidWlsZDsKCiAgICAjIHJlbG9hZCB0aGUgWlpaIGZpbGVzCiAgICAjIGdldCBhIG5ldyBjb25maWcgb2JqZWN0IHRvIG1ha2Ugc3VyZSBjb25maWcgaXMgdXBkYXRlZAogICAgJFNlbGYtPl9SZWJ1aWxkQ29uZmlnKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9EZWZhdWx0Q29sdW1uc0Rpc2FibGUoKQoKVGhpcyBmdW5jdGlvbiBkaXNhYmxlcyB0aGUgZ2l2ZW4gQXR0cmlidXRlcyBmb3IgdGhlIHJlcXVlc3RlZCBEZWZhdWx0Q29sdW1ucy4KCiAgICBteSAlQ29uZmlncyA9ICgKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTdGF0dXNWaWV3IyMjRGVmYXVsdENvbHVtbnMnID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICAgICA9PiAyLAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCAgICAgICAgICAgID0+IDEKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX0Ryb3Bkb3duVGVzdCA9PiAxLAogICAgICAgICAgICBEeW5hbWljRmllbGRfQW5vdGhlcm9uZSAgID0+IDIsCiAgICAgICAgfSwKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMDAtVGlja2V0UGVuZGluZ1JlbWluZGVyJyA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgPT4gMiwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgICAgICAgICAgICA9PiAxCiAgICAgICAgICAgIER5bmFtaWNGaWVsZF9Ecm9wZG93blRlc3QgPT4gMSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX0Fub3RoZXJvbmUgICA9PiAyLAogICAgICAgIH0sCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0UXVldWUjIyNEZWZhdWx0Q29sdW1ucycgICAgICAgICAgID0+IHt9LAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFJlc3BvbnNpYmxlVmlldyMjI0RlZmF1bHRDb2x1bW5zJyA9PiB7fSwKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRXYXRjaFZpZXcjIyNEZWZhdWx0Q29sdW1ucycgICAgICAgPT4ge30sCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TG9ja2VkVmlldyMjI0RlZmF1bHRDb2x1bW5zJyAgICAgID0+IHt9LAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldEVzY2FsYXRpb25WaWV3IyMjRGVmYXVsdENvbHVtbnMnICA9PiB7fSwKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNEZWZhdWx0Q29sdW1ucycgICAgICAgICAgPT4ge30sCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U2VydmljZSMjI0RlZmF1bHRDb2x1bW5zJyAgICAgICAgID0+IHt9LAoKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMTAtVGlja2V0RXNjYWxhdGlvbicgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMjAtVGlja2V0TmV3JyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMzAtVGlja2V0T3BlbicgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDEwMC1DSUMtVGlja2V0UGVuZGluZ1JlbWluZGVyJyA9PiB7fSwKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDExMC1DSUMtVGlja2V0RXNjYWxhdGlvbicgICAgICA9PiB7fSwKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDEyMC1DSUMtVGlja2V0TmV3JyAgICAgICAgICAgICA9PiB7fSwKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDEzMC1DSUMtVGlja2V0T3BlbicgICAgICAgICAgICA9PiB7fSwKICAgICk7CgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9EZWZhdWx0Q29sdW1uc0Rpc2FibGUoJUNvbmZpZ3MpOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX0RlZmF1bHRDb2x1bW5zRGlzYWJsZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAlU2NyZWVuQ29uZmlnID0gJVBhcmFtOwoKICAgIFZJRVc6CiAgICBmb3IgbXkgJFZpZXcgKCBzb3J0IGtleXMgJVNjcmVlbkNvbmZpZyApIHsKCiAgICAgICAgbmV4dCBWSUVXIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSggJFNjcmVlbkNvbmZpZ3skVmlld30gKTsKCiAgICAgICAgbXkgJEZyb250ZW5kUGF0aCA9ICRWaWV3OwoKICAgICAgICBpZiAoCiAgICAgICAgICAgICRWaWV3ICF+IG17KERhc2hib2FyZEJhY2tlbmR8QWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kKX14bXNpCiAgICAgICAgICAgICYmICRWaWV3ICF+IG17KFx3Kzo6KStcdyt9eG1zaQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRnJvbnRlbmRQYXRoID0gIlRpY2tldDo6RnJvbnRlbmQ6OiRWaWV3IjsKICAgICAgICB9CgogICAgICAgIG15IEBLZXlzICAgPSBzcGxpdCAvIyMjLywgJEZyb250ZW5kUGF0aDsKICAgICAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCAkS2V5c1swXSApOwoKICAgICAgICAjIGNoZWNrIGlmIGNvbmZpZyBoYXMgRGVmYXVsdENvbHVtbnMgYXR0cmlidXRlIGFuZCBzZXQgaXQKICAgICAgICBpZiAoICEkI0tleXMgJiYgJENvbmZpZy0+e0RlZmF1bHRDb2x1bW5zfSApIHsKICAgICAgICAgICAgcHVzaCBAS2V5cywgJ0RlZmF1bHRDb2x1bW5zJzsKICAgICAgICB9CgogICAgICAgIElOREVYOgogICAgICAgIGZvciBteSAkSW5kZXggKCAxIC4uICQjS2V5cyApIHsKICAgICAgICAgICAgbGFzdCBJTkRFWCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJENvbmZpZyk7CiAgICAgICAgICAgICRDb25maWcgPSAkQ29uZmlnLT57ICRLZXlzWyRJbmRleF0gfTsKICAgICAgICB9CgogICAgICAgIG5leHQgVklFVyBpZiByZWYgJENvbmZpZyBuZSAnSEFTSCc7CgogICAgICAgIG15ICVFeGlzdGluZ1NldHRpbmcgPSAleyRDb25maWd9OwoKICAgICAgICAjIGFkZCB0aGUgbmV3IHNldHRpbmdzCiAgICAgICAgbXkgJU5ld0R5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICBpZiAoICRFeGlzdGluZ1NldHRpbmd7RGVmYXVsdENvbHVtbnN9ICkgewoKICAgICAgICAgICAgJU5ld0R5bmFtaWNGaWVsZENvbmZpZyA9ICVFeGlzdGluZ1NldHRpbmc7CiAgICAgICAgICAgIGRlbGV0ZSAkTmV3RHluYW1pY0ZpZWxkQ29uZmlne0RlZmF1bHRDb2x1bW5zfTsKCiAgICAgICAgICAgIFNFVFRJTkc6CiAgICAgICAgICAgIGZvciBteSAkRXhpc3RpbmdTZXR0aW5nS2V5ICggc29ydCBrZXlzICV7ICRFeGlzdGluZ1NldHRpbmd7RGVmYXVsdENvbHVtbnN9IH0gKSB7CgogICAgICAgICAgICAgICAgbmV4dCBTRVRUSU5HIGlmICRTY3JlZW5Db25maWd7JFZpZXd9LT57JEV4aXN0aW5nU2V0dGluZ0tleX07CiAgICAgICAgICAgICAgICAkTmV3RHluYW1pY0ZpZWxkQ29uZmlne0RlZmF1bHRDb2x1bW5zfS0+eyRFeGlzdGluZ1NldHRpbmdLZXl9ID0gJEV4aXN0aW5nU2V0dGluZ3tEZWZhdWx0Q29sdW1uc30tPnskRXhpc3RpbmdTZXR0aW5nS2V5fTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgIFNFVFRJTkc6CiAgICAgICAgICAgIGZvciBteSAkRXhpc3RpbmdTZXR0aW5nS2V5ICggc29ydCBrZXlzICVFeGlzdGluZ1NldHRpbmcgKSB7CgogICAgICAgICAgICAgICAgbmV4dCBTRVRUSU5HIGlmICRTY3JlZW5Db25maWd7JFZpZXd9LT57JEV4aXN0aW5nU2V0dGluZ0tleX07CiAgICAgICAgICAgICAgICAkTmV3RHluYW1pY0ZpZWxkQ29uZmlneyRFeGlzdGluZ1NldHRpbmdLZXl9ID0gJEV4aXN0aW5nU2V0dGluZ3skRXhpc3RpbmdTZXR0aW5nS2V5fTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJFN5c0NvbmZpZ0tleSA9IGpvaW4gJyMjIycsIEBLZXlzOwogICAgICAgICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgICAgICBTZXR0aW5ncyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJFN5c0NvbmZpZ0tleSwKICAgICAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+IFwlTmV3RHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgQ29tbWVudHMgPT4gJ0RlZmF1bHQgY29sdW1ucyBzZXR0aW5ncyBkaXNhYmxlZC4nLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9EeW5hbWljRmllbGRzRGVmYXVsdENvbHVtbnNHZXQoKQoKUmV0dXJucyB0aGUgRGVmYXVsdENvbHVtbiBhdHRyaWJ1dGVzIG9mIHRoZSByZXF1ZXN0ZWQgU3lzQ29uZmlncywgcmVkdWNlZCB0byBkeW5hbWljIGZpZWxkcy4KCiAgICBteSBAQ29uZmlncyA9ICgKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTdGF0dXNWaWV3IyMjRGVmYXVsdENvbHVtbnMnLAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFF1ZXVlIyMjRGVmYXVsdENvbHVtbnMnLAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFJlc3BvbnNpYmxlVmlldyMjI0RlZmF1bHRDb2x1bW5zJywKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRXYXRjaFZpZXcjIyNEZWZhdWx0Q29sdW1ucycsCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0TG9ja2VkVmlldyMjI0RlZmF1bHRDb2x1bW5zJywKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRFc2NhbGF0aW9uVmlldyMjI0RlZmF1bHRDb2x1bW5zJywKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNEZWZhdWx0Q29sdW1ucycsCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U2VydmljZSMjI0RlZmF1bHRDb2x1bW5zJywKCiAgICAgICAgIyBzdWJzdHJ1Y3R1cmUgb2YgRGVmYXVsdENvbHVtbnMKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMDAtVGlja2V0UGVuZGluZ1JlbWluZGVyJywKICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMTAtVGlja2V0RXNjYWxhdGlvbicsCiAgICAgICAgJ0Rhc2hib2FyZEJhY2tlbmQjIyMwMTIwLVRpY2tldE5ldycsCiAgICAgICAgJ0Rhc2hib2FyZEJhY2tlbmQjIyMwMTMwLVRpY2tldE9wZW4nLAoKICAgICAgICAjIHN1YnN0cnVjdHVyZSBvZiBEZWZhdWx0Q29sdW1ucwogICAgICAgICdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMTAwLUNJQy1UaWNrZXRQZW5kaW5nUmVtaW5kZXInLAogICAgICAgICdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMTEwLUNJQy1UaWNrZXRFc2NhbGF0aW9uJywKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDEyMC1DSUMtVGlja2V0TmV3JywKICAgICAgICAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDEzMC1DSUMtVGlja2V0T3BlbicsCiAgICApOwoKICAgIG15ICVDb25maWdzID0gJFpudW55SGVscGVyT2JqZWN0LT5fRHluYW1pY0ZpZWxkc0RlZmF1bHRDb2x1bW5zR2V0KEBDb25maWdzKTsKClJldHVybnM6CgogICAgbXkgJUNvbmZpZ3MgPSAoCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U3RhdHVzVmlldyMjI0RlZmF1bHRDb2x1bW5zJyA9PiB7CiAgICAgICAgICAgIERyb3Bkb3duVGVzdCA9PiAxLAogICAgICAgICAgICBBbm90aGVyb25lICAgPT4gMiwKICAgICAgICB9LAogICAgICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDEwMC1UaWNrZXRQZW5kaW5nUmVtaW5kZXInID0+IHsKICAgICAgICAgICAgRHJvcGRvd25UZXN0ID0+IDEsCiAgICAgICAgICAgIEFub3RoZXJvbmUgICA9PiAyLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIF9EeW5hbWljRmllbGRzRGVmYXVsdENvbHVtbnNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIENvbmZpZ0l0ZW1zICkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJVNjcmVlbkNvbmZpZyA9ICRTZWxmLT5fRGVmYXVsdENvbHVtbnNHZXQoIEB7ICRQYXJhbXtDb25maWdJdGVtc30gfSApOwogICAgaWYgKCAhJVNjcmVlbkNvbmZpZyApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBnZXQgRGF0YSAoRGVmYXVsdENvbHVtbnMpIG9mIFN5c0NvbmZpZyAnJFBhcmFte0NvbmZpZ0l0ZW1zfScgISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUNvbmZpZzsKICAgIGZvciBteSAkQ29uZmlnSXRlbSAoIEB7ICRQYXJhbXtDb25maWdJdGVtc30gfSApIHsKCiAgICAgICAgbXkgJUN1cnJlbnRTY3JlZW5Db25maWcgPSAleyAkU2NyZWVuQ29uZmlneyRDb25maWdJdGVtfSB9OwoKICAgICAgICBJVEVNOgogICAgICAgIGZvciBteSAkSXRlbSAoIHNvcnQga2V5cyAlQ3VycmVudFNjcmVlbkNvbmZpZyApIHsKCiAgICAgICAgICAgIG5leHQgSVRFTSBpZiAkSXRlbSAhfiBte1xBRHluYW1pY0ZpZWxkX307CgogICAgICAgICAgICBteSAkVmFsdWUgPSAkQ3VycmVudFNjcmVlbkNvbmZpZ3skSXRlbX07CiAgICAgICAgICAgICRJdGVtID1+IHN7XEFEeW5hbWljRmllbGRffXt9OwogICAgICAgICAgICAkQ29uZmlneyRDb25maWdJdGVtfS0+eyRJdGVtfSA9ICRWYWx1ZTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICVDb25maWc7Cn0KCj1pdGVtIF9EeW5hbWljRmllbGRzU2NyZWVuR2V0KCkKClRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgZGVmaW5lZCBkeW5hbWljIGZpZWxkcyBpbiB0aGUgc2NyZWVucy4KCiAgICBteSBAQ29uZmlncyA9ICgKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNEZWZhdWx0cyMjI0R5bmFtaWNGaWVsZCcsCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0Wm9vbSMjI0ZvbGxvd1VwRHluYW1pY0ZpZWxkJywKICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNTZWFyY2hDU1ZEeW5hbWljRmllbGQnLAogICAgKTsKCiAgICBteSAlQ29uZmlncyA9ICRabnVueUhlbHBlck9iamVjdC0+X0R5bmFtaWNGaWVsZHNEZWZhdWx0Q29sdW1uc0dldChAQ29uZmlncyk7CgoKUmV0dXJuczoKCiAgICBteSAlQ29uZmlncyA9ICgKICAgICAgICBUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFNlYXJjaCMjI0RlZmF1bHRzIyMjRHluYW1pY0ZpZWxkID0+IHsKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDEgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDIgPT4gMiwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDMgPT4gMCwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDQgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDUgPT4gMiwKICAgICAgICB9LAogICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpDdXN0b21lclRpY2tldFpvb20jIyNGb2xsb3dVcER5bmFtaWNGaWVsZCcgPT4gewogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMSA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMiA9PiAyLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMyA9PiAwLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkNCA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkNSA9PiAyLAogICAgICAgIH0sCiAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U2VhcmNoIyMjU2VhcmNoQ1NWRHluYW1pY0ZpZWxkJyA9PiB7CiAgICAgICAgICAgIFRlc3REeW5hbWljRmllbGQxID0+IDEsCiAgICAgICAgICAgIFRlc3REeW5hbWljRmllbGQyID0+IDIsCiAgICAgICAgICAgIFRlc3REeW5hbWljRmllbGQzID0+IDAsCiAgICAgICAgICAgIFRlc3REeW5hbWljRmllbGQ0ID0+IDEsCiAgICAgICAgICAgIFRlc3REeW5hbWljRmllbGQ1ID0+IDIsCiAgICAgICAgfSwKICAgICk7Cgo9Y3V0CgpzdWIgX0R5bmFtaWNGaWVsZHNTY3JlZW5HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMb2dPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtcykpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUNvbmZpZzsKICAgIENPTkZJR0lURU06CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW0gKCBAeyAkUGFyYW17Q29uZmlnSXRlbXN9IH0gKSB7CiAgICAgICAgbXkgQEtleXMgPSBzcGxpdCAvIyMjLywgJENvbmZpZ0l0ZW07CgogICAgICAgIG15ICRDb25maWdJdGVtQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCAkS2V5c1swXSApOwogICAgICAgIElOREVYOgogICAgICAgIGZvciBteSAkSW5kZXggKCAxIC4uICQjS2V5cyApIHsKICAgICAgICAgICAgbGFzdCBJTkRFWCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJENvbmZpZ0l0ZW1Db25maWcpOwogICAgICAgICAgICAkQ29uZmlnSXRlbUNvbmZpZyA9ICRDb25maWdJdGVtQ29uZmlnLT57ICRLZXlzWyRJbmRleF0gfTsKICAgICAgICB9CiAgICAgICAgbmV4dCBDT05GSUdJVEVNIGlmICEkQ29uZmlnSXRlbUNvbmZpZzsKICAgICAgICBuZXh0IENPTkZJR0lURU0gaWYgcmVmICRDb25maWdJdGVtQ29uZmlnIG5lICdIQVNIJzsKCiAgICAgICAgJENvbmZpZ3skQ29uZmlnSXRlbX0gPSAkQ29uZmlnSXRlbUNvbmZpZzsKICAgIH0KCiAgICByZXR1cm4gJUNvbmZpZzsKfQoKPWl0ZW0gX0R5bmFtaWNGaWVsZHNTY3JlZW5FbmFibGUoKQoKVGhpcyBmdW5jdGlvbiBlbmFibGVzIHRoZSBkZWZpbmVkIGR5bmFtaWMgZmllbGRzIGluIHRoZSBuZWVkZWQgc2NyZWVucy4KCiAgICBteSAlU2NyZWVucyA9ICgKICAgICAgICBBZ2VudFRpY2tldEZyZWVUZXh0ID0+IHsKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDEgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDIgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDMgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDQgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDUgPT4gMSwKICAgICAgICB9LAogICAgICAgICdDdXN0b21lclRpY2tldFpvb20jIyNGb2xsb3dVcER5bmFtaWNGaWVsZCcgPT4gewogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMSA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMiA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMyA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkNCA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkNSA9PiAxLAogICAgICAgIH0sCiAgICAgICAgJ0FnZW50VGlja2V0U2VhcmNoIyMjRGVmYXVsdHMjIyNEeW5hbWljRmllbGQnID0+IHsKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDEgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDIgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDMgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDQgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDUgPT4gMSwKICAgICAgICB9LAogICAgICAgICdJVFNNQ2hhbmdlOjpGcm9udGVuZDo6QWdlbnRJVFNNQ2hhbmdlRWRpdCMjI0R5bmFtaWNGaWVsZCcgPT4gewogICAgICAgICAgICBDaGFuZ2VGcmVlVGV4dDEgPT4gMSwKICAgICAgICAgICAgQ2hhbmdlRnJlZVRleHQyID0+IDEsCiAgICAgICAgICAgIENoYW5nZUZyZWVUZXh0MyA9PiAxLAogICAgICAgICAgICBDaGFuZ2VGcmVlVGV4dDQgPT4gMSwKICAgICAgICAgICAgQ2hhbmdlRnJlZVRleHQ1ID0+IDEsCiAgICAgICAgfSwKICAgICAgICAnSVRTTVdvcmtPcmRlcjo6RnJvbnRlbmQ6OkFnZW50SVRTTVdvcmtPcmRlckVkaXQjIyNEeW5hbWljRmllbGQnID0+IHsKICAgICAgICAgICAgV29ya09yZGVyRnJlZVRleHQxID0+IDEsCiAgICAgICAgICAgIFdvcmtPcmRlckZyZWVUZXh0MiA9PiAxLAogICAgICAgICAgICBXb3JrT3JkZXJGcmVlVGV4dDMgPT4gMSwKICAgICAgICAgICAgV29ya09yZGVyRnJlZVRleHQ0ID0+IDEsCiAgICAgICAgICAgIFdvcmtPcmRlckZyZWVUZXh0NSA9PiAxLAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fRHluYW1pY0ZpZWxkc1NjcmVlbkVuYWJsZSglU2NyZWVucyk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfRHluYW1pY0ZpZWxkc1NjcmVlbkVuYWJsZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGRlZmluZSB0aGUgZW5hYmxlZCBkeW5hbWljIGZpZWxkcyBmb3IgZWFjaCBzY3JlZW4KICAgICMgKHRha2VuIGZyb20gc3lzY29uZmlnKQogICAgbXkgJVNjcmVlbkR5bmFtaWNGaWVsZENvbmZpZyA9ICVQYXJhbTsKICAgIG15IEBTZXR0aW5nczsKCiAgICBteSAkTm9Db25maWdSZWJ1aWxkID0gMDsKICAgIGlmICggJFBhcmFte05vQ29uZmlnUmVidWlsZH0gKSB7CiAgICAgICAgJE5vQ29uZmlnUmVidWlsZCA9IDE7CiAgICAgICAgZGVsZXRlICRQYXJhbXtOb0NvbmZpZ1JlYnVpbGR9OwogICAgfQoKICAgIFZJRVc6CiAgICBmb3IgbXkgJFZpZXcgKCBzb3J0IGtleXMgJVNjcmVlbkR5bmFtaWNGaWVsZENvbmZpZyApIHsKCiAgICAgICAgbmV4dCBWSUVXIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJFNjcmVlbkR5bmFtaWNGaWVsZENvbmZpZ3skVmlld30gKTsKCiAgICAgICAgIyBUaGVyZSBhcmUgc3BlY2lhbCBjYXNlcyBmb3IgZGVmaW5pbmcgdGhlIHZpc2liaWxpdHkgb2YgRHluYW1pY0ZpZWxkcwogICAgICAgICMgVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNEZWZhdWx0cyMjI0R5bmFtaWNGaWVsZAogICAgICAgICMgVGlja2V0OjpGcm9udGVuZDo6Q3VzdG9tZXJUaWNrZXRab29tIyMjRm9sbG93VXBEeW5hbWljRmllbGQKICAgICAgICAjIFRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U2VhcmNoIyMjU2VhcmNoQ1NWRHluYW1pY0ZpZWxkCiAgICAgICAgIwogICAgICAgICMgb24gcmVndWxhciBjYWxscyAkVmlldyBjb250YWlucyBmb3IgZXhhbXBsZSAiQWdlbnRUaWNrZXRFbWFpbCIKICAgICAgICAjCiAgICAgICAgIyBmb3IgdGhlIHRocmVlIHNwZWNpYWwgY2FzZXMgJFZpZXcgY29udGFpbnM6CiAgICAgICAgIyBBZ2VudFRpY2tldFNlYXJjaCMjI0RlZmF1bHRzIyMjRHluYW1pY0ZpZWxkCiAgICAgICAgIyBDdXN0b21lclRpY2tldFpvb20jIyNGb2xsb3dVcER5bmFtaWNGaWVsZAogICAgICAgICMgQWdlbnRUaWNrZXRTZWFyY2gjIyNTZWFyY2hDU1ZEeW5hbWljRmllbGQKICAgICAgICAjCiAgICAgICAgIyBvciBjYWxscyBmb3IgaXRzbSBjaGFuZ2UgbWFuYWdlbWVudCBmb3IgZXhhbXBsZQogICAgICAgICMKICAgICAgICAjIElUU01DaGFuZ2U6OkZyb250ZW5kOjpBZ2VudElUU01DaGFuZ2VFZGl0IyMjRHluYW1pY0ZpZWxkCiAgICAgICAgIyBJVFNNV29ya09yZGVyOjpGcm9udGVuZDo6QWdlbnRJVFNNV29ya09yZGVyRWRpdCMjI0R5bmFtaWNGaWVsZAogICAgICAgICMKICAgICAgICAjIHNvIHNwbGl0IG9uICcjIyMnCiAgICAgICAgIyBhbmQgcHV0IHRoZSB2YWx1ZXMgaW4gdGhlIEBLZXlzIGFycmF5CiAgICAgICAgIwogICAgICAgICMgZm9yIHJlZ3VsYXIgY2FzZXMgd2UgcHV0IGluIHRoZSBWaWV3IG5hbWUgb24gJEtleXNbMF0gYW5kICdEeW5hbWljRmllbGQnIG9uICRLZXlzWzFdCgogICAgICAgIG15ICRGcm9udGVuZFBhdGggPSAiVGlja2V0OjpGcm9udGVuZDo6JFZpZXciOwogICAgICAgIGlmICggJFZpZXcgPX4gbXsoXHcrOjopK1x3K314bXNpICkgewogICAgICAgICAgICAkRnJvbnRlbmRQYXRoID0gJFZpZXc7CiAgICAgICAgfQogICAgICAgIG15IEBLZXlzID0gc3BsaXQgLyMjIy8sICRGcm9udGVuZFBhdGg7CgogICAgICAgIGlmICggISQjS2V5cyApIHsKICAgICAgICAgICAgcHVzaCBAS2V5cywgJ0R5bmFtaWNGaWVsZCc7CiAgICAgICAgfQoKICAgICAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCAkS2V5c1swXSApOwogICAgICAgIElOREVYOgogICAgICAgIGZvciBteSAkSW5kZXggKCAxIC4uICQjS2V5cyApIHsKICAgICAgICAgICAgbGFzdCBJTkRFWCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJENvbmZpZyk7CiAgICAgICAgICAgICRDb25maWcgPSAkQ29uZmlnLT57ICRLZXlzWyRJbmRleF0gfTsKICAgICAgICB9CiAgICAgICAgbmV4dCBWSUVXIGlmIHJlZiAkQ29uZmlnIG5lICdIQVNIJzsKICAgICAgICBteSAlRXhpc3RpbmdTZXR0aW5nID0gJXskQ29uZmlnfTsKCiAgICAgICAgIyBhZGQgdGhlIG5ldyBzZXR0aW5ncwogICAgICAgIG15ICVOZXdEeW5hbWljRmllbGRDb25maWcgPSAoICVFeGlzdGluZ1NldHRpbmcsICV7ICRTY3JlZW5EeW5hbWljRmllbGRDb25maWd7JFZpZXd9IH0gKTsKCiAgICAgICAgIyBkZWxldGUgYWxsIHVuZGVmIHBhcmFtcwogICAgICAgIENPTkZJRzoKICAgICAgICBmb3IgbXkgJEN1cnJlbnRDb25maWcgKCBzb3J0IGtleXMgJU5ld0R5bmFtaWNGaWVsZENvbmZpZyApIHsKICAgICAgICAgICAgbmV4dCBDT05GSUcgaWYgZGVmaW5lZCAkTmV3RHluYW1pY0ZpZWxkQ29uZmlneyRDdXJyZW50Q29uZmlnfTsKICAgICAgICAgICAgZGVsZXRlICROZXdEeW5hbWljRmllbGRDb25maWd7JEN1cnJlbnRDb25maWd9OwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgdGhlIHN5c2NvbmZpZwogICAgICAgIG15ICRTeXNDb25maWdLZXkgPSBqb2luICcjIyMnLCBAS2V5czsKCiAgICAgICAgcHVzaCBAU2V0dGluZ3MsIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJFN5c0NvbmZpZ0tleSwKICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gXCVOZXdEeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgfTsKICAgIH0KCiAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nc1NldCgKICAgICAgICBTZXR0aW5ncyA9PiBcQFNldHRpbmdzLAogICAgICAgIENvbW1lbnRzID0+ICdEeW5hbWljRmllbGRzIHNjcmVlbiBzZXR0aW5ncyBlbmFibGVkLicsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDEgaWYgJE5vQ29uZmlnUmVidWlsZDsKCiAgICAjIHJlbG9hZCB0aGUgWlpaIGZpbGVzCiAgICAjIGdldCBhIG5ldyBjb25maWcgb2JqZWN0IHRvIG1ha2Ugc3VyZSBjb25maWcgaXMgdXBkYXRlZAogICAgJFNlbGYtPl9SZWJ1aWxkQ29uZmlnKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9EeW5hbWljRmllbGRzU2NyZWVuRGlzYWJsZSgpCgpUaGlzIGZ1bmN0aW9uIGRpc2FibGVzIHRoZSBkZWZpbmVkIGR5bmFtaWMgZmllbGRzIGluIHRoZSBuZWVkZWQgc2NyZWVucy4KCiAgICBteSAlU2NyZWVucyA9ICgKICAgICAgICBBZ2VudFRpY2tldEZyZWVUZXh0ID0+IHsKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDEgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDIgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDMgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDQgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDUgPT4gMSwKICAgICAgICB9LAogICAgICAgICdDdXN0b21lclRpY2tldFpvb20jIyNGb2xsb3dVcER5bmFtaWNGaWVsZCcgPT4gewogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMSA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMiA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkMyA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkNCA9PiAxLAogICAgICAgICAgICBUZXN0RHluYW1pY0ZpZWxkNSA9PiAxLAogICAgICAgIH0sCiAgICAgICAgJ0FnZW50VGlja2V0U2VhcmNoIyMjRGVmYXVsdHMjIyNEeW5hbWljRmllbGQnID0+IHsKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDEgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDIgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDMgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDQgPT4gMSwKICAgICAgICAgICAgVGVzdER5bmFtaWNGaWVsZDUgPT4gMSwKICAgICAgICB9LAogICAgICAgICdJVFNNQ2hhbmdlOjpGcm9udGVuZDo6QWdlbnRJVFNNQ2hhbmdlRWRpdCMjI0R5bmFtaWNGaWVsZCcgPT4gewogICAgICAgICAgICBDaGFuZ2VGcmVlVGV4dDEgPT4gMSwKICAgICAgICAgICAgQ2hhbmdlRnJlZVRleHQyID0+IDEsCiAgICAgICAgICAgIENoYW5nZUZyZWVUZXh0MyA9PiAxLAogICAgICAgICAgICBDaGFuZ2VGcmVlVGV4dDQgPT4gMSwKICAgICAgICAgICAgQ2hhbmdlRnJlZVRleHQ1ID0+IDEsCiAgICAgICAgfSwKICAgICAgICAnSVRTTVdvcmtPcmRlcjo6RnJvbnRlbmQ6OkFnZW50SVRTTVdvcmtPcmRlckVkaXQjIyNEeW5hbWljRmllbGQnID0+IHsKICAgICAgICAgICAgV29ya09yZGVyRnJlZVRleHQxID0+IDEsCiAgICAgICAgICAgIFdvcmtPcmRlckZyZWVUZXh0MiA9PiAxLAogICAgICAgICAgICBXb3JrT3JkZXJGcmVlVGV4dDMgPT4gMSwKICAgICAgICAgICAgV29ya09yZGVyRnJlZVRleHQ0ID0+IDEsCiAgICAgICAgICAgIFdvcmtPcmRlckZyZWVUZXh0NSA9PiAxLAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fRHluYW1pY0ZpZWxkc1NjcmVlbkRpc2FibGUoJVNjcmVlbnMpOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX0R5bmFtaWNGaWVsZHNTY3JlZW5EaXNhYmxlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZGVmaW5lIHRoZSBlbmFibGVkIGR5bmFtaWMgZmllbGRzIGZvciBlYWNoIHNjcmVlbgogICAgIyAodGFrZW4gZnJvbSBzeXNjb25maWcpCiAgICBteSAlU2NyZWVuRHluYW1pY0ZpZWxkQ29uZmlnID0gJVBhcmFtOwoKICAgIFZJRVc6CiAgICBmb3IgbXkgJFZpZXcgKCBzb3J0IGtleXMgJVNjcmVlbkR5bmFtaWNGaWVsZENvbmZpZyApIHsKCiAgICAgICAgbmV4dCBWSUVXIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJFNjcmVlbkR5bmFtaWNGaWVsZENvbmZpZ3skVmlld30gKTsKCiAgICAgICAgIyBUaGVyZSBhcmUgc3BlY2lhbCBjYXNlcyBmb3IgZGVmaW5pbmcgdGhlIHZpc2liaWxpdHkgb2YgRHluYW1pY0ZpZWxkcwogICAgICAgICMgVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTZWFyY2gjIyNEZWZhdWx0cyMjI0R5bmFtaWNGaWVsZAogICAgICAgICMgVGlja2V0OjpGcm9udGVuZDo6Q3VzdG9tZXJUaWNrZXRab29tIyMjRm9sbG93VXBEeW5hbWljRmllbGQKICAgICAgICAjIFRpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U2VhcmNoIyMjU2VhcmNoQ1NWRHluYW1pY0ZpZWxkCiAgICAgICAgIwogICAgICAgICMgb24gcmVndWxhciBjYWxscyAkVmlldyBjb250YWlucyBmb3IgZXhhbXBsZSAiQWdlbnRUaWNrZXRFbWFpbCIKICAgICAgICAjCiAgICAgICAgIyBmb3IgdGhlIHRocmVlIHNwZWNpYWwgY2FzZXMgJFZpZXcgY29udGFpbnM6CiAgICAgICAgIyBBZ2VudFRpY2tldFNlYXJjaCMjI0RlZmF1bHRzIyMjRHluYW1pY0ZpZWxkCiAgICAgICAgIyBDdXN0b21lclRpY2tldFpvb20jIyNGb2xsb3dVcER5bmFtaWNGaWVsZAogICAgICAgICMgQWdlbnRUaWNrZXRTZWFyY2gjIyNTZWFyY2hDU1ZEeW5hbWljRmllbGQKICAgICAgICAjCiAgICAgICAgIyBvciBjYWxscyBmb3IgaXRzbSBjaGFuZ2UgbWFuYWdlbWVudCBmb3IgZXhhbXBsZQogICAgICAgICMKICAgICAgICAjIElUU01DaGFuZ2U6OkZyb250ZW5kOjpBZ2VudElUU01DaGFuZ2VFZGl0IyMjRHluYW1pY0ZpZWxkCiAgICAgICAgIyBJVFNNV29ya09yZGVyOjpGcm9udGVuZDo6QWdlbnRJVFNNV29ya09yZGVyRWRpdCMjI0R5bmFtaWNGaWVsZAogICAgICAgICMKICAgICAgICAjIHNvIHNwbGl0IG9uICcjIyMnCiAgICAgICAgIyBhbmQgcHV0IHRoZSB2YWx1ZXMgaW4gdGhlIEBLZXlzIGFycmF5CiAgICAgICAgIwogICAgICAgICMgZm9yIHJlZ3VsYXIgY2FzZXMgd2UgcHV0IGluIHRoZSBWaWV3IG5hbWUgb24gJEtleXNbMF0gYW5kICdEeW5hbWljRmllbGQnIG9uICRLZXlzWzFdCgogICAgICAgIG15ICRGcm9udGVuZFBhdGggPSAiVGlja2V0OjpGcm9udGVuZDo6JFZpZXciOwogICAgICAgIGlmICggJFZpZXcgPX4gbXsoXHcrOjopK1x3K314bXNpICkgewogICAgICAgICAgICAkRnJvbnRlbmRQYXRoID0gJFZpZXc7CiAgICAgICAgfQogICAgICAgIG15IEBLZXlzID0gc3BsaXQgLyMjIy8sICRGcm9udGVuZFBhdGg7CgogICAgICAgIGlmICggISQjS2V5cyApIHsKICAgICAgICAgICAgcHVzaCBAS2V5cywgJ0R5bmFtaWNGaWVsZCc7CiAgICAgICAgfQoKICAgICAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCAkS2V5c1swXSApOwogICAgICAgIElOREVYOgogICAgICAgIGZvciBteSAkSW5kZXggKCAxIC4uICQjS2V5cyApIHsKICAgICAgICAgICAgbGFzdCBJTkRFWCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJENvbmZpZyk7CiAgICAgICAgICAgICRDb25maWcgPSAkQ29uZmlnLT57ICRLZXlzWyRJbmRleF0gfTsKICAgICAgICB9CiAgICAgICAgbmV4dCBWSUVXIGlmIHJlZiAkQ29uZmlnIG5lICdIQVNIJzsKICAgICAgICBteSAlRXhpc3RpbmdTZXR0aW5nID0gJXskQ29uZmlnfTsKCiAgICAgICAgbXkgJU5ld0R5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICBTRVRUSU5HOgogICAgICAgIGZvciBteSAkRXhpc3RpbmdTZXR0aW5nS2V5ICggc29ydCBrZXlzICVFeGlzdGluZ1NldHRpbmcgKSB7CgogICAgICAgICAgICBuZXh0IFNFVFRJTkcgaWYgJFNjcmVlbkR5bmFtaWNGaWVsZENvbmZpZ3skVmlld30tPnskRXhpc3RpbmdTZXR0aW5nS2V5fTsKCiAgICAgICAgICAgICROZXdEeW5hbWljRmllbGRDb25maWd7JEV4aXN0aW5nU2V0dGluZ0tleX0gPSAkRXhpc3RpbmdTZXR0aW5neyRFeGlzdGluZ1NldHRpbmdLZXl9OwogICAgICAgIH0KCiAgICAgICAgbXkgJFN5c0NvbmZpZ0tleSA9IGpvaW4gJyMjIycsIEBLZXlzOwogICAgICAgICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgICAgICBTZXR0aW5ncyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJFN5c0NvbmZpZ0tleSwKICAgICAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+IFwlTmV3RHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgQ29tbWVudHMgPT4gJ0R5bmFtaWNGaWVsZHMgc2NyZWVuIHNldHRpbmdzIGRpc2FibGVkLicsCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyByZWxvYWQgdGhlIFpaWiBmaWxlcwogICAgICAgICMgZ2V0IGEgbmV3IGNvbmZpZyBvYmplY3QgdG8gbWFrZSBzdXJlIGNvbmZpZyBpcyB1cGRhdGVkCiAgICAgICAgJFNlbGYtPl9SZWJ1aWxkQ29uZmlnKCk7CgogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfRHluYW1pY0ZpZWxkc0RlbGV0ZSgpCgpUaGlzIGZ1bmN0aW9uIGRlbGV0ZSB0aGUgZGVmaW5lZCBkeW5hbWljIGZpZWxkcwoKICAgIG15IEBEeW5hbWljRmllbGRzID0gKAogICAgICAgICdUZXN0RHluYW1pY0ZpZWxkMScsCiAgICAgICAgJ1Rlc3REeW5hbWljRmllbGQyJywKICAgICAgICAnVGVzdER5bmFtaWNGaWVsZDMnLAogICAgKTsKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X0R5bmFtaWNGaWVsZHNEZWxldGUoQER5bmFtaWNGaWVsZHMpOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX0R5bmFtaWNGaWVsZHNEZWxldGUgewogICAgbXkgKCAkU2VsZiwgQER5bmFtaWNGaWVsZHMgKSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkQmFja2VuZE9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIHJldHVybiAxIGlmICFARHluYW1pY0ZpZWxkczsKCiAgICAjIGdldCBhbGwgY3VycmVudCBkeW5hbWljIGZpZWxkcwogICAgbXkgJER5bmFtaWNGaWVsZExpc3QgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkID0+IDAsCiAgICApOwoKICAgIHJldHVybiAxIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZExpc3QpOwoKICAgICMgY3JlYXRlIGEgZHluYW1pYyBmaWVsZHMgbG9va3VwIHRhYmxlCiAgICBteSAlRHluYW1pY0ZpZWxkTG9va3VwOwoKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggQHskRHluYW1pY0ZpZWxkTGlzdH0gKSB7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkKTsKCiAgICAgICAgJER5bmFtaWNGaWVsZExvb2t1cHsgJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkOwogICAgfQoKICAgICMgZGVsZXRlIHRoZSBkeW5hbWljIGZpZWxkcwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGROYW1lIChARHluYW1pY0ZpZWxkcykgewoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICREeW5hbWljRmllbGRMb29rdXB7JER5bmFtaWNGaWVsZE5hbWV9ICk7CgogICAgICAgICRCYWNrZW5kT2JqZWN0LT5BbGxWYWx1ZXNEZWxldGUoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkTG9va3VweyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgICAgICAleyAkRHluYW1pY0ZpZWxkTG9va3VweyREeW5hbWljRmllbGROYW1lfSB9LAogICAgICAgICAgICBSZW9yZGVyID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfRHluYW1pY0ZpZWxkc0Rpc2FibGUoKQoKVGhpcyBmdW5jdGlvbiBkaXNhYmxlcyB0aGUgZGVmaW5lZCBkeW5hbWljIGZpZWxkcwoKICAgIG15IEBEeW5hbWljRmllbGRzID0gKAogICAgICAgICdUZXN0RHluYW1pY0ZpZWxkMScsCiAgICAgICAgJ1Rlc3REeW5hbWljRmllbGQyJywKICAgICAgICAnVGVzdER5bmFtaWNGaWVsZDMnLAogICAgKTsKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X0R5bmFtaWNGaWVsZHNEaXNhYmxlKEBEeW5hbWljRmllbGRzKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9EeW5hbWljRmllbGRzRGlzYWJsZSB7CiAgICBteSAoICRTZWxmLCBARHluYW1pY0ZpZWxkcyApID0gQF87CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRWYWxpZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKTsKCiAgICByZXR1cm4gMSBpZiAhQER5bmFtaWNGaWVsZHM7CgogICAgIyBnZXQgYWxsIGN1cnJlbnQgZHluYW1pYyBmaWVsZHMKICAgIG15ICREeW5hbWljRmllbGRMaXN0ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCA9PiAwLAogICAgKTsKCiAgICByZXR1cm4gMSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCREeW5hbWljRmllbGRMaXN0KTsKCiAgICAjIGNyZWF0ZSBhIGR5bmFtaWMgZmllbGRzIGxvb2t1cCB0YWJsZQogICAgbXkgJUR5bmFtaWNGaWVsZExvb2t1cDsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIEB7JER5bmFtaWNGaWVsZExpc3R9ICkgewoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZCk7CgogICAgICAgICREeW5hbWljRmllbGRMb29rdXB7ICREeW5hbWljRmllbGQtPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZDsKICAgIH0KCiAgICBteSAkSW52YWxpZElEID0gJFZhbGlkT2JqZWN0LT5WYWxpZExvb2t1cCgKICAgICAgICBWYWxpZCA9PiAnaW52YWxpZCcsCiAgICApOwoKICAgICMgZGlzYWJsZSB0aGUgZHluYW1pYyBmaWVsZHMKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoQER5bmFtaWNGaWVsZHMpIHsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRMb29rdXB7JER5bmFtaWNGaWVsZE5hbWV9OwoKICAgICAgICAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgICAgICV7ICREeW5hbWljRmllbGRMb29rdXB7JER5bmFtaWNGaWVsZE5hbWV9IH0sCiAgICAgICAgICAgIFZhbGlkSUQgPT4gJEludmFsaWRJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9EeW5hbWljRmllbGRzQ3JlYXRlSWZOb3RFeGlzdHMoKQoKY3JlYXRlcyBhbGwgZHluYW1pYyBmaWVsZHMgdGhhdCBhcmUgbmVjZXNzYXJ5CgogICAgbXkgQER5bmFtaWNGaWVsZHMgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgID0+ICdUZXN0RHluYW1pY0ZpZWxkMScsCiAgICAgICAgICAgIExhYmVsICAgICAgPT4gIlRlc3REeW5hbWljRmllbGQxIiwKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnVGlja2V0JywKICAgICAgICAgICAgRmllbGRUeXBlICA9PiAnVGV4dCcsCiAgICAgICAgICAgIENvbmZpZyAgICAgPT4gewogICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+ICIiLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgID0+ICdUZXN0RHluYW1pY0ZpZWxkMicsCiAgICAgICAgICAgIExhYmVsICAgICAgPT4gIlRlc3REeW5hbWljRmllbGQyIiwKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnVGlja2V0JywKICAgICAgICAgICAgRmllbGRUeXBlICA9PiAnVGV4dCcsCiAgICAgICAgICAgIENvbmZpZyAgICAgPT4gewogICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+ICIiLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRSZXN1bHQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9EeW5hbWljRmllbGRzQ3JlYXRlSWZOb3RFeGlzdHMoIEBEeW5hbWljRmllbGRzICk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfRHluYW1pY0ZpZWxkc0NyZWF0ZUlmTm90RXhpc3RzIHsKICAgIG15ICggJFNlbGYsIEBEZWZpbml0aW9uICkgPSBAXzsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgICMgZ2V0IGFsbCBjdXJyZW50IGR5bmFtaWMgZmllbGRzCiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICk7CgogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCREeW5hbWljRmllbGRMaXN0KSApIHsKICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdCA9IFtdOwogICAgfQoKICAgIG15IEBEeW5hbWljRmllbGRFeGlzdHNOb3Q7CiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJE5ld0R5bmFtaWNGaWVsZCAoQERlZmluaXRpb24pIHsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCROZXdEeW5hbWljRmllbGQpOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiBncmVwIHsgJE5ld0R5bmFtaWNGaWVsZC0+e05hbWV9IGVxICRfLT57TmFtZX0gfSBAeyREeW5hbWljRmllbGRMaXN0fTsKCiAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkRXhpc3RzTm90LCAkTmV3RHluYW1pY0ZpZWxkOwogICAgfQoKICAgIHJldHVybiAxIGlmICFARHluYW1pY0ZpZWxkRXhpc3RzTm90OwoKICAgIHJldHVybiAkU2VsZi0+X0R5bmFtaWNGaWVsZHNDcmVhdGUoQER5bmFtaWNGaWVsZEV4aXN0c05vdCk7Cn0KCj1pdGVtIF9EeW5hbWljRmllbGRzQ3JlYXRlKCkKCmNyZWF0ZXMgYWxsIGR5bmFtaWMgZmllbGRzIHRoYXQgYXJlIG5lY2Vzc2FyeQoKVXNhYmxlIFNuaXBwZXRzIChTdWJsaW1lVGV4dEFkanVzdG1lbnRzKToKICAgIG90cnMuZHluYW1pY2ZpZWxkLmNvbmZpZy50ZXh0CiAgICBvdHJzLmR5bmFtaWNmaWVsZC5jb25maWcuY2hlY2tib3gKICAgIG90cnMuZHluYW1pY2ZpZWxkLmNvbmZpZy5kYXRldGltZQogICAgb3Rycy5keW5hbWljZmllbGQuY29uZmlnLmRyb3Bkb3duCiAgICBvdHJzLmR5bmFtaWNmaWVsZC5jb25maWcudGV4dGFyZWEKICAgIG90cnMuZHluYW1pY2ZpZWxkLmNvbmZpZy5tdWx0aXNlbGVjdAoKICAgIG15IEBEeW5hbWljRmllbGRzID0gKAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAnVGVzdER5bmFtaWNGaWVsZDEnLAogICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICJUZXN0RHluYW1pY0ZpZWxkMSIsCiAgICAgICAgICAgIEludGVybmFsRmllbGQgPT4gMCwgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCAwIG9yIDEsIGludGVybmFsIGZpZWxkcyBhcmUgcHJvdGVjdGVkCiAgICAgICAgICAgIE9iamVjdFR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIEZpZWxkVHlwZSAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICBDb25maWcgICAgICAgID0+IHsKICAgICAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PiAiIiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1Rlc3REeW5hbWljRmllbGQyJywKICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICAgICAgPT4gIlRlc3REeW5hbWljRmllbGQyIiwKICAgICAgICAgICAgSW50ZXJuYWxGaWVsZCAgICAgICAgPT4gMCwgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCAwIG9yIDEsIGludGVybmFsIGZpZWxkcyBhcmUgcHJvdGVjdGVkCiAgICAgICAgICAgIE9iamVjdFR5cGUgICAgICAgICAgID0+ICdUaWNrZXQnLAogICAgICAgICAgICBGaWVsZFR5cGUgICAgICAgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIEZpZWxkT3JkZXJBZnRlckZpZWxkID0+ICdUZXN0RHluYW1pY0ZpZWxkMScsICAgIyBzcGVjaWFsIGZlYXR1cmUgdG8gb3JkZXIgZmllbGRzIGF0IGEgc3BlY2lmaWMgcG9pbnQuIENhbiBiZSBhbHNvIHVzZWQgZm9yIGZpZWxkcyB3aGljaCBhcmUgZ2V0dGluZyBjcmVhdGVkIGluIHRoZSBzYW1lIGFycmF5IGJlZm9yZSB0aGlzIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgQ29uZmlnICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+ICIiLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fRHluYW1pY0ZpZWxkc0NyZWF0ZSggQER5bmFtaWNGaWVsZHMgKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9EeW5hbWljRmllbGRzQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsIEBEeW5hbWljRmllbGRzICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFZhbGlkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKCiAgICBteSAkVmFsaWRJRCA9ICRWYWxpZE9iamVjdC0+VmFsaWRMb29rdXAoCiAgICAgICAgVmFsaWQgPT4gJ3ZhbGlkJywKICAgICk7CgogICAgIyBnZXQgYWxsIGN1cnJlbnQgZHluYW1pYyBmaWVsZHMKICAgIG15ICREeW5hbWljRmllbGRMaXN0ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCA9PiAwLAogICAgKTsKCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZExpc3QpICkgewogICAgICAgICREeW5hbWljRmllbGRMaXN0ID0gW107CiAgICB9CgogICAgIyBnZXQgdGhlIGxhc3QgZWxlbWVudCBmcm9tIHRoZSBvcmRlciBsaXN0IGFuZCBhZGQgMQogICAgbXkgJE5leHRPcmRlck51bWJlciA9IDE7CiAgICBpZiAoCiAgICAgICAgSXNBcnJheVJlZldpdGhEYXRhKCREeW5hbWljRmllbGRMaXN0KQogICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkTGlzdC0+Wy0xXSApCiAgICAgICAgJiYgJER5bmFtaWNGaWVsZExpc3QtPlstMV0tPntGaWVsZE9yZGVyfQogICAgICAgICkKICAgIHsKICAgICAgICAkTmV4dE9yZGVyTnVtYmVyID0gJER5bmFtaWNGaWVsZExpc3QtPlstMV0tPntGaWVsZE9yZGVyfSArIDE7CiAgICB9CgogICAgIyBjcmVhdGUgYSBkeW5hbWljIGZpZWxkcyBsb29rdXAgdGFibGUKICAgIG15ICVEeW5hbWljRmllbGRMb29rdXA7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBAeyREeW5hbWljRmllbGRMaXN0fSApIHsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGQpOwoKICAgICAgICAkRHluYW1pY0ZpZWxkTG9va3VweyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9ICREeW5hbWljRmllbGQ7CiAgICB9CgogICAgIyBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudCBmb3IgdGhlIEZpZWxkT3JkZXJBZnRlckZpZWxkIGZ1bmN0aW9uYWxpdHkKICAgIG15ICRGaWVsZE9yZGVyQWZ0ZXJGaWVsZEFjdGl2ZSA9IGdyZXAgeyAkXy0+e0ZpZWxkT3JkZXJBZnRlckZpZWxkfSB8fCAkXy0+e0ZpZWxkT3JkZXJBZnRlckZpZWxkVXBkYXRlfSB9IEBEeW5hbWljRmllbGRzOwogICAgbXkgJEVycm9yICAgICAgICAgICAgICAgICAgICAgID0gMDsKCiAgICAjIGNoZWNrIGR5bmFtaWMgZmllbGRzIGFuZCBzcGxpdCBkeW5hbWljIGZpZWxkcyBpbiB0aHJlZSBzZXBhcmF0ZSBncm91cHMKICAgIG15ICVOYW1lc3BhY2VzOwogICAgbXkgQE5vcm1hbEZpZWxkczsKICAgIG15IEBMZW5zRmllbGRzOwogICAgbXkgQFNldEZpZWxkczsKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnIChARHluYW1pY0ZpZWxkcykgewoKICAgICAgICAjIGNoZWNrIGZvciBuYW1lc3BhY2VzCiAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICBpZiAoICRGaWVsZE5hbWUgIX4gbXsgXEEgW2EtekEtWlxkXC1dKyBceiB9eG1zICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkludmFsaWQgRHluYW1pY0ZpZWxkIG5hbWUgJyRGaWVsZE5hbWUnLiIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGlmICggJEZpZWxkTmFtZSA9fiAvXihbXi1dKyktLyApIHsKICAgICAgICAgICAgJE5hbWVzcGFjZXN7JDF9ID0gMTsKICAgICAgICB9CgogICAgICAgICMgc29ydCBmaWVsZCBpbnRvIGZpdHRpbmcgYXJyYXkKICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdMZW5zJyApIHsKICAgICAgICAgICAgcHVzaCBATGVuc0ZpZWxkcywgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgcHVzaCBAU2V0RmllbGRzLCAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcHVzaCBATm9ybWFsRmllbGRzLCAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNvcnQgbGVucyBmaWVsZHMgaW4gY2FzZSBhIGxlbnMgaGFzIGFub3RoZXIgbGVucyBhcyBhdHRyaWJ1dGUgZHluYW1pYyBmaWVsZAogICAgbXkgQExlbnNGaWVsZHNTb3J0ZWQgPSBzb3J0IHsKICAgICAgICAoICRiLT57TmFtZX0gZXEgJGEtPntDb25maWd9e0F0dHJpYnV0ZURGfSApIDw9PiAoICRhLT57TmFtZX0gZXEgJGItPntDb25maWd9e0F0dHJpYnV0ZURGfSApCiAgICB9IEBMZW5zRmllbGRzOwoKICAgICMgbmFtZXNwYWNlIGhhbmRsaW5nCiAgICBpZiAoJU5hbWVzcGFjZXMpIHsKCiAgICAgICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKCiAgICAgICAgIyBHZXQgY3VycmVudCBzZXR0aW5nIHZhbHVlLgogICAgICAgIG15ICVTZXR0aW5nID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0dldCgKICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkOjpOYW1lc3BhY2VzJywKICAgICAgICApOwoKICAgICAgICBteSAkRXhpc3RpbmdOYW1lc3BhY2VzID0gJFNldHRpbmd7RWZmZWN0aXZlVmFsdWV9OwogICAgICAgIG15ICVBbGxOYW1lc3BhY2VzICAgICAgPSAoCiAgICAgICAgICAgICggbWFwIHsgJF8gPT4gMSB9ICRFeGlzdGluZ05hbWVzcGFjZXMtPkAqICksCiAgICAgICAgICAgICVOYW1lc3BhY2VzLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgbmFtZXNwYWNlcyBuZWVkIHRvIGJlIGNoYW5nZWQKICAgICAgICBteSAkVXBkYXRlTmFtZXNwYWNlcyA9IDA7CiAgICAgICAgTkVXTkFNRVNQQUNFOgogICAgICAgIGZvciBteSAkTmV3TmFtZXNwYWNlICgga2V5cyAlQWxsTmFtZXNwYWNlcyApIHsKICAgICAgICAgICAgaWYgKCBub25lIHsgJE5ld05hbWVzcGFjZSBlcSAkXyB9ICRFeGlzdGluZ05hbWVzcGFjZXMtPkAqICkgewogICAgICAgICAgICAgICAgJFVwZGF0ZU5hbWVzcGFjZXMgPSAxOwogICAgICAgICAgICAgICAgbGFzdCBORVdOQU1FU1BBQ0U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCRVcGRhdGVOYW1lc3BhY2VzKSB7CgogICAgICAgICAgICBteSAkRXhjbHVzaXZlTG9ja0dVSUQgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nTG9jaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICAgICAgICAgRm9yY2UgICAgID0+IDEsCiAgICAgICAgICAgICAgICBEZWZhdWx0SUQgPT4gJFNldHRpbmd7RGVmYXVsdElEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgVXBkYXRlIHNldHRpbmcgd2l0aCBtb2RpZmllZCBkYXRhCiAgICAgICAgICAgIG15ICVSZXN1bHQgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVXBkYXRlKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZDo6TmFtZXNwYWNlcycsCiAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgICAgPT4gWyBrZXlzICVBbGxOYW1lc3BhY2VzIF0sCiAgICAgICAgICAgICAgICBFeGNsdXNpdmVMb2NrR1VJRCA9PiAkRXhjbHVzaXZlTG9ja0dVSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkUmVzdWx0e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvdWxkIG5vdCB1cGRhdGUgc2V0dGluZyBEeW5hbWljRmllbGQ6Ok5hbWVzcGFjZXMuJywKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VubG9jaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICAgICAgICAgRGVmYXVsdElEID0+ICRTZXR0aW5ne0RlZmF1bHRJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvdWxkIG5vdCB1bmxvY2sgc2V0dGluZyBEeW5hbWljRmllbGQ6Ok5hbWVzcGFjZXMuJywKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICVEZXBsb3ltZW50UmVzdWx0ID0gJFN5c0NvbmZpZ09iamVjdC0+Q29uZmlndXJhdGlvbkRlcGxveSgKICAgICAgICAgICAgICAgIENvbW1lbnRzICAgICAgPT4gIkR5bmFtaWNGaWVsZEltcG9ydCB1cGRhdGluZyBEeW5hbWljRmllbGQ6Ok5hbWVzcGFjZXMiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRm9yY2UgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRGlydHlTZXR0aW5ncyA9PiBbJ0R5bmFtaWNGaWVsZDo6TmFtZXNwYWNlcyddLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJERlcGxveW1lbnRSZXN1bHR7U3VjY2Vzc30gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRGVwbG95bWVudCBmYWlsZWQhJywKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgb3IgdXBkYXRlIGR5bmFtaWMgZmllbGRzCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJE5ld0R5bmFtaWNGaWVsZCAoIEBOb3JtYWxGaWVsZHMsIEBMZW5zRmllbGRzU29ydGVkLCBAU2V0RmllbGRzICkgewoKICAgICAgICAjIGZpZWxkIGNvbmZpZyB0cmFuc2Zvcm1hdGlvbgogICAgICAgICROZXdEeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRDb25maWdOYW1lMklEKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJE5ld0R5bmFtaWNGaWVsZCwKICAgICAgICApOwoKICAgICAgICBteSAkQ3JlYXRlRHluYW1pY0ZpZWxkOwoKICAgICAgICAjIGNoZWNrIGlmIHRoZSBkeW5hbWljIGZpZWxkIGFscmVhZHkgZXhpc3RzCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICREeW5hbWljRmllbGRMb29rdXB7ICROZXdEeW5hbWljRmllbGQtPntOYW1lfSB9ICkgKSB7CiAgICAgICAgICAgICRDcmVhdGVEeW5hbWljRmllbGQgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBpZiB0aGUgZmllbGQgZXhpc3RzIGNoZWNrIGlmIHRoZSB0eXBlIG1hdGNoZXMgd2l0aCB0aGUgbmVlZGVkIHR5cGUKICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICREeW5hbWljRmllbGRMb29rdXB7ICROZXdEeW5hbWljRmllbGQtPntOYW1lfSB9LT57RmllbGRUeXBlfQogICAgICAgICAgICBuZSAkTmV3RHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAlT2xkRHluYW1pY0ZpZWxkQ29uZmlnID0gJXsgJER5bmFtaWNGaWVsZExvb2t1cHsgJE5ld0R5bmFtaWNGaWVsZC0+e05hbWV9IH0gfTsKCiAgICAgICAgICAgICMgcmVuYW1lIHRoZSBmaWVsZCBhbmQgY3JlYXRlIGEgbmV3IG9uZQogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZFVwZGF0ZSgKICAgICAgICAgICAgICAgICVPbGREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJE9sZER5bmFtaWNGaWVsZENvbmZpZ3tOYW1lfSAuICdPbGQnLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aGlsZSByZW5hbWluZyBkeW5hbWljIGZpZWxkICRPbGREeW5hbWljRmllbGRDb25maWd7TmFtZX0hIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkRXJyb3IgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgIG15ICRJc1NjcmlwdEZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gXCVPbGREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc1NjcmlwdEZpZWxkJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZXQgZXZlbnRzIGZvciBzY3JpcHQgZmllbGRzCiAgICAgICAgICAgICAgICBpZiAoICRJc1NjcmlwdEZpZWxkICYmIElzQXJyYXlSZWZXaXRoRGF0YSggJE9sZER5bmFtaWNGaWVsZENvbmZpZ3tDb25maWd9e1VwZGF0ZUV2ZW50c30gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ29uZmlnID0gJE9sZER5bmFtaWNGaWVsZENvbmZpZ3tGaWVsZFR5cGV9ID8gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdEeW5hbWljRmllbGRzOjpEcml2ZXInKS0+eyAkT2xkRHluYW1pY0ZpZWxkQ29uZmlne0ZpZWxkVHlwZX0gfSA6IHt9OwoKICAgICAgICAgICAgICAgICAgICAjIENoZWNrIG1vZHVsZSB2YWxpZGl0eQogICAgICAgICAgICAgICAgICAgIGlmICggISRDb25maWctPntNb2R1bGV9IHx8ICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAkQ29uZmlnLT57TW9kdWxlfSApICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG15ICREcml2ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCAkQ29uZmlnLT57TW9kdWxlfSApOwoKICAgICAgICAgICAgICAgICAgICAjIHZhbGlkYXRlIHVwZGF0ZSBldmVudHMgYWdhaW5zdCBwb3NzaWJsZSBldmVudHMKICAgICAgICAgICAgICAgICAgICBteSAkUG9zc2libGVDb25kaXRpb25zID0gJERyaXZlck9iamVjdC0+R2V0UG9zc2libGVFeGVjdXRpb25Db25kaXRpb25zKAogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RUeXBlID0+ICRPbGREeW5hbWljRmllbGRDb25maWd7T2JqZWN0VHlwZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkSUQgICAgPT4gJE9sZER5bmFtaWNGaWVsZENvbmZpZ3tJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbXkgQEZpbHRlcmVkVXBkYXRlRXZlbnRzOwogICAgICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUG9zc2libGVDb25kaXRpb25zLT57UG9zc2libGVVcGRhdGVFdmVudHN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICVQb3NzaWJsZVVwZGF0ZUV2ZW50cyA9IG1hcCB7ICRfID0+ICRfIH0gJFBvc3NpYmxlQ29uZGl0aW9ucy0+e1Bvc3NpYmxlVXBkYXRlRXZlbnRzfS0+QCo7CiAgICAgICAgICAgICAgICAgICAgICAgIEBGaWx0ZXJlZFVwZGF0ZUV2ZW50cyA9IGdyZXAgeyAkUG9zc2libGVVcGRhdGVFdmVudHN7JF99IH0gJE9sZER5bmFtaWNGaWVsZENvbmZpZ3tDb25maWd9e1VwZGF0ZUV2ZW50c30tPkAqOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKEBGaWx0ZXJlZFVwZGF0ZUV2ZW50cykgewogICAgICAgICAgICAgICAgICAgICAgICAkRHJpdmVyT2JqZWN0LT5TZXRVcGRhdGVFdmVudHMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZElEID0+ICRPbGREeW5hbWljRmllbGRDb25maWd7SUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRzICA9PiBcQEZpbHRlcmVkVXBkYXRlRXZlbnRzLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJENyZWF0ZUR5bmFtaWNGaWVsZCA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIG90aGVyd2lzZSBpZiB0aGUgZmllbGQgZXhpc3RzIGFuZCB0aGUgdHlwZSBtYXRjaGVzLCB1cGRhdGUgaXQgYXMgZGVmaW5lZAogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAlT2xkRHluYW1pY0ZpZWxkQ29uZmlnID0gJXsgJER5bmFtaWNGaWVsZExvb2t1cHsgJE5ld0R5bmFtaWNGaWVsZC0+e05hbWV9IH0gfTsKCiAgICAgICAgICAgIG15ICRGaWVsZE9yZGVyVXBkYXRlID0gJFNlbGYtPkR5bmFtaWNGaWVsZEZpZWxkT3JkZXJBZnRlckZpZWxkR2V0KAogICAgICAgICAgICAgICAgTmFtZSA9PiAkTmV3RHluYW1pY0ZpZWxkLT57RmllbGRPcmRlckFmdGVyRmllbGRVcGRhdGV9LAogICAgICAgICAgICApIHx8ICRPbGREeW5hbWljRmllbGRDb25maWd7RmllbGRPcmRlcn07CgogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZFVwZGF0ZSgKICAgICAgICAgICAgICAgICV7JE5ld0R5bmFtaWNGaWVsZH0sCiAgICAgICAgICAgICAgICBJRCAgICAgICAgID0+ICRPbGREeW5hbWljRmllbGRDb25maWd7SUR9LAogICAgICAgICAgICAgICAgRmllbGRPcmRlciA9PiAkRmllbGRPcmRlclVwZGF0ZSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgICAgPT4gJE5ld0R5bmFtaWNGaWVsZC0+e1ZhbGlkSUR9IHx8ICRWYWxpZElELAogICAgICAgICAgICAgICAgUmVvcmRlciAgICA9PiAwLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aGlsZSB1cGRhdGluZyBkeW5hbWljIGZpZWxkICRPbGREeW5hbWljRmllbGRDb25maWd7TmFtZX0hIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkRXJyb3IgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgIG15ICRJc1NjcmlwdEZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAkTmV3RHluYW1pY0ZpZWxkLT4lKiwKICAgICAgICAgICAgICAgICAgICAgICAgSUQgPT4gJE9sZER5bmFtaWNGaWVsZENvbmZpZ3tJRH0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBCZWhhdmlvciA9PiAnSXNTY3JpcHRGaWVsZCcsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IGV2ZW50cyBmb3Igc2NyaXB0IGZpZWxkcwogICAgICAgICAgICAgICAgaWYgKCAkSXNTY3JpcHRGaWVsZCAmJiBJc0FycmF5UmVmV2l0aERhdGEoICROZXdEeW5hbWljRmllbGQtPntDb25maWd9e1VwZGF0ZUV2ZW50c30gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ29uZmlnID0gJE5ld0R5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gPyAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0R5bmFtaWNGaWVsZHM6OkRyaXZlcicpLT57ICROZXdEeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IH0gOiB7fTsKCiAgICAgICAgICAgICAgICAgICAgIyBDaGVjayBtb2R1bGUgdmFsaWRpdHkKICAgICAgICAgICAgICAgICAgICBpZiAoICEkQ29uZmlnLT57TW9kdWxlfSB8fCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJENvbmZpZy0+e01vZHVsZX0gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkRHJpdmVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCggJENvbmZpZy0+e01vZHVsZX0gKTsKCiAgICAgICAgICAgICAgICAgICAgIyB2YWxpZGF0ZSB1cGRhdGUgZXZlbnRzIGFnYWluc3QgcG9zc2libGUgZXZlbnRzCiAgICAgICAgICAgICAgICAgICAgbXkgJFBvc3NpYmxlQ29uZGl0aW9ucyA9ICREcml2ZXJPYmplY3QtPkdldFBvc3NpYmxlRXhlY3V0aW9uQ29uZGl0aW9ucygKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAkTmV3RHluYW1pY0ZpZWxkLT57T2JqZWN0VHlwZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkSUQgICAgPT4gJE9sZER5bmFtaWNGaWVsZENvbmZpZ3tJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbXkgQEZpbHRlcmVkVXBkYXRlRXZlbnRzOwogICAgICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUG9zc2libGVDb25kaXRpb25zLT57UG9zc2libGVVcGRhdGVFdmVudHN9ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICVQb3NzaWJsZVVwZGF0ZUV2ZW50cyA9IG1hcCB7ICRfID0+ICRfIH0gJFBvc3NpYmxlQ29uZGl0aW9ucy0+e1Bvc3NpYmxlVXBkYXRlRXZlbnRzfS0+QCo7CiAgICAgICAgICAgICAgICAgICAgICAgIEBGaWx0ZXJlZFVwZGF0ZUV2ZW50cyA9IGdyZXAgeyAkUG9zc2libGVVcGRhdGVFdmVudHN7JF99IH0gJE5ld0R5bmFtaWNGaWVsZC0+e0NvbmZpZ317VXBkYXRlRXZlbnRzfS0+QCo7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoQEZpbHRlcmVkVXBkYXRlRXZlbnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICREcml2ZXJPYmplY3QtPlNldFVwZGF0ZUV2ZW50cygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkSUQgPT4gJE9sZER5bmFtaWNGaWVsZENvbmZpZ3tJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudHMgID0+IFxARmlsdGVyZWRVcGRhdGVFdmVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIG5ldyBmaWVsZCBoYXMgdG8gYmUgY3JlYXRlZAogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkQ3JlYXRlRHluYW1pY0ZpZWxkOwoKICAgICAgICBteSAkRmllbGRPcmRlckFkZCA9ICRTZWxmLT5EeW5hbWljRmllbGRGaWVsZE9yZGVyQWZ0ZXJGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkTmV3RHluYW1pY0ZpZWxkLT57RmllbGRPcmRlckFmdGVyRmllbGR9LAogICAgICAgICkgfHwgJE5leHRPcmRlck51bWJlcjsKCiAgICAgICAgIyBjcmVhdGUgYSBuZXcgZmllbGQKICAgICAgICBteSAkRmllbGRJRCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEFkZCgKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkTmV3RHluYW1pY0ZpZWxkLT57TmFtZX0sCiAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJE5ld0R5bmFtaWNGaWVsZC0+e0xhYmVsfSwKICAgICAgICAgICAgRmllbGRPcmRlciAgICA9PiAkRmllbGRPcmRlckFkZCwKICAgICAgICAgICAgRmllbGRUeXBlICAgICA9PiAkTmV3RHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSwKICAgICAgICAgICAgT2JqZWN0VHlwZSAgICA9PiAkTmV3RHluYW1pY0ZpZWxkLT57T2JqZWN0VHlwZX0sCiAgICAgICAgICAgIENvbmZpZyAgICAgICAgPT4gJE5ld0R5bmFtaWNGaWVsZC0+e0NvbmZpZ30sCiAgICAgICAgICAgIEludGVybmFsRmllbGQgPT4gJE5ld0R5bmFtaWNGaWVsZC0+e0ludGVybmFsRmllbGR9IHx8IDAsCiAgICAgICAgICAgIFZhbGlkSUQgICAgICAgPT4gJE5ld0R5bmFtaWNGaWVsZC0+e1ZhbGlkSUR9ICAgICAgIHx8ICRWYWxpZElELAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkRmllbGRJRCApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aGlsZSBjcmVhdGluZyBkeW5hbWljIGZpZWxkICROZXdEeW5hbWljRmllbGQtPntOYW1lfSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkRXJyb3IgPSAxOwogICAgICAgIH0KCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISRGaWVsZElEOwoKICAgICAgICBteSAkSXNTY3JpcHRGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICAkTmV3RHluYW1pY0ZpZWxkLT4lKiwKICAgICAgICAgICAgICAgIElEID0+ICRGaWVsZElELAogICAgICAgICAgICB9LAogICAgICAgICAgICBCZWhhdmlvciA9PiAnSXNTY3JpcHRGaWVsZCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgZXZlbnRzIGZvciBzY3JpcHQgZmllbGRzCiAgICAgICAgaWYgKCAkSXNTY3JpcHRGaWVsZCAmJiBJc0FycmF5UmVmV2l0aERhdGEoICROZXdEeW5hbWljRmllbGQtPntDb25maWd9e1VwZGF0ZUV2ZW50c30gKSApIHsKICAgICAgICAgICAgbXkgJENvbmZpZyA9ICROZXdEeW5hbWljRmllbGQtPntGaWVsZFR5cGV9ID8gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdEeW5hbWljRmllbGRzOjpEcml2ZXInKS0+eyAkTmV3RHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSB9IDoge307CgogICAgICAgICAgICAjIENoZWNrIG1vZHVsZSB2YWxpZGl0eQogICAgICAgICAgICBpZiAoICEkQ29uZmlnLT57TW9kdWxlfSB8fCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJENvbmZpZy0+e01vZHVsZX0gKSApIHsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRHJpdmVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCggJENvbmZpZy0+e01vZHVsZX0gKTsKCiAgICAgICAgICAgICMgdmFsaWRhdGUgdXBkYXRlIGV2ZW50cyBhZ2FpbnN0IHBvc3NpYmxlIGV2ZW50cwogICAgICAgICAgICBteSAkUG9zc2libGVDb25kaXRpb25zID0gJERyaXZlck9iamVjdC0+R2V0UG9zc2libGVFeGVjdXRpb25Db25kaXRpb25zKAogICAgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAkTmV3RHluYW1pY0ZpZWxkLT57T2JqZWN0VHlwZX0sCiAgICAgICAgICAgICAgICBGaWVsZElEICAgID0+ICRGaWVsZElELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgQEZpbHRlcmVkVXBkYXRlRXZlbnRzOwogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBvc3NpYmxlQ29uZGl0aW9ucy0+e1Bvc3NpYmxlVXBkYXRlRXZlbnRzfSApICkgewogICAgICAgICAgICAgICAgbXkgJVBvc3NpYmxlVXBkYXRlRXZlbnRzID0gbWFwIHsgJF8gPT4gJF8gfSAkUG9zc2libGVDb25kaXRpb25zLT57UG9zc2libGVVcGRhdGVFdmVudHN9LT5AKjsKICAgICAgICAgICAgICAgIEBGaWx0ZXJlZFVwZGF0ZUV2ZW50cyA9IGdyZXAgeyAkUG9zc2libGVVcGRhdGVFdmVudHN7JF99IH0gJE5ld0R5bmFtaWNGaWVsZC0+e0NvbmZpZ317VXBkYXRlRXZlbnRzfS0+QCo7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChARmlsdGVyZWRVcGRhdGVFdmVudHMpIHsKICAgICAgICAgICAgICAgICREcml2ZXJPYmplY3QtPlNldFVwZGF0ZUV2ZW50cygKICAgICAgICAgICAgICAgICAgICBGaWVsZElEID0+ICRGaWVsZElELAogICAgICAgICAgICAgICAgICAgIEV2ZW50cyAgPT4gXEBGaWx0ZXJlZFVwZGF0ZUV2ZW50cywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaW5jcmVhc2UgdGhlIG9yZGVyIG51bWJlcgogICAgICAgICROZXh0T3JkZXJOdW1iZXIrKzsKICAgIH0KCiAgICByZXR1cm4gISRFcnJvcjsKfQoKPWl0ZW0gRHluYW1pY0ZpZWxkRmllbGRPcmRlckFmdGVyRmllbGRHZXQoKQoKVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0aGUgZmllbGQgb3JkZXIgYWZ0ZXIgYSBzcGVjaWZpYyBkeW5hbWljIGZpZWxkIGZpZWxkIG5hbWUuCgplLmcuCgpUZXN0RHluYW1pY0ZpZWxkIGhhcyB0aGUgZmllbGQgb3JkZXIgMTAwLgoKCiAgICBteSAkRmllbGRPcmRlciA9ICRabnVueUhlbHBlck9iamVjdC0+RHluYW1pY0ZpZWxkRmllbGRPcmRlckFmdGVyRmllbGRHZXQoCiAgICAgICAgTmFtZSA9PiAnVGVzdER5bmFtaWNGaWVsZDEnLAogICAgKTsKClJldHVybnM6CgogICAgbXkgJEZpZWxkT3JkZXIgPSAxMDE7Cgo9Y3V0CgpzdWIgRHluYW1pY0ZpZWxkRmllbGRPcmRlckFmdGVyRmllbGRHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgIHJldHVybiBpZiAhJFBhcmFte05hbWV9OwoKICAgIG15ICREeW5hbWljRmllbGRMaXN0ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCA9PiAwLAogICAgKTsKCiAgICBteSAoJER5bmFtaWNGaWVsZEZpZWxkT3JkZXIpID0gZ3JlcCB7ICRfLT57TmFtZX0gZXEgJFBhcmFte05hbWV9IH0gQHsgJER5bmFtaWNGaWVsZExpc3QgfHwgW10gfTsKCiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRGaWVsZE9yZGVyKTsKICAgIHJldHVybiAkRHluYW1pY0ZpZWxkRmllbGRPcmRlci0+e0ZpZWxkT3JkZXJ9ICsgMTsKfQoKPWl0ZW0gRHluYW1pY0ZpZWxkVmFsdWVDcmVhdGUoKQoKQWRkIGEgbmV3IGRyb3Bkb3duIHZhbHVlIHRvIGEgZHluYW1pYyBmaWVsZC4gVGhpcyBmdW5jdGlvbgp3aWxsIGV4dGVuZGVkIHRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoZSBmaWVsZC4KCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+RHluYW1pY0ZpZWxkVmFsdWVDcmVhdGUoCiAgICAgICAgTmFtZSAgPT4gJ0R5bmFtaWNGaWVsZE5hbWUnLAogICAgICAgIEtleSAgID0+ICdWYWx1ZURyb3Bkb3duJywKICAgICAgICBWYWx1ZSA9PiAnVmFsdWVEcm9wZG93bicsICAgICMgb3B0aW9uYWwgKFBhcmFtZXRlciAiS2V5IiBpcyBkZWZhdWx0KQogICAgKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIER5bmFtaWNGaWVsZFZhbHVlQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhOYW1lIEtleSkpIHsKICAgICAgICBuZXh0IE5FRURFRCBpZiAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJE5hbWUgID0gJFBhcmFte05hbWV9OwogICAgbXkgJEtleSAgID0gJFBhcmFte0tleX07CiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9IHx8ICRQYXJhbXtLZXl9OwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgTmFtZSA9PiAkTmFtZSwKICAgICk7CgogICAgcmV0dXJuIDEgaWYgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntQb3NzaWJsZVZhbHVlc30tPnskS2V5fQogICAgICAgICYmICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57UG9zc2libGVWYWx1ZXN9LT57JEtleX0gZXEgJFZhbHVlOwoKICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57UG9zc2libGVWYWx1ZXN9IHx8PSB7fTsKICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57UG9zc2libGVWYWx1ZXN9LT57JEtleX0gPSAkVmFsdWU7CgogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgJXskRHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDEgaWYgJFN1Y2Nlc3M7CgogICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgTWVzc2FnZSAgPT4gIkNhbiBub3QgdXBkYXRlIGR5bmFtaWMgZmllbGQgY29uZmlndXJhdGlvbiBvZiBmaWVsZCAnIiAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICInISIsCiAgICApOwoKICAgIHJldHVybjsKfQoKPWl0ZW0gX0R5bmFtaWNGaWVsZHNDb25maWdFeHBvcnQoKQoKZXhwb3J0cyBjb25maWd1cmF0aW9uIG9mIGFsbCBkeW5hbWljIGZpZWxkcwoKICAgIG15ICRDb25maWdzID0gJFpudW55SGVscGVyT2JqZWN0LT5fRHluYW1pY0ZpZWxkc0NvbmZpZ0V4cG9ydCgKICAgICAgICBGb3JtYXQgICAgICAgICAgICAgICAgPT4gJ3Blcmx8eW1sfHZhcicsICMgZGVmYXVsdHMgdG8gcGVybC4gdmFyIHJldHVybnMgdGhlCiAgICAgICAgSW5jbHVkZUludGVybmFsRmllbGRzID0+IDEsICMgZGVmYXVsdHMgdG8gMSwgYWxzbyBpbmNsdWRlcyBkeW5hbWljIGZpZWxkcyB3aXRoIGZsYWcgJ0ludGVybmFsRmllbGQnLAogICAgICAgIEluY2x1ZGVBbGxDb25maWdLZXlzICA9PiAxLCAjIGRlZmF1bHRzIHRvIDEsIGFsc28gaW5jbHVkZXMgY29uZmlnIGtleXMgQ2hhbmdlVGltZSwgQ3JlYXRlVGltZSwgSUQsIEludGVybmFsRmllbGQsIFZhbGlkSUQKICAgICAgICBSZXN1bHQgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJywgIyBIQVNIIG9yIEFSUkFZLCBkZWZhdWx0cyB0byBBUlJBWQogICAgICAgIER5bmFtaWNGaWVsZHMgICAgICAgICA9PiBbICAjIG9wdGlvbmFsLCByZXR1cm5zIG9ubHkgdGhlIGNvbmZpZ3MgZm9yIHRoZSBnaXZlbiBmaWVsZHMKICAgICAgICAgICAgJ05hbWVPZkR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICdTZWNvbmREeW5hbWljRmllbGQnLAogICAgICAgIF0sCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkQVJSQVlSZXN1bHQgPSBbCiAgICAgICAgewogICAgICAgICAgJ0NvbmZpZycgPT4gewogICAgICAgICAgICAgICdEZWZhdWx0VmFsdWUnID0+ICcnCiAgICAgICAgICB9LAogICAgICAgICAgJ0ZpZWxkT3JkZXInID0+ICcxJywKICAgICAgICAgICdGaWVsZFR5cGUnICA9PiAnVGV4dCcsCiAgICAgICAgICAnTGFiZWwnICAgICAgPT4gIkR5bkZpZWxkMSBMYWJlbCIsCiAgICAgICAgICAnTmFtZScgICAgICAgPT4gJ0R5bkZpZWxkMScsCiAgICAgICAgICAnT2JqZWN0VHlwZScgPT4gJ1RpY2tldCcKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICdDb25maWcnID0+IHsKICAgICAgICAgICAgICAnRGVmYXVsdFZhbHVlJyA9PiAnJwogICAgICAgICAgfSwKICAgICAgICAgICdGaWVsZE9yZGVyJyA9PiAnMicsCiAgICAgICAgICAnRmllbGRUeXBlJyAgPT4gJ1RleHQnLAogICAgICAgICAgJ0xhYmVsJyAgICAgID0+ICdEeW5GaWVsZDIgTGFiZWwnLAogICAgICAgICAgJ05hbWUnICAgICAgID0+ICdEeW5GaWVsZDInLAogICAgICAgICAgJ09iamVjdFR5cGUnID0+ICdUaWNrZXQnCiAgICAgICAgfSwKICAgIF07CgogICAgbXkgJEhBU0hSZXN1bHQgPSB7CiAgICAgICAgJ0R5bkZpZWxkMScgPT4gewogICAgICAgICAgJ0NvbmZpZycgPT4gewogICAgICAgICAgICAnRGVmYXVsdFZhbHVlJyA9PiAnJwogICAgICAgICAgfSwKICAgICAgICAgICdGaWVsZE9yZGVyJyA9PiAnMScsCiAgICAgICAgICAnRmllbGRUeXBlJyAgPT4gJ1RleHQnLAogICAgICAgICAgJ0xhYmVsJyAgICAgID0+ICJEeW5GaWVsZDEgTGFiZWwiLAogICAgICAgICAgJ05hbWUnICAgICAgID0+ICdEeW5GaWVsZDEnLAogICAgICAgICAgJ09iamVjdFR5cGUnID0+ICdUaWNrZXQnCiAgICAgICAgfSwKICAgICAgICAnRHluRmllbGQyJyA9PiB7CiAgICAgICAgICAnQ29uZmlnJyA9PiB7CiAgICAgICAgICAgICdEZWZhdWx0VmFsdWUnID0+ICcnCiAgICAgICAgICB9LAogICAgICAgICAgJ0ZpZWxkT3JkZXInID0+ICcyJywKICAgICAgICAgICdGaWVsZFR5cGUnICA9PiAnVGV4dCcsCiAgICAgICAgICAnTGFiZWwnICAgICAgPT4gJ0R5bkZpZWxkMiBMYWJlbCcsCiAgICAgICAgICAnTmFtZScgICAgICAgPT4gJ0R5bkZpZWxkMicsCiAgICAgICAgICAnT2JqZWN0VHlwZScgPT4gJ1RpY2tldCcKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBfRHluYW1pY0ZpZWxkc0NvbmZpZ0V4cG9ydCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRNYWluT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwogICAgbXkgJExvZ09iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkWUFNTE9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKICAgIG15ICRTdG9yYWJsZU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RvcmFibGUnKTsKCiAgICBteSAkRm9ybWF0ID0gbGMoICRQYXJhbXtGb3JtYXR9IC8vICdwZXJsJyApOwogICAgaWYgKCAkRm9ybWF0IG5lICd5bWwnICYmICRGb3JtYXQgbmUgJ3BlcmwnICYmICRGb3JtYXQgbmUgJ3ZhcicgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCB2YWx1ZSAkRm9ybWF0IGZvciBwYXJhbWV0ZXIgRm9ybWF0LiIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFJlc3VsdFR5cGUgPSBsYyggJFBhcmFte1Jlc3VsdH0gLy8gJ2FycmF5JyApOwogICAgaWYgKCAkUmVzdWx0VHlwZSBuZSAnaGFzaCcgJiYgJFJlc3VsdFR5cGUgbmUgJ2FycmF5JyApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHZhbHVlICRSZXN1bHRUeXBlIGZvciBwYXJhbWV0ZXIgUmVzdWx0LiIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBVc2UgY2xvbmUgdG8gbWFrZSBhIGNvcHkgdG8gcHJldmVudCB3ZWlyZCBpc3N1ZXMgd2l0aCBtdWx0aXBsZSBjYWxscyB0byBEeW5hbWljRmllbGRMaXN0R2V0KCkuCiAgICAjIFNvbWVob3cgY2FsbHMgdG8gRHluYW1pY0ZpZWxkTGlzdEdldCgpIHdpbGwgcmVwb3J0IHRoZSBhbHJlYWR5IGNoYW5nZWQgZHluYW1pYyBmaWVsZCBjb25maWdzCiAgICAjIGFjY29yZGluZyB0byBnaXZlbiBwYXJhbWV0ZXJzLgogICAgbXkgJER5bmFtaWNGaWVsZHMgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KCkgLy8gW107CiAgICAkRHluYW1pY0ZpZWxkcyA9ICRTdG9yYWJsZU9iamVjdC0+Q2xvbmUoIERhdGEgPT4gJER5bmFtaWNGaWVsZHMgKTsKICAgIG15IEBEeW5hbWljRmllbGRDb25maWdzID0gc29ydCB7ICRhLT57TmFtZX0gY21wICRiLT57TmFtZX0gfSBAeyREeW5hbWljRmllbGRzfTsKCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0R5bmFtaWNGaWVsZHN9ICkgKSB7CiAgICAgICAgbXkgJVJlc3RyaWN0VG9EeW5hbWljRmllbGRzID0gbWFwIHsgJF8gPT4gMSB9IEB7ICRQYXJhbXtEeW5hbWljRmllbGRzfSB9OwogICAgICAgIEBEeW5hbWljRmllbGRDb25maWdzID0gZ3JlcCB7ICRSZXN0cmljdFRvRHluYW1pY0ZpZWxkc3sgJF8tPntOYW1lfSB9IH0gQER5bmFtaWNGaWVsZENvbmZpZ3M7CiAgICB9CgogICAgIyBSZW1vdmUgaW50ZXJuYWwgZHluYW1pYyBmaWVsZCBjb25maWdzCiAgICBteSAkSW5jbHVkZUludGVybmFsRmllbGRzID0gJFBhcmFte0luY2x1ZGVJbnRlcm5hbEZpZWxkc30gLy8gMTsKICAgIGlmICggISRJbmNsdWRlSW50ZXJuYWxGaWVsZHMgKSB7CiAgICAgICAgQER5bmFtaWNGaWVsZENvbmZpZ3MgPSBncmVwIHsgISRfLT57SW50ZXJuYWxGaWVsZH0gfSBARHluYW1pY0ZpZWxkQ29uZmlnczsKICAgIH0KCiAgICAjIFJlbW92ZSBoYXNoIGtleXMKICAgIG15ICRJbmNsdWRlQWxsQ29uZmlnS2V5cyA9ICRQYXJhbXtJbmNsdWRlQWxsQ29uZmlnS2V5c30gLy8gMTsKICAgIGlmICggISRJbmNsdWRlQWxsQ29uZmlnS2V5cyApIHsKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoQER5bmFtaWNGaWVsZENvbmZpZ3MpIHsKICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KENoYW5nZVRpbWUgQ3JlYXRlVGltZSBJRCBJbnRlcm5hbEZpZWxkIFZhbGlkSUQpKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgJER5bmFtaWNGaWVsZC0+eyRLZXl9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgcGVyZm9ybSB0cmFuc2Zvcm1hdGlvbnMgaWYgbmVjZXNzYXJ5CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoQER5bmFtaWNGaWVsZENvbmZpZ3MpIHsKICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQ29uZmlnSUQyTmFtZSgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgKTsKCiAgICAgICAgIyB0aWR5IGV4cG9ydCBkYXRhCiAgICAgICAgZGVsZXRlICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1BhcnRPZlNldH07CiAgICAgICAgZGVsZXRlICREeW5hbWljRmllbGRDb25maWctPntJRH07CiAgICB9CgogICAgbXkgJERhdGE7CiAgICBpZiAoICRSZXN1bHRUeXBlIGVxICdoYXNoJyApIHsKICAgICAgICAleyREYXRhfSA9IG1hcCB7ICRfLT57TmFtZX0gPT4gJF8gfSBARHluYW1pY0ZpZWxkQ29uZmlnczsKICAgIH0KICAgIGVsc2lmICggJFJlc3VsdFR5cGUgZXEgJ2FycmF5JyApIHsKICAgICAgICAkRGF0YSA9IFxARHluYW1pY0ZpZWxkQ29uZmlnczsKICAgIH0KCiAgICByZXR1cm4gJERhdGEgaWYgJEZvcm1hdCBlcSAndmFyJzsKCiAgICBteSAkQ29uZmlnU3RyaW5nID0gJyc7CiAgICBpZiAoICRGb3JtYXQgZXEgJ3BlcmwnICkgewogICAgICAgICRDb25maWdTdHJpbmcgPSAkTWFpbk9iamVjdC0+RHVtcCgkRGF0YSk7CiAgICB9CiAgICBlbHNpZiAoICRGb3JtYXQgZXEgJ3ltbCcgKSB7CiAgICAgICAgJENvbmZpZ1N0cmluZyA9ICRZQU1MT2JqZWN0LT5EdW1wKCBEYXRhID0+ICREYXRhICk7CiAgICB9CgogICAgcmV0dXJuICRDb25maWdTdHJpbmc7Cn0KCj1pdGVtIF9EeW5hbWljRmllbGRzU2NyZWVuQ29uZmlnRXhwb3J0KCkKCmV4cG9ydHMgYWxsIGNvbmZpZ3VyZWQgc2NyZWVucyBvZiBvbmUgb3JlIG1vcmUgZHluYW1pYyBmaWVsZHMKCiAgICBteSAkQ29uZmlncyA9ICRabnVueUhlbHBlck9iamVjdC0+X0R5bmFtaWNGaWVsZHNTY3JlZW5Db25maWdFeHBvcnQoCiAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgICAgID0+IFsgICAgICAgICAgICAgICMgb3B0aW9uYWwsIHJldHVybnMgb25seSBmb3IgdGhvc2UgZmllbGRzCiAgICAgICAgICAgICdOYW1lT2ZEeW5hbWljRmllbGQnLAogICAgICAgICAgICAnU2Vjb25kRHluYW1pY0ZpZWxkJywKICAgICAgICBdLAogICAgKTsKClJldHVybnM6CgogICAgbXkgJFJlc3VsdCA9IHsKICAgICAgICAnRHluRmllbGQxJyA9PiB7CiAgICAgICAgICAgICdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMTAwLUNJQy1UaWNrZXRQZW5kaW5nUmVtaW5kZXInID0+ICcyJywKICAgICAgICAgICAgJ0Rhc2hib2FyZEJhY2tlbmQjIyMwMTAwLVRpY2tldFBlbmRpbmdSZW1pbmRlcicgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJzEnLAogICAgICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMzAtVGlja2V0T3BlbicgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnMScsCiAgICAgICAgICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDE0MC1SdW5uaW5nVGlja2V0UHJvY2VzcycgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICcxJywKICAgICAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0UXVldWUjIyNEZWZhdWx0Q29sdW1ucycgICAgICAgICAgICAgICAgICAgICAgPT4gJzInLAogICAgICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRSZXNwb25zaWJsZSMjI0R5bmFtaWNGaWVsZCcgICAgICAgICAgICAgICAgICA9PiAnMicsCiAgICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFNlYXJjaCMjI0RlZmF1bHRDb2x1bW5zJyAgICAgICAgICAgICAgICAgICAgID0+ICcyJywKICAgICAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U3RhdHVzVmlldyMjI0RlZmF1bHRDb2x1bW5zJyAgICAgICAgICAgICAgICAgPT4gJzInLAogICAgICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRab29tIyMjRHluYW1pY0ZpZWxkJyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnMCcsCiAgICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpDdXN0b21lclRpY2tldE92ZXJ2aWV3IyMjRHluYW1pY0ZpZWxkJyAgICAgICAgICAgICAgICAgID0+ICcyJywKICAgICAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6Ok92ZXJ2aWV3UHJldmlldyMjI0R5bmFtaWNGaWVsZCcgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJzInLAogICAgICAgIH0sCiAgICAgICAgJ0R5bkZpZWxkMicgPT4gewogICAgICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRSZXNwb25zaWJsZSMjI0R5bmFtaWNGaWVsZCcgICAgICAgICAgICAgICAgICA9PiAnMicsCiAgICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFNlYXJjaCMjI0RlZmF1bHRDb2x1bW5zJyAgICAgICAgICAgICAgICAgICAgID0+ICcyJywKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBfRHluYW1pY0ZpZWxkc1NjcmVlbkNvbmZpZ0V4cG9ydCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgIG15ICRWYWxpZER5bmFtaWNGaWVsZFNjcmVlbkxpc3QgPSAkU2VsZi0+X1ZhbGlkRHluYW1pY0ZpZWxkU2NyZWVuTGlzdEdldCgpOwoKICAgIG15IEBEeW5hbWljRmllbGRzOwogICAgaWYgKCAhJFBhcmFte0R5bmFtaWNGaWVsZHN9ICkgewogICAgICAgIG15ICRMaXN0ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdCgKICAgICAgICAgICAgUmVzdWx0VHlwZSA9PiAnSEFTSCcsCiAgICAgICAgKTsKICAgICAgICBARHluYW1pY0ZpZWxkcyA9IHNvcnQgdmFsdWVzICV7JExpc3R9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgQER5bmFtaWNGaWVsZHMgPSBAeyAkUGFyYW17RHluYW1pY0ZpZWxkc30gfTsKICAgIH0KCiAgICBteSAlQ29uZmlnOwogICAgZm9yIG15ICREeW5hbWljRmllbGQgKEBEeW5hbWljRmllbGRzKSB7CiAgICAgICAgRFlOQU1JQ0ZJRUxEU0NSRUVOOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkU2NyZWVuICggQHsgJFZhbGlkRHluYW1pY0ZpZWxkU2NyZWVuTGlzdC0+e0R5bmFtaWNGaWVsZFNjcmVlbnN9IH0gKSB7CiAgICAgICAgICAgIG15ICVEeW5hbWljRmllbGRTY3JlZW5Db25maWcgPSAkU2VsZi0+X0R5bmFtaWNGaWVsZHNTY3JlZW5HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtcyA9PiBbJER5bmFtaWNGaWVsZFNjcmVlbl0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRFNDUkVFTgogICAgICAgICAgICAgICAgaWYgIUlzU3RyaW5nV2l0aERhdGEoICREeW5hbWljRmllbGRTY3JlZW5Db25maWd7JER5bmFtaWNGaWVsZFNjcmVlbn0tPnskRHluYW1pY0ZpZWxkfSApOwoKICAgICAgICAgICAgJENvbmZpZ3skRHluYW1pY0ZpZWxkfS0+eyREeW5hbWljRmllbGRTY3JlZW59ID0gJER5bmFtaWNGaWVsZFNjcmVlbkNvbmZpZ3skRHluYW1pY0ZpZWxkU2NyZWVufS0+eyREeW5hbWljRmllbGR9OwogICAgICAgIH0KCiAgICAgICAgREVGQVVMVENPTFVNTlNDUkVFTjoKICAgICAgICBmb3IgbXkgJERlZmF1bHRDb2x1bW5zU2NyZWVuICggQHsgJFZhbGlkRHluYW1pY0ZpZWxkU2NyZWVuTGlzdC0+e0RlZmF1bHRDb2x1bW5zU2NyZWVuc30gfSApIHsKICAgICAgICAgICAgbXkgJURlZmF1bHRDb2x1bW5zU2NyZWVuQ29uZmlnID0gJFNlbGYtPl9EeW5hbWljRmllbGRzRGVmYXVsdENvbHVtbnNHZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtcyA9PiBbJERlZmF1bHRDb2x1bW5zU2NyZWVuXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgREVGQVVMVENPTFVNTlNDUkVFTgogICAgICAgICAgICAgICAgaWYgIUlzU3RyaW5nV2l0aERhdGEoICREZWZhdWx0Q29sdW1uc1NjcmVlbkNvbmZpZ3skRGVmYXVsdENvbHVtbnNTY3JlZW59LT57JER5bmFtaWNGaWVsZH0gKTsKCiAgICAgICAgICAgICRDb25maWd7JER5bmFtaWNGaWVsZH0tPnskRGVmYXVsdENvbHVtbnNTY3JlZW59ID0gJERlZmF1bHRDb2x1bW5zU2NyZWVuQ29uZmlneyREZWZhdWx0Q29sdW1uc1NjcmVlbn0tPnskRHluYW1pY0ZpZWxkfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICVDb25maWc7Cn0KCj1pdGVtIF9EeW5hbWljRmllbGRzU2NyZWVuQ29uZmlnSW1wb3J0KCkKCmltcG9ydHMgYWxsIGNvbmZpZ3VyZWQgc2NyZWVucyBvZiBvbmUgb3JlIG1vcmUgZHluYW1pYyBmaWVsZHMKCiAgICAlQ29uZmlnID0gewogICAgICAgICdEeW5GaWVsZDEnID0+IHsKICAgICAgICAgICAgJ0FnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAxMDAtQ0lDLVRpY2tldFBlbmRpbmdSZW1pbmRlcicgPT4gJzInLAogICAgICAgICAgICAnRGFzaGJvYXJkQmFja2VuZCMjIzAxMDAtVGlja2V0UGVuZGluZ1JlbWluZGVyJyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnMScsCiAgICAgICAgICAgICdEYXNoYm9hcmRCYWNrZW5kIyMjMDEzMC1UaWNrZXRPcGVuJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICcxJywKICAgICAgICAgICAgJ0Rhc2hib2FyZEJhY2tlbmQjIyMwMTQwLVJ1bm5pbmdUaWNrZXRQcm9jZXNzJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJzEnLAogICAgICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRRdWV1ZSMjI0RlZmF1bHRDb2x1bW5zJyAgICAgICAgICAgICAgICAgICAgICA9PiAnMicsCiAgICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFJlc3BvbnNpYmxlIyMjRHluYW1pY0ZpZWxkJyAgICAgICAgICAgICAgICAgID0+ICcyJywKICAgICAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U2VhcmNoIyMjRGVmYXVsdENvbHVtbnMnICAgICAgICAgICAgICAgICAgICAgPT4gJzInLAogICAgICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRTdGF0dXNWaWV3IyMjRGVmYXVsdENvbHVtbnMnICAgICAgICAgICAgICAgICA9PiAnMicsCiAgICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20jIyNEeW5hbWljRmllbGQnICAgICAgICAgICAgICAgICAgICAgICAgID0+ICcwJywKICAgICAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkN1c3RvbWVyVGlja2V0T3ZlcnZpZXcjIyNEeW5hbWljRmllbGQnICAgICAgICAgICAgICAgICAgPT4gJzInLAogICAgICAgICAgICAnVGlja2V0OjpGcm9udGVuZDo6T3ZlcnZpZXdQcmV2aWV3IyMjRHluYW1pY0ZpZWxkJyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnMicsCiAgICAgICAgfSwKICAgICAgICAnRHluRmllbGQyJyA9PiB7CiAgICAgICAgICAgICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFJlc3BvbnNpYmxlIyMjRHluYW1pY0ZpZWxkJyAgICAgICAgICAgICAgICAgID0+ICcyJywKICAgICAgICAgICAgJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0U2VhcmNoIyMjRGVmYXVsdENvbHVtbnMnICAgICAgICAgICAgICAgICAgICAgPT4gJzInLAogICAgICAgIH0sCiAgICB9OwoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fRHluYW1pY0ZpZWxkc1NjcmVlbkNvbmZpZ0ltcG9ydCggJUNvbmZpZyApOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX0R5bmFtaWNGaWVsZHNTY3JlZW5Db25maWdJbXBvcnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkVmFsaWREeW5hbWljRmllbGRTY3JlZW5MaXN0ID0gJFNlbGYtPl9WYWxpZER5bmFtaWNGaWVsZFNjcmVlbkxpc3RHZXQoKTsKCiAgICBteSAlU2NyZWVuQ29uZmlnOwogICAgbXkgJUNvbHVtblNjcmVlbkNvbmZpZzsKCiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIHNvcnQga2V5cyAleyAkUGFyYW17Q29uZmlnfSB9ICkgewoKICAgICAgICBEWU5BTUlDRklFTERTQ1JFRU46CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRTY3JlZW4gKCBAeyAkVmFsaWREeW5hbWljRmllbGRTY3JlZW5MaXN0LT57RHluYW1pY0ZpZWxkU2NyZWVuc30gfSApIHsKICAgICAgICAgICAgJFNjcmVlbkNvbmZpZ3skRHluYW1pY0ZpZWxkU2NyZWVufS0+eyREeW5hbWljRmllbGR9ID0gJFBhcmFte0NvbmZpZ30tPnskRHluYW1pY0ZpZWxkfS0+eyREeW5hbWljRmllbGRTY3JlZW59OwogICAgICAgIH0KCiAgICAgICAgREVGQVVMVENPTFVNTlNDUkVFTjoKICAgICAgICBmb3IgbXkgJERlZmF1bHRDb2x1bW5zU2NyZWVuICggQHsgJFZhbGlkRHluYW1pY0ZpZWxkU2NyZWVuTGlzdC0+e0RlZmF1bHRDb2x1bW5zU2NyZWVuc30gfSApIHsKICAgICAgICAgICAgJENvbHVtblNjcmVlbkNvbmZpZ3skRGVmYXVsdENvbHVtbnNTY3JlZW59LT57IkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkIn0gPSAkUGFyYW17Q29uZmlnfS0+eyREeW5hbWljRmllbGR9LT57JERlZmF1bHRDb2x1bW5zU2NyZWVufTsKICAgICAgICB9CiAgICB9CgogICAgJFNjcmVlbkNvbmZpZ3tOb0NvbmZpZ1JlYnVpbGR9ID0gMTsKICAgICRTZWxmLT5fRHluYW1pY0ZpZWxkc1NjcmVlbkVuYWJsZSglU2NyZWVuQ29uZmlnKTsKCiAgICAkQ29sdW1uU2NyZWVuQ29uZmlne05vQ29uZmlnUmVidWlsZH0gPSAxOwogICAgJFNlbGYtPl9EZWZhdWx0Q29sdW1uc0VuYWJsZSglQ29sdW1uU2NyZWVuQ29uZmlnKTsKCiAgICAjIHJlbG9hZCB0aGUgWlpaIGZpbGVzCiAgICAjIGdldCBhIG5ldyBjb25maWcgb2JqZWN0IHRvIG1ha2Ugc3VyZSBjb25maWcgaXMgdXBkYXRlZAogICAgJFNlbGYtPl9SZWJ1aWxkQ29uZmlnKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9Qb3N0TWFzdGVyRmlsdGVyQ3JlYXRlSWZOb3RFeGlzdHMoKQoKY3JlYXRlcyBhbGwgcG9zdG1hc3RlciBmaWx0ZXIgdGhhdCBhcmUgbmVjZXNzYXJ5CgogICAgbXkgQEZpbHRlcnMgPSAoCiAgICAgICAgewogICAgICAgICAgICAnTWF0Y2gnID0+IHsKICAgICAgICAgICAgICAgICdBdXRvLVN1Ym1pdHRlZCcgPT4gJzEyMycKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ05hbWUnID0+ICdhc2RmJywKICAgICAgICAgICAgJ05vdCcgPT4gewogICAgICAgICAgICAgICAgJ0F1dG8tU3VibWl0dGVkJyA9PiB1bmRlZgogICAgICAgICAgICB9LAogICAgICAgICAgICAnU2V0JyA9PiB7CiAgICAgICAgICAgICAgICAnWC1PVFJTLUR5bmFtaWNGaWVsZC1ibHViJyA9PiAnMTIzJwogICAgICAgICAgICB9LAogICAgICAgICAgICAnU3RvcEFmdGVyTWF0Y2gnID0+ICcwJwogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRSZXN1bHQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9Qb3N0TWFzdGVyRmlsdGVyQ3JlYXRlSWZOb3RFeGlzdHMoIEBGaWx0ZXJzICk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfUG9zdE1hc3RlckZpbHRlckNyZWF0ZUlmTm90RXhpc3RzIHsKICAgIG15ICggJFNlbGYsIEBEZWZpbml0aW9uICkgPSBAXzsKCiAgICBteSAkUE1GaWx0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UG9zdE1hc3Rlcjo6RmlsdGVyJyk7CgogICAgbXkgQFBvc3RNYXN0ZXJGaWx0ZXJFeGlzdHNOb3Q7CiAgICBteSAlRmlsdGVyTGlzdCA9ICRQTUZpbHRlck9iamVjdC0+RmlsdGVyTGlzdCgpOwoKICAgIEZJTFRFUjoKICAgIGZvciBteSAkTmV3UG9zdE1hc3RlckZpbHRlciAoQERlZmluaXRpb24pIHsKICAgICAgICBuZXh0IEZJTFRFUiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJE5ld1Bvc3RNYXN0ZXJGaWx0ZXIpOwoKICAgICAgICAjIG9ubHkgY3JlYXRlIGlmIG5vdCBleGlzdHMKICAgICAgICBteSAkRmlsdGVyRm91bmQgPSBncmVwIHsgJE5ld1Bvc3RNYXN0ZXJGaWx0ZXItPntOYW1lfSBlcSAkXyB9IHNvcnQga2V5cyAlRmlsdGVyTGlzdDsKICAgICAgICBuZXh0IEZJTFRFUiBpZiAkRmlsdGVyRm91bmQ7CgogICAgICAgIHB1c2ggQFBvc3RNYXN0ZXJGaWx0ZXJFeGlzdHNOb3QsICROZXdQb3N0TWFzdGVyRmlsdGVyOwogICAgfQoKICAgIHJldHVybiAkU2VsZi0+X1Bvc3RNYXN0ZXJGaWx0ZXJDcmVhdGUoQFBvc3RNYXN0ZXJGaWx0ZXJFeGlzdHNOb3QpOwp9Cgo9aXRlbSBfUG9zdE1hc3RlckZpbHRlckNyZWF0ZSgpCgpjcmVhdGVzIGFsbCBwb3N0bWFzdGVyIGZpbHRlciB0aGF0IGFyZSBuZWNlc3NhcnkKCiAgICBteSBARmlsdGVycyA9ICgKICAgICAgICB7CiAgICAgICAgICAgICdNYXRjaCcgPT4gewogICAgICAgICAgICAgICAgJ0F1dG8tU3VibWl0dGVkJyA9PiAnMTIzJwogICAgICAgICAgICB9LAogICAgICAgICAgICAnTmFtZScgPT4gJ2FzZGYnLAogICAgICAgICAgICAnTm90JyA9PiB7CiAgICAgICAgICAgICAgICAnQXV0by1TdWJtaXR0ZWQnID0+IHVuZGVmCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdTZXQnID0+IHsKICAgICAgICAgICAgICAgICdYLU9UUlMtRHluYW1pY0ZpZWxkLWJsdWInID0+ICcxMjMnCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdTdG9wQWZ0ZXJNYXRjaCcgPT4gJzAnCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJFJlc3VsdCA9ICRabnVueUhlbHBlck9iamVjdC0+X1Bvc3RNYXN0ZXJGaWx0ZXJDcmVhdGUoIEBGaWx0ZXJzICk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfUG9zdE1hc3RlckZpbHRlckNyZWF0ZSB7CiAgICBteSAoICRTZWxmLCBARGVmaW5pdGlvbiApID0gQF87CgogICAgbXkgJFBNRmlsdGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBvc3RNYXN0ZXI6OkZpbHRlcicpOwoKICAgIEZJTFRFUjoKICAgIGZvciBteSAkTmV3UG9zdE1hc3RlckZpbHRlciAoQERlZmluaXRpb24pIHsKICAgICAgICBuZXh0IEZJTFRFUiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJE5ld1Bvc3RNYXN0ZXJGaWx0ZXIpOwoKICAgICAgICAjIGdldCBmaWx0ZXIKICAgICAgICBteSAlRmlsdGVyID0gJXskTmV3UG9zdE1hc3RlckZpbHRlcn07CgogICAgICAgIG15IEBDb252ZXJ0U3RydWN0dXJlS2V5cyA9IHF3KE1hdGNoIE5vdCBTZXQpOwoKICAgICAgICBLRVk6CiAgICAgICAgZm9yIG15ICRDb252ZXJ0U3RydWN0dXJlS2V5IChAQ29udmVydFN0cnVjdHVyZUtleXMpIHsKCiAgICAgICAgICAgIG15ICRIYXNoUmVmID0gJEZpbHRlcnskQ29udmVydFN0cnVjdHVyZUtleX07CiAgICAgICAgICAgIG5leHQgS0VZIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkSGFzaFJlZik7CgogICAgICAgICAgICBteSBATmV3U3RydWN0dXJlOwogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0tleSAoIHNvcnQga2V5cyAleyRIYXNoUmVmfSApIHsKICAgICAgICAgICAgICAgIG15ICRDb25maWdWYWx1ZSA9ICRIYXNoUmVmLT57JENvbmZpZ0tleX07CgogICAgICAgICAgICAgICAgcHVzaCgKICAgICAgICAgICAgICAgICAgICBATmV3U3RydWN0dXJlLAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJENvbmZpZ0tleSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ1ZhbHVlLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRGaWx0ZXJ7JENvbnZlcnRTdHJ1Y3R1cmVLZXl9ID0gXEBOZXdTdHJ1Y3R1cmU7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSBmaXJzdCAoYmVjYXVzZSBubyB1cGRhdGUgZnVuY3Rpb24gZXhpc3RzKQogICAgICAgICRQTUZpbHRlck9iamVjdC0+RmlsdGVyRGVsZXRlKCVGaWx0ZXIpOwoKICAgICAgICAjIGFkZCBmaWx0ZXIKICAgICAgICAkUE1GaWx0ZXJPYmplY3QtPkZpbHRlckFkZCglRmlsdGVyKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX1Bvc3RNYXN0ZXJGaWx0ZXJDb25maWdFeHBvcnQoKQoKZXhwb3J0cyBjb25maWd1cmF0aW9uIG9mIGFsbCBwb3N0bWFzdGVyIGZpbHRlcgoKICAgIG15ICRDb25maWdzID0gJFpudW55SGVscGVyT2JqZWN0LT5fUG9zdE1hc3RlckZpbHRlckNvbmZpZ0V4cG9ydCgKICAgICAgICBGb3JtYXQgPT4gJ3ltbHxwZXJsJywgIyBkZWZhdWx0cyB0byBwZXJsCiAgICApOwoKPWN1dAoKc3ViIF9Qb3N0TWFzdGVyRmlsdGVyQ29uZmlnRXhwb3J0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJE1haW5PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKICAgIG15ICRQTUZpbHRlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQb3N0TWFzdGVyOjpGaWx0ZXInKTsKICAgIG15ICRZQU1MT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgbXkgJEZvcm1hdCA9IGxjKCAkUGFyYW17Rm9ybWF0fSAvLyAncGVybCcgKTsKICAgIGlmICggJEZvcm1hdCBuZSAneW1sJyAmJiAkRm9ybWF0IG5lICdwZXJsJyApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHZhbHVlICRGb3JtYXQgZm9yIHBhcmFtZXRlciBGb3JtYXQuIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSBARmlsdGVyczsKICAgIG15ICVGaWx0ZXJMaXN0ID0gJFBNRmlsdGVyT2JqZWN0LT5GaWx0ZXJMaXN0KCk7CiAgICBmb3IgbXkgJEZpbHRlck5hbWUgKCBzb3J0IGtleXMgJUZpbHRlckxpc3QgKSB7CiAgICAgICAgbXkgJURhdGEgPSAkUE1GaWx0ZXJPYmplY3QtPkZpbHRlckdldCgKICAgICAgICAgICAgTmFtZSA9PiAkRmlsdGVyTmFtZSwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBGaWx0ZXJzLCBcJURhdGE7CiAgICB9CgogICAgbXkgJENvbmZpZ1N0cmluZyA9ICcnOwogICAgaWYgKCAkRm9ybWF0IGVxICdwZXJsJyApIHsKICAgICAgICAkQ29uZmlnU3RyaW5nID0gJE1haW5PYmplY3QtPkR1bXAoIFxARmlsdGVycyApOwogICAgfQogICAgZWxzaWYgKCAkRm9ybWF0IGVxICd5bWwnICkgewogICAgICAgICRDb25maWdTdHJpbmcgPSAkWUFNTE9iamVjdC0+RHVtcCggRGF0YSA9PiBcQEZpbHRlcnMgKTsKICAgIH0KCiAgICByZXR1cm4gJENvbmZpZ1N0cmluZzsKfQoKIyB0b2RvIHRoaXMgc2hvdWxkIGJlIG1lcmdlZCB0bwojICdfUG9zdE1hc3RlckZpbHRlckNyZWF0ZUlmTm90RXhpc3RzJyBhbmQgJ19Qb3N0TWFzdGVyRmlsdGVyQ3JlYXRlJwojIHdoaWxlIE9UUlMgNyBwb3J0aW5nCgo9aXRlbSBfUG9zdE1hc3RlckZpbHRlckNvbmZpZ0ltcG9ydCgpCgppbXBvcnRzIGNvbmZpZ3VyYXRpb24gb2YgcG9zdG1hc3RlciBmaWx0ZXIgdmlhIHltbAoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fUG9zdE1hc3RlckZpbHRlckNvbmZpZ0ltcG9ydCgKICAgICAgICBGaWx0ZXIgPT4gJEZpbHRlciwKICAgICAgICBGb3JtYXQgPT4gJ3ltbCcsICAgICAgICAjIG9wdGlvbmFsIC0gZGVmYXVsdAogICAgKTsKCiAgICAkRmlsdGVyID0gIi0tLQotIE1hdGNoOgogIC0gS2V5OiBCb2R5CiAgICBWYWx1ZTogJzEyMycKICBOYW1lOiAnUG9zdG1hc3RlckZpbHRlcicKICBOb3Q6CiAgLSBLZXk6IEJvZHkKICAgIFZhbHVlOiB+CiAgU2V0OgogIC0gS2V5OiBYLU9UUlMtRHluYW1pY0ZpZWxkLXRlc3QKICAgIFZhbHVlOiAnMTIzJwogIFN0b3BBZnRlck1hdGNoOiAwCiI7CgoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX1Bvc3RNYXN0ZXJGaWx0ZXJDb25maWdJbXBvcnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgbXkgJEZvcm1hdCA9IGxjKCAkUGFyYW17Rm9ybWF0fSAvLyAneW1sJyApOwoKICAgIG15ICRGaWx0ZXI7CiAgICBpZiAoICRGb3JtYXQgZXEgJ3ltbCcgKSB7CiAgICAgICAgJEZpbHRlciA9ICRZQU1MT2JqZWN0LT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICR7ICRQYXJhbXtGaWx0ZXJ9IH0sCiAgICAgICAgKTsKICAgIH0KICAgIHJldHVybiAkU2VsZi0+X1Bvc3RNYXN0ZXJGaWx0ZXJDcmVhdGVJZk5vdEV4aXN0cyggQHskRmlsdGVyfSApOwp9Cgo9aXRlbSBfR3JvdXBDcmVhdGVJZk5vdEV4aXN0cygpCgpjcmVhdGVzIGdyb3VwIGlmIG5vdCBleGlzdHMKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X0dyb3VwQ3JlYXRlSWZOb3RFeGlzdHMoCiAgICAgICAgTmFtZSA9PiAnU29tZSBHcm91cCBOYW1lJywKICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfR3JvdXBDcmVhdGVJZk5vdEV4aXN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTmFtZSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUdyb3Vwc1JldmVyc2VkID0gJEdyb3VwT2JqZWN0LT5Hcm91cExpc3QoCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICk7CiAgICAlR3JvdXBzUmV2ZXJzZWQgPSByZXZlcnNlICVHcm91cHNSZXZlcnNlZDsKCiAgICBteSAkSXRlbUlEID0gJFNlbGYtPl9JdGVtUmV2ZXJzZUxpc3RHZXQoICRQYXJhbXtOYW1lfSwgJUdyb3Vwc1JldmVyc2VkICk7CiAgICByZXR1cm4gJEl0ZW1JRCBpZiAkSXRlbUlEOwoKICAgIHJldHVybiAkR3JvdXBPYmplY3QtPkdyb3VwQWRkKAogICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgJVBhcmFtLAogICAgKTsKfQoKPWl0ZW0gX1JvbGVDcmVhdGVJZk5vdEV4aXN0cygpCgpjcmVhdGVzIHJvbGUgaWYgbm90IGV4aXN0cwoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fUm9sZUNyZWF0ZUlmTm90RXhpc3RzKAogICAgICAgIE5hbWUgPT4gJ1NvbWUgUm9sZSBOYW1lJywKICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfUm9sZUNyZWF0ZUlmTm90RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhOYW1lKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAlUm9sZXNSZXZlcnNlZCA9ICRHcm91cE9iamVjdC0+Um9sZUxpc3QoCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICk7CiAgICAlUm9sZXNSZXZlcnNlZCA9IHJldmVyc2UgJVJvbGVzUmV2ZXJzZWQ7CgogICAgbXkgJEl0ZW1JRCA9ICRTZWxmLT5fSXRlbVJldmVyc2VMaXN0R2V0KCAkUGFyYW17TmFtZX0sICVSb2xlc1JldmVyc2VkICk7CiAgICByZXR1cm4gJEl0ZW1JRCBpZiAkSXRlbUlEOwoKICAgIHJldHVybiAkR3JvdXBPYmplY3QtPlJvbGVBZGQoCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAlUGFyYW0sCiAgICApOwp9Cgo9aXRlbSBfVHlwZUNyZWF0ZUlmTm90RXhpc3RzKCkKCmNyZWF0ZXMgVHlwZSBpZiBub3QgZXhpc3RzCgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9UeXBlQ3JlYXRlSWZOb3RFeGlzdHMoCiAgICAgICAgTmFtZSA9PiAnU29tZSBUeXBlIE5hbWUnLAogICAgKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9UeXBlQ3JlYXRlSWZOb3RFeGlzdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRUeXBlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KE5hbWUpKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJyROZWVkZWQnIGlzIG5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVUeXBlc1JldmVyc2VkID0gJFR5cGVPYmplY3QtPlR5cGVMaXN0KAogICAgICAgIFZhbGlkID0+IDAsCiAgICApOwogICAgJVR5cGVzUmV2ZXJzZWQgPSByZXZlcnNlICVUeXBlc1JldmVyc2VkOwoKICAgIG15ICRJdGVtSUQgPSAkU2VsZi0+X0l0ZW1SZXZlcnNlTGlzdEdldCggJFBhcmFte05hbWV9LCAlVHlwZXNSZXZlcnNlZCApOwogICAgcmV0dXJuICRJdGVtSUQgaWYgJEl0ZW1JRDsKCiAgICByZXR1cm4gJFR5cGVPYmplY3QtPlR5cGVBZGQoCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAlUGFyYW0sCiAgICApOwp9Cgo9aXRlbSBfUHJpb3JpdHlDcmVhdGVJZk5vdEV4aXN0cygpCgpjcmVhdGVzIFByaW9yaXR5IGlmIG5vdCBleGlzdHMKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1ByaW9yaXR5Q3JlYXRlSWZOb3RFeGlzdHMoCiAgICAgICAgTmFtZSA9PiAnU29tZSBQcmlvcml0eSBOYW1lJywKICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfUHJpb3JpdHlDcmVhdGVJZk5vdEV4aXN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRQcmlvcml0eU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQcmlvcml0eScpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTmFtZSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJVByaW9yaXR5c1JldmVyc2VkID0gJFByaW9yaXR5T2JqZWN0LT5Qcmlvcml0eUxpc3QoCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICk7CiAgICAlUHJpb3JpdHlzUmV2ZXJzZWQgPSByZXZlcnNlICVQcmlvcml0eXNSZXZlcnNlZDsKCiAgICBteSAkSXRlbUlEID0gJFNlbGYtPl9JdGVtUmV2ZXJzZUxpc3RHZXQoICRQYXJhbXtOYW1lfSwgJVByaW9yaXR5c1JldmVyc2VkICk7CiAgICByZXR1cm4gJEl0ZW1JRCBpZiAkSXRlbUlEOwoKICAgIHJldHVybiAkUHJpb3JpdHlPYmplY3QtPlByaW9yaXR5QWRkKAogICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgJVBhcmFtLAogICAgKTsKfQoKPWl0ZW0gX1N0YXRlQ3JlYXRlSWZOb3RFeGlzdHMoKQoKY3JlYXRlcyBTdGF0ZSBpZiBub3QgZXhpc3RzCgogICAgIyBlLmcuIG5ld3xvcGVufGNsb3NlZHxwZW5kaW5nIHJlbWluZGVyfHBlbmRpbmcgYXV0b3xyZW1vdmVkfG1lcmdlZAogICAgbXkgJFN0YXRlVHlwZUlEID0gJFN0YXRlT2JqZWN0LT5TdGF0ZVR5cGVMb29rdXAoIFN0YXRlVHlwZSA9PiAncGVuZGluZyBhdXRvJyApOwoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fU3RhdGVDcmVhdGVJZk5vdEV4aXN0cygKICAgICAgICBOYW1lICAgPT4gJ1NvbWUgU3RhdGUgTmFtZScsCiAgICAgICAgVHlwZUlEID0+ICRTdGF0ZVR5cGVJRCwKICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfU3RhdGVDcmVhdGVJZk5vdEV4aXN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRTdGF0ZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0ZScpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTmFtZSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJVN0YXRlc1JldmVyc2VkID0gJFN0YXRlT2JqZWN0LT5TdGF0ZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgVXNlcklEID0+IDEKICAgICk7CiAgICAlU3RhdGVzUmV2ZXJzZWQgPSByZXZlcnNlICVTdGF0ZXNSZXZlcnNlZDsKCiAgICBteSAkSXRlbUlEID0gJFNlbGYtPl9JdGVtUmV2ZXJzZUxpc3RHZXQoICRQYXJhbXtOYW1lfSwgJVN0YXRlc1JldmVyc2VkICk7CiAgICByZXR1cm4gJEl0ZW1JRCBpZiAkSXRlbUlEOwoKICAgIHJldHVybiAkU3RhdGVPYmplY3QtPlN0YXRlQWRkKAogICAgICAgICVQYXJhbSwKICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKfQoKPWl0ZW0gX1N0YXRlRGlzYWJsZSgpCgpkaXNhYmxlcyBhIGdpdmVuIHN0YXRlCgogICAgbXkgQFN0YXRlcyA9ICgKICAgICAgICAnU3RhdGUxJywKICAgICAgICAnU3RhdGUyJywKICAgICk7CgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9TdGF0ZURpc2FibGUoQFN0YXRlcyk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfU3RhdGVEaXNhYmxlIHsKICAgIG15ICggJFNlbGYsIEBTdGF0ZXMgKSA9IEBfOwoKICAgIG15ICRWYWxpZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwogICAgbXkgJFN0YXRlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRlJyk7CgogICAgcmV0dXJuIDEgaWYgIUBTdGF0ZXM7CgogICAgI2dldCBjdXJyZW50IGludmFsaWQgaWQKICAgIG15ICRJbnZhbGlkSUQgPSAkVmFsaWRPYmplY3QtPlZhbGlkTG9va3VwKAogICAgICAgIFZhbGlkID0+ICdpbnZhbGlkJywKICAgICk7CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKICAgICMgZGlzYWJsZSB0aGUgc3RhdGVzCiAgICBTVEFURToKICAgIGZvciBteSAkU3RhdGVOYW1lIChAU3RhdGVzKSB7CgogICAgICAgIG15ICVTdGF0ZSA9ICRTdGF0ZU9iamVjdC0+U3RhdGVHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJFN0YXRlTmFtZSwKICAgICAgICApOwogICAgICAgIG5leHQgU1RBVEUgaWYgISVTdGF0ZTsKCiAgICAgICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkU3RhdGVPYmplY3QtPlN0YXRlVXBkYXRlKAogICAgICAgICAgICAlU3RhdGUsCiAgICAgICAgICAgIFZhbGlkSUQgPT4gJEludmFsaWRJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgICAgICAkU3VjY2VzcyA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkU3VjY2VzczsKfQoKPWl0ZW0gX1N0YXRlVHlwZUNyZWF0ZUlmTm90RXhpc3RzKCkKCmNyZWF0ZXMgc3RhdGUgdHlwZXMgaWYgbm90IGV4aXN0cwoKICAgIG15ICRTdGF0ZVR5cGVJRCA9ICRabnVueUhlbHBlck9iamVjdC0+X1N0YXRlVHlwZUNyZWF0ZUlmTm90RXhpc3RzKAogICAgICAgIE5hbWUgICAgPT4gJ05ldyBTdGF0ZVR5cGUnLAogICAgICAgIENvbW1lbnQgPT4gJ3NvbWUgY29tbWVudCcsCiAgICAgICAgVXNlcklEICA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIF9TdGF0ZVR5cGVDcmVhdGVJZk5vdEV4aXN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkREJPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhOYW1lIFVzZXJJRCkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBpZiBleGlzdHMKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAnU0VMRUNUIG5hbWUgRlJPTSB0aWNrZXRfc3RhdGVfdHlwZSBXSEVSRSBuYW1lID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte05hbWV9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CiAgICBteSAkRXhpc3RzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEV4aXN0cyA9IDE7CiAgICB9CiAgICByZXR1cm4gMSBpZiAkRXhpc3RzOwoKICAgICMgY3JlYXRlIG5ldwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gdGlja2V0X3N0YXRlX3R5cGUgKG5hbWUsIGNvbW1lbnRzLCcKICAgICAgICAgICAgLiAnIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnksIGNoYW5nZV90aW1lLCBjaGFuZ2VfYnkpJwogICAgICAgICAgICAuICcgVkFMVUVTICg/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtOYW1lfSwgICBcJFBhcmFte0NvbW1lbnR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGdldCBuZXcgc3RhdGV0eXBlIGlkCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAnU0VMRUNUIGlkIEZST00gdGlja2V0X3N0YXRlX3R5cGUgV0hFUkUgbmFtZSA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtOYW1lfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJElEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJElEID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gaWYgISRJRDsKICAgIHJldHVybiAkSUQ7Cn0KCj1pdGVtIF9TZXJ2aWNlQ3JlYXRlSWZOb3RFeGlzdHMoKQoKY3JlYXRlcyBTZXJ2aWNlIGlmIG5vdCBleGlzdHMKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1NlcnZpY2VDcmVhdGVJZk5vdEV4aXN0cygKICAgICAgICBOYW1lID0+ICdTb21lIFNlcnZpY2VOYW1lJywKICAgICAgICAlSVRTTVBhcmFtcywgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsIHBhcmFtcyBmb3IgQ3JpdGljYWxpdHkgb3IgVHlwZUlEIGlmIElUU00gaXMgaW5zdGFsbGVkCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX1NlcnZpY2VDcmVhdGVJZk5vdEV4aXN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFNlcnZpY2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTmFtZSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJE5hbWUgPSAkUGFyYW17TmFtZX07CgogICAgIyBJVFNNUGFyYW1zCiAgICAkUGFyYW17VHlwZUlEfSAgICAgIHx8PSAnMic7CiAgICAkUGFyYW17Q3JpdGljYWxpdHl9IHx8PSAnMyBub3JtYWwnOwoKICAgIG15ICVTZXJ2aWNlUmV2ZXJzZWQgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgVXNlcklEID0+IDEKICAgICk7CiAgICAlU2VydmljZVJldmVyc2VkID0gcmV2ZXJzZSAlU2VydmljZVJldmVyc2VkOwoKICAgIG15ICRJdGVtSUQgPSAkU2VsZi0+X0l0ZW1SZXZlcnNlTGlzdEdldCggJE5hbWUsICVTZXJ2aWNlUmV2ZXJzZWQgKTsKICAgIHJldHVybiAkSXRlbUlEIGlmICRJdGVtSUQ7CgogICAgIyBzcGxpdCBzdHJpbmcgdG8gY2hlY2sgZm9yIHBvc3NpYmxlIHN1YiBzZXJ2aWNlcwogICAgbXkgQFNlcnZpY2VBcnJheSA9IHNwbGl0IC86Oi8sICROYW1lOwoKICAgICMgY3JlYXRlIHNlcnZpY2Ugd2l0aCBwYXJlbnQKICAgIG15ICRDb21wbGV0ZVNlcnZpY2VOYW1lID0gJyc7CiAgICBteSAkU2VydmljZUlEOwoKICAgIFNFUlZJQ0U6CiAgICBmb3IgbXkgJFNlcnZpY2VOYW1lIChAU2VydmljZUFycmF5KSB7CgogICAgICAgIG15ICRQYXJlbnRJRDsKICAgICAgICBpZiAoJENvbXBsZXRlU2VydmljZU5hbWUpIHsKCiAgICAgICAgICAgICRQYXJlbnRJRCA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlTG9va3VwKAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICRDb21wbGV0ZVNlcnZpY2VOYW1lLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkUGFyZW50SUQgKSB7CgogICAgICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkVycm9yIHdoaWxlIGdldHRpbmcgU2VydmljZUlEIGZvciBwYXJlbnQgc2VydmljZSAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIickQ29tcGxldGVTZXJ2aWNlTmFtZScgZm9yIG5ldyBzZXJ2aWNlICciIC4gJE5hbWUgLiAiJy4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJENvbXBsZXRlU2VydmljZU5hbWUgLj0gJzo6JzsKICAgICAgICB9CgogICAgICAgICRDb21wbGV0ZVNlcnZpY2VOYW1lIC49ICRTZXJ2aWNlTmFtZTsKCiAgICAgICAgbXkgJEl0ZW1JRCA9ICRTZWxmLT5fSXRlbVJldmVyc2VMaXN0R2V0KCAkQ29tcGxldGVTZXJ2aWNlTmFtZSwgJVNlcnZpY2VSZXZlcnNlZCApOwogICAgICAgIGlmICgkSXRlbUlEKSB7CiAgICAgICAgICAgICRTZXJ2aWNlSUQgPSAkSXRlbUlEOwogICAgICAgICAgICBuZXh0IFNFUlZJQ0U7CiAgICAgICAgfQoKICAgICAgICAkU2VydmljZUlEID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VBZGQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgTmFtZSAgICAgPT4gJFNlcnZpY2VOYW1lLAogICAgICAgICAgICBQYXJlbnRJRCA9PiAkUGFyZW50SUQsCiAgICAgICAgICAgIFZhbGlkSUQgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFNlcnZpY2VJRCApIHsKCiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb3Igd2hpbGUgYWRkaW5nIG5ldyBzZXJ2aWNlICckU2VydmljZU5hbWUnICgkUGFyZW50SUQpLiIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICVTZXJ2aWNlUmV2ZXJzZWQgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUxpc3QoCiAgICAgICAgICAgIFZhbGlkICA9PiAwLAogICAgICAgICAgICBVc2VySUQgPT4gMQogICAgICAgICk7CiAgICAgICAgJVNlcnZpY2VSZXZlcnNlZCA9IHJldmVyc2UgJVNlcnZpY2VSZXZlcnNlZDsKICAgIH0KCiAgICByZXR1cm4gJFNlcnZpY2VJRDsKfQoKPWl0ZW0gX1NMQUNyZWF0ZUlmTm90RXhpc3RzKCkKCmNyZWF0ZXMgU0xBIGlmIG5vdCBleGlzdHMKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1NMQUNyZWF0ZUlmTm90RXhpc3RzKAogICAgICAgIE5hbWUgPT4gJ1NvbWUgU2VydmljZU5hbWUnLAogICAgICAgIFNlcnZpY2VJRHMgICAgICAgICAgPT4gWyAxLCA1LCA3IF0sICAjIChvcHRpb25hbCkKICAgICAgICBGaXJzdFJlc3BvbnNlVGltZSAgID0+IDEyMCwgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRmlyc3RSZXNwb25zZU5vdGlmeSA9PiA2MCwgICAgICAgICAgICMgKG9wdGlvbmFsKSBub3RpZnkgYWdlbnQgaWYgZmlyc3QgcmVzcG9uc2UgZXNjYWxhdGlvbiBpcyA2MCUgcmVhY2hlZAogICAgICAgIFVwZGF0ZVRpbWUgICAgICAgICAgPT4gMTgwLCAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBVcGRhdGVOb3RpZnkgICAgICAgID0+IDgwLCAgICAgICAgICAgIyAob3B0aW9uYWwpIG5vdGlmeSBhZ2VudCBpZiB1cGRhdGUgZXNjYWxhdGlvbiBpcyA4MCUgcmVhY2hlZAogICAgICAgIFNvbHV0aW9uVGltZSAgICAgICAgPT4gNTgwLCAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBTb2x1dGlvbk5vdGlmeSAgICAgID0+IDgwLCAgICAgICAgICAgIyAob3B0aW9uYWwpIG5vdGlmeSBhZ2VudCBpZiBzb2x1dGlvbiBlc2NhbGF0aW9uIGlzIDgwJSByZWFjaGVkCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX1NMQUNyZWF0ZUlmTm90RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFNMQU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNMQScpOwogICAgbXkgJFZhbGlkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhOYW1lKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIElUU01QYXJhbXMKICAgICRQYXJhbXtUeXBlSUR9ICAgICAgfHw9ICcyJzsKICAgICRQYXJhbXtDcml0aWNhbGl0eX0gfHw9ICczIG5vcm1hbCc7CgogICAgbXkgJVNMQVJldmVyc2VkID0gJFNMQU9iamVjdC0+U0xBTGlzdCgKICAgICAgICBVc2VySUQgPT4gMQogICAgKTsKICAgICVTTEFSZXZlcnNlZCA9IHJldmVyc2UgJVNMQVJldmVyc2VkOwoKICAgIG15ICRJdGVtSUQgPSAkU2VsZi0+X0l0ZW1SZXZlcnNlTGlzdEdldCggJFBhcmFte05hbWV9LCAlU0xBUmV2ZXJzZWQgKTsKICAgIHJldHVybiAkSXRlbUlEIGlmICRJdGVtSUQ7CgogICAgbXkgJFZhbGlkSUQgPSAkVmFsaWRPYmplY3QtPlZhbGlkTG9va3VwKAogICAgICAgIFZhbGlkID0+ICd2YWxpZCcsCiAgICApOwogICAgbXkgJFNMQUlEID0gJFNMQU9iamVjdC0+U0xBQWRkKAogICAgICAgICVQYXJhbSwKICAgICAgICBWYWxpZElEID0+ICRWYWxpZElELAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuICRTTEFJRDsKfQoKPWl0ZW0gX1VzZXJDcmVhdGVJZk5vdEV4aXN0cygpCgpjcmVhdGVzIHVzZXIgaWYgbm90IGV4aXN0cwoKICAgIG15ICRVc2VySUQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9Vc2VyQ3JlYXRlSWZOb3RFeGlzdHMoCiAgICAgICAgVXNlckZpcnN0bmFtZSA9PiAnTWFuZnJlZCcsCiAgICAgICAgVXNlckxhc3RuYW1lICA9PiAnSHViZXInLAogICAgICAgIFVzZXJMb2dpbiAgICAgPT4gJ21odWJlcicsCiAgICAgICAgVXNlclB3ICAgICAgICA9PiAnc29tZS1wYXNzJywgIyBub3QgcmVxdWlyZWQKICAgICAgICBVc2VyRW1haWwgICAgID0+ICdlbWFpbEBleGFtcGxlLmNvbScsCiAgICAgICAgVXNlck1vYmlsZSAgICA9PiAnMTIzNDU2Nzg5MCcsICMgbm90IHJlcXVpcmVkCiAgICAgICAgVmFsaWRJRCAgICAgICA9PiAxLAogICAgICAgIENoYW5nZVVzZXJJRCAgPT4gMTIzLAogICAgKTsKClJldHVybnM6CgogICAgbXkgJFVzZXIgPSAxMjM7Cgo9Y3V0CgpzdWIgX1VzZXJDcmVhdGVJZk5vdEV4aXN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRVc2VyT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CiAgICBteSAkVmFsaWRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KFVzZXJMb2dpbikpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJVVzZXJMaXN0UmV2ZXJzZWQgPSAkVXNlck9iamVjdC0+VXNlckxpc3QoCiAgICAgICAgVHlwZSAgID0+ICdTaG9ydCcsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgJVVzZXJMaXN0UmV2ZXJzZWQgPSByZXZlcnNlICVVc2VyTGlzdFJldmVyc2VkOwoKICAgIG15ICRJdGVtSUQgPSAkU2VsZi0+X0l0ZW1SZXZlcnNlTGlzdEdldCggJFBhcmFte1VzZXJMb2dpbn0sICVVc2VyTGlzdFJldmVyc2VkICk7CiAgICByZXR1cm4gJEl0ZW1JRCBpZiAkSXRlbUlEOwoKICAgIG15ICRWYWxpZElEID0gJFZhbGlkT2JqZWN0LT5WYWxpZExvb2t1cCgKICAgICAgICBWYWxpZCA9PiAndmFsaWQnLAogICAgKTsKICAgIG15ICRVc2VySUQgPSAkVXNlck9iamVjdC0+VXNlckFkZCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgVmFsaWRJRCA9PiAkVmFsaWRJRCwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKICAgIHJldHVybiAkVXNlcklEOwp9Cgo9aXRlbSBfQ3VzdG9tZXJVc2VyQ3JlYXRlSWZOb3RFeGlzdHMoKQoKY3JlYXRlcyBDdXN0b21lclVzZXIgaWYgbm90IGV4aXN0cwoKICAgIG15ICRDdXN0b21lclVzZXJMb2dpbiA9ICRabnVueUhlbHBlck9iamVjdC0+X0N1c3RvbWVyVXNlckNyZWF0ZUlmTm90RXhpc3RzKAogICAgICAgIFNvdXJjZSAgICAgICAgID0+ICdDdXN0b21lclVzZXInLCAjIEN1c3RvbWVyVXNlciBzb3VyY2UgY29uZmlnCiAgICAgICAgVXNlckZpcnN0bmFtZSAgPT4gJ01hbmZyZWQnLAogICAgICAgIFVzZXJMYXN0bmFtZSAgID0+ICdIdWJlcicsCiAgICAgICAgVXNlckN1c3RvbWVySUQgPT4gJ0ExMjQnLAogICAgICAgIFVzZXJMb2dpbiAgICAgID0+ICdtaHViZXInLAogICAgICAgIFVzZXJQYXNzd29yZCAgID0+ICdzb21lLXBhc3MnLCAjIG5vdCByZXF1aXJlZAogICAgICAgIFVzZXJFbWFpbCAgICAgID0+ICdlbWFpbEBleGFtcGxlLmNvbScsCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkQ3VzdG9tZXJVc2VyTG9naW4gPSAnbWh1YmVyJzsKCj1jdXQKCnN1YiBfQ3VzdG9tZXJVc2VyQ3JlYXRlSWZOb3RFeGlzdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJEN1c3RvbWVyVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKICAgIG15ICRWYWxpZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KFVzZXJMb2dpbikpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUN1c3RvbWVyVXNlclJldmVyc2VkVmFsaWQgPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lclNlYXJjaCgKICAgICAgICBVc2VyTG9naW4gPT4gJFBhcmFte1VzZXJMb2dpbn0sCiAgICAgICAgVmFsaWQgICAgID0+IDEsCiAgICApOwogICAgbXkgJUN1c3RvbWVyVXNlclJldmVyc2VkSW5WYWxpZCA9ICRDdXN0b21lclVzZXJPYmplY3QtPkN1c3RvbWVyU2VhcmNoKAogICAgICAgIFVzZXJMb2dpbiA9PiAkUGFyYW17VXNlckxvZ2lufSwKICAgICAgICBWYWxpZCAgICAgPT4gMCwKICAgICk7CiAgICBteSAlQ3VzdG9tZXJVc2VyUmV2ZXJzZWQgPSAoCiAgICAgICAgJUN1c3RvbWVyVXNlclJldmVyc2VkVmFsaWQsCiAgICAgICAgJUN1c3RvbWVyVXNlclJldmVyc2VkSW5WYWxpZCwKICAgICk7CgogICAgIyBzaGl0dHkgc29sdXRpb24gZm9yIHRoZSBjaGVjay4KICAgICMgc29tZWJvZHkgc2hvdWxkIGZpeCB0aGlzIGFuZCB1c2UgdGhlIEN1c3RvbWVyS2V5IGluc3RlYWQgZm9yIHRoZSBjaGVjay4KICAgIG15ICRJdGVtSUQgPSAkU2VsZi0+X0l0ZW1SZXZlcnNlTGlzdEdldCggJFBhcmFte1VzZXJMb2dpbn0sICVDdXN0b21lclVzZXJSZXZlcnNlZCApOwogICAgcmV0dXJuICRQYXJhbXtVc2VyTG9naW59IGlmICRJdGVtSUQ7CgogICAgbXkgJFZhbGlkSUQgPSAkVmFsaWRPYmplY3QtPlZhbGlkTG9va3VwKAogICAgICAgIFZhbGlkID0+ICd2YWxpZCcsCiAgICApOwogICAgbXkgJEN1c3RvbWVyVXNlcklEID0gJEN1c3RvbWVyVXNlck9iamVjdC0+Q3VzdG9tZXJVc2VyQWRkKAogICAgICAgICVQYXJhbSwKICAgICAgICBWYWxpZElEID0+ICRWYWxpZElELAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuICRDdXN0b21lclVzZXJJRDsKfQoKPWl0ZW0gX1F1ZXVlQ3JlYXRlSWZOb3RFeGlzdHMoKQoKY3JlYXRlcyBRdWV1ZSBpZiBub3QgZXhpc3RzCgogICAgbXkgJFF1ZXVlSUQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9RdWV1ZUNyZWF0ZUlmTm90RXhpc3RzKAogICAgICAgIE5hbWUgICAgPT4gJ1NvbWUgUXVldWUgTmFtZScsCiAgICAgICAgR3JvdXBJRCA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgbXkgJFF1ZXVlSUQgPSAxMjM7Cgo9Y3V0CgpzdWIgX1F1ZXVlQ3JlYXRlSWZOb3RFeGlzdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkUXVldWVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KE5hbWUgR3JvdXBJRCkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJE5hbWUgPSAkUGFyYW17TmFtZX07CgogICAgbXkgJVF1ZXVlUmV2ZXJzZWQgPSAkUXVldWVPYmplY3QtPlF1ZXVlTGlzdCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICBWYWxpZCAgPT4gMCwKICAgICk7CiAgICAlUXVldWVSZXZlcnNlZCA9IHJldmVyc2UgJVF1ZXVlUmV2ZXJzZWQ7CgogICAgbXkgJEl0ZW1JRCA9ICRTZWxmLT5fSXRlbVJldmVyc2VMaXN0R2V0KCAkTmFtZSwgJVF1ZXVlUmV2ZXJzZWQgKTsKICAgIHJldHVybiAkSXRlbUlEIGlmICRJdGVtSUQ7CgogICAgIyBzcGxpdCBzdHJpbmcgdG8gY2hlY2sgZm9yIHBvc3NpYmxlIHN1YiBRdWV1ZXMKICAgIG15IEBRdWV1ZUFycmF5ID0gc3BsaXQgLzo6LywgJE5hbWU7CgogICAgIyBjcmVhdGUgUXVldWUgd2l0aCBwYXJlbnQKICAgIG15ICRDb21wbGV0ZVF1ZXVlTmFtZSA9ICcnOwogICAgbXkgJFF1ZXVlSUQ7CgogICAgUVVFVUU6CiAgICBmb3IgbXkgJFF1ZXVlTmFtZSAoQFF1ZXVlQXJyYXkpIHsKCiAgICAgICAgaWYgKCRDb21wbGV0ZVF1ZXVlTmFtZSkgewogICAgICAgICAgICAkQ29tcGxldGVRdWV1ZU5hbWUgLj0gJzo6JzsKICAgICAgICB9CgogICAgICAgICRDb21wbGV0ZVF1ZXVlTmFtZSAuPSAkUXVldWVOYW1lOwoKICAgICAgICBteSAkSXRlbUlEID0gJFNlbGYtPl9JdGVtUmV2ZXJzZUxpc3RHZXQoICRDb21wbGV0ZVF1ZXVlTmFtZSwgJVF1ZXVlUmV2ZXJzZWQgKTsKICAgICAgICBpZiAoJEl0ZW1JRCkgewogICAgICAgICAgICAkUXVldWVJRCA9ICRJdGVtSUQ7CiAgICAgICAgICAgIG5leHQgUVVFVUU7CiAgICAgICAgfQoKICAgICAgICAkUXVldWVJRCA9ICRRdWV1ZU9iamVjdC0+UXVldWVBZGQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkQ29tcGxldGVRdWV1ZU5hbWUsCiAgICAgICAgICAgIFBhcmVudFF1ZXVlSUQgPT4gJFF1ZXVlSUQsCiAgICAgICAgICAgIFZhbGlkSUQgICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRRdWV1ZUlEICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkVycm9yIHdoaWxlIGFkZGluZyBuZXcgUXVldWUgJyRRdWV1ZU5hbWUnICgkUXVldWVJRCkuIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJVF1ZXVlUmV2ZXJzZWQgPSAkUXVldWVPYmplY3QtPlF1ZXVlTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgICAgICAlUXVldWVSZXZlcnNlZCA9IHJldmVyc2UgJVF1ZXVlUmV2ZXJzZWQ7CiAgICB9CgogICAgcmV0dXJuICRRdWV1ZUlEOwp9Cgo9aXRlbSBfR2VuZXJhbENhdGFsb2dJdGVtQ3JlYXRlSWZOb3RFeGlzdHMoKQoKYWRkcyBhIGdlbmVyYWwgY2F0YWxvZyBpdGVtIGlmIGl0IGRvZXMgbm90IGV4aXN0CgogICAgbXkgJEl0ZW1JRCA9ICRabnVueUhlbHBlck9iamVjdC0+X0dlbmVyYWxDYXRhbG9nSXRlbUNyZWF0ZUlmTm90RXhpc3RzKAogICAgICAgIE5hbWUgICAgICAgICAgICA9PiAnVGVzdCBJdGVtJywKICAgICAgICBDbGFzcyAgICAgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OlRlc3QnLAogICAgICAgIENvbW1lbnQgICAgICAgICA9PiAnQ2xhc3MgZm9yIHRlc3QgaXRlbS4nLAogICAgICAgIFBlcm1pc3Npb25Hcm91cCA9PiAnaXRzbS1jb25maWdpdGVtJywgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICRJdGVtSUQgPSAxMjM0OwoKPWN1dAoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0l0ZW1DcmVhdGVJZk5vdEV4aXN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICREQk9iamVjdCAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwogICAgbXkgJEdyb3VwT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CiAgICBteSAkTWFpbk9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwogICAgbXkgJFZhbGlkT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KE5hbWUgQ2xhc3MpKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJyROZWVkZWQnIGlzIG5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICROYW1lID0gJFBhcmFte05hbWV9OwoKICAgICMgY2hlY2sgaWYgZ2VuZXJhbCBjYXRhbG9nIG1vZHVsZSBpcyBpbnN0YWxsZWQKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ0xvYWRlZCA9ICRNYWluT2JqZWN0LT5SZXF1aXJlKAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgICAgIFNpbGVudCA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gaWYgISRHZW5lcmFsQ2F0YWxvZ0xvYWRlZDsKCiAgICBteSAkVmFsaWRJRCA9ICRWYWxpZE9iamVjdC0+VmFsaWRMb29rdXAoCiAgICAgICAgVmFsaWQgPT4gJ3ZhbGlkJywKICAgICk7CgogICAgIyBjaGVjayBpZiBpdGVtIGFscmVhZHkgZXhpc3RzCiAgICBteSAkSXRlbUxpc3RSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICRQYXJhbXtDbGFzc30sCiAgICAgICAgVmFsaWQgPT4gJFZhbGlkSUQsCiAgICApOwoKICAgIG15ICVJdGVtTGlzdFJldmVyc2UgPSByZXZlcnNlICV7ICRJdGVtTGlzdFJlZiB8fCB7fSB9OwoKICAgIG15ICRJdGVtSUQgPSAkU2VsZi0+X0l0ZW1SZXZlcnNlTGlzdEdldCggJE5hbWUsICVJdGVtTGlzdFJldmVyc2UgKTsKICAgIHJldHVybiAkSXRlbUlEIGlmICRJdGVtSUQ7CgogICAgIyBhZGQgaXRlbSBpZiBpdCBkb2VzIG5vdCBleGlzdAogICAgJEl0ZW1JRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICBDbGFzcyAgID0+ICRQYXJhbXtDbGFzc30sCiAgICAgICAgTmFtZSAgICA9PiAkTmFtZSwKICAgICAgICBWYWxpZElEID0+ICRWYWxpZElELAogICAgICAgIENvbW1lbnQgPT4gJFBhcmFte0NvbW1lbnR9LAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuICAgICAgICAgaWYgISRJdGVtSUQ7CiAgICByZXR1cm4gJEl0ZW1JRCBpZiAhJFBhcmFte1Blcm1pc3Npb25Hcm91cH07CgogICAgbXkgJEdyb3VwSUQgPSAkR3JvdXBPYmplY3QtPkdyb3VwTG9va3VwKAogICAgICAgIEdyb3VwID0+ICRQYXJhbXtQZXJtaXNzaW9uR3JvdXB9LAogICAgKTsKICAgIHJldHVybiAkSXRlbUlEIGlmICEkR3JvdXBJRDsKCiAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgICAgICBWYWx1ZSAgPT4gJEdyb3VwSUQsCiAgICApOwoKICAgIHJldHVybiAkSXRlbUlEOwp9Cgo9aXRlbSBfSVRTTUNvbmZpZ0l0ZW1EZWZpbml0aW9uQ3JlYXRlKCkKCmFkZHMgb3IgdXBkYXRlcyBhIGRlZmluaXRpb24gZm9yIGEgQ29uZmlnSXRlbUNsYXNzLiBZb3UgbmVlZCB0byBwcm92aWRlIHRoZSBjb25maWd1cmF0aW9uCm9mIHRoZSBDTURCIGNsYXNzIGluIHRoZSBmb2xsb3dpbmcgZGlyZWN0b3J5OgoKL29wdC9vdHJzL3NjcmlwdHMvY21kYl9jbGFzc2VzL1ByaXZhdGVfRW5kZ2VyYWV0ZS5jb25maWcKClRoZSByZXF1aXJlZCBnZW5lcmFsIGNhdGFsb2cgaXRlbSB3aWxsIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseS4KCiAgICBteSAkRGVmaW5pdGlvbklEID0gJFpudW55SGVscGVyT2JqZWN0LT5fSVRTTUNvbmZpZ0l0ZW1EZWZpbml0aW9uQ3JlYXRlKAogICAgICAgIENsYXNzICAgICAgICAgICA9PiAnUHJpdmF0ZSBFbmRnZXJhZXRlJywKICAgICAgICBDbGFzc0ZpbGUgICAgICAgPT4gJ1ByaXZhdGVfRW5kZ2VyYWV0ZScsICAjIG9wdGlvbmFsCiAgICAgICAgUGVybWlzc2lvbkdyb3VwID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLCAgICAgIyBvcHRpb25hbAogICAgKTsKClJldHVybnM6CgogICAgbXkgJERlZmluaXRpb25JRCA9IDEyMzQ7Cgo9Y3V0CgpzdWIgX0lUU01Db25maWdJdGVtRGVmaW5pdGlvbkNyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJE1haW5PYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRZQU1MT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KENsYXNzKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkSG9tZSA9ICRDb25maWdPYmplY3QtPkdldCgnSG9tZScpOwoKICAgICMgY2hlY2sgaWYgSVRTTUNvbmZpZ0l0ZW0gbW9kdWxlIGlzIGluc3RhbGxlZAogICAgbXkgJElUU01Db25maWdJdGVtTG9hZGVkID0gJE1haW5PYmplY3QtPlJlcXVpcmUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU2lsZW50ID0+IDEsCiAgICApOwogICAgcmV0dXJuIGlmICEkSVRTTUNvbmZpZ0l0ZW1Mb2FkZWQ7CgogICAgIyBjcmVhdGUgZ2VuZXJhbCBjYXRhbG9nIGl0ZW0gZm9yIGNsYXNzCiAgICBteSAkQ2xhc3NJRCA9ICRTZWxmLT5fR2VuZXJhbENhdGFsb2dJdGVtQ3JlYXRlSWZOb3RFeGlzdHMoCiAgICAgICAgTmFtZSAgICAgICAgICAgID0+ICRQYXJhbXtDbGFzc30sCiAgICAgICAgQ2xhc3MgICAgICAgICAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgUGVybWlzc2lvbkdyb3VwID0+ICRQYXJhbXtQZXJtaXNzaW9uR3JvdXB9LAogICAgKTsKICAgIHJldHVybiBpZiAhJENsYXNzSUQ7CgogICAgIyBkbyBjaGVjayBjcmVhdGUgaWYgbm90IGV4aXN0cwogICAgaWYgKCAkUGFyYW17Q3JlYXRlSWZOb3RFeGlzdHN9ICkgewogICAgICAgIG15ICREZWZpbml0aW9uTGlzdFJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uTGlzdCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICApOwogICAgICAgIHJldHVybiAkRGVmaW5pdGlvbkxpc3RSZWYtPlstMV0tPntEZWZpbml0aW9uSUR9IGlmIElzQXJyYXlSZWZXaXRoRGF0YSgkRGVmaW5pdGlvbkxpc3RSZWYpOwogICAgfQoKICAgICMgY2hlY2sgd2hpY2ggdHlwZSBvZiBpbXBvcnQgZmlsZSBpcyBwcmVzZW50IChQZXJsIHN0cnVjdHVyZSBvciBZQU1MKS4KICAgIG15ICRCYXNlQ2xhc3NGaWxlUGF0aCA9ICRIb21lIC4gJy9zY3JpcHRzL2NtZGJfY2xhc3Nlcy8nIC4gKCAkUGFyYW17Q2xhc3NGaWxlfSB8fCAkUGFyYW17Q2xhc3N9ICk7CgogICAgbXkgJENsYXNzRmlsZVBhdGggICA9ICRCYXNlQ2xhc3NGaWxlUGF0aCAuICcueW1sJzsKICAgIG15ICRDbGFzc0ZpbGVJc1lBTUwgPSAxOwogICAgaWYgKCAhLWYgJENsYXNzRmlsZVBhdGggKSB7CiAgICAgICAgJENsYXNzRmlsZVBhdGggICA9ICRCYXNlQ2xhc3NGaWxlUGF0aCAuICcuY29uZmlnJzsKICAgICAgICAkQ2xhc3NGaWxlSXNZQU1MID0gMDsKICAgIH0KICAgIHJldHVybiBpZiAhLWYgJENsYXNzRmlsZVBhdGg7CgogICAgIyBnZXQgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBmaWxlIHN5c3RlbQogICAgbXkgJENvbnRlbnRTQ0FMQVJSZWYgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgTG9jYXRpb24gPT4gJENsYXNzRmlsZVBhdGgsCiAgICAgICAgTW9kZSAgICAgPT4gJ3V0ZjgnLAogICAgICAgIFJlc3VsdCAgID0+ICdTQ0FMQVInLAogICAgKTsKICAgIHJldHVybiBpZiAhJENvbnRlbnRTQ0FMQVJSZWY7CgogICAgbXkgJENvbnRlbnQgPSAkeyRDb250ZW50U0NBTEFSUmVmfTsKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkQ29udGVudCB8fCAhbGVuZ3RoICRDb250ZW50OwoKICAgICMgSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50IDYuMC4xOCBzd2l0Y2hlZCBmb3JtYXQgb2YgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgZnJvbSBQZXJsCiAgICAjIHRvIFlBTUwuIENoZWNrIHdoaWNoIG9uZSBpcyBuZWVkZWQgYnkgY2hlY2tpbmcgaWYgdGhlIG5ldyBjb25zb2xlIGNvbW1hbmQKICAgICMgS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpJVFNNOjpDb25maWdpdGVtOjpEZWZpbml0aW9uUGVybDJZQU1MCiAgICAjIGV4aXN0cy4KICAgIG15ICREZWZpbml0aW9uUGVybDJZQU1MRmlsZVBhdGggPSAkSG9tZQogICAgICAgIC4gJy9LZXJuZWwvU3lzdGVtL0NvbnNvbGUvQ29tbWFuZC9NYWludC9JVFNNL0NvbmZpZ2l0ZW0vRGVmaW5pdGlvblBlcmwyWUFNTC5wbSc7CiAgICBteSAkWUFNTENvbmZpZ0l0ZW1EZWZpbml0aW9uRXhwZWN0ZWQgPSAoIC1mICREZWZpbml0aW9uUGVybDJZQU1MRmlsZVBhdGggKSA/IDEgOiAwOwoKICAgIGlmICgKICAgICAgICAhJENsYXNzRmlsZUlzWUFNTAogICAgICAgICYmICRZQU1MQ29uZmlnSXRlbURlZmluaXRpb25FeHBlY3RlZAogICAgICAgICkKICAgIHsKICAgICAgICAjIFR1cm4gUGVybCBjb25maWcgaXRlbSBmaWxlIGludG8gUGVybCBzdHJ1Y3R1cmUuCiAgICAgICAgJENvbnRlbnQgPSBldmFsICRDb250ZW50OyAgICAjIyBubyBjcml0aWMgcXcoQnVpbHRpbkZ1bmN0aW9uczo6UHJvaGliaXRTdHJpbmd5RXZhbCkKICAgICAgICByZXR1cm4gaWYgIWRlZmluZWQgJENvbnRlbnQ7CgogICAgICAgICMgVHVybiBQZXJsIHN0cnVjdHVyZSBpbnRvIFlBTUwuCiAgICAgICAgJENvbnRlbnQgPSAkWUFNTE9iamVjdC0+RHVtcCgKICAgICAgICAgICAgRGF0YSA9PiAkQ29udGVudCwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKAogICAgICAgICRDbGFzc0ZpbGVJc1lBTUwKICAgICAgICAmJiAhJFlBTUxDb25maWdJdGVtRGVmaW5pdGlvbkV4cGVjdGVkCiAgICAgICAgKQogICAgewogICAgICAgICMgVHVybiBZQU1MIGNvbmZpZyBpdGVtIGZpbGUgaW50byBQZXJsIHN0cnVjdHVyZS4KICAgICAgICAkQ29udGVudCA9ICRZQU1MT2JqZWN0LT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgICAgICk7CiAgICAgICAgcmV0dXJuIGlmICFkZWZpbmVkICRDb250ZW50OwoKICAgICAgICAjIFR1cm4gUGVybCBzdHJ1Y3R1cmUgaW50byBzdHJpbmcuCiAgICAgICAgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RHVtcCgKICAgICAgICAgICAgJENvbnRlbnQsCiAgICAgICAgKTsKCiAgICAgICAgIyBSZW1vdmUgbGVhZGluZyAnJFZBUjEgPScgZnJvbSBkdW1wLgogICAgICAgICRDb250ZW50ID1+IHN7XEFcJFZBUjEgPSB9e307CiAgICB9CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRDb250ZW50IHx8ICFsZW5ndGggJENvbnRlbnQ7CgogICAgIyBnZXQgbGFzdCBkZWZpbml0aW9uCiAgICBteSAkTGFzdERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgKTsKCiAgICAjIHN0b3AgYWRkIGlmIGRlZmluaXRpb24gd2FzIG5vdCBjaGFuZ2VkCiAgICByZXR1cm4gJExhc3REZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfQogICAgICAgIGlmIElzSGFzaFJlZldpdGhEYXRhKCRMYXN0RGVmaW5pdGlvbikgJiYgJExhc3REZWZpbml0aW9uLT57RGVmaW5pdGlvbn0gZXEgJENvbnRlbnQ7CgogICAgbXkgJERlZmluaXRpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkQ29udGVudCwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgIHJldHVybiAkRGVmaW5pdGlvbklEOwp9Cgo9aXRlbSBfSVRTTUNvbmZpZ0l0ZW1EZWZpbml0aW9uQ3JlYXRlSWZOb3RFeGlzdHMoKQoKYWRkIGlmIG5vdCBleGlzdHMgYSBkZWZpbml0aW9uIGZvciBhIENvbmZpZ0l0ZW1DbGFzcy4gWW91IG5lZWQgdG8gcHJvdmlkZSB0aGUgY29uZmlndXJhdGlvbgpvZiB0aGUgQ01EQiBjbGFzcyBpbiB0aGUgZm9sbG93aW5nIGRpcmVjdG9yeToKCi9vcHQvb3Rycy9zY3JpcHRzL2NtZGJfY2xhc3Nlcy9Qcml2YXRlX0VuZGdlcmFldGUuY29uZmlnCgpUaGUgcmVxdWlyZWQgZ2VuZXJhbCBjYXRhbG9nIGl0ZW0gd2lsbCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkuCgogICAgbXkgJERlZmluaXRpb25JRCA9ICRabnVueUhlbHBlck9iamVjdC0+X0lUU01Db25maWdJdGVtRGVmaW5pdGlvbkNyZWF0ZUlmTm90RXhpc3RzKAogICAgICAgIENsYXNzICAgICAgICAgICA9PiAnUHJpdmF0ZSBFbmRnZXJhZXRlJywKICAgICAgICBDbGFzc0ZpbGUgICAgICAgPT4gJ1ByaXZhdGVfRW5kZ2VyYWV0ZScsICAjIG9wdGlvbmFsCiAgICAgICAgUGVybWlzc2lvbkdyb3VwID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLCAgICAgIyBvcHRpb25hbAogICAgKTsKClJldHVybnM6CgogICAgbXkgJERlZmluaXRpb25JRCA9IDEyMzQ7Cgo9Y3V0CgpzdWIgX0lUU01Db25maWdJdGVtRGVmaW5pdGlvbkNyZWF0ZUlmTm90RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5fSVRTTUNvbmZpZ0l0ZW1EZWZpbml0aW9uQ3JlYXRlKAogICAgICAgICVQYXJhbSwKICAgICAgICBDcmVhdGVJZk5vdEV4aXN0cyA9PiAxLAogICAgKTsKfQoKPWl0ZW0gX0lUU01Db25maWdJdGVtVmVyc2lvbkFkZCgpCgphZGRzIG9yIHVwZGF0ZXMgYSBDb25maWdJdGVtIHZlcnNpb24uCgogICAgbXkgJFZlcnNpb25JRCA9ICRabnVueUhlbHBlck9iamVjdC0+X0lUU01Db25maWdJdGVtVmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgID0+IDEyMzQ1LAogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ2V4YW1wbGUgbmFtZScsCgogICAgICAgIENsYXNzSUQgICAgICAgPT4gMTIzNCwKICAgICAgICBDbGFzc05hbWUgICAgID0+ICdleGFtcGxlIGNsYXNzJywKICAgICAgICBEZWZpbml0aW9uSUQgID0+IDEyMzQsCgogICAgICAgIERlcGxTdGF0ZUlEICAgPT4gMTIzNCwKICAgICAgICBEZXBsU3RhdGVOYW1lID0+ICdQcm9kdWN0aW9uJywKCiAgICAgICAgSW5jaVN0YXRlSUQgICA9PiAxMjM0LAogICAgICAgIEluY2lTdGF0ZU5hbWUgPT4gJ09wZXJhdGlvbmFsJywKCiAgICAgICAgWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICdQcmlvcml0eScgICAgPT4gJ2hpZ2gnLAogICAgICAgICAgICAnUHJvZHVjdCcgICAgID0+ICd0ZXN0JywKICAgICAgICAgICAgJ0Rlc2NyaXB0aW9uJyA9PiAndGVzdCcKICAgICAgICB9LAogICAgKTsKCiAgICBFWEFNUExFIENyZWF0ZSBDb21wdXRlcjoKCiAgICBteSAkWm51bnlIZWxwZXJPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Wm51bnlIZWxwZXInKTsKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkVmFsaWRPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKTsKCiAgICAjIGdldCB2YWxpZCBpZAogICAgbXkgJFZhbGlkSUQgPSAkVmFsaWRPYmplY3QtPlZhbGlkTG9va3VwKAogICAgICAgIFZhbGlkID0+ICd2YWxpZCcsCiAgICApOwoKICAgIG15ICRDbGFzc0xpc3RSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgVmFsaWQgPT4gJFZhbGlkSUQsCiAgICApOwogICAgbXkgJUNsYXNzTGlzdCA9IHJldmVyc2UgJXsgJENsYXNzTGlzdFJlZiB8fCB7fSB9OwoKICAgIG15ICRZZXNOb1JlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06Olllc05vJywKICAgICAgICBWYWxpZCA9PiAkVmFsaWRJRCwKICAgICk7CiAgICBteSAlWWVzTm9MaXN0ID0gcmV2ZXJzZSAleyAkWWVzTm9SZWYgfHwge30gfTsKCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NMaXN0e0NvbXB1dGVyfSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKICAgICMgY3JlYXRlIG5ldyB2ZXJzaW9uIG9mIENvbmZpZ0l0ZW0KICAgIG15ICRWZXJzaW9uSUQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9JVFNNQ29uZmlnSXRlbVZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ2JsdWInLAogICAgICAgIENsYXNzTmFtZSAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICBEZXBsU3RhdGVOYW1lID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGVOYW1lID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIE90aGVyRXF1aXBtZW50ICAgICAgICAgPT4gJy4uLicsCiAgICAgICAgICAgIE5vdGUgICAgICAgICAgICAgICAgICAgPT4gJy4uLicsCiAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzIwMTYtMDEtMDEnLAogICAgICAgICAgICBJbnN0YWxsRGF0ZSAgICAgICAgICAgID0+ICcyMDE2LTAxLTAxJywKICAgICAgICAgICAgTklDICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnTklDJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkWWVzTm9MaXN0e1llc30sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcxMjcuMC4wLjEnCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICRWZXJzaW9uSUQgPSAxMjM0OwoKPWN1dAoKc3ViIF9JVFNNQ29uZmlnSXRlbVZlcnNpb25BZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRNYWluT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW1JRCBOYW1lKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoICEkUGFyYW17RGVwbFN0YXRlSUR9ICYmICEkUGFyYW17RGVwbFN0YXRlTmFtZX0gKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICdEZXBsU3RhdGVJRCcgb3IgJ0RlcGxTdGF0ZU5hbWUnIG5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKCAhJFBhcmFte0luY2lTdGF0ZUlEfSAmJiAhJFBhcmFte0luY2lTdGF0ZU5hbWV9ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnRGVwbFN0YXRlSUQnIG9yICdEZXBsU3RhdGVOYW1lJyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmICggJFBhcmFte1hNTERhdGF9ICYmIHJlZiAkUGFyYW17WE1MRGF0YX0gbmUgJ0hBU0gnICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnWE1MRGF0YScgYXMgaGFzaCByZWYgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBpZiBnZW5lcmFsIGNhdGFsb2cgbW9kdWxlIGlzIGluc3RhbGxlZAogICAgbXkgJEdlbmVyYWxDYXRhbG9nTG9hZGVkID0gJE1haW5PYmplY3QtPlJlcXVpcmUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAgICAgU2lsZW50ID0+IDEsCiAgICApOwoKICAgIHJldHVybiBpZiAhJEdlbmVyYWxDYXRhbG9nTG9hZGVkOwoKICAgICMgY2hlY2sgaWYgZ2VuZXJhbCBjYXRhbG9nIG1vZHVsZSBpcyBpbnN0YWxsZWQKICAgIG15ICRJVFNNQ29uZmlnSXRlbUxvYWRlZCA9ICRNYWluT2JqZWN0LT5SZXF1aXJlKAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFNpbGVudCA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gaWYgISRJVFNNQ29uZmlnSXRlbUxvYWRlZDsKCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJFZhbGlkT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyk7CgogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgbXkgJUNvbmZpZ0l0ZW0gICA9ICV7ICRQYXJhbXtYTUxEYXRhfSB8fCB7fSB9OwoKICAgIG15ICVWZXJzaW9uID0gJFNlbGYtPl9JVFNNVmVyc2lvbkdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICBteSAlRGVwbFN0YXRlTGlzdCA9ICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICkKICAgICAgICAgICAgfHwge30KICAgIH07CiAgICBteSAlRGVwbFN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICVEZXBsU3RhdGVMaXN0OwoKICAgIG15ICVJbmNpU3RhdGVMaXN0ID0gJXsKICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgICAgICkKICAgICAgICAgICAgfHwge30KICAgIH07CiAgICBteSAlSW5jaVN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICVJbmNpU3RhdGVMaXN0OwoKICAgICMgZ2V0IGRlZmluaXRpb24KICAgIG15ICREZWZpbml0aW9uSUQgPSAkUGFyYW17RGVmaW5pdGlvbklEfTsKICAgIGlmICggISREZWZpbml0aW9uSUQgKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGlkIG9yIG5hbWUKICAgICAgICBteSAkQ2xhc3NJRCA9ICRQYXJhbXtDbGFzc0lEfTsKICAgICAgICBpZiAoICRQYXJhbXtDbGFzc05hbWV9ICkgewoKICAgICAgICAgICAgIyBnZXQgdmFsaWQgaWQKICAgICAgICAgICAgbXkgJFZhbGlkSUQgPSAkVmFsaWRPYmplY3QtPlZhbGlkTG9va3VwKAogICAgICAgICAgICAgICAgVmFsaWQgPT4gJ3ZhbGlkJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRJdGVtTGlzdFJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgVmFsaWQgPT4gJFZhbGlkSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAlSXRlbUxpc3QgPSByZXZlcnNlICV7ICRJdGVtTGlzdFJlZiB8fCB7fSB9OwoKICAgICAgICAgICAgJENsYXNzSUQgPSAkSXRlbUxpc3R7ICRQYXJhbXtDbGFzc05hbWV9IH07CiAgICAgICAgfQoKICAgICAgICBteSAkWE1MRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9uSUQgPSAkWE1MRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH07CiAgICB9CgogICAgaWYgKCAkUGFyYW17TmFtZX0gKSB7CiAgICAgICAgJFZlcnNpb257TmFtZX0gPSAkUGFyYW17TmFtZX07CiAgICB9CiAgICBpZiAoICRQYXJhbXtEZWZpbml0aW9uSUR9IHx8ICRQYXJhbXtDbGFzc0lEfSB8fCAkUGFyYW17Q2xhc3NOYW1lfSApIHsKICAgICAgICAkVmVyc2lvbntEZWZpbml0aW9uSUR9ID0gJERlZmluaXRpb25JRDsKICAgIH0KICAgIGlmICggJFBhcmFte0RlcGxTdGF0ZUlEfSApIHsKICAgICAgICAkVmVyc2lvbntEZXBsU3RhdGVJRH0gPSAkUGFyYW17RGVwbFN0YXRlSUR9OwogICAgfQogICAgaWYgKCAkUGFyYW17SW5jaVN0YXRlSUR9ICkgewogICAgICAgICRWZXJzaW9ue0luY2lTdGF0ZUlEfSA9ICRQYXJhbXtJbmNpU3RhdGVJRH07CiAgICB9CiAgICBpZiAoICRQYXJhbXtEZXBsU3RhdGVOYW1lfSApIHsKICAgICAgICAkVmVyc2lvbntEZXBsU3RhdGVJRH0gPSAkRGVwbFN0YXRlTGlzdFJldmVyc2V7ICRQYXJhbXtEZXBsU3RhdGVOYW1lfSB9OwogICAgfQogICAgaWYgKCAkUGFyYW17SW5jaVN0YXRlTmFtZX0gKSB7CiAgICAgICAgJFZlcnNpb257SW5jaVN0YXRlSUR9ID0gJEluY2lTdGF0ZUxpc3RSZXZlcnNleyAkUGFyYW17SW5jaVN0YXRlTmFtZX0gfTsKICAgIH0KCiAgICAlQ29uZmlnSXRlbSA9ICggJXsgJFZlcnNpb257WE1MRGF0YX0gfHwge30gfSwgJUNvbmZpZ0l0ZW0gKTsKCiAgICBteSAkWE1MRGF0YSA9IFsKICAgICAgICB1bmRlZiwKICAgICAgICB7CiAgICAgICAgICAgICdWZXJzaW9uJyA9PiBbCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHt9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICBdOwogICAgJFNlbGYtPl9QYXJzZURhdGEyWE1MKAogICAgICAgICVQYXJhbSwKICAgICAgICBSZXN1bHQgPT4gJFhNTERhdGEtPlsxXS0+e1ZlcnNpb259LT5bLTFdLAogICAgICAgIERhdGEgICA9PiBcJUNvbmZpZ0l0ZW0sCiAgICApOwoKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJFZlcnNpb257TmFtZX0sCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRWZXJzaW9ue0RlZmluaXRpb25JRH0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICRWZXJzaW9ue0RlcGxTdGF0ZUlEfSwKICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJFZlcnNpb257SW5jaVN0YXRlSUR9LAogICAgICAgIFhNTERhdGEgICAgICA9PiAkWE1MRGF0YSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuICRWZXJzaW9uSUQ7Cn0KCj1pdGVtIF9JVFNNQ29uZmlnSXRlbVZlcnNpb25FeGlzdHMoKQoKY2hlY2tzIGlmIGEgdmVyc2lvbiBhbHJlYWR5IGV4aXN0cyB3aXRob3V0IHJldHVybmluZyBhIGVycm9yLgoKCiAgICBteSAkRm91bmQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9JVFNNQ29uZmlnSXRlbVZlcnNpb25FeGlzdHMoCiAgICAgICAgVmVyc2lvbklEICA9PiAxMjMsCiAgICApOwoKICAgIG9yCgogICAgbXkgJEZvdW5kID0gJFpudW55SGVscGVyT2JqZWN0LT5fSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uRXhpc3RzKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICApOwoKClJldHVybnM6CgogICAgbXkgJEZvdW5kID0gMTsKCj1jdXQKCnN1YiBfSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uRXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICBteSAkREJPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VmVyc2lvbklEfSAmJiAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBWZXJzaW9uSUQgb3IgQ29uZmlnSXRlbUlEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBpZiBnZW5lcmFsIGNhdGFsb2cgbW9kdWxlIGlzIGluc3RhbGxlZAogICAgbXkgJEdlbmVyYWxDYXRhbG9nTG9hZGVkID0gJE1haW5PYmplY3QtPlJlcXVpcmUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAgICAgU2lsZW50ID0+IDEsCiAgICApOwoKICAgIHJldHVybiBpZiAhJEdlbmVyYWxDYXRhbG9nTG9hZGVkOwoKICAgICMgY2hlY2sgaWYgZ2VuZXJhbCBjYXRhbG9nIG1vZHVsZSBpcyBpbnN0YWxsZWQKICAgIG15ICRJVFNNQ29uZmlnSXRlbUxvYWRlZCA9ICRNYWluT2JqZWN0LT5SZXF1aXJlKAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFNpbGVudCA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gaWYgISRJVFNNQ29uZmlnSXRlbUxvYWRlZDsKCiAgICBpZiAoICRQYXJhbXtWZXJzaW9uSUR9ICkgewoKICAgICAgICAjIGdldCB2ZXJzaW9uCiAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgICA9PiAnU0VMRUNUIDEgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24gV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1ZlcnNpb25JRH0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgZ2V0IHZlcnNpb24KICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgMSBGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiBXSEVSRSBjb25maWdpdGVtX2lkID0gPyBPUkRFUiBCWSBpZCBERVNDJywKICAgICAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NvbmZpZ0l0ZW1JRH0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJEZvdW5kOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEZvdW5kID0gMTsKICAgIH0KCiAgICByZXR1cm4gJEZvdW5kOwp9Cgo9aXRlbSBfSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uR2V0KCkKCmdldCBhIENvbmZpZ0l0ZW0gdmVyc2lvbi4KCiAgICBteSAlVmVyc2lvbiA9ICRabnVueUhlbHBlck9iamVjdC0+X0lUU01Db25maWdJdGVtVmVyc2lvbkdldCgKICAgICAgICBDb25maWdJdGVtSUQgICAgPT4gMTIzNDUsCiAgICAgICAgWE1MRGF0YU11bHRpcGxlID0+IDEsICAgICAgIyBkZWZhdWx0OiAwLCBUaGlzIG9wdGlvbiB3aWxsIHJldHVybiBhIG1vcmUgY29tcGxleCBYTUxEYXRhIHN0cnVjdHVyZSB3aXRoIG11bHRpcGxlIGVsZW1lbnQgZGF0YSEgTWFrZXMgc2Vuc2UgaWYgeW91IGFyZSB1c2luZyBDb3VudE1pbiwgQ291bnRNYXggZXRjLi4KICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICVWZXJzaW9uID0gKAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gMTIzNDUsCgogICAgICAgIERlZmluaXRpb25JRCA9PiAxMjM0LAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAxMjM0LAogICAgICAgIERlcGxTdGF0ZSAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlSUQgID0+IDEyMzQsCiAgICAgICAgSW5jaVN0YXRlICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdleGFtcGxlIG5hbWUnLAogICAgICAgIFhNTERhdGEgICAgICA9PiB7CiAgICAgICAgICAgICdQcmlvcml0eScgICAgPT4gJ2hpZ2gnLAogICAgICAgICAgICAnUHJvZHVjdCcgICAgID0+ICd0ZXN0JywKICAgICAgICAgICAgJ0Rlc2NyaXB0aW9uJyA9PiAndGVzdCcKICAgICAgICB9LAogICAgKTsKCj1jdXQKCnN1YiBfSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE1haW5PYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBjaGVjayBpZiBnZW5lcmFsIGNhdGFsb2cgbW9kdWxlIGlzIGluc3RhbGxlZAogICAgbXkgJEdlbmVyYWxDYXRhbG9nTG9hZGVkID0gJE1haW5PYmplY3QtPlJlcXVpcmUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAgICAgU2lsZW50ID0+IDEsCiAgICApOwoKICAgIHJldHVybiBpZiAhJEdlbmVyYWxDYXRhbG9nTG9hZGVkOwoKICAgICMgY2hlY2sgaWYgZ2VuZXJhbCBjYXRhbG9nIG1vZHVsZSBpcyBpbnN0YWxsZWQKICAgIG15ICRJVFNNQ29uZmlnSXRlbUxvYWRlZCA9ICRNYWluT2JqZWN0LT5SZXF1aXJlKAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFNpbGVudCA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gaWYgISRJVFNNQ29uZmlnSXRlbUxvYWRlZDsKICAgIHJldHVybiBpZiAhJFNlbGYtPl9JVFNNQ29uZmlnSXRlbVZlcnNpb25FeGlzdHMoJVBhcmFtKTsKCiAgICBteSAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICVQYXJhbSwKICAgICAgICBYTUxEYXRhR2V0ID0+IDEsCiAgICApOwoKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJFZlcnNpb25SZWYpOwoKICAgIG15ICVWZXJzaW9uQ29uZmlnSXRlbTsKICAgICRWZXJzaW9uQ29uZmlnSXRlbXtYTUxEYXRhfSB8fD0ge307CiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkVmVyc2lvblJlZi0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFdICkgKSB7CiAgICAgICAgJFNlbGYtPl9QYXJzZVhNTDJEYXRhKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFJlc3VsdCA9PiAkVmVyc2lvbkNvbmZpZ0l0ZW17WE1MRGF0YX0sCiAgICAgICAgICAgIERhdGEgICA9PiAkVmVyc2lvblJlZi0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFdLAogICAgICAgICk7CiAgICB9CgogICAgZm9yIG15ICRGaWVsZCAocXcoQ29uZmlnSXRlbUlEIE5hbWUgQ2xhc3NJRCBDbGFzcyBEZWZpbml0aW9uSUQgRGVwbFN0YXRlSUQgRGVwbFN0YXRlIEluY2lTdGF0ZUlEIEluY2lTdGF0ZSkpIHsKICAgICAgICAkVmVyc2lvbkNvbmZpZ0l0ZW17JEZpZWxkfSA9ICRWZXJzaW9uUmVmLT57JEZpZWxkfTsKICAgIH0KCiAgICByZXR1cm4gJVZlcnNpb25Db25maWdJdGVtOwp9Cgo9aXRlbSBfSVRTTVZlcnNpb25BZGQoKQoKREVQUkVDQVRFRCwgdXNlICRTZWxmLT5fSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uQWRkIGluc3RlYWQuCgo9Y3V0CgpzdWIgX0lUU01WZXJzaW9uQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5fSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uQWRkKCVQYXJhbSk7Cn0KCj1pdGVtIF9JVFNNVmVyc2lvbkV4aXN0cygpCgpERVBSRUNBVEVELCB1c2UgJFNlbGYtPl9JVFNNQ29uZmlnSXRlbVZlcnNpb25FeGlzdHMgaW5zdGVhZC4KCj1jdXQKCnN1YiBfSVRTTVZlcnNpb25FeGlzdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJFNlbGYtPl9JVFNNQ29uZmlnSXRlbVZlcnNpb25FeGlzdHMoJVBhcmFtKTsKfQoKPWl0ZW0gX0lUU01WZXJzaW9uR2V0KCkKCkRFUFJFQ0FURUQsIHVzZSAkU2VsZi0+X0lUU01Db25maWdJdGVtVmVyc2lvbkdldCBpbnN0ZWFkLgoKPWN1dAoKc3ViIF9JVFNNVmVyc2lvbkdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+X0lUU01Db25maWdJdGVtVmVyc2lvbkdldCglUGFyYW0pOwp9Cgo9aXRlbSBfUGFyc2VYTUwyRGF0YSgpCgp0aGlzIGlzIGEgaW50ZXJuYWwgZnVuY3Rpb24gZm9yIF9JVFNNVmVyc2lvbkdldCB0byBwYXJzZSB0aGUgYWRkaXRpb25hbCBkYXRhCnN0b3JlZCBpbiBYTUxEYXRhLgoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fUGFyc2VYTUwyRGF0YSgKICAgICAgICBQYXJlbnQgICAgICAgICAgPT4gJElkZW50aWZpZXIsICAgICAgICAgICMgb3B0aW9uYWw6IGNvbnRhaW5zIHRoZSBmaWVsZCBuYW1lIG9mIHRoZSBwYXJlbnQgeG1sCiAgICAgICAgUmVzdWx0ICAgICAgICAgID0+ICRSZXN1bHQsICAgICAgICAgICAgICAjIGNvbnRhaW5zIHRoZSByZWZlcmVuY2UgdG8gdGhlIHJlc3VsdCBoYXNoCiAgICAgICAgRGF0YSAgICAgICAgICAgID0+ICREYXRheyRGaWVsZH0tPlsxXSwgICAjIGNvbnRhaW5zIHRoZSB4bWwgaGFzaCB3ZSB3YW50IHRvIHBhcnNlCiAgICAgICAgWE1MRGF0YU11bHRpcGxlID0+IDEsICAgICAgICAgICAgICAgICAgICAjIGRlZmF1bHQ6IDAsIFRoaXMgb3B0aW9uIHdpbGwgcmV0dXJuIGEgbW9yZSBjb21wbGV4IFhNTERhdGEgc3RydWN0dXJlIHdpdGggbXVsdGlwbGUgZWxlbWVudCBkYXRhISBNYWtlcyBzZW5zZSBpZiB5b3UgYXJlIHVzaW5nIENvdW50TWluLCBDb3VudE1heCBldGMuLgogICAgKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9QYXJzZVhNTDJEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFJlc3VsdCAgICAgICAgICA9ICRQYXJhbXtSZXN1bHR9OwogICAgbXkgJFhNTERhdGFNdWx0aXBsZSA9ICRQYXJhbXtYTUxEYXRhTXVsdGlwbGV9OwogICAgbXkgJFBhcmVudCAgICAgICAgICA9ICRQYXJhbXtQYXJlbnR9IHx8ICcnOwogICAgbXkgJURhdGEgICAgICAgICAgICA9ICV7ICRQYXJhbXtEYXRhfSB8fCB7fSB9OwoKICAgIEZJRUxEOgogICAgZm9yIG15ICRGaWVsZCAoIHNvcnQga2V5cyAlRGF0YSApIHsKICAgICAgICBuZXh0IEZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoICREYXRheyRGaWVsZH0gKTsKCiAgICAgICAgaWYgKCRYTUxEYXRhTXVsdGlwbGUpIHsKICAgICAgICAgICAgJFJlc3VsdC0+eyRGaWVsZH0gPSBbXTsKCiAgICAgICAgICAgIGZvciBteSAkSW5kZXggKCAxIC4uICQjeyAkRGF0YXskRmllbGR9IH0gKSB7CiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkRGF0YXskRmllbGR9LT5bJEluZGV4XS0+e0NvbnRlbnR9OwoKICAgICAgICAgICAgICAgIG15ICRDdXJyZW50UmVzdWx0ID0ge307CgogICAgICAgICAgICAgICAgJFNlbGYtPl9QYXJzZVhNTDJEYXRhKAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICBQYXJlbnQgPT4gJEZpZWxkLAogICAgICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAkQ3VycmVudFJlc3VsdCwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgPT4gJERhdGF7JEZpZWxkfS0+WyRJbmRleF0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICAgICAgJEN1cnJlbnRSZXN1bHQtPntDb250ZW50fSA9ICRWYWx1ZTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCBrZXlzICV7JEN1cnJlbnRSZXN1bHR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEB7ICRSZXN1bHQtPnskRmllbGR9IH0sICRDdXJyZW50UmVzdWx0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJFZhbHVlID0gJERhdGF7JEZpZWxkfS0+WzFdLT57Q29udGVudH07CgogICAgICAgICAgICBuZXh0IEZJRUxEIGlmICFkZWZpbmVkICRWYWx1ZTsKCiAgICAgICAgICAgICRSZXN1bHQtPnskRmllbGR9ID0gJFZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX1BhcnNlRGF0YTJYTUwoKQoKdGhpcyBpcyBhIGludGVybmFsIGZ1bmN0aW9uIGZvciBfSVRTTVZlcnNpb25BZGQgdG8gcGFyc2UgdGhlIGFkZGl0aW9uYWwgZGF0YQpmb3IgeG1sIHN0b3JhZ2UuCgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9QYXJzZURhdGEyWE1MKAogICAgICAgIFBhcmVudCA9PiAkSWRlbnRpZmllciwgICAgICAgICAgIyBvcHRpb25hbDogY29udGFpbnMgdGhlIGZpZWxkIG5hbWUgb2YgdGhlIHBhcmVudCB4bWwKICAgICAgICBSZXN1bHQgPT4gJFJlc3VsdCwgICAgICAgICAgICAgICMgY29udGFpbnMgdGhlIHJlZmVyZW5jZSB0byB0aGUgcmVzdWx0IGhhc2gKICAgICAgICBEYXRhICAgPT4gJERhdGF7JEZpZWxkfS0+WzFdLCAgICMgY29udGFpbnMgdGhlIHhtbCBoYXNoIHdlIHdhbnQgdG8gcGFyc2UKICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfUGFyc2VEYXRhMlhNTCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRSZXN1bHQgPSAkUGFyYW17UmVzdWx0fTsKICAgIG15ICRQYXJlbnQgPSAkUGFyYW17UGFyZW50fSB8fCAnJzsKICAgIG15ICVEYXRhICAgPSAleyAkUGFyYW17RGF0YX0gfHwge30gfTsKCiAgICBJVEVNOgogICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJURhdGEgKSB7CiAgICAgICAgbmV4dCBJVEVNIGlmICRJdGVtSUQgZXEgJFBhcmVudDsKICAgICAgICBuZXh0IElURU0gaWYgJEl0ZW1JRCBlcSAnQ29udGVudCc7CgogICAgICAgIG15ICRJdGVtID0gJERhdGF7JEl0ZW1JRH07CgogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCRJdGVtKSApIHsKCiAgICAgICAgICAgICRSZXN1bHQtPnskSXRlbUlEfSA9IFt1bmRlZl07CgogICAgICAgICAgICBmb3IgbXkgJEluZGV4ICggMCAuLiAkI3skSXRlbX0gKSB7CiAgICAgICAgICAgICAgICBteSAkSXRlbURhdGEgPSAkSXRlbS0+WyRJbmRleF07CgogICAgICAgICAgICAgICAgcHVzaCBAeyAkUmVzdWx0LT57JEl0ZW1JRH0gfSwgewogICAgICAgICAgICAgICAgICAgICdDb250ZW50JyA9PiAkSXRlbS0+WyRJbmRleF0tPntDb250ZW50fSwKICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgJFNlbGYtPl9QYXJzZURhdGEyWE1MKAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICBQYXJlbnQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJFJlc3VsdC0+eyRJdGVtSUR9LT5bLTFdLAogICAgICAgICAgICAgICAgICAgIERhdGEgICA9PiAkRGF0YXskSXRlbUlEfS0+WyRJbmRleF0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUmVzdWx0LT57JEl0ZW1JRH0gPSBbCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnQ29udGVudCcgPT4gJEl0ZW0sCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfV2Vic2VydmljZUNyZWF0ZUlmTm90RXhpc3RzKCkKCmNyZWF0ZXMgd2ViIHNlcnZpY2VzIHRoYXQgbm90IGV4aXN0IHlldAoKICAgICMgaW5zdGFsbHMgYWxsIC55bWwgZmlsZXMgaW4gJE9UUlMvc2NyaXB0cy93ZWJzZXJ2aWNlcy8KICAgICMgbmFtZSBvZiB0aGUgZmlsZSB3aWxsIGJlIHRoZSBuYW1lIG9mIHRoZSB3ZWJzZXJ2aWNlCiAgICBteSAkUmVzdWx0ID0gJFpudW55SGVscGVyT2JqZWN0LT5fV2Vic2VydmljZUNyZWF0ZUlmTm90RXhpc3RzKAogICAgICAgIFN1YkRpciA9PiAnWm51bnk0T1RSU0Fzc2V0RGVzaycsICMgb3B0aW9uYWwKICAgICk7CgpPUjoKCiAgICBteSAkUmVzdWx0ID0gJFpudW55SGVscGVyT2JqZWN0LT5fV2Vic2VydmljZUNyZWF0ZUlmTm90RXhpc3RzKAogICAgICAgIFdlYnNlcnZpY2VzID0+IHsKICAgICAgICAgICAgJ05ldyBXZWJzZXJ2aWNlIDEyMzQnID0+ICcvcGF0aC90by9XZWJzZXJ2aWNlLnltbCcsCiAgICAgICAgICAgIC4uLgogICAgICAgIH0KICAgICk7Cgo9Y3V0CgpzdWIgX1dlYnNlcnZpY2VDcmVhdGVJZk5vdEV4aXN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRXZWJzZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKTsKICAgIG15ICRMb2dPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJE1haW5PYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwogICAgbXkgJFlBTUxPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKICAgIG15ICRXZWJzZXJ2aWNlcyA9ICRQYXJhbXtXZWJzZXJ2aWNlc307CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkV2Vic2VydmljZXMpICkgewogICAgICAgICRXZWJzZXJ2aWNlcyA9ICRTZWxmLT5fV2Vic2VydmljZXNHZXQoCiAgICAgICAgICAgIFN1YkRpciA9PiAkUGFyYW17U3ViRGlyfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkV2Vic2VydmljZXMpOwoKICAgIG15ICRXZWJzZXJ2aWNlTGlzdCA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlTGlzdCgpOwogICAgaWYgKCByZWYgJFdlYnNlcnZpY2VMaXN0IG5lICdIQVNIJyApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aGlsZSBnZXR0aW5nIGxpc3Qgb2YgV2Vic2VydmljZXMhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIFdFQlNFUlZJQ0U6CiAgICBmb3IgbXkgJFdlYnNlcnZpY2VOYW1lICggc29ydCBrZXlzICV7JFdlYnNlcnZpY2VzfSApIHsKCiAgICAgICAgIyBzdG9wIGlmIGFscmVhZHkgYWRkZWQKICAgICAgICBuZXh0IFdFQlNFUlZJQ0UgaWYgZ3JlcCB7ICRXZWJzZXJ2aWNlTmFtZSBlcSAkXyB9IHNvcnQgdmFsdWVzICV7JFdlYnNlcnZpY2VMaXN0fTsKCiAgICAgICAgbXkgJFdlYnNlcnZpY2VZQU1MUGF0aCA9ICRXZWJzZXJ2aWNlcy0+eyRXZWJzZXJ2aWNlTmFtZX07CgogICAgICAgICMgcmVhZCBjb25maWcKICAgICAgICBteSAkQ29udGVudCA9ICRNYWluT2JqZWN0LT5GaWxlUmVhZCgKICAgICAgICAgICAgTG9jYXRpb24gPT4gJFdlYnNlcnZpY2VZQU1MUGF0aCwKICAgICAgICAgICAgTW9kZSAgICAgPT4gJ3V0ZjgnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRDb250ZW50ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IHJlYWQgJFdlYnNlcnZpY2VZQU1MUGF0aCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgV0VCU0VSVklDRTsKICAgICAgICB9CgogICAgICAgIG15ICRDb25maWcgPSAkWUFNTE9iamVjdC0+TG9hZCggRGF0YSA9PiAkeyRDb250ZW50fSApOwogICAgICAgIGlmICggISRDb25maWcgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb3Igd2hpbGUgbG9hZGluZyAkV2Vic2VydmljZVlBTUxQYXRoISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBXRUJTRVJWSUNFOwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgd2Vic2VydmljZSB0byB0aGUgc3lzdGVtCiAgICAgICAgbXkgJFdlYnNlcnZpY2VJRCA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlQWRkKAogICAgICAgICAgICBOYW1lICAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgICAgICAgICAgQ29uZmlnICA9PiAkQ29uZmlnLAogICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBuZXh0IFdFQlNFUlZJQ0UgaWYgJFdlYnNlcnZpY2VJRDsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb3Igd2hpbGUgYWRkaW5nIFdlYnNlcnZpY2UgJyRXZWJzZXJ2aWNlTmFtZScgZnJvbSAkV2Vic2VydmljZVlBTUxQYXRoISIKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfV2Vic2VydmljZUNyZWF0ZSgpCgpjcmVhdGVzIG9yIHVwZGF0ZXMgd2ViIHNlcnZpY2VzCgogICAgIyBpbnN0YWxscyBhbGwgLnltbCBmaWxlcyBpbiAkT1RSUy9zY3JpcHRzL3dlYnNlcnZpY2VzLwogICAgIyBuYW1lIG9mIHRoZSBmaWxlIHdpbGwgYmUgdGhlIG5hbWUgb2YgdGhlIHdlYnNlcnZpY2UKICAgIG15ICRSZXN1bHQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9XZWJzZXJ2aWNlQ3JlYXRlKAogICAgICAgIFN1YkRpciA9PiAnWm51bnk0T1RSU0Fzc2V0RGVzaycsICMgb3B0aW9uYWwKICAgICk7CgpPUjoKCiAgICBteSAkUmVzdWx0ID0gJFpudW55SGVscGVyT2JqZWN0LT5fV2Vic2VydmljZUNyZWF0ZSgKICAgICAgICBXZWJzZXJ2aWNlcyA9PiB7CiAgICAgICAgICAgICdOZXcgV2Vic2VydmljZSAxMjM0JyA9PiAnL3BhdGgvdG8vV2Vic2VydmljZS55bWwnLAogICAgICAgICAgICAuLi4KICAgICAgICB9CiAgICApOwoKPWN1dAoKc3ViIF9XZWJzZXJ2aWNlQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFdlYnNlcnZpY2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpOwogICAgbXkgJExvZ09iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkTWFpbk9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICBteSAkWUFNTE9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgbXkgJFdlYnNlcnZpY2VzID0gJFBhcmFte1dlYnNlcnZpY2VzfTsKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRXZWJzZXJ2aWNlcykgKSB7CiAgICAgICAgJFdlYnNlcnZpY2VzID0gJFNlbGYtPl9XZWJzZXJ2aWNlc0dldCgKICAgICAgICAgICAgU3ViRGlyID0+ICRQYXJhbXtTdWJEaXJ9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDEgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRXZWJzZXJ2aWNlcyk7CgogICAgbXkgJFdlYnNlcnZpY2VMaXN0ID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VMaXN0KCk7CiAgICBpZiAoIHJlZiAkV2Vic2VydmljZUxpc3QgbmUgJ0hBU0gnICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkVycm9yIHdoaWxlIGdldHRpbmcgbGlzdCBvZiBXZWJzZXJ2aWNlcyEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBteSAlV2Vic2VydmljZUxpc3RSZXZlcnNlZCA9IHJldmVyc2UgJXskV2Vic2VydmljZUxpc3R9OwoKICAgIFdFQlNFUlZJQ0U6CiAgICBmb3IgbXkgJFdlYnNlcnZpY2VOYW1lICggc29ydCBrZXlzICV7JFdlYnNlcnZpY2VzfSApIHsKCiAgICAgICAgbXkgJFdlYnNlcnZpY2VJRCAgICAgICAgICAgPSAkU2VsZi0+X0l0ZW1SZXZlcnNlTGlzdEdldCggJFdlYnNlcnZpY2VOYW1lLCAlV2Vic2VydmljZUxpc3RSZXZlcnNlZCApOwogICAgICAgIG15ICRVcGRhdGVPckNyZWF0ZUZ1bmN0aW9uID0gJ1dlYnNlcnZpY2VBZGQnOwoKICAgICAgICBpZiAoJFdlYnNlcnZpY2VJRCkgewogICAgICAgICAgICAkVXBkYXRlT3JDcmVhdGVGdW5jdGlvbiA9ICdXZWJzZXJ2aWNlVXBkYXRlJzsKICAgICAgICB9CgogICAgICAgIG15ICRXZWJzZXJ2aWNlWUFNTFBhdGggPSAkV2Vic2VydmljZXMtPnskV2Vic2VydmljZU5hbWV9OwoKICAgICAgICAjIHJlYWQgY29uZmlnCiAgICAgICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgICAgIExvY2F0aW9uID0+ICRXZWJzZXJ2aWNlWUFNTFBhdGgsCiAgICAgICAgICAgIE1vZGUgICAgID0+ICd1dGY4JywKICAgICAgICApOwoKICAgICAgICBpZiAoICEkQ29udGVudCApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCByZWFkICRXZWJzZXJ2aWNlWUFNTFBhdGghIgogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFdFQlNFUlZJQ0U7CiAgICAgICAgfQoKICAgICAgICBteSAkQ29uZmlnID0gJFlBTUxPYmplY3QtPkxvYWQoIERhdGEgPT4gJHskQ29udGVudH0gKTsKICAgICAgICBpZiAoICEkQ29uZmlnICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkVycm9yIHdoaWxlIGxvYWRpbmcgJFdlYnNlcnZpY2VZQU1MUGF0aCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgV0VCU0VSVklDRTsKICAgICAgICB9CgogICAgICAgICMgYWRkIG9yIHVwZGF0ZSB3ZWJzZXJ2aWNlCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkV2Vic2VydmljZU9iamVjdC0+JFVwZGF0ZU9yQ3JlYXRlRnVuY3Rpb24oCiAgICAgICAgICAgIElEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgTmFtZSAgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICAgICAgICAgIENvbmZpZyAgPT4gJENvbmZpZywKICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBXRUJTRVJWSUNFIGlmICRTdWNjZXNzOwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aGlsZSB1cGRhdGluZy9hZGRpbmcgV2Vic2VydmljZSAnJFdlYnNlcnZpY2VOYW1lJyBmcm9tICRXZWJzZXJ2aWNlWUFNTFBhdGghIgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9XZWJzZXJ2aWNlRGVsZXRlKCkKCmRlbGV0ZXMgd2ViIHNlcnZpY2VzCgogICAgIyBkZWxldGVzIGFsbCAueW1sIGZpbGVzIHdlYnNlcnZpY2VzIGluICRPVFJTL3NjcmlwdHMvd2Vic2VydmljZXMvCiAgICAjIG5hbWUgb2YgdGhlIGZpbGUgd2lsbCBiZSB0aGUgbmFtZSBvZiB0aGUgd2Vic2VydmljZQogICAgbXkgJFJlc3VsdCA9ICRabnVueUhlbHBlck9iamVjdC0+X1dlYnNlcnZpY2VEZWxldGUoCiAgICAgICAgU3ViRGlyID0+ICdabnVueTRPVFJTQXNzZXREZXNrJywgIyBvcHRpb25hbAogICAgKTsKCk9SOgoKICAgIG15ICRSZXN1bHQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9XZWJzZXJ2aWNlRGVsZXRlKAogICAgICAgIFdlYnNlcnZpY2VzID0+IHsKICAgICAgICAgICAgJ05vdCBuZWVkZWQgV2Vic2VydmljZSAxMjM0JyA9PiAxLCAjIHZhbHVlIGlzIG5vdCB1c2VkCiAgICAgICAgICAgIC4uLgogICAgICAgIH0KICAgICk7Cgo9Y3V0CgpzdWIgX1dlYnNlcnZpY2VEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICBteSAkV2Vic2VydmljZXMgPSAkUGFyYW17V2Vic2VydmljZXN9OwogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFdlYnNlcnZpY2VzKSApIHsKICAgICAgICAkV2Vic2VydmljZXMgPSAkU2VsZi0+X1dlYnNlcnZpY2VzR2V0KAogICAgICAgICAgICBTdWJEaXIgPT4gJFBhcmFte1N1YkRpcn0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJFdlYnNlcnZpY2VzKTsKCiAgICBteSAkV2Vic2VydmljZUxpc3QgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUxpc3QoKTsKICAgIGlmICggcmVmICRXZWJzZXJ2aWNlTGlzdCBuZSAnSEFTSCcgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb3Igd2hpbGUgZ2V0dGluZyBsaXN0IG9mIFdlYnNlcnZpY2VzISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIG15ICVXZWJzZXJ2aWNlTGlzdFJldmVyc2VkID0gcmV2ZXJzZSAleyRXZWJzZXJ2aWNlTGlzdH07CgogICAgV0VCU0VSVklDRToKICAgIGZvciBteSAkV2Vic2VydmljZU5hbWUgKCBzb3J0IGtleXMgJXskV2Vic2VydmljZXN9ICkgewoKICAgICAgICAjIHN0b3AgaWYgYWxyZWFkeSBkZWxldGVkCiAgICAgICAgbmV4dCBXRUJTRVJWSUNFIGlmICEkV2Vic2VydmljZUxpc3RSZXZlcnNlZHskV2Vic2VydmljZU5hbWV9OwoKICAgICAgICAjIGRlbGV0ZSB3ZWJzZXJ2aWNlCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZURlbGV0ZSgKICAgICAgICAgICAgSUQgICAgID0+ICRXZWJzZXJ2aWNlTGlzdFJldmVyc2VkeyRXZWJzZXJ2aWNlTmFtZX0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkVycm9yIHdoaWxlIGRlbGV0aW5nIFdlYnNlcnZpY2UgJyRXZWJzZXJ2aWNlTmFtZSchIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfV2Vic2VydmljZXNHZXQoKQoKZ2V0cyBhIGxpc3Qgb2YgLnltbCBmaWxlcyBmcm9tICRPVE9CTy9zY3JpcHRzL3dlYnNlcnZpY2VzCgogICAgbXkgJFJlc3VsdCA9ICRabnVueUhlbHBlck9iamVjdC0+X1dlYnNlcnZpY2VzR2V0KAogICAgICAgIFN1YkRpciA9PiAnWm51bnk0T1RSU0Fzc2V0RGVzaycsICMgb3B0aW9uYWwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICAnV2Vic2VydmljZScgICAgICAgICAgPT4gJyRPVFJTL3NjcmlwdHMvd2Vic2VydmljZXMvWm51bnk0T1RSU0Fzc2V0RGVzay9XZWJzZXJ2aWNlLnltbCcsCiAgICAgICAgJ05ldyBXZWJzZXJ2aWNlIDEyMzQnID0+ICckT1RSUy9zY3JpcHRzL3dlYnNlcnZpY2VzL1pudW55NE9UUlNBc3NldERlc2svTmV3IFdlYnNlcnZpY2UgMTIzNC55bWwnLAogICAgfQoKPWN1dAoKc3ViIF9XZWJzZXJ2aWNlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJE1haW5PYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJFdlYnNlcnZpY2VEaXJlY3RvcnkgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0hvbWUnKQogICAgICAgIC4gJy9zY3JpcHRzL3dlYnNlcnZpY2VzJzsKCiAgICBpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtTdWJEaXJ9ICkgKSB7CiAgICAgICAgJFdlYnNlcnZpY2VEaXJlY3RvcnkgLj0gJy8nIC4gJFBhcmFte1N1YkRpcn07CiAgICB9CgogICAgbXkgQEZpbGVzSW5EaXJlY3RvcnkgPSAkTWFpbk9iamVjdC0+RGlyZWN0b3J5UmVhZCgKICAgICAgICBEaXJlY3RvcnkgPT4gJFdlYnNlcnZpY2VEaXJlY3RvcnksCiAgICAgICAgRmlsdGVyICAgID0+ICcqLnltbCcsCiAgICApOwoKICAgIG15ICVXZWJzZXJ2aWNlczsKICAgIGZvciBteSAkRmlsZVdpdGhQYXRoIChARmlsZXNJbkRpcmVjdG9yeSkgewoKICAgICAgICBteSAkV2Vic2VydmljZU5hbWUgPSAkRmlsZVdpdGhQYXRoOwogICAgICAgICRXZWJzZXJ2aWNlTmFtZSA9fiBze1xBIC4rPyBcLyAoW15cL10rKSBcLiB5bWwgXHp9eyQxfXhtczsKCiAgICAgICAgJFdlYnNlcnZpY2VzeyRXZWJzZXJ2aWNlTmFtZX0gPSAkRmlsZVdpdGhQYXRoOwogICAgfQoKICAgIHJldHVybiBcJVdlYnNlcnZpY2VzOwp9Cgo9aXRlbSBfUmVidWlsZENvbmZpZygpCgpSZWJ1aWxkcyBPVFJTIGNvbmZpZy4KCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1JlYnVpbGRDb25maWcoKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9SZWJ1aWxkQ29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKCiAgICAjIFJlYnVpbGQgdGhlIGNvbmZpZ3VyYXRpb24KICAgICRTeXNDb25maWdPYmplY3QtPkNvbmZpZ3VyYXRpb25EZXBsb3koCiAgICAgICAgQWxsU2V0dGluZ3MgPT4gMSwKICAgICAgICBGb3JjZSAgICAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICApOwoKICAgIGRlbGV0ZSAkSU5DeydLZXJuZWwvQ29uZmlnL0ZpbGVzL1paWkFBdXRvLnBtJ307CgogICAgIyBEb24ndCB1c2UgT2JqZWN0RGlzY2FyZCBvZiBPYmplY3RNYW5hZ2VyIGJlY2F1c2UKICAgICMgcmVzdG9yZSBkYXRhYmFzZSB3aWxsIG5vdCB3b3JrIGFueW1vcmUgKGluIHRlc3RzKS4KICAgIGRlbGV0ZSAkS2VybmVsOjpPTS0+e09iamVjdHN9LT57J0tlcm5lbDo6Q29uZmlnJ307CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX1Byb2Nlc3NDcmVhdGVJZk5vdEV4aXN0cygpCgpjcmVhdGVzIHByb2Nlc3NlcyBpZiB0aGVyZSBpcyBubyBhY3RpdmUgcHJvY2VzcyB3aXRoIHRoZSBzYW1lIG5hbWUKCiAgICAjIGluc3RhbGxzIGFsbCAueW1sIGZpbGVzIGluICRPVFJTL3NjcmlwdHMvcHJvY2Vzc2VzLwogICAgIyBuYW1lIG9mIHRoZSBmaWxlIHdpbGwgYmUgdGhlIG5hbWUgb2YgdGhlIHByb2Nlc3MKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fUHJvY2Vzc0NyZWF0ZUlmTm90RXhpc3RzKAogICAgICAgIFN1YkRpciA9PiAnWm51bnk0T1RSU0Fzc2V0RGVzaycsICMgb3B0aW9uYWwKICAgICk7CgpPUjoKCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1Byb2Nlc3NDcmVhdGVJZk5vdEV4aXN0cygKICAgICAgICBQcm9jZXNzZXMgPT4gewogICAgICAgICAgICAnTmV3IFByb2Nlc3MgMTIzNCcgPT4gJy9wYXRoL3RvL1Byb2Nlc3MueW1sJywKICAgICAgICAgICAgLi4uCiAgICAgICAgfQogICAgKTsKCj1jdXQKCnN1YiBfUHJvY2Vzc0NyZWF0ZUlmTm90RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJE1haW5PYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICBteSAkWUFNTE9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKICAgIG15ICREQlByb2Nlc3NPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OkRCOjpQcm9jZXNzJyk7CiAgICBteSAkRW50aXR5T2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlByb2Nlc3NNYW5hZ2VtZW50OjpEQjo6RW50aXR5Jyk7CgogICAgbXkgJFByb2Nlc3NlczsKICAgIGlmICggZXhpc3RzICRQYXJhbXtQcm9jZXNzZXN9ICkgewogICAgICAgICRQcm9jZXNzZXMgPSAkUGFyYW17UHJvY2Vzc2VzfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRQcm9jZXNzZXMgPSAkU2VsZi0+X1Byb2Nlc3Nlc0dldCgKICAgICAgICAgICAgU3ViRGlyID0+ICRQYXJhbXtTdWJEaXJ9LCAgICAjIFN1YkRpciBjYW4gYmUgdW5kZWYKICAgICAgICApOwogICAgfQoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRQcm9jZXNzZXMpICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05vIHByb2Nlc3NlcyBmb3VuZCBmb3IgZ2l2ZW4gcGFyYW1ldGVycy4nLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkUHJvY2Vzc0xpc3QgPSAkREJQcm9jZXNzT2JqZWN0LT5Qcm9jZXNzTGlzdEdldCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoJFByb2Nlc3NMaXN0KSApIHsKICAgICAgICAkUHJvY2Vzc0xpc3QgPSBbXTsKICAgIH0KCiAgICBQUk9DRVNTOgogICAgZm9yIG15ICRQcm9jZXNzTmFtZSAoIHNvcnQga2V5cyAleyRQcm9jZXNzZXN9ICkgewoKICAgICAgICBteSAkUHJvY2Vzc1lBTUxQYXRoID0gJFByb2Nlc3Nlcy0+eyRQcm9jZXNzTmFtZX07CgogICAgICAgICMgcmVhZCBjb25maWcKICAgICAgICBteSAkQ29udGVudCA9ICRNYWluT2JqZWN0LT5GaWxlUmVhZCgKICAgICAgICAgICAgTG9jYXRpb24gPT4gJFByb2Nlc3NZQU1MUGF0aCwKICAgICAgICAgICAgTW9kZSAgICAgPT4gJ3V0ZjgnLAogICAgICAgICk7CgogICAgICAgIGlmICggIWRlZmluZWQgJENvbnRlbnQgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgcmVhZCAkUHJvY2Vzc1lBTUxQYXRoISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG15ICRQcm9jZXNzRGF0YSA9ICRZQU1MT2JqZWN0LT5Mb2FkKCBEYXRhID0+ICR7JENvbnRlbnR9ICk7CiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFByb2Nlc3NEYXRhKSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJZQU1MIHBhcnNpbmcgZmFpbGVkIGZvciBmaWxlICRQcm9jZXNzWUFNTFBhdGghIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRQcm9jZXNzRGF0YS0+e1Byb2Nlc3N9ICkgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gcHJvY2VzcyBmb3VuZCBpbiBmaWxlICRQcm9jZXNzWUFNTFBhdGghIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhSXNTdHJpbmdXaXRoRGF0YSggJFByb2Nlc3NEYXRhLT57UHJvY2Vzc30tPntOYW1lfSApICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlByb2Nlc3MgaGFzIG5vIG5hbWUgaW4gZmlsZSAkUHJvY2Vzc1lBTUxQYXRoISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmICggISRQYXJhbXtVcGRhdGVFeGlzdGluZ30gKSB7CiAgICAgICAgICAgIEVYSVNUSU5HUFJPQ0VTUzoKICAgICAgICAgICAgZm9yIG15ICRFeGlzdGluZ1Byb2Nlc3MgKCBAeyRQcm9jZXNzTGlzdH0gKSB7CgogICAgICAgICAgICAgICAgbmV4dCBFWElTVElOR1BST0NFU1MgaWYgIWRlZmluZWQgJEV4aXN0aW5nUHJvY2Vzcy0+e05hbWV9OwogICAgICAgICAgICAgICAgbmV4dCBFWElTVElOR1BST0NFU1MgaWYgJEV4aXN0aW5nUHJvY2Vzcy0+e05hbWV9IG5lICRQcm9jZXNzRGF0YS0+e1Byb2Nlc3N9LT57TmFtZX07CiAgICAgICAgICAgICAgICBuZXh0IEVYSVNUSU5HUFJPQ0VTUyBpZiAhZGVmaW5lZCAkRXhpc3RpbmdQcm9jZXNzLT57U3RhdGV9OwogICAgICAgICAgICAgICAgbmV4dCBFWElTVElOR1BST0NFU1MgaWYgJEV4aXN0aW5nUHJvY2Vzcy0+e1N0YXRlfSBuZSAnQWN0aXZlJzsKCiAgICAgICAgICAgICAgICBuZXh0IFBST0NFU1M7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVQcm9jZXNzSW1wb3J0ID0gJERCUHJvY2Vzc09iamVjdC0+UHJvY2Vzc0ltcG9ydCgKICAgICAgICAgICAgQ29udGVudCAgICAgICAgICAgICAgICAgICA9PiAkeyRDb250ZW50fSwKICAgICAgICAgICAgT3ZlcndyaXRlRXhpc3RpbmdFbnRpdGllcyA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAhJVByb2Nlc3NJbXBvcnQKICAgICAgICAgICAgfHwgISRQcm9jZXNzSW1wb3J0e1N1Y2Nlc3N9CiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAkUHJvY2Vzc0ltcG9ydHtNZXNzYWdlfSAvLz0gJyc7CgogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiSW1wb3J0aW5nIHByb2Nlc3MgJyRQcm9jZXNzRGF0YS0+e1Byb2Nlc3N9LT57TmFtZX0nIGZyb20gZmlsZSAnJFByb2Nlc3NZQU1MUGF0aCcgZmFpbGVkLlxuIgogICAgICAgICAgICAgICAgICAgIC4gIlx0QmFja2VuZCBFcnJvciBNZXNzYWdlOlxuXHQkUHJvY2Vzc0ltcG9ydHtNZXNzYWdlfSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgU3luY2hyb25pemUgbmV3bHkgY3JlYXRlZCBwcm9jZXNzZXMKICAgIG15ICRDb25maWdGaWxlTG9jYXRpb24gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0hvbWUnKSAuICcvS2VybmVsL0NvbmZpZy9GaWxlcy9aWlpQcm9jZXNzTWFuYWdlbWVudC5wbSc7CgogICAgbXkgJFByb2Nlc3NEdW1wID0gJERCUHJvY2Vzc09iamVjdC0+UHJvY2Vzc0R1bXAoCiAgICAgICAgUmVzdWx0VHlwZSA9PiAnRklMRScsCiAgICAgICAgTG9jYXRpb24gICA9PiAkQ29uZmlnRmlsZUxvY2F0aW9uLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CiAgICBpZiAoICEkUHJvY2Vzc0R1bXAgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnRXJyb3Igd2hpbGUgZHVtcGluZyBwcm9jZXNzZXMgdmlhIFByb2Nlc3NEdW1wKCkuJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFN5bmNocm9uaXplZCA9ICRFbnRpdHlPYmplY3QtPkVudGl0eVN5bmNTdGF0ZVB1cmdlKAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIGlmICggISRTeW5jaHJvbml6ZWQgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnRXJyb3Igc3luY2hyb25pemluZyBwcm9jZXNzZXMuJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9Qcm9jZXNzQ3JlYXRlKCkKCmNyZWF0ZXMgb3IgdXBkYXRlcyBwcm9jZXNzZXMKCiAgICAjIGluc3RhbGxzIGFsbCAueW1sIGZpbGVzIGluICRPVFJTL3NjcmlwdHMvcHJvY2Vzc2VzLwogICAgIyBuYW1lIG9mIHRoZSBmaWxlIHdpbGwgYmUgdGhlIG5hbWUgb2YgdGhlIHByb2Nlc3MKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fUHJvY2Vzc0NyZWF0ZSgKICAgICAgICBTdWJEaXIgPT4gJ1pudW55NE9UUlNBc3NldERlc2snLCAjIG9wdGlvbmFsCiAgICApOwoKT1I6CgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9Qcm9jZXNzQ3JlYXRlKAogICAgICAgIFByb2Nlc3NlcyA9PiB7CiAgICAgICAgICAgICdOZXcgUHJvY2VzcyAxMjM0JyA9PiAnL3BhdGgvdG8vUHJvY2Vzcy55bWwnLAogICAgICAgICAgICAuLi4KICAgICAgICB9CiAgICApOwoKPWN1dAoKc3ViIF9Qcm9jZXNzQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5fUHJvY2Vzc0NyZWF0ZUlmTm90RXhpc3RzKAogICAgICAgICVQYXJhbSwKICAgICAgICBVcGRhdGVFeGlzdGluZyA9PiAxLAogICAgKTsKfQoKPWl0ZW0gX1Byb2Nlc3Nlc0dldCgpCgpnZXRzIGEgbGlzdCBvZiAueW1sIGZpbGVzIGZyb20gJE9UT0JPL3NjcmlwdHMvcHJvY2Vzc2VzCgogICAgbXkgJFJlc3VsdCA9ICRabnVueUhlbHBlck9iamVjdC0+X1Byb2Nlc3Nlc0dldCgKICAgICAgICBTdWJEaXIgPT4gJ1pudW55NE9UUlNBc3NldERlc2snLCAjIG9wdGlvbmFsCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgJ1Byb2Nlc3MnICAgICAgICAgID0+ICckT1RSUy9zY3JpcHRzL3Byb2Nlc3Nlcy9abnVueTRPVFJTQXNzZXREZXNrL1Byb2Nlc3MueW1sJywKICAgICAgICAnTmV3IFByb2Nlc3MgMTIzNCcgPT4gJyRPVFJTL3NjcmlwdHMvcHJvY2Vzc2VzL1pudW55NE9UUlNBc3NldERlc2svTmV3IFByb2Nlc3MgMTIzNC55bWwnLAogICAgfQoKPWN1dAoKc3ViIF9Qcm9jZXNzZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRNYWluT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgIG15ICRQcm9jZXNzRGlyZWN0b3J5ID0gJENvbmZpZ09iamVjdC0+R2V0KCdIb21lJykKICAgICAgICAuICcvc2NyaXB0cy9wcm9jZXNzZXMnOwoKICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte1N1YkRpcn0gKSApIHsKICAgICAgICAkUHJvY2Vzc0RpcmVjdG9yeSAuPSAnLycgLiAkUGFyYW17U3ViRGlyfTsKICAgIH0KCiAgICBteSBARmlsZXNJbkRpcmVjdG9yeSA9ICRNYWluT2JqZWN0LT5EaXJlY3RvcnlSZWFkKAogICAgICAgIERpcmVjdG9yeSA9PiAkUHJvY2Vzc0RpcmVjdG9yeSwKICAgICAgICBGaWx0ZXIgICAgPT4gJyoueW1sJywKICAgICk7CgogICAgbXkgJVByb2Nlc3NlczsKICAgIGZvciBteSAkRmlsZVdpdGhQYXRoIChARmlsZXNJbkRpcmVjdG9yeSkgewoKICAgICAgICBteSAkUHJvY2Vzc05hbWUgPSAkRmlsZVdpdGhQYXRoOwogICAgICAgICRQcm9jZXNzTmFtZSA9fiBze1xBIC4rPyBcLyAoW15cL10rKSBcLiB5bWwgXHp9eyQxfXhtczsKCiAgICAgICAgJFByb2Nlc3Nlc3skUHJvY2Vzc05hbWV9ID0gJEZpbGVXaXRoUGF0aDsKICAgIH0KCiAgICByZXR1cm4gXCVQcm9jZXNzZXM7Cn0KCj1pdGVtIF9Qcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzR2V0KCkKCmdldHMgUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3VwcwoKICAgICMgZ2V0IFByb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHMKICAgIG15ICVQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzID0gJFpudW55SGVscGVyT2JqZWN0LT5fUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3Vwc0dldCgpOwoKICAgIHJldHVybjoKCiAgICAlUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3VwcyA9ICgKICAgICAgICBHcm91cDEgPSBbCiAgICAgICAgICAgICdEeW5hbWljRmllbGQxJywKICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZDMnLAogICAgICAgIF0sCiAgICAgICAgR3JvdXAyID0gWwogICAgICAgICAgICAnRHluYW1pY0ZpZWxkMicsCiAgICAgICAgXSwKICAgICk7Cgo9Y3V0CgpzdWIgX1Byb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMb2dPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgbXkgJEFnZW50VGlja2V0Wm9vbUNvbmZpZyAgICAgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1RpY2tldDo6RnJvbnRlbmQ6OkFnZW50VGlja2V0Wm9vbScpOwogICAgbXkgJVByb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHMgPSAleyAkQWdlbnRUaWNrZXRab29tQ29uZmlnLT57UHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3Vwc30gfTsKCiAgICByZXR1cm4gaWYgISVQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzOwoKICAgIG15ICVDb25maWc7CiAgICBmb3IgbXkgJEdyb3VwICggc29ydCBrZXlzICVQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzICkgewoKICAgICAgICBteSBARHluYW1pY0ZpZWxkcyA9IHNwbGl0IC9cLC8sICRQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzeyRHcm91cH07CiAgICAgICAgJENvbmZpZ3skR3JvdXB9ID0gXEBEeW5hbWljRmllbGRzIHx8IFtdOwogICAgfQoKICAgIHJldHVybiAlQ29uZmlnOwoKfQoKPWl0ZW0gX1Byb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHNBZGQoKQoKZ2V0cyBQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzCgogICAgbXkgJVByb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHMgPSAoCiAgICAgICAgR3JvdXAxID0gWwogICAgICAgICAgICAnRHluYW1pY0ZpZWxkMScsCiAgICAgICAgICAgICdEeW5hbWljRmllbGQzJywKICAgICAgICBdLAogICAgICAgIEdyb3VwMiA9IFsKICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZDInLAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3Vwc0FkZCgKICAgICAgICAlUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3VwcwogICAgKTsKCj1jdXQKCnN1YiBfUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3Vwc0FkZCB7CiAgICBteSAoICRTZWxmLCAlR3JvdXBzICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMb2dPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwoKICAgIG15ICVQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzID0gJFNlbGYtPl9Qcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzR2V0KCk7CgogICAgbXkgJU5ld0R5bmFtaWNGaWVsZENvbmZpZzsKICAgIG15ICRBZ2VudFRpY2tldFpvb21Db25maWcgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20nKTsKICAgIG15ICVDdXJyZW50RHluYW1pY0ZpZWxkQ29uZmlnID0gJXsgJEFnZW50VGlja2V0Wm9vbUNvbmZpZy0+e1Byb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHN9IH07CgogICAgR1JPVVA6CiAgICBmb3IgbXkgJEdyb3VwICggc29ydCBrZXlzICVHcm91cHMgKSB7CgogICAgICAgIG15ICROZXdEeW5hbWljRmllbGRzOwogICAgICAgIG15IEBOZXdEeW5hbWljRmllbGRzOwogICAgICAgIG15IEBDdXJyZW50RHluYW1pY0ZpZWxkczsKCiAgICAgICAgaWYgKCAkUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3Vwc3skR3JvdXB9ICkgewoKICAgICAgICAgICAgQEN1cnJlbnREeW5hbWljRmllbGRzID0gQHsgJFByb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHN7JEdyb3VwfSB9OwogICAgICAgICAgICBwdXNoIEBOZXdEeW5hbWljRmllbGRzLCBAQ3VycmVudER5bmFtaWNGaWVsZHM7CiAgICAgICAgfQoKICAgICAgICBORVdEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGROYW1lICggQHsgJEdyb3Vwc3skR3JvdXB9IH0gKSB7CgogICAgICAgICAgICBteSAkRXhpc3RzID0gZ3JlcCB7ICREeW5hbWljRmllbGROYW1lIGVxICRfIH0gQEN1cnJlbnREeW5hbWljRmllbGRzOwoKICAgICAgICAgICAgIyBuZXh0IGR5bmFtaWMgZmllbGQgaWYgYWxyZWFkeSBleGlzdHMKICAgICAgICAgICAgbmV4dCBORVdEWU5BTUlDRklFTEQgaWYgJEV4aXN0czsKCiAgICAgICAgICAgIHB1c2ggQE5ld0R5bmFtaWNGaWVsZHMsICREeW5hbWljRmllbGROYW1lOwogICAgICAgIH0KCiAgICAgICAgJE5ld0R5bmFtaWNGaWVsZHMgLj0gam9pbiAnLCcsIEBOZXdEeW5hbWljRmllbGRzOwogICAgICAgICROZXdEeW5hbWljRmllbGRDb25maWd7JEdyb3VwfSA9ICROZXdEeW5hbWljRmllbGRzOwogICAgfQoKICAgICVOZXdEeW5hbWljRmllbGRDb25maWcgPSAoCiAgICAgICAgJUN1cnJlbnREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgJU5ld0R5bmFtaWNGaWVsZENvbmZpZywKICAgICk7CgogICAgbXkgJFN5c0NvbmZpZ0tleSA9ICdUaWNrZXQ6OkZyb250ZW5kOjpBZ2VudFRpY2tldFpvb20jIyNQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzJzsKCiAgICBteSAkU3VjY2VzcyA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFNldHRpbmdzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJFN5c0NvbmZpZ0tleSwKICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiBcJU5ld0R5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgICAgIENvbW1lbnRzID0+ICdQcm9jZXNzIHdpZGdldCBkeW5hbWljIGZpZWxkIGdyb3VwcyBzZXR0aW5ncyBhZGRlZC4nLAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICApOwoKICAgICMgcmVsb2FkIHRoZSBaWlogZmlsZXMKICAgICMgZ2V0IGEgbmV3IGNvbmZpZyBvYmplY3QgdG8gbWFrZSBzdXJlIGNvbmZpZyBpcyB1cGRhdGVkCiAgICAkU2VsZi0+X1JlYnVpbGRDb25maWcoKTsKCiAgICByZXR1cm4gMSBpZiAkU3VjY2VzczsKCiAgICByZXR1cm4gMDsKfQoKPWl0ZW0gX1Byb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHNSZW1vdmUoKQoKZ2V0cyBQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzCgogICAgbXkgJVByb2Nlc3NXaWRnZXREeW5hbWljRmllbGRHcm91cHMgPSAoCiAgICAgICAgR3JvdXAxID0gWwogICAgICAgICAgICAnRHluYW1pY0ZpZWxkMScsCiAgICAgICAgICAgICdEeW5hbWljRmllbGQzJywKICAgICAgICBdLAogICAgICAgIEdyb3VwMiA9IFtdLCAgICAgICAgICAgICMgZGVsZXRlcyB0aGUgd2hvbGUgZ3JvdXAKICAgICk7CgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9Qcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzUmVtb3ZlKAogICAgICAgICVQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzCiAgICApOwoKPWN1dAoKc3ViIF9Qcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzUmVtb3ZlIHsKICAgIG15ICggJFNlbGYsICVHcm91cHMgKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwoKICAgIG15ICVQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzID0gJFNlbGYtPl9Qcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzR2V0KCk7CiAgICBteSAlTmV3RHluYW1pY0ZpZWxkQ29uZmlnOwoKICAgIEdST1VQOgogICAgZm9yIG15ICRHcm91cCAoIHNvcnQga2V5cyAlUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3VwcyApIHsKCiAgICAgICAgbXkgJE5ld0R5bmFtaWNGaWVsZHM7CgogICAgICAgIGlmICggISRHcm91cHN7JEdyb3VwfSApIHsKICAgICAgICAgICAgJE5ld0R5bmFtaWNGaWVsZHMgICAgICAgICAgICAgID0gam9pbiAnLCcsIEB7ICRQcm9jZXNzV2lkZ2V0RHluYW1pY0ZpZWxkR3JvdXBzeyRHcm91cH0gfTsKICAgICAgICAgICAgJE5ld0R5bmFtaWNGaWVsZENvbmZpZ3skR3JvdXB9ID0gJE5ld0R5bmFtaWNGaWVsZHM7CiAgICAgICAgICAgIG5leHQgR1JPVVA7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB3aG9sZSBncm91cCBpZiBhcnJheSBpcyBlbXB0eQogICAgICAgIG5leHQgR1JPVVAgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSggJEdyb3Vwc3skR3JvdXB9ICk7CgogICAgICAgIG15IEBOZXdEeW5hbWljRmllbGRzOwogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKCBAeyAkUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3Vwc3skR3JvdXB9IH0gKSB7CgogICAgICAgICAgICBteSAkRXhpc3RzID0gZ3JlcCB7ICREeW5hbWljRmllbGROYW1lIGVxICRfIH0gQHsgJEdyb3Vwc3skR3JvdXB9IH07CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRXhpc3RzOwogICAgICAgICAgICBwdXNoIEBOZXdEeW5hbWljRmllbGRzLCAkRHluYW1pY0ZpZWxkTmFtZTsKCiAgICAgICAgfQoKICAgICAgICAkTmV3RHluYW1pY0ZpZWxkcyA9IGpvaW4gJywnLCBATmV3RHluYW1pY0ZpZWxkczsKCiAgICAgICAgIyByZW1vdmVzIGVtcHR5IGdyb3VwcwogICAgICAgIG5leHQgR1JPVVAgaWYgISROZXdEeW5hbWljRmllbGRzOwogICAgICAgICROZXdEeW5hbWljRmllbGRDb25maWd7JEdyb3VwfSA9ICROZXdEeW5hbWljRmllbGRzOwogICAgfQoKICAgIG15ICRTeXNDb25maWdLZXkgPSAnVGlja2V0OjpGcm9udGVuZDo6QWdlbnRUaWNrZXRab29tIyMjUHJvY2Vzc1dpZGdldER5bmFtaWNGaWVsZEdyb3Vwcyc7CgogICAgbXkgJFN1Y2Nlc3MgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nc1NldCgKICAgICAgICBTZXR0aW5ncyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICRTeXNDb25maWdLZXksCiAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gXCVOZXdEeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBDb21tZW50cyA9PiAnUHJvY2VzcyB3aWRnZXQgZHluYW1pYyBmaWVsZCBncm91cHMgc2V0dGluZ3MgcmVtb3ZlZC4nLAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICApOwoKICAgICMgcmVsb2FkIHRoZSBaWlogZmlsZXMKICAgICMgZ2V0IGEgbmV3IGNvbmZpZyBvYmplY3QgdG8gbWFrZSBzdXJlIGNvbmZpZyBpcyB1cGRhdGVkCiAgICAkU2VsZi0+X1JlYnVpbGRDb25maWcoKTsKCiAgICByZXR1cm4gMSBpZiAkU3VjY2VzczsKCiAgICByZXR1cm4gMDsKfQoKPWl0ZW0gX01vZHVsZUdyb3VwQWRkKCkKClRoaXMgZnVuY3Rpb24gYWRkcyBvbmUgb3IgbW9yZSBncm91cHMgdG8gdGhlIGxpc3Qgb2YgZ3JvdXBzIG9mIGEgZnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgYW55IGludGVyZmFjZS4KCiAgICBteSAkU3VjY2VzcyA9ICRIZWxwZXJPYmplY3QtPl9Nb2R1bGVHcm91cEFkZCgKICAgICAgICBNb2R1bGUgPT4gJ0FkbWluJywKICAgICAgICBHcm91cCAgPT4gWwogICAgICAgICAgICAndXNlcnMnLAogICAgICAgIF0sCiAgICAgICAgR3JvdXBSbyA9PiBbCiAgICAgICAgICAgICdzb21lX290aGVyX2dyb3VwJwogICAgICAgIF0sCiAgICAgICAgRnJvbnRlbmQgPT4gJ0Zyb250ZW5kOjpNb2R1bGUnLCAjIEZyb250ZW5kOjpNb2R1bGUgKGRlZmF1bHQpLCBQdWJsaWNGcm9udGVuZDo6TW9kdWxlLCBDdXN0b21lckZyb250ZW5kOjpNb2R1bGUKICAgICk7Cgo9Y3V0CgpzdWIgX01vZHVsZUdyb3VwQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgbXkgJExvZ09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KE1vZHVsZSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKAogICAgICAgICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtHcm91cH0gKQogICAgICAgICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtHcm91cFJvfSApCiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICRQYXJhbXtGcm9udGVuZH0gfHw9ICdGcm9udGVuZDo6TW9kdWxlJzsKCiAgICBteSAkRnJvbnRlbmRMaXN0ID0gJENvbmZpZ09iamVjdC0+R2V0KCAkUGFyYW17RnJvbnRlbmR9ICk7CiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRGcm9udGVuZExpc3QpOwoKICAgICMgU3BsaXQgbW9kdWxlICJwYXRoIiAoZS4gZy4gQWRtaW4jIyMwMDEtRnJhbWV3b3JrKQogICAgbXkgJE1vZHVsZSA9ICRQYXJhbXtNb2R1bGV9OwogICAgbXkgQE1vZHVsZVBhdGhFbGVtZW50cyA9IHNwbGl0IC8jIyMvLCAkTW9kdWxlOwoKICAgIG15ICRNb2R1bGVSZWdpc3RyYXRpb24gPSAkRnJvbnRlbmRMaXN0OwogICAgZm9yIG15ICRNb2R1bGVQYXRoRWxlbWVudCAoQE1vZHVsZVBhdGhFbGVtZW50cykgewogICAgICAgICRNb2R1bGVSZWdpc3RyYXRpb24gPSAkTW9kdWxlUmVnaXN0cmF0aW9uLT57JE1vZHVsZVBhdGhFbGVtZW50fTsKICAgICAgICByZXR1cm4gaWYgISRNb2R1bGVSZWdpc3RyYXRpb247CiAgICB9CgogICAgcmV0dXJuIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJE1vZHVsZVJlZ2lzdHJhdGlvbikgJiYgIUlzSGFzaFJlZldpdGhEYXRhKCRNb2R1bGVSZWdpc3RyYXRpb24pOwogICAgbXkgJElzQXJyYXkgPSBJc0FycmF5UmVmV2l0aERhdGEoJE1vZHVsZVJlZ2lzdHJhdGlvbik7CgogICAgIyBTb21lIGNvbmZpZyBzZXR0aW5ncyBhcmUgaGFzaGVzLCBzb21lIGFyZSBhcnJheXMgb2YgaGFzaGVzLgogICAgIyBUdXJuIGFsbCBpbnRvIGFycmF5cyB0ZW1wb3JhcmlseSBmb3IgZWFzaWVyIGhhbmRsaW5nLgogICAgaWYgKCAhJElzQXJyYXkgKSB7CiAgICAgICAgJE1vZHVsZVJlZ2lzdHJhdGlvbiA9IFskTW9kdWxlUmVnaXN0cmF0aW9uXTsKICAgIH0KCiAgICBNT0RVTEVSRUdJU1RSQVRJT046CiAgICBmb3IgbXkgJEN1cnJlbnRNb2R1bGVSZWdpc3RyYXRpb24gKCBAeyRNb2R1bGVSZWdpc3RyYXRpb259ICkgewoKICAgICAgICBHUk9VUDoKICAgICAgICBmb3IgbXkgJEdyb3VwVHlwZSAocXcoR3JvdXAgR3JvdXBSbykpIHsKCiAgICAgICAgICAgIG15ICRBZGRHcm91cHMgPSAkUGFyYW17JEdyb3VwVHlwZX07CiAgICAgICAgICAgIG5leHQgR1JPVVAgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkQWRkR3JvdXBzKTsKCiAgICAgICAgICAgIG15ICRPbGRHcm91cHMgPSAkQ3VycmVudE1vZHVsZVJlZ2lzdHJhdGlvbi0+eyRHcm91cFR5cGV9IHx8IFtdOwoKICAgICAgICAgICAgbXkgJUFkZEdyb3VwcyA9IG1hcCB7ICRfID0+IDEgfSBAeyRBZGRHcm91cHN9OwogICAgICAgICAgICBteSAlT2xkR3JvdXBzID0gbWFwIHsgJF8gPT4gMSB9IEB7JE9sZEdyb3Vwc307CgogICAgICAgICAgICBteSAlTmV3R3JvdXBzID0gKAogICAgICAgICAgICAgICAgJUFkZEdyb3VwcywKICAgICAgICAgICAgICAgICVPbGRHcm91cHMKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15IEBOZXdHcm91cHMgPSBzb3J0IGtleXMgJU5ld0dyb3VwczsKCiAgICAgICAgICAgICRDdXJyZW50TW9kdWxlUmVnaXN0cmF0aW9uLT57JEdyb3VwVHlwZX0gPSBcQE5ld0dyb3VwczsKICAgICAgICB9CiAgICB9CgogICAgIyBUdXJuIGNvbmZpZyBhcnJheXMgaW50byB0aGVpciBvcmlnaW5hbCBmb3JtIHNvIHRoYXQgY29uZmlnIHNldHRpbmcgdXBkYXRlIHdvcmtzLgogICAgaWYgKCAhJElzQXJyYXkgKSB7CiAgICAgICAgJE1vZHVsZVJlZ2lzdHJhdGlvbiA9IHNoaWZ0IEB7JE1vZHVsZVJlZ2lzdHJhdGlvbn07CiAgICB9CgogICAgJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ3NTZXQoCiAgICAgICAgU2V0dGluZ3MgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkUGFyYW17RnJvbnRlbmR9IC4gJyMjIycgLiAkUGFyYW17TW9kdWxlfSwKICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiAkTW9kdWxlUmVnaXN0cmF0aW9uLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgQ29tbWVudHMgPT4gJ01vZHVsZSBncm91cCBzZXR0aW5ncyBhZGRlZC4nLAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aXRlbSBfTW9kdWxlR3JvdXBSZW1vdmUoKQoKVGhpcyBmdW5jdGlvbiByZW1vdmVzIG9uZSBvciBtb3JlIGdyb3VwcyBmcm9tIHRoZSBsaXN0IG9mIGdyb3VwcyBvZiBhIGZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIGFueSBpbnRlcmZhY2UuCgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9Nb2R1bGVHcm91cFJlbW92ZSgKICAgICAgICBNb2R1bGUgPT4gJ0FkbWluJywKICAgICAgICBHcm91cCAgPT4gWwogICAgICAgICAgICAndXNlcnMnLAogICAgICAgIF0sCiAgICAgICAgR3JvdXBSbyA9PiBbCiAgICAgICAgICAgICdzb21lX290aGVyX2dyb3VwJwogICAgICAgIF0sCiAgICAgICAgRnJvbnRlbmQgPT4gJ0Zyb250ZW5kOjpNb2R1bGUnLCAjIEZyb250ZW5kOjpNb2R1bGUgKGRlZmF1bHQpLCBQdWJsaWNGcm9udGVuZDo6TW9kdWxlLCBDdXN0b21lckZyb250ZW5kOjpNb2R1bGUKICAgICk7Cgo9Y3V0CgpzdWIgX01vZHVsZUdyb3VwUmVtb3ZlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgbXkgJExvZ09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KE1vZHVsZSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKAogICAgICAgICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtHcm91cH0gKQogICAgICAgICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtHcm91cFJvfSApCiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICRQYXJhbXtGcm9udGVuZH0gfHw9ICdGcm9udGVuZDo6TW9kdWxlJzsKCiAgICBteSAkRnJvbnRlbmRMaXN0ID0gJENvbmZpZ09iamVjdC0+R2V0KCAkUGFyYW17RnJvbnRlbmR9ICk7CiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRGcm9udGVuZExpc3QpOwoKICAgICMgU3BsaXQgbW9kdWxlICJwYXRoIiAoZS4gZy4gQWRtaW4jIyMwMDEtRnJhbWV3b3JrKQogICAgbXkgJE1vZHVsZSA9ICRQYXJhbXtNb2R1bGV9OwogICAgbXkgQE1vZHVsZVBhdGhFbGVtZW50cyA9IHNwbGl0IC8jIyMvLCAkTW9kdWxlOwoKICAgIG15ICRNb2R1bGVSZWdpc3RyYXRpb24gPSAkRnJvbnRlbmRMaXN0OwogICAgZm9yIG15ICRNb2R1bGVQYXRoRWxlbWVudCAoQE1vZHVsZVBhdGhFbGVtZW50cykgewogICAgICAgICRNb2R1bGVSZWdpc3RyYXRpb24gPSAkTW9kdWxlUmVnaXN0cmF0aW9uLT57JE1vZHVsZVBhdGhFbGVtZW50fTsKICAgICAgICByZXR1cm4gaWYgISRNb2R1bGVSZWdpc3RyYXRpb247CiAgICB9CgogICAgcmV0dXJuIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJE1vZHVsZVJlZ2lzdHJhdGlvbikgJiYgIUlzSGFzaFJlZldpdGhEYXRhKCRNb2R1bGVSZWdpc3RyYXRpb24pOwogICAgbXkgJElzQXJyYXkgPSBJc0FycmF5UmVmV2l0aERhdGEoJE1vZHVsZVJlZ2lzdHJhdGlvbik7CgogICAgIyBTb21lIGNvbmZpZyBzZXR0aW5ncyBhcmUgaGFzaGVzLCBzb21lIGFyZSBhcnJheXMgb2YgaGFzaGVzLgogICAgIyBUdXJuIGFsbCBpbnRvIGFycmF5cyB0ZW1wb3JhcmlseSBmb3IgZWFzaWVyIGhhbmRsaW5nLgogICAgaWYgKCAhJElzQXJyYXkgKSB7CiAgICAgICAgJE1vZHVsZVJlZ2lzdHJhdGlvbiA9IFskTW9kdWxlUmVnaXN0cmF0aW9uXTsKICAgIH0KCiAgICBNT0RVTEVSRUdJU1RSQVRJT046CiAgICBmb3IgbXkgJEN1cnJlbnRNb2R1bGVSZWdpc3RyYXRpb24gKCBAeyRNb2R1bGVSZWdpc3RyYXRpb259ICkgewoKICAgICAgICBHUk9VUDoKICAgICAgICBmb3IgbXkgJEdyb3VwVHlwZSAocXcoR3JvdXAgR3JvdXBSbykpIHsKCiAgICAgICAgICAgIG15ICRSZW1vdmVHcm91cHMgPSAkUGFyYW17JEdyb3VwVHlwZX07CiAgICAgICAgICAgIG5leHQgR1JPVVAgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkUmVtb3ZlR3JvdXBzKTsKCiAgICAgICAgICAgIG15ICRPbGRHcm91cHMgPSAkQ3VycmVudE1vZHVsZVJlZ2lzdHJhdGlvbi0+eyRHcm91cFR5cGV9OwogICAgICAgICAgICBuZXh0IEdST1VQIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJE9sZEdyb3Vwcyk7CgogICAgICAgICAgICBteSAlT2xkR3JvdXBzID0gbWFwIHsgJF8gPT4gMSB9IEB7JE9sZEdyb3Vwc307CgogICAgICAgICAgICBmb3IgbXkgJFJlbW92ZUdyb3VwICggQHskUmVtb3ZlR3JvdXBzfSApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkT2xkR3JvdXBzeyRSZW1vdmVHcm91cH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15IEBOZXdHcm91cHMgPSBzb3J0IGtleXMgJU9sZEdyb3VwczsKCiAgICAgICAgICAgICRDdXJyZW50TW9kdWxlUmVnaXN0cmF0aW9uLT57JEdyb3VwVHlwZX0gPSBcQE5ld0dyb3VwczsKICAgICAgICB9CiAgICB9CgogICAgIyBUdXJuIGNvbmZpZyBhcnJheXMgaW50byB0aGVpciBvcmlnaW5hbCBmb3JtIHNvIHRoYXQgY29uZmlnIHNldHRpbmcgdXBkYXRlIHdvcmtzLgogICAgaWYgKCAhJElzQXJyYXkgKSB7CiAgICAgICAgJE1vZHVsZVJlZ2lzdHJhdGlvbiA9IHNoaWZ0IEB7JE1vZHVsZVJlZ2lzdHJhdGlvbn07CiAgICB9CgogICAgJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ3NTZXQoCiAgICAgICAgU2V0dGluZ3MgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkUGFyYW17RnJvbnRlbmR9IC4gJyMjIycgLiAkUGFyYW17TW9kdWxlfSwKICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiAkTW9kdWxlUmVnaXN0cmF0aW9uLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgQ29tbWVudHMgPT4gJ01vZHVsZSBncm91cCBzZXR0aW5ncyByZW1vdmVkLicsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9Ob3RpZmljYXRpb25FdmVudENyZWF0ZSgpCgpjcmVhdGUgb3IgdXBkYXRlIG5vdGlmaWNhdGlvbiBldmVudAoKICAgIG15IEBOb3RpZmljYXRpb25MaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSA9PiAnQWdlbnQ6OkN1c3RvbWVyVklQUHJpb3JpdHlVcGRhdGUnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEV2ZW50cyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1RpY2tldFByaW9yaXR5VXBkYXRlJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBBcnRpY2xlQXR0YWNobWVudEluY2x1ZGUgPT4gWwogICAgICAgICAgICAgICAgICAgICcwJwogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gWwogICAgICAgICAgICAgICAgICAgICdlbicsCiAgICAgICAgICAgICAgICAgICAgJ2RlJwogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbkFydGljbGVUeXBlSUQgPT4gWwogICAgICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgUmVjaXBpZW50cyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ0N1c3RvbWVyJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBUcmFuc3BvcnRFbWFpbFRlbXBsYXRlID0+IFsKICAgICAgICAgICAgICAgICAgICAnRGVmYXVsdCcsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVHJhbnNwb3J0cyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ0VtYWlsJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBWaXNpYmxlRm9yQWdlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgICcwJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gewogICAgICAgICAgICAgICAgZW4gPT4gewogICAgICAgICAgICAgICAgICAgIFN1YmplY3QgICAgID0+ICdQcmlvcml0eSBmb3IgeW91ciB0aWNrZXQgY2hhbmdlZCcsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICAgICAgICAgQm9keSAgICAgICAgPT4gJy4uLicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgZGUgPT4gewogICAgICAgICAgICAgICAgICAgIFN1YmplY3QgICAgID0+ICdEaWUgUHJpb3JpdGFldCBJaHJlcyBUaWNrZXRzIHd1cmRlIGdlYWVuZGVydCcsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICAgICAgICAgQm9keSAgICAgICAgPT4gJy4uLicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgIyAuLi4KICAgICk7CgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9Ob3RpZmljYXRpb25FdmVudENyZWF0ZSggQE5vdGlmaWNhdGlvbkxpc3QgKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9Ob3RpZmljYXRpb25FdmVudENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCBATm90aWZpY2F0aW9uRXZlbnRzICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkTm90aWZpY2F0aW9uRXZlbnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Tm90aWZpY2F0aW9uRXZlbnQnKTsKICAgIG15ICRWYWxpZE9iamVjdCAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwoKICAgIG15ICRTdWNjZXNzID0gMTsKICAgIE5PVElGSUNBVElPTkVWRU5UOgogICAgZm9yIG15ICROb3RpZmljYXRpb25FdmVudCAoQE5vdGlmaWNhdGlvbkV2ZW50cykgewogICAgICAgIG5leHQgTk9USUZJQ0FUSU9ORVZFTlQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCROb3RpZmljYXRpb25FdmVudCk7CgogICAgICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICAgICAgTkVFREVEOgogICAgICAgIGZvciBteSAkTmVlZGVkIChxdyhOYW1lKSkgewoKICAgICAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkTm90aWZpY2F0aW9uRXZlbnQtPnskTmVlZGVkfTsKCiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbXkgJU5vdGlmaWNhdGlvbkV2ZW50UmV2ZXJzZWQgPSAkTm90aWZpY2F0aW9uRXZlbnRPYmplY3QtPk5vdGlmaWNhdGlvbkxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAxCiAgICAgICAgKTsKICAgICAgICAlTm90aWZpY2F0aW9uRXZlbnRSZXZlcnNlZCA9IHJldmVyc2UgJU5vdGlmaWNhdGlvbkV2ZW50UmV2ZXJzZWQ7CgogICAgICAgIG15ICRJdGVtSUQgID0gJFNlbGYtPl9JdGVtUmV2ZXJzZUxpc3RHZXQoICROb3RpZmljYXRpb25FdmVudC0+e05hbWV9LCAlTm90aWZpY2F0aW9uRXZlbnRSZXZlcnNlZCApOwogICAgICAgIG15ICRWYWxpZElEID0gJE5vdGlmaWNhdGlvbkV2ZW50LT57VmFsaWRJRH0gLy8gJFZhbGlkT2JqZWN0LT5WYWxpZExvb2t1cCgKICAgICAgICAgICAgVmFsaWQgPT4gJ3ZhbGlkJywKICAgICAgICApOwoKICAgICAgICBpZiAoJEl0ZW1JRCkgewogICAgICAgICAgICBteSAkVXBkYXRlU3VjY2VzcyA9ICROb3RpZmljYXRpb25FdmVudE9iamVjdC0+Tm90aWZpY2F0aW9uVXBkYXRlKAogICAgICAgICAgICAgICAgJXskTm90aWZpY2F0aW9uRXZlbnR9LAogICAgICAgICAgICAgICAgSUQgICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgVmFsaWRJRCA9PiAkVmFsaWRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJFN1Y2Nlc3MgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBteSAkQ3JlYXRlSUQgPSAkTm90aWZpY2F0aW9uRXZlbnRPYmplY3QtPk5vdGlmaWNhdGlvbkFkZCgKICAgICAgICAgICAgICAgICV7JE5vdGlmaWNhdGlvbkV2ZW50fSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgPT4gJFZhbGlkSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkQ3JlYXRlSUQgKSB7CiAgICAgICAgICAgICAgICAkU3VjY2VzcyA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aXRlbSBfTm90aWZpY2F0aW9uRXZlbnRDcmVhdGVJZk5vdEV4aXN0cygpCgpjcmVhdGVzIG5vdGlmaWNhdGlvbiBldmVudCBpZiBub3QgZXhpc3RzCgogICAgbXkgJE5vdGlmaWNhdGlvbklEID0gJFpudW55SGVscGVyT2JqZWN0LT5fTm90aWZpY2F0aW9uRXZlbnRDcmVhdGVJZk5vdEV4aXN0cygKICAgICAgICBOYW1lID0+ICdBZ2VudDo6Q3VzdG9tZXJWSVBQcmlvcml0eVVwZGF0ZScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIEV2ZW50cyA9PiBbCiAgICAgICAgICAgICAgICAnVGlja2V0UHJpb3JpdHlVcGRhdGUnLAogICAgICAgICAgICBdLAogICAgICAgICAgICBBcnRpY2xlQXR0YWNobWVudEluY2x1ZGUgPT4gWwogICAgICAgICAgICAgICAgJzAnCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIExhbmd1YWdlSUQgPT4gWwogICAgICAgICAgICAgICAgJ2VuJywKICAgICAgICAgICAgICAgICdkZScKICAgICAgICAgICAgXSwKICAgICAgICAgICAgTm90aWZpY2F0aW9uQXJ0aWNsZVR5cGVJRCA9PiBbCiAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICBdLAogICAgICAgICAgICBSZWNpcGllbnRzID0+IFsKICAgICAgICAgICAgICAgICdDdXN0b21lcicsCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFRyYW5zcG9ydEVtYWlsVGVtcGxhdGUgPT4gWwogICAgICAgICAgICAgICAgJ0RlZmF1bHQnLAogICAgICAgICAgICBdLAogICAgICAgICAgICBUcmFuc3BvcnRzID0+IFsKICAgICAgICAgICAgICAgICdFbWFpbCcsCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFZpc2libGVGb3JBZ2VudCA9PiBbCiAgICAgICAgICAgICAgICAnMCcsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBNZXNzYWdlID0+IHsKICAgICAgICAgICAgZW4gPT4gewogICAgICAgICAgICAgICAgU3ViamVjdCAgICAgPT4gJ1ByaW9yaXR5IGZvciB5b3VyIHRpY2tldCBjaGFuZ2VkJywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICAgICAgQm9keSAgICAgICAgPT4gJy4uLicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGRlID0+IHsKICAgICAgICAgICAgICAgIFN1YmplY3QgICAgID0+ICdEaWUgUHJpb3JpdGFldCBJaHJlcyBUaWNrZXRzIHd1cmRlIGdlYWVuZGVydCcsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgIEJvZHkgICAgICAgID0+ICcuLi4nLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkTm90aWZpY2F0aW9uSUQgPSAxMjM7Cgo9Y3V0CgpzdWIgX05vdGlmaWNhdGlvbkV2ZW50Q3JlYXRlSWZOb3RFeGlzdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkTm90aWZpY2F0aW9uRXZlbnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Tm90aWZpY2F0aW9uRXZlbnQnKTsKICAgIG15ICRWYWxpZE9iamVjdCAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTmFtZSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJU5vdGlmaWNhdGlvbkV2ZW50UmV2ZXJzZWQgPSAkTm90aWZpY2F0aW9uRXZlbnRPYmplY3QtPk5vdGlmaWNhdGlvbkxpc3QoCiAgICAgICAgVXNlcklEID0+IDEKICAgICk7CiAgICAlTm90aWZpY2F0aW9uRXZlbnRSZXZlcnNlZCA9IHJldmVyc2UgJU5vdGlmaWNhdGlvbkV2ZW50UmV2ZXJzZWQ7CgogICAgbXkgJEl0ZW1JRCA9ICRTZWxmLT5fSXRlbVJldmVyc2VMaXN0R2V0KCAkUGFyYW17TmFtZX0sICVOb3RpZmljYXRpb25FdmVudFJldmVyc2VkICk7CiAgICByZXR1cm4gJEl0ZW1JRCBpZiAkSXRlbUlEOwoKICAgIG15ICRWYWxpZElEID0gJFBhcmFte1ZhbGlkSUR9IC8vICRWYWxpZE9iamVjdC0+VmFsaWRMb29rdXAoCiAgICAgICAgVmFsaWQgPT4gJ3ZhbGlkJywKICAgICk7CiAgICBteSAkTm90aWZpY2F0aW9uRXZlbnRJRCA9ICROb3RpZmljYXRpb25FdmVudE9iamVjdC0+Tm90aWZpY2F0aW9uQWRkKAogICAgICAgICVQYXJhbSwKICAgICAgICBWYWxpZElEID0+ICRWYWxpZElELAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuICROb3RpZmljYXRpb25FdmVudElEOwp9Cgo9aXRlbSBfU3RhbmRhcmRUZW1wbGF0ZUNyZWF0ZSgpCgpjcmVhdGUgb3IgdXBkYXRlIHN0YW5kYXJkIHRlbXBsYXRlCgogICAgbXkgQFN0YW5kYXJkVGVtcGxhdGVMaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdOZXcgU3RhbmRhcmQgVGVtcGxhdGUnLAogICAgICAgICAgICBUZW1wbGF0ZSAgICAgPT4gJ1RoYW5rIHlvdSBmb3IgeW91ciBlbWFpbC4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgnLAogICAgICAgICAgICBUZW1wbGF0ZVR5cGUgPT4gJ0Fuc3dlcicsICAgICAgICAgICAgICAgICAgICAgIyAnQW5zd2VyJywgJ0NyZWF0ZScsICdFbWFpbCcsICdGb3J3YXJkJywgJ05vdGUnLCAnUGhvbmVDYWxsJwogICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgICAgICBWYWxpZElEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9TdGFuZGFyZFRlbXBsYXRlQ3JlYXRlKCBAU3RhbmRhcmRUZW1wbGF0ZUxpc3QgKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9TdGFuZGFyZFRlbXBsYXRlQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsIEBTdGFuZGFyZFRlbXBsYXRlTGlzdCApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkVmFsaWRPYmplY3QgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwogICAgbXkgJFN0YW5kYXJkVGVtcGxhdGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhbmRhcmRUZW1wbGF0ZScpOwoKICAgIG15ICRTdWNjZXNzID0gMTsKCiAgICBOT1RJRklDQVRJT05FVkVOVDoKICAgIGZvciBteSAkU3RhbmRhcmRUZW1wbGF0ZSAoQFN0YW5kYXJkVGVtcGxhdGVMaXN0KSB7CiAgICAgICAgbmV4dCBTdGFuZGFyZFRlbXBsYXRlIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkU3RhbmRhcmRUZW1wbGF0ZSk7CgogICAgICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICAgICAgTkVFREVEOgogICAgICAgIGZvciBteSAkTmVlZGVkIChxdyhOYW1lKSkgewoKICAgICAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkU3RhbmRhcmRUZW1wbGF0ZS0+eyROZWVkZWR9OwoKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJyROZWVkZWQnIGlzIG5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBteSAlU3RhbmRhcmRUZW1wbGF0ZVJldmVyc2VkID0gJFN0YW5kYXJkVGVtcGxhdGVPYmplY3QtPlN0YW5kYXJkVGVtcGxhdGVMaXN0KCk7CiAgICAgICAgJVN0YW5kYXJkVGVtcGxhdGVSZXZlcnNlZCA9IHJldmVyc2UgJVN0YW5kYXJkVGVtcGxhdGVSZXZlcnNlZDsKCiAgICAgICAgbXkgJEl0ZW1JRCA9ICRTZWxmLT5fSXRlbVJldmVyc2VMaXN0R2V0KCAkU3RhbmRhcmRUZW1wbGF0ZS0+e05hbWV9LCAlU3RhbmRhcmRUZW1wbGF0ZVJldmVyc2VkICk7CgogICAgICAgIG15ICRWYWxpZElEID0gJFN0YW5kYXJkVGVtcGxhdGUtPntWYWxpZElEfSAvLyAkVmFsaWRPYmplY3QtPlZhbGlkTG9va3VwKAogICAgICAgICAgICBWYWxpZCA9PiAndmFsaWQnLAogICAgICAgICk7CgogICAgICAgIGlmICgkSXRlbUlEKSB7CiAgICAgICAgICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJFN0YW5kYXJkVGVtcGxhdGVPYmplY3QtPlN0YW5kYXJkVGVtcGxhdGVVcGRhdGUoCiAgICAgICAgICAgICAgICAleyRTdGFuZGFyZFRlbXBsYXRlfSwKICAgICAgICAgICAgICAgIElEICAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIFZhbGlkSUQgPT4gJFZhbGlkSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRTdWNjZXNzID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJENyZWF0ZUlEID0gJFN0YW5kYXJkVGVtcGxhdGVPYmplY3QtPlN0YW5kYXJkVGVtcGxhdGVBZGQoCiAgICAgICAgICAgICAgICAleyRTdGFuZGFyZFRlbXBsYXRlfSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgPT4gJFZhbGlkSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkQ3JlYXRlSUQgKSB7CiAgICAgICAgICAgICAgICAkU3VjY2VzcyA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aXRlbSBfR2VuZXJpY0FnZW50Q3JlYXRlKCkKCmNyZWF0ZXMgb3IgdXBkYXRlcyBnZW5lcmljIGFnZW50cwoKICAgIG15IEBHZW5lcmljQWdlbnRzID0gKAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSA9PiAnSm9iTmFtZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgVmFsaWQgPT4gJzEnLAoKICAgICAgICAgICAgICAgICMgQXV0b21hdGljIGV4ZWN1dGlvbiAobXVsdGlwbGUgdGlja2V0cykKICAgICAgICAgICAgICAgIFNjaGVkdWxlTWludXRlcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJzE2JwogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFNjaGVkdWxlSG91cnMgPT4gWwogICAgICAgICAgICAgICAgICAgICc0JwogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFNjaGVkdWxlRGF5cyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJzUnCiAgICAgICAgICAgICAgICBdLAoKICAgICAgICAgICAgICAgICMgRXZlbnQgYmFzZWQgZXhlY3V0aW9uIChzaW5nbGUgdGlja2V0KQogICAgICAgICAgICAgICAgRXZlbnRWYWx1ZXMgPT4gWwogICAgICAgICAgICAgICAgICAgICdUaWNrZXRDcmVhdGUnCiAgICAgICAgICAgICAgICAgICAgIyBTeXNDb25maWcgLSBFdmVudHMjIyNUaWNrZXQKICAgICAgICAgICAgICAgICAgICAjIFN5c0NvbmZpZyAtIEV2ZW50cyMjI0FydGljbGUKICAgICAgICAgICAgICAgIF0sCgogICAgICAgICAgICAgICAgIyBTZWxlY3QgVGlja2V0cwogICAgICAgICAgICAgICAgVGlja2V0TnVtYmVyICAgICAgPT4gJzEyMzQnLAogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgPT4gJ1RpdGxlJywKICAgICAgICAgICAgICAgIEN1c3RvbWVySUQgICAgICAgID0+ICdLdW5kZW5udW1tZXInLAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyTG9naW4gPT4gJ0t1bmRlbmJlbnV0emVyJywKICAgICAgICAgICAgICAgIEZyb20gICAgICAgICAgICAgID0+ICdWb25abnVueScsCiAgICAgICAgICAgICAgICBUbyAgICAgICAgICAgICAgICA9PiAnQW5abnVueScsCiAgICAgICAgICAgICAgICBDYyAgICAgICAgICAgICAgICA9PiAnQ0NabnVueScsCiAgICAgICAgICAgICAgICBCb2R5ICAgICAgICAgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICA9PiAnU3ViamVjdCcsCiAgICAgICAgICAgICAgICBTZXJ2aWNlSURzICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgJzEnCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgU0xBSURzID0+IFsKICAgICAgICAgICAgICAgICAgICAnMScKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBQcmlvcml0eUlEcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJzMnCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgUXVldWVJRHMgPT4gWwogICAgICAgICAgICAgICAgICAgICcyJywKICAgICAgICAgICAgICAgICAgICAnMScKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJzQnCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgT3duZXJJRHMgPT4gWwogICAgICAgICAgICAgICAgICAgICcxJwogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIExvY2tJRHMgPT4gWwogICAgICAgICAgICAgICAgICAgICcxJwogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFNlYXJjaF9EeW5hbWljRmllbGRfVGV4dCA9PiAnJywKCiAgICAgICAgICAgICAgICBFc2NhbGF0aW9uUmVzcG9uc2VUaW1lU2VhcmNoVHlwZSA9PiAnJywKICAgICAgICAgICAgICAgIEVzY2FsYXRpb25Tb2x1dGlvblRpbWVTZWFyY2hUeXBlID0+ICcnLAogICAgICAgICAgICAgICAgRXNjYWxhdGlvblRpbWVTZWFyY2hUeXBlICAgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICBFc2NhbGF0aW9uVXBkYXRlVGltZVNlYXJjaFR5cGUgICA9PiAnJywKICAgICAgICAgICAgICAgIExhc3RDaGFuZ2VUaW1lU2VhcmNoVHlwZSAgICAgICAgID0+ICcnLAogICAgICAgICAgICAgICAgVGltZVBlbmRpbmdTZWFyY2hUeXBlID0+ICcnLAogICAgICAgICAgICAgICAgVGltZVNlYXJjaFR5cGUgICAgICAgID0+ICcnLAogICAgICAgICAgICAgICAgQ2hhbmdlVGltZVNlYXJjaFR5cGUgPT4gJycsCiAgICAgICAgICAgICAgICBDbG9zZVRpbWVTZWFyY2hUeXBlICA9PiAnJywKCiAgICAgICAgICAgICAgICAjIFVwZGF0ZS9BZGQgVGlja2V0IEF0dHJpYnV0ZXMKICAgICAgICAgICAgICAgIE5ld1BlbmRpbmdUaW1lICAgICAgID0+ICcnLAogICAgICAgICAgICAgICAgTmV3Q3VzdG9tZXJJRCAgICAgICAgPT4gJ1pudW55JywKICAgICAgICAgICAgICAgIE5ld0N1c3RvbWVyVXNlckxvZ2luID0+ICdDdXN0b21lcicsCiAgICAgICAgICAgICAgICBOZXdMb2NrSUQgICAgICAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICBOZXdPd25lcklEICAgICAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICBOZXdQZW5kaW5nVGltZVR5cGUgICA9PiAnNjAnLAogICAgICAgICAgICAgICAgTmV3UHJpb3JpdHlJRCAgICAgICAgPT4gJzEnLAogICAgICAgICAgICAgICAgTmV3UXVldWVJRCAgICAgICAgICAgPT4gJzInLAogICAgICAgICAgICAgICAgTmV3U0xBSUQgICAgICAgICAgICAgPT4gJzMnLAogICAgICAgICAgICAgICAgTmV3U2VydmljZUlEICAgICAgICAgPT4gJzcnLAogICAgICAgICAgICAgICAgTmV3U3RhdGVJRCAgICAgICAgICAgPT4gJzEnLAogICAgICAgICAgICAgICAgTmV3VGl0bGUgICAgICAgICAgICAgPT4gJ05ldyBUaXRsZScsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRfVGV4dCAgICA9PiAnJywKCiAgICAgICAgICAgICAgICAjIEFkZCBOb3RlCiAgICAgICAgICAgICAgICBOZXdOb3RlRnJvbSAgICAgID0+ICdzdXBwb3J0QHpudW55LmNvbScsCiAgICAgICAgICAgICAgICBOZXdOb3RlU3ViamVjdCAgID0+ICdabnVueSBOb3RlIFN1YmplY3QnLAogICAgICAgICAgICAgICAgTmV3Tm90ZUJvZHkgICAgICA9PiAnWm51bnkgTm90ZSBUZXh0JywKICAgICAgICAgICAgICAgIE5ld05vdGVUaW1lVW5pdHMgPT4gJzE2MDQnLAoKICAgICAgICAgICAgICAgICMgRXhlY3V0ZSBUaWNrZXQgQ29tbWFuZHMKICAgICAgICAgICAgICAgIE5ld0NNRCAgICAgICAgICAgICAgICA9PiAnJywKICAgICAgICAgICAgICAgIE5ld1NlbmROb05vdGlmaWNhdGlvbiA9PiAnMCcsCiAgICAgICAgICAgICAgICBOZXdEZWxldGUgICAgICAgICAgICAgPT4gJzAnLAoKICAgICAgICAgICAgICAgICMgRXhlY3V0ZSBDdXN0b20gTW9kdWxlCiAgICAgICAgICAgICAgICBOZXdNb2R1bGUgICAgICA9PiAnJywKICAgICAgICAgICAgICAgIE5ld1BhcmFtS2V5MSAgID0+ICcnLAogICAgICAgICAgICAgICAgTmV3UGFyYW1LZXkyICAgPT4gJycsCiAgICAgICAgICAgICAgICBOZXdQYXJhbUtleTMgICA9PiAnJywKICAgICAgICAgICAgICAgIE5ld1BhcmFtS2V5NCAgID0+ICcnLAogICAgICAgICAgICAgICAgTmV3UGFyYW1LZXk1ICAgPT4gJycsCiAgICAgICAgICAgICAgICBOZXdQYXJhbUtleTYgICA9PiAnJywKICAgICAgICAgICAgICAgIE5ld1BhcmFtVmFsdWUxID0+ICcnLAogICAgICAgICAgICAgICAgTmV3UGFyYW1WYWx1ZTIgPT4gJycsCiAgICAgICAgICAgICAgICBOZXdQYXJhbVZhbHVlMyA9PiAnJywKICAgICAgICAgICAgICAgIE5ld1BhcmFtVmFsdWU0ID0+ICcnLAogICAgICAgICAgICAgICAgTmV3UGFyYW1WYWx1ZTUgPT4gJycsCiAgICAgICAgICAgICAgICBOZXdQYXJhbVZhbHVlNiA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9HZW5lcmljQWdlbnRDcmVhdGUoIEBHZW5lcmljQWdlbnRzICk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfR2VuZXJpY0FnZW50Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsIEBHZW5lcmljQWdlbnRzICkgPSBAXzsKCiAgICBteSAkR2VuZXJpY0FnZW50T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNBZ2VudCcpOwoKICAgICMgZ2V0IGFsbCBjdXJyZW50IGR5bmFtaWMgZmllbGRzCiAgICBteSAlR2VuZXJpY0FnZW50TGlzdCA9ICRHZW5lcmljQWdlbnRPYmplY3QtPkpvYkxpc3QoKTsKCiAgICAjIGNyZWF0ZSBvciB1cGRhdGUgZ2VuZXJpYyBhZ2VudHMKICAgIEdFTkVSSUNBR0VOVDoKICAgIGZvciBteSAkTmV3R2VuZXJpY0FnZW50IChAR2VuZXJpY0FnZW50cykgewoKICAgICAgICBteSAlTmV3R2VuZXJpY0FnZW50ID0gJXskTmV3R2VuZXJpY0FnZW50fTsKCiAgICAgICAgIyBjaGVjayBhbmQgZGVsZXRlIGlmIHRoZSBnZW5lcmljIGFnZW50IGFscmVhZHkgZXhpc3RzCiAgICAgICAgIyBubyBnZW5lcmljIGFnZW50IHVwZGF0ZSBmdW5jdGlvbiBleGlzdHMKICAgICAgICBpZiAoICRHZW5lcmljQWdlbnRMaXN0eyAkTmV3R2VuZXJpY0FnZW50LT57TmFtZX0gfSApIHsKCiAgICAgICAgICAgIG15ICVFeGlzdGluZ0pvYiA9ICRHZW5lcmljQWdlbnRPYmplY3QtPkpvYkdldCggTmFtZSA9PiAkR2VuZXJpY0FnZW50TGlzdHsgJE5ld0dlbmVyaWNBZ2VudHtOYW1lfSB9ICk7CgogICAgICAgICAgICAjIHByZXBhcmUgam9icyB0byBkaWZmIGNvcnJlY3RseQogICAgICAgICAgICBteSAlTmV3R2VuZXJpY0FnZW50RGlmZiA9ICVOZXdHZW5lcmljQWdlbnQ7CgogICAgICAgICAgICBkZWxldGUgJE5ld0dlbmVyaWNBZ2VudERpZmZ7VXNlcklEfTsKICAgICAgICAgICAgZGVsZXRlICROZXdHZW5lcmljQWdlbnREaWZme05hbWV9OwoKICAgICAgICAgICAgbXkgJUV4aXN0aW5nSm9iRGlmZiA9ICgKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVFeGlzdGluZ0pvYiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBkZWxldGUgJEV4aXN0aW5nSm9iRGlmZntEYXRhfS0+e05hbWV9OwoKICAgICAgICAgICAgIyBkaWZmIGJvdGggam9icwogICAgICAgICAgICBteSAkSXNEaWZmID0gRGF0YUlzRGlmZmVyZW50KAogICAgICAgICAgICAgICAgRGF0YTEgPT4gXCVFeGlzdGluZ0pvYkRpZmYsCiAgICAgICAgICAgICAgICBEYXRhMiA9PiBcJU5ld0dlbmVyaWNBZ2VudERpZmYsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGlmIGJvdGggam9icyBhcmUgaWRlbnRpY2FsIHNraXAgdGhpcyBHQQogICAgICAgICAgICBuZXh0IEdFTkVSSUNBR0VOVCBpZiAhJElzRGlmZjsKCiAgICAgICAgICAgICRHZW5lcmljQWdlbnRPYmplY3QtPkpvYkRlbGV0ZSgKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkTmV3R2VuZXJpY0FnZW50e05hbWV9LAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBnZW5lcmljIGFnZW50CiAgICAgICAgJEdlbmVyaWNBZ2VudE9iamVjdC0+Sm9iQWRkKAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgJU5ld0dlbmVyaWNBZ2VudCwKICAgICAgICApOwoKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX0dlbmVyaWNBZ2VudENyZWF0ZUlmTm90RXhpc3RzKCkKCmNyZWF0ZXMgZ2VuZXJpYyBhZ2VudHMgaWYgbm90IGV4aXN0cwoKICAgIG15IEBHZW5lcmljQWdlbnRzID0gKAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSA9PiAnSm9iTmFtZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgVmFsaWQgPT4gJzEnLAogICAgICAgICAgICAgICAgLi4uCiAgICAgICAgICAgICAgICBUaXRsZSA9PiAnVGVzdCcKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJFN1Y2Nlc3MgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9HZW5lcmljQWdlbnRDcmVhdGVJZk5vdEV4aXN0cyggQEdlbmVyaWNBZ2VudHMgKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9HZW5lcmljQWdlbnRDcmVhdGVJZk5vdEV4aXN0cyB7CiAgICBteSAoICRTZWxmLCBAR2VuZXJpY0FnZW50cyApID0gQF87CgogICAgbXkgJEdlbmVyaWNBZ2VudE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljQWdlbnQnKTsKCiAgICAjIGdldCBhbGwgY3VycmVudCBkeW5hbWljIGZpZWxkcwogICAgbXkgJUdlbmVyaWNBZ2VudExpc3QgPSAkR2VuZXJpY0FnZW50T2JqZWN0LT5Kb2JMaXN0KCk7CgogICAgR0VORVJJQ0FHRU5UOgogICAgZm9yIG15ICROZXdHZW5lcmljQWdlbnQgKEBHZW5lcmljQWdlbnRzKSB7CgogICAgICAgICMgY2hlY2sgaWYgdGhlIGdlbmVyaWMgYWdlbnQgYWxyZWFkeSBleGlzdHMKICAgICAgICBuZXh0IEdFTkVSSUNBR0VOVCBpZiAkR2VuZXJpY0FnZW50TGlzdHsgJE5ld0dlbmVyaWNBZ2VudC0+e05hbWV9IH07CgogICAgICAgICMgY3JlYXRlIGdlbmVyaWMgYWdlbnQKICAgICAgICAkR2VuZXJpY0FnZW50T2JqZWN0LT5Kb2JBZGQoCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICAleyROZXdHZW5lcmljQWdlbnR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVtIF9BcnRpY2xlQWN0aW9uc0FkZCgpCgpBZGRzIGFydGljbGUgYWN0aW9uIG1lbnUgaXRlbXMuCgogICAgbXkgJUFydGljbGVBY3Rpb25zID0gKAogICAgICAgIEludGVybmFsID0+IFsgIyBDaGFubmVsIG5hbWUgKEludGVybmFsLCBQaG9uZSwgRW1haWwsIENoYXQgb3IgSW52YWxpZCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgICAgPT4gJ1pudW55NE9UUlNNYXJrVGlja2V0U2VlblVuc2VlbicsCiAgICAgICAgICAgICAgICBNb2R1bGUgICA9PiAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246Ok15TWVudUl0ZW0nLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gOTk5LAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fQXJ0aWNsZUFjdGlvbnNBZGQoJUFydGljbGVBY3Rpb25NZW51SXRlbXMpOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgX0FydGljbGVBY3Rpb25zQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRBcnRpY2xlQWN0aW9uQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OkZyb250ZW5kOjpBcnRpY2xlOjpBY3Rpb25zJykgLy8ge307CgogICAgbXkgQFNldHRpbmdzOwogICAgQ0hBTk5FTE5BTUU6CiAgICBmb3IgbXkgJENoYW5uZWxOYW1lICggc29ydCBrZXlzICVQYXJhbSApIHsKCiAgICAgICAgbmV4dCBDSEFOTkVMTkFNRSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17JENoYW5uZWxOYW1lfSApOwoKICAgICAgICBmb3IgbXkgJEFydGljbGVBY3Rpb24gKCBAeyAkUGFyYW17JENoYW5uZWxOYW1lfSB9ICkgewogICAgICAgICAgICAkQXJ0aWNsZUFjdGlvbkNvbmZpZy0+eyRDaGFubmVsTmFtZX0tPnsgJEFydGljbGVBY3Rpb24tPntLZXl9IH0gPSB7CiAgICAgICAgICAgICAgICBNb2R1bGUgPT4gJEFydGljbGVBY3Rpb24tPntNb2R1bGV9LAogICAgICAgICAgICAgICAgUHJpbyAgID0+ICRBcnRpY2xlQWN0aW9uLT57UHJpb3JpdHl9LAogICAgICAgICAgICAgICAgVmFsaWQgID0+IDEsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBTZXR0aW5ncywgewogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGlja2V0OjpGcm9udGVuZDo6QXJ0aWNsZTo6QWN0aW9ucyMjIycgLiAkQ2hhbm5lbE5hbWUsCiAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+ICRBcnRpY2xlQWN0aW9uQ29uZmlnLT57JENoYW5uZWxOYW1lfSwKICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICB9OwoKICAgIH0KCiAgICBteSAkU2V0dGluZ1NldCA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgQ29tbWVudHMgPT4gJ0FydGljbGUgYWN0aW9uIHNldHRpbmdzIGFkZGVkLicsCiAgICAgICAgU2V0dGluZ3MgPT4gXEBTZXR0aW5ncywKICAgICk7CgogICAgcmV0dXJuIGlmICEkU2V0dGluZ1NldDsKCiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gX0FydGljbGVBY3Rpb25zUmVtb3ZlKCkKClJlbW92ZXMgYXJ0aWNsZSBhY3Rpb24gbWVudSBpdGVtcy4KCiAgICBteSAlQXJ0aWNsZUFjdGlvbnMgPSAoCiAgICAgICAgSW50ZXJuYWwgPT4gWyAjIENoYW5uZWwgbmFtZSAoSW50ZXJuYWwsIFBob25lLCBFbWFpbCwgQ2hhdCBvciBJbnZhbGlkKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBNb2R1bGUgICA9PiAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkFydGljbGVBY3Rpb246Ok15TWVudUl0ZW0nLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gOTk5LAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRTdWNjZXNzID0gJFpudW55SGVscGVyT2JqZWN0LT5fQXJ0aWNsZUFjdGlvbnNSZW1vdmUoJUFydGljbGVBY3Rpb25zKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIF9BcnRpY2xlQWN0aW9uc1JlbW92ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAkQXJ0aWNsZUFjdGlvbkNvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnVGlja2V0OjpGcm9udGVuZDo6QXJ0aWNsZTo6QWN0aW9ucycpIC8vIHt9OwoKICAgIG15IEBTZXR0aW5nczsKICAgIENIQU5ORUxOQU1FOgogICAgZm9yIG15ICRDaGFubmVsTmFtZSAoIHNvcnQga2V5cyAlUGFyYW0gKSB7CgogICAgICAgIG5leHQgQ0hBTk5FTE5BTUUgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFteyRDaGFubmVsTmFtZX0gKTsKCiAgICAgICAgZm9yIG15ICRBcnRpY2xlQWN0aW9uICggQHsgJFBhcmFteyRDaGFubmVsTmFtZX0gfSApIHsKICAgICAgICAgICAgZGVsZXRlICRBcnRpY2xlQWN0aW9uQ29uZmlnLT57JENoYW5uZWxOYW1lfS0+eyAkQXJ0aWNsZUFjdGlvbi0+e0tleX0gfTsKICAgICAgICB9CgogICAgICAgIHB1c2ggQFNldHRpbmdzLCB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICdUaWNrZXQ6OkZyb250ZW5kOjpBcnRpY2xlOjpBY3Rpb25zIyMjJyAuICRDaGFubmVsTmFtZSwKICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gJEFydGljbGVBY3Rpb25Db25maWctPnskQ2hhbm5lbE5hbWV9LAogICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgIH07CgogICAgfQoKICAgIG15ICRTZXR0aW5nU2V0ID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ3NTZXQoCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICBDb21tZW50cyA9PiAnQXJ0aWNsZSBhY3Rpb24gc2V0dGluZ3MgcmVtb3ZlZC4nLAogICAgICAgIFNldHRpbmdzID0+IFxAU2V0dGluZ3MsCiAgICApOwoKICAgIHJldHVybiBpZiAhJFNldHRpbmdTZXQ7CgogICAgcmV0dXJuIDE7Cn0KCj1iYWNrCgo9Y3V0CgoxOwo=</File>
        <File Location="Kernel/Config/Files/XML/ITSMConfigItem.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJDb25maWciPgoKICAgIDwhLS0gcmVnaXN0cmF0aW9uIG9mIGFnZW50IGFuZCBjdXN0b21lciBmcm9udGVuZCBtb2R1bGVzIC0tPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FkbWluSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5BZG1pbi48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkFkbWluPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWRtaW5JVFNNQ29uZmlnSXRlbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uTW9kdWxlIyMjQWRtaW5JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BZG1pbiBhcmVhIG5hdmlnYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6QWRtaW5PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6TmF2QmFyOjpNb2R1bGVBZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgSXRlbXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5DTURCU2V0dGluZ3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikljb25CaWciPmZhLWxhcHRvcDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSWNvblNtYWxsIj48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFkbWluSVRTTUNvbmZpZ0l0ZW0jIyMwMDItSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkNvZGVNaXJyb3JFZGl0b3IuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkFkbWluLklUU01Db25maWdJdGVtLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvbGliL2NvZGVtaXJyb3IuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9oaW50L3Nob3ctaGludC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2ZvbGQvZm9sZGd1dHRlci5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2RpYWxvZy9kaWFsb2cuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9kaXNwbGF5L2Z1bGxzY3JlZW4uY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvbGliL2NvZGVtaXJyb3IuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL21vZGUveWFtbC95YW1sLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9oaW50L3Nob3ctaGludC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvYWRkb24vZWRpdC9tYXRjaHRhZ3MuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2VkaXQvbWF0Y2hicmFja2V0cy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvYWRkb24vZWRpdC9jbG9zZXRhZy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvYWRkb24vZWRpdC9jbG9zZWJyYWNrZXRzLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9zZWFyY2gvc2VhcmNoY3Vyc29yLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9zZWFyY2gvc2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9mb2xkL2ZvbGRjb2RlLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9lZGl0L3RyYWlsaW5nc3BhY2UuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL3NlbGVjdGlvbi9zZWxlY3Rpb24tcG9pbnRlci5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9jb2RlbWlycm9yLTUuNjUuMjAvYWRkb24vZm9sZC9mb2xkZ3V0dGVyLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9mb2xkL2JyYWNlLWZvbGQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2ZvbGQvaW5kZW50LWZvbGQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2ZvbGQvY29tbWVudC1mb2xkLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9jb21tZW50L2NvbW1lbnQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvY29kZW1pcnJvci01LjY1LjIwL2FkZG9uL2NvbW1lbnQvY29udGludWVjb21tZW50LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9kaWFsb2cvZGlhbG9nLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9zZWFyY2gvanVtcC10by1saW5lLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2NvZGVtaXJyb3ItNS42NS4yMC9hZGRvbi9kaXNwbGF5L2Z1bGxzY3JlZW4uanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPklUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+T3ZlcnZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWxsb2NhdGlvbkxpc3QuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uT3ZlcnZpZXcuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5PdmVydmlldy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRJVFNNQ29uZmlnSXRlbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q01EQjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5NZW51PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5JdGVtQXJlYTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4zMjAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+T3ZlcnZpZXcuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPk92ZXJ2aWV3PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjEwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+SVRTTSBjb25maWcgaXRlbSBvdmVydmlldy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5PdmVydmlldzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpDdXN0b21lcklUU01Db25maWdJdGVtIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkUmVmZXJlbmNlU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQ3VzdG9tZXIuU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRPRE8gcmVsZXZhbnQgZm9yIGNvbHVtbiBzZXR0aW5ncwogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LlRhYmxlRmlsdGVycy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgLS0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbUxpc3QuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1PdmVydmlldy5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uVGFibGUuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tLSBUT0RPIHJlbGV2YW50IGZvciBjb2x1bW4gc2V0dGluZ3MKICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BbGxvY2F0aW9uTGlzdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIC0tPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0jIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q01EQjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5UaWNrZXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+TWVudTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjMxMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJzdmdJY29uIj52YXIvaHR0cGQvaHRkb2NzL3NraW5zL0N1c3RvbWVyL2RlZmF1bHQvaW1nL2RldmljZXNfYmxhY2tfMjRkcC5zdmc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaCBjb25maWcgaXRlbXMuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5DdXN0b21lci5Db25maWdJdGVtT3ZlcnZpZXcuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1TZWFyY2guY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkRldGFpbC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uVGFibGUuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLlByaW50LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkUmVmZXJlbmNlU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbUxpc3QuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQ3VzdG9tZXIuU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIHpvb20uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+Wm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudElUU01Db25maWdJdGVtWm9vbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5ab29tLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5EZXRhaWwuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFsbG9jYXRpb25MaXN0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5QcmludC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2pxdWVyeS10YWJsZXNvcnRlci0yLjI4LjE0L2pxdWVyeS50YWJsZXNvcnRlci5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5JbnB1dEZpZWxkcy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5UYWJsZS5Tb3J0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkR5bmFtaWNGaWVsZERCRGV0YWlsZWRTZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkREJTZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkxpbmtPYmplY3QuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maXJtRGlhbG9nLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIHpvb20uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+Wm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpDdXN0b21lcklUU01Db25maWdJdGVtWm9vbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5ab29tLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5ab29tLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIGVkaXQuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+RWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudElUU01Db25maWdJdGVtRWRpdCMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuRHluYW1pY0ZpZWxkREJEZXRhaWxlZFNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5EeW5hbWljRmllbGREQlNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5JbnB1dEZpZWxkcy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maWdJdGVtLkN1c3RvbWVyU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRWRpdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQjIyNSaWNoVGV4dFdpZHRoIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSB3aWR0aCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1FZGl0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCslPyQiPjYyMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtRWRpdCMjI1JpY2hUZXh0SGVpZ2h0IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtRWRpdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJT8kIj4zMjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtUHJpbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gcHJpbnQuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+UHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+RGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPkRlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPklUU00gQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5Db25maWdJdGVtIFRyZWUgVmlldzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5UcmVlIFZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5JVFNNIENvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldyMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5UcmVlVmlldy5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LlRyZWVWaWV3LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT50aGlyZHBhcnR5L2pzcGx1bWItMS42LjQvanNwbHVtYi5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtQWRkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIGFkZC48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5BZGQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRJVFNNQ29uZmlnSXRlbUFkZCMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQWRkLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudElUU01Db25maWdJdGVtQWRkIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+TmV3PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPk5ldzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUFkZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4yMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2ggY29uZmlnIGl0ZW1zLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BbGxvY2F0aW9uTGlzdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5PdmVydmlldy5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGV0YWlsLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5UYWJsZS5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uUHJpbnQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5VSS5UYWJsZS5Tb3J0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LlRhYmxlRmlsdGVycy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maWdJdGVtLk92ZXJ2aWV3LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoIGNvbmZpZyBpdGVtcy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+U2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtU2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPm9uY2xpY2s9IklUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guT3BlblNlYXJjaERpYWxvZygnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCcpOyBpZiAoZXZlbnQuc3RvcFByb3BhZ2F0aW9uKSB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB9IGVsc2UgeyB3aW5kb3cuZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTsgfSByZXR1cm4gZmFsc2U7IjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjMwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIG1lbnUgbW9kdWxlcyAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzAwMC1CYWNrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+WyUgRW52KCJMYXN0U2NyZWVuT3ZlcnZpZXciKSAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMjAwLUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+SGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5O0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV07VmVyc2lvbklEPVslIERhdGEuVmVyc2lvbklEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMzMDAtRWRpdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+RWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtRWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjNDAwLVByaW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+UHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlByaW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludDtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtQYXJhbSI+dGFyZ2V0PSJwcmludCI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjNTAwLUxpbmsiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5MaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5MaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50TGlua09iamVjdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50TGlua09iamVjdDtTb3VyY2VPYmplY3Q9SVRTTUNvbmZpZ0l0ZW07U291cmNlS2V5PVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyM1NTAtVHJlZVZpZXciIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPlRyZWUgVmlldzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnSXRlbSBUcmVlIFZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3O1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjNjAwLUR1cGxpY2F0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5EdXBsaWNhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkR1cGxpY2F0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtRWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0R1cGxpY2F0ZUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTtWZXJzaW9uSUQ9WyUgRGF0YS5WZXJzaW9uSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzcwMC1Db25maWdJdGVtRGVsZXRlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+RGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5EZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRGVsZXRlO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+Q29uZmlybURpYWxvZzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRWxlbWVudFNlbGVjdG9yIj4jTWVudVslIERhdGEuTWVudUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maXJtZWRBY3Rpb25RdWVyeVN0cmluZyI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGU7U3ViYWN0aW9uPUNvbmZpZ0l0ZW1EZWxldGU7Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlhbG9nVGl0bGUiPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIFslIENvbmZpZygiSVRTTUNvbmZpZ0l0ZW06Okhvb2siKSAlXSBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gc2V0dGluZ3MgZm9yIHNwZWNpZmljIGNvbmZpZyBpdGVtIGNsYXNzZXMgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6Q0lOYW1lUmVnZXgiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbXB1dGVyOjpDSU5hbWVSZWdleCI+XkFCQy4qPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb21wdXRlcjo6Q0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UiPkEgY29tcHV0ZXIgbmFtZSBtdXN0IHN0YXJ0IHdpdGggQUJDITwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSGFyZHdhcmU6OkNJTmFtZVJlZ2V4Ij4uKlxkXGQkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJIYXJkd2FyZTo6Q0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UiPkEgaGFyZHdhcmUgbmFtZSBtdXN0IGVuZCB3aXRoIHR3byBkaWdpdHMhPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIHNldHRpbmdzIGZvciB0aGUgTGlua09iamVjdCBmZWF0dXJlIC0tPgogICAgPFNldHRpbmcgTmFtZT0iTGlua09iamVjdDo6Q29tcGxleFRhYmxlOjpTZXR0aW5nc1Zpc2liaWxpdHkjIyNJVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpMaW5rT2JqZWN0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+QWdlbnRJVFNNQ29uZmlnSXRlbVpvb208L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxpbmtPYmplY3Q6OkRlZmF1bHRTdWJPYmplY3QjIyNJVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgJ0lUU01Db25maWdJdGVtJy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkxpbmtPYmplY3Q8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5DbGllbnQ8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxpbmtPYmplY3Q6OklUU01Db25maWdJdGVtOjpTaG93Q29sdW1ucyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkxpbmtPYmplY3Q8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5DdXJJbmNpU2lnbmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3VyRGVwbFNpZ25hbDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW06OlNob3dDb2x1bW5zQnlDbGFzcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TGlua09iamVjdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpOYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkN1ckRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjozPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjozOjpDYXBhY2l0eTo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpXYXJyYW50eUV4cGlyYXRpb25EYXRlOjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkNyZWF0ZVRpbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Mb2NhdGlvbjo6VHlwZTo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkxvY2F0aW9uOjpBZGRyZXNzOjoxPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBzdGF0cyBzZXR0aW5ncyAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IlN0YXRzOjpEeW5hbWljT2JqZWN0UmVnaXN0cmF0aW9uIyMjSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN0YXRzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OlN0YXRzOjpEeW5hbWljOjpJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBJbXBvcnQvRXhwb3J0IHNldHRpbmdzIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kUmVnaXN0cmF0aW9uIyMjSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+T2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gZXZlbnQgc2V0dGluZ3MgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjMTAwLUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkRvSGlzdG9yeTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihDb25maWdJdGVtQ3JlYXRlfFZlcnNpb25DcmVhdGV8RGVwbG95bWVudFN0YXRlVXBkYXRlfEluY2lkZW50U3RhdGVVcGRhdGV8Q29uZmlnSXRlbURlbGV0ZXxMaW5rQWRkfExpbmtEZWxldGV8RGVmaW5pdGlvblVwZGF0ZXxOYW1lVXBkYXRlfFZlcnNpb25EZWxldGV8QXR0YWNobWVudEFkZFBvc3R8QXR0YWNobWVudERlbGV0ZVBvc3R8Q29uZmlnSXRlbUR5bmFtaWNGaWVsZCk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0aW9uIj4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QjIyMzMDAtRGVmaW5pdGlvbkNvbmZpZ0l0ZW1VcGRhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RGVmaW5pdGlvbkNvbmZpZ0l0ZW1VcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij5EZWZpbml0aW9uQ3JlYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUcmFuc2FjdGlvbiI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjNDAwMC1TY3JpcHREeW5hbWljRmllbGRzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkV2YWx1YXRlIGFsbCBzY3JpcHQgZmllbGRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RXZhbHVhdGVTY3JpcHRGaWVsZHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0aW9uIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIG1vcmUgZnJvbnRlbmQgbW9kdWxlIHNldHRpbmdzIGFuZCByZWdpc3RyYXRpb25zIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpIaXN0b3J5T3JkZXIiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9Im5vcm1hbCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9InJldmVyc2UiIFRyYW5zbGF0YWJsZT0iMSI+cmV2ZXJzZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0ibm9ybWFsIiBUcmFuc2xhdGFibGU9IjEiPm5vcm1hbDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gaGlzdG9yeS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5IaXN0b3J5PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5IyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5IaXN0b3J5LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHJlZmVyZW5jZXM6OlVwZGF0ZUFKQVg6OkFsbG93ZWQjIyMwMDItSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiIENvbmZpZ0xldmVsPSIyMDAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkEgbGlzdCBvZiBwYXJhbWV0ZXJzIHdoaWNoIGNhbiBiZSB1cGRhdGVkIHZpYSB0aGUgVXBkYXRlQUpBWC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6UHJlZmVyZW5jZXM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlckNvbmZpZ0l0ZW1ab29tVGFibGVIZWlnaHQiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI0RlcGxveW1lbnRTdGF0ZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpHZW5lcmFsQ2F0YWxvZzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzOjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyI+SVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5EZXBsb3ltZW50IFN0YXRlIFR5cGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij4yMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzYyIgVHJhbnNsYXRhYmxlPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9InBvc3Rwcm9kdWN0aXZlIiBUcmFuc2xhdGFibGU9IjEiPnBvc3Rwcm9kdWN0aXZlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9InByZXByb2R1Y3RpdmUiIFRyYW5zbGF0YWJsZT0iMSI+cHJlcHJvZHVjdGl2ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJwcm9kdWN0aXZlIiBUcmFuc2xhdGFibGU9IjEiPnByb2R1Y3RpdmU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5GdW5jdGlvbmFsaXR5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+T3B0aW9uPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIEdlbmVyYWxDYXRhbG9nIHNldHRpbmdzIC0tPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI0RlcGxveW1lbnRTdGF0ZXNDb2xvcnMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpHZW5lcmFsQ2F0YWxvZzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzOjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyI+SVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5EZXBsb3ltZW50IFN0YXRlIENvbG9yPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+MjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZLZXkiPkNvbG9yPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+Q29sb3JQaWNrZXI8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI05hbWVNb2R1bGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpHZW5lcmFsQ2F0YWxvZzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzOjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyI+SVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPk5hbWUgTW9kdWxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+MzA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+Q2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5OYW1lTW9kdWxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+TmFtZU1vZHVsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFuZGF0b3J5IiBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMjIyNOdW1iZXJNb2R1bGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkdlbmVyYWxDYXRhbG9nPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIj5JVFNNOjpDb25maWdJdGVtOjpDbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIE1vZHVsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjQwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPkNob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+TnVtYmVyTW9kdWxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+TnVtYmVyTW9kdWxlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYW5kYXRvcnkiIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI1ZlcnNpb25TdHJpbmdNb2R1bGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6R2VuZXJhbENhdGFsb2c8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPklUU006OkNvbmZpZ0l0ZW06OkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5WZXJzaW9uIFN0cmluZyBNb2R1bGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij41MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzYyIgVHJhbnNsYXRhYmxlPSIxIj5DaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDwhLS0gVE9ETyByZW5hbWUgRGF0YVNlbGVjdGVkIHByb3Blcmx5IHRvIERhdGFTZWxlY3RlZElELCBhcyBpdCBpcyBwYXNzZWQgYXMgU2VsZWN0ZWRJRCBzdWJzZXF1ZW50bHkgLS0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGFTZWxlY3RlZCI+SW5jcmVtZW50YWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1hbmRhdG9yeSIgVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+VmVyc2lvblN0cmluZ01vZHVsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPlZlcnNpb25TdHJpbmdNb2R1bGU8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI1ZlcnNpb25TdHJpbmdFeHByZXNzaW9uIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6R2VuZXJhbENhdGFsb2c8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPklUU006OkNvbmZpZ0l0ZW06OkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5WZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+NjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1hbmRhdG9yeSIgVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+VmVyc2lvblN0cmluZ0V4cHJlc3Npb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5JbnB1dDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzIyMjVmVyc2lvblRyaWdnZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6R2VuZXJhbENhdGFsb2c8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPklUU006OkNvbmZpZ0l0ZW06OkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5WZXJzaW9uIFRyaWdnZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij43MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzYyIgVHJhbnNsYXRhYmxlPSIxIj5DaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkRlc2NyaXB0aW9uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxTdGF0ZUlEIiBUcmFuc2xhdGFibGU9IjEiPkRlcGxveW1lbnRTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbmNpU3RhdGVJRCIgVHJhbnNsYXRhYmxlPSIxIj5JbmNpZGVudFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlZmluaXRpb25VcGRhdGUiIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5pdGlvbiBVcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5WZXJzaW9uVHJpZ2dlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkNvbmZpZ0l0ZW1WZXJzaW9uVHJpZ2dlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFuZGF0b3J5IiBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNdWx0aXBsZSIgVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzIyMjQ2F0ZWdvcmllcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6R2VuZXJhbENhdGFsb2c8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPklUU006OkNvbmZpZ0l0ZW06OkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5DYXRlZ29yaWVzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+ODA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+Q2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZLZXkiPkNhdGVnb3JpZXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5Db25maWdJdGVtQ2xhc3NDYXRlZ29yaWVzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNdWx0aXBsZSIgVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFuZGF0b3J5IiBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIHBlcm1pc3Npb24gc2V0dGluZ3MgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6Q2xhc3MjIyMwMTAtQ2xhc3NHcm91cENoZWNrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6Q2xhc3NHcm91cENoZWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJSZXF1aXJlZCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JhbnRlZCI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6SXRlbSMjIzAxMC1JdGVtQ2xhc3NHcm91cENoZWNrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246Okl0ZW1DbGFzc0dyb3VwQ2hlY2s8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlJlcXVpcmVkIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcmFudGVkIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZG1pbklUU01Db25maWdJdGVtIyMjRWRpdG9yUm93cyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46OlZpZXc6OklUU01Db25maWdJdGVtRGVmaW5pdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MzA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0IyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cnc8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQWRkIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQWRkIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ydzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeSAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtUHJpbnQgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludCMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtUHJpbnQjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtRGVsZXRlIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtRGVsZXRlIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtRGVsZXRlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cnc8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb20gLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb20jIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRXh0ZW5kZWRTZWFyY2hDb25kaXRpb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiZhbXA7JmFtcDsqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj40MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU29ydEJ5OjpEZWZhdWx0IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkFnZSI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkFnZSIgVHJhbnNsYXRhYmxlPSIxIj5BZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8IS0tIFRPRE8gdmVyaWZ5IGF0dHJpYnV0ZSBuYW1lcyAtLT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTnVtYmVyIiBUcmFuc2xhdGFibGU9IjEiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJEZXBsU3RhdGUiIFRyYW5zbGF0YWJsZT0iMSI+RGVwbG95bWVudCBTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iSW5jaVN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPkluY2lkZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPCEtLSBUT0RPIHRlc3QgZHluYW1pYyBmaWVsZHMgLS0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjT3JkZXI6OkRlZmF1bHQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRvd24iIFRyYW5zbGF0YWJsZT0iMSI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVXAiIFRyYW5zbGF0YWJsZT0iMSI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU2VhcmNoQ1NWRGF0YSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EYXRhIHVzZWQgdG8gZXhwb3J0IHRoZSBzZWFyY2ggcmVzdWx0IGluIENTViBmb3JtYXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSI+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSI+VmVyc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSI+Q3JlYXRlVGltZTwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU2VhcmNoQ1NWRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgRmllbGRzIHVzZWQgdG8gZXhwb3J0IHRoZSBzZWFyY2ggcmVzdWx0IGluIENTViBmb3JtYXQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI051bWJlciIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNOYW1lIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0RlcGxveW1lbnRTdGF0ZUlEcyIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjSW5jaWRlbnRTdGF0ZUlEcyIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjQ3VzdG9tZXJJRCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNDdXN0b21lclVzZXJMb2dpbiIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVNsb3QiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJVFNNQ29uZmlnSXRlbUNoYW5nZVRpbWVQb2ludCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJVFNNQ29uZmlnSXRlbUNoYW5nZVRpbWVTbG90IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI1NlYXJjaFByZXZpb3VzVmVyc2lvbnMiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjRHluYW1pY0ZpZWxkIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgJ1gnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6ICdhIHRleHQnLCBEcm9wZG93bjogJzEnLCBEYXRlL1RpbWU6ICdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5OycgYW5kIG9yICdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03JzsuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlcGxveW1lbnRTdGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNJbmNpZGVudFN0YXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkluY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNFeHRlbmRlZFNlYXJjaENvbmRpdGlvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJmFtcDsmYW1wOyprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NlYXJjaFBhZ2VTaG93biIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjQwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iQWdlIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iQWdlIiBUcmFuc2xhdGFibGU9IjEiPkFnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTnVtYmVyIiBUcmFuc2xhdGFibGU9IjEiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJEZXBsU3RhdGUiIFRyYW5zbGF0YWJsZT0iMSI+RGVwbG95bWVudCBTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iSW5jaVN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPkluY2lkZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI09yZGVyOjpEZWZhdWx0IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkRvd24iPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJEb3duIiBUcmFuc2xhdGFibGU9IjEiPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlVwIiBUcmFuc2xhdGFibGU9IjEiPlVwPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjTnVtYmVyIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI05hbWUiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjRGVwbG95bWVudFN0YXRlSURzIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+PC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJbmNpZGVudFN0YXRlSURzIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+PC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNEeW5hbWljRmllbGQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSAnWCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogJ2EgdGV4dCcsIERyb3Bkb3duOiAnMScsIERhdGUvVGltZTogJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7JyBhbmQgb3IgJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTcnOy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3IC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPnJvPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI1Blcm1pc3Npb25zIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkdlbmVyYWxDYXRhbG9nPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPlBlcm1pc3Npb24gR3JvdXA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij4xMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPlBlcm1pc3Npb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIj5JVFNNOjpDb25maWdJdGVtOjpDbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+UGVybWlzc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWFuZGF0b3J5IiBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpTZWFyY2gjIyNDb25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTo6U2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Il4oPzpBZ2VudHxBZG1pbilJVFNNQ29uZmlnSXRlbSI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2g7U3ViYWN0aW9uPUFKQVg8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6OlNlYXJjaDo6SmF2YVNjcmlwdCMjI0NvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SmF2YVNjcmlwdCBmdW5jdGlvbiBmb3IgdGhlIHNlYXJjaCBmcm9udGVuZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTo6U2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Il4oPzpBZ2VudHxBZG1pbilJVFNNQ29uZmlnSXRlbSI+SVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5PcGVuU2VhcmNoRGlhbG9nKCdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJyk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpBZ2VudDo6Q29tbW9uSlMjIyMxMDAtQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBKUyBmaWxlcyB0byBhbHdheXMgYmUgbG9hZGVkIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guanM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLlVJLkNvbmZpZ0l0ZW1BY3Rpb25Sb3cuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRGFzaGJvYXJkLmpzPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQcmVmZXJlbmNlc0dyb3VwcyMjI0NvbmZpZ0l0ZW1PdmVydmlld1NtYWxsUGFnZVNob3duIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6UHJlZmVyZW5jZXM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6UHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZlcmVuY2VHcm91cCI+TWlzY2VsbGFuZW91czwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJhdGlvbiBJdGVtIExpbWl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IktleSIgVHJhbnNsYXRhYmxlPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEwIj4xMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNSI+MTU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjAiPjIwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjI1Ij4yNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzMCI+MzA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMzUiPjM1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YVNlbGVjdGVkIj4yNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+VXNlckNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsUGFnZVNob3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj44MDAwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3RpdmUiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHJlZmVyZW5jZXNHcm91cHMjIyNDb25maWdJdGVtT3ZlcnZpZXdGaWx0ZXJTZXR0aW5ncyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyAnQWN0aXZlJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyJ3MgYmVoYWxmLiBVc2UgJ1ByZWZlcmVuY2VHcm91cCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlByZWZlcmVuY2VzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlByZWZlcmVuY2VzOjpDb2x1bW5GaWx0ZXJzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmZXJlbmNlR3JvdXAiPk1pc2NlbGxhbmVvdXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZWQgZmlsdGVycy48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+Q29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJLZXkiIFRyYW5zbGF0YWJsZT0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5Vc2VyRmlsdGVyQ29sdW1uc0VuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjgxMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGl2ZSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IyMjU21hbGwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpPdmVydmlld1NtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5TbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZVNob3J0Ij5TPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYWdlU2hvd24iPjI1PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJPdmVydmlldyMjI1NtYWxsIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6SVRTTUNvbmZpZ0l0ZW1PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6Q3VzdG9tZXJPdmVydmlld1NtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5TbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZVNob3J0Ij5TPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYWdlU2hvd24iPjI1PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0RlZmF1bHRDb2x1bW5zIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBBdmFpbGFibGU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGJ5IGRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOdW1iZXIiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJEZXBsU3RhdGUiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VySW5jaVN0YXRlIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxTdGF0ZSIgU2VsZWN0ZWRJRD0iMCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbmNpU3RhdGUiIFNlbGVjdGVkSUQ9IjAiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFzdENoYW5nZWQiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VyRGVwbFN0YXRlVHlwZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJJbmNpU3RhdGVUeXBlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNyZWF0ZWQiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6SG9vayIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5Db25maWdJdGVtIzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj4xMDAwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTAwMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0RlZmF1bHRDYXRlZ29yeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbT5BbGw8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0NsYXNzQ29sdW1uc0Rpc2FibGVkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0NsYXNzQ29sdW1uc0F2YWlsYWJsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjQ2xhc3NDb2x1bW5zRGVmYXVsdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjIiIFRyYW5zbGF0YWJsZT0iMSI+MiAtIEVuYWJsZWQgYW5kIHJlcXVpcmVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEeW5hbWljRmllbGQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBhbmQgcmVxdWlyZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTAwMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbSMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTAwMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlVuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+RGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5DaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzICgnY2xhc3MnKSBvciBnbG9iYWxseSAoJ2dsb2JhbCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSJnbG9iYWwiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJnbG9iYWwiIFRyYW5zbGF0YWJsZT0iMSI+Z2xvYmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJjbGFzcyIgVHJhbnNsYXRhYmxlPSIxIj5jbGFzczwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkJ1bGtBY3Rpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkJ1bGtBY3Rpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPnVzZXJzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkJ1bGsgQWN0aW9uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q01EQjwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBpdGVtIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQnVsayMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPnJ3PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+VG8gZG93bmxvYWQgYXR0YWNobWVudHMuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50OjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlRvIGRvd25sb2FkIGF0dGFjaG1lbnRzLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlByZU1lbnVNb2R1bGUjIyMxMDAtWm9vbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVNb2R1bGVQcmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPlpvb208L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlpvb208L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRJVFNNQ29uZmlnSXRlbVpvb208L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlByZU1lbnVNb2R1bGUjIyMyMDAtSGlzdG9yeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVNb2R1bGVQcmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkhpc3Rvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkhpc3Rvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQcmVNZW51TW9kdWxlIyMjMzAwLUR1cGxpY2F0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVNb2R1bGVQcmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkR1cGxpY2F0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RHVwbGljYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7RHVwbGljYXRlSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV07UmV0dXJuVG9MYXN0U2NyZWVuPTE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQnVsayMjI0RlcGxTdGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1CdWxrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQnVsayMjI0luY2lTdGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtQnVsazwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpBZG1pbk1vZHVsZUdyb3VwcyMjIzIwMC1JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBhdmFpbGFibGUgZ3JvdXBzIGZvciB0aGUgYWRtaW4gb3ZlcnZpZXcgc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6Ok5hdkJhck1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDTURCU2V0dGluZ3MiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkNNREIgU2V0dGluZ3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT3JkZXIiPjgwMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVpvb20jIyNWZXJzaW9uc0VuYWJsZWQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OklUU01Db25maWdJdGVtWm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVpvb20jIyNWZXJzaW9uc1NlbGVjdGFibGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpJVFNNQ29uZmlnSXRlbVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tIyMjR2VuZXJhbEluZm8iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+V2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpJVFNNQ29uZmlnSXRlbVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBIaWRkZW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBTaG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik51bWJlciIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSW5jaWRlbnRTdGF0ZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDcmVhdGVkVGltZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VkVGltZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8U2V0dGluZyBOYW1lPSJBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmQ6OklUU01Db25maWdJdGVtR2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+QXNzaWduZWQgQ0lzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5DSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXR0cmlidXRlcyI+Q3VzdG9tZXJDb21wYW55PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGaWx0ZXIiIFRyYW5zbGF0YWJsZT0iMSI+QXNzaWduZWRUb0VudGl0eTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGltaXQiPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQZXJtaXNzaW9uIj5ybzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkNvbnRlbnRMYXJnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FjaGVUVExMb2NhbCI+MC41PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdJdGVtS2V5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNob3duQ2xhc3NlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlZmF1bHRDb2x1bW5zIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEF2YWlsYWJsZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBieSBkZWZhdWx0PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik51bWJlciIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckRlcGxTdGF0ZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckRlcGxTdGF0ZVR5cGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJJbmNpU3RhdGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJJbmNpU3RhdGVUeXBlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFzdENoYW5nZWQiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDxTZXR0aW5nIE5hbWU9IkFnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNVSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkOjpJVFNNQ29uZmlnSXRlbUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkFzc2lnbmVkIENJczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF0dHJpYnV0ZXMiPkN1c3RvbWVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGaWx0ZXIiIFRyYW5zbGF0YWJsZT0iMSI+QXNzaWduZWRUb0VudGl0eTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGltaXQiPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQZXJtaXNzaW9uIj5ybzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkNvbnRlbnRMYXJnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FjaGVUVExMb2NhbCI+MC41PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTaG93bkNsYXNzZXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT48L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdJdGVtS2V5Ij5Db250YWN0LVVzZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlZmF1bHRDb2x1bW5zIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEF2YWlsYWJsZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBieSBkZWZhdWx0PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik51bWJlciIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckRlcGxTdGF0ZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckRlcGxTdGF0ZVR5cGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJJbmNpU3RhdGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJJbmNpU3RhdGVUeXBlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFzdENoYW5nZWQiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRWxhc3RpY3NlYXJjaDo6RXhjbHVkZWRDSUNsYXNzZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RWxhc3RpY3NlYXJjaDo6U2V0dGluZ3M8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkVsYXN0aWNzZWFyY2g6OkV4Y2x1ZGVkQ0lEZXBsb3ltZW50U3RhdGVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkVsYXN0aWNzZWFyY2g6OlNldHRpbmdzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJFbGFzdGljc2VhcmNoOjpDb25maWdJdGVtU3RvcmVGaWVsZHMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCIgQ29uZmlnTGV2ZWw9IjEwMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkVsYXN0aWNzZWFyY2g6OlNldHRpbmdzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJhc2ljIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvbmZpZ0l0ZW1JRDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3NJRDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkVsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1TZWFyY2hGaWVsZHMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RWxhc3RpY3NlYXJjaDo6U2V0dGluZ3M8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmFzaWMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF0dGFjaG1lbnRzIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkVsYXN0aWNzZWFyY2g6OlF1aWNrU2VhcmNoU2hvdyMjI0NvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+T2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFbGFzdGljc2VhcmNoOjpTZXR0aW5nczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb3VudCI+NTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXR0cmlidXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXR0cmlidXRlSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOdW1iZXIiPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJFdmVudHMjIyNJVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaXN0IG9mIGFsbCBQYWNrYWdlIGV2ZW50cyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIEdVSS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbmZpZ0l0ZW1DcmVhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db25maWdJdGVtVXBkYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+VmVyc2lvbkNyZWF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPlZlcnNpb25VcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsb3ltZW50U3RhdGVVcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpZGVudFN0YXRlVXBkYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29uZmlnSXRlbURlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPk5hbWVVcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5BdHRhY2htZW50QWRkUG9zdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkF0dGFjaG1lbnREZWxldGVQb3N0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+VmVyc2lvbkRlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gZHluYW1pYyBmaWVsZCByZWxhdGVkIHNldHRpbmdzIC0tPgogICAgPFNldHRpbmcgTmFtZT0iRHluYW1pY0ZpZWxkczo6T2JqZWN0VHlwZSMjI0lUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWNGaWVsZCBvYmplY3QgcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RHluYW1pY0ZpZWxkczo6T2JqZWN0VHlwZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEaXNwbGF5TmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5JVFNNIENvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6T2JqZWN0VHlwZTo6SVRTTUNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjExNTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGRTY3JlZW5zIyMjSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoaXMgY29uZmlndXJhdGlvbiBkZWZpbmVzIGFsbCBwb3NzaWJsZSBzY3JlZW5zIHRvIGVuYWJsZSBvciBkaXNhYmxlIGR5bmFtaWMgZmllbGRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6OkR5bmFtaWNGaWVsZFNjcmVlbnM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtRWRpdCMjI0R5bmFtaWNGaWVsZCI+QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVByaW50IyMjRHluYW1pY0ZpZWxkIj5BZ2VudElUU01Db25maWdJdGVtUHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0R5bmFtaWNGaWVsZCI+QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtWm9vbSMjI0R5bmFtaWNGaWVsZCI+QWdlbnRJVFNNQ29uZmlnSXRlbVpvb208L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0R5bmFtaWNGaWVsZCI+Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEZWZhdWx0Q29sdW1uc1NjcmVlbnMjIyNJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBjb25maWd1cmF0aW9uIGRlZmluZXMgYWxsIHBvc3NpYmxlIHNjcmVlbnMgdG8gZW5hYmxlIG9yIGRpc2FibGUgZGVmYXVsdCBjb2x1bW5zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6OkR5bmFtaWNGaWVsZFNjcmVlbnM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWdlbnRDdXN0b21lclVzZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ1VJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyVXNlciI+RGFzaGJvYXJkV2lkZ2V0IENVSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55Ij5EYXNoYm9hcmRXaWRnZXQgQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNEZWZhdWx0Q29sdW1ucyI+QWdlbnRJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtIyMjRGVmYXVsdENvbHVtbnMiPkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRHluYW1pY0ZpZWxkU2NyZWVuczo6T2JqZWN0VHlwZXMjIyNJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6RHluYW1pY0ZpZWxkU2NyZWVuczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPklUU01Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBkeW5hbWljIGZpZWxkIElUU01Db25maWdJdGVtIFJlZmVyZW5jZSAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZHM6OkRyaXZlciMjI0NvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pY0ZpZWxkIGJhY2tlbmQgcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RHluYW1pY0ZpZWxkczo6RHJpdmVyUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRpc3BsYXlOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluRHluYW1pY0ZpZWxkUmVmZXJlbmNlPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDwhLS0gRW5kIGR5bmFtaWMgZmllbGQgSVRTTUNvbmZpZ0l0ZW0gUmVmZXJlbmNlIC0tPgoKICAgIDwhLS0gZHluYW1pYyBmaWVsZCBJVFNNQ29uZmlnSXRlbVZlcnNpb24gUmVmZXJlbmNlIC0tPgogICAgPFNldHRpbmcgTmFtZT0iRHluYW1pY0ZpZWxkczo6RHJpdmVyIyMjQ29uZmlnSXRlbVZlcnNpb24iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pY0ZpZWxkIGJhY2tlbmQgcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RHluYW1pY0ZpZWxkczo6RHJpdmVyUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRpc3BsYXlOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ0l0ZW0gVmVyc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6OkNvbmZpZ0l0ZW1WZXJzaW9uPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluRHluYW1pY0ZpZWxkUmVmZXJlbmNlPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDwhLS0gRW5kIGR5bmFtaWMgZmllbGQgSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uIFJlZmVyZW5jZSAtLT4KCiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGQ6OkV2ZW50TW9kdWxlUG9zdCMjIzIwMC1EeW5hbWljRmllbGRTeW5jIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RXZlbnQ6OklUU01Db25maWdJdGVtRGVmaW5pdGlvblN5bmM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij5EeW5hbWljRmllbGRVcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0aW9uIj4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZDo6RXZlbnRNb2R1bGVQb3N0IyMjMjQwMC1SZWJ1aWxkQUNMUHJlc2VsZWN0aW9uQ2FjaGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVidWlsZHMgdGhlIEFDTCBwcmVzZWxlY3Rpb24gY2FjaGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkV2ZW50OjpSZWJ1aWxkQUNMUHJlc2VsZWN0aW9uQ2FjaGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij5EZWZpbml0aW9uQ3JlYXRlPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzAxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+QWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cHMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3NlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGVzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVXNlckR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkVmFsdWVzIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwMiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVwbG95bWVudFN0YXRlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXJEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZFZhbHVlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zIyMjMDMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzc2VzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxveW1lbnRTdGF0ZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGRWYWx1ZXMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzA0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cHMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3NlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGVzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVXNlckR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkVmFsdWVzIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVwbG95bWVudFN0YXRlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXJEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZFZhbHVlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjRGVmYXVsdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyMwMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RGVwbFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3JlYXRlZDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkluY2lTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9uQ29sdW1ucyMjIzAzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyMwNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RGVwbFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3JlYXRlZDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkluY2lTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIFRyZWVWaWV3IHJlbGF0ZWQgc2V0dGluZ3MgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJDTURCVHJlZVZpZXc6OkRlZmF1bHREZXB0aCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj4zPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDTURCVHJlZVZpZXc6OlNob3dMaW5rTGFiZWxzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IlllcyI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlllcyIgVHJhbnNsYXRhYmxlPSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Ik5vIiBUcmFuc2xhdGFibGU9IjEiPk5vPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGRzOjpEeW5hbWljRmllbGRTZXQ6OklubmVyRmllbGRzVGlja2V0VG9DSSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpEeW5hbWljRmllbGRzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN3YXBwZWREaXNrU04iPklUU01TdG9yYWdlLVNlcmlhbE51bWJlcjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkxpY2Vuc2VDb3VudCMjIzAxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkF0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXCZsdDtPVE9CT19DT05GSUdJVEVNX1hcJmd0OyB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRvdGFsTGljZW5zZXNERiI+SVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdmFpbGFibGVMaWNlbnNlc0RGIj5JVFNNTGljZW5zZS1MaWNlbnNlc0F2YWlsYWJsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWluaW11bUxpY2Vuc2VzIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpY2Vuc2VSZWZlcmVuY2VERiI+SVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlZhbGlkRGVwbFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpY2tldCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUXVldWUiPk1pc2M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGV4dCIgVmFsdWVUeXBlPSJUZXh0YXJlYSI+VGhlIGxpY2Vuc2UgJmx0O09UT0JPX0NPTkZJR0lURU1fTkFNRSZndDsgaGFzIGxlc3MgdGhhbiAmbHQ7T1RPQk9fQ09ORklHSVRFTV9MSUNFTlNFU19NSU4mZ3Q7IGl0ZW1zICgmbHQ7T1RPQk9fQ09ORklHSVRFTV9MSUNFTlNFU19BVkFJTCZndDsgbGljZW5zZXMgbGVmdCkuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZCI+Q01EQkxpY2Vuc2VOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPkxpY2Vuc2UgUmVwcm92aXNpb25pbmc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VuZGVyVHlwZSI+c3lzdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGljZW5zZUNvdW50IyMjMDIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVG90YWxMaWNlbnNlc0RGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF2YWlsYWJsZUxpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWluaW11bUxpY2Vuc2VzIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpY2Vuc2VSZWZlcmVuY2VERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZERlcGxTdGF0ZXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaWNrZXQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlF1ZXVlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGV4dCIgVmFsdWVUeXBlPSJUZXh0YXJlYSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNlcnZpY2UiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTTEEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT3duZXJJRCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VuZGVyVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGljZW5zZUNvdW50IyMjMDMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVG90YWxMaWNlbnNlc0RGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF2YWlsYWJsZUxpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWluaW11bUxpY2Vuc2VzIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpY2Vuc2VSZWZlcmVuY2VERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZERlcGxTdGF0ZXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaWNrZXQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlF1ZXVlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGV4dCIgVmFsdWVUeXBlPSJUZXh0YXJlYSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNlcnZpY2UiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTTEEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT3duZXJJRCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VuZGVyVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGljZW5zZUNvdW50IyMjMDQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVG90YWxMaWNlbnNlc0RGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF2YWlsYWJsZUxpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWluaW11bUxpY2Vuc2VzIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpY2Vuc2VSZWZlcmVuY2VERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZERlcGxTdGF0ZXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaWNrZXQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlF1ZXVlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGV4dCIgVmFsdWVUeXBlPSJUZXh0YXJlYSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNlcnZpY2UiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTTEEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT3duZXJJRCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VuZGVyVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGljZW5zZUNvdW50IyMjMDUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVG90YWxMaWNlbnNlc0RGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF2YWlsYWJsZUxpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWluaW11bUxpY2Vuc2VzIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpY2Vuc2VSZWZlcmVuY2VERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZERlcGxTdGF0ZXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaWNrZXQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlF1ZXVlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGV4dCIgVmFsdWVUeXBlPSJUZXh0YXJlYSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNlcnZpY2UiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTTEEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT3duZXJJRCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VuZGVyVHlwZSI+c3lzdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjMjAwLUxpY2Vuc2VMaW5rQ291bnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6Q291bnRMaWNlbnNlTGlua3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij5EZXBsb3ltZW50U3RhdGVVcGRhdGV8Q29uZmlnSXRlbUR5bmFtaWNGaWVsZFVwZGF0ZV98RGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUcmFuc2FjdGlvbiI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgo=</File>
        <File Location="Kernel/Config/Files/XML/ITSMConfigItemACL.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdG9ib19jb25maWcgdmVyc2lvbj0iMi4wIiBpbml0PSJDb25maWciPgo8IS0tIFRPRE86IG1lcmdlIGZpbGUgaW50byBzdGFuZGFyZCBjb25maWdpdGVtLnhtbCAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtQUNMS2V5c0xldmVsMU1hdGNoIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW06OkFDTDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcm9wZXJ0aWVzIj5Qcm9wZXJ0aWVzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcm9wZXJ0aWVzRGF0YWJhc2UiPlByb3BlcnRpZXNEYXRhYmFzZTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbUFDTEtleXNMZXZlbDFDaGFuZ2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTo6QUNMPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBvc3NpYmxlIj5Qb3NzaWJsZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUG9zc2libGVBZGQiPlBvc3NpYmxlQWRkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQb3NzaWJsZU5vdCI+UG9zc2libGVOb3Q8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW1BQ0xLZXlzTGV2ZWwyOjpQb3NzaWJsZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTo6QUNMPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0l0ZW0iPkNvbmZpZ0l0ZW08L0l0ZW0+CjwhLS0gVE9ETyAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWN0aW9uPC9JdGVtPiAtLT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRm9ybSI+Rm9ybTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbUFDTEtleXNMZXZlbDI6OlBvc3NpYmxlQWRkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtOjpBQ0w8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnSXRlbSI+Q29uZmlnSXRlbTwvSXRlbT4KPCEtLSBUT0RPICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BY3Rpb248L0l0ZW0+IC0tPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGb3JtIj5Gb3JtPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtQUNMS2V5c0xldmVsMjo6UG9zc2libGVOb3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW06OkFDTDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdJdGVtIj5Db25maWdJdGVtPC9JdGVtPgo8IS0tIFRPRE8gICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFjdGlvbjwvSXRlbT4gLS0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZvcm0iPkZvcm08L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW1BQ0xLZXlzTGV2ZWwyOjpQcm9wZXJ0aWVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtOjpBQ0w8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnSXRlbSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGcm9udGVuZCIgVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlciIgVHJhbnNsYXRhYmxlPSIxIj5Vc2VyPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtQUNMS2V5c0xldmVsMjo6UHJvcGVydGllc0RhdGFiYXNlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtOjpBQ0w8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnSXRlbSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyIiBUcmFuc2xhdGFibGU9IjEiPlVzZXI8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW1BQ0xLZXlzTGV2ZWwzOjpBY3Rpb25zIyMjMTAwLURlZmF1bHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciAnQWN0aW9uJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW06OkFDTDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+QWdlbnRJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNvbmZpZ0l0ZW1BQ0w6OkFDTFByZXNlbGVjdGlvbiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5XaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTo6QUNMPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ29uZmlnSXRlbUFDTDo6QXV0b3NlbGVjdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5XaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTo6QUNMPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KPC9vdG9ib19jb25maWc+Cg==</File>
        <File Location="Kernel/Config/Files/XML/ITSMConfigItemGenericInterface.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5Db25maWdJdGVtR2V0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGUjIyNDb25maWdJdGVtOjpDb25maWdJdGVtVXBzZXJ0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIG9wZXJhdGlvbiBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkNvbmZpZ0l0ZW1VcHNlcnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZSMjI0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1TZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgb3BlcmF0aW9uIGxheWVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnSXRlbVNlYXJjaDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+Q29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb25EZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjQ29uZmlnSXRlbTo6Q29uZmlnSXRlbURlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5Db25maWdJdGVtRGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtR2V0IyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtR2V0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbVVwc2VydCMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbVVwc2VydDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPnJ3PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2gjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtU2VhcmNoIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDh9JCI+NTAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2gjIyNTb3J0Qnk6OkRlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iQWdlIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iQ29uZmlnSXRlbSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJOdW1iZXIiIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRlcGxTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5EZXBsb3ltZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJJbmNpU3RhdGUiIFRyYW5zbGF0YWJsZT0iMSI+SW5jaWRlbnQgU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkN1ckRlcGxTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5DdXJyZW50IERlcGxveW1lbnQgU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkN1ckluY2lTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5DdXJyZW50IEluY2lkZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJBZ2UiIFRyYW5zbGF0YWJsZT0iMSI+QWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJDcmVhdGVkIiBUcmFuc2xhdGFibGU9IjEiPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkNoYW5nZWQiIFRyYW5zbGF0YWJsZT0iMSI+Q2hhbmdlZDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2gjIyNPcmRlcjo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRvd24iIFRyYW5zbGF0YWJsZT0iMSI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVXAiIFRyYW5zbGF0YWJsZT0iMSI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtRGVsZXRlIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtRGVsZXRlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cnc8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZSMjI0VsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1NYW5hZ2VtZW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGludm9rZXIgbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnSXRlbU1hbmFnZW1lbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkNvbmZpZ0l0ZW1NYW5hZ2VtZW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZUludm9rZXJEZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QjIyM5NzAwLUdlbmVyaWNJbnRlcmZhY2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkV2ZW50OjpIYW5kbGVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUcmFuc2FjdGlvbiI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihWZXJzaW9uVXBkYXRlfE5hbWVVcGRhdGV8RGVwbG95bWVudFN0YXRlVXBkYXRlfEluY2lkZW50U3RhdGVVcGRhdGV8Q29uZmlnSXRlbUNyZWF0ZXxDb25maWdJdGVtVXBkYXRlfFZlcnNpb25DcmVhdGV8Q29uZmlnSXRlbURlbGV0ZXxBdHRhY2htZW50QWRkUG9zdHxBdHRhY2htZW50RGVsZXRlUG9zdCk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbUZldGNoOjpDbGFzc2VzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtPjxBcnJheT48L0FycmF5PjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6TW9kdWxlIyMjQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnSXRlbUNyZWF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+Q29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VJbnZva2VyRGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpNb2R1bGUjIyNDb25maWdJdGVtOjpDb25maWdJdGVtRmV0Y2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnSXRlbUZldGNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZUludm9rZXJDb25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZSMjI0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1VcGRhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkNvbmZpZ0l0ZW1VcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlSW52b2tlckRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FkbWluR2VuZXJpY0ludGVyZmFjZUludm9rZXJDb25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+YWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBtb2R1bGUgaXMgcGFydCBvZiB0aGUgYWRtaW4gYXJlYSBvZiBPVE9CTy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIEludm9rZXIgR1VJPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZG1pbkdlbmVyaWNJbnRlcmZhY2VJbnZva2VyQ29uZmlnSXRlbSMjIzAwNy1JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkFkbWluLkdlbmVyaWNJbnRlcmZhY2UuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5BZG1pbi5HZW5lcmljSW50ZXJmYWNlSW52b2tlci5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbVVwc2VydDo6Q2xhc3NlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtPjxBcnJheT48L0FycmF5PjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+QWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIE9wZXJhdGlvbiBHVUk8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0jIyMwMDItR2VuZXJpY0ludGVyZmFjZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuQWRtaW4uR2VuZXJpY0ludGVyZmFjZS5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkFkbWluLkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb24uanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1RyaWdnZXJDb25maWdJdGVtRmV0Y2gtMDEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCIgQ29uZmlnTGV2ZWw9IjEwMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhc2tOYW1lIj5UcmlnZ2VyQ29uZmlnSXRlbUZldGNoMDE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNjaGVkdWxlIj4qLzIwICogKiAqICo8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpXZWJTZXJ2aWNlOjpUcmlnZ2VyQ29uZmlnSXRlbUZldGNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGdW5jdGlvbiI+RXhlY3V0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWF4aW11bVBhcmFsbGVsSW5zdGFuY2VzIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYXJhbXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+V2ViU2VydmljZU5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkludm9rZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1RyaWdnZXJDb25maWdJdGVtRmV0Y2gtMDIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCIgQ29uZmlnTGV2ZWw9IjEwMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhc2tOYW1lIj5UcmlnZ2VyQ29uZmlnSXRlbUZldGNoMDI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNjaGVkdWxlIj4qLzIwICogKiAqICo8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpXZWJTZXJ2aWNlOjpUcmlnZ2VyQ29uZmlnSXRlbUZldGNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGdW5jdGlvbiI+RXhlY3V0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWF4aW11bVBhcmFsbGVsSW5zdGFuY2VzIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYXJhbXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+V2ViU2VydmljZU5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkludm9rZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1RyaWdnZXJDb25maWdJdGVtRmV0Y2gtMDMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCIgQ29uZmlnTGV2ZWw9IjEwMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhc2tOYW1lIj5UcmlnZ2VyQ29uZmlnSXRlbUZldGNoMDM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNjaGVkdWxlIj4qLzIwICogKiAqICo8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpXZWJTZXJ2aWNlOjpUcmlnZ2VyQ29uZmlnSXRlbUZldGNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGdW5jdGlvbiI+RXhlY3V0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWF4aW11bVBhcmFsbGVsSW5zdGFuY2VzIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYXJhbXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+V2ViU2VydmljZU5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkludm9rZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgo=</File>
        <File Location="Kernel/Config/Files/XML/ITSMConfigItemTicketLink.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpTZXRJbmNpZGVudFN0YXRlT25MaW5rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rU3RhdHVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkV2ZW50TW9kdWxlUG9zdCMjIzA0Mi1JVFNNQ29uZmlnSXRlbVRpY2tldFN0YXR1c0xpbmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OlRpY2tldDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpUaWNrZXRTdGF0dXNMaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+KExpbmtBZGR8TGlua0RlbGV0ZSk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyMwNDItSVRTTUNvbmZpZ0l0ZW1UaWNrZXRTdGF0dXNMaW5rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkV2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpUaWNrZXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6VGlja2V0U3RhdHVzTGluazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihUaWNrZXRTdGF0ZVVwZGF0ZXxUaWNrZXRUeXBlVXBkYXRlKTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6VGlja2V0VHlwZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rU3RhdHVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRW50aXR5IiBWYWx1ZUVudGl0eVR5cGU9IlR5cGUiIFZhbHVlUmVnZXg9IiI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRW50aXR5IiBWYWx1ZUVudGl0eVR5cGU9IlR5cGUiIFZhbHVlUmVnZXg9IiI+SW5jaWRlbnQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpEZXBsb3ltZW50U3RhdGVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TGlua1N0YXR1czwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPlByb2R1Y3Rpb248L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpJbmNpZGVudFN0YXRlcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rU3RhdHVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaWRlbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5XYXJuaW5nPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+T3BlcmF0aW9uYWw8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpMaW5rVHlwZXMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TGlua1N0YXR1czwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJSZWxldmFudFRvIj5JbmNpZGVudDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI0NNREJOb3RpZmljYXRpb25zIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5EYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzazwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXNrTmFtZSI+Q01EQk5vdGlmaWNhdGlvbnM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNjaGVkdWxlIj4wIDQgKiAqICo8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpJVFNNOjpDb25maWdJdGVtOjpDcmVhdGVDb25kaXRpb25hbFRpY2tldHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZ1bmN0aW9uIj5FeGVjdXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYXhpbXVtUGFyYWxsZWxJbnN0YW5jZXMiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBhcmFtcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ01EQk5vdGlmaWNhdGlvbnM6OlJ1bGVzIyMjMDAxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkF0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFwmbHQ7T1RPQk9fQ09ORklHSVRFTV9YXCZndDsgd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtOjpOb3RpZmljYXRpb25FdmVudDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyI+TGljZW5zZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Qcm9kdWN0aW9uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+SVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPi0zMGQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpY2tldCI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUXVldWUiPk1pc2M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGV4dCIgVmFsdWVUeXBlPSJUZXh0YXJlYSI+VGhlIGxpY2Vuc2UgJmx0O09UT0JPX0NPTkZJR0lURU1fTkFNRSZndDsgcnVucyBvdXQgaW4gMzAgZGF5cyAoJmx0O09UT0JPX0NPTkZJR0lURU1fREFURSZndDspLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPkxpY2Vuc2UgUmVuZXdhbDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwMiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwNiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwNyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwOCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAwOSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxMCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxMiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxNSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxNiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxNyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxOCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAxOSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkNNREJOb3RpZmljYXRpb25zOjpSdWxlcyMjIzAyMCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcJmx0O09UT0JPX0NPTkZJR0lURU1fWFwmZ3Q7IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTo6Tm90aWZpY2F0aW9uRXZlbnQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlRGVwbG95bWVudFN0YXRlcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpbWVDSUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaW1lTW9kaWZpZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJOb3RpZmljYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW9yaXR5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU3RhdGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2VydmljZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNMQSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJPd25lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW5kZXJUeXBlIj5zeXN0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaWNlbnNlTWFuYWdlbWVudCMjIzAxLVN0YW5kYXJkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkF0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRvdGFsTGljZW5zZXNERiI+SVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdmFpbGFibGVMaWNlbnNlc0RGIj5JVFNNTGljZW5zZS1BdmFpbGFibGVMaWNlbnNlczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGljZW5zZVJlZmVyZW5jZURGIj5JVFNNLVJlZmVyZW5jZVRvTGljZW5zZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWREZXBsU3RhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlByb2R1Y3Rpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGljZW5zZU1hbmFnZW1lbnQjIyMwMi1SdWxlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUb3RhbExpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXZhaWxhYmxlTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaWNlbnNlUmVmZXJlbmNlREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWREZXBsU3RhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGljZW5zZU1hbmFnZW1lbnQjIyMwMy1SdWxlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUb3RhbExpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXZhaWxhYmxlTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaWNlbnNlUmVmZXJlbmNlREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWREZXBsU3RhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjMjAwLUxpY2Vuc2VVcGRhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkV2ZW50OjpDb3VudExpY2Vuc2VMaW5rczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihEZXBsb3ltZW50U3RhdGVVcGRhdGV8Q29uZmlnSXRlbUR5bmFtaWNGaWVsZFVwZGF0ZV98RGVsZXRlKTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHJhbnNhY3Rpb24iPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4K</File>
        <File Location="Kernel/GenericInterface/Event/ObjectType/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkV2ZW50OjpPYmplY3RUeXBlOjpJVFNNQ29uZmlnSXRlbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RXZlbnQ6Ok9iamVjdFR5cGU6OklUU01Db25maWdJdGVtIC0gR2VuZXJpY0ludGVyZmFjZSBldmVudCBkYXRhIGhhbmRsZXIKCj1oZWFkMSBTWU5PUFNJUwoKVGhpcyBldmVudCBoYW5kbGVyIGdhdGhlcnMgZGF0YSBmcm9tIG9iamVjdHMuCgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBBbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0LgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBEYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3KERhdGEpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXtEYXRhfXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgQ29uZmlnSXRlbUlEISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJE9iamVjdERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtEYXRhfXtDb25maWdJdGVtSUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICBTaWxlbnQgICAgICAgID0+IDEsCiAgICApOwoKICAgIHJldHVybiAleyRPYmplY3REYXRhfTsKfQoKMTsK</File>
        <File Location="Kernel/GenericInterface/Invoker/ConfigItem/Common.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29tbW9uOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0IHF3KGVuY29kZV9iYXNlNjQpOwp1c2UgU3RvcmFibGUgICAgIHF3KGRjbG9uZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkNvbmZpZ0l0ZW06OkNvbW1vbiAtIGNvbW1vbiBJbnZva2VyIGZ1bmN0aW9ucwoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgY29tbW9uIGZ1bmN0aW9ucyBmb3IgQ29uZmlnSXRlbXMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29tbW9uOwoKICAgIG15ICRDb25maWdJdGVtQ29tbW9uT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb21tb24tPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCAgICAgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgICAgIEludm9rZXIgICAgICAgICAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsICMgZXhhbXBsZQogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IEludm9rZXIgV2Vic2VydmljZUlEICkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBQcmVwYXJlUmVxdWVzdCgpCgpwcmVwYXJlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBjb25maWd1cmVkIHJlbW90ZSB3ZWItc2VydmljZS4KCiAgICBteSAkUmVzdWx0ID0gJEludm9rZXJPYmplY3QtPlByZXBhcmVSZXF1ZXN0KAogICAgICAgIERhdGEgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICAgICB9LAogICAgKTsKClJlc3VsdCBleGFtcGxlOgoKICAgIHsKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgID0+ICdDSUNsYXNzJywKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgPT4gMTIzLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgID0+IDIsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgPT4gJ1NvbWUgZGVzY3JpcHRpb24nLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSA9PiAnREZWYWx1ZScsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgICAgICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBMYXN0VmVyc2lvbklEICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgID0+ICdDb25maWdJdGVtTmFtZScsCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgID0+IDQ1NiwKICAgICAgICAgICAgICAgIFZlcnNpb25JRCAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFZlcnNpb25TdHJpbmcgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBQcmVwYXJlUmVxdWVzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW0uTWlzc2luZ0RhdGEnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFNlbGYtPntJbnZva2VyfSAuICI6IFRoZSByZXF1ZXN0IGRhdGEgaXMgaW52YWxpZCEiLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAhJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtLk1pc3NpbmdDb25maWdJdGVtSUQnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFNlbGYtPntJbnZva2VyfSAuICI6IENvbmZpZ0l0ZW1JRCBpcyByZXF1aXJlZCEiLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBDb25maWdJdGVtSUQKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfTsKCiAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbS5NaXNzaW5nQ29uZmlnSXRlbUlEJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRTZWxmLT57SW52b2tlcn0gLiAiOiBVc2VyIGRvZXMgbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBjb25maWcgaXRlbSEiLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRDb25maWdJdGVtRGF0YSkgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtLkFjY2Vzc0RlbmllZCcsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkU2VsZi0+e0ludm9rZXJ9IC4gIjogVXNlciBkb2VzIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgY29uZmlnIGl0ZW0hIiwKICAgICAgICApOwogICAgfQoKICAgIG15IEBBdHRhY2htZW50RGF0YTsKICAgIG15IEBDb25maWdJdGVtQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICBBVFRBQ0hNRU5UOgogICAgZm9yIG15ICRGaWxlbmFtZSAoQENvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCkgewogICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJEZpbGVuYW1lOwogICAgICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgIE9ubHlNeUJhY2tlbmQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRBdHRhY2htZW50KTsKCiAgICAgICAgIyB1c2UgJ3V0ZjgnIGluc3RlYWQgb2YgJ3V0Zi04JwogICAgICAgICMgYmVjYXVzZSBPcGVyYXRpb24gVGlja2V0Q3JlYXRlL1RpY2tldFVwZGF0ZQogICAgICAgICMgY3VycmVudGx5IGRvZXMgbm90IGFjY2VwdCAndXRmLTgnCiAgICAgICAgJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0gPX4gc3t1dGYtOH17dXRmOH07CgogICAgICAgICMgY29udmVydCBjb250ZW50IHRvIGJhc2U2NAogICAgICAgICRBdHRhY2htZW50LT57Q29udGVudH0gPSBlbmNvZGVfYmFzZTY0KCAkQXR0YWNobWVudC0+e0NvbnRlbnR9ICk7CgogICAgICAgICRBdHRhY2htZW50LT57RmlsZW5hbWV9ID0gJEZpbGVuYW1lOwogICAgICAgICRBdHRhY2htZW50LT57TWltZVR5cGV9ID0gJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CiAgICAgICAgJEF0dGFjaG1lbnQtPntNaW1lVHlwZX0gPX4gc3sgWyw7XSBbIF0qIGNoYXJzZXQ9IC4rIFx6IH17fXhtc2k7CgogICAgICAgICMgcmVtb3ZlIGVtcHR5IGF0dHJpYnV0ZXMKICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJEF0dGFjaG1lbnQtPiUqICkgewogICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAkQXR0cmlidXRlIGVxICdDb250ZW50VHlwZSc7CiAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICRBdHRyaWJ1dGUgZXEgJ0NvbnRlbnQnOwogICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiBJc1N0cmluZ1dpdGhEYXRhKCAkQXR0YWNobWVudC0+eyRBdHRyaWJ1dGV9ICk7CiAgICAgICAgICAgIGRlbGV0ZSAkQXR0YWNobWVudC0+eyRBdHRyaWJ1dGV9OwogICAgICAgIH0KCiAgICAgICAgcHVzaCBAQXR0YWNobWVudERhdGEsICRBdHRhY2htZW50OwogICAgfQoKICAgICMgYWRkIGF0dGFjaG1lbnRzIHdpdGggb2xkIHN0cnVjdHVyZQogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoIFxAQXR0YWNobWVudERhdGEgKSApIHsKICAgICAgICAkQ29uZmlnSXRlbURhdGEtPntBdHRhY2htZW50fSA9IFxAQXR0YWNobWVudERhdGE7CiAgICB9CgogICAgIyByZXBsYWNlIGNvbmZpZyBpdGVtIHZhbHVlcyB3aXRoIHJlYWRhYmxlIHZhbHVlcwogICAgJENvbmZpZ0l0ZW1EYXRhID0gJFNlbGYtPl9UcmFuc2l0aW9uRHluYW1pY0ZpZWxkRGF0YSgKICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtRGF0YSwKICAgICk7CgogICAgJFNlbGYtPntSZXF1ZXN0RGF0YX0gPSBcJVBhcmFtOwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4gJENvbmZpZ0l0ZW1EYXRhLAogICAgfTsKfQoKPWhlYWQyIEhhbmRsZVJlc3BvbnNlKCkKCmhhbmRsZSByZXNwb25zZSBkYXRhIG9mIHRoZSBjb25maWd1cmVkIHJlbW90ZSB3ZWItc2VydmljZS4KCiAgICBteSAkUmVzdWx0ID0gJEludm9rZXJPYmplY3QtPkhhbmRsZVJlc3BvbnNlKAogICAgICAgIFJlc3BvbnNlU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAjIHN1Y2Nlc3Mgc3RhdHVzIG9mIHRoZSByZW1vdGUgd2ViLXNlcnZpY2UKICAgICAgICBSZXNwb25zZUVycm9yTWVzc2FnZSA9PiAnJywgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIHdlYi1zZXJ2aWNlIGVycm9yCiAgICAgICAgRGF0YSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkCiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgRXJyb3JNZXNzYWdlICAgID0+ICcnLCAgICAgICAgICAgICAgICAgICMgaW4gY2FzZSBvZiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAjIGRhdGEgcGF5bG9hZCBhZnRlciBJbnZva2VyCiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIEhhbmRsZVJlc3BvbnNlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gdGhlIHJlc3BvbnNlLCBmb3J3YXJkIGl0CiAgICBpZiAoICEkUGFyYW17UmVzcG9uc2VTdWNjZXNzfSAmJiAhJFBhcmFte0RhdGF9ICkgewogICAgICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtSZXNwb25zZUVycm9yTWVzc2FnZX0gKSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbS5SZXNwb25zZUVycm9yJywKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkU2VsZi0+e0ludm9rZXJ9CiAgICAgICAgICAgICAgICAgICAgLiAiOiBHb3QgcmVzcG9uc2UgZXJyb3IsIGJ1dCBubyByZXNwb25zZSBlcnJvciBtZXNzYWdlISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFBhcmFte1Jlc3BvbnNlRXJyb3JNZXNzYWdlfSwKICAgICAgICB9OwogICAgfQoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4gJFBhcmFte0RhdGF9LAogICAgfTsKfQoKPWhlYWQyIFJldHVybkVycm9yKCkKCmhlbHBlciBmdW5jdGlvbiB0byByZXR1cm4gYW4gZXJyb3IgbWVzc2FnZS4KCiAgICBteSAkUmV0dXJuID0gJENvbW1vbk9iamVjdC0+UmV0dXJuRXJyb3IoCiAgICAgICAgRXJyb3JDb2RlICAgID0+IENvbmZpZ0l0ZW0uQWNjZXNzRGVuaWVkLAogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnWW91IGRvbnQgaGF2ZSByaWdodHMgdG8gYWNjZXNzIHRoaXMgdGlja2V0JywKICAgICk7Cgo9Y3V0CgpzdWIgUmV0dXJuRXJyb3IgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+e0RlYnVnZ2VyT2JqZWN0fS0+RXJyb3IoCiAgICAgICAgU3VtbWFyeSA9PiAkUGFyYW17RXJyb3JDb2RlfSwKICAgICAgICBEYXRhICAgID0+ICRQYXJhbXtFcnJvck1lc3NhZ2V9LAogICAgKTsKCiAgICAjIHJldHVybiBzdHJ1Y3R1cmUKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkUGFyYW17RXJyb3JDb2RlfTogJFBhcmFte0Vycm9yTWVzc2FnZX0iLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAkUGFyYW17RXJyb3JDb2RlfSwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUGFyYW17RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfTsKfQoKc3ViIF9UcmFuc2l0aW9uRHluYW1pY0ZpZWxkRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAoKSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtDb25maWdJdGVtfSApOwoKICAgIG15ICVDb25maWdJdGVtRGF0YSA9ICgKICAgICAgICAkUGFyYW17Q29uZmlnSXRlbX0tPiUqLAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIEtFWToKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVDb25maWdJdGVtRGF0YSApIHsKCiAgICAgICAgbmV4dCBLRVkgdW5sZXNzICRDb25maWdJdGVtRGF0YXskS2V5fTsKCiAgICAgICAgaWYgKCAkS2V5ID1+IC9eRHluYW1pY0ZpZWxkXyguKikkLyApIHsKICAgICAgICAgICAgbXkgJEZpZWxkTmFtZSAgID0gJDE7CiAgICAgICAgICAgIG15ICRGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRSZWFkYWJsZVZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlJlYWRhYmxlVmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXskS2V5fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFJlYWRhYmxlVmFsdWUpICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1EYXRheyRLZXl9ID0gJFJlYWRhYmxlVmFsdWUtPntWYWx1ZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlQ29uZmlnSXRlbURhdGE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Invoker/ConfigItem/ConfigItemCreate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29tbW9uICgpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlIC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWdJdGVtQ3JlYXRlIEludm9rZXIgYmFja2VuZAoKPWhlYWQxIERFU0NSSVBUSU9OCgpDb250YWlucyBmdW5jdGlvbnMgZm9yIENvbmZpZ0l0ZW1DcmVhdGUuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXItPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IFdlYnNlcnZpY2VJRCBJbnZva2VyICkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e0NvbmZpZ0l0ZW1Db21tb25PYmplY3R9ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb21tb24tPm5ldyggJXskU2VsZn0gKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBQcmVwYXJlUmVxdWVzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+e0NvbmZpZ0l0ZW1Db21tb25PYmplY3R9LT5QcmVwYXJlUmVxdWVzdCglUGFyYW0pOwp9CgpzdWIgSGFuZGxlUmVzcG9uc2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJFNlbGYtPntDb25maWdJdGVtQ29tbW9uT2JqZWN0fS0+SGFuZGxlUmVzcG9uc2UoJVBhcmFtKTsKfQoKc3ViIEhhbmRsZUVycm9yIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT57Q29uZmlnSXRlbUNvbW1vbk9iamVjdH0tPkhhbmRsZVJlc3BvbnNlKAogICAgICAgICVQYXJhbSwKICAgICAgICBSZXNwb25zZVN1Y2Nlc3MgPT4gMCwKICAgICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Invoker/ConfigItem/ConfigItemFetch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUZldGNoOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhwYWlycyk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1GZXRjaCAtIEdlbmVyaWNJbnRlcmZhY2UgZm9yIElUU00gQ29uZmlnSXRlbXMKCj1oZWFkMSBTWU5PUFNJUwoKR2VuZXJpY0ludGVyZmFjZSBmb3IgSVRTTSBDb25maWdJdGVtcwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1vdmVyIDQKCj1jdXQKCj1pdGVtIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXItPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBwYXJhbXMKICAgIGZvciBteSAkTmVlZGVkICgKICAgICAgICBxdyhEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgSW52b2tlcikKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT57JE5lZWRlZH0gPSAkUGFyYW17JE5lZWRlZH07CiAgICB9CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBQcmVwYXJlUmVxdWVzdCgpCgpwcmVwYXJlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBjb25maWd1cmVkIHJlbW90ZSB3ZWIgc2VydmljZS4KVGhpcyB3aWxsIGp1c3QgcmV0dXJuIHRoZSBkYXRhIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uCgogICAgbXkgJFJlc3VsdCA9ICRJbnZva2VyT2JqZWN0LT5QcmVwYXJlUmVxdWVzdCgKICAgICAgICBEYXRhID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkIGFmdGVyIEludm9rZXIKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUHJlcGFyZVJlcXVlc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBEYXRhICAgID0+IElzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0gKSA/ICRQYXJhbXtEYXRhfSA6IHt9LAogICAgfTsKfQoKPWl0ZW0gSGFuZGxlUmVzcG9uc2UoKQoKaGFuZGxlIHJlc3BvbnNlIGRhdGEgb2YgdGhlIGNvbmZpZ3VyZWQgcmVtb3RlIHdlYiBzZXJ2aWNlLgpUaGlzIHdpbGwganVzdCByZXR1cm4gdGhlIGRhdGEgdGhhdCB3YXMgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi4KCiAgICBteSAkUmVzdWx0ID0gJEludm9rZXJPYmplY3QtPkhhbmRsZVJlc3BvbnNlKAogICAgICAgIFJlc3BvbnNlU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAjIHN1Y2Nlc3Mgc3RhdHVzIG9mIHRoZSByZW1vdGUgd2ViIHNlcnZpY2UKICAgICAgICBSZXNwb25zZUVycm9yTWVzc2FnZSA9PiAnJywgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIHdlYiBzZXJ2aWNlIGVycm9yCiAgICAgICAgRGF0YSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkCiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICMgMCBvciAxCiAgICAgICAgRXJyb3JNZXNzYWdlICAgID0+ICcnLCAgICAgICAgICAgICAgICAgICMgaW4gY2FzZSBvZiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAjIGRhdGEgcGF5bG9hZCBhZnRlciBJbnZva2VyCiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIEhhbmRsZVJlc3BvbnNlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgaW4gdGhlIHJlc3BvbnNlLCBmb3J3YXJkIGl0CiAgICBpZiAoICEkUGFyYW17UmVzcG9uc2VTdWNjZXNzfSApIHsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5FcnJvcigKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRQYXJhbXtSZXNwb25zZUVycm9yTWVzc2FnZX0gfHwgJ1Vua25vd24gRXJyb3InLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCByZWYgJFBhcmFte0RhdGF9IG5lICdIQVNIJyAmJiByZWYgJFBhcmFte0RhdGF9IG5lICdBUlJBWScgKSB7CgogICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiSW52YWxpZCBzdHJ1Y3R1cmUgZm9yIHBhcmFtZXRlciAnRGF0YScuIiwKICAgICAgICApOwogICAgfQoKICAgICMgTm90aGluZyB0byBkby4KICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0gKSAmJiAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlN1Y2Nlc3MoCiAgICAgICAgICAgIERhdGEgPT4gJFBhcmFte0RhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyByZW1vdmUgdG9wbGV2ZWwgQ29uZmlnSXRlbXMgaWYgbm90IGdpdmVuIGFzIGRpcmVjdCBhcnJheQogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9ICkgJiYgJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1zfSApIHsKICAgICAgICAkUGFyYW17RGF0YX0gPSAkUGFyYW17RGF0YX17Q29uZmlnSXRlbXN9OwogICAgfQoKICAgICMgdHJhbnNmb3JtIHRvIGFycmF5IHJlZmVyZW5jZQogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9ICkgKSB7CiAgICAgICAgJFBhcmFte0RhdGF9ID0gWyAkUGFyYW17RGF0YX0gXTsKICAgIH0KCiAgICAjIGdldCB3ZWJzZXJ2aWNlIGNvbmZpZ3VyYXRpb24KICAgIG15ICRXZWJzZXJ2aWNlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKS0+V2Vic2VydmljZUdldCgKICAgICAgICBJRCA9PiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0sCiAgICApOwoKICAgICMgZ2V0IGludm9rZXIgY29uZmlnCiAgICBteSAkSW52b2tlckNvbmZpZyA9ICRXZWJzZXJ2aWNlLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntJbnZva2VyfS0+eyAkU2VsZi0+e0ludm9rZXJ9IH07CgogICAgIyBnZXQgY29uZmlnIGl0ZW0gb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICVDSUNsYXNzTWFwcGluZyA9ICgKICAgICAgICBJbmNpZGVudFN0YXRlICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIERlcGxveW1lbnRTdGF0ZSA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBDbGFzcyAgICAgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgbXkgJUdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cDsKICAgIG15ICVOYW1lTW9kdWxlT2JqZWN0czsKICAgIENJOgogICAgZm9yIG15ICRSZW1vdGVDSURhdGEgKCBAeyAkUGFyYW17RGF0YX0gfSApIHsKCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFJlbW90ZUNJRGF0YSkgKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgcmVtb3RlIENJIHN0cnVjdHVyZSBmb3VuZC4gU2tpcHBpbmcgaXRlbS4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBDSTsKICAgICAgICB9CgogICAgICAgIG15IEBSZXF1aXJlZEF0dHJpYnV0ZXMgPSBxdyhDbGFzcyBEZXBsb3ltZW50U3RhdGUgSW5jaWRlbnRTdGF0ZSk7CiAgICAgICAgbXkgJVJlcXVpcmVkQXR0cmlidXRlczsKICAgICAgICBmb3IgbXkgJE5lZWRlZCAoIHNvcnQgQFJlcXVpcmVkQXR0cmlidXRlcyApIHsKCiAgICAgICAgICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRSZW1vdGVDSURhdGEtPnskTmVlZGVkfSApICkgewoKICAgICAgICAgICAgICAgIG15ICROb3RpY2VJbmZvID0gJFJlbW90ZUNJRGF0YS0+e051bWJlcn0gPyAiTnVtYmVyOiAkUmVtb3RlQ0lEYXRhLT57TnVtYmVyfTsiIDogJyc7CiAgICAgICAgICAgICAgICAkTm90aWNlSW5mbyAuPSAkUmVtb3RlQ0lEYXRhLT57TmFtZX0gPyAiTmFtZTogJFJlbW90ZUNJRGF0YS0+e05hbWV9OyIgOiAnJzsKCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTWlzc2luZyAnJE5lZWRlZCcgcGFyYW1ldGVyIGZvciBjcmVhdGluZy91cGRhdGluZyBhIENJLiBTa2lwcGluZyBpdGVtLiAkTm90aWNlSW5mbyIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRSZXF1aXJlZEF0dHJpYnV0ZXN7JE5lZWRlZH0gPSAkUmVtb3RlQ0lEYXRhLT57JE5lZWRlZH07CiAgICAgICAgfQoKICAgICAgICAjIGdldCBJRHMgZm9yIENsYXNzLCBEZXBsLSBhbmQgSW5jaVN0YXRlCiAgICAgICAgZm9yIG15ICRDdXJyZW50Q0kgKCBzb3J0IGtleXMgJUNJQ2xhc3NNYXBwaW5nICkgewoKICAgICAgICAgICAgIyBjcmVhdGUvZ2V0IGxvb2t1cCBmb3IgZ2VuZXJhbCBjYXRhbG9nIGl0ZW1zCiAgICAgICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ0l0ZW07CiAgICAgICAgICAgIGlmICggJEdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cHsgJENJQ2xhc3NNYXBwaW5neyRDdXJyZW50Q0l9IH0tPnsgJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfSB9ICkgewogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ0l0ZW1Mb29rdXB7ICRDSUNsYXNzTWFwcGluZ3skQ3VycmVudENJfSB9LT57ICRSZXF1aXJlZEF0dHJpYnV0ZXN7JEN1cnJlbnRDSX0gfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJENJQ2xhc3NNYXBwaW5neyRDdXJyZW50Q0l9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7JEN1cnJlbnRDSX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICFJc0hhc2hSZWZXaXRoRGF0YSgkR2VuZXJhbENhdGFsb2dJdGVtKQogICAgICAgICAgICAgICAgICAgIHx8ICFJc1N0cmluZ1dpdGhEYXRhKCAkR2VuZXJhbENhdGFsb2dJdGVtLT57SXRlbUlEfSApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciB3aGlsZSBsb29raW5nIHVwICRDdXJyZW50Q0kgJyRSZXF1aXJlZEF0dHJpYnV0ZXN7JEN1cnJlbnRDSX0nLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFkZCB0byBsb29rdXAKICAgICAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ0l0ZW1Mb29rdXB7ICRDSUNsYXNzTWFwcGluZ3skQ3VycmVudENJfSB9LT57ICRSZXF1aXJlZEF0dHJpYnV0ZXN7JEN1cnJlbnRDSX0gfSA9ICRHZW5lcmFsQ2F0YWxvZ0l0ZW07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFJlcXVpcmVkQXR0cmlidXRlc3sgJEN1cnJlbnRDSSAuICdJRCcgfSA9ICRHZW5lcmFsQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9OwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgbGF0ZXN0IGRlZmluaXRpb24gZm9yIHRoZSBjbGFzcwogICAgICAgIG15ICRDbGFzc0lEID0gJFJlbW90ZUNJRGF0YS0+e0NsYXNzSUR9OwogICAgICAgIGlmICggISRDbGFzc0lEICkgewogICAgICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICVSZXZlcnNlQ2xhc3NMaXN0ID0gcmV2ZXJzZSAkQ2xhc3NMaXN0LT4lKjsKICAgICAgICAgICAgJENsYXNzSUQgPSAkUmV2ZXJzZUNsYXNzTGlzdHsgJFJlbW90ZUNJRGF0YS0+e0NsYXNzfSB9OwogICAgICAgIH0KICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgICMgdmFsaWRhdGUgZHluYW1pYyBmaWVsZHMKICAgICAgICBEQVRBOgogICAgICAgIGZvciBteSAkRGF0YSAoIHBhaXJzICRSZW1vdGVDSURhdGEtPiUqICkgewogICAgICAgICAgICBteSAoICRLZXksICRWYWx1ZSApID0gJERhdGEtPkAqOwoKICAgICAgICAgICAgbmV4dCBEQVRBIHVubGVzcyAoICRLZXkgPX4gL15EeW5hbWljRmllbGRfLyApOwoKICAgICAgICAgICAgaWYgKCAkS2V5ID1+IC9eRHluYW1pY0ZpZWxkXyg/PFBsYWluRmllbGROYW1lPltBLVphLXowLTktXSspLyApIHsKICAgICAgICAgICAgICAgIG15ICRQbGFpbkZpZWxkTmFtZSA9ICQre1BsYWluRmllbGROYW1lfTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIGlzIGluIGNsYXNzIGRlZmluaXRpb24KICAgICAgICAgICAgICAgIGlmICggISREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskUGxhaW5GaWVsZE5hbWV9ICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiRHluYW1pY0ZpZWxkLT5OYW1lIHBhcmFtZXRlciBpcyBpbnZhbGlkLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIGNvbmZpZwogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskUGxhaW5GaWVsZE5hbWV9OwoKICAgICAgICAgICAgICAgICMgdmFsaWRhdGUgdmFsdWUKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAjIHBvc3NpYmxlIHN0cnVjdHVyZXMgYXJlIHN0cmluZyBhbmQgYXJyYXksIG5vIGRhdGEgaW5zaWRlIGlzIG5lZWRlZAogICAgICAgICAgICAgICAgICAgIGlmICggIUlzU3RyaW5nKCRWYWx1ZSkgJiYgcmVmICRWYWx1ZSBuZSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkVmFsaWRhdGVWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RmllbGRWYWx1ZVZhbGlkYXRlKAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggISRWYWxpZGF0ZVZhbHVlICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJEeW5hbWljRmllbGQtPlZhbHVlIHBhcmFtZXRlciBpcyBpbnZhbGlkLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkSWRlbnRpZmllciA9ICRJbnZva2VyQ29uZmlnLT57ICdJZGVudGlmaWVyJyAuICRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3NJRH0gfTsKICAgICAgICBpZiAoICEkSWRlbnRpZmllciApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOb3QgaW1wb3J0aW5nIGl0ZW1zIGluIGNsYXNzICRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3N9IC0gc2tpcHBpbmcuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHdoZXRoZXIgdGhpcyBpdGVtIGV4aXN0cyAodXBkYXRlKSBvciBpcyBuZXcgKGNyZWF0ZSkKICAgICAgICBteSAkQ29uZmlnSXRlbUlEOwogICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyOwoKICAgICAgICAjIHByZXBhcmUgc2VhcmNoCiAgICAgICAgbXkgJVNlYXJjaFBhcmFtID0gKAogICAgICAgICAgICBSZXN1bHQgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgICAgICBRdWVyeUNvbmRpdGlvbiA9PiAwLAogICAgICAgICk7CiAgICAgICAgQVRUUklCVVRFOgogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggJElkZW50aWZpZXItPkAqICkgewogICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGUgPX4gL15EeW4vICkgewogICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFteyRBdHRyaWJ1dGV9ID0gewogICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkUmVtb3RlQ0lEYXRhLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnQ2xhc3NlcycgKSB7CiAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW17Q2xhc3Nlc30gPSBbICRSZW1vdGVDSURhdGEtPntDbGFzc30gXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ05hbWUnICkgewogICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFte05hbWV9ID0gJFJlbW90ZUNJRGF0YS0+e05hbWV9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSBlcSAnRGVwbFN0YXRlcycgKSB7CiAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW17RGVwbFN0YXRlc30gPSBbICRSZW1vdGVDSURhdGEtPntEZXBsb3ltZW50U3RhdGV9IF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdOdW1iZXInICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkUmVtb3RlQ0lEYXRhLT57TnVtYmVyfTsKCiAgICAgICAgICAgICAgICBsYXN0IEFUVFJJQlVURTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0NvbmZpZ0l0ZW1JRCcgKSB7CiAgICAgICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUmVtb3RlQ0lEYXRhLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm90IGltcG9ydGluZyBpdGVtcyBpbiBjbGFzcyAkUmVxdWlyZWRBdHRyaWJ1dGVze0NsYXNzfSAtIHNraXBwaW5nLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBDSTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlEID0gJFJlbW90ZUNJRGF0YS0+e0NvbmZpZ0l0ZW1JRH07CgogICAgICAgICAgICAgICAgbGFzdCBBVFRSSUJVVEU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IHVzZSAkQXR0cmlidXRlIGFzIElkZW50aWZpZXIgLSBza2lwcGluZy4iLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IENJOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGlmIG5laXRoZXIgTnVtYmVyIG5vciBJRCBhcmUgcHJvdmlkZWQgZGlyZWN0bHksIHBlcmZvcm0gYSB0aGUgc2VhcmNoCiAgICAgICAgaWYgKCRDb25maWdJdGVtTnVtYmVyKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gJFJlbW90ZUNJRGF0YS0+e051bWJlcn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggISRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgICAgIG15IEBDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goJVNlYXJjaFBhcmFtKTsKCiAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbUlEc1swXTsKCiAgICAgICAgICAgIGlmICggc2NhbGFyIEBDb25maWdJdGVtSURzID4gMSApIHsKICAgICAgICAgICAgICAgIG15ICRTZWFyY2hQYXJhbWV0ZXJzID0gam9pbiggJzsnLCBtYXAgeyIkXyA9PiAkU2VhcmNoUGFyYW17JF99In0ga2V5cyAlU2VhcmNoUGFyYW0gKTsKCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IHVzZSBhbWJpZ3VvcyBzZWFyY2ggcmVzdWx0IC0gc2tpcHBpbmcuIFBhcmFtZXRlcnM6ICRTZWFyY2hQYXJhbWV0ZXJzOyIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRDbGFzc1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAkUmVtb3RlQ0lEYXRhLT57Q2xhc3N9LAogICAgICAgICk7CiAgICAgICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlcy0+e05hbWVNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXMtPntOYW1lTW9kdWxlfVswXSA6ICcnOwogICAgICAgIGlmICgkTmFtZU1vZHVsZSkgewogICAgICAgICAgICBpZiAoICEkTmFtZU1vZHVsZU9iamVjdHN7ICRSZW1vdGVDSURhdGEtPntDbGFzc30gfSApIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIG5hbWUgbW9kdWxlIGV4aXN0cwogICAgICAgICAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JyAuICROYW1lTW9kdWxlICkgKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIG5hbWUgbW9kdWxlIGZvciBjbGFzcyAkUmVtb3RlQ0lEYXRhLT57Q2xhc3N9ISIsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBDSTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBhIGJhY2tlbmQgb2JqZWN0CiAgICAgICAgICAgICAgICAkTmFtZU1vZHVsZU9iamVjdHN7ICRSZW1vdGVDSURhdGEtPntDbGFzc30gfSA9ICRLZXJuZWw6Ok9NLT5HZXQoICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok5hbWU6OicgLiAkTmFtZU1vZHVsZSApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewogICAgICAgICAgICAgICAgZGVsZXRlICRSZW1vdGVDSURhdGEtPntOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRSZW1vdGVDSURhdGEtPntOYW1lfSA9ICROYW1lTW9kdWxlT2JqZWN0c3sgJFJlbW90ZUNJRGF0YS0+e0NsYXNzfSB9LT5Db25maWdJdGVtTmFtZUNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAkUmVtb3RlQ0lEYXRhLT4lKiwKICAgICAgICAgICAgICAgICAgICAlUmVxdWlyZWRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7RGVwbG95bWVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7SW5jaWRlbnRTdGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCAmJiAhJFJlbW90ZUNJRGF0YS0+e05hbWV9ICkgewogICAgICAgICAgICBteSAkTm90aWNlSW5mbyA9ICRSZW1vdGVDSURhdGEtPntOdW1iZXJ9ID8gIk51bWJlcjogJFJlbW90ZUNJRGF0YS0+e051bWJlcn07IiA6ICcnOwoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJNaXNzaW5nICdOYW1lJyBwYXJhbWV0ZXIgZm9yIGNyZWF0aW5nIGEgQ0kuIFNraXBwaW5nIGl0ZW0uICROb3RpY2VJbmZvIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgQ0k7CiAgICAgICAgfQoKICAgICAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgJFJlbW90ZUNJRGF0YS0+JSosCiAgICAgICAgICAgICAgICAlUmVxdWlyZWRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7RGVwbG95bWVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3tJbmNpZGVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJFcnJvciB3aGlsZSB1cGRhdGluZyBDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICAgICAgJFJlbW90ZUNJRGF0YS0+JSosCiAgICAgICAgICAgICAgICAlUmVxdWlyZWRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3tEZXBsb3ltZW50U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICA9PiAkUmVxdWlyZWRBdHRyaWJ1dGVze0luY2lkZW50U3RhdGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAiRXJyb3Igd2hpbGUgY3JlYXRpbmcgQ0kgd2l0aCBOYW1lICckUmVxdWlyZWRBdHRyaWJ1dGVze05hbWV9JywgQ2xhc3MgJyRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3N9JyAoQ2xhc3NJRDogJyRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3NJRH0nKS4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPlN1Y2Nlc3MoCiAgICAgICAgRGF0YSA9PiAkUGFyYW17RGF0YX0sCiAgICApOwp9Cgo9aXRlbSBFcnJvcigpCgpXcml0ZSBlcnJvciBtZXNzYWdlIHRvIE9UT0JPIGxvZyBhbmQgcmV0dXJuIGV4aXQgc3RydWN0dXJlLgoKICAgIG15ICRFeGl0U3RydWN0dXJlID0gJENvbW1vbk9iamVjdC0+RXJyb3IoCiAgICAgICAgRXJyb3JNZXNzYWdlICAgID0+ICdhbiBlcnJvciBtZXNzYWdlJywKICAgICk7CgpyZXR1cm5zCgogICAgJEV4aXRTdHJ1Y3R1cmUgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdhbiBlcnJvciBtZXNzYWdlJywKICAgIH07Cgo9Y3V0CgpzdWIgRXJyb3IgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciBpbiAnIiAuICRTZWxmLT57SW52b2tlcn0KICAgICAgICAgICAgLiAiJyBJbnZva2VyIChXZWJzZXJ2aWNlSUQ6ICIgLiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0gLiAiKToiCiAgICAgICAgICAgIC4gJFBhcmFte0Vycm9yTWVzc2FnZX0sCiAgICApOwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRQYXJhbXtFcnJvck1lc3NhZ2V9LAogICAgfTsKfQoKPWl0ZW0gU3VjY2VzcygpCgpXcml0ZSBMYXN0UnVuVGltZXN0YW1wIGNhY2hlIGVudHJ5IGFuZCByZXR1cm4gZXhpdCBzdHJ1Y3R1cmUuCgogICAgbXkgJEV4aXRTdHJ1Y3R1cmUgPSAkQ29tbW9uT2JqZWN0LT5TdWNjZXNzKAogICAgICAgIERhdGEgPT4gJFJldHVybkRhdGEsCiAgICApOwoKcmV0dXJucwoKICAgICRFeGl0U3RydWN0dXJlID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBEYXRhICAgID0+ICRSZXR1cm5EYXRhLAogICAgfTsKCj1jdXQKCnN1YiBTdWNjZXNzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExhc3RSdW5UaW1lc3RhbXAgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKS0+VG9TdHJpbmcoKTsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+U2V0KAogICAgICAgIEtleSAgID0+ICdHZW5lcmljSW50ZXJmYWNlOjpJVFNNOjpDb25maWdJdGVtOjonIC4gJFNlbGYtPntJbnZva2VyfSAuICc6Okxhc3RSdW5UaW1lc3RhbXAnLAogICAgICAgIFZhbHVlID0+ICRMYXN0UnVuVGltZXN0YW1wLAogICAgICAgIFR5cGUgID0+ICdJVFNNQ2hhbmdlSXRlbVdlYnNlcnZpY2UnIC4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgICAgIFRUTCAgID0+IDYwICogNjAgKiAyNCAqIDcsCiAgICApOwoKICAgICMgbG9nIGNvbXBsZXRpb24KICAgICRTZWxmLT57RGVidWdnZXJPYmplY3R9LT5EZWJ1ZygKICAgICAgICBTdW1tYXJ5ID0+ICdTdWNjZXNzZnVsbHkgY29tcGxldGVkLicsCiAgICApOwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4gJFBhcmFte0RhdGF9LAogICAgfTsKfQoKMTsKCj1iYWNrCgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RPQk8gcHJvamVjdCAoTDxodHRwczovL290b2JvLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Location="Kernel/GenericInterface/Invoker/ConfigItem/ConfigItemUpdate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbTo6Q29tbW9uICgpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgICAgICAgICAgICAgICAgICAgICAgICAgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb25maWdJdGVtVXBkYXRlIC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWdJdGVtVXBkYXRlIEludm9rZXIgYmFja2VuZAoKPWhlYWQxIERFU0NSSVBUSU9OCgpDb250YWlucyBmdW5jdGlvbnMgZm9yIENvbmZpZ0l0ZW1VcGRhdGUuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXItPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IFdlYnNlcnZpY2VJRCBJbnZva2VyICkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e0NvbmZpZ0l0ZW1Db21tb25PYmplY3R9ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpDb25maWdJdGVtOjpDb21tb24tPm5ldyggJXskU2VsZn0gKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBQcmVwYXJlUmVxdWVzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+e0NvbmZpZ0l0ZW1Db21tb25PYmplY3R9LT5QcmVwYXJlUmVxdWVzdCglUGFyYW0pOwp9CgpzdWIgSGFuZGxlUmVzcG9uc2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJFNlbGYtPntDb25maWdJdGVtQ29tbW9uT2JqZWN0fS0+SGFuZGxlUmVzcG9uc2UoJVBhcmFtKTsKfQoKc3ViIEhhbmRsZUVycm9yIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT57Q29uZmlnSXRlbUNvbW1vbk9iamVjdH0tPkhhbmRsZVJlc3BvbnNlKAogICAgICAgICVQYXJhbSwKICAgICAgICBSZXNwb25zZVN1Y2Nlc3MgPT4gMCwKICAgICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Invoker/Elasticsearch/ConfigItemManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6RWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbU1hbmFnZW1lbnQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBNSU1FOjpCYXNlNjQgcXcoZW5jb2RlX2Jhc2U2NCk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkVsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1NYW5hZ2VtZW50Cgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXItPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7fSwgJFR5cGU7CgogICAgIyBjaGVjayBuZWVkZWQgcGFyYW1zIGFuZCBzdG9yZSB0aGVtIGluICRTZWxmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcvRGVidWdnZXJPYmplY3QgV2Vic2VydmljZUlELykgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBQcmVwYXJlUmVxdWVzdCgpCgpwcmVwYXJlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBjb25maWd1cmVkIHJlbW90ZSB3ZWIgc2VydmljZS4KVGhpcyB3aWxsIGp1c3QgcmV0dXJuIHRoZSBkYXRhIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24uCgogICAgbXkgJFJlc3VsdCA9ICRJbnZva2VyT2JqZWN0LT5QcmVwYXJlUmVxdWVzdCgKICAgICAgICBEYXRhID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkIGFmdGVyIEludm9rZXIKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUHJlcGFyZVJlcXVlc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZAogICAgZm9yIG15ICROZWVkZWQgKHF3L0V2ZW50IENvbmZpZ0l0ZW1JRC8pIHsKICAgICAgICBpZiAoICEkUGFyYW17RGF0YX17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGRvIG5vdGhpbmcgaWYgQ29uZmlnSXRlbXMgYXJlIG5vdCBjb25maWd1cmVkCiAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0VsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1TdG9yZUZpZWxkcycpICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFN0b3BDb21tdW5pY2F0aW9uID0+IDEsCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGhhbmRsZSBhbGwgZXZlbnRzIHdoaWNoIGFyZSBuZWl0aGVyIHVwZGF0ZSBub3IgY3JlYXRpb24gZmlyc3QKCiAgICAjIGRlbGV0ZSB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICggJFBhcmFte0RhdGF9e0V2ZW50fSBlcSAnQ29uZmlnSXRlbURlbGV0ZScgKSB7CiAgICAgICAgbXkgJUNvbnRlbnQgPSAoCiAgICAgICAgICAgIHF1ZXJ5ID0+IHsKICAgICAgICAgICAgICAgIHRlcm0gPT4gewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBkb2NhcGkgPT4gJ19kZWxldGVfYnlfcXVlcnknLAogICAgICAgICAgICAgICAgaWQgICAgID0+ICcnLAogICAgICAgICAgICAgICAgJUNvbnRlbnQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIHB1dCBhIHNpbmdsZSB0ZW1wb3JhcnkgYXR0YWNobWVudCBpbnRvIGEgcXVldWUKICAgICMgbW9yZSB0aGFuIG9uZSBhdHRhY2hlbWVudCBjb3VsZCBiZSBwdXQgcGVyIGNhbGwsIGJ1dCB0aGlzIHdvdWxkIG1ha2UgZXJyb3IgaGFuZGxpbmcgaGFyZGVyCiAgICBpZiAoICRQYXJhbXtEYXRhfXtFdmVudH0gZXEgJ1B1dFRNUEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIGdldCBmaWxlIGZvcm1hdCB0byBiZSBpbmdlc3RlZAogICAgICAgIG15ICRGaWxlRm9ybWF0ID0gJENvbmZpZ09iamVjdC0+R2V0KCdFbGFzdGljc2VhcmNoOjpJbmdlc3RBdHRhY2htZW50Rm9ybWF0Jyk7CiAgICAgICAgbXkgJUZvcm1hdEhhc2ggPSBtYXAgeyAkXyA9PiAxIH0gQHskRmlsZUZvcm1hdH07CgogICAgICAgIG15ICRNYXhGaWxlc2l6ZSA9ICRDb25maWdPYmplY3QtPkdldCgnRWxhc3RpY3NlYXJjaDo6SW5nZXN0TWF4RmlsZXNpemUnKTsKICAgICAgICBteSAkRmlsZW5hbWUgICAgPSAkUGFyYW17RGF0YX17RmlsZW5hbWV9OwogICAgICAgIG15ICRDb250ZW50VHlwZSA9ICRQYXJhbXtEYXRhfXtDb250ZW50VHlwZX07CiAgICAgICAgbXkgJEZpbGVzaXplICAgID0gJFBhcmFte0RhdGF9e0ZpbGVzaXplfTsKCiAgICAgICAgIyBpbmdlc3QgYXR0YWNobWVudCBvbmx5IGlmIGZpbGVzaXplIGxlc3MgdGhhbiBkZWZpbmVkIGluIHN5c2NvbmZpZwogICAgICAgIGlmICggJEZpbGVzaXplID4gJE1heEZpbGVzaXplICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFN0b3BDb21tdW5pY2F0aW9uID0+IDEsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBteSAoJFR5cGVGb3JtYXQpID0gJENvbnRlbnRUeXBlID1+IG0vXi4qP1wvKFtcZFx3XSspLzsKICAgICAgICBteSAoJE5hbWVGb3JtYXQpID0gJEZpbGVuYW1lICAgID1+IG0vXC4oW1xkXHddKykkLzsKCiAgICAgICAgbXkgJURhdGE7CiAgICAgICAgaWYgKCAkRm9ybWF0SGFzaHskVHlwZUZvcm1hdH0gfHwgJEZvcm1hdEhhc2h7JE5hbWVGb3JtYXR9ICkgewogICAgICAgICAgICBteSAkRW5jb2RlZCA9IGVuY29kZV9iYXNlNjQoICRQYXJhbXtEYXRhfXtDb250ZW50fSApOwogICAgICAgICAgICAkRW5jb2RlZCA9fiBzL1xuLy9nOwogICAgICAgICAgICAkRGF0YXtmaWxlbmFtZX0gPSAkRmlsZW5hbWU7CiAgICAgICAgICAgICREYXRhe2RhdGF9ICAgICA9ICRFbmNvZGVkOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIyBub3QgYSB2YWxpZCBmaWxlIHR5cGUKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTdG9wQ29tbXVuaWNhdGlvbiA9PiAxLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIGRvY2FwaSAgICAgID0+ICdfZG9jJywKICAgICAgICAgICAgICAgIHBhdGggICAgICAgID0+ICdBdHRhY2htZW50cycsICAgICMgYWN0dWFsbHkgdGhlIHBpcGVsaW5lCiAgICAgICAgICAgICAgICBpZCAgICAgICAgICA9PiAnJywKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnRzID0+IFsgXCVEYXRhIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGhhbmRsZSB0aGUgcmVndWxhciB1cGRhdGluZyBhbmQgY3JlYXRpb24KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGF0dGFjaG1lbnQgbWFuYWdlbWVudAogICAgaWYgKCAkUGFyYW17RGF0YX17RXZlbnR9IGVxICdBdHRhY2htZW50QWRkUG9zdCcgKSB7CiAgICAgICAgbXkgJFJlcXVlc3Rlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CgogICAgICAgICMgY3JlYXRlIGEgdGVtcG9yYXJ5IGluZGV4IHRvICJpbmdlc3QiIHRoZSBhdHRhY2htZW50CiAgICAgICAgbXkgJFJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICAgICAgV2Vic2VydmljZUlEID0+ICRTZWxmLT57V2Vic2VydmljZUlEfSwKICAgICAgICAgICAgSW52b2tlciAgICAgID0+ICdDb25maWdJdGVtSW5nZXN0QXR0YWNobWVudCcsCiAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAwLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJXsgJFBhcmFte0RhdGF9IH0sCiAgICAgICAgICAgICAgICBFdmVudCA9PiAnUHV0VE1QQXR0YWNobWVudCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4sIGlmIGF0dGFjaG1lbnQgd2FzIG5vdCBhZGRlZAogICAgICAgIGlmICggISRSZXN1bHQgfHwgISRSZXN1bHQtPntEYXRhfXtfaWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFN0b3BDb21tdW5pY2F0aW9uID0+IDEsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIHNldCBwYXJhbWV0ZXJzCiAgICAgICAgbXkgJVJlcXVlc3QgPSAoCiAgICAgICAgICAgIGlkID0+ICRSZXN1bHQtPntEYXRhfXtfaWR9LAogICAgICAgICk7CiAgICAgICAgbXkgJUFQSSA9ICgKICAgICAgICAgICAgZG9jYXBpID0+ICdfZG9jJywKICAgICAgICApOwogICAgICAgIG15ICVJbmRleE5hbWUgPSAoCiAgICAgICAgICAgIGluZGV4ID0+ICd0bXBhdHRhY2htZW50cycsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXRyaWV2ZSB0aGUgcmVzdWx0IG9mIHRoZSBpbmdlc3QtcGx1Z2luCiAgICAgICAgJFJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICAgICAgV2Vic2VydmljZUlEID0+ICRTZWxmLT57V2Vic2VydmljZUlEfSwKICAgICAgICAgICAgSW52b2tlciAgICAgID0+ICdVdGlsc0luZ2VzdF9HRVQnLAogICAgICAgICAgICBBc3luY2hyb25vdXMgPT4gMCwKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgIEluZGV4TmFtZSA9PiBcJUluZGV4TmFtZSwKICAgICAgICAgICAgICAgIFJlcXVlc3QgICA9PiBcJVJlcXVlc3QsCiAgICAgICAgICAgICAgICBBUEkgICAgICAgPT4gXCVBUEksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBwcmVwYXJlIHByb2Nlc3NlZCBkYXRhIHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBhdHRhY2htZW50IGFycmF5IG9mIHRoZSBDSQogICAgICAgIG15IEBBdHRhY2htZW50QXJyYXk7CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50QXR0ciAoIEB7ICRSZXN1bHQtPntEYXRhfXtfc291cmNlfXtBdHRhY2htZW50c30gfSApIHsKICAgICAgICAgICAgbXkgJUF0dGFjaG1lbnQgPSAoCiAgICAgICAgICAgICAgICBGaWxlbmFtZSA9PiAkQXR0YWNobWVudEF0dHItPntmaWxlbmFtZX0sCiAgICAgICAgICAgICAgICBDb250ZW50ICA9PiAkQXR0YWNobWVudEF0dHItPnthdHRhY2htZW50fXtjb250ZW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQXR0YWNobWVudEFycmF5LCBcJUF0dGFjaG1lbnQ7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0aGUgZG9jIGluIHRtcGF0dGFjaG1lbnQKICAgICAgICAkUmVzdWx0ID0gJFJlcXVlc3Rlck9iamVjdC0+UnVuKAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgICAgICAgICBJbnZva2VyICAgICAgPT4gJ1V0aWxzSW5nZXN0X0RFTEVURScsCiAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAwLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgSW5kZXhOYW1lID0+IFwlSW5kZXhOYW1lLAogICAgICAgICAgICAgICAgUmVxdWVzdCAgID0+IFwlUmVxdWVzdCwKICAgICAgICAgICAgICAgIEFQSSAgICAgICA9PiBcJUFQSSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIHVwZGF0ZSB0aGUgQ0kgd2l0aCB0aGUgZXh0cmFjdGVkIGRhdGEKICAgICAgICBteSAlQ29udGVudCA9ICgKICAgICAgICAgICAgc2NyaXB0ID0+IHsKICAgICAgICAgICAgICAgIHNvdXJjZSA9PiAnY3R4Ll9zb3VyY2UuQXR0YWNobWVudHMuYWRkQWxsKHBhcmFtcy5uZXcpJywKICAgICAgICAgICAgICAgIHBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgbmV3ID0+IFxAQXR0YWNobWVudEFycmF5LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgZG9jYXBpID0+ICdfdXBkYXRlJywKICAgICAgICAgICAgICAgIGlkICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICVDb250ZW50LAogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtEYXRhfXtFdmVudH0gZXEgJ0F0dGFjaG1lbnREZWxldGVQb3N0JyApIHsKICAgICAgICBteSAkUmVxdWVzdGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInKTsKCiAgICAgICAgIyBzZXQgcGFyYW1ldGVycwogICAgICAgIG15ICVSZXF1ZXN0ID0gKAogICAgICAgICAgICBpZCA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICApOwogICAgICAgIG15ICVBUEkgPSAoCiAgICAgICAgICAgIGRvY2FwaSA9PiAnX2RvYycsCiAgICAgICAgKTsKICAgICAgICBteSAlSW5kZXhOYW1lID0gKAogICAgICAgICAgICBpbmRleCA9PiAnY29uZmlnaXRlbScsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXRyaWV2ZSB0aGUgY3VycmVudCBhdHRhY2htZW50cwogICAgICAgIG15ICRSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0sCiAgICAgICAgICAgIEludm9rZXIgICAgICA9PiAnVXRpbHNJbmdlc3RfR0VUJywKICAgICAgICAgICAgQXN5bmNocm9ub3VzID0+IDAsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBJbmRleE5hbWUgPT4gXCVJbmRleE5hbWUsCiAgICAgICAgICAgICAgICBSZXF1ZXN0ICAgPT4gXCVSZXF1ZXN0LAogICAgICAgICAgICAgICAgQVBJICAgICAgID0+IFwlQVBJLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgcHJlcGFyZSBwcm9jZXNzZWQgZGF0YSB0byBiZSBhcHBlbmRlZCB0byB0aGUgYXR0YWNobWVudCBhcnJheSBvZiB0aGUgQ0kKICAgICAgICBteSBAQXR0YWNobWVudEFycmF5ID0gKCk7CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50ICggQHsgJFJlc3VsdC0+e0RhdGF9e19zb3VyY2V9e0F0dGFjaG1lbnRzfSB9ICkgewoKICAgICAgICAgICAgIyBzb3J0IG91dCBkZWxldGVkIGF0dGFjaG1lbnQKICAgICAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfSBuZSAkUGFyYW17RGF0YX17RmlsZW5hbWV9ICkgewogICAgICAgICAgICAgICAgcHVzaCBAQXR0YWNobWVudEFycmF5LCBcJXskQXR0YWNobWVudH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVDb250ZW50ID0gKAogICAgICAgICAgICBBdHRhY2htZW50cyA9PiBcQEF0dGFjaG1lbnRBcnJheSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgPT4gewogICAgICAgICAgICAgICAgZG9jYXBpID0+ICdfdXBkYXRlJywKICAgICAgICAgICAgICAgIGlkICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIGRvYyAgICA9PiBcJUNvbnRlbnQsCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfQoKICAgICMgaWdub3JlIGV2ZW50cyBvdGhlciB0aGFuIENvbmZpZ0l0ZW1DcmVhdGUgb3IgQ29uZmlnSXRlbVVwZGF0ZQogICAgaWYgKCAkUGFyYW17RGF0YX17RXZlbnR9ICF+IC9Db25maWdJdGVtQ3JlYXRlfENvbmZpZ0l0ZW1VcGRhdGUvICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFN0b3BDb21tdW5pY2F0aW9uID0+IDEsCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGhhbmRsZSBleGNsdXNpb25zCiAgICBteSAkRXhjbHVkZWRDbGFzc2VzICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdFbGFzdGljc2VhcmNoOjpFeGNsdWRlZENJQ2xhc3NlcycpOwogICAgbXkgJEV4Y2x1ZGVkRGVwbFN0YXRlcyA9ICRDb25maWdPYmplY3QtPkdldCgnRWxhc3RpY3NlYXJjaDo6RXhjbHVkZWRDSURlcGxveW1lbnRTdGF0ZXMnKTsKICAgICRFeGNsdWRlZENsYXNzZXMgICAgPSAkRXhjbHVkZWRDbGFzc2VzICAgID8geyBtYXAgeyAkXyA9PiAxIH0gQHskRXhjbHVkZWRDbGFzc2VzfSB9ICAgIDogdW5kZWY7CiAgICAkRXhjbHVkZWREZXBsU3RhdGVzID0gJEV4Y2x1ZGVkRGVwbFN0YXRlcyA/IHsgbWFwIHsgJF8gPT4gMSB9IEB7JEV4Y2x1ZGVkRGVwbFN0YXRlc30gfSA6IHVuZGVmOwoKICAgICMgZGVmaW5lIHRoZSBkZWZhdWx0IEFQSQogICAgbXkgJEFQSSA9ICRQYXJhbXtEYXRhfXtFdmVudH0gZXEgJ0NvbmZpZ0l0ZW1DcmVhdGUnID8gJ19kb2MnIDogJ191cGRhdGUnOwoKICAgICMgZXhjbHVkZWQgY2xhc3NlcyBhbmQgZGVwbG95bWVudCBzdGF0ZXMKICAgIGlmICggZGVmaW5lZCAkRXhjbHVkZWRDbGFzc2VzIHx8IGRlZmluZWQgJEV4Y2x1ZGVkRGVwbFN0YXRlcyApIHsKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gaWYgY2xhc3MgaXMgZXhjbHVkZWQKICAgICAgICBpZiAoIGRlZmluZWQgJEV4Y2x1ZGVkQ2xhc3NlcyAmJiAkRXhjbHVkZWRDbGFzc2VzLT57ICRDb25maWdJdGVtLT57Q2xhc3N9IH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgU3RvcENvbW11bmljYXRpb24gPT4gMSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgaWYgdGhlIERlcGxveW1lbnRTdGF0ZSBpcyBjaGFuZ2VkLCBjaGVjayBpZiB0aGUgY29uZmlnIGl0ZW0gaGFzIHRvIGJlIGNyZWF0ZWQgb3IgZGVsZXRlZCBpbiBFUwogICAgICAgIGlmICggZGVmaW5lZCAkRXhjbHVkZWREZXBsU3RhdGVzICkgewoKICAgICAgICAgICAgIyBhIENJIHdpdGggbm8gb2xkIHN0YXRlIGFuZCBpbiBhIGN1cnJlbnQgZXhjbHVkZWQgc3RhdGUKICAgICAgICAgICAgIyBtZWFucyB0aGF0IHRoZSBDSSBoYXMganVzdCBiZWVuIGNyZWF0ZWQgaW4gdGhhdCBpbml0aWFsIGV4Y2x1ZGVkIHN0YXRlCiAgICAgICAgICAgICMgaW4gdGhhdCBjYXNlIGRvIG5vdGhpbmcgYW5kIGRvIG5vdCBldmVuIGJvdGhlciB0byBtYWtlIGFuIEVTIGNhbGwKICAgICAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9e09sZERlcGxTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRFeGNsdWRlZERlcGxTdGF0ZXMtPnsgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgU3RvcENvbW11bmljYXRpb24gPT4gMSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFuIG9sZCBzdGF0ZSBhbHJlYWR5IGV4aXN0cwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG15ICRTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbXkgJE9sZERlcGxTdGF0ZSA9ICRTdGF0ZUxpc3QtPnsgJFBhcmFte0RhdGF9e09sZERlcGxTdGF0ZX0gfTsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcgaWYgYm90aCB0aGUgb2xkIGFuZCB0aGUgbmV3IHN0YXRlIGFyZSBleGNsdWRlZAogICAgICAgICAgICAgICAgaWYgKCAkRXhjbHVkZWREZXBsU3RhdGVzLT57JE9sZERlcGxTdGF0ZX0gJiYgJEV4Y2x1ZGVkRGVwbFN0YXRlcy0+eyAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBTdG9wQ29tbXVuaWNhdGlvbiA9PiAxLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBpZiB0aGUgQ0kgd2FzIG1vdmVkIHRvIGFuIGV4Y2x1ZGVkIHN0YXRlLCBkZWxldGUgaXQKICAgICAgICAgICAgICAgIGVsc2lmICggISRFeGNsdWRlZERlcGxTdGF0ZXMtPnskT2xkRGVwbFN0YXRlfSAmJiAkRXhjbHVkZWREZXBsU3RhdGVzLT57ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICVDb250ZW50ID0gKAogICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2NhcGkgPT4gJ19kZWxldGVfYnlfcXVlcnknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQgICAgID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNvbnRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGlmIHRoZSBDSSB3YXMgbW92ZWQgb3V0IG9mIGFuIGV4Y2x1ZGVkIGRlcGxveW1lbnQgc3RhdGUsIGNyZWF0ZSBpdAogICAgICAgICAgICAgICAgIyBpbiB0aGF0IGNhc2Ugb3ZlcnJpZGUgdGhlIHByZXZpb3VzICRBUEkgdmFsdWUgdG8gJ19kb2MnCiAgICAgICAgICAgICAgICBlbHNpZiAoICRQYXJhbXtEYXRhfXtPbGREZXBsU3RhdGV9ICYmICRFeGNsdWRlZERlcGxTdGF0ZXMtPnskT2xkRGVwbFN0YXRlfSApIHsKICAgICAgICAgICAgICAgICAgICAkQVBJID0gJ19kb2MnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZWxzZSBpdCB3YXMgYSBub3JtYWwgdHJhbnNpdGlvbiBiZXR3ZWVuIG5vbiBleGNsdWRlZCBzdGF0ZXMsIHNvIG5vdGhpbmcgdG8gZG8gaW4gdGhpcyBzY29wZQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2F0aGVyIGFsbCBmaWVsZHMgd2hpY2ggaGF2ZSB0byBiZSBzdG9yZWQKICAgIG15ICRTdG9yZSAgICAgICAgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0VsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1TdG9yZUZpZWxkcycpOwogICAgbXkgJFNlYXJjaCAgICAgICAgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnRWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbVNlYXJjaEZpZWxkcycpOwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICVEYXRhVG9TdG9yZTsKICAgIGZvciBteSAkRmllbGQgKCBAeyAkU3RvcmUtPntCYXNpY30gfSwgQHsgJFNlYXJjaC0+e0Jhc2ljfSB9ICkgewogICAgICAgICREYXRhVG9TdG9yZXskRmllbGR9ID0gMTsKICAgIH0KCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKCBAeyAkU3RvcmUtPntEeW5hbWljRmllbGR9IH0sIEB7ICRTZWFyY2gtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZDsKCiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57T2JqZWN0VHlwZX0gZXEgJ0lUU01Db25maWdJdGVtJyApIHsKICAgICAgICAgICAgJERhdGFUb1N0b3JleyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZE5hbWUifSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgcHJlcGFyZSByZXF1ZXN0CiAgICBteSAlQ29udGVudDsKICAgIG15ICRHZXREeW5hbWljRmllbGRzID0gKCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWFyY2gtPntEeW5hbWljRmllbGR9ICkgfHwgSXNBcnJheVJlZldpdGhEYXRhKCAkU3RvcmUtPntEeW5hbWljRmllbGR9ICkgKSA/IDEgOiAwOwogICAgbXkgJFZlcnNpb24gICAgICAgICAgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtEYXRhfXtDb25maWdJdGVtSUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgIyBpdGVyYXRlIG92ZXIgZHluYW1pYyBmaWVsZHMgYW5kIHJlcGxhY2UgdmFsdWUgd2l0aCBEaXNwbGF5VmFsdWVSZW5kZXIgcmVzdWx0CiAgICBpZiAoJEdldER5bmFtaWNGaWVsZHMpIHsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICRERk5hbWUgKCBncmVwIHsgJERhdGFUb1N0b3JleyRffSAmJiAkXyA9fiAvXkR5bmFtaWNGaWVsZF8vIH0ga2V5cyAlRGF0YVRvU3RvcmUgKSB7CiAgICAgICAgICAgIG15ICRERk5hbWVTaG9ydCA9IHN1YnN0ciAkREZOYW1lLCBsZW5ndGgoJ0R5bmFtaWNGaWVsZF8nKTsKICAgICAgICAgICAgbXkgJERGQ29uZmlnICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICRERk5hbWVTaG9ydCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgIG15ICRERlZhbHVlU3RydWN0dXJlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJERGQ29uZmlnLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWZXJzaW9uLT57JERGTmFtZX0sCiAgICAgICAgICAgICAgICBIVE1MT3V0cHV0ICAgICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRWZXJzaW9uLT57JERGTmFtZX0gPSAkREZWYWx1ZVN0cnVjdHVyZS0+e1ZhbHVlfTsKICAgICAgICB9CiAgICB9CiAgICAlQ29udGVudCA9ICgKICAgICAgICAoIG1hcCB7ICRfID0+ICRWZXJzaW9uLT57JF99IH0ga2V5cyAlRGF0YVRvU3RvcmUgKSwKICAgICk7CiAgICAkQ29udGVudHtBdHRhY2htZW50c30gPSBbXTsKCiAgICBpZiAoICRBUEkgZXEgJ191cGRhdGUnICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBkb2NhcGkgPT4gJEFQSSwKICAgICAgICAgICAgICAgIGlkICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIGRvYyAgICA9PiBcJUNvbnRlbnQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBkb2NhcGkgPT4gJEFQSSwKICAgICAgICAgICAgICAgIGlkICAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICVDb250ZW50LAogICAgICAgICAgICB9LAogICAgICAgIH07CiAgICB9Cn0KCj1oZWFkMiBIYW5kbGVSZXNwb25zZSgpCgpoYW5kbGUgcmVzcG9uc2UgZGF0YSBvZiB0aGUgY29uZmlndXJlZCByZW1vdGUgd2ViIHNlcnZpY2UuClRoaXMgd2lsbCBqdXN0IHJldHVybiB0aGUgZGF0YSB0aGF0IHdhcyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgoKICAgIG15ICRSZXN1bHQgPSAkSW52b2tlck9iamVjdC0+SGFuZGxlUmVzcG9uc2UoCiAgICAgICAgUmVzcG9uc2VTdWNjZXNzICAgICAgPT4gMSwgICAgICAgICAgICAgICMgc3VjY2VzcyBzdGF0dXMgb2YgdGhlIHJlbW90ZSB3ZWIgc2VydmljZQogICAgICAgIFJlc3BvbnNlRXJyb3JNZXNzYWdlID0+ICcnLCAgICAgICAgICAgICAjIGluIGNhc2Ugb2Ygd2ViIHNlcnZpY2UgZXJyb3IKICAgICAgICBEYXRhID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkIGFmdGVyIEludm9rZXIKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgSGFuZGxlUmVzcG9uc2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIHRoZXJlIHdhcyBhbiBlcnJvciBpbiB0aGUgcmVzcG9uc2UsIGZvcndhcmQgaXQKICAgIGlmICggISRQYXJhbXtSZXNwb25zZVN1Y2Nlc3N9ICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFBhcmFte1Jlc3BvbnNlRXJyb3JNZXNzYWdlfSwKICAgICAgICB9OwogICAgfQoKICAgICMgUGVyIGRlZmF1bHQgdGhlcmUgaXMgbm8gcmVzY2hlZHVsaW5nIG9mIEVsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1NYW5hZ2VtZW50IHJlcXVlc3RzLAogICAgIyBidXQgRXJyb3JIYW5kbGluZzo6UmVxdWVzdFJldHJ5IGNvdWxkIGhhdmUgYmVlbiBjb25maWd1cmVkIG1hbnVhbGx5LCBlLmcuIHZpYSB0aGUgYWRtaW4gaW50ZXJmYWNlLgogICAgaWYgKCAkUGFyYW17RGF0YX17UmVzcG9uc2VDb250ZW50fSAmJiAkUGFyYW17RGF0YX17UmVzcG9uc2VDb250ZW50fSA9fiBte1JlU2NoZWR1bGU9MX0gKSB7CgogICAgICAgICMgUmVzcG9uc2VDb250ZW50IGhhcyBVUkkgbGlrZSBwYXJhbXMsIGNvbnZlcnQgdGhlbSBpbnRvIGEgaGFzaAogICAgICAgIG15ICVRdWVyeVBhcmFtcyA9IHNwbGl0IC9bJj1dLywgJFBhcmFte0RhdGF9e1Jlc3BvbnNlQ29udGVudH07CgogICAgICAgICMgdW5lc2NhcGUgVVJJIHN0cmluZ3MgaW4gcXVlcnkgcGFyYW1ldGVycwogICAgICAgIGZvciBteSAkUGFyYW0gKCBzb3J0IGtleXMgJVF1ZXJ5UGFyYW1zICkgewogICAgICAgICAgICAkUXVlcnlQYXJhbXN7JFBhcmFtfSA9IFVSSTo6RXNjYXBlOjp1cmlfdW5lc2NhcGUoICRRdWVyeVBhcmFtc3skUGFyYW19ICk7CiAgICAgICAgfQoKICAgICAgICAjIGZpeCBFeGVjdXRpb25UaW1lIHBhcmFtCiAgICAgICAgaWYgKCAkUXVlcnlQYXJhbXN7RXhlY3V0aW9uVGltZX0gKSB7CiAgICAgICAgICAgICRRdWVyeVBhcmFtc3tFeGVjdXRpb25UaW1lfSA9fiBzeyhcZCspXCsoXGQrKX17JDEgJDJ9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnUmUtU2NoZWR1bGluZy4uLicsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVF1ZXJ5UGFyYW1zLAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgRGF0YSAgICA9PiAkUGFyYW17RGF0YX0sCiAgICB9Owp9CgoxOwo=</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/Common.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb247Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbW1vbik7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0KCk7CnVzZSBFbmNvZGU7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29tbW9uIC0gQmFzZSBjbGFzcyBmb3IgYWxsIENJIE9wZXJhdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgSW5pdCgpCgppbml0aWFsaXplIHRoZSBvcGVyYXRpb24gYnkgY2hlY2tpbmcgdGhlIHdlYiBzZXJ2aWNlIGNvbmZpZ3VyYXRpb24gYW5kIGdhdGhlciBvZiB0aGUgZHluYW1pYyBmaWVsZHMKCiAgICBteSAkUmV0dXJuID0gJENvbW1vbk9iamVjdC0+SW5pdCgKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gMSwKICAgICk7CgpyZXR1cm5zOgoKICAgICRSZXR1cm4gPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwIGluIGNhc2Ugb2YgZmFpbHVyZSwKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0Vycm9yIE1lc3NhZ2UnLAogICAgfQoKPWN1dAoKc3ViIEluaXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZAogICAgaWYgKCAhJFBhcmFte1dlYnNlcnZpY2VJRH0gKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vIFdlYnNlcnZpY2VJRCEiLAogICAgICAgIH07CiAgICB9CgogICAgIyBnZXQgd2ViIHNlcnZpY2UgY29uZmlndXJhdGlvbgogICAgbXkgJFdlYnNlcnZpY2UgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlR2V0KAogICAgICAgIElEID0+ICRQYXJhbXtXZWJzZXJ2aWNlSUR9LAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkV2Vic2VydmljZSkgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJ0NvdWxkIG5vdCBkZXRlcm1pbmUgV2ViIHNlcnZpY2UgY29uZmlndXJhdGlvbicKICAgICAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29tbW9uOjpuZXcoKScsCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07Cn0KCj1oZWFkMiBWYWxpZGF0ZUNsYXNzKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gQ2xhc3MgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlQ2xhc3MoCiAgICAgICAgQ2xhc3MgPT4gJ3NvbWUgY2xhc3MnLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVDbGFzcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDbGFzc307CgogICAgIyBjaGVjayBmb3IgQ2xhc3Mgc2VudAogICAgbXkgJEl0ZW1EYXRhUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICA9PiAkUGFyYW17Q2xhc3N9LAogICAgKTsKCiAgICAjIHJldHVybiBmYWxzZSBpZiBpdGVtIGRhdGEgaXMgZW1wdHkKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1EYXRhUmVmKTsKCiAgICAjIGxvb2tzIGZpbmUKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVEZXBsU3RhdGUoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBEZXBsU3RhdGUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlRGVwbFN0YXRlKAogICAgICAgIERlbHBTdGF0ZSA9PiAnc29tZSBEZXBsU3RhdGUnLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVEZXBsU3RhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17RGVwbFN0YXRlfTsKCiAgICAjIGNoZWNrIGZvciBDbGFzcyBzZW50CiAgICBteSAkSXRlbURhdGFSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBOYW1lICA9PiAkUGFyYW17RGVwbFN0YXRlfSwKICAgICk7CgogICAgIyByZXR1cm4gZmFsc2UgaWYgaXRlbSBkYXRhIGlzIGVtcHR5CiAgICByZXR1cm4gdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRJdGVtRGF0YVJlZik7CgogICAgIyBsb29rcyBmaW5lCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFZhbGlkYXRlSW5jaVN0YXRlKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gSW5jaVN0YXRlIGlzIHZhbGlkLgoKICAgIG15ICRTdWNlc3MgPSAkQ29tbW9uT2JqZWN0LT5WYWxpZGF0ZUluY2lTdGF0ZSgKICAgICAgICBJbmNpU3RhdGUgPT4gJ3NvbWUgSW5jaVN0YXRlJywKICAgICk7CgpyZXR1cm5zCgogICAgJFN1Y2Nlc3MgPSAxICAgICAgICAgICAgIyBvciB1bmRlZgoKPWN1dAoKc3ViIFZhbGlkYXRlSW5jaVN0YXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiB1bmxlc3MgJFBhcmFte0luY2lTdGF0ZX07CgogICAgIyBjaGVjayBmb3IgQ2xhc3Mgc2VudAogICAgbXkgJEl0ZW1EYXRhUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtJbmNpU3RhdGV9LAogICAgKTsKCiAgICAjIHJldHVybiBmYWxzZSBpZiBpdGVtIGRhdGEgaXMgZW1wdHkKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1EYXRhUmVmKTsKCiAgICAjIGxvb2tzIGZpbmUKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dFRleHQoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyB2YWxpZC4KCiAgICBteSAkU3VjZXNzID0gJENvbW1vbk9iamVjdC0+VmFsaWRhdGVJbnB1dFRleHQoCiAgICAgICAgVmFsdWUgICAgID0+ICdzb21lIHZhbHVlJywKICAgICAgICBNYXhMZW5ndGggPT4gMTIzLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dFRleHQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIGxlbmd0aAogICAgaWYgKAogICAgICAgIGRlZmluZWQgJFBhcmFte0lucHV0fS0+e01heExlbmd0aH0KICAgICAgICAmJiAkUGFyYW17SW5wdXR9LT57TWF4TGVuZ3RofQogICAgICAgICYmIGxlbmd0aCAkUGFyYW17VmFsdWV9ID4gJFBhcmFte0lucHV0fS0+e01heExlbmd0aH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dERhdGUoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyB2YWxpZC4KCiAgICBteSAkU3VjZXNzID0gJENvbW1vbk9iamVjdC0+VmFsaWRhdGVJbnB1dERhdGUoCiAgICAgICAgVmFsdWUgPT4gJzEyLzEyLzE5NzcnLAogICAgKTsKCm9yCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXREYXRlKAogICAgICAgIFZhbHVlID0+ICcxOTc3LTEyLTEyJywKICAgICk7CgpyZXR1cm5zCgogICAgJFN1Y2Nlc3MgPSAxICAgICAgICAgICAgIyBvciB1bmRlZgoKPWN1dAoKc3ViIFZhbGlkYXRlSW5wdXREYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAjIGNoZWNrIGFuZCBjb252ZXJ0IGZvciBkYXRlIGZvcm1hdCBsaWtlICIwNS8xOC8yMDExIgogICAgaWYgKCAkVmFsdWUgPX4gbXtcQSAoXGR7Mn0pIC8gKFxkezJ9KSAvIChcZHs0fSkgXHp9eG1zICkgewogICAgICAgICRWYWx1ZSA9ICQzIC4gJy0nIC4gJDEgLiAnLScgLiAkMiAuICcgMDA6MDA6MDAnOwogICAgfQoKICAgICMgY2hlY2sgYW5kIGNvbnZlcnQgZm9yIGRhdGUgZm9ybWF0IGxpa2UgIjIwMTEtMDUtMTgiCiAgICBpZiAoICRWYWx1ZSA9fiBte1xBIChcZHs0fSAtIFxkezJ9IC0gXGR7Mn0gXHopIH14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDEgLiAnIDAwOjAwOjAwJzsKICAgIH0KCiAgICAjIENvbnZlcnQgdGhlIHJhdyBkYXRhIHRvIGEgc3lzdGVtIGRhdGV0aW1lIG9iamVjdC4KICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgU3RyaW5nID0+ICRWYWx1ZSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICREYXRlVGltZU9iamVjdDsKCiAgICAjIGxvb2tzIGZpbmUKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dERhdGVUaW1lKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXREYXRlVGltZSgKICAgICAgICBWYWx1ZSA9PiAnMTIvMTIvMTk3NyAxMjowMDowMCcsCiAgICApOwoKICAgIG9yCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXREYXRlVGltZSgKICAgICAgICBWYWx1ZSA9PiAnMTk3Ny0xMi0xMiAxMjowMDowMCcsCiAgICApOwoKcmV0dXJucwoKICAgICRTdWNjZXNzID0gMSAgICAgICAgICAgICMgb3IgdW5kZWYKCj1jdXQKCnN1YiBWYWxpZGF0ZUlucHV0RGF0ZVRpbWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgICMgY2hlY2sgYW5kIGNvbnZlcnQgZm9yIGRhdGUgZm9ybWF0IGxpa2UgIjA1LzE4LzIwMTEiCiAgICBpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJyAwMDowMDowMCc7CiAgICB9CiAgICBlbHNpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSAoXGR7Mn0gOiBcZHsyfSA6IFxkezJ9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJDQ7CiAgICB9CgogICAgIyBjaGVjayBhbmQgY29udmVydCBmb3IgZGF0ZSBmb3JtYXQgbGlrZSAiMjAxMS0wNS0xOCIKICAgIGlmICggJFZhbHVlID1+IG17XEEgKFxkezR9IC0gXGR7Mn0gLSBcZHsyfSBceikgfXhtcyApIHsKICAgICAgICAkVmFsdWUgPSAkMSAuICcgMDA6MDA6MDAnOwogICAgfQoKICAgICMgQ29udmVydCB0aGUgcmF3IGRhdGEgdG8gYSBzeXN0ZW0gZGF0ZXRpbWUgb2JqZWN0LgogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICBTdHJpbmcgPT4gJFZhbHVlLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJERhdGVUaW1lT2JqZWN0OwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dEludGVnZXIoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyB2YWxpZC4KCiAgICBteSAkU3VjZXNzID0gJENvbW1vbk9iamVjdC0+VmFsaWRhdGVJbnB1dEludGVnZXIoCiAgICAgICAgVmFsdWUgPT4gMTIzLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dEludGVnZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgIHJldHVybiBpZiAhSXNJbnRlZ2VyKCRWYWx1ZSk7CgogICAgcmV0dXJuIGlmIGRlZmluZWQgJFBhcmFte1ZhbHVlTWlufSAmJiAkVmFsdWUgPCAkUGFyYW17VmFsdWVNaW59OwogICAgcmV0dXJuIGlmIGRlZmluZWQgJFBhcmFte1ZhbHVlTWF4fSAmJiAkVmFsdWUgPiAkUGFyYW17VmFsdWVNYXh9OwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dEdlbmVyYWxDYXRhbG9nKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXRHZW5lcmFsQ2F0YWxvZygKICAgICAgICBWYWx1ZSA9PiAxMjMsCiAgICAgICAgQ2xhc3MgPT4gJ1NvbWUgZ2VuZXJhbCBjYXRhbG9nIGNsYXNzJwogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dEdlbmVyYWxDYXRhbG9nIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAjIGdldCB0aGUgdmFsdWVzIGZvciB0aGUgR2VuZXJhbCBjYXRhbG9nIGNsYXNzCiAgICBteSAkSXRlbUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0lucHV0fS0+e0NsYXNzfSwKICAgICk7CgogICAgIyBjcmVhdGUgYSBsb2t1cCBsaXN0CiAgICBteSAlSXRlbUxpc3RMb29rdXAgPSByZXZlcnNlICV7JEl0ZW1MaXN0fTsKCiAgICByZXR1cm4gaWYgISRJdGVtTGlzdExvb2t1cHskVmFsdWV9OwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dEN1c3RvbWVyKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXRDdXN0b21lcigKICAgICAgICBWYWx1ZSA9PiAnc29tZSBjdXN0b21lciBsb2dpbicsCiAgICApOwoKcmV0dXJucwoKICAgICRTdWNjZXNzID0gMSAgICAgICAgICAgICMgb3IgdW5kZWYKCj1jdXQKCnN1YiBWYWxpZGF0ZUlucHV0Q3VzdG9tZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgIHJldHVybiBpZiAhJFZhbHVlOwoKICAgIG15ICVDdXN0b21lckRhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJyktPkN1c3RvbWVyVXNlckRhdGFHZXQoCiAgICAgICAgVXNlciA9PiAkUGFyYW17VmFsdWV9LAogICAgKTsKCiAgICAjIGlmIGN1c3RvbWVyIGlzIG5vdCByZWdpc3RlcmVkIGluIHRoZSBkYXRhYmFzZQogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggXCVDdXN0b21lckRhdGEgKTsKCiAgICAjIGlmIFZhbGlkSUQgaXMgcHJlc2VudCwgY2hlY2sgaWYgaXQgaXMgdmFsaWQhCiAgICBpZiAoIGRlZmluZWQgJEN1c3RvbWVyRGF0YXtWYWxpZElEfSApIHsKCiAgICAgICAgIyByZXR1cm4gZmFsc2UgaWYgY3VzdG9tZXIgaXMgbm90IHZhbGlkCiAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIGlmICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExvb2t1cCggVmFsaWRJRCA9PiAkQ3VzdG9tZXJEYXRhe1ZhbGlkSUR9ICkgbmUgJ3ZhbGlkJzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFZhbGlkYXRlSW5wdXRDdXN0b21lckNvbXBhbnkoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyB2YWxpZC4KCiAgICBteSAkU3VjZXNzID0gJENvbW1vbk9iamVjdC0+VmFsaWRhdGVJbnB1dEN1c3RvbWVyQ29tcGFueSgKICAgICAgICBWYWx1ZSA9PiAnc29tZSBjdXN0b21lciBjb21wYW55IG5hbWUnLAogICAgKTsKCnJldHVybnMKCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIHVuZGVmCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dEN1c3RvbWVyQ29tcGFueSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CgogICAgcmV0dXJuIGlmICEkVmFsdWU7CgogICAgbXkgJUNvbXBhbnlMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScpLT5DdXN0b21lckNvbXBhbnlMaXN0KAogICAgICAgIExpbWl0ID0+IDAsICAgICMgRGlzcGxheSBhbGwgQ3VzdG9tZXIgQ29tcGFuaWVzCiAgICApOwoKICAgIHJldHVybiBpZiAhJENvbXBhbnlMaXN0eyAkUGFyYW17VmFsdWV9IH07CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWYWxpZGF0ZU1pbWVUeXBlKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gTWltZVR5cGUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlTWltZVR5cGUoCiAgICAgICAgTWltZVR5cGVJRCA9PiAnc29tZSBNaW1lVHlwZScsCiAgICApOwoKcmV0dXJucwoKICAgICRTdWNjZXNzID0gMSAgICAgICAgICAgICMgb3IgdW5kZWYKCj1jdXQKCnN1YiBWYWxpZGF0ZU1pbWVUeXBlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiBpZiAhJFBhcmFte01pbWVUeXBlfTsKCiAgICByZXR1cm4gaWYgJFBhcmFte01pbWVUeXBlfSAhfiBte1xBXHcrXC9cdytcen07CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWYWxpZGF0ZUNoYXJzZXQoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBDaGFyc2V0IGlzIHZhbGlkLgoKICAgIG15ICRTdWNlc3MgPSAkQ29tbW9uT2JqZWN0LT5WYWxpZGF0ZUNoYXJzZXQoCiAgICAgICAgQ2hhcnNldCA9PiAnc29tZSBjaGFyc2V0JywKICAgICk7CgpyZXR1cm5zCgogICAgJFN1Y2Nlc3MgPSAxICAgICAgICAgICAgIyBvciB1bmRlZgoKPWN1dAoKc3ViIFZhbGlkYXRlQ2hhcnNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDaGFyc2V0fTsKCiAgICBteSAkQ2hhcnNldExpc3QgPSAkU2VsZi0+X0NoYXJzZXRMaXN0OwoKICAgIHJldHVybiB1bmxlc3MgJENoYXJzZXRMaXN0LT57ICRQYXJhbXtDaGFyc2V0fSB9OwogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWYWxpZGF0ZUNvbnRlbnRUeXBlKCkKCmNoZWNrcyB0aGUgdmFsaWRpdHkgb2YgdGhlIGNvbnRlbnQgdHlwZS4KClZhbGlkIHZhbHVlcyBmb3IgdGhlIE1JTUUgaGVhZGVyIEk8Q29udGVudC1UeXBlPiBhcmUgc3BlY2lmaWVkIGluIEw8UkZDIDIwNDV8aHR0cHM6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzIwNDUjc2VjdGlvbi01LjE+LgpUaGlzIHNwZWMgYWxsb3dzIGUuZy4gYmFyZSBjYXJyaWFnZSByZXR1cm4gYW5kIGJhY2tzbGFzaCBxdW90ZWQgbGluZSBmZWVkIGNoYXJhY3RlcnMgaW4gdGhlIHZhbHVlLiBCdXQgaW4gT1RPQk8gd2UKY2FuIGJlIG1vcmUgc3RyaWN0LiBUaGlzIGlzIGJlY2F1c2UgdXN1YWxseSB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBtZWRpYSB0eXBlIGFuZCBpbiB0aGUgY2hhcnNldC4KVGh1cyB0aGUgZm9sbG93aW5nLCBzb21ld2hhdCBhcmJpdHJhcnksIGNvbmRpdGlvbnMgYXJlIGltcG9zZWQ6Cgo9b3ZlciA0Cgo9aXRlbSBUaGUgY2hhcmFjdGVyIGNhcnJpYWdlIHJldHVybiBpcyBub3QgYWxsb3dlZAoKPWl0ZW0gVGhlIGNoYXJhY3RlciBsaW5lIGZlZWQgaXMgbm90IGFsbG93ZWQKCj1pdGVtIFRoZSBNSU1FIHR5cGUsIGFrYSBtZWRpYSB0eXBlLCBpcyBhdCB0aGUgc3RhcnQgb2YgdGhlIHZhbHVlIGFuZCBtYXRjaGVzIEM8cXJ7XHcvXHd9aT4KCj1pdGVtIFRoZSBjaGFyYWN0ZXIgc2V0IGlzIGV4dHJhY3RlZCBieSBzb21lIHJlZ2V4ZXMgYW5kIGlzIHJlY29nbml6ZWQgYnkgdGhlIEM8RW5jb2RlPiBtb2R1bGUKCj1iYWNrCgo9Y3V0CgpzdWIgVmFsaWRhdGVDb250ZW50VHlwZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDb250ZW50VHlwZX07CgogICAgbXkgJENvbnRlbnRUeXBlID0gJFBhcmFte0NvbnRlbnRUeXBlfTsKCiAgICAjIHByb2hpYml0IGNhcnJpYWdlIHJldHVybiBhbmQgbGluZSBmZWVkCiAgICByZXR1cm4gaWYgJENvbnRlbnRUeXBlID1+IG0vW1xyXG5dLzsKCiAgICAjIGNoZWNrIHRoZSBvcHRpb25hbCBDaGFyc2V0IHBhcnQKICAgIG15ICRDaGFyc2V0ID0gJyc7CiAgICBpZiAoICRDb250ZW50VHlwZSA9fiBtL2NoYXJzZXQ9L2kgKSB7CiAgICAgICAgJENoYXJzZXQgPSAkQ29udGVudFR5cGU7CiAgICAgICAgJENoYXJzZXQgPX4gcy8uKz9jaGFyc2V0PSgifCd8KShcdyspLyQyL2dpOwogICAgICAgICRDaGFyc2V0ID1+IHMvInwnLy9nOwogICAgICAgICRDaGFyc2V0ID1+IHMvKC4rPyk7LiovJDEvZzsKICAgIH0KCiAgICBpZiAoICRDaGFyc2V0ICYmICEkU2VsZi0+VmFsaWRhdGVDaGFyc2V0KCBDaGFyc2V0ID0+ICRDaGFyc2V0ICkgKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgdGhlIHJlcXVpcmVkIE1pbWVUeXBlIHBhcnQKICAgIG15ICRNaW1lVHlwZSA9ICcnOwogICAgaWYgKCAkQ29udGVudFR5cGUgPX4gbS9eKFx3K1wvXHcrKS9pICkgewogICAgICAgICRNaW1lVHlwZSA9ICQxOwogICAgICAgICRNaW1lVHlwZSA9fiBzLyJ8Jy8vZzsKICAgIH0KCiAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVNaW1lVHlwZSggTWltZVR5cGUgPT4gJE1pbWVUeXBlICkgKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgbG9va3MgdmFsaWQKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgUmVwbGFjZUlucHV0RGF0ZSgpCgpyZXBsYWNlcyB0aGUgdXNlciB2YWx1ZSB3aXRoIGEgc3lzdGVtIHZhbGlkIHZhbHVlLgoKICAgIG15ICROZXdWYWx1ZSA9ICRDb21tb25PYmplY3QtPlJlcGxhY2VJbnB1dERhdGUoCiAgICAgICAgVmFsdWUgPT4gJzEyLzEyLzE5NzcnLAogICAgKTsKCiAgICBvcgoKICAgIG15ICROZXdWYWx1ZSA9ICRDb21tb25PYmplY3QtPlJlcGxhY2VJbnB1dERhdGUoCiAgICAgICAgVmFsdWUgPT4gJzE5NzctMTItMTInLAogICAgKTsKCnJldHVybnMKCiAgICAkTmV3VmFsdWUgPSAnMTk3Ny0xMi0xMicsCgo9Y3V0CgpzdWIgUmVwbGFjZUlucHV0RGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CgogICAgIyBjaGVjayBhbmQgY29udmVydCBmb3IgZGF0ZSBmb3JtYXQgbGlrZSAiMDUvMTgvMjAxMSIKICAgIGlmICggJFZhbHVlID1+IG17XEEgKFxkezJ9KSAvIChcZHsyfSkgLyAoXGR7NH0pIFx6fXhtcyApIHsKICAgICAgICAkVmFsdWUgPSAkMyAuICctJyAuICQxIC4gJy0nIC4gJDIgLiAnIDAwOjAwOjAwJzsKICAgIH0KCiAgICAjIGNoZWNrIGFuZCBjb252ZXJ0IGZvciBkYXRlIGZvcm1hdCBsaWtlICIyMDExLTA1LTE4IgogICAgaWYgKCAkVmFsdWUgPX4gbXtcQSAoXGR7NH0gLSBcZHsyfSAtIFxkezJ9IFx6KSB9eG1zICkgewogICAgICAgICRWYWx1ZSA9ICQxIC4gJyAwMDowMDowMCc7CiAgICB9CgogICAgIyBDb252ZXJ0IHRoZSByYXcgZGF0YSB0byBhIHN5c3RlbSBkYXRldGltZSBvYmplY3QuCiAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgIFN0cmluZyA9PiAkVmFsdWUsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICREYXRlVGltZU9iamVjdC0+Rm9ybWF0KCBGb3JtYXQgPT4gJyVGJyApOwp9Cgo9aGVhZDIgUmVwbGFjZUlucHV0RGF0ZVRpbWUoKQoKcmVwbGFjZXMgdGhlIHVzZXIgdmFsdWUgd2l0aCBhIHN5c3RlbSB2YWxpZCB2YWx1ZS4KCiAgICBteSAkTmV3VmFsdWUgPSAkQ29tbW9uT2JqZWN0LT5SZXBsYWNlSW5wdXREYXRlVGltZSgKICAgICAgICBWYWx1ZSA9PiAnMTIvMTIvMTk3NyAxMjowMDowMCcsCiAgICApOwoKICAgIG9yCgogICAgbXkgJE5ld1ZhbHVlID0gJENvbW1vbk9iamVjdC0+UmVwbGFjZUlucHV0RGF0ZVRpbWUoCiAgICAgICAgVmFsdWUgPT4gJzE5NzctMTItMTIgMTI6MDA6MDAnLAogICAgKTsKCnJldHVybnMKCiAgICAkTmV3VmFsdWUgPSAnMTk3Ny0xMi0xMiAxMjowMDowMCc7Cgo9Y3V0CgpzdWIgUmVwbGFjZUlucHV0RGF0ZVRpbWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgICMgY2hlY2sgYW5kIGNvbnZlcnQgZm9yIGRhdGUgZm9ybWF0IGxpa2UgIjA1LzE4LzIwMTEiCiAgICBpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJyAwMDowMDowMCc7CiAgICB9CiAgICBlbHNpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSAoXGR7Mn0gOiBcZHsyfSA6IFxkezJ9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJDQ7CiAgICB9CgogICAgIyBjaGVjayBhbmQgY29udmVydCBmb3IgZGF0ZSBmb3JtYXQgbGlrZSAiMjAxMS0wNS0xOCIKICAgIGlmICggJFZhbHVlID1+IG17XEEgKFxkezR9IC0gXGR7Mn0gLSBcZHsyfSBceikgfXhtcyApIHsKICAgICAgICAkVmFsdWUgPSAkMSAuICcgMDA6MDA6MDAnOwogICAgfQoKICAgICMgQ29udmVydCB0aGUgcmF3IGRhdGEgdG8gYSBzeXN0ZW0gZGF0ZXRpbWUgb2JqZWN0LgogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICBTdHJpbmcgPT4gJFZhbHVlLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAkRGF0ZVRpbWVPYmplY3QtPlRvU3RyaW5nKCk7Cn0KCj1oZWFkMiBSZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZygpCgpyZXBsYWNlcyB0aGUgdXNlciB2YWx1ZSB3aXRoIGEgc3lzdGVtIHZhbGlkIHZhbHVlLgoKICAgIG15ICROZXdWYWx1ZSA9ICRDb21tb25PYmplY3QtPlJlcGxhY2VJbnB1dEdlbmVyYWxDYXRhbG9nKAogICAgICAgIFZhbHVlID0+ICdzb21lIHZhbHVlJywKICAgICAgICBDbGFzcyA9PiAnU29tZSBnZW5lcmFsIGNhdGFsb2cgY2xhc3MnCiAgICApOwoKcmV0dXJucwoKICAgICROZXdWYWx1ZSA9IDEyMwoKPWN1dAoKc3ViIFJlcGxhY2VJbnB1dEdlbmVyYWxDYXRhbG9nIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAjIGdldCB0aGUgdmFsdWVzIGZvciB0aGUgR2VuZXJhbCBjYXRhbG9nIGNsYXNzCiAgICBteSAkSXRlbUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0lucHV0fS0+e0NsYXNzfSwKICAgICk7CgogICAgIyBjcmVhdGUgYSBsb2t1cCBsaXN0CiAgICBteSAlSXRlbUxpc3RMb29rdXAgPSByZXZlcnNlICV7JEl0ZW1MaXN0fTsKCiAgICByZXR1cm4gJEl0ZW1MaXN0TG9va3VweyRWYWx1ZX07Cn0KCj1oZWFkMiBJbnZlcnRSZXBsYWNlSW5wdXREYXRlKCkKCnJlcGxhY2VzIHRoZSBzeXN0ZW0gdmFsdWUgd2l0aCBhIHVzZXIgdmFsdWUuCgogICAgbXkgJE5ld1ZhbHVlID0gJENvbW1vbk9iamVjdC0+SW52ZXJ0UmVwbGFjZUlucHV0RGF0ZSgKICAgICAgICBWYWx1ZSA9PiAnMTItMTItMTk3NyAwMDowMDowMCcsCiAgICApOwoKcmV0dXJucwoKICAgICROZXdWYWx1ZSA9ICcxOTc3LTEyLTEyJywKCj1jdXQKCnN1YiBJbnZlcnRSZXBsYWNlSW5wdXREYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAkVmFsdWUgPX4gc3tcQSAoXGR7NH0gLSBcZHsyfSAtIFxkezJ9KSBbIF0gMDA6MDA6MDAgXHp9eyQxfXhtczsKCiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aGVhZDIgSW52ZXJ0UmVwbGFjZUlucHV0R2VuZXJhbENhdGFsb2coKQoKcmVwbGFjZXMgdGhlIHN5c3RlbSB2YWx1ZSB3aXRoIGEgdXNlciB2YWx1ZS4KCiAgICBteSAkTmV3VmFsdWUgPSAkQ29tbW9uT2JqZWN0LT5JbnZlcnRSZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZygKICAgICAgICBWYWx1ZSA9PiAxMjMsCiAgICAgICAgQ2xhc3MgPT4gJ1NvbWUgZ2VuZXJhbCBjYXRhbG9nIGNsYXNzJwogICAgKTsKCnJldHVybnMKCiAgICAkTmV3VmFsdWUgPSAnc29tZSB2YWx1ZScKCj1jdXQKCnN1YiBJbnZlcnRSZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CgogICAgIyBnZXQgdGhlIHZhbHVlcyBmb3IgdGhlIEdlbmVyYWwgY2F0YWxvZyBjbGFzcwogICAgbXkgJEl0ZW1MaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICRQYXJhbXtJbnB1dH0tPntDbGFzc30sCiAgICApOwoKICAgICMgY3JlYXRlIGEgbG9rdXAgbGlzdAogICAgcmV0dXJuICRJdGVtTGlzdC0+eyRWYWx1ZX07Cn0KCj1oZWFkMiBDcmVhdGVBdHRhY2htZW50KCkKCmNyZWF0ZXMgYSBuZXcgYXR0YWNobWVudCBmb3IgdGhlIGdpdmVuIENvbmZpZ0l0ZW0uCgogICAgbXkgJFJlc3VsdCA9ICRDb21tb25PYmplY3QtPkNyZWF0ZUF0dGFjaG1lbnQoCiAgICAgICAgQ29udGVudCAgICAgID0+ICREYXRhLCAgICAgICAgICAgICAgICAgICAjIGZpbGUgY29udGVudCAoQmFzZTY0IGVuY29kZWQpCiAgICAgICAgQ29udGVudFR5cGUgID0+ICdzb21lIGNvbnRlbnQgdHlwZScsCiAgICAgICAgRmlsZW5hbWUgICAgID0+ICdzb21lIGZpbGVuYW1lJywKICAgICAgICBDb25maWdJdGVtSUQgPT4gNDU2LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxMjMsCiAgICApOwoKcmV0dXJucwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgZXZlcnl0aGluZyBpcyBvawogICAgfQoKb3IKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nCiAgICB9Cgo9Y3V0CgpzdWIgQ3JlYXRlQXR0YWNobWVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQXR0YWNobWVudCBDb25maWdJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJDcmVhdGVBdHRhY2htZW50KCkgR290IG5vICROZWVkZWQhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyB3cml0ZSBhdHRhY2htZW50CiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtQXR0YWNobWVudEFkZCgKICAgICAgICAleyAkUGFyYW17QXR0YWNobWVudH0gfSwKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgQ29udGVudCAgICAgID0+IE1JTUU6OkJhc2U2NDo6ZGVjb2RlX2Jhc2U2NCggJFBhcmFte0F0dGFjaG1lbnR9LT57Q29udGVudH0gKSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAkU3VjY2VzcywKICAgIH07Cn0KCj1oZWFkMSBJTlRFUk5BTCBJTlRFUkZBQ0UKCj1oZWFkMiBfQ2hhcnNldExpc3QoKQoKcmV0dXJucyBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBjaGFyc2V0cy4KCiAgICBteSAkQ2hhcnNldExpc3QgPSAkQ29tbW9uT2JqZWN0LT5fQ2hhcnNldExpc3QoCiAgICAgICAgVXNlcklEID0+IDEyMywKICAgICk7CgpyZXR1cm5zCgogICAgJENoYXJzZXRMaXN0ID0gewogICAgICAgICMuLi4KICAgICAgICBpc28tODg1OS0xICA9PiAxLAogICAgICAgIGlzby04ODU5LTE1ID0+IDEsCiAgICAgICAgTWFjUm9tYW4gICAgPT4gMSwKICAgICAgICB1dGY4ICAgICAgICA9PiAxLAogICAgICAgICMuLi4KICAgIH0KCj1jdXQKCnN1YiBfQ2hhcnNldExpc3QgewogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgIG15ICVDaGFyc2V0SGFzaCA9IG1hcAogICAgICAgIHsgJF8gPT4gMSB9CiAgICAgICAgRW5jb2RlLT5lbmNvZGluZ3MoJzphbGwnKTsKCiAgICByZXR1cm4gXCVDaGFyc2V0SGFzaDsKfQoKPWhlYWQyIF9DaGVja0F0dGFjaG1lbnQoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBhdHRhY2htZW50IHBhcmFtZXRlciBpcyB2YWxpZC4KCiAgICBteSAkQXR0YWNobWVudENoZWNrID0gJE9wZXJhdGlvbk9iamVjdC0+X0NoZWNrQXR0YWNobWVudCgKICAgICAgICBBdHRhY2htZW50ID0+ICRBdHRhY2htZW50LCAgICAgICAgICAgICAgICAgICMgYWxsIGF0dGFjaG1lbnQgcGFyYW1ldGVycwogICAgKTsKCiAgICByZXR1cm5zOgoKICAgICRBdHRhY2htZW50Q2hlY2sgPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIGV2ZXJ5dGhpbmcgaXMgT0sKICAgIH0KCiAgICAkQXR0YWNobWVudENoZWNrID0gewogICAgICAgIEVycm9yQ29kZSAgICA9PiAnRnVuY3Rpb24uRXJyb3InLCAgICAgICAgICAgIyBpZiBlcnJvcgogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nLAogICAgfQoKPWN1dAoKc3ViIF9DaGVja0F0dGFjaG1lbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQXR0YWNobWVudCA9ICRQYXJhbXtBdHRhY2htZW50fTsKCiAgICAjIGNoZWNrIGF0dGFjaG1lbnQgaXRlbSBpbnRlcm5hbGx5CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29udGVudCBDb250ZW50VHlwZSBGaWxlbmFtZSkpIHsKICAgICAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkQXR0YWNobWVudC0+eyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IEF0dGFjaG1lbnQtPiROZWVkZWQgIHBhcmFtZXRlciBpcyBtaXNzaW5nISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgQXR0YWNobWVudC0+Q29udGVudFR5cGUKICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0gKSB7CgogICAgICAgICMgVGhlIE1JTUUgaGVhZGVyIGZpZWxkIENvbnRlbnQtVHlwZSBpcyBvbmx5IGluIHNvbWUgcGFydHMgY2FzZSBpbnNlbnNpdGl2ZSwKICAgICAgICAjIGJ1dCBsb3dlcmNhc2luZyB0aGUgd2hvbGUgc3RyaW5nIHNpbXBsaWZpZXMgdGhlIGhhbmRsaW5nIGluIE9UT0JPLgogICAgICAgICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9ID0gbGMgJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CgogICAgICAgIGlmICggISRTZWxmLT5WYWxpZGF0ZUNvbnRlbnRUeXBlKCBDb250ZW50VHlwZSA9PiAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfSApICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBBdHRhY2htZW50LT5Db250ZW50VHlwZSBpcyBpbnZhbGlkISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgaWYgZXZlcnl0aGluZyBpcyBPSyB0aGVuIHJldHVybiBTdWNjZXNzCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07Cn0KCj1oZWFkMiBfQ2hlY2tWYWx1ZSgpCgpjaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIHZhbGlkLgoKICAgIG15ICRWYWx1ZUNoZWNrID0gJENvbW1vbk9iamVjdC0+X0NoZWNrVmFsdWUoCiAgICAgICAgVmFsdWUgICA9PiAkVmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAjICRWYWx1ZSBjb3VsZCBiZSBhIHN0cmluZywgYSB0aW1lIHN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGdlbmVyYWwgY2F0YWxvZyBjbGFzcyBuYW1lLCBvciBhIGludGVnZXIKICAgICAgICBJbnB1dCAgID0+ICRJbnB1dERlZmluaXRpb25IYXNoUmVmLCAgICAgICMgVGhlIGRlZmluaXRpb24gb2YgdGhlIGVsZW1lbnQgaW5wdXQgZXh0cmFjdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZnJvbSB0aGUgQ29uZmlndXJhdGlvbiBJdGVtIGRlZmluaXRpb24gZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZm9yIGVhY2ggdmFsdWUKICAgICAgICBJdGVtS2V5ID0+ICdzb21lIGtleScsICAgICAgICAgICAgICAgICAgICMgVGhlIG5hbWUgb2YgdGhlIHZhbHVlIGFzIHNlbnQgaW4gdGhlIFNPQVAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICByZXF1ZXN0CiAgICAgICAgUGFyZW50ICA9PiAnc29lbSBwYXJlbnQga2V5LT4nLCAgICAgICAgICAjIFRoZSBuYW1lIG9mIHRoZSBwYXJlbnQgZm9sbG93ZWQgYnkgLT4gb3IgZW1wdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBmb3Igcm9vdCBrZXkgaXRlbXMKICAgICk7CgpyZXR1cm5zOgoKICAgICRWYWx1ZUNoZWNrID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBldmVyeXRoaW5nIGlzIE9LCiAgICB9CgpvcgoKICAgICRWYWx1ZUNoZWNrID0gewogICAgICAgIEVycm9yQ29kZSAgICA9PiAnRnVuY3Rpb24uRXJyb3InLCAgICAgICAgIyBpZiBlcnJvcgogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nLAogICAgfQoKPWN1dAoKc3ViIF9DaGVja1ZhbHVlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFBhcmVudCAgPSAkUGFyYW17UGFyZW50fTsKICAgIG15ICRJdGVtS2V5ID0gJFBhcmFte0l0ZW1LZXl9OwoKICAgIGlmICgKICAgICAgICBkZWZpbmVkICRQYXJhbXtJbnB1dH0tPntSZXF1aXJlZH0gJiYgJFBhcmFte0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJFBhcmFte1ZhbHVlfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgIC4gIiBpcyByZXF1aXJlZCBhbmQgaXMgbWlzc2luZyEiLAogICAgICAgIH07CiAgICB9CgogICAgaWYgKCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ1RleHQnIHx8ICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnVGV4dEFyZWEnICkgewoKICAgICAgICAjIHJ1biBUZXh0IHZhbGlkYXRpb25zCiAgICAgICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlSW5wdXRUZXh0KCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBleGNlZGVzIHRoZSBtYXhpdW0gbGVuZ3RoISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ0RhdGUnICkgewoKICAgICAgICAjIHJ1biBEYXRlIHZhbGlkYXRpb25zCiAgICAgICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlSW5wdXREYXRlKCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBpcyBub3QgYSB2YWxpZCBEYXRlIGZvcm1hdCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdEYXRlVGltZScgKSB7CgogICAgICAgICMgcnVuIERhdGVUaW1lIHZhbGlkYXRpb25zCiAgICAgICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlSW5wdXREYXRlVGltZSglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgaXMgbm90IGEgdmFsaWQgRGF0ZVRpbWUgZm9ybWF0ISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ0N1c3RvbWVyJyApIHsKCiAgICAgICAgIyBydW4gQ3VzdG9tZXIgdmFsaWRhdGlvbnMKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVJbnB1dEN1c3RvbWVyKCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBpcyBub3QgYSB2YWxpZCBjdXN0b21lciEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdDdXN0b21lckNvbXBhbnknICkgewoKICAgICAgICAjIHJ1biBDdXN0b21lckNvbXBhbnkgdmFsaWRhdGlvbnMKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVJbnB1dEN1c3RvbWVyQ29tcGFueSglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgaXMgbm90IGEgdmFsaWQgY3VzdG9tZXIgY29tcGFueSEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdJbnRlZ2VyJyApIHsKCiAgICAgICAgIyBydW4gSW50ZWdlciB2YWxpZGF0aW9ucwogICAgICAgIGlmICggISRTZWxmLT5WYWxpZGF0ZUlucHV0SW50ZWdlciglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgaXMgbm90IGEgdmFsaWQgSW50ZWdlciBvciBvdXQgb2YgcmFuZ2UhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnR2VuZXJhbENhdGFsb2cnICkgewoKICAgICAgICAjIHJ1biBHZW5lcmFsIENhdGFsb2cgdmFsaWRhdGlvbnMKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVJbnB1dEdlbmVyYWxDYXRhbG9nKCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBpcyBub3QgYSB2YWxpZCBmb3IgR2VuZXJhbCBDYXRhbG9nICckUGFyYW17SW5wdXR9LT57Q2xhc3N9JyEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIFRoZSB0eXBlIGlzIGR1bW15LCBkbyBub3RoaW5nCiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9Owp9Cgo9aGVhZDIgX1JlcGxhY2VWYWx1ZSgpCgpyZXBsYWNlIHVzZXIgdmFsdWVzIHdpdGggc3lzdGVtIHJlYWR5IHZhbHVlcy4KCiAgICBteSAkTmV3VmFsdWUgPSAkQ29tbW9uT2JqZWN0LT5fUmVwbGFjZVZhbHVlKAogICAgICAgIFZhbHVlICAgPT4gJFZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgIyAkVmFsdWUgY291bGQgYmUgYSBzdHJpbmcsIGEgdGltZSBzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBnZW5lcmFsIGNhdGFsb2cgY2xhc3MgbmFtZSwgb3IgYSBpbnRlZ2VyCiAgICAgICAgSW5wdXQgICA9PiAkSW5wdXREZWZpbml0aW9uSGFzaFJlZiwgICAgICAjIFRoZSBkZWZpbml0aW9uIG9mIHRoZSBlbGVtZW50IGlucHV0IGV4dHJhY3RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGZyb20gdGhlIENvbmZpZ3VyYXRpb24gSXRlbSBkZWZpbml0aW9uIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGZvciBlYWNoIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZm9yIHJvb3Qga2V5IGl0ZW1zCiAgICApOwoKcmV0dXJuczoKCiAgICAkTmV3VmFsdWUgPSAkQU5ld1ZhbHVlCgo9Y3V0CgpzdWIgX1JlcGxhY2VWYWx1ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2V0IHRoZSBsaXN0IG9mIGlucHV0IHR5cGVzIHRoYXQgbmVlZHMgdG8gYmUgcmVwbGFjZWQKICAgIG15ICVSZXBsYWNlSW5wdXRUeXBlcyA9ICgKICAgICAgICBEYXRlICAgICAgICAgICA9PiAxLAogICAgICAgIERhdGVUaW1lICAgICAgID0+IDEsCiAgICAgICAgR2VuZXJhbENhdGFsb2cgPT4gMSwKICAgICk7CiAgICBpZiAoICEkUmVwbGFjZUlucHV0VHlwZXN7ICRQYXJhbXtJbnB1dH0tPntUeXBlfSB9ICkgewogICAgICAgIHJldHVybiAkUGFyYW17VmFsdWV9OwogICAgfQoKICAgIG15ICROZXdWYWx1ZTsKCiAgICBpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZScgKSB7CgogICAgICAgICMgcnVuIERhdGUgcmVwbGFjZQogICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5SZXBsYWNlSW5wdXREYXRlKCVQYXJhbSk7CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZVRpbWUnICkgewoKICAgICAgICAjIHJ1biBEYXRlVGltZSByZXBsYWNlCiAgICAgICAgJE5ld1ZhbHVlID0gJFNlbGYtPlJlcGxhY2VJbnB1dERhdGVUaW1lKCVQYXJhbSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIHJ1biBHZW5lcmFsIENhdGFsb2cgcmVwbGFjZQogICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5SZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZyglUGFyYW0pOwogICAgfQoKICAgIHJldHVybiAkTmV3VmFsdWU7Cn0KCj1oZWFkMiBfSW52ZXJ0UmVwbGFjZVZhbHVlKCkKCnJlcGxhY2UgaW50ZXJuYWwgdmFsdWVzIHdpdGggdXNlciB2YWx1ZXMuCgogICAgbXkgJE5ld1ZhbHVlID0gJE9wZXJhdGlvbk9iamVjdC0+X0ludmVydFJlcGxhY2VWYWx1ZSgKICAgICAgICBWYWx1ZSAgID0+ICRWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICMgJFZhbHVlIGNvdWxkIGJlIGEgc3RyaW5nLCBhIHRpbWUgc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZ2VuZXJhbCBjYXRhbG9nIGNsYXNzIG5hbWUsIG9yIGEgaW50ZWdlcgogICAgICAgIElucHV0ICAgPT4gJElucHV0RGVmaW5pdGlvbkhhc2hSZWYsICAgICAgIyBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgZWxlbWVudCBpbnB1dCBleHRyYWN0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBmcm9tIHRoZSBDb25maWd1cmF0aW9uIEl0ZW0gZGVmaW5pdGlvbiBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBmb3IgZWFjaCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGZvciByb290IGtleSBpdGVtcwogICAgKTsKCnJldHVybnM6CgogICAgJE5ld1ZhbHVlID0gJEFOZXdWYWx1ZQoKPWN1dAoKc3ViIF9JbnZlcnRSZXBsYWNlVmFsdWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCB0aGUgbGlzdCBvZiBpbnB1dCB0eXBlcyB0aGF0IG5lZWRzIHRvIGJlIHJlcGxhY2VkCiAgICBteSAlUmVwbGFjZUlucHV0VHlwZXMgPSAoCiAgICAgICAgRGF0ZSAgICAgICAgICAgPT4gMSwKICAgICAgICBHZW5lcmFsQ2F0YWxvZyA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkUmVwbGFjZUlucHV0VHlwZXN7ICRQYXJhbXtJbnB1dH0tPntUeXBlfSB9ICkgewogICAgICAgIHJldHVybiAkUGFyYW17VmFsdWV9OwogICAgfQoKICAgIG15ICROZXdWYWx1ZTsKCiAgICBpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZScgKSB7CgogICAgICAgICMgcnVuIERhdGUgcmVwbGFjZQogICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5JbnZlcnRSZXBsYWNlSW5wdXREYXRlKCVQYXJhbSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIHJ1biBHZW5lcmFsIENhdGFsb2cgcmVwbGFjZQogICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5JbnZlcnRSZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZyglUGFyYW0pOwogICAgfQoKICAgIHJldHVybiAkTmV3VmFsdWU7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemDelete.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtRGVsZXRlOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb24pOwoKIyBjb3JlIG1vZHVsZXMKdXNlIE1JTUU6OkJhc2U2NDsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtRGVsZXRlIC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWd1cmF0aW9uIEl0ZW0gRGVsZXRlIE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbi0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRGVidWdnZXJPYmplY3QgV2Vic2VydmljZUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e09wZXJhdGlvbk5hbWV9ID0gJ0NvbmZpZ0l0ZW1EZWxldGUnOwoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtRGVsZXRlJyk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUnVuKCkKCnBlcmZvcm0gQ29uZmlnSXRlbURlbGV0ZSBPcGVyYXRpb24uIFRoaXMgZnVuY3Rpb24gaXMgYWJsZSB0byByZXR1cm4Kb25lIG9yIG1vcmUgQ29uZmlnSXRlbSBlbnRyaWVzIGluIG9uZSBjYWxsLgoKICAgIG15ICRSZXN1bHQgPSAkT3BlcmF0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFVzZXJMb2dpbiAgICAgICAgID0+ICdzb21lIGFnZW50IGxvZ2luJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2VyTG9naW4gb3IgQ3VzdG9tZXJVc2VyTG9naW4gb3IgU2Vzc2lvbklEIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIHJlcXVpcmVkCiAgICAgICAgICAgIEN1c3RvbWVyVXNlckxvZ2luID0+ICdzb21lIGN1c3RvbWVyIGxvZ2luJywKICAgICAgICAgICAgU2Vzc2lvbklEICAgICAgICAgPT4gMTIzLAoKICAgICAgICAgICAgUGFzc3dvcmQgICAgICAgICAgPT4gJ3NvbWUgcGFzc3dvcmQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIFVzZXJMb2dpbiBvciBjdXN0b21lclVzZXJMb2dpbiBpcyBzZW50IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUGFzc3dvcmQgaXMgcmVxdWlyZWQKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgPT4gJzMyLDMzJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcXVpcmVkLCBjb3VsZCBiZSBjb21hIHNlcGFyYXRlZCBJRHMgb3IgYW4gQXJyYXkKICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICMgaW4gY2FzZSBvZiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgIyByZXN1bHQgZGF0YSBwYXlsb2FkIGFmdGVyIE9wZXJhdGlvbgogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWzEyMywgNDU2XSwgICAgICAgICAjIENvbmZpZ3VyYXRpb24gSXRlbSBJRHMgbnVtYmVyIGluIE9UT0JPOjpJVFNNIChTZXJ2aWNlIGRlc2sgc3lzdGVtKQogICAgICAgICAgICBFcnJvciA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG91bGQgbm90IHJldHVybiBlcnJvcnMKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUuRXJyb3JDb2RlJwogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgRGVzY3JpcHRpb24nCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFJlc3VsdCA9ICRTZWxmLT5Jbml0KAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0sCiAgICApOwoKICAgIGlmICggISRSZXN1bHQtPntTdWNjZXNzfSApIHsKICAgICAgICAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnV2Vic2VydmljZS5JbnZhbGlkQ29uZmlndXJhdGlvbicsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICgkVXNlcklEKSA9ICRTZWxmLT5BdXRoKAogICAgICAgICVQYXJhbQogICAgKTsKCiAgICBpZiAoICEkVXNlcklEICkgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5BdXRoRmFpbCIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQXV0aG9yaXphdGlvbiBmYWlsaW5nISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17RGF0YX0tPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5NaXNzaW5nUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogJE5lZWRlZCBwYXJhbWV0ZXIgaXMgbWlzc2luZyEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIG15ICRFcnJvck1lc3NhZ2UgPSAnJzsKCiAgICAjIGFsbCBuZWVkZWQgdmFyaWFibGVzCiAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte0RhdGF9LT57Q29uZmlnSXRlbUlEfSApICkgewogICAgICAgIEBDb25maWdJdGVtSURzID0gc3BsaXQgL1xzKixccyovLCAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9OwogICAgfQogICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gKSApIHsKICAgICAgICBAQ29uZmlnSXRlbUlEcyA9IEB7ICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5Xcm9uZ1N0cnVjdHVyZSIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogU3RydWN0dXJlIGZvciBDb25maWdJdGVtSUQgaXMgbm90IGNvcnJlY3QhIiwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgQERlbGV0ZWRDb25maWdJdGVtSURzOwoKICAgICMgc3RhcnQgQ29uZmlnSXRlbSBsb29wCiAgICBDT05GSUdJVEVNOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CgogICAgICAgICMgY2hlY2sgY3JlYXRlIHBlcm1pc3Npb25zCiAgICAgICAgbXkgJFBlcm1pc3Npb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICAgICBUeXBlICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFBlcm1pc3Npb24gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uQWNjZXNzRGVuaWVkIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ2FuIG5vdCBkZWxldGUgY29uZmlndXJhdGlvbiBpdGVtISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSB0aGUgY29uZmlnaXRlbQogICAgICAgIG15ICREZWxldGVTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRGVsZXRlU3VjY2VzcyApIHsKCiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgPSAnQ291bGQgbm90IGRlbGV0ZSBDb25maWdJdGVtIElEICcgLiAkQ29uZmlnSXRlbUlECiAgICAgICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1EZWxldGU6OlJ1bigpJzsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uRGVsZXRlRXJyb3IiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiAkRXJyb3JNZXNzYWdlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHB1c2ggQERlbGV0ZWRDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwoKICAgIH0gICAgIyBmaW5pc2ggQ29uZmlnSXRlbSBsb29wCgogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCBcQERlbGV0ZWRDb25maWdJdGVtSURzICkgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IGRlbGV0ZSBDb25maWdJdGVtcyEnLAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBcQERlbGV0ZWRDb25maWdJdGVtSURzLAogICAgICAgIH0sCiAgICB9Owp9CgoxOwo=</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemGet.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtR2V0OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb24pOwoKIyBjb3JlIG1vZHVsZXMKdXNlIE1JTUU6OkJhc2U2NDsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtR2V0IC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWd1cmF0aW9uIEl0ZW0gR2V0IE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbi0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERlYnVnZ2VyT2JqZWN0IFdlYnNlcnZpY2VJRCApKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgICRTZWxmLT57T3BlcmF0aW9uTmFtZX0gPSAnQ29uZmlnSXRlbUdldCc7CgogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1HZXQnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBSdW4oKQoKcGVyZm9ybSBDb25maWdJdGVtR2V0IE9wZXJhdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBhYmxlIHRvIHJldHVybgpvbmUgb3IgbW9yZSBDb25maWdJdGVtIGVudHJpZXMgaW4gb25lIGNhbGwuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgVXNlckxvZ2luICAgICAgICAgPT4gJ3NvbWUgYWdlbnQgbG9naW4nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFVzZXJMb2dpbiBvciBTZXNzaW9uSUQgaXMKICAgICAgICAgICAgU2Vzc2lvbklEICAgICAgICAgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgcmVxdWlyZWQKICAgICAgICAgICAgUGFzc3dvcmQgICAgICAgICAgPT4gJ3NvbWUgcGFzc3dvcmQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIFVzZXJMb2dpbiBpcyBzZW50IHRoZW4gUGFzc3dvcmQgaXMgcmVxdWlyZWQKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgPT4gJzMyLDMzJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcXVpcmVkLCBjb3VsZCBiZSBjb21hIHNlcGFyYXRlZCBJRHMgb3IgYW4gQXJyYXkKICAgICAgICAgICAgQXR0YWNobWVudHMgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsLCAxIGFzIGRlZmF1bHQuIElmIGl0J3Mgc2V0IHdpdGggdGhlIHZhbHVlIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhdHRhY2htZW50cyBmb3IgYXJ0aWNsZXMgd2lsbCBiZSBpbmNsdWRlZCBvbiBDb25maWdJdGVtIGRhdGEKICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gY2FzZSBvZiBhbiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gWwogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgPT4gJzIwMTAxMDI3MDAwMDAxJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgPT4gMTIzLAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICA9PiAnc29tZSBuYW1lJywKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgPT4gJ3NvbWUgY2xhc3MnLAogICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCAgICAgICAgICA9PiAxMjMsCiAgICAgICAgICAgICAgICAgICAgTGFzdFZlcnNpb25JRCAgICAgID0+IDEyMywKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgPT4gMTIzLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICA9PiAnc29tZSBpbmNpZGVudCBzdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICAgID0+ICdzb21lIGluY2lkZW50IHN0YXRlIHR5cGUnLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICA9PiAnc29tZSBkZXBsb3ltZW50IHN0YXRlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgICAgPT4gJ3NvbWUgZGVwbG95bWVudCBzdGF0ZSB0eXBlJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgICAgPT4gJ3NvbWUgaW5jaWRlbnQgc3RhdGUnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgICA9PiAnc29tZSBpbmNpZGVudCBzdGF0ZSB0eXBlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgICAgPT4gJ3NvbWUgZGVwbG95bWVudCBzdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSAgID0+ICdzb21lIGRlcGxveW1lbnQgc3RhdGUgdHlwZScsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICAgICAgID0+ICcyMDEwLTEwLTI3IDIwOjE1OjAwJwogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWUgID0+ICRWYWx1ZSwKCiAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgICA9PiAieHh4eCIsICAgICAjIGFjdHVhbCBhdHRhY2htZW50IGNvbnRlbnRzLCBiYXNlNjQgZW5jb25kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICA9PiAiYXBwbGljYXRpb24vcGRmIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICAgICAgICA9PiAiU3RkQXR0YWNobWVudC1UZXN0MS5wZGYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZXNpemUgICAgICAgICAgID0+ICI0LjYgS0J5dGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWZlcmVuY2VzICAgICAgICA9PiAkUHJlZmVyZW5jZXNIYXNoUmVmLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICMgLiAuIC4KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAjIC4gLiAuCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRSZXN1bHQgPSAkU2VsZi0+SW5pdCgKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgKTsKCiAgICBpZiAoICEkUmVzdWx0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1dlYnNlcnZpY2UuSW52YWxpZENvbmZpZ3VyYXRpb24nLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAoJFVzZXJJRCkgPSAkU2VsZi0+QXV0aCgKICAgICAgICAlUGFyYW0KICAgICk7CgogICAgaWYgKCAhJFVzZXJJRCApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uQXV0aEZhaWwiLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IEF1dGhvcml6YXRpb24gZmFpbGluZyEiLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9LT57JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06ICROZWVkZWQgcGFyYW1ldGVyIGlzIG1pc3NpbmchIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBteSAkRXJyb3JNZXNzYWdlID0gJyc7CgogICAgIyBhbGwgbmVlZGVkIHZhcmlhYmxlcwogICAgbXkgQENvbmZpZ0l0ZW1JRHM7CiAgICBpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gKSApIHsKICAgICAgICBAQ29uZmlnSXRlbUlEcyA9IHNwbGl0KCAvLC8sICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gKTsKICAgIH0KICAgIGVsc2lmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9ICkgKSB7CiAgICAgICAgQENvbmZpZ0l0ZW1JRHMgPSBAeyAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9IH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uV3JvbmdTdHJ1Y3R1cmUiLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IFN0cnVjdHVyZSBmb3IgQ29uZmlnSXRlbUlEIGlzIG5vdCBjb3JyZWN0ISIsCiAgICAgICAgKTsKICAgIH0KICAgIG15ICRBdHRhY2htZW50cyA9ICRQYXJhbXtEYXRhfS0+e0F0dGFjaG1lbnRzfSB8fCAwOwogICAgbXkgJFJldHVybkRhdGEgID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07CgogICAgbXkgQEl0ZW07CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIHN0YXJ0IENvbmZpZ0l0ZW0gbG9vcAogICAgQ09ORklHSVRFTToKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewoKICAgICAgICAjIGNoZWNrIGNyZWF0ZSBwZXJtaXNzaW9ucwogICAgICAgIG15ICRQZXJtaXNzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgVHlwZSAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICk7CgogICAgICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkFjY2Vzc0RlbmllZCIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENhbiBub3QgZ2V0IGNvbmZpZ3VyYXRpb24gaXRlbSEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIENvbmZpZ0l0ZW0gZW50cnkKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRDb25maWdJdGVtKSApIHsKCiAgICAgICAgICAgICRFcnJvck1lc3NhZ2UgPSAnQ291bGQgbm90IGdldCBDb25maWdJdGVtIGRhdGEnCiAgICAgICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1HZXQ6OlJ1bigpJzsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06ICRFcnJvck1lc3NhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyByZW1vdmUgdW5uZWVkZWQgaXRlbXMKICAgICAgICBkZWxldGUgJENvbmZpZ0l0ZW0tPntDbGFzc0lEfTsKICAgICAgICBkZWxldGUgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGVJRH07CiAgICAgICAgZGVsZXRlICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlSUR9OwogICAgICAgIGRlbGV0ZSAkQ29uZmlnSXRlbS0+e0RlcGxTdGF0ZUlEfTsKICAgICAgICBkZWxldGUgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGVJRH07CiAgICAgICAgZGVsZXRlICRDb25maWdJdGVtLT57RGVmaW5pdGlvbklEfTsKCiAgICAgICAgIyBzZXQgQ29uZmlnSXRlbSBlbnRyeSBkYXRhCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1CdW5kbGUgPSAkQ29uZmlnSXRlbTsKCiAgICAgICAgaWYgKCRBdHRhY2htZW50cykgewoKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnREZXRhaWxzOwogICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgISRGaWxlbmFtZTsKCiAgICAgICAgICAgICAgICBteSAkQXR0YWNobWVudCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIG5leHQgaWYgbm90IGF0dGFjaG1lbnQKICAgICAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEF0dGFjaG1lbnQpOwoKICAgICAgICAgICAgICAgICMgY29udmVydCBjb250ZW50IHRvIGJhc2U2NAogICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPntDb250ZW50fSA9IGVuY29kZV9iYXNlNjQoICRBdHRhY2htZW50LT57Q29udGVudH0gKTsKICAgICAgICAgICAgICAgIHB1c2ggQEF0dGFjaG1lbnREZXRhaWxzLCAkQXR0YWNobWVudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgQ29uZmlnSXRlbSBlbnRyeSBkYXRhCiAgICAgICAgICAgICRDb25maWdJdGVtQnVuZGxlLT57QXR0YWNobWVudH0gPSAnJzsKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoIFxAQXR0YWNobWVudERldGFpbHMgKSApIHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtQnVuZGxlLT57QXR0YWNobWVudH0gPSBcQEF0dGFjaG1lbnREZXRhaWxzOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZAogICAgICAgIHB1c2ggQEl0ZW0sICRDb25maWdJdGVtQnVuZGxlOwoKICAgIH0gICAgIyBmaW5pc2ggQ29uZmlnSXRlbSBsb29wCgogICAgaWYgKCAhc2NhbGFyIEBJdGVtICkgewogICAgICAgICRFcnJvck1lc3NhZ2UgPSAnQ291bGQgbm90IGdldCBDb25maWdJdGVtIGRhdGEnCiAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldDo6UnVuKCknOwoKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTm9Db25maWdJdGVtRGF0YSIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogJEVycm9yTWVzc2FnZSIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNldCBDb25maWdJdGVtIGRhdGEgaW50byByZXR1cm4gc3RydWN0dXJlCiAgICAkUmV0dXJuRGF0YS0+e0RhdGF9LT57Q29uZmlnSXRlbX0gPSAnJzsKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCBcQEl0ZW0gKSApIHsKICAgICAgICAkUmV0dXJuRGF0YS0+e0RhdGF9LT57Q29uZmlnSXRlbX0gPSBcQEl0ZW07CiAgICB9CgogICAgIyByZXR1cm4gcmVzdWx0CiAgICByZXR1cm4gJFJldHVybkRhdGE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemUpsert.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtVXBzZXJ0OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb24pOwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgICBxdyhwYWlycyk7CnVzZSBTY2FsYXI6OlV0aWwgcXcocmVmdHlwZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwc2VydCAtIEdlbmVyaWNJbnRlcmZhY2UgQ29uZmlndXJhdGlvbiBJdGVtIEFkZCBhbmQgVXBkYXRlIE9wZXJhdGlvbiBiYWNrZW5kCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbi0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIE9wZXJhdGlvbiBEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e09wZXJhdGlvbk5hbWV9ID0gJ0NvbmZpZ0l0ZW1VcHNlcnQnOwoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjokU2VsZi0+e09wZXJhdGlvbk5hbWV9Iik7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUnVuKCkKCnBlcmZvcm0gQ29uZmlnSXRlbVVwc2VydCBPcGVyYXRpb24uIFRoaXMgZnVuY3Rpb24gaXMgYWJsZSB0byBhY2NlcHQKb25lIG9yIG1vcmUgQ29uZmlnSXRlbSBlbnRyaWVzIGluIG9uZSBjYWxsLgoKICAgIG15ICRSZXN1bHQgPSAkT3BlcmF0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFVzZXJMb2dpbiAgPT4gJ3NvbWUgYWdlbnQgbG9naW4nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFVzZXJMb2dpbiBvciBTZXNzaW9uSUQgaXMKICAgICAgICAgICAgU2Vzc2lvbklEICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICByZXF1aXJlZAogICAgICAgICAgICBQYXNzd29yZCAgID0+ICdzb21lIHBhc3N3b3JkJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBVc2VyTG9naW4gaXMgc2VudCB0aGVuIFBhc3N3b3JkIGlzIHJlcXVpcmVkCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gWyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcXVpcmVkCiAgICAgICAgICAgICAgICB7IC4uLiB9LAogICAgICAgICAgICAgICAgLi4uCiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gY2FzZSBvZiBhbiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICA9PiAnMjAxMDEwMjcwMDAwMDEnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICA9PiAxMjMsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICMgLiAuIC4KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFJlc3VsdCA9ICRTZWxmLT5Jbml0KAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0sCiAgICApOwoKICAgIGlmICggISRSZXN1bHQtPntTdWNjZXNzfSApIHsKICAgICAgICAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnV2Vic2VydmljZS5JbnZhbGlkQ29uZmlndXJhdGlvbicsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICgkVXNlcklEKSA9ICRTZWxmLT5BdXRoKAogICAgICAgICVQYXJhbQogICAgKTsKCiAgICBpZiAoICEkVXNlcklEICkgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5BdXRoRmFpbCIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQXV0aG9yaXphdGlvbiBmYWlsaW5nISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9LT57JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06ICROZWVkZWQgcGFyYW1ldGVyIGlzIG1pc3NpbmchIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBvcHRpb25hbCBhcnJheS9oYXNoZXMKICAgIGZvciBteSAkT3B0aW9uYWwgKHF3KER5bmFtaWNGaWVsZCBBdHRhY2htZW50KSkgewogICAgICAgIGlmICgKICAgICAgICAgICAgZGVmaW5lZCAkUGFyYW17RGF0YX0tPnskT3B0aW9uYWx9CiAgICAgICAgICAgICYmICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9LT57JE9wdGlvbmFsfSApCiAgICAgICAgICAgICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfS0+eyRPcHRpb25hbH0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9Lk1pc3NpbmdQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiAkT3B0aW9uYWwgcGFyYW1ldGVyIGlzIG1pc3Npbmcgb3Igbm90IHZhbGlkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgdHJhbnNmb3JtIHNpbmdsZSBDSXMgdG8gYW4gYXJyYXkgcmVmZXJlbmNlCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfSApICkgewogICAgICAgICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfSA9IFsgJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW19IF07CiAgICB9CgogICAgZm9yIG15ICRSZW1vdGVDSURhdGEgKCBAeyAkUGFyYW17RGF0YX17Q29uZmlnSXRlbX0gfSApIHsKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUmVtb3RlQ0lEYXRhKSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5Xcm9uZ1N0cnVjdHVyZSIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IFN0cnVjdHVyZSBmb3IgQ29uZmlnSXRlbSBpcyBub3QgY29ycmVjdCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgQFJlcXVpcmVkQXR0cmlidXRlcyA9IHF3KENsYXNzIERlcGxveW1lbnRTdGF0ZSBJbmNpZGVudFN0YXRlKTsKICAgICAgICBmb3IgbXkgJE5lZWRlZCAoIHNvcnQgQFJlcXVpcmVkQXR0cmlidXRlcyApIHsKCiAgICAgICAgICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRSZW1vdGVDSURhdGEtPnskTmVlZGVkfSApICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBOZWVkICROZWVkZWQgZm9yIGV2ZXJ5IENvbmZpZ0l0ZW0hIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgd2Vic2VydmljZSBjb25maWd1cmF0aW9uCiAgICBteSAkV2Vic2VydmljZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyktPldlYnNlcnZpY2VHZXQoCiAgICAgICAgSUQgPT4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgKTsKCiAgICAjIGdldCBvcGVyYXRpb24gY29uZmlnCiAgICBteSAkT3BlcmF0aW9uQ29uZmlnID0gJFdlYnNlcnZpY2UtPntDb25maWd9LT57UHJvdmlkZXJ9LT57T3BlcmF0aW9ufS0+eyAkU2VsZi0+e09wZXJhdGlvbn0gfTsKCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICVDSUNsYXNzTWFwcGluZyA9ICgKICAgICAgICBJbmNpZGVudFN0YXRlICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIERlcGxveW1lbnRTdGF0ZSA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBDbGFzcyAgICAgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgIyBidWlsZCBkeW5hbWljIGZpZWxkIHJlZmVyZW5jZSBhbmQgbGVucyBsb29rdXAKICAgIG15ICVERlJlZkxvb2t1cDsKICAgIG15ICVERkxlbnNMb29rdXA7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15ICREeW5hbWljRmllbGRMaXN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICkgfHwgW107CgogICAgREZDT05GSUc6CiAgICBmb3IgbXkgJERGQ29uZmlnICggJER5bmFtaWNGaWVsZExpc3QtPkAqICkgewoKICAgICAgICBuZXh0IERGQ09ORklHIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwoKICAgICAgICBpZiAoICRERkNvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0xlbnMnICkgewogICAgICAgICAgICAkREZMZW5zTG9va3VweyAkREZDb25maWctPntOYW1lfSB9ID0gJERGQ29uZmlnOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkREZDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzUmVmZXJlbmNlRmllbGQnCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJERGUmVmTG9va3VweyAkREZDb25maWctPntOYW1lfSB9ID0gJERGQ29uZmlnOwogICAgICAgIH0KICAgIH0KCiAgICAjIHN0b3JlIGR5bmFtaWMgZmllbGQgcmVmZXJlbmNlIGFuZCBsZW5zIHZhbHVlcyB0byBzZXQgdGhlbSBhZnRlciBjb25maWcgaXRlbSBhZGQgLyB1cGRhdGUKICAgIG15ICVBbGxERlNoaWZ0ZWRWYWx1ZXM7CgogICAgbXkgJUdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cDsKICAgIG15IEBDSXNIYW5kbGVkOwogICAgQ0k6CiAgICBmb3IgbXkgJFJlbW90ZUNJRGF0YSAoIEB7ICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfSB9ICkgewoKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUmVtb3RlQ0lEYXRhKSApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCByZW1vdGUgQ0kgc3RydWN0dXJlIGZvdW5kLiBTa2lwcGluZyBpdGVtLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IENJOwogICAgICAgIH0KCiAgICAgICAgbXkgJVJlcXVpcmVkQXR0cmlidXRlcyA9IG1hcCB7ICRfID0+ICRSZW1vdGVDSURhdGEtPnskX30gfSBxdyhDbGFzcyBEZXBsb3ltZW50U3RhdGUgSW5jaWRlbnRTdGF0ZSk7CgogICAgICAgICMgZ2V0IElEcyBmb3IgQ2xhc3MsIERlcGwtIGFuZCBJbmNpU3RhdGUKICAgICAgICBmb3IgbXkgJEN1cnJlbnRDSSAoIHNvcnQga2V5cyAlQ0lDbGFzc01hcHBpbmcgKSB7CgogICAgICAgICAgICAjIGNyZWF0ZS9nZXQgbG9va3VwIGZvciBnZW5lcmFsIGNhdGFsb2cgaXRlbXMKICAgICAgICAgICAgbXkgJEdlbmVyYWxDYXRhbG9nSXRlbTsKICAgICAgICAgICAgaWYgKCAkR2VuZXJhbENhdGFsb2dJdGVtTG9va3VweyAkQ0lDbGFzc01hcHBpbmd7JEN1cnJlbnRDSX0gfS0+eyAkUmVxdWlyZWRBdHRyaWJ1dGVzeyRDdXJyZW50Q0l9IH0gKSB7CiAgICAgICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dJdGVtID0gJEdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cHsgJENJQ2xhc3NNYXBwaW5neyRDdXJyZW50Q0l9IH0tPnsgJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfSB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkQ0lDbGFzc01hcHBpbmd7JEN1cnJlbnRDSX0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgIUlzSGFzaFJlZldpdGhEYXRhKCRHZW5lcmFsQ2F0YWxvZ0l0ZW0pCiAgICAgICAgICAgICAgICAgICAgfHwgIUlzU3RyaW5nV2l0aERhdGEoICRHZW5lcmFsQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9ICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHdoaWxlIGxvb2tpbmcgdXAgJEN1cnJlbnRDSSAnJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfScuIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYWRkIHRvIGxvb2t1cAogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nSXRlbUxvb2t1cHsgJENJQ2xhc3NNYXBwaW5neyRDdXJyZW50Q0l9IH0tPnsgJFJlcXVpcmVkQXR0cmlidXRlc3skQ3VycmVudENJfSB9ID0gJEdlbmVyYWxDYXRhbG9nSXRlbTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkUmVxdWlyZWRBdHRyaWJ1dGVzeyAkQ3VycmVudENJIC4gJ0lEJyB9ID0gJEdlbmVyYWxDYXRhbG9nSXRlbS0+e0l0ZW1JRH07CiAgICAgICAgfQoKICAgICAgICAjIGdldCBsYXRlc3QgZGVmaW5pdGlvbiBmb3IgdGhlIGNsYXNzCiAgICAgICAgbXkgJENsYXNzSUQgPSAkUmVtb3RlQ0lEYXRhLT57Q2xhc3NJRH07CiAgICAgICAgaWYgKCAhJENsYXNzSUQgKSB7CiAgICAgICAgICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbXkgJVJldmVyc2VDbGFzc0xpc3QgPSByZXZlcnNlICRDbGFzc0xpc3QtPiUqOwogICAgICAgICAgICAkQ2xhc3NJRCA9ICRSZXZlcnNlQ2xhc3NMaXN0eyAkUmVtb3RlQ0lEYXRhLT57Q2xhc3N9IH07CiAgICAgICAgfQogICAgICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyB2YWxpZGF0ZSBkeW5hbWljIGZpZWxkcwogICAgICAgIERBVEE6CiAgICAgICAgZm9yIG15ICREYXRhICggcGFpcnMgJFJlbW90ZUNJRGF0YS0+JSogKSB7CiAgICAgICAgICAgIG15ICggJEtleSwgJFZhbHVlICkgPSAkRGF0YS0+QCo7CgogICAgICAgICAgICBuZXh0IERBVEEgdW5sZXNzICggJEtleSA9fiAvXkR5bmFtaWNGaWVsZF8vICk7CgogICAgICAgICAgICBpZiAoICRLZXkgPX4gL15EeW5hbWljRmllbGRfKD88UGxhaW5GaWVsZE5hbWU+W0EtWmEtejAtOS1dKykvICkgewogICAgICAgICAgICAgICAgbXkgJFBsYWluRmllbGROYW1lID0gJCt7UGxhaW5GaWVsZE5hbWV9OwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgZmllbGQgaXMgaW4gY2xhc3MgZGVmaW5pdGlvbgogICAgICAgICAgICAgICAgaWYgKCAhJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyRQbGFpbkZpZWxkTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IER5bmFtaWNGaWVsZC0+TmFtZSBwYXJhbWV0ZXIgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBnZXQgZHluYW1pYyBmaWVsZCBjb25maWcKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JFBsYWluRmllbGROYW1lfTsKCiAgICAgICAgICAgICAgICAjIHZhbGlkYXRlIHZhbHVlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIyBwb3NzaWJsZSBzdHJ1Y3R1cmVzIGFyZSBzdHJpbmcgYW5kIGFycmF5LCBubyBkYXRhIGluc2lkZSBpcyBuZWVkZWQKICAgICAgICAgICAgICAgICAgICBpZiAoICFJc1N0cmluZygkVmFsdWUpICYmIHJlZiAkVmFsdWUgbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbXkgJFZhbGlkYXRlVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkZpZWxkVmFsdWVWYWxpZGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICEkVmFsaWRhdGVWYWx1ZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogRHluYW1pY0ZpZWxkLT5WYWx1ZSBwYXJhbWV0ZXIgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJElkZW50aWZpZXIgPSAkT3BlcmF0aW9uQ29uZmlnLT57ICdJZGVudGlmaWVyJyAuICRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3NJRH0gfTsKICAgICAgICBpZiAoICEkSWRlbnRpZmllciApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOb3QgaW1wb3J0aW5nIGl0ZW1zIGluIGNsYXNzICRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3N9IC0gc2tpcHBpbmcuIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ0lzSGFuZGxlZCwge307CgogICAgICAgICAgICBuZXh0IENJOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayB3aGV0aGVyIHRoaXMgaXRlbSBleGlzdHMgKHVwZGF0ZSkgb3IgaXMgbmV3IChjcmVhdGUpCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRDsKCiAgICAgICAgIyBwcmVwYXJlIHNlYXJjaAogICAgICAgIG15ICVTZWFyY2hQYXJhbSA9ICgKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgUXVlcnlDb25kaXRpb24gPT4gMCwKICAgICAgICApOwogICAgICAgIEFUVFJJQlVURToKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoICRJZGVudGlmaWVyLT5AKiApIHsKCiAgICAgICAgICAgICMgaWYgbnVtYmVyIG9yIGNvbmZpZyBpdGVtIGlkIGFyZSBkZWZpbmVkIGFzIGlkZW50aWZpZXJzLCB1c2Ugb25seSB0aGlzCiAgICAgICAgICAgIGlmICggJEF0dHJpYnV0ZSBlcSAnTnVtYmVyJyApIHsKICAgICAgICAgICAgICAgIGlmICggJFJlbW90ZUNJRGF0YS0+e051bWJlcn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRSZW1vdGVDSURhdGEtPntOdW1iZXJ9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbGFzdCBBVFRSSUJVVEU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdDb25maWdJdGVtSUQnICkgewogICAgICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFJlbW90ZUNJRGF0YS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJENvbmZpZ0l0ZW0pICkgewogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkUmVtb3RlQ0lEYXRhLT57Q29uZmlnSXRlbUlEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAnJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBsYXN0IEFUVFJJQlVURTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0NsYXNzZXMnICkgewogICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFte0NsYXNzZXN9ID0gWyAkUmVtb3RlQ0lEYXRhLT57Q2xhc3N9IF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdOYW1lJyApIHsKICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXtOYW1lfSA9ICRSZW1vdGVDSURhdGEtPntOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0RlcGxTdGF0ZXMnICkgewogICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFte0RlcGxTdGF0ZXN9ID0gWyAkUmVtb3RlQ0lEYXRhLT57RGVwbG95bWVudFN0YXRlfSBdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSA9fiAvXkR5bi8gKSB7CiAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW17JEF0dHJpYnV0ZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRSZW1vdGVDSURhdGEtPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbm5vdCB1c2UgJEF0dHJpYnV0ZSBhcyBJZGVudGlmaWVyIC0gc2tpcHBpbmcuIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBwdXNoIEBDSXNIYW5kbGVkLCB7fTsKCiAgICAgICAgICAgICAgICBuZXh0IENJOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICFkZWZpbmVkICRDb25maWdJdGVtSUQgKSB7CgogICAgICAgICAgICAjIGF2b2lkIGV4ZWN1dGluZyBhIHNlYXJjaCB3aXRoIGVtcHR5IHNlYXJjaCBwYXJhbXMgKGV4Y2x1ZGluZyAnUmVzdWx0ID0+ICJBUlJBWSInIGZyb20gbWVhbmluZ2Z1bCBwYXJhbXMpCiAgICAgICAgICAgIG15ICRQZXJmb3JtU2VhcmNoID0gMDsKICAgICAgICAgICAgU0VBUkNIUEFSQU1LRVk6CiAgICAgICAgICAgIGZvciBteSAkU2VhcmNoUGFyYW1LZXkgKCBrZXlzICVTZWFyY2hQYXJhbSApIHsKICAgICAgICAgICAgICAgIGlmICggJFNlYXJjaFBhcmFtS2V5IG5lICdSZXN1bHQnICYmICRTZWFyY2hQYXJhbXskU2VhcmNoUGFyYW1LZXl9ICkgewogICAgICAgICAgICAgICAgICAgICRQZXJmb3JtU2VhcmNoID0gMTsKCiAgICAgICAgICAgICAgICAgICAgbGFzdCBTRUFSQ0hQQVJBTUtFWTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRQZXJmb3JtU2VhcmNoKSB7CgogICAgICAgICAgICAgICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCglU2VhcmNoUGFyYW0pOwoKICAgICAgICAgICAgICAgIGlmICggc2NhbGFyIEBDb25maWdJdGVtSURzID4gMSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVycyA9IGpvaW4oICc7JywgbWFwIHsiJF8gPT4gJFNlYXJjaFBhcmFteyRffSJ9IGtleXMgJVNlYXJjaFBhcmFtICk7CgogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbm5vdCB1c2UgYW1iaWd1b3VzIHNlYXJjaCByZXN1bHQgLSBza2lwcGluZy4gUGFyYW1ldGVyczogJFNlYXJjaFBhcmFtZXRlcnM7IiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIHB1c2ggQENJc0hhbmRsZWQsIHt9OwoKICAgICAgICAgICAgICAgICAgICBuZXh0IENJOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbUlEc1swXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgICAgIG15ICRQZXJtaXNzaW9uOwogICAgICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CiAgICAgICAgICAgICRQZXJtaXNzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQZXJtaXNzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3NJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJFBlcm1pc3Npb24gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uQWNjZXNzRGVuaWVkIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ2FuIG5vdCB3cml0ZSBjb25maWd1cmF0aW9uIGl0ZW0hIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggISRDb25maWdJdGVtSUQgJiYgISRSZW1vdGVDSURhdGEtPntOYW1lfSApIHsKICAgICAgICAgICAgbXkgJE5vdGljZUluZm8gPSAkUmVtb3RlQ0lEYXRhLT57TnVtYmVyfSA/ICJOdW1iZXI6ICRSZW1vdGVDSURhdGEtPntOdW1iZXJ9OyIgOiAnJzsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTWlzc2luZyAnTmFtZScgcGFyYW1ldGVyIGZvciBjcmVhdGluZyBhIENJLiBTa2lwcGluZyBpdGVtLiAkTm90aWNlSW5mbyIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENJc0hhbmRsZWQsIHt9OwoKICAgICAgICAgICAgbmV4dCBDSTsKICAgICAgICB9CgogICAgICAgIG15IEBBdHRhY2htZW50TGlzdDsKICAgICAgICBpZiAoIGRlZmluZWQgJFJlbW90ZUNJRGF0YS0+e0F0dGFjaG1lbnR9ICkgewoKICAgICAgICAgICAgIyBpc29sYXRlIEF0dGFjaG1lbnQgcGFyYW1ldGVyCiAgICAgICAgICAgIG15ICRBdHRhY2htZW50ID0gJFJlbW90ZUNJRGF0YS0+e0F0dGFjaG1lbnR9OwoKICAgICAgICAgICAgIyBob21vZ2VuYXRlIGlucHV0IHRvIGFycmF5CiAgICAgICAgICAgIGlmICggcmVmICRBdHRhY2htZW50IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQEF0dGFjaG1lbnRMaXN0LCAkQXR0YWNobWVudDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIEBBdHRhY2htZW50TGlzdCA9IEB7JEF0dGFjaG1lbnR9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIEF0dGFjaG1lbnQgaW50ZXJuYWwgc3RydWN0dXJlCiAgICAgICAgICAgIGZvciBteSAkQXR0YWNobWVudEl0ZW0gKEBBdHRhY2htZW50TGlzdCkgewogICAgICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJEF0dGFjaG1lbnRJdGVtKSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkF0dGFjaG1lbnQgcGFyYW1ldGVyIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcwogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJEF0dGFjaG1lbnRJdGVtLT4lKiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICFyZWZ0eXBlICRBdHRhY2htZW50SXRlbS0+eyRBdHRyaWJ1dGV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgI3JlbW92ZSBsZWFkaW5nIHNwYWNlcwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudEl0ZW0tPnskQXR0cmlidXRlfSA9fiBze1xBXHMrfXt9OwoKICAgICAgICAgICAgICAgICAgICAgICAgI3JlbW92ZSB0cmFpbGluZyBzcGFjZXMKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnRJdGVtLT57JEF0dHJpYnV0ZX0gPX4gc3tccytcen17fTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjaGVjayBBdHRhY2htZW50IGF0dHJpYnV0ZSB2YWx1ZXMKICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50Q2hlY2sgPSAkU2VsZi0+X0NoZWNrQXR0YWNobWVudCgKICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+ICRBdHRhY2htZW50SXRlbSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAhJEF0dGFjaG1lbnRDaGVjay0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoICV7JEF0dGFjaG1lbnRDaGVja30gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBzaGlmdCBkeW5hbWljIGZpZWxkIHJlZmVyZW5jZSBhbmQgbGVucyB2YWx1ZXMgZnJvbSBjb25maWdpdGVtIGRhdGEgdG8gc2V0IHRoZW0gYWZ0ZXJ3YXJkcwogICAgICAgIG15ICVERlNoaWZ0ZWRWYWx1ZXM7CiAgICAgICAgREZOQU1FOgogICAgICAgIGZvciBteSAkREZOYW1lICgga2V5cyAlREZSZWZMb29rdXAsIGtleXMgJURGTGVuc0xvb2t1cCApIHsKCiAgICAgICAgICAgIG5leHQgREZOQU1FIHVubGVzcyBkZWZpbmVkICRSZW1vdGVDSURhdGEtPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKCiAgICAgICAgICAgICRERlNoaWZ0ZWRWYWx1ZXN7JERGTmFtZX0gPSBkZWxldGUgJFJlbW90ZUNJRGF0YS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRDb25maWdJdGVtSUQpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICRSZW1vdGVDSURhdGEtPiUqLAogICAgICAgICAgICAgICAgJVJlcXVpcmVkQXR0cmlidXRlcywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICA9PiAkUmVxdWlyZWRBdHRyaWJ1dGVze0RlcGxveW1lbnRTdGF0ZUlEfSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7SW5jaWRlbnRTdGF0ZUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICBFeHRlcm5hbFNvdXJjZSA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiRXJyb3Igd2hpbGUgdXBkYXRpbmcgQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSUQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgICRSZW1vdGVDSURhdGEtPiUqLAogICAgICAgICAgICAgICAgJVJlcXVpcmVkQXR0cmlidXRlcywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7RGVwbG95bWVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3tJbmNpZGVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5FcnJvcigKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHdoaWxlIGNyZWF0aW5nIENJIHdpdGggTmFtZSAnJFJlcXVpcmVkQXR0cmlidXRlc3tOYW1lfScsIENsYXNzICckUmVxdWlyZWRBdHRyaWJ1dGVze0NsYXNzfScgKENsYXNzSUQ6ICckUmVxdWlyZWRBdHRyaWJ1dGVze0NsYXNzSUR9JykuIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRBbGxERlNoaWZ0ZWRWYWx1ZXN7JENvbmZpZ0l0ZW1JRH0gPSBcJURGU2hpZnRlZFZhbHVlczsKCiAgICAgICAgIyBoYW5kbGUgY29uZmlnIGl0ZW0gYXR0YWNobWVudHMKICAgICAgICBpZiAoQEF0dGFjaG1lbnRMaXN0KSB7CgogICAgICAgICAgICBteSBARXhpc3RpbmdBdHRhY2htZW50cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CiAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICEkRGVsZXRlU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciB3aGlsZSBkZWxldGluZyBleGlzdGluZyBhdHRhY2htZW50IHdpdGggTmFtZSAnJEZpbGVuYW1lJyBmb3IgQ29uZmlnSXRlbSBJRCAkQ29uZmlnSXRlbUlELiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudExpc3QpIHsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSBhbGwgY29uZmlnIGl0ZW0gYXR0YWNobWVudHMKCiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudC0+JSosCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHdoaWxlIGFkZGluZyBhdHRhY2htZW50IHdpdGggTmFtZSAnJEF0dGFjaG1lbnQtPntGaWxlbmFtZX0nIGZvciBDb25maWdJdGVtIElEICRDb25maWdJdGVtSUQuIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBDSXNIYW5kbGVkLCB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFJlbW90ZUNJRGF0YS0+e05hbWV9LAogICAgICAgIH07CiAgICB9CgogICAgIyBzZXQgZHluYW1pYyBmaWVsZCByZWZlcmVuY2UgYW5kIGxlbnMgdmFsdWVzIGFmdGVyIGFkZGluZyAvIHVwZGF0aW5nIGFsbCBjb25maWcgaXRlbXMKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ0lERlBhaXIgKCBwYWlycyAlQWxsREZTaGlmdGVkVmFsdWVzICkgewoKICAgICAgICBteSAoICRDb25maWdJdGVtSUQsICRERlZhbHVlcyApID0gJENJREZQYWlyLT5AKjsKCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRERlZhbHVlcyk7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEgZm9yIHZlcnNpb24gaWQKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIGZpcnN0LCBzZXQgZHluYW1pYyBmaWVsZCByZWZlcmVuY2UgdmFsdWVzCiAgICAgICAgREZSRUY6CiAgICAgICAgZm9yIG15ICRERlJlZk5hbWUgKCBrZXlzICVERlJlZkxvb2t1cCApIHsKCiAgICAgICAgICAgIG5leHQgREZSRUYgdW5sZXNzIGV4aXN0cyAkREZWYWx1ZXMtPnskREZSZWZOYW1lfTsKCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRERlJlZkxvb2t1cHskREZSZWZOYW1lfSwKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJERGVmFsdWVzLT57JERGUmVmTmFtZX0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZWNvbmQsIHNldCBkeW5hbWljIGZpZWxkIGxlbnMgdmFsdWVzCiAgICAgICAgREZMRU5TOgogICAgICAgIGZvciBteSAkREZMZW5zTmFtZSAoIGtleXMgJURGTGVuc0xvb2t1cCApIHsKCiAgICAgICAgICAgIG5leHQgREZMRU5TIHVubGVzcyBleGlzdHMgJERGVmFsdWVzLT57JERGTGVuc05hbWV9OwoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJERGTGVuc0xvb2t1cHskREZMZW5zTmFtZX0sCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRERlZhbHVlcy0+eyRERkxlbnNOYW1lfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4geyBDb25maWdJdGVtID0+IFxAQ0lzSGFuZGxlZCB9LAogICAgfTsKfQoKMTsK</File>
        <File Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtU2VhcmNoOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb24pOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtU2VhcmNoIC0gR2VuZXJpY0ludGVyZmFjZSBDb25maWdJdGVtIENvbmZpZ0l0ZW1TZWFyY2ggT3BlcmF0aW9uIGJhY2tlbmQKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCnVzdWFsbHksIHlvdSB3YW50IHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGlzCmJ5IHVzaW5nIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uLT5uZXcoKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkTmVlZGVkIChxdyhEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBmb3IgdGhpcyBzY3JlZW4KICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtU2VhcmNoJyk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUnVuKCkKCnBlcmZvcm0gQ29uZmlnSXRlbVNlYXJjaCBPcGVyYXRpb24uIFRoaXMgd2lsbCByZXR1cm4gYSBDb25maWdJdGVtIElEIGxpc3QuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBVc2VyTG9naW4gPT4gJ3NvbWUgYWdlbnQgbG9naW4nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2VyTG9naW4gb3IgU2Vzc2lvbklEIGlzCiAgICAgICAgUGFzc3dvcmQgID0+ICdzb21lIHBhc3N3b3JkJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgVXNlckxvZ2luIGlzIHNlbnQgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUGFzc3dvcmQgaXMgcmVxdWlyZWQKCiAgICAgICAgIyBsaW1pdCB0aGUgbnVtYmVyIG9mIGZvdW5kIGNvbmZpZyBpdGVtcyAob3B0aW9uYWwsIGRlZmF1bHQgaXMgMTAwMDApCiAgICAgICAgTGltaXQgPT4gMTAwLAoKICAgICAgICAjIFVzZSBDb25maWdJdGVtU2VhcmNoIGFzIGEgY29uZmlnIGl0ZW0gZmlsdGVyIG9uIGEgc2luZ2xlIGNvbmZpZyBpdGVtLAogICAgICAgICMgb3IgYSBwcmVkZWZpbmVkIGNvbmZpZyBpdGVtIGxpc3QKICAgICAgICBDb25maWdJdGVtSUQgICAgID0+IDEyMzQsCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICA9PiBbMTIzNCwgMTIzNV0sCgogICAgICAgICMgY29uZmlnIGl0ZW0gbnVtYmVyIChvcHRpb25hbCkgYXMgU1RSSU5HIG9yIGFzIEFSUkFZUkVGCiAgICAgICAgIyBUaGUgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgU1FMIHF1ZXJ5IGV4cHJlc3Npb24uCiAgICAgICAgTnVtYmVyID0+ICclMTIzNTQ2JScsCiAgICAgICAgTnVtYmVyID0+IFsnJTEyMzU0NiUnLCAnJTEyMzY2NiUnXSwKCiAgICAgICAgIyBjb25maWcgaXRlbSBuYW1lIChvcHRpb25hbCkgYXMgU1RSSU5HIG9yIGFzIEFSUkFZUkVGCiAgICAgICAgIyBUaGUgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgU1FMIHF1ZXJ5IGV4cHJlc3Npb24uCiAgICAgICAgIyBXaGVuIENvbmRpdGlvbklubGluZSBpcyBzZXQgdGhlbiByZW1haW5pbmcgd2hpdGVzcGFjZSB3aWxsIGJlIHRyZWF0ZWQgYXMgYSAmJiBjb25kaXRpb24gYW5kCiAgICAgICAgIyBhbmQgdGhlIHNldHRpbmdzIG9mIENvbnRlbnRTZWFyY2hQcmVmaXggYW5kIENvbnRlbnRTZWFyY2hTdWZmaXggd2lsbCBiZSBob25vcmVkLgogICAgICAgIE5hbWUgPT4gJyVTb21lVGV4dCUnLAogICAgICAgIE5hbWUgPT4gWyclU29tZVRlc3QxJScsICclU29tZVRlc3QyJSddLAoKICAgICAgICBDbGFzc2VzICAgICAgICAgPT4gWydDb21wdXRlcicsICdOZXR3b3JrJ10gICAjIChvcHRpb25hbCkKICAgICAgICBDbGFzc0lEcyAgICAgICAgPT4gWzksIDgsIDcsIDZdLCAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgRGVwbFN0YXRlcyAgICAgID0+IFsnUHJvZHVjdGlvbiddICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRGVwbFN0YXRlSURzICAgID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIEN1ckRlcGxTdGF0ZXMgICA9PiBbJ1Byb2R1Y3Rpb24nXSAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEN1ckRlcGxTdGF0ZUlEcyA9PiBbMSwgMiwgMywgNF0sICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICBJbmNpU3RhdGVzICAgICAgPT4gWydXYXJuaW5nJ10gICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJbmNpU3RhdGVJRHMgICAgPT4gWzEsIDIsIDMsIDRdLCAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgQ3VySW5jaVN0YXRlcyAgID0+IFsnV2FybmluZyddICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQ3VySW5jaVN0YXRlSURzID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIENyZWF0ZUJ5ICAgICAgICA9PiBbMSwgMiwgM10sICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIENoYW5nZUJ5ICAgICAgICA9PiBbMywgMiwgMV0sICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAjIER5bmFtaWNGaWVsZHMKICAgICAgICAjICAgQXQgbGVhc3Qgb25lIG9wZXJhdG9yIG11c3QgYmUgc3BlY2lmaWVkLiBPcGVyYXRvcnMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCBBTkQsCiAgICAgICAgIyAgICAgICB2YWx1ZXMgaW4gYW4gb3BlcmF0b3Igd2l0aCBPUi4KICAgICAgICAjICAgWW91IGNhbiBhbHNvIHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byBhbiBvcGVyYXRvcjogWyd2YWx1ZTEnLCAndmFsdWUyJ10KICAgICAgICBEeW5hbWljRmllbGRfRmllbGROYW1lWCA9PiB7CiAgICAgICAgICAgIEVtcHR5ICAgICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAjIHdpbGwgcmV0dXJuIGR5bmFtaWMgZmllbGRzIHdpdGhvdXQgYSB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICAgc2V0IHRvIDAgdG8gc2VhcmNoIGZpZWxkcyB3aXRoIGEgdmFsdWUgcHJlc2VudC4KICAgICAgICAgICAgRXF1YWxzICAgICAgICAgICAgPT4gMTIzLAogICAgICAgICAgICBMaWtlICAgICAgICAgICAgICA9PiAndmFsdWUqJywgICAgICAgICAgICAgICAgIyAiZXF1YWxzIiBvcGVyYXRvciB3aXRoIHdpbGRjYXJkIHN1cHBvcnQKICAgICAgICAgICAgR3JlYXRlclRoYW4gICAgICAgPT4gJzIwMDEtMDEtMDEgMDE6MDE6MDEnLAogICAgICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiAnMjAwMS0wMS0wMSAwMTowMTowMScsCiAgICAgICAgICAgIFNtYWxsZXJUaGFuICAgICAgID0+ICcyMDAyLTAyLTAyIDAyOjAyOjAyJywKICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gJzIwMDItMDItMDIgMDI6MDI6MDInLAogICAgICAgIH0sCgogICAgICAgICMgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChjb25maWcgaXRlbSBvbGRlciB0aGFuIDYwIG1pbnV0ZXMpICAob3B0aW9uYWwpCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBjb25maWcgaXRlbXMgY3JlYXRlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChjb25maWcgaXRlbSBuZXdlciB0aGFuIDEyMCBtaW51dGVzKSAob3B0aW9uYWwpCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNyZWF0ZSB0aW1lIGFmdGVyIC4uLiAoY29uZmlnIGl0ZW0gbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAwNi0wMS0wOSAwMDowMDowMScsCiAgICAgICAgIyBjb25maWcgaXRlbXMgd2l0aCBjcmVhdGVkIHRpbWUgYmVmb3JlIC4uLiAoY29uZmlnIGl0ZW0gb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAwNi0wMS0xOSAyMzo1OTo1OScsCgogICAgICAgICMgY29uZmlnIGl0ZW1zIGNoYW5nZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBjb25maWcgaXRlbXMgY2hhbmdlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNoYW5nZWQgdGltZSBhZnRlciAuLi4gKGNvbmZpZyBpdGVtIGNoYW5nZWQgbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMDYtMDEtMDkgMDA6MDA6MDEnLAogICAgICAgICMgY29uZmlnIGl0ZW1zIHdpdGggY2hhbmdlZCB0aW1lIGJlZm9yZSAuLi4gKGNvbmZpZyBpdGVtIGNoYW5nZWQgb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMDYtMDEtMTkgMjM6NTk6NTknLAoKICAgICAgICAjIE9yZGVyQnkgYW5kIFNvcnRCeSAob3B0aW9uYWwpCiAgICAgICAgT3JkZXJCeSA9PiAnRG93bicsICAgIyBEb3dufFVwCiAgICAgICAgU29ydEJ5ICA9PiAnTnVtYmVyJywgIyBDb25maWdJdGVtfE51bWJlcnxOYW1lfERlcGxTdGF0ZXxJbmNpU3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHxDdXJEZXBsU3RhdGV8Q3VySW5jaVN0YXRlfEFnZXxDcmVhdGVkfENoYW5nZWQKCiAgICAgICAgIyBPcmRlckJ5IGFuZCBTb3J0QnkgYXMgQVJSQVkgZm9yIHN1YiBzb3J0aW5nIChvcHRpb25hbCkKICAgICAgICBPcmRlckJ5ID0+IFsnRG93bicsICdVcCddLAogICAgICAgIFNvcnRCeSAgPT4gWydDb25maWdJdGVtJywgJ051bWJlciddLAogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDAgb3IgMQogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJbiBjYXNlIG9mIGFuIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlc3VsdCBkYXRhIHBheWxvYWQgYWZ0ZXIgT3BlcmF0aW9uCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBbIDEsIDIsIDMsIDQgXSwKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVzdWx0ID0gJFNlbGYtPkluaXQoCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRTZWxmLT57V2Vic2VydmljZUlEfSwKICAgICk7CgogICAgaWYgKCAhJFJlc3VsdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdXZWJzZXJ2aWNlLkludmFsaWRDb25maWd1cmF0aW9uJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICk7CiAgICB9CgogICAgIyBhdXRoZW50aWNhdGUgdXNlcgogICAgbXkgKCRVc2VySUQpID0gJFNlbGYtPkF1dGgoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCiAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaC5BdXRoRmFpbCcsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJDb25maWdJdGVtU2VhcmNoOiBBdXRob3JpemF0aW9uIGZhaWxpbmchIiwKICAgICkgaWYgISRVc2VySUQ7CgogICAgIyBhbGwgbmVlZGVkIHZhcmlhYmxlcwogICAgJFNlbGYtPntTZWFyY2hMaW1pdH0gPSAkUGFyYW17RGF0YX0tPntMaW1pdH0KICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hMaW1pdH0KICAgICAgICB8fCA1MDA7CiAgICAkU2VsZi0+e1NvcnRCeX0gPSAkUGFyYW17RGF0YX0tPntTb3J0Qnl9CiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0FnZSc7CiAgICAkU2VsZi0+e09yZGVyQnl9ID0gJFBhcmFte0RhdGF9LT57T3JkZXJCeX0KICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKCiAgICAjIGdldCBwYXJhbWV0ZXIgZnJvbSBkYXRhCiAgICBteSAlR2V0UGFyYW0gPSAkU2VsZi0+X0dldFBhcmFtcyggJXsgJFBhcmFte0RhdGF9IH0gKTsKCiAgICAjIGdldCBkeW5hbWljIGZpZWxkcwogICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMgPSAkU2VsZi0+X0dldER5bmFtaWNGaWVsZHMoICV7ICRQYXJhbXtEYXRhfSB9ICk7CgogICAgIyBwZXJmb3JtIGNvbmZpZ2l0ZW0gc2VhcmNoCiAgICBteSBAQ29uZmlnSXRlbUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICBSZXN1bHQgICAgID0+ICdBUlJBWScsCiAgICAgICAgU29ydEJ5ICAgICA9PiAkU2VsZi0+e1NvcnRCeX0sCiAgICAgICAgT3JkZXJCeSAgICA9PiAkU2VsZi0+e09yZGVyQnl9LAogICAgICAgIExpbWl0ICAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgUGVybWlzc2lvbiA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICApOwogICAgaWYgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBcQENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIHJldHVybiByZXN1bHQKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4ge30sCiAgICB9OwoKfQoKPWhlYWQxIElOVEVSTkFMIElOVEVSRkFDRQoKPWhlYWQyIF9HZXRQYXJhbXMoKQoKZ2V0IHNlYXJjaCBwYXJhbWV0ZXJzLgoKICAgIG15ICVHZXRQYXJhbSA9IF9HZXRQYXJhbXMoCiAgICAgICAgJVBhcmFtcywgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsIGNvbmZpZ2l0ZW0gcGFyYW1ldGVycwogICAgKTsKCiAgICByZXR1cm5zOgoKICAgICVHZXRQYXJhbSA9IHsKICAgICAgICBBbGxvd2VkUGFyYW1zID0+ICdXaXRoQ29udGVudCcsICMgcmV0dXJuIG5vdCBlbXB0eSBwYXJhbWV0ZXJzIGZvciBzZWFyY2gKICAgIH0KCj1jdXQKCnN1YiBfR2V0UGFyYW1zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgc2luZ2xlIHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwoKICAgICMgZ2V0IGFycmF5IHBhcmFtcwogICAgZm9yIG15ICRJdGVtICgKICAgICAgICBxdyhDb25maWdJdGVtSUQgTnVtYmVyIE5hbWUgQ2xhc3NlcyBDbGFzc0lEcyBEZXBsU3RhdGVzIERlcGxTdGF0ZUlEcwogICAgICAgIEN1ckRlcGxTdGF0ZXMgQ3VyRGVwbFN0YXRlSURzIEluY2lTdGF0ZXMgSW5jaVN0YXRlSURzIEN1ckluY2lTdGF0ZXMKICAgICAgICBDdXJJbmNpU3RhdGVJRHMgQ3JlYXRlQnkgQ2hhbmdlQnkgT3JkZXJCeSBTb3J0QnkpCiAgICAgICAgKQogICAgewoKICAgICAgICAjIGdldCBzZWFyY2ggYXJyYXkgcGFyYW1zCiAgICAgICAgbXkgQFZhbHVlczsKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFteyRJdGVtfSApICkgewogICAgICAgICAgICBAVmFsdWVzID0gQHsgJFBhcmFteyRJdGVtfSB9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXskSXRlbX0gKSApIHsKICAgICAgICAgICAgQFZhbHVlcyA9ICggJFBhcmFteyRJdGVtfSApOwogICAgICAgIH0KICAgICAgICAkR2V0UGFyYW17JEl0ZW19ID0gXEBWYWx1ZXMgaWYgc2NhbGFyIEBWYWx1ZXM7CiAgICB9CgogICAgbXkgQFByZWZpeGVzID0gKAogICAgICAgICdDb25maWdJdGVtQ3JlYXRlVGltZScsCiAgICAgICAgJ0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZScsCiAgICApOwoKICAgIG15IEBQb3N0Zml4ZXMgPSAoCiAgICAgICAgJ09sZGVyTWludXRlcycsCiAgICAgICAgJ05ld2VyTWludXRlcycsCiAgICAgICAgJ09sZGVyRGF0ZScsCiAgICAgICAgJ05ld2VyRGF0ZScsCiAgICApOwoKICAgIGZvciBteSAkUHJlZml4IChAUHJlZml4ZXMpIHsKCiAgICAgICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFteyRQcmVmaXh9ICkgKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXskUHJlZml4fSA9ICRQYXJhbXskUHJlZml4fTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlIHNwYWNlIG9uIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAgICRHZXRQYXJhbXskUHJlZml4fSA9fiBzL1xzKyQvL2c7CiAgICAgICAgICAgICRHZXRQYXJhbXskUHJlZml4fSA9fiBzL15ccysvL2c7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFBvc3RmaXggKEBQb3N0Zml4ZXMpIHsKICAgICAgICAgICAgbXkgJEl0ZW0gPSAkUHJlZml4IC4gJFBvc3RmaXg7CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggc3RyaW5nIHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFteyRJdGVtfSApICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRJdGVtfSA9ICRQYXJhbXskSXRlbX07CgogICAgICAgICAgICAgICAgIyByZW1vdmUgd2hpdGUgc3BhY2Ugb24gdGhlIHN0YXJ0IGFuZCBlbmQKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskSXRlbX0gPX4gcy9ccyskLy9nOwogICAgICAgICAgICAgICAgJEdldFBhcmFteyRJdGVtfSA9fiBzL15ccysvL2c7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICVHZXRQYXJhbTsKCn0KCj1oZWFkMiBfR2V0RHluYW1pY0ZpZWxkcygpCgpnZXQgc2VhcmNoIHBhcmFtZXRlcnMuCgogICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMgPSBfR2V0RHluYW1pY0ZpZWxkcygKICAgICAgICAlUGFyYW1zLCAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGwgY29uZmlnaXRlbSBwYXJhbWV0ZXJzCiAgICApOwoKICAgIHJldHVybnM6CgogICAgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMgPSB7CiAgICAgICAgJ0FsbEFsbG93ZWRERicgPT4gJ1dpdGhEYXRhJywgICAjIHJldHVybiBub3QgZW1wdHkgcGFyYW1ldGVycyBmb3Igc2VhcmNoCiAgICB9Cgo9Y3V0CgpzdWIgX0dldER5bmFtaWNGaWVsZHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGR5bmFtaWMgZmllbGRzIHNlYXJjaCBwYXJhbWV0ZXJzIGZvciBjb25maWdpdGVtIHNlYXJjaAogICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnM7CgogICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciBjb25maWdpdGVtIG9iamVjdAogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICk7CgogICAgbXkgJUR5bmFtaWNGaWVsZHNSYXc7CiAgICBpZiAoICRQYXJhbXtEeW5hbWljRmllbGR9ICkgewogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtEeW5hbWljRmllbGR9ICkgKSB7CiAgICAgICAgICAgICREeW5hbWljRmllbGRzUmF3eyAkUGFyYW17RHluYW1pY0ZpZWxkfS0+e05hbWV9IH0gPSAkUGFyYW17RHluYW1pY0ZpZWxkfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtEeW5hbWljRmllbGR9ICkgKSB7CiAgICAgICAgICAgICVEeW5hbWljRmllbGRzUmF3ID0gbWFwIHsgJF8tPntOYW1lfSA9PiAkXyB9IEB7ICRQYXJhbXtEeW5hbWljRmllbGR9IH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnM7CiAgICAgICAgfQoKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIENvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgd2ViIHNlcnZpY2UuCiAgICAgICAgZm9yIG15ICRQYXJhbWV0ZXJOYW1lICggc29ydCBrZXlzICVQYXJhbSApIHsKICAgICAgICAgICAgaWYgKCAkUGFyYW1ldGVyTmFtZSA9fiBte1xBIER5bmFtaWNGaWVsZF8gKCBbYS16QS1aXGRcLV0rICkgXHp9eG1zICkgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZHNSYXd7JDF9ID0gJFBhcmFteyRQYXJhbWV0ZXJOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGxvb3Agb3ZlciB0aGUgZHluYW1pYyBmaWVsZHMgY29uZmlndXJlZAogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBza2lwIGFsbCBmaWVsZHMgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aXRoIGN1cnJlbnQgZmllbGQgbmFtZQogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkc1Jhd3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJER5bmFtaWNGaWVsZHNSYXd7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ICk7CgogICAgICAgIG15ICVTZWFyY2hPcGVyYXRvcnMgPSAleyAkRHluYW1pY0ZpZWxkc1Jhd3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gfTsKCiAgICAgICAgZGVsZXRlICRTZWFyY2hPcGVyYXRvcnN7TmFtZX07CgogICAgICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAkRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVyc3sgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSBcJVNlYXJjaE9wZXJhdG9yczsKICAgIH0KCiAgICAjIGFsbG93IGZyZWUgZmllbGRzCgogICAgcmV0dXJuICVEeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/ar_SA_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmFyX1NBX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfYqNmK2KfZhtin2Kog2KfZhNiq2LTYutmK2YQg2KfZhNi52KfZhdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICfYpdi52K/Yp9iv2KfYqiDYqNmK2KfZhtin2Kog2KfZhNi32YTYqNin2Kog2KfZhNmI2KfYsdiv2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICfYpdi52K/Yp9iv2KfYqiDYqNmK2KfZhtin2Kog2KfZhNin2LPYqtis2KfYqNipINin2YTYtdin2K/YsdipJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn2KXYr9in2LHYqSDYudmG2KfYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAn2KrYutmK2YrYsSDYqti52LHZitmBINin2YTZgdim2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ9iq2LrZitmK2LEg2KrYudix2YrZgSDYp9mE2K/ZiNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAn2K3YstmFINmB2KbYp9iqIFJlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAn2YfZhtinINmK2YXZg9mG2YMg2KfYs9iq2YrYsdin2K8g2K3YstmFINmB2KbYp9iqIFJlYWR5MkltcG9ydCDYp9mE2KrZiiDYqti52LHYtiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINin2YTYo9mD2KvYsSDYtNmK2YjYudmL2Kcg2YTYr9mK2YbYpy4g2YrYsdis2Ykg2YXZhNin2K3YuNipINij2YYg2KjYudi2INin2YTYqtmH2YrYptipINin2YTYpdi22KfZgdmK2Kkg2YLYryDYqtmD2YjZhiDZhdi32YTZiNio2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ9iq2K3Yr9mK2Ksg2KfZhNmD2YrYp9mG2KfYqiDYp9mE2K3Yp9mE2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ9in2LPYqtmK2LHYp9ivINit2LLZhSDZgdim2KfYqiBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ9mB2KbYqSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn2K/ZiNixINi52YbYtdixINin2YTYqtmD2YjZitmGJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9i52YbYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ9iq2LXZgdmK2Kkg2YTZhNmB2KbYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9it2K/YryDZgdim2Kkg2YXZhiDYp9mE2YLYp9im2YXYqSDZhNil2YbYtNin2KEg2LnZhti12LEg2KrZg9mI2YrZhiDYrNiv2YrYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfYp9mE2YHYptipJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAn2KfZhNil2KzYsdin2KEg2KfZhNis2YXYp9i52Yog2YTYudmG2LXYsSDYp9mE2KrZh9mK2KbYqSBJVFNNSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn2K3Yp9mE2Kkg2KfZhNmG2LTYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ9it2KfZhNipINin2YTYrdin2K/Yqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICfYsdin2KjYtyDYpdmE2Ykg2KLYrtixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfYsdmC2YUg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2LrZitixINi12KfZhNitISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfYsdmC2YUg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNii2K7YsSDYp9mE2YXYsdin2K8g2KfZhNix2KjYtyDYqNmHLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9mH2YQg2KrYsdmK2K8g2K3Zgtin2Ysg2K3YsNmBINi52YbYtdixINin2YTYqtmD2YjZitmGINmH2LDYp9ifJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9in2LPZhSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZh9iw2KcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9in2YTYp9iz2YUg2YLZitivINin2YTYp9iz2KrYrtiv2KfZhSDYqNin2YTZgdi52YQg2YXZhiDZgtio2YQg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYqNin2YTYsdmC2YUgKNin2YTYo9ix2YLYp9mFKSDYp9mE2KrYp9mE2YrYqTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfYsdmC2YUg2KfZhNil2LXYr9in2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9ix2YLZhSDYpdi12K/Yp9ixINi52YbYtdixINin2YTYqtmD2YjZitmGINmH2LDYpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9ix2YLZhSDYp9mE2KXYtdiv2KfYsSDZhdiz2KrYrtiv2YUg2KjYp9mE2YHYudmEINmF2YYg2YLYqNmEINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2KjYp9mE2LHZgtmFICjYp9mE2KPYsdmC2KfZhSkg2KfZhNiq2KfZhNmK2Kk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfYrdin2YTYqSDYp9mE2YbYtNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn2K3Yp9mE2Kkg2KfZhNit2KfYr9irJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICfYqtin2LHZitiuINi52YbYtdixINin2YTYqtmD2YjZitmGOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfYp9mE2YXYrdiq2YjZiSDYp9mE2KrYp9ix2YrYrtmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfYpdmG2LTYp9ihINin2YTZiNmC2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn2LnYsdi2INin2YTYqtmD2KjZitixJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ9i52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YTZg9mEINi12YHYrdipJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfZhNmFINmK2KrZhSDYp9mE2LnYq9mI2LEg2LnZhNmJINio2YrYp9mG2KfYqiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfYrdiv2K8g2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YfYsNinJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn2KjYr9ihINin2YTYqNit2KsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn2KfZhNio2K3YqyDYo9mK2LbYp9mLINmB2Yog2KfZhNil2LXYr9in2LHYp9iqINin2YTYs9in2KjZgtip2J8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICfYt9ix2YrZgtipINi52LHYtiDYp9mE2LTYrNix2Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ9mF2LPYqtmI2Ykg2KfZhNi52YXZgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ9in2YTYqtmD2KjZitixL9in2YTYqti12LrZitixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ9iq2YUg2KfZhNmI2LXZiNmEINil2YTZiSDYp9mE2K3YryDYp9mE2KPZgti12Ykg2YTZhdiz2KrZiNmJINin2YTYsdmI2KfYqNi3INmE2YAgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICfZhdi52YTZiNmF2KfYqiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfYrdin2YTYqSDYp9mE2YbYtNixINin2YTYrdin2YTZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfYrdin2YTYqSDYp9mE2K3Yp9iv2Ksg2KfZhNit2KfZhNmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ9ii2K7YsSDYqti52K/ZitmEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ9ii2K7YsSDYqti62YrZitixINmF2YYg2YLYqNmEJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn2LnZhtin2LXYsSDYp9mE2KrZh9mK2KbYqSDYp9mE2K7Yp9i12Kkg2KjZgyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICfYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAn2YbZiNi5INin2YTZg9in2KbZhic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJ9iq2LXZgdmK2Kkg2K3Ys9ioINin2YTZhtmI2LknOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfYs9mK2KrZhSDYp9iz2KrZitix2KfYryDYp9mE2YHYptin2Kog2KfZhNiq2KfZhNmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn2LPZitiq2YUg2KfYs9iq2YrYsdin2K8g2KfZhNij2K/ZiNin2LEg2KfZhNiq2KfZhNmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn2YTYp9it2Lgg2KPZhtmHINiz2YrYqtmFINij2YrYttmL2Kcg2KXZhti02KfYoSDYp9mE2K3ZgtmI2YQg2KfZhNiv2YrZhtin2YXZitmD2YrYqSDYp9mE2YXZgtin2KjZhNipINmI2YHYptin2KogR2VuZXJhbENhdGFsb2cg2KfZhNi52KfZhdipINmI2YTZhiDZitmD2YjZhiDZh9mG2KfZgyDYpdiy2KfZhNipINiq2YTZgtin2KbZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ9mH2YQg2KrYsdmK2K8g2KfZhNmF2KrYp9io2LnYqdifJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ9iq2K3Yqtin2Kwg2KXZhNmJINij2YXYq9mE2KkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ9in2YTYqti52LHZitmBINmE2Kcg2YrZiNis2K8g2KrYrNiy2KbYqSBZQU1MINi12KfZhNit2KkuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAn2YbYuNix2Kkg2LnYp9mF2Kk6INi52YbYtdixINiq2YPZiNmK2YYgSVRTTUl0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn2YTZhSDZitiq2YUg2KXYudi32KfYoSDZhdi52LHZgSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiAoQ29uZmlnSXRlbUlEKSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfYqtit2KrYp9isINil2YTZiSDYudmG2LXYsSDYqtmD2YjZitmGINmF2K3Yr9ivINmI2KfYrdivINi52YTZiSDYp9mE2KPZgtmEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ9mE2YrYsyDZhNiv2YrZgyDYrdmCINin2YTZiNi12YjZhCDZhNmE2YPYqtin2KjYqSDYpdmE2Ykg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YfYsNinOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn2YTZhSDZitiq2YUg2KrYudix2YrZgSDYo9mKINiq2LnYsdmK2YEg2YTZhNmB2KbYqSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ9i52YbYtdixINin2YTYqtmD2YjZitmGICIlcyIg2LrZitixINmF2YjYrNmI2K8g2YHZiiDZgtin2LnYr9ipINin2YTYqNmK2KfZhtin2KohJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn2KrYudiw2LEg2K3YsNmBINmF2LnYsdmBINi52YbYtdixINin2YTYqtmD2YjZitmGICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAn2YTZhSDZitiq2YUg2KfZhNi52KvZiNixINi52YTZiSDYpdi12K/Yp9ixINmEIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAn2YTZhSDZitiq2YUg2KXYudi32KfYoSDZhdi52LHZgSDYp9mE2KrZg9mI2YrZhiDYo9mIINmF2LnYsdmBINin2YTYqtmD2LHYp9ixINij2Ygg2YXYudix2YEg2KfZhNmB2KbYqSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ9mE2YUg2YrYqtmFINmF2YbYrSDYo9mKINiq2LXYsdmK2K0g2K/YrtmI2YQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9mE2Kcg2YrZhdmD2YYg2KXYuNmH2KfYsSDYp9mE2LPYrNmE2Iwg2YTZhSDZitiq2YUg2KXYudi32KfYoSDZhdi52LHZgSDYp9mE2KrZg9mI2YrZhiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfZhNinINmK2YXZg9mGINi52LHYtiDYp9mE2LPYrNmE2Iwg2YTZhSDZitiq2YUg2YXZhtitINit2YLZiNmCINin2YTZiNi12YjZhCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ9i52YbYtdixINin2YTYqtmD2YjZitmGINin2YTYrNiv2YrYryAo2KfZhNmF2LnYsdmBPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAn2KfZhNil2LXYr9in2LEg2KfZhNis2K/ZitivICjYp9mE2YXYudix2YE9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn2KrZhSDYqtit2K/ZitirINit2KfZhNipINin2YTZhti02LEgKNis2K/ZitivPSVz2Iwg2YLYr9mK2YU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9iq2YUg2KrYrdiv2YrYqyDYrdin2YTYqSDYp9mE2K3Yp9iv2KsgKNis2K/ZitivPSVz2Iwg2YLYr9mK2YU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn2KrZhSDYrdiw2YEg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYgKNin2YTZhdi52LHZgT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICfYqtmF2Kog2KXYttin2YHYqSDYp9mE2KfYsdiq2KjYp9i3INil2YTZiSAlcyAo2KfZhNmG2YjYuT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ9iq2YUg2K3YsNmBINin2YTYp9ix2KrYqNin2Lcg2KXZhNmJICVzICjYp9mE2YbZiNi5PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAn2KrZhSDYqtit2K/ZitirINiq2LnYsdmK2YEg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYgKNin2YTZhdi52LHZgT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfYqtmFINiq2K3Yr9mK2Ksg2KfZhNin2LPZhSAo2KzYr9mK2K89JXPYjCDZgtiv2YrZhT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICfYqtmFINiq2K3Yr9mK2Ksg2KfZhNiz2YXYqSAlcyDZhdmGICIlcyIg2KXZhNmJICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAn2KrZhSDYrdiw2YEg2KfZhNil2LXYr9in2LEgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAn2YTZhSDZitiq2YUg2KXYudi32KfYoSDZhdi52LHZgSDYp9mE2KrZg9mI2YrZhiDYo9mIINmF2LnYsdmBINin2YTYpdi12K/Yp9ixISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfZhNinINmK2YXZg9mGINil2LjZh9in2LEg2LnZhti12LEg2KfZhNiq2YPZiNmK2YbYjCDZhNmFINmK2KrZhSDZhdmG2K0g2K3ZgtmI2YIg2YjYtdmI2YQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn2YXYudix2ZHZgSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiAlcyDYutmK2LEg2YXZiNis2YjYryDZgdmKINmC2KfYudiv2Kkg2KfZhNio2YrYp9mG2KfYqiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ9i52YbYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfYqtmF2Kog2LfYqNin2LnYqtmH2Kcg2KjZiNin2LPYt9ipICVzINmB2YogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ9mF2Y7Ysdis2ZDYuSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ9mF2LnYsdmR2YEg2KfZhNmB2KbYqSDYutmK2LEg2LXYp9mE2K0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAn2YTZhSDZitiq2YUg2KXYudi32KfYoSDYo9mKINmF2LnYsdmR2YEg2YTZhNmB2KbYqSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfZhNinINiq2YjYrNivINit2YLZiNmCINmI2LXZiNmEINmE2YfYsNmHINin2YTZgdim2Kkg2YXYudi32KfYqSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ9mE2Kcg2KrZiNis2K8g2YbYqtmK2KzYqSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfZhtiq2KfYptisINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAn2YTYpyDZitmF2YPZhiDYpdi42YfYp9ixINin2YTYudmG2LXYsdiMINmE2Kcg2KrZiNis2K8g2K3ZgtmI2YIg2YjYtdmI2YQg2YTZgCBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICfZhNmFINmK2KrZhSDYp9mE2LnYq9mI2LEg2LnZhNmJIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ9mE2YUg2YrYqtmFINin2YTYudir2YjYsSDYudmE2Ykg2KPZiiDYpdi12K/Yp9ix2KfYqiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfYp9mE2KrYtNi62YrZhNmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ9iq2K3YsNmK2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfYp9mE2K3Yp9iv2KsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9it2KfZhNipINin2YTZhti02LEg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZh9iw2KcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfYp9mE2K3Yp9mE2Kkg2KfZhNi52KfYsdi22Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZh9iw2KcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfZhNinINiq2YjYrNivINi12YTYp9it2YrYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ9in2YTZgdmE2KrYsSDYutmK2LEg2LXYp9mE2K0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICfYqNin2LHYp9mF2LIg2KfZhNio2K3YqyDYutmK2LEg2LXYp9mE2K0hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAn2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2YXYudix2YjYttipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ9mG2YjYuSDYrdin2YTYqSDYp9mE2YbYtNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ9mG2YjYuSDYrdin2YTYqSDYp9mE2K3Yp9iv2Ksg2KfZhNit2KfZhNmKJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ9io2YrZhic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn2YLZitmI2K8g2KfZhNmB2KbYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfYrdiv2K8g2YHYptipINmI2KfYrdiv2Kkg2KPZiCDYo9mD2KvYsSDZhNiq2YLZitmK2K8g2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2YLYp9io2YTYqSDZhNmE2KrYrdiv2YrYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn2YLZitmI2K8g2KfZhNmB2KbYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn2K3Yr9ivINmB2KbYqSDZiNin2K3Yr9ipINij2Ygg2KPZg9ir2LEg2YTYqtmC2YrZitivINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNmC2KfYqNmE2Kkg2YTZhNiq2K3Yr9mK2K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICfYr9mK2YbYp9mF2YrZg9mKICjYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ9ir2KfYqNiqICjYpdi12K/Yp9ixKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICfZhtmI2Lkg2KfZhNil2K3Yp9mE2Kkg2KfZhNmF2LHYrNi52YrYqSDZhNmE2LHYp9io2LcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAn2YXYpyDYpdiw2Kcg2YPYp9mGINmH2LDYpyDYp9mE2KfYsdiq2KjYp9i3INmK2YbYt9io2YIg2LnZhNmJINi52YbYtdixINin2YTYqtmD2YjZitmGINij2Ygg2KfZhNmG2LPYrtipINin2YTYq9in2KjYqtipINmF2YYg2KfZhNmD2KfYptmGINin2YTZhdix2KzYudmKLiDZitiq2YUg2KXYrNix2KfYoSDYrdiz2KfYqCDYrdin2YTYqSDYp9mE2K3Yp9iv2Ksg2KfZhNit2KfZhNmKINmB2YLYtyDYudmE2Ykg2KfZhNix2YjYp9io2Lcg2KfZhNiv2YrZhtin2YXZitmD2YrYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICfYrdiv2K8g2KfZhNiz2YXYqSDYp9mE2KrZiiDYs9mK2KrZhSDYp9mE2KjYrdirINi52YYg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDZhdmGINiu2YTYp9mE2YfYpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ9in2YTYqNmG2YrYqSDYp9mE2KPYs9in2LPZitipINi62YrYsSDYtdin2YTYrdipLiDZitix2KzZiSDYqtmC2K/ZitmFINiq2KzYstim2Kkg2YXYuSDYp9mE2KjZitin2YbYp9iqINio2KrZhtiz2YrZgiBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ9mK2YTYstmFINio2K/YoSDYs9mE2LPZhNipIFlBTUwg2KjZgCAiLS0tIi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAn2KrYudiw2LEg2YXYs9itINin2YTYrNiv2YjZhCBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICfZhNmFINmK2KrZhSDYp9mE2LnYq9mI2LEg2LnZhNmJINij2Yog2K3ZgtmI2YQg2K/ZitmG2KfZhdmK2YPZitipINiw2KfYqiDYtdmE2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICfYqti52LDZkdixINin2YTYpdiv2LHYp9isINmB2Yog2KfZhNis2K/ZiNmEIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn2KrZhSDYpdiv2LHYp9isIDAg2LXZgdmI2YEg2YHZiiDYp9mE2KzYr9mI2YQgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ9in2YTYrdivINin2YTYo9mC2LXZiSDZhNi52K/YryDYudmG2LXYsSDZiNin2K3YryDZg9it2K8g2KPZgti12YknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAn2KfYs9iq2YrYsdin2K8v2KrYtdiv2YrYsSDYp9mE2YXYsdmB2YLYp9iqICjZg9ii2K7YsSDYpdiv2K7Yp9mE2KfYqiDZgdmKINmD2YQg2LPYt9ixKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ9iz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAn2K3Yr9irINiu2LfYoyDZgdmKINmF2LLYp9mF2YbYqSDYp9mE2KrYudix2YrZgdin2KouINmK2LHYrNmJINin2YTYqtit2YLZgiDZhdmGINin2YTYs9is2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAn2YTYr9mK2YMg2KrYudix2YrZgdin2KogSVRTTUNvbmZpZ0l0ZW0g2LrZitixINmF2KrYstin2YXZhtipLiDZitix2KzZiSDZhti02LEg2KrYutmK2YrYsdin2Kog2KfZhNit2YLZhCDYp9mE2K/ZitmG2KfZhdmK2YPZiiDZhNmAIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn2YXZhtiq2YfZitipINin2YTYtdmE2KfYrdmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfYp9mE2LXZitin2YbYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9i32YrZkdin2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9mF2K7Yt9i3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ9in2YTYpdi12YTYp9itJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfZhdiq2YLYp9i52K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn2KfZhNmF2LHYp9is2LnYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn2KfZhNin2K7Yqtio2KfYsS/YttmF2KfZhiDYp9mE2KzZiNiv2KknOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ9mG2LjYsdipINi52KfZhdipINmI2KrYo9mD2YrYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICfYp9iz2KrZitix2KfYryDYp9mE2YHYptin2Kov2KfZhNij2K/ZiNin2LEg2YjYp9mE2K3ZgtmI2YQg2KfZhNmF2LHYqtio2LfYqSDYqNmH2KcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICfYrdiv2Ksg2K7Yt9ijINij2KvZhtin2KEg2KfYs9iq2YrYsdin2K8g2KfZhNmB2KbYqS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtINmF2K7ZgdmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSDZhdi52LHZiNi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfZitiz2YXYrSDYqNi02LHZiNi3INio2K3YqyDZhdmI2LPYudipINmB2Yog2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuINio2KfYs9iq2K7Yr9in2YUg2YfYsNmHINin2YTZhdmK2LLYqSDZitmF2YPZhtmDINin2YTYqNit2Ksg2YXYq9mE2KfZiyDYudmGINin2LPZhSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhdi5INmH2LDYpyDYp9mE2YbZiNi5INmF2YYg2KfZhNi02LHZiNi3INmF2KvZhCAiKCrZhdmB2KrYp9itIDEqJirZhdmB2KrYp9itIDIqKSIg2KPZiCAiKCrZhdmB2KrYp9itIDEqfHzZhdmB2KrYp9itIDIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ9mK2LPZhditINio2LTYsdmI2Lcg2KjYrdirINmF2YjYs9i52Kkg2YHZiiDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTYudmF2YrZhC4g2KjYp9iz2KrYrtiv2KfZhSDZh9iw2Ycg2KfZhNmF2YrYstipINmK2YXZg9mG2YMg2KfZhNio2K3YqyDYudmE2Ykg2LPYqNmK2YQg2KfZhNmF2KvYp9mEINi52YYg2KfYs9mFINi52YbYtdixINin2YTYqtmD2YjZitmGINmF2Lkg2YfYsNinINin2YTZhtmI2Lkg2YXZhiDYp9mE2LTYsdmI2Lcg2YXYq9mEICIoKtmF2YHYqtin2K0gMSomKtmF2YHYqtin2K0gMiopIiDYo9mIICIoKtmF2YHYqtin2K0gMSp8fNmF2YHYqtin2K0gMiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAn2KfZhNmF2K7YqNix2YrZhiDYp9mE2LPYsdmK2YrZhiDYp9mE2YXYudmK2YbZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfYp9mE2YXYrtio2LHZitmGINin2YTYs9ix2YrZitmGINin2YTZhdi52YrZhtmK2YYg2YTYtNix2YPYqSDYp9mE2LnZhdmK2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfYp9mE2YXYrtio2LHZiNmGINin2YTYs9ix2YrZiNmGINin2YTZhdiu2LXYtdmI2YYg2YTZhNmF2LPYqtiu2K/ZhSDYp9mE2LnZhdmK2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ9il2LnYr9in2K/Yp9iqIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9iq2K3ZgtmCINmF2YYg2YjYrNmI2K8g2KfYs9mFINmB2LHZitivINmB2YLYtyDYr9in2K7ZhCDZhtmB2LMg2YHYptipIENvbmZpZ0l0ZW0gKFwnY2xhc3NcJykg2KPZiCDYudin2YTZhdmK2YvYpyAoXCfYudin2YVcJynYjCDZhdmF2Kcg2YrYudmG2Yog2KPZhiDZg9mEINi52YbYtdixINiq2YPZiNmK2YYg2YXZiNis2YjYryDZitik2K7YsCDZgdmKINin2YTYp9i52KrYqNin2LEg2LnZhtivINin2YTYqNit2Ksg2LnZhiDYp9mE2KrZg9ix2KfYsdin2KouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICfYp9iu2KrYsSDZiNit2K/YqSDZhtmF2LfZitipINmE2YHYsdi2INmG2LjYp9mFINin2YTYqtiz2YXZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAn2KfYrtiq2LEg2YjYrdiv2Kkg2YbZhdi32YrYqSDZhNmB2LHYtiDZhdiu2LfYtyDYo9ix2YLYp9mFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICfYp9iu2KrYsSDZiNit2K/YqSDZhtmF2LfZitipINmE2YHYsdi2INmF2K7Yt9i3INiz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAn2KfYrtiq2LEg2KfZhNiz2YXYp9iqINmE2KrYtNi62YrZhCDYpdmG2LTYp9ihINil2LXYr9in2LEg2KzYr9mK2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ9in2K7YqtixINin2YTZgdim2KfYqiDYp9mE2YXYsdin2K8g2KrYudmK2YrZhtmH2Kcg2YTZgdim2Kkg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YfYsNmHLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICfZhdix2LTYrdin2Kog2LnZhti12LEg2KrZg9mI2YrZhiDYp9mE2LnZhdmI2K8g2YTZgCDZhti42LHYqSDYudin2YXYqSDYudmE2Ykg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNi52YXZiNivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAn2KfZhNij2LnZhdiv2Kkg2KfZhNiq2Yog2YrZhdmD2YYg2KrYtdmB2YrYqtmH2Kcg2YHZiiDYp9mE2YbYuNix2Kkg2KfZhNi52KfZhdipINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4g2YXZhNin2K3YuNipOiDZitmP2LPZhditINmB2YLYtyDYqNiz2YXYp9iqINi52YbYtdixINin2YTYqtmD2YjZitmGINmI2KfZhNit2YLZiNmEINin2YTYr9mK2YbYp9mF2YrZg9mK2KkgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ9i52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ9il2LbYp9mB2Kkg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn2KrYudiv2YrZhCDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZiNit2K/YqSDYrdiv2Ksg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNmG2YXYt9mK2Kkg2KfZhNiq2Yog2KrYqtmK2K0g2KfZhNiq2LPYrNmK2YQg2YHZiiDYp9mE2LPYrNmEINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ9mI2K3Yr9ipINit2K/YqyDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2YbZhdi32YrYqSDYp9mE2KrZiiDYqtmC2YjZhSDYqNiq2K3Yr9mK2Ksg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYpdmE2Ykg2KrYudix2YrZgdmH2Kcg2KfZhNit2KfZhNmKLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ9iq2KfYsdmK2K4g2LnZhti12LEg2KfZhNiq2YPZiNmK2YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ9i32KjYp9i52Kkg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAn2KrZg9io2YrYsSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfYudix2LYg2LTYrNix2Kkg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICfYpdi12K/Yp9ixINi52YbYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ9mE2YYg2YrYqtmFINiq2K7YstmK2YYg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDZhdmGINin2YTZgdim2KfYqiDYp9mE2KrYp9mE2YrYqSDYudmE2Ykg2K7Yp9iv2YUgRWxhc3RpY3NlYXJjaC4g2YTYqti32KjZitmCINiw2YTZgyDYudmE2YkgQ0lzINin2YTYrdin2YTZitip2Iwg2YrYrNioINiq2LTYutmK2YQg2KrYsdit2YrZhCBDSSDYudio2LEg2YjYrdiv2Kkg2KfZhNiq2K3Zg9mF2Iwg2KjYudivINiq2LrZitmK2LEg2YfYsNinINin2YTYrtmK2KfYsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAn2YTZhiDZitiq2YUg2KrYrtiy2YrZhiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINiw2KfYqiDYrdin2YTYp9iqINin2YTZhti02LEg2KfZhNiq2KfZhNmK2Kkg2LnZhNmJINiu2KfYr9mFIEVsYXN0aWNzZWFyY2guINmE2KrYt9io2YrZgiDYsNmE2YMg2LnZhNmJIENJcyDYp9mE2K3Yp9mE2YrYqdiMINmK2KzYqCDYqti02LrZitmEINiq2LHYrdmK2YQgQ0kg2LnYqNixINmI2K3Yr9ipINin2YTYqtit2YPZhdiMINio2LnYryDYqti62YrZitixINmH2LDYpyDYp9mE2K7Zitin2LEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ9it2K8g2LnZhti12LEg2KfZhNiq2YPZiNmK2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ9it2K8g2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YTZg9mEINi12YHYrdipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAn2YLYp9i52K/YqSDYqNmK2KfZhtin2Kog2KXYr9in2LHYqSDYp9mE2KrZh9mK2KbYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ9mI2K3Yr9ipINiq2YfZitim2Kkg2KfZhNi52YbYtdixINin2YTZhdis2YXZkdi5INmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9i52YbYtdixINin2YTYqtmD2YjZitmGINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2YXZiNis2Ycg2KfZhNiu2YTZgdmKINmE2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ9il2YbYtNin2KEg2KrYudix2YrZgdin2Kog2YTYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmI2KXYr9in2LHYqtmH2KcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAn2KXZhti02KfYoSDYqtiw2KfZg9ixINmE2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmG2YLYp9i3INiy2YXZhtmK2Kkg2YXYrdiv2K/YqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAn2YrZhdmD2YYg2YTZhNi52YXZhNin2KEg2KfZhNin2LfZhNin2Lkg2LnZhNmJINil2LXYr9in2LHYp9iqIENJINin2YTYqtin2LHZitiu2YrYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAn2YrZhdmD2YYg2YTZhNi52YXZhNin2KEg2KfZhNiq2KjYr9mK2YQg2YrYr9mI2YrYp9mLINio2YrZhiDYpdi12K/Yp9ix2KfYqiBDSSDYp9mE2KrYp9ix2YrYrtmK2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn2KfZhNio2YrYp9mG2KfYqiDYp9mE2KfZgdiq2LHYp9i22YrYqSDZhNin2LPYqtiu2K/Yp9mF2YfYpyDZgdmKINin2YTYs9mF2Kkg2YTYtNin2LTYqSDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYuINmF2KvYp9mEOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ92LPZhtip2JsgSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD3Yotiu2LHYmyBJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0y2JsiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAn2KfZhNio2YrYp9mG2KfYqiDYp9mE2KfZgdiq2LHYp9i22YrYqSDZhNin2LPYqtiu2K/Yp9mF2YfYpyDZgdmKINin2YTYs9mF2Kkg2YTYtNin2LTYqSDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYuIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICfYqti52LHZitmBINin2YTYudmF2YTZitin2Kog2KfZhNiq2Yog2YrYrNioINij2YYg2YrYqtmI2YHYsSDYqNmH2Kcg2LLYsSDYp9mE2KXYudiv2KfYr9in2Kog2YHZiiDZiNiv2KzYqSDZg9in2KbZhiDYp9mE2LHYp9io2LcgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4g2KfZhNix2KzYp9ihINmF2YTYp9it2LjYqSDYo9mG2Ycg2YrYrNioINiq2LPYrNmK2YQg2YXZhNmB2KfYqiBKUyDZiCBDU1Mg2KfZhNiq2KfZhNmK2Kkg2YTZh9iw2Ycg2KfZhNil2KzYsdin2KHYp9iqOiBDb3JlLkN1c3RvbUxpc3QuY3Nz2IwgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qc9iMIENvcmUuVUkuVGFibGUuU29ydC5qc9iMIENvcmUuQWdlbnQuVGFibGVGaWx0ZXIuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICfYqti52LHZitmBINmF2K7Yt9i3INmC2KfZhNioOjo62YXYrNmF2YjYudipINij2K/ZiNin2Kog2YTYs9mE2KfYs9mEINin2YTYpdi12K/Yp9ixLiDZitmP2LPYqtiu2K/ZhSDZgdmC2Lcg2KXYsNinINiq2YUg2KrYudmK2YrZhiDZiNit2K/YqSDYs9mE2LPZhNipINin2YTYpdi12K/Yp9ixINil2YTZiSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAn2KrYrdiv2YrYryDZhdis2YXZiNi52Kkg2YXZhiDYp9mE2LTYsdmI2Lcg2KfZhNiq2Yog2YrZj9iz2YXYrSDYqNmF2YjYrNio2YfYpyDZhNmE2LnZhdmK2YQg2KjYsdik2YrYqSDYudmG2LXYsSDYqtmD2YjZitmGLiDZitmF2YPZhiDYqtmC2YrZitivINin2YTYtNix2YjYtyDYp9iu2KrZitin2LHZitmL2Kcg2LnZhNmJINmF2KzZhdmI2LnYp9iqINmF2LnZitmG2Kkg2YXZhiDYp9mE2LnZhdmE2KfYoS4g2KfZhNin2LPZhSDZh9mIINin2YTYs9mF2Kkg2KfZhNil2YTYstin2YXZitipINin2YTZiNit2YrYr9ipLiDYpdiw2Kcg2YTZhSDZitiq2YUg2KXYudi32KfYoSDYo9mKINiu2YrYp9ix2KfYqiDYo9iu2LHZidiMINiz2KrZg9mI2YYg2KzZhdmK2Lkg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDZhdix2KbZitipINiq2K3YqiDYqtmE2YMg2KfZhNmB2KbYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNit2LDZgSDYudmG2KfYtdixINiq2YPZiNmK2YYgSVRTTSDYqNin2LPYqtiu2K/Yp9mFINin2YTZiNin2KzZh9ipINin2YTYudin2YXYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNmE2K3YtdmI2YQg2LnZhNmJINi52YbYp9i12LEg2KrZg9mI2YrZhiBJVFNNINio2KfYs9iq2K7Yr9in2YUg2KfZhNmI2KfYrNmH2Kkg2KfZhNi52KfZhdipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2YTYqNit2Ksg2YHZiiDYudmG2KfYtdixINiq2YPZiNmK2YYgSVRTTSDYqNin2LPYqtiu2K/Yp9mFINin2YTZiNin2KzZh9ipINin2YTYudin2YXYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNiq2LnZitmK2YYg2LnZhtin2LXYsSDYqtmD2YjZitmGIElUU00g2KjYp9iz2KrYrtiv2KfZhSDYp9mE2YjYp9is2YfYqSDYp9mE2LnYp9mF2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINmI2K3Yr9ipINmG2LjYsdipINi52KfZhdipINmE2KXYuNmH2KfYsSDYp9mE2LnYsdi2INin2YTYtdi62YrYsSDZhNmC2KfYptmF2Kkg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAn2YrYrdiv2K8g2YXYpyDYpdiw2Kcg2YPYp9mGINmK2KzYqCDYpdi42YfYp9ixINiq2LPZhdmK2KfYqiDZhtmI2Lkg2KfZhNin2LHYqtio2KfYtyDZgdmKINin2KrYtdin2YTYp9iqINin2YTYudmC2K/YqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYqti52KjZitix2KfYqiDYp9mE2LnYp9iv2YrYqSDYqNi02YPZhCDZgdix2K/ZiiDZhNmD2YQg2YHYptipINmF2YYg2YHYptin2KogQ29uZmlnSXRlbSDZhNmE2KrYrdmC2YIg2YXZhiDYp9iz2YUg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YjYpdi42YfYp9ixINix2LPYp9im2YQg2KfZhNiu2LfYoyDYp9mE2YXZgtin2KjZhNipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYo9i52YXYr9ipINin2YTZhdiq2KfYrdipINmF2YYgQ0kg2YHZiiDYp9mE2YbYuNix2Kkg2KfZhNi52KfZhdipINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfYudiq2YXYp9iv2YvYpyDYudmE2Ykg2YHYptipIENJLiDZitis2Kgg2KPZhiDZitiq2YPZiNmGINmD2YQg2KXYr9iu2KfZhCDZhdmGINin2LPZhSDYp9mE2YHYptipINmI2YXYtdmB2YjZgdipINmF2YYg2KfZhNit2YLZiNmEINin2YTZhdiq2KfYrdipINmE2YTZgdim2Kkg2KfZhNmF2YLYp9io2YTYqS4g2YrYrNioINij2YYg2KrYrdiq2LHZhSDYpdiv2K7Yp9mE2KfYqiDYp9mE2K3ZgtmI2YQg2KfZhNiv2YrZhtin2YXZitmD2YrYqSDYp9mE2YXYrti32LcgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINiz2YXYqSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2KfZgdiq2LHYp9i22YrYqSDZhNmB2LHYsiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhNmG2KrZitis2Kkg2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINmE2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZitit2K/YryDYs9mF2Kkg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNin2YHYqtix2KfYttmK2Kkg2YTZgdix2LIg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YTZhtiq2YrYrNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNi52YXZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINiz2YXYqSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2KfZgdiq2LHYp9i22YrYqSDZhNmB2LHYsiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhNmG2KrZitis2Kkg2KjYrdirINi52YbYtdixINin2YTYqtmD2YjZitmGINmE2YfYsNmHINin2YTYudmF2YTZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNiq2LHYqtmK2Kgg2KfZhNin2YHYqtix2KfYttmKINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZhtiq2YrYrNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELiDZhNij2LnZhNmJOiDYp9mE2KPZgtiv2YUg2YHZiiDYp9mE2KPYudmE2YkuINmE2KPYs9mB2YQ6INin2YTYo9it2K/YqyDZgdmKINin2YTYo9i52YTZiS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINiq2LHYqtmK2Kgg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNin2YHYqtix2KfYttmKINmB2Yog2YbYqtmK2KzYqSDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTYudmF2YrZhC4g2YTYo9i52YTZiTog2KfZhNij2YLYr9mFINmB2Yog2KfZhNij2LnZhNmJLiDZhNij2LPZgdmEOiDYp9mE2KPYrdiv2Ksg2YHZiiDYp9mE2KPYudmE2YkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINiq2LHYqtmK2Kgg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNin2YHYqtix2KfYttmKINmB2Yog2YbYqtmK2KzYqSDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YTZh9iw2Ycg2KfZhNi52YXZhNmK2KkuINmE2KPYudmE2Yk6INin2YTYo9mC2K/ZhSDZgdmKINin2YTYo9i52YTZiS4g2YTYo9iz2YHZhDog2KfZhNij2K3Yr9irINmB2Yog2KfZhNij2LnZhNmJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNij2LnZhdiv2Kkg2KfZhNin2YHYqtix2KfYttmK2Kkg2KfZhNmF2LnYsdmI2LbYqSDZhdmGIENJcyDZgdmKINin2YTZhti42LHYqSDYp9mE2LnYp9mF2Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9i52KrZhdin2K/Zi9inINi52YTZiSDZgdim2KkgQ0kuINmK2KzYqCDYo9mGINmK2KrZg9mI2YYg2YPZhCDYpdiv2K7Yp9mEINmF2YYg2KfYs9mFINin2YTZgdim2Kkg2YjZhdi12YHZiNmB2Kkg2YXZhiDYp9mE2K3ZgtmI2YQg2KfZhNmF2KrYp9it2Kkg2YTZhNmB2KbYqSDYp9mE2YXZgtin2KjZhNipLiDZitis2Kgg2KPZhiDYqtit2KrYsdmFINil2K/Yrtin2YTYp9iqINin2YTYrdmC2YjZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitipINin2YTZhdiu2LfYtyBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICfZitit2K/YryDYudmF2YIg2KfZhNi52YTYp9mC2KfYqiDYp9mE2KfZgdiq2LHYp9i22Yog2KfZhNiw2Yog2LPZitiq2YUg2LnYsdi22YcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINiz2YXYqSDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNmF2LnYsdmI2LbYqSDYp9mE2KfZgdiq2LHYp9i22YrYqSDZhNi02KfYtNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINiz2YXYqSDYqNit2Ksg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNin2YHYqtix2KfYttmK2Kkg2KfZhNmF2LnYsdmI2LbYqSDZhNi02KfYtNipINio2K3YqyDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4g2YXYq9in2YQ6ICLYp9mE2YXZgdiq2KfYrSIg2YrYrNioINij2YYg2YrYrdiq2YjZiiDYudmE2Ykg2KfYs9mFINin2YTYrdmC2YQg2KfZhNiv2YrZhtin2YXZitmD2Yog2YHZiiDZh9iw2Ycg2KfZhNit2KfZhNipIFwnWFwn2IwgItin2YTZhdit2KrZiNmJIiDZitis2Kgg2KPZhiDZitit2KrZiNmKINi52YTZiSDZgtmK2YXYqSDYp9mE2K3ZgtmEINin2YTYr9mK2YbYp9mF2YrZg9mKINit2LPYqCDZhtmI2Lkg2KfZhNit2YLZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitiMINin2YTZhti1OiBcJ9mG2LVcJ9iMINin2YTZgtin2KbZhdipINin2YTZhdmG2LPYr9mE2Kk6IFwnMVwn2Iwg2KfZhNiq2KfYsdmK2K4v2KfZhNmI2YLYqjogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hEeW5hbWljRmllbGRfWFQgVGltZVNsb3RTdGxvdFN0YXJ0TWludXRlPTAw2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YIFRpbWVTbG90U3RhcnRTZWNvbmQ9MDDYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1ggVGltZVNsb3RTdG9wWWVhcj0yMDEz2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YIFRpbWVTbG90U3RvcE1vbnRoPTAxIFNlYXJjaF9EeW5hbWljRmllbGRfWER5bmFtaWNGaWVsZF9YVCBUaW1lU2xvdFN0b3BEYXk9MjbYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIz2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU52JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5OyIg2YggXCfYo9mIIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVF9UaW1lUG9pbnRGb3JtYXQ9d2Vla9ibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRfVGltZVBvaW50U3RhcnQ92YLYqNmE2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVCBUaW1lUG9pbnRWYWx1ZT03XCfYmyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNmD2KfYptmGINin2YTZgdix2LnZiiDYp9mE2KfZgdiq2LHYp9i22Yog2YTZhNmB2KbYqSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KPYudmF2K/YqSDYp9mE2YXYqtin2K3YqSDZhdmGIENJINmB2Yog2KfZhNmG2LjYsdipINin2YTYudin2YXYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINin2LnYqtmF2KfYr9mL2Kcg2LnZhNmJINmB2KbYqSBDSS4g2YrYrNioINij2YYg2YrYqtmD2YjZhiDZg9mEINil2K/Yrtin2YQg2YXZhiDYp9iz2YUg2KfZhNmB2KbYqSDZiNmF2LXZgdmI2YHYqSDZhdmGINin2YTYrdmC2YjZhCDYp9mE2YXYqtin2K3YqSDZhNmE2YHYptipINin2YTZhdmC2KfYqNmE2KkuINmK2KzYqCDYo9mGINiq2K3Yqtix2YUg2KXYr9iu2KfZhNin2Kog2KfZhNit2YLZiNmEINin2YTYr9mK2YbYp9mF2YrZg9mK2Kkg2KfZhNmF2K7Yt9i3IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2LHYqtmB2KfYuSDZhdmD2YjZhiDZhdit2LHYsSDYp9mE2YbYtSDYp9mE2YXZhtiz2YIuINit2K/YryDZgtmK2YXYqSDYsdmC2YXZitipICjYqNmD2LPZhCkg2KPZiCDZhtiz2KjYqSDZhdim2YjZitipICjZhtiz2KjZitipKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYrdiv2K8g2LnYr9ivINin2YTYtdmB2YjZgSDZhNmF2K3YsdixINiq2LnYsdmK2YEgQ0kg2YHZiiDZiNin2KzZh9ipINin2YTZhdiz2KTZiNmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICfZitmP2K3Yr9ivINiq2LHYqtmK2Kgg2KfZhNit2KfZhNin2Kog2KfZhNi52KfYsdi22Kkg2YXZhiDYp9mE2KPYudmE2YkgKNmF2KvZhCDYp9mE2K3ZhNmC2YrYqSkg2KXZhNmJINin2YTYo9iv2YbZiSAo2YXYq9mEINin2YTZiNi42YrZgdmK2KkpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINit2KfZhNin2Kog2KfZhNmG2LTYsSDYsNin2Kog2KfZhNi12YTYqSDYp9mE2KrZiiDZitmF2YPZhiDYo9mGINiq2KTYq9ixINmB2YrZh9inINin2YTYqtiw2KfZg9ixINin2YTZhdix2KrYqNi32Kkg2LnZhNmJINit2KfZhNipINin2YTZhdiu2KjYsSDYp9mE2LPYsdmKLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINit2K8g2KfZhNio2K3YqyDZhNi02KfYtNipIEFnZW50SVRTTUNvbmZpZ2lnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfZitit2K/YryDYrdivINin2YTYqNit2Ksg2YTYtNin2LTYqSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINit2K8g2KfZhNio2K3YqyDZhNi02KfYtNipIEN1c3RvbWVySVRTTUNvbmZpZ2lnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfZitit2K/YryDYrdivINin2YTYqNit2Ksg2YTYtNin2LTYqSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYo9i52YXYr9ipINin2YTYuNin2YfYsdipINmF2YYgQ0lzINmB2Yog2LfYsdmK2YLYqSDYp9mE2LnYsdi2INin2YTZhdi52YLYr9ipINmE2KzYr9mI2YQg2KfZhNin2LHYqtio2KfYtyDZhNis2YXZiti5INmB2KbYp9iqIENJLiDYpdiw2Kcg2YTZhSDZitmD2YYg2YfZhtin2YMg2KXYr9iu2KfZhNiMINmK2KrZhSDYudix2LYg2KfZhNij2LnZhdiv2Kkg2KfZhNin2YHYqtix2KfYttmK2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2KPYudmF2K/YqSDYp9mE2YXYudix2YjYttipINmF2YYgQ0kg2YHZiiDYt9ix2YrZgtipINin2YTYudix2LYg2KfZhNmF2LnZgtiv2Kkg2YTYrNiv2YjZhCDYp9mE2KfYsdiq2KjYp9i32Iwg2KfYudiq2YXYp9iv2KfZiyDYudmE2Ykg2YHYptipIENJLiDZitis2Kgg2KPZhiDZitmD2YjZhiDZg9mEINil2K/Yrtin2YQg2YXYs9io2YjZgtmL2Kcg2KjYp9iz2YUg2KfZhNmB2KbYqSDZiNmG2YLYt9iq2YrZhiAo2KPZiiDYp9mE2YPZhdio2YrZiNiq2LE6Ojo6OikuINmH2YbYp9mDINi52K/YryDZgtmE2YrZhCDZhdmGINiz2YXYp9iqIENJLUF0dHJpYnV0ZXMg2KfZhNmF2LTYqtix2YPYqSDYqNmK2YYg2KzZhdmK2LkgQ0kgKNmF2KvYp9mEINmE2YHYptipINin2YTZg9mF2KjZitmI2KrYsTog2KfZhNit2KfYs9mI2Kg6Otin2YTYp9iz2YXYjCDYp9mE2K3Yp9iz2YjYqDo6Q3VyRGVwbFN0YXRl2Iwg2KfZhNit2KfYs9mI2Kg6OkNyZWF0ZVRpbWUpLiDZhNil2LjZh9in2LEg2LPZhdin2KogQ0ktQXR0cmlidXRlcyDYp9mE2YHYsdiv2YrYqSDZg9mF2Kcg2YfZiiDZhdi52LHZgdipINmB2Yog2KrYudix2YrZgSBDSS1EZWZpbml0aW9u2Iwg2YrYrNioINin2LPYqtiu2K/Yp9mFINin2YTZhdiu2LfYtyDYp9mE2KrYp9mE2YogKNmF2KvYp9mEINmE2YHYptipINin2YTZg9mF2KjZitmI2KrYsSk6INin2YTZg9mF2KjZitmI2KrYsTo62KfZhNmC2LHYtSDYp9mE2LXZhNioOjox2Iwg2KfZhNmD2YXYqNmK2YjYqtixOjrYp9mE2YLYsdi1INin2YTYtdmE2Kg6OjE6Otin2YTYs9i52Kk6OjHYjCDYp9mE2YPZhdio2YrZiNiq2LE6INin2YTZgtix2LUg2KfZhNi12YTYqDo6MtiMINin2YTZg9mF2KjZitmI2KrYsTog2KfZhNmC2LHYtSDYp9mE2LXZhNioOjoyOiDYp9mE2LPYudipOjoxLiDZgdmKINit2KfZhNipINi52K/ZhSDZiNis2YjYryDYpdiv2K7Yp9mEINmE2YHYptipIENJ2Iwg2YrYqtmFINi52LHYtiDYp9mE2KPYudmF2K/YqSDYp9mE2KfZgdiq2LHYp9i22YrYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2LnZhtin2LXYsSDYp9mE2YXYqtin2K3YqSAi2YTZhNil2KzYsdin2KEiINmB2Yog2KfZhNmF2LPYqtmI2Ykg2KfZhNir2KfZhNirINmF2YYg2KjZhtmK2KkgQUNMINmE2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYudmG2KfYtdixINin2YTZhdiq2YjZgdix2Kkg2YHZiiDYp9mE2YXYs9iq2YjZiSDYp9mE2KPZiNmEINmF2YYg2KjZhtmK2KkgQUNMINmE2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfZitit2K/YryDYp9mE2LnZhtin2LXYsSDYp9mE2YXYqtmI2YHYsdipINmB2Yog2KfZhNmF2LPYqtmI2Ykg2KfZhNir2KfZhtmKINmF2YYg2KjZhtmK2KkgQUNMINmE2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfZitit2K/YryDZhtmI2Lkg2KfZhNin2LHYqtio2KfYtyAo2KfZhNmF2LPZhdmJINmF2YYg2YXZhti42YjYsSDYp9mE2KrYsNmD2LHYqSkg2KfZhNiw2Yog2YrZhdmD2YYg2KPZhiDZitik2KvYsSDYudmE2Ykg2K3Yp9mE2KkgQ0kg2KfZhNmF2LHYqtio2LcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn2YrYrdiv2K8g2YbZiNi5INin2YTYqtiw2YPYsdipINin2YTYqtmKINmK2YXZg9mGINij2YYg2KrYpNir2LEg2LnZhNmJINit2KfZhNipINin2YTZhdiu2KjYsSDYp9mE2YXYs9iq2YLZhCDYp9mE2YXYsdiq2KjYty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICfYqtit2K/ZitirINin2YTYqti52LHZitmBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfYrdiw2YEg2LnZhti12LEg2KfZhNiq2YfZitim2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAn2K/Zitio2YTYs9iq2YrYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn2YTZiNmGINit2KfZhNipINin2YTZhti02LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAn2K3Yp9mE2Kkg2KfZhNmG2LTYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfZhdmD2LHYsdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAn2KfZhNmI2K3Yr9ipINin2YTZhtmF2LfZitipINmE2K3Yr9irINin2YTYrdmC2YQg2KfZhNiv2YrZhtin2YXZitmD2Yog2KfZhNiq2Yog2KrYrdiv2K8g2KrYudix2YrZgdin2Kog2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYudmE2Ykg2KPZhtmH2Kcg2LrZitixINmF2KrYstin2YXZhtip2Iwg2KXYsNinINmD2KfZhtiqINiq2K3YqtmI2Yog2LnZhNmJINit2YLZiNmEINiv2YrZhtin2YXZitmD2YrYqSDZhdiq2LrZitix2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2K3ZgtmI2YQg2KfZhNiv2YrZhtin2YXZitmD2YrYqSDYp9mE2YXYudix2YjYttipINmB2Yog2LTYp9i02Kkg2K3ZgtmEINil2K/Yp9ix2Kkg2K7Yr9mF2KfYqiDYqtmD2YbZiNmE2YjYrNmK2Kcg2KfZhNmF2LnZhNmI2YXYp9iqINmI2KfZhNin2KrYtdin2YTYp9iqINin2YTYpdi22KfZgdmKINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iq2LjZh9ixINin2YTYrdmC2YjZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitipINmB2Yog2LTYp9i02Kkg2KfZhNmG2LjYsdipINin2YTYudin2YXYqSDYudmE2Ykg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTYudmF2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYrdmC2YjZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitipINin2YTYqtmKINiq2LjZh9ixINmB2Yog2LTYp9i02Kkg2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ9iq2YXZg9mK2YYg2YXZitiy2Kkg2KfZhNil2KzYsdin2KHYp9iqINin2YTZhdis2YXYudipINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YTZhNmI2KfYrNmH2Kkg2KfZhNij2YXYp9mF2YrYqSDZhNmE2YjZg9mK2YQg2YTZhNi52YXZhCDYudmE2Ykg2KPZg9ir2LEg2YXZhiDYudmG2LXYsSDYqtmD2YjZitmGINmI2KfYrdivINmB2Yog2YPZhCDZhdix2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfYqtmF2YPZitmGINmF2YrYstipINin2YTYpdis2LHYp9ihINin2YTZhdis2YXYuSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINmB2YLYtyDZhNmE2YXYrNmF2YjYudin2Kog2KfZhNmF2K/Ysdis2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9iq2YXZg9mK2YYv2KrYudi32YrZhCDZiNi42YrZgdipINin2YTYqtit2YLZgiDZhdmGINi52YbYp9i12LEg2KrZg9mI2YrZhiBJVFNNINio2K3Yq9in2Ysg2LnZhiDYo9iz2YXYp9ihINmB2LHZitiv2KkuINmC2KjZhCDYqtmF2YPZitmGINmH2LDYpyDYp9mE2K7Zitin2LHYjCDZitis2Kgg2LnZhNmK2YMg2KfZhNiq2K3ZgtmCINmF2YYg2KfZhNmG2LjYp9mFINin2YTYrtin2LUg2KjZgyDYqNit2KvZi9inINi52YYg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2YXZiNis2YjYr9ipINio2KfZhNmB2LnZhCDYsNin2Kog2KfZhNij2LPZhdin2KEg2KfZhNmF2YPYsdix2KkuINmK2YXZg9mG2YMg2KfZhNmC2YrYp9mFINio2LDZhNmDINio2KfYs9iq2K7Yr9in2YUg2KPZhdixINmI2K3Yr9ipINin2YTYqtit2YPZhSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ9mI2K3Yr9ipINin2YTYrdiv2Ksg2KfZhNmG2YXYt9mK2Kkg2YTYqti52YrZitmGINit2KfZhNipINin2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhtmKINi52YTZiSDYsdin2KjYtyDYqtiw2YPYsdipLdiq2YPZiNmK2YYt2LnZhti12LEt2KrZg9mI2YrZhi3Ysdin2KjYty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAn2K3ZgtmI2YQg2YHZh9ix2LMg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhtiMINin2YTZhdiz2KrYrtiv2YXYqSDZhNmE2KjYrdirINi52YYg2KfZhNmG2LUg2KfZhNmD2KfZhdmELiDZitiq2YUg2KrYrtiy2YrZhiDYp9mE2K3ZgtmI2YQg2KPZiti22YvYp9iMINmI2YTZg9mG2YfYpyDZhNmK2LPYqiDYpdmE2LLYp9mF2YrYqSDZhNmE2YjYuNmK2YHYqSDYp9mE2LnYp9mF2KkuINmK2YXZg9mGINiq2LnYt9mK2YQg2KXYr9ix2KfYrCDYp9mE2YXYsdmB2YLYp9iqINi52YYg2LfYsdmK2YIg2KrYudmK2YrZhiDYp9mE2KXYr9iu2KfZhCDYpdmE2YkgMCDYo9mIINit2LDZgdmHLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAn2KfZhNit2YLZiNmEINin2YTZhdiu2LLZhtipINmB2Yog2YHZh9ix2LMg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2KrZiiDYqtmP2LPYqtiu2K/ZhSDZhNij2LTZitin2KEg2KPYrtix2Ykg2KXZhNmJINis2KfZhtioINi52YXZhNmK2KfYqiDYp9mE2KjYrdirINi52YYg2KfZhNmG2LUg2KfZhNmD2KfZhdmELiDZhNmE2YjYuNin2KbZgSDYp9mE2YPYp9mF2YTYqSDYrNmF2YrYuSDYp9mE2K3ZgtmI2YQg2KXZhNiy2KfZhdmK2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAn2YTZg9mEINiu2K/ZhdipINmI2YrYqCAo2YXZgdiq2KfYrSkg2YrZhdmD2YYg2KrYrdiv2YrYryDZhdi12YHZiNmB2Kkg2YXZhiDYp9mE2YHYptin2KogKNin2YTZgtmK2YXYqSkg2KfZhNiq2Yog2YrYqtmFINiq2YLZitmK2K8g2KfZhNin2LPYqtmK2LHYp9ivINi52YTZitmH2KcuINio2KfZhNmG2LPYqNipINmE2KzZhdmK2Lkg2KfZhNmB2KbYp9iqINin2YTZhdiu2KrYp9ix2KnYjCDYo9mIINis2YXZiti5INin2YTZgdim2KfYqiDYp9mE2YXZiNis2YjYr9ipINmK2KzYqCDYp9iu2KrZitin2LEg2LPZhdin2Kog2KfZhNiq2LnYsdmK2YEg2YHZiiDYqtmD2YjZitmGINin2YTZhdiz2KrYr9i52YouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9iq2LPYrNmK2YQg2KfZhNmI2K3Yr9ipINin2YTZhtmF2LfZitipIEdlbmVyaWNJbnRlcmZhY2Ug2YTYt9io2YLYqSDZhdiz2KrYr9i52YogQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9iq2LPYrNmK2YQg2KfZhNmI2K3Yr9ipINin2YTZhtmF2LfZitipIEdlbmVyaWNJbnRlcmZhY2Ug2YTYt9io2YLYqSDZhdiz2KrYr9i52YogQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfYqtiz2KzZitmEINin2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSBHZW5lcmljSW50ZXJmYWNlINmE2LfYqNmC2Kkg2YXYs9iq2K/YudmKIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAn2LnZhti12LEg2KfZhNiq2YPZiNmK2YYgSVRTTUl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICfZhti42LHYqSDYudin2YXYqSDYudmE2Ykg2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ9it2KfZhNipINin2YTYrdin2K/Yqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZitiq2LbZhdmGINit2KfZhNin2Kog2KfZhNmG2LTYsSDZgdmKINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNi52YXZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYqti22YXZhiDYrdin2YTYp9iqINin2YTYrdmI2KfYr9irINmB2Yog2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2LnZhdmK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfYp9mE2K3YryDYp9mE2KPZgti12Ykg2YTYudiv2K8g2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2KrZiiDYs9mK2KrZhSDYudix2LbZh9inINmB2Yog2YbYqtmK2KzYqSDZh9iw2Ycg2KfZhNi52YXZhNmK2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAn2KfZhNmI2K3Yr9ipINin2YTZhtmF2LfZitipINmE2YTYqtit2YLZgiDZhdmGINin2YTZhdis2YXZiNi52Kkg2KfZhNmF2LPYpNmI2YTYqSDYudmGINmB2KbYqSDZhdinLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ9in2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSDZhNmE2KrYrdmC2YIg2YXZhiDYp9mE2YXYrNmF2YjYudipINin2YTZhdiz2KTZiNmE2Kkg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfYp9mE2YjYrdiv2Kkg2KfZhNmG2YXYt9mK2Kkg2YTYpdmG2LTYp9ihINil2K3Ytdin2KbZitin2Kog2LnZhtin2LXYsSDYqtmD2YjZitmGIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAn2YjYrdiv2Kkg2KfZhNin2LPZhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAn2YjYrdiv2Kkg2KfZhNij2LHZgtin2YUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2LnYr9ivINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNiq2Yog2LPZitiq2YUg2LnYsdi22YfYpyDZgdmKINmD2YQg2LXZgdit2Kkg2YXZhiDZhtiq2KfYptisINin2YTYqNit2Ksg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2LnYr9ivINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNiq2Yog2LPZitiq2YUg2LnYsdi22YfYpyDZgdmKINmD2YQg2LXZgdit2Kkg2YXZhiDZhtiq2KfYptisINin2YTYqNit2Ksg2YHZiiDZiNin2KzZh9ipINin2YTYudmF2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICfYp9mE2YPYp9im2YbYp9iqINin2YTYqtmKINmK2KzYqCDYp9mE2KjYrdirINi52YbZh9in2Iwg2YjYudiv2K8g2KfZhNil2K/Yrtin2YTYp9iqINmI2KfZhNiz2YXYp9iqINin2YTYqtmKINmK2KzYqCDYpdi42YfYp9ix2YfYpy4g2YrYrNioINiq2K7YstmK2YYg2LPZhdin2KogQ29uZmlnSXRlbSDYqNi02YPZhCDYtdix2YrYrSDYudio2LEgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn2YbYuNix2Kkg2LnYp9mF2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTZhdi52YTZhdin2Kog2KfZhNiu2KfYtdipINio2YHYptin2Kog2YHYptin2Kog2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINi52LHYtiDYp9mE2KrZgdi22YrZhNin2Kog2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhdi52YTZhdin2Kog2YXYsdi02K3Yp9iqINin2YTYo9i52YXYr9ipINmB2Yog2KfZhNmG2LjYsdipINin2YTYudin2YXYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTYtdi62YrYsS4g2YrYsdis2Ykg2YXZhNin2K3YuNipOiDYqti52YrZitmGIFwn2YbYtNi3XCcg2KXZhNmJIDAg2LPZitmF2YbYuSDYp9mE2YjZg9mE2KfYoSDZgdmC2Lcg2YXZhiDYqtit2LHZitixINil2LnYr9in2K/Yp9iqINmH2LDZhyDYp9mE2YXYrNmF2YjYudipINmB2Yog2KrZgdi22YrZhNin2KrZh9mFINin2YTYtNiu2LXZitip2Iwg2YjZhNmD2YbZhyDYs9mK2LPZhditINmE2YTZhdiz2KTZiNmE2YrZhiDYqNiq2K3YsdmK2LEg2KXYudiv2KfYr9in2Kog2YXYs9iq2K7Yr9mFINii2K7YsSDZhtmK2KfYqNip2Ysg2LnZhiDZhdiz2KrYrtiv2YUg2KLYrtixLiDYp9iz2KrYrtiv2YUgXCdQcmVmZXJlbmNlR3JvdXBcJyDZhNmE2KrYrdmD2YUg2YHZiiDYp9mE2YXZhti32YLYqSDYp9mE2KrZiiDZitis2Kgg2KPZhiDYqti42YfYsSDZgdmK2YfYpyDZh9iw2Ycg2KfZhNil2LnYr9in2K/Yp9iqINmB2Yog2YjYp9is2YfYqSDYp9mE2YXYs9iq2K7Yr9mFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINmE2YjZhiDYrdin2YTYp9iqINin2YTZhti02LEg2YHZiiDYudix2LYg2KfZhNiq2YHYttmK2YTYp9iqINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINmE2K3Yp9mE2KfYqiDYp9mE2YbYtNixINmB2Yog2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfYp9mE2YXYudmE2YXYp9iqINin2YTYrtin2LXYqSDYqNij2YXYq9mE2Kkg2YXYrNmF2YjYudin2Kog2KfZhNij2LDZiNmG2KfYqiDYp9mE2K7Yp9i12Kkg2KjYs9mF2KfYqiDYp9mE2YPYqtin2YTZiNisINin2YTYudin2YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINmI2K3Yr9ipINin2YTYp9iz2YUg2KfZhNmG2YXYt9mK2Kkg2YTZgdim2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINin2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSDZhNmE2LHZgtmFINmE2YHYptin2Kog2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINi52LHYtiDYp9mE2KrZgdi22YrZhNin2Kog2YTZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINin2YTYtdmB2K3Yp9iqICjYp9mE2KrZiiDYqti42YfYsSDZgdmK2YfYpyDYudmG2KfYtdixINin2YTYqtmD2YjZitmGKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINin2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSDZhNiz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEg2YTZgdim2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2LfYsdmK2YLYqSDYudix2LYg2KfZhNiq2YHYttmK2YTYp9iqINmE2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINmE2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSDZhNmF2KzZhdmI2LnYqSDYo9iv2YjYp9iqINmC2KfZhNioINiz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEg2YTZgdim2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhdi52YTZhdin2Kog2YXYtNi62YQg2KfZhNil2LXYr9in2LEg2YTZgdim2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ9mK2YLZiNmFINio2KrZhtmB2YrYsCDYp9mE2KXYrNix2KfYoSDYp9mE2YXZg9mI2ZHZhiDZhNmD2YQg2K3Yr9irICjZg9mF2LPYqtiv2LnZiikg2YTZg9mEINiu2K/ZhdipINmI2YrYqCDZhdmD2YjZkdmG2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfZhdis2YXZiNi52Kkg2KfZhNil2LDZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYpdis2LHYp9ihINil2LHZgdin2YIg2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYudmG2LXYsSDYqtmD2YjZitmGIElUU00g2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KfYs9iq2K7Yr9in2YUg2LTYp9i02Kkg2KfZhNio2K3YqyDYudmGINi52YbYtdixINiq2YPZiNmK2YYgSVRTTSDZgdmKINmI2KfYrNmH2Kkg2KfZhNi52YXZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINi02KfYtNipINi52LHYtiDYtNis2LHYqSDYudmG2KfYtdixINiq2YPZiNmK2YYgSVRTTSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYqtmD2KjZitixINi52YbYtdixINiq2YPZiNmK2YYgSVRTTSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINi02KfYtNipINil2LbYp9mB2Kkg2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINi02KfYtNipINi52YbYp9i12LEg2KrZg9mI2YrZhiBJVFNNINin2YTZhdis2YXYudipINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINi02KfYtNipINiq2K3YsdmK2LEg2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINi02KfYtNipINi52YbYtdixINiq2YPZiNmK2YYg2YXYrdmB2YjYuNin2KogSVRTTSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KfYs9iq2K7Yr9in2YUg2LTYp9i02Kkg2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNINmE2YTYt9io2KfYudipINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfYp9mE2KfZhdiq2YrYp9iy2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2K3YsNmBINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAn2LnZhtin2LXYsSDYqtmD2YjZitmGINin2YTYqNit2KsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICfZgtmFINio2KrYudmK2YrZhiDYrdin2YTYqSDYp9mE2K3Yp9iv2Ksg2YTZhdiu2KjYsSDYrNmG2KfYptmKINiq2YTZgtin2KbZitin2Ysg2LnZhtivINix2KjYtyDYqtiw2YPYsdipINio2YXYrtio2LEg2KzZhtin2KbZii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZitmC2YjZhSDYqNiq2LnZitmK2YYg2K3Yp9mE2Kkg2KfZhNmG2LTYsSDZgdmKINin2YTYtNin2LTYqSDYp9mE2YXYrNmF2LnYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2YLZiNmFINio2KrYudmK2YrZhiDYrdin2YTYqSDYp9mE2K3Yp9iv2Ksg2YHZiiDYp9mE2LTYp9i02Kkg2KfZhNmF2KzZhdi52Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2K7Yp9i1INio2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYudix2LYg2LHYp9io2LfZi9inINmB2Yog2KfZhNmC2KfYptmF2Kkg2YrYs9mF2K0g2KjYsdio2Lcg2LnZhti12LEg2KrZg9mI2YrZhiDZhdi5INmD2KfYptmGINii2K7YsSDZgdmKINi52LHYtiDYqtmD2KjZitixINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KXYuNmH2KfYsSDYsdin2KjYtyDZgdmKINin2YTZgtin2KbZhdipINmE2YTZiNi12YjZhCDYpdmE2Ykg2YXYrdmB2YjYuNin2Kog2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZhti42LHYqSDYudin2YXYqSDYudmE2Ykg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYudix2LYg2LHYp9io2LfZi9inINmB2Yog2KfZhNmC2KfYptmF2Kkg2YTZhNmI2LXZiNmEINil2YTZiSDZhdit2YHZiNi42KfYqiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINi52LHYtiDYp9mE2KrZg9io2YrYsSDYp9mE2K7Yp9i1INio2Ycg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZiti52LHYtiDYsdin2KjYt9in2Ysg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNit2LDZgSDYudmG2LXYsSDYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmD2KjZitixL9in2YTYqti12LrZitixINin2YTYrtin2LUg2KjZhyDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn2KXYuNmH2KfYsSDYsdin2KjYtyDZgdmKINin2YTZgtin2KbZhdipINmE2LnYsdi2INix2YjYp9io2Lcg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDZg9i32LHZitmC2Kkg2LnYsdi2INin2YTYtNis2LHYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYpdi42YfYp9ixINin2LHYqtio2KfYtyDZgdmKINin2YTZgtin2KbZhdipINmE2KrZg9ix2KfYsSDYudmG2LXYsSDYqtmD2YjZitmGINmB2Yog2YbYuNix2Kkg2LnYp9mF2Kkg2LnZhNmJINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2LnYsdi2INix2KfYqNi3INmB2Yog2KfZhNmC2KfYptmF2Kkg2YTYqtmD2LHYp9ixINi52YbYtdixINiq2YPZiNmK2YYg2YHZiiDYudix2LYg2KfZhNiq2YPYqNmK2LEg2KfZhNiu2KfYtSDYqNmHINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZiti52LHYtiDYsdin2KjYt9in2Ysg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNiq2K3YsdmK2LEg2LnZhti12LEg2KrZg9mI2YrZhiDZgdmKINi52LHYtiDYp9mE2KrZg9io2YrYsS/Yp9mE2KrYtdi62YrYsSDYp9mE2K7Yp9i1INio2Ycg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9il2LjZh9in2LEg2LHYp9io2Lcg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNmE2LHYrNmI2Lkg2YHZiiDYudix2LYg2KrZg9io2YrYsSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2LnYsdi2INix2KfYqNi32YvYpyDZgdmKINin2YTZgtin2KbZhdipINmE2LfYqNin2LnYqSDYudmG2LXYsSDYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmD2KjZitixL9in2YTYqti12LrZitixINin2YTYrtin2LUg2KjZhyDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2LnYsdi2INix2KfYqNi32KfZiyDZgdmKINin2YTZgtin2KbZhdipINmE2KrZg9io2YrYsSDYudmG2LXYsSDYqtmD2YjZitmGINmB2Yog2YbYuNix2Kkg2LnYp9mF2Kkg2LnZhNmJINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZiti52LHYtiDZhdit2YHZiNi42KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGICjYqtix2KrZitioINi52YPYs9mKKSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICfYp9mE2YHYptipINin2YTYp9mB2KrYsdin2LbZitipINin2YTYqtmKINiq2LjZh9ix2Iwg2KXYsNinINmE2YUg2YrYqtmFINiq2K3Yr9mK2K8g2KPZiiDZgdim2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfZhdi52LHZkdmBINi52YbYtdixINin2YTYqtmD2YjZitmG2Iwg2LnZhNmJINiz2KjZitmEINin2YTZhdir2KfZhCBDb25maWdJdGVtI9iMIE15Q29uZmlnSXRlbSMuINin2YTYp9mB2KrYsdin2LbZiiDZh9mIIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ9mK2YLZiNmFINio2KrYtNi62YrZhCDZhdiz2KrYr9i52YogQ29uZmlnSXRlbUZldGNoINiq2YTZgtin2KbZitmL2KcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICfYqti52KjZitixINiz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAn2YjYrdiv2Kkg2LPZhNiz2YTYqSDYp9mE2KXYtdiv2KfYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICfZhdi02LrZhCDYp9mE2KXYtdiv2KfYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAn2YXYpyDYpdiw2Kcg2YPYp9mGINmK2YXZg9mGINiq2KzZhtioINiq2YbZgdmK2LAgQ29uZmlnSXRlbUFDTCDYudmGINi32LHZitmCINin2YTYqtit2YLZgiDZhdmGINiq2KjYudmK2KfYqiDYp9mE2K3ZgtmI2YQg2KfZhNmF2K7YstmG2Kkg2YXYpNmC2KrZi9inLiDZitmF2YPZhiDYo9mGINmK2KTYr9mKINiw2YTZgyDYpdmE2Ykg2KrYrdiz2YrZhiDYo9mI2YLYp9iqINiq2K3ZhdmK2YQg2KfZhNmG2YXYp9iw2KzYjCDZiNmE2YPZhiDZitis2Kgg2KrYudi32YrZhNmH2Iwg2KXYsNinINmD2KfZhiDYs9mK2KrZhSDYp9iz2KrYrtiv2KfZhSDZiNit2K/Yp9iqIEFDTE1vZHVsZXMg2YTZgCBJVFNNQ29uZmlnb25maWdJdGVtLSDZiCBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAn2YXYpyDZh9mKINin2YTZhdi52YTZiNmF2KfYqiDYp9mE2LnYp9mF2Kkg2KfZhNiq2Yog2KrYuNmH2LEg2YHZiiDYp9mE2LnZhtmI2KfZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfYp9mE2YHYptipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ9i52KfZhNmF2YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICfZhdinINio2LnYryDYp9mE2KXZhtiq2KfYrNmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ9mF2Kcg2YLYqNmEINin2YTYpdmG2KzYp9ioJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICfZhdmG2KrYrNipJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNy41INio2YjYtdipICg0NC40NSDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSDYqNmI2LXYqSAoNTMuMzQg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYuMjUg2KjZiNi12KkgKDY2LjY4INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEuNSDYqNmI2LXYqSAoODAuMDEg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAn2K3Yp9mF2YQgMTkg2KjZiNi12KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLjc1INio2YjYtdipICg0LjQ1INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUg2KjZiNi12KkgKDg4Ljkg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAn2LHZgSAyMSDYqNmI2LXYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LjUg2KjZiNi12KkgKDk3Ljc5INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJ9ix2YEgMjMg2KjZiNi12KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMy42INio2YjYtdipICg2MDAg2YXZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyINio2YjYtdipICgxMDYuNjgg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LjI1INio2YjYtdipICgxMjAuMDIg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMuNSDYqNmI2LXYqSAoOC44OSDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Mi41INio2YjYtdipICgxMzMuMzUg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMS41INio2YjYtdipICg4MDAg2YXZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3Ljc1INio2YjYtdipICgxNDYuNjgg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNS40INio2YjYtdipICg5MDAg2YXZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzINio2YjYtdipICgxNjAuMDIg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzkuNCDYqNmI2LXYqSAoMTAwMCDZhdmFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjguMjUg2KjZiNi12KkgKDE3My4zNSDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LjI1INio2YjYtdipICgxMy4zNCDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3My41INio2YjYtdipICgxODYuNjkg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLjMg2KjZiNi12KkgKDExMDAg2YXZhSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OC43NSDYqNmI2LXYqSAoMjAwLjAyINiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LjIg2KjZiNi12KkgKDEyMDAg2YXZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0INio2YjYtdipICgyMTMuMzYg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyDYqNmI2LXYp9iqICgxNy43OCDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4Ljc1INio2YjYtdipICgyMi4yMyDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMC41INio2YjYtdipICgyNi42NyDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIuMjUg2KjZiNi12KkgKDMxLjEyINiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCDYqNmI2LXYqSAoMzUuNTYg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1Ljc1INio2YjYtdipICg0MC4wMSDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ9in2YTZhdit2KfYs9io2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICfYqtiu2LXZiti1INin2YTYudmG2YjYp9mGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfYp9mE2YXYr9mK2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAn2YfYp9iq2YEg2KrZhtin2LjYsdmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAn2YbZiNi5INin2YTYrNmH2KfYsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ9iz2LnYqSDYp9mE2KjYt9in2LHZitipICjYotmHKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICfZhtmI2Lkg2KfZhNio2LfYp9ix2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ9in2YTYqNmG2KfYoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn2YjYp9is2YfYqSDYp9mE2K3Yp9mB2YTYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAn2YjYrdiv2Kkg2KfZhNmF2LnYp9mE2KzYqSDYp9mE2YXYsdmD2LLZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ9mB2KbYqSDZiNit2K/YqSDYp9mE2YXYudin2YTYrNipINin2YTZhdix2YPYstmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ9in2YTYs9i52KkgKNi62YrYutin2KjYp9mK2KopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn2KfZhNiz2LnYqSDZhNmD2YQg2KjYt9in2YLYqSDYsdiz2YjZhdin2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfYsdmC2YUg2KfZhNio2LfYp9mC2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICfZgtin2LHYpiDYp9mE2KjYt9in2YLYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ9mG2YjYuSDYp9mE2KjYt9in2YLYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn2LTZh9in2K/Yp9iqINin2YTYudmF2YrZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICfYqNix2YbYp9mF2Kwg2KfZhNi52YXZitmEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ9mB2KbYqSDYp9mE2LnZhdmK2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAn2LnZgtin2LHYqCDYp9mE2LPYp9i52KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ9iz2LHYudipINin2YTYs9in2LnYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn2LTZh9in2K/Yp9iqINiq2YjZgtmK2Lkg2KfZhNix2YXZiNiyINin2YTZhdi02YHYsdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICfZh9in2KrZgSDYp9mE2YXYpNiq2YXYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ9in2YTYp9iq2YHYp9mC2YrYqSDYp9mE2KfYs9iq2LTYp9ix2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAn2KfYqti12YQg2KjZhtinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfYp9iq2LXZhCDYqNin2YTZhdmI2LLYuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ9il2K/Yp9ix2Kkg2KfZhNit2KfZiNmK2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ9in2YTYudmC2K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ9mG2YjYuSDYp9mE2LnZgtivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAn2YHYqtix2Kkg2KfZhNi52YLYryDZhdmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ9mB2KrYsdipINin2YTYudmC2K8g2K3YqtmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ9mH2KfYqtmBINmE2KfYs9mE2YPZiiAo2YfYp9iq2YEgREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAn2YjYrdiv2Kkg2KfZhNiq2YPZhNmB2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICfYudiv2K8g2KfZhNiq2LHYp9iu2YrYtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAn2KrYp9ix2YrYriDYp9mE2KXZhti02KfYoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn2LHZgSDZhdiu2LXYtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCDZhdit2KzZiNiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICfYrtin2K/ZhSDYrtmI2KfYr9mFIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn2KrYp9ix2YrYriDYp9mE2YHYp9iq2YjYsdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICfYqtin2LHZitiuINin2YTYt9mE2KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ9iq2KfYsdmK2K4g2KfZhNi22YXYp9mGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ9iq2KfYsdmK2K4g2KfZhNil2LXYr9in2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ9iz2LfYrSDYp9mE2YXZg9iq2KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICfZhdmG2YHYsCDYp9mE2LnYsdi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn2LTZh9in2K/Yp9iqINiq2YjZgtmK2Lkg2KfZhNmF2LPYqtmG2K/Yp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAn2LHZgSBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICfYtNmH2KfYr9in2Kog2KfZhNio2LHZitivINin2YTYpdmE2YPYqtix2YjZhtmKICjYtNmH2KfYr9in2KogUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICfYudmC2K8g2KfZhNi52YXZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ9i52YbZiNin2YYgSVAg2KfZhNmG2YfYp9im2YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICfZhtmH2KfZitipINin2YTYr9i52YUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICfYqtin2LHZitiuINin2YbYqtmH2KfYoSDYp9mE2LXZhNin2K3ZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICfZhdit2LHZgyDYo9mC2LHYp9i1INi12YTYqNipINiu2KfYsdis2YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICfYrNiv2KfYsSDYp9mE2K3Zhdin2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ9in2YTYqNix2KfZhdisINin2YTYq9in2KjYqtipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAn2KrYrtiy2YrZhiDYp9mE2LfYp9mC2Kkg2YHZiiDYr9mI2YTYp9ioINin2YTZhdmI2KfYstmG2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICfYudin2YXZhCDYp9mE2LTZg9mEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICfYp9iq2YHYp9mC2YrYqSDYp9mE2KfZhdiq2YrYp9iyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn2KjYsdmG2KfZhdisINmF2KzYp9mG2YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn2YXYudmE2YjZhdin2Kog2LnYp9mF2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICfYqNi32KfZgtin2Kog2KfZhNix2LPZiNmF2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAn2KjYt9in2YLYqSDYp9mE2LHYs9mI2YXYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAn2KfZhNij2KzZh9iy2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICfZhtmF2YjYsNisINin2YTYo9is2YfYstipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ9mI2LLZhiDYp9mE2KPYrNmH2LLYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAn2LPZhdin2LnYqSDYp9mE2LHYo9izJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAn2KjYsdmI2KrZiNmD2YjZhCBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICfYpdiv2KfYsdipINin2YTZh9mI2YrYqSDZiNin2YTZiNi12YjZhCAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAn2LHZgtmFINin2YTZhdiu2LLZiNmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAn2KrZg9in2YTZitmBINin2YTYudin2YPYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ9ix2YLZhSDYp9mE2YHYp9iq2YjYsdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn2YTZiNit2Kkg2KfZhNmF2YHYp9iq2YrYrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICfYtNin2LTYqSBMQ0QgKNi02KfYtNipINin2YTYudix2LYg2KfZhNio2YTZiNix2YrYqSDYp9mE2LPYp9im2YTYqSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ9i02KfYtNipIExFRCAo2KfZhNi12YXYp9mFINin2YTYq9mG2KfYptmKINin2YTYqNin2LnYqyDZhNmE2LbZiNihKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICfYp9mE2YfYp9iq2YEg2KfZhNij2LHYttmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ9mD2YXYqNmK2YjYqtixINmF2K3ZhdmI2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICfYrti3INin2YTYudix2LYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICfYp9mE2LfYqNmC2KkgMTog2KfZhNi32KjZgtipINin2YTZgdmK2LLZitin2KbZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ9in2YTYt9io2YLYqSAyOiDYt9io2YLYqSDYp9ix2KrYqNin2Lcg2KfZhNio2YrYp9mG2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAn2KfZhNi32KjZgtipIDM6INi32KjZgtipINin2YTYtNio2YPYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICfYp9mE2LfYqNmC2KkgMzog2LfYqNmC2Kkg2KfZhNi02KjZg9ipICjYp9mE2LTYqNmD2Kkg2KfZhNmB2KfYptmC2KkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ9in2YTYt9io2YLYqSA0OiDYt9io2YLYqSDYp9mE2YbZgtmEIDQ6INi32KjZgtipINin2YTZhtmC2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ9in2YTYt9io2YLYqSA1OiDYt9io2YLYqSDYp9mE2KzZhNiz2KkgNTog2LfYqNmC2Kkg2KfZhNis2YTYs9ipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ9in2YTYt9io2YLYqSA2OiDYt9io2YLYqSDYp9mE2LnYsdi2INin2YTYqtmC2K/ZitmF2YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICfYp9mE2LfYqNmC2KkgNzog2LfYqNmC2Kkg2KfZhNiq2LfYqNmK2YLYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ9i52YLYryDYp9mE2KXZitis2KfYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ9in2KrZgdin2YLZitipINin2YTYqtix2K7Ziti1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICfZhdmB2KrYp9itINin2YTYqtix2K7Ziti1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ9mG2YjYuSDYp9mE2KrYsdiu2YrYtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAn2YHYqtix2Kkg2KfZhNiq2LHYrtmK2LUg2YXZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ9mB2KrYsdipINin2YTYqtix2K7Ziti1INit2KrZiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn2KjYt9in2LHZitipINmE2YrYq9mK2YjZhSDZgdmI2LPZgdin2Kog2KfZhNit2K/ZitivIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn2KjYt9in2LHZitipINmE2YrYq9mK2YjZhSDYo9mK2YjZhiAo2YTZitir2YrZiNmFINij2YrZiNmGKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ9in2KrZgdin2YLZitipINin2YTZgtix2LYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ9iq2YLYuSDZgdmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ9iu2Lcg2KfZhNi32YjZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ9in2YTYtNix2YPYqSDYp9mE2YXYtdmG2LnYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAn2LPYudipINin2YTYqtit2YXZitmEINin2YTZgti12YjZiSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAn2KfZhNiw2KfZg9ix2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICfZhtmI2Lkg2KfZhNiw2KfZg9ix2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ9ix2YEg2LXYutmK2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ9ix2YLZhSDYp9mE2YfYp9iq2YEg2KfZhNmF2K3ZhdmI2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAn2YXZiNio2KfZitmEL9mF2LbZhdmR2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICfYp9mE2LfYsdin2LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICfZiNi12YEg2KfZhNi32LHYp9iyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ9iv2YLYqSDYp9mE2LTYp9i02KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAn2K3YrNmFINin2YTYtNin2LTYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ9in2YTZgdij2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ9in2YTYtNio2YPYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfZhdi52YTZiNmF2KfYqiDYp9mE2LTYqNmD2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ9mF2LnZhNmI2YXYp9iqINin2YTYtNio2YPYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAn2LfYqNmC2Kkg2KfZhNi02KjZg9ipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAn2KjYt9in2LHZitipINin2YTZhtmK2YPZhCDZiNin2YTZg9in2K/ZhdmK2YjZhSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICfYqNi32KfYsdmK2Kkg2YfZitiv2LHZitivINin2YTZhtmK2YPZhC3Yp9mE2YXYudiv2YYgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ9in2KrZgdin2YLZitipINi52K/ZhSDYp9mE2KXZgdi12KfYrSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ9iv2YHYqtixINin2YTZhdmE2KfYrdi42KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ9i52K/YryDZiNit2K/Yp9iqINin2YTZhdi52KfZhNis2Kkg2KfZhNmF2LHZg9iy2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICfYudiv2K8g2YjYrdiv2KfYqiDYsNin2YPYsdipINin2YTZiNi12YjZhCDYp9mE2LnYtNmI2KfYptmKIChSQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ9i52K/YryDYqNi32KfZgtin2Kog2KfZhNix2LPZiNmF2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAn2LTYp9i02KkgT0xFRCAo2KfZhNi12YXYp9mFINin2YTYq9mG2KfYptmKINin2YTYqNin2LnYqyDZhNmE2LbZiNihINin2YTYudi22YjZiiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAn2KrZg9in2YTZitmBINin2YTYqti02LrZitmEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ9ix2YLZhSDYp9mE2LfZhNioJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn2KPYrtix2YknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ9in2YTZhdiu2LHYrNin2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAn2LHZgtmFINin2YTYqti52LHZitmBINin2YTYtNiu2LXZiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ9ix2YLZhSDYp9mE2KrYudix2YrZgSDYp9mE2LTYrti12YogMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICfYp9iq2YHYp9mC2YrYqSDYp9mE2LTYsdin2YPYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ9ix2YLZhSDYp9mE2YfYp9iq2YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ9mG2YjYuSDYp9mE2YfYp9iq2YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfYp9mE2YbZiNmJINin2YTZhdin2K/ZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAn2KrZiNi12YrZhCDYp9mE2LfYp9mC2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICfYqtmFINi02LHYp9ik2YfYpyDZhdmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICfYudmF2YIg2KfZhNit2KfZhdmEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAn2YjYrdiv2KfYqiDYp9mE2K3Yp9mF2YQgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfYp9mE2LrYsdmB2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICfYqNi32KfZgtipIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ9i02YfYp9iv2KfYqiBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAn2LnZgtivINin2YTYqNmK2LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAn2YfYp9iq2YEg2YrYudmF2YQg2KjYp9mE2KPZgtmF2KfYsSDYp9mE2LXZhtin2LnZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ9io2LfYp9ix2YrYqSDYrdmF2LYg2KfZhNix2LXYp9i1INin2YTZhdiu2KrZiNmF2KkgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICfYp9mE2LHZgtmFINin2YTYqtiz2YTYs9mE2YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAn2KjYsdmF2KzZitin2Kog2KfZhNiu2KfYr9mFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAn2KfYqtmB2KfZgtmK2Kkg2KfZhNiu2K/ZhdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAn2KjYt9in2YLYqSDYp9mE2K7Yr9mF2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAn2YbZiNi5INin2YTZhdmC2KjYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ9in2YTYqNix2YXYrNmK2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ9mF2YPYqNix2KfYqiDYp9mE2LXZiNiqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ9mC2YrYp9iz2YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ9io2K/YoSDYudmG2YjYp9mGIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICfYp9mE2KrYrtiy2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ9mC2LPZhSDYp9mE2KrYrtiy2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ9i02LHZg9ipINmB2LHYudmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ9in2YTZhdmE2K7YtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ9in2YTYudmF2YrZhCDYp9mE2LHZgtmK2YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ9in2YTYrtmK2YjYtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ9in2YTYtdin2LnZgtipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICfYpdis2YXYp9mE2Yog2LDYp9mD2LHYqSDYp9mE2YjYtdmI2YQg2KfZhNi52LTZiNin2KbZiiDZhNio2LfYp9mC2Kkg2KfZhNix2LPZiNmF2KfYqiAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAn2KXYrNmF2KfZhNmKINiw2KfZg9ix2Kkg2KfZhNmI2LXZiNmEINin2YTYudi02YjYp9im2YogKNis2YrYrNin2KjYp9mK2KopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICfYtNin2LTYqSDYqti52YXZhCDYqNin2YTZhNmF2LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICfYp9mE2KjYsdisJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICfZhdmI2LLYuSBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICfYs9mF2KfYudipINix2KPYsyDYp9mE2YjYp9mC2Lkg2KfZhNin2YHYqtix2KfYttmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAn2YHZitix2KrYtNmI2KfZhNmE2YrZhtmDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICfZh9in2KrZgSDYtdmI2KrZiiDYudio2LEg2KjYsdmI2KrZiNmD2YjZhCDYp9mE2KXZhtiq2LHZhtiqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICfZg9in2YXZitix2Kcg2KfZhNmI2YrYqCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/bg_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmJnX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfQntCx0YnQuCDQtNCw0L3QvdC4INC30LAg0YDQsNCx0L7RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICfQndCw0YHRgtGA0L7QudC60Lgg0LfQsCDQstGF0L7QtNGP0YnQuCDQtNCw0L3QvdC4INC30LAg0LfQsNGP0LLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAn0J3QsNGB0YLRgNC+0LnQutC4INC30LAg0LjQt9GF0L7QtNGP0YnQuNGC0LUg0LTQsNC90L3QuCDQt9CwINC+0YLQs9C+0LLQvtGAJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRgtC1INC10LTQuNC90LjRhtC4IENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAn0J/RgNC+0LzRj9C90LAg0L3QsCDQtNC10YTQuNC90LjRhtC40Y/RgtCwINC90LAg0LrQu9Cw0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn0J/RgNC+0LzRj9C90LAg0L3QsCDQtNC10YTQuNC90LjRhtC40Y/RgtCwINC90LAg0YDQvtC70Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAn0J/QsNC60LXRgtC4INC+0YIg0LrQu9Cw0YHQvtCy0LUgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAn0KLRg9C6INC80L7QttC10YLQtSDQtNCwINC40LzQv9C+0YDRgtC40YDQsNGC0LUg0L/QsNC60LXRgtC4INC+0YIg0LrQu9Cw0YHQvtCy0LUgUmVhZHkySW1wb3J0LCDQutC+0LjRgtC+INC/0L7QutCw0LfQstCw0YIg0L3QsNC5LdC+0LHQuNGH0LDQudC90LjRgtC1INC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLiDQnNC+0LvRjywg0L7QsdGK0YDQvdC10YLQtSDQstC90LjQvNCw0L3QuNC1LCDRh9C1INC80L7QttC1INC00LAg0YHQtSDQvdCw0LvQvtC20Lgg0LTQvtC/0YrQu9C90LjRgtC10LvQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAn0JDQutGC0YPQsNC70LjQt9C40YDQsNC90LUg0L3QsCDRgdGK0YnQtdGB0YLQstGD0LLQsNGJ0Lgg0YHRgtGA0YPQutGC0YPRgNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAn0JjQvNC/0L7RgNGC0LjRgNCw0L3QtSDQvdCwINC/0LDQutC10YLQuCDQvtGCINC60LvQsNGB0L7QstC1IFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAn0JrQu9Cw0YEg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ9Cg0L7Qu9GPINC90LAg0LXQu9C10LzQtdC90YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ9Ck0LjQu9GC0YrRgCDQt9CwINC60LvQsNGB0L7QstC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0LrQu9Cw0YEg0L7RgiDRgdC/0LjRgdGK0LrQsCwg0LfQsCDQtNCwINGB0YrQt9C00LDQtNC10YLQtSDQvdC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ9Ca0LvQsNGBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAn0JPRgNGD0L/QvtCy0L4g0LTQtdC50YHRgtCy0LjQtSDQvdCwIElUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KHRitGB0YLQvtGP0L3QuNC1INC90LAg0LjQt9C/0L7Qu9C30LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICfQodGK0YHRgtC+0Y/QvdC40LUg0L3QsCDQuNC90YbQuNC00LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ9Cb0LjQvdC6INC60YrQvCDQtNGA0YPQsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn0J3QtdCy0LDQu9C40LTQtdC9INC90L7QvNC10YAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ9Cd0L7QvNC10YDRitGCINC90LAg0LTRgNGD0LMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLCDRgSDQutC+0LnRgtC+INC00LAg0YHQtSDRgdCy0YrRgNC20LXRgtC1Lic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9Cd0LDQuNGB0YLQuNC90LAg0LvQuCDQuNGB0LrQsNGC0LUg0LTQsCDQuNC30YLRgNC40LXRgtC1INGC0L7Qt9C4INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0JjQvNC10YLQviDQvdCwINGC0L7Qt9C4INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn0JjQvNC10YLQviDQstC10YfQtSDRgdC1INC40LfQv9C+0LvQt9Cy0LAg0L7RgiDQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90Lgg0LXQu9C10LzQtdC90YLQuCDRgdGK0YEg0YHQu9C10LTQvdC40Y8g0J3QvtC80LXRgCjQsCk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQvdCwINCy0LXRgNGB0LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Cd0L7QvNC10YAg0L3QsCDQstC10YDRgdC40Y/RgtCwINC90LAg0YLQvtC30Lgg0LXQu9C10LzQtdC90YIg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn0J3QvtC80LXRgNGK0YIg0L3QsCDQstC10YDRgdC40Y/RgtCwINCy0LXRh9C1INGB0LUg0LjQt9C/0L7Qu9C30LLQsCDQvtGCINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDRgdGK0YEg0YHQu9C10LTQvdC40Y8g0L3QvtC80LXRgCjQuCk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfQodGK0YHRgtC+0Y/QvdC40LUg0L3QsCDQuNC30L/QvtC70LfQstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ9Ch0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC40L3RhtC40LTQtdC90YLQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn0JjRgdGC0L7RgNC40Y8g0L3QsCDQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YI6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ9Ch0YrQtNGK0YDQttCw0L3QuNC1INC90LAg0LjRgdGC0L7RgNC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfQktGA0LXQvNC1INC90LAg0YHRitC30LTQsNCy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ9Cj0LLQtdC70LjRh9C10L0g0LjQt9Cz0LvQtdC0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuCDQtdC70LXQvNC10L3RgtC4INC90LAg0YHRgtGA0LDQvdC40YbQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAn0J3QtSDRgdCwINC90LDQvNC10YDQtdC90Lgg0LTQsNC90L3QuCDQt9CwINC10LvQtdC80LXQvdGC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0YLQvtC30Lgg0LXQu9C10LzQtdC90YIg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn0KHRgtCw0YDRgtC40YDQsNC50YLQtSDQotGK0YDRgdC10L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfQlNCwINGC0YrRgNGB0Lgg0Lgg0LIg0L/RgNC10LTQuNGI0L3QuNGC0LUg0LLQtdGA0YHQuNC4Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ9CU0YrRgNCy0L7QstC40LTQtdC9INC40LfQs9C70LXQtCDQt9CwIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICfQndC40LLQviDQvdCwINC00YrQu9Cx0L7Rh9C40L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ9Cj0LLQtdC70LjRh9Cw0LLQsNC90LUv0LjQt9C60LvRjtGH0LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAn0JzQsNC60YHQuNC80LDQu9C90L7RgtC+INC90LjQstC+INC90LAg0LLRgNGK0LfQutC40YLQtSDQtSDQtNC+0YHRgtC40LPQvdCw0YLQviDQt9CwIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ9CY0L3RhNC+0YDQvNCw0YbQuNGPINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9Ci0LXQutGD0YnQviDRgdGK0YHRgtC+0Y/QvdC40LUg0L3QsCDQuNC30L/QvtC70LfQstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn0KLQtdC60YPRidC+INGB0YrRgdGC0L7Rj9C90LjQtSDQvdCwINC40L3RhtC40LTQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfQn9C+0YHQu9C10LTQvdCwINC/0YDQvtC80Y/QvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ9Cf0L7RgdC70LXQtNC90L4g0L/RgNC+0LzQtdC90LXQvSDQvtGCJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAn0JLQsNGI0LjRgtC1INC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ9Ci0YrRgNGB0LXQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ9Ci0LjQvyDQvdCwINC+0LHQtdC60YLQsCc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJ9Ck0LjQu9GC0YrRgCDQv9C+INGC0LjQvyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ9Cp0LUg0LHRitC00LDRgiDQuNC80L/QvtGA0YLQuNGA0LDQvdC4INGB0LvQtdC00L3QuNGC0LUg0LrQu9Cw0YHQvtCy0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn0KnQtSDQsdGK0LTQsNGCINC40LzQv9C+0YDRgtC40YDQsNC90Lgg0YHQu9C10LTQvdC40YLQtSDRgNC+0LvQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICfQntCx0YrRgNC90LXRgtC1INCy0L3QuNC80LDQvdC40LUsINGH0LUg0YnQtSDQsdGK0LTQsNGCINGB0YrQt9C00LDQtNC10L3QuCDQuCDRgdGK0L7RgtCy0LXRgtC90LjRgtC1INC00LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0Lgg0LrQu9Cw0YHQvtCy0LUgR2VuZXJhbENhdGFsb2cg0Lgg0L3Rj9C80LAg0LTQsCDQuNC80LAg0LDQstGC0L7QvNCw0YLQuNGH0L3QviDQv9GA0LXQvNCw0YXQstCw0L3QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfQmNGB0LrQsNGC0LUg0LvQuCDQtNCwINC/0YDQvtC00YrQu9C20LjRgtC1Pyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfQndGD0LbQtNCw0LXRgtC1INGB0LUg0L7RgiDQv9GA0LjQvNC10YDQvdC4INC60LvQsNGB0L7QstC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICfQlNC10YTQuNC90LjRhtC40Y/RgtCwINC90LUg0LUg0LLQsNC70LjQtNC10L0g0YXQtdGIINC90LAgWUFNTC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICfQn9GA0LXQs9C70LXQtDogSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtSDQtSDQtNCw0LTQtdC9IElEINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ9CY0LzQsNGC0LUg0L3Rg9C20LTQsCDQvtGCINC/0L7QvdC1INC10LTQuNC9INC40LfQsdGA0LDQvSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAn0J3Rj9C80LDRgtC1INC00L7RgdGC0YrQvyDQt9CwINC30LDQv9C40YEg0LTQviDRgtC+0LfQuCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YI6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICfQndC1INC1INC00LXRhNC40L3QuNGA0LDQvdCwINC00LXRhNC40L3QuNGG0LjRjyDQt9CwINC60LvQsNGBICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y/RgiDQtdC70LXQvNC10L3RgiAiJXMiINC90LUg0LUg0L3QsNC80LXRgNC10L0g0LIg0LHQsNC30LDRgtCwINC00LDQvdC90LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn0J3QtSDQvNC+0LbQsNGFINC00LAg0LjQt9GC0YDQuNGPIElEINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICfQndC1INC1INC90LDQvNC10YDQtdC90LAg0LLQtdGA0YHQuNGPINC30LAgSUQg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0LUg0LTQsNC00LXQvSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgiwg0LTRg9Cx0LvQuNGA0LDQvSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQuNC70Lgg0LjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0L3QsCDQutC70LDRgSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ9Cd0Y/QvNCwINC00L7RgdGC0YrQvyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtSDQvNC+0LbQtSDQtNCwINGB0LUg0L/QvtC60LDQttC1INGF0YDQvtC90L7Qu9C+0LPQuNGPLCDQvdC1INC1INC00LDQtNC10L0gSUQg0L3QsCDQtdC70LXQvNC10L3RgiDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn0J3QtSDQvNC+0LbQtSDQtNCwINGB0LUg0L/QvtC60LDQttC1INC40YHRgtC+0YDQuNGPLCDQvdC1INGB0LAg0LTQsNC00LXQvdC4INC/0YDQsNCy0LAg0LfQsCDQtNC+0YHRgtGK0L8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfQndC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ9Cd0L7QstCwINCy0LXRgNGB0LjRjyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn0KHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC1INCw0LrRgtGD0LDQu9C40LfQuNGA0LDQvdC+ICjQvdC+0LLQvj0lcywg0YHRgtCw0YDQvj0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn0KHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINC40L3RhtC40LTQtdC90YLQsCDQtSDQsNC60YLRg9Cw0LvQuNC30LjRgNCw0L3QviAo0L3QvtCy0L49JXMsINGB0YLQsNGA0L49JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCIChJRD0lcykg0LUg0LjQt9GC0YDQuNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAn0JTQvtCx0LDQstC10L3QsCDQtSDQstGA0YrQt9C60LAg0LrRitC8ICVzICh0eXBlPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAn0JLRgNGK0LfQutCw0YLQsCDQutGK0LwgJXMgKHR5cGU9JXMpINC1INC40LfRgtGA0LjRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICfQlNC10YTQuNC90LjRhtC40Y/RgtCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC1INCw0LrRgtGD0LDQu9C40LfQuNGA0LDQvdCwIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfQmNC80LXRgtC+INC1INCw0LrRgtGD0LDQu9C40LfQuNGA0LDQvdC+ICjQvdC+0LLQvj0lcywg0YHRgtCw0YDQvj0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICfQkNGC0YDQuNCx0YPRgtGK0YIgJXMg0LUg0LDQutGC0YPQsNC70LjQt9C40YDQsNC9INC+0YIg4oCeJXPigJwg0L3QsCDigJ4lc+KAnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICfQktC10YDRgdC40Y8gJXMg0LUg0LjQt9GC0YDQuNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtSDQtSDQtNCw0LTQtdC9IElEINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC40LvQuCBJRCDQvdCwINCy0LXRgNGB0LjRjyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn0J3QtSDQvNC+0LbQtSDQtNCwINGB0LUg0L/QvtC60LDQttC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgiwg0L3QtSDRgdCwINC00LDQtNC10L3QuCDQv9GA0LDQstCwINC30LAg0LTQvtGB0YLRitC/ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0lEINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCICVzINC90LUg0LUg0L3QsNC80LXRgNC10L0g0LIg0LHQsNC30LDRgtCwINC00LDQvdC90LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ9C+0YLQv9C10YfQsNGC0LDQvdC+INC+0YIgJXMg0LIgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ9Cf0YDQtdC/0YDQsNGC0LrQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ9Cd0LXQstCw0LvQuNC00LXQvSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQvdCwINC60LvQsNGBISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0LUg0LTQsNC00LXQvSDQuNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQvdCwINC60LvQsNGBISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ9Cd0Y/QvNCwINC00LDQtNC10L3QuCDQv9GA0LDQstCwINC30LAg0LTQvtGB0YLRitC/INC30LAg0YLQvtC30Lgg0LrQu9Cw0YEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfQkdC10Lcg0YDQtdC30YPQu9GC0LDRgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfQoNC10LfRg9C70YLQsNGC0Lgg0L7RgiDRgtGK0YDRgdC10L3QtdGC0L4g0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ9Cd0LUg0LzQvtC20LUg0LTQsCDRgdC1INC/0L7QutCw0LbQtSDQtdC70LXQvNC10L3Rgiwg0L3QtSDRgdCwINC00LDQtNC10L3QuCDQv9GA0LDQstCwINC30LAg0LTQvtGB0YLRitC/INC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICfQndC1INC1INC90LDQvNC10YDQtdC9INC10LvQtdC80LXQvdGCINC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAn0J3QtSDRgdCwINC90LDQvNC10YDQtdC90Lgg0LLQtdGA0YHQuNC4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ9C+0L/QtdGA0LDRgtC40LLQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfQstC90LjQvNCw0L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAn0LjQvdGG0LjQtNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0KHRitGB0YLQvtGP0L3QuNC10YLQviDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0YLQvtC30Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0KHRitGB0YLQvtGP0L3QuNC1INC90LAg0LjQvdGG0LjQtNC10L3RgtCwINC30LAg0YLQvtC30Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn0J3Rj9C80LAg0YDQsNC30YDQtdGI0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAn0KTQuNC70YLRitGA0YrRgiDQtSDQvdC10LLQsNC70LjQtNC10L0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICfQndC10LLQsNC70LjQtNC90Lgg0L/QsNGA0LDQvNC10YLRgNC4INC30LAg0YLRitGA0YHQtdC90LUhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAn0J/QvtC60LDQt9Cw0L3QuCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90Lgg0LXQu9C10LzQtdC90YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfQotC40L8g0YHRitGB0YLQvtGP0L3QuNC1INC90LAg0LjQt9C/0L7Qu9C30LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn0KLQtdC60YPRiSDRgtC40L8g0YHRitGB0YLQvtGP0L3QuNC1INC90LAg0LjQvdGG0LjQtNC10L3Rgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfQnNC10LbQtNGDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfQntCz0YDQsNC90LjRh9C10L3QuNGPINC90LAg0LrQu9Cw0YHQsCDQt9CwINC10LvQtdC80LXQvdGC0LAg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfQmNC30LHQtdGA0LXRgtC1INC10LTQuNC9INC40LvQuCDQv9C+0LLQtdGH0LUg0LrQu9Cw0YHQvtCy0LUsINC30LAg0LTQsCDQvtCz0YDQsNC90LjRh9C40YLQtSDQuNC30LHQuNGA0LDQtdC80LjRgtC1INC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfQntCz0YDQsNC90LjRh9C10L3QuNGPINC90LAg0LrQu9Cw0YHQsCDQt9CwINC10LvQtdC80LXQvdGC0LAg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn0JjQt9Cx0LXRgNC10YLQtSDQtdC00LjQvSDQuNC70Lgg0L/QvtCy0LXRh9C1INC60LvQsNGB0L7QstC1LCDQt9CwINC00LAg0L7Qs9GA0LDQvdC40YfQuNGC0LUg0LjQt9Cx0LjRgNCw0LXQvNC40YLQtSDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ9CU0LjQvdCw0LzQuNGH0LXQvSAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ9Ch0YLQsNGC0LjRh9C10L0gKNCy0LXRgNGB0LjRjyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAn0KLQuNC/INC/0YDQtdC/0YDQsNGC0LrQsCDQutGK0Lwg0LLRgNGK0LfQutCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfQlNCw0LvQuCDRgtCw0LfQuCDQstGA0YrQt9C60LAg0YHQtSDQvtGC0L3QsNGB0Y8g0LfQsCBDb25maWdJdGVtINC40LvQuCDQt9CwINGB0YLQsNGC0LjRh9C90LDRgtCwINCy0LXRgNGB0LjRjyDQvdCwINC+0LHQtdC60YLQsCwg0LrRitC8INC60L7QudGC0L4g0YHQtSDQv9GA0LXQv9GA0LDRidCwLiDQmNC30YfQuNGB0LvRj9Cy0LDQvdC10YLQviDQvdCwINGC0LXQutGD0YnQvtGC0L4g0YHRitGB0YLQvtGP0L3QuNC1INC90LAg0LjQvdGG0LjQtNC10L3RgtCwINGB0LUg0LjQt9Cy0YrRgNGI0LLQsCDRgdCw0LzQviDQt9CwINC00LjQvdCw0LzQuNGH0L3QuCDQstGA0YrQt9C60LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAn0JjQt9Cx0LXRgNC10YLQtSDQsNGC0YDQuNCx0YPRgtCwLCDQv9C+INC60L7QudGC0L4g0YnQtSDRgdC1INGC0YrRgNGB0Y/RgiDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICfQkdCw0LfQvtCy0LDRgtCwINGB0YLRgNGD0LrRgtGD0YDQsCDQvdC1INC1INCy0LDQu9C40LTQvdCwLiDQnNC+0LvRjywg0L/RgNC10LTQvtGB0YLQsNCy0LXRgtC1INGF0LXRiCDRgSDQtNCw0L3QvdC4INCy0YrQsiDRhNC+0YDQvNCw0YIgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICfQmNC30LjRgdC60LLQsCDRgdC1INC90LjQt9GK0YIgWUFNTCDQtNCwINC30LDQv9C+0YfQstCwINGBIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ9Cd0LUg0LzQvtC20LUg0LTQsCDRgdC1INC40LfRh9C40YHRgtC4INGC0LDQsdC70LjRhtCw0YLQsCBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICfQndC1INCx0Y/RhdCwINC+0YLQutGA0LjRgtC4INC/0L7QtNGF0L7QtNGP0YnQuCDQtNC40L3QsNC80LjRh9C90Lgg0L/QvtC70LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn0J3QtSDQvNC+0LbQtSDQtNCwINGB0LUg0LLQvNGK0LrQvdC1INCyINGC0LDQsdC70LjRhtCw0YLQsCBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ9CS0LzRitC60L3QsNGC0LggMCDRgNC10LTQsCDQsiDRgtCw0LHQu9C40YbQsNGC0LAgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvQtdC9INCx0YDQvtC5INC90LAg0LXQtNC40L0g0LXQu9C10LzQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAn0JjQvNC/0L7RgNGC0LjRgNCw0L3QtS/QtdC60YHQv9C+0YDRgtC40YDQsNC90LUg0L3QsCDQv9GA0LjQutCw0YfQtdC90Lgg0YTQsNC50LvQvtCy0LUgKNC60LDRgtC+INC/0L7RgdC70LXQtNC90Lgg0LfQsNC/0LjRgdC4INC90LAg0YDQtdC0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ9CS0LXRgNGB0LjRjyDQoNC10LTQuNGG0LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAn0JPRgNC10YjQutCwINC/0YDQuCDRgdC40L3RhdGA0L7QvdC40LfQuNGA0LDQvdC10YLQviDQvdCwINC00LXRhNC40L3QuNGG0LjQuNGC0LUuINCc0L7Qu9GPLCDQv9GA0L7QstC10YDQtdGC0LUg0LTQvdC10LLQvdC40LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICfQmNC80LDRgtC1INC00LXRhNC40L3QuNGG0LjQuCDQvdCwIElUU01Db25maWdJdGVtLCDQutC+0LjRgtC+INC90LUg0YHQsCDRgdC40L3RhdGA0L7QvdC40LfQuNGA0LDQvdC4LiDQnNC+0LvRjywg0LLQvdC10LTRgNC10YLQtSDQv9GA0L7QvNC10L3QuNGC0LUg0LIg0LTQuNC90LDQvNC40YfQvdC40YLQtSDQv9C+0LvQtdGC0LAg0L3QsCDQstCw0YjQuNGPIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn0JjQt9GC0LXQutC70LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfQn9C+0LTQtNGA0YrQttC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICfQn9C40LvQvtGCLdCy0L7QtNCw0YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9Cf0LvQsNC90LjRgNCw0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn0KDQtdC80L7QvdGCL9CS0YrQt9GB0YLQsNC90L7QstGP0LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ9CY0LfQu9GP0LfRitC7INC+0YIg0YPQv9C+0YLRgNC10LHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfQn9GA0LXQs9C70LXQttC00LDQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn0KLQtdGB0YIv0JrQsNGH0LXRgdGC0LLQtdC9INC60L7QvdGC0YDQvtC7JzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICfQn9GA0LXQs9C70LXQtCDQuCDQv9C+0YLQstGK0YDQttC00LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAn0JjQvNC/0L7RgNGC0LjRgNCw0L3QtSDQvdCwINC60LvQsNGB0L7QstC1L9GA0L7Qu9C4INC4INGB0LLRitGA0LfQsNC90LjRgtC1INGBINGC0Y/RhSDQv9C+0LvQtdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICfQn9C+INCy0YDQtdC80LUg0L3QsCDQuNC80L/QvtGA0YLQuNGA0LDQvdC10YLQviDQvdCwINC60LvQsNGB0LAg0LUg0LLRitC30L3QuNC60L3QsNC70LAg0LPRgNC10YjQutCwLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0g0KHQutGA0LjRgtC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSDQv9C+0LrQsNC30LDQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfQn9C+0LfQstC+0LvRj9Cy0LAg0YDQsNC30YjQuNGA0LXQvdC4INGD0YHQu9C+0LLQuNGPINC30LAg0YLRitGA0YHQtdC90LUg0L/RgNC4INGC0YrRgNGB0LXQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuCDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuINChINGC0LDQt9C4INGE0YPQvdC60YbQuNGPINC80L7QttC10YLQtSDQtNCwINGC0YrRgNGB0LjRgtC1INC90LDQv9GA0LjQvNC10YAg0LjQvNC10YLQviDQvdCwINC10LvQtdC80LXQvdGC0LAg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINGBINGC0LDQutC40LLQsCDRg9GB0LvQvtCy0LjRjyDQutCw0YLQviAiKCprZXkxKiYmKmtleTIqKSIg0LjQu9C4ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn0J/QvtC30LLQvtC70Y/QstCwINGA0LDQt9GI0LjRgNC10L3QuCDRg9GB0LvQvtCy0LjRjyDQt9CwINGC0YrRgNGB0LXQvdC1INCyINGC0YrRgNGB0LXQvdC10YLQviDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LrQu9C40LXQvdGC0LAuINChINGC0LDQt9C4INGE0YPQvdC60YbQuNGPINC80L7QttC10YLQtSDQtNCwINGC0YrRgNGB0LjRgtC1INC90LDQv9GA0LjQvNC10YAg0LjQvNC10YLQviDQvdCwINC10LvQtdC80LXQvdGC0LAg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINGBINGC0LDQutC40LLQsCDRg9GB0LvQvtCy0LjRjyDQutCw0YLQviAiKCprZXkxKiYmKmtleTIqKSIg0LjQu9C4ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAn0JfQsNGH0LjRgdC70LXQvdC4IEtFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdLRSDQt9Cw0YfQuNGB0LvQtdC90Lgg0L3QsCDQutC+0LzQv9Cw0L3QuNGP0YLQsCDQutC70LjQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfQmtCVLCDQt9Cw0YfQuNGB0LvQtdC90Lgg0L3QsCDQv9C+0YLRgNC10LHQuNGC0LXQuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAn0J3QsNGB0YLRgNC+0LnQutCwINC90LAgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn0J/RgNC+0LLQtdGA0Y/QstCw0LnRgtC1INC30LAg0YPQvdC40LrQsNC70L3QviDQuNC80LUg0YHQsNC80L4g0LIg0YDQsNC80LrQuNGC0LUg0L3QsCDQtdC00LjQvSDQuCDRgdGK0Ykg0LrQu9Cw0YEg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIgKOKAntC60LvQsNGB4oCcKSDQuNC70Lgg0LPQu9C+0LHQsNC70L3QviAo4oCe0LPQu9C+0LHQsNC70LXQveKAnCksINC60L7QtdGC0L4g0L7Qt9C90LDRh9Cw0LLQsCwg0YfQtSDQstGB0LXQutC4INGB0YrRidC10YHRgtCy0YPQstCw0Ykg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINGB0LUg0LLQt9C10LzQsCDQv9GA0LXQtNCy0LjQtCwg0LrQvtCz0LDRgtC+INGB0LUg0YLRitGA0YHRj9GCINC00YPQsdC70LjQutCw0YLQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0LzQvtC00YPQuyDQt9CwINC90LDQu9Cw0LPQsNC90LUg0L3QsCDRgdGF0LXQvNCwINC30LAg0LjQvNC10L3Rg9Cy0LDQvdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAn0JjQt9Cx0LXRgNC10YLQtSDQvNC+0LTRg9C7INC30LAg0L3QsNC70LDQs9Cw0L3QtSDQvdCwINGB0YXQtdC80LAg0L3QsCDQvdC+0LzQtdGA0LDRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICfQmNC30LHQtdGA0LXRgtC1INC80L7QtNGD0LssINC60L7QudGC0L4g0LTQsCDQvdCw0LvQsNCz0LAg0YHRhdC10LzQsCDRgSDQvdC40Lcg0L7RgiDQstC10YDRgdC40LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAn0JjQt9Cx0LXRgNC10YLQtSDQsNGC0YDQuNCx0YPRgtC4LCDQutC+0LjRgtC+INC00LAg0LfQsNC00LXQudGB0YLQstCw0YIg0YHRitC30LTQsNCy0LDQvdC10YLQviDQvdCwINC90L7QstCwINCy0LXRgNGB0LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAn0JjQt9Cx0LXRgNC10YLQtSDQutCw0YLQtdCz0L7RgNC40LgsINC60L7QuNGC0L4g0LTQsCDQv9GA0LjRgdCy0L7QuNGC0LUg0L3QsCDRgtC+0LfQuCDQutC70LDRgSDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAn0KTQuNC70YLRgNC4INC30LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7Qu9C+0L3QsNGC0LAg0LfQsCBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAn0JrQvtC70L7QvdC4LCDQutC+0LjRgtC+INC80L7Qs9Cw0YIg0LTQsCDRgdC1INGE0LjQu9GC0YDQuNGA0LDRgiDQsiDQv9GA0LXQs9C70LXQtNCwINC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLiDQl9Cw0LHQtdC70LXQttC60LA6INCg0LDQt9GA0LXRiNC10L3QuCDRgdCwINGB0LDQvNC+INCw0YLRgNC40LHRg9GC0Lgg0L3QsCDQtdC70LXQvNC10L3RgtCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQuCDQtNC40L3QsNC80LjRh9C90Lgg0L/QvtC70LXRgtCwIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90Lgg0LXQu9C10LzQtdC90YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn0JTQvtCx0LDQstGP0L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfQoNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LfQsCDRgdGK0LHQuNGC0LjQtSDQt9CwINC60L7QvdGE0LjQs9GD0YDQuNGA0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YIsINC60L7QudGC0L4g0L/QvtC30LLQvtC70Y/QstCwINC30LDQv9C40YHQstCw0L3QtSDQsiDRhdGA0L7QvdC+0LvQvtCz0LjRjyDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQt9CwINGB0YrQsdC40YLQuNGPINC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLCDQutC+0LnRgtC+INCw0LrRgtGD0LDQu9C40LfQuNGA0LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC00L4g0YLQtdC60YPRidCw0YLQsCDQuNC8INC00LXRhNC40L3QuNGG0LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LjRgNCw0LnRgtC1INGF0YDQvtC90L7Qu9C+0LPQuNGP0YLQsCDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfQn9C10YfQsNGCINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQuNGA0LDQvdC1INC90LAg0LzQsNGJ0LDQsdCwINC90LAg0LXQu9C10LzQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfQmNC30LPQu9C10LQg0L3QsCDQtNGK0YDQstC+0YLQviDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICfQktC10YDRgdC40Y8g0L3QsCDQtdC70LXQvNC10L3RgtCwIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMg0L7RgiDRgdC70LXQtNC90LjRgtC1INC60LvQsNGB0L7QstC1INC90Y/QvNCwINC00LAg0YHQtSDRgdGK0YXRgNCw0L3Rj9Cy0LDRgiDQvdCwINGB0YrRgNCy0YrRgNCwIEVsYXN0aWNzZWFyY2guINCX0LAg0LTQsCDQv9GA0LjQu9C+0LbQuNGC0LUg0YLQvtCy0LAg0LrRitC8INGB0YrRidC10YHRgtCy0YPQstCw0YnQuCBDSSwg0LzQuNCz0YDQsNGG0LjRj9GC0LAg0L3QsCBDSSDRgtGA0Y/QsdCy0LAg0LTQsCDRgdC1INGB0YLQsNGA0YLQuNGA0LAg0YfRgNC10Lcg0LrQvtC90LfQvtC70LDRgtCwLCDRgdC70LXQtCDQutCw0YLQviDQv9GA0L7QvNC10L3QuNGC0LUg0YLQsNC30Lgg0L7Qv9GG0LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMg0YHRitGBINGB0LvQtdC00L3QuNGC0LUg0YHRitGB0YLQvtGP0L3QuNGPINC90LAg0LLQvdC10LTRgNGP0LLQsNC90LUg0L3Rj9C80LAg0LTQsCDRgdC1INGB0YrRhdGA0LDQvdGP0LLQsNGCINC90LAg0YHRitGA0LLRitGA0LAgRWxhc3RpY3NlYXJjaC4g0JfQsCDQtNCwINC/0YDQuNC70L7QttC40YLQtSDRgtC+0LLQsCDQutGK0Lwg0YHRitGJ0LXRgdGC0LLRg9Cy0LDRidC4IENJLCDQvNC40LPRgNCw0YbQuNGP0YLQsCDQvdCwIENJINGC0YDRj9Cx0LLQsCDQtNCwINGB0LUg0YHRgtCw0YDRgtC40YDQsCDRh9GA0LXQtyDQutC+0L3Qt9C+0LvQsNGC0LAsINGB0LvQtdC0INC60LDRgtC+INC/0YDQvtC80LXQvdC40YLQtSDRgtCw0LfQuCDQvtC/0YbQuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfQm9C40LzQuNGCINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfQm9C40LzQuNGCINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC90LAg0YHRgtGA0LDQvdC40YbQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ9CR0LDQt9CwINC00LDQvdC90Lgg0LfQsCDRg9C/0YDQsNCy0LvQtdC90LjQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfQk9GA0YPQv9C+0LIg0LzQvtC00YPQuyDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC90LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ9Ch0YrQt9C00LDQstCw0LnRgtC1INC4INGD0L/RgNCw0LLQu9GP0LLQsNC50YLQtSDQtNC10YTQuNC90LjRhtC40LjRgtC1INC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC4INC10LvQtdC80LXQvdGC0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAn0KHRitC30LTQsNCy0LAg0LHQuNC70LXRgtC4INC30LAgQ29uZmlnSXRlbXMg0LIg0L7Qv9GA0LXQtNC10LvQtdC90Lgg0LzQvtC80LXQvdGC0Lgg0L7RgiDQstGA0LXQvNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICfQmtC70LjQtdC90YLQuNGC0LUg0LzQvtCz0LDRgiDQtNCwINCy0LjQttC00LDRgiDQuNGB0YLQvtGA0LjRh9C10YHQutC4INCy0LXRgNGB0LjQuCDQvdCwIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICfQmtC70LjQtdC90YLQuNGC0LUg0LjQvNCw0YIg0LLRitC30LzQvtC20L3QvtGB0YIg0YDRitGH0L3QviDQtNCwINC/0YDQtdCy0LrQu9GO0YfQstCw0YIg0LzQtdC20LTRgyDQuNGB0YLQvtGA0LjRh9C10YHQutC40YLQtSDQstC10YDRgdC40Lgg0L3QsCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICfQlNCw0L3QvdC4INC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1LCDQutC+0LjRgtC+INC00LAg0YHQtSDQuNC30L/QvtC70LfQstCw0YIg0LIg0LDRgtGA0LjQsdGD0YLQsCDQt9CwINC10LrRgNCw0L3QsCDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuCDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAuINCf0YDQuNC80LXRgDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfQlNCw0L3QvdC4INC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1LCDQutC+0LjRgtC+INC00LAg0YHQtSDQuNC30L/QvtC70LfQstCw0YIg0LIg0LDRgtGA0LjQsdGD0YLQsCDQt9CwINC10LrRgNCw0L3QsCDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuCDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAuINCf0YDQuNC80LXRgDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LDQudGC0LUg0LTQtdC50YHRgtCy0LjRjywg0L/RgNC4INC60L7QuNGC0L4g0LUg0L3QsNC70LjRh9C10L0g0LHRg9GC0L7QvSDQt9CwINC90LDRgdGC0YDQvtC50LrQuCDQsiDQv9GA0LjRgdC/0L7RgdC+0LHQu9C10L3QuNC10YLQviDQt9CwINGB0LLRitGA0LfQsNC90Lgg0L7QsdC10LrRgtC4IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuINCc0L7Qu9GPLCDQvtCx0YrRgNC90LXRgtC1INCy0L3QuNC80LDQvdC40LUsINGH0LUg0YLQtdC30Lgg0LTQtdC50YHRgtCy0LjRjyDRgtGA0Y/QsdCy0LAg0LTQsCDRgdCwINGA0LXQs9C40YHRgtGA0LjRgNCw0LvQuCDRgdC70LXQtNC90LjRgtC1IEpTINC4IENTUyDRhNCw0LnQu9C+0LLQtTogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMg0LggQ29yZS5BZ2VudCAuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LDQvdC1INC90LAg0YHRhdC10LzQsCDQvdCwIFRlbXBsYXRlOjpUb29sa2l0INC30LAg0L3QuNC30L7QstC1INC90LAg0LLQtdGA0YHQuNC4LiDQmNC30L/QvtC70LfQstCwINGB0LUg0YHQsNC80L4g0LDQutC+INC80L7QtNGD0LvRitGCIFZlcnNpb24gU3RyaW5nIE1vZHVsZSDQtSDQt9Cw0LTQsNC00LXQvSDQvdCwIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCw0LnRgtC1INC90LDQsdC+0YAg0L7RgiDRg9GB0LvQvtCy0LjRjywg0L/RgNC4INC60L7QuNGC0L4g0L3QsCDQutC70LjQtdC90YLQsCDRgdC1INGA0LDQt9GA0LXRiNCw0LLQsCDQtNCwINCy0LjQttC00LAg0LTQsNC00LXQvSDQtdC70LXQvNC10L3RgiDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAuINCj0YHQu9C+0LLQuNGP0YLQsCDQvNC+0LPQsNGCINC/0L4g0LbQtdC70LDQvdC40LUg0LTQsCDQsdGK0LTQsNGCINC+0LPRgNCw0L3QuNGH0LXQvdC4INC00L4g0L7Qv9GA0LXQtNC10LvQtdC90Lgg0LPRgNGD0L/QuCDQutC70LjQtdC90YLQuC4g0JjQvNC10YLQviDQtSDQtdC00LjQvdGB0YLQstC10L3QuNGP0YIg0LfQsNC00YrQu9C20LjRgtC10LvQtdC9INCw0YLRgNC40LHRg9GCLiDQkNC60L4g0L3QtSDRgdCwINC30LDQtNCw0LTQtdC90Lgg0LTRgNGD0LPQuCDQvtC/0YbQuNC4LCDQstGB0LjRh9C60Lgg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0YnQtSDQsdGK0LTQsNGCINCy0LjQtNC40LzQuCDQsiDRgtCw0LfQuCDQutCw0YLQtdCz0L7RgNC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC90LXQvtCx0YXQvtC00LjQvNC40YLQtSDRgNCw0LfRgNC10YjQtdC90LjRjyDQt9CwINC40LfRgtGA0LjQstCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC90LAgSVRTTSDRgSDQv9C+0LzQvtGJ0YLQsCDQvdCwINC+0LHRidC40Y8g0LjQvdGC0LXRgNGE0LXQudGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQvdC10L7QsdGF0L7QtNC40LzQuNGC0LUg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LfQsCDQv9C+0LvRg9GH0LDQstCw0L3QtSDQvdCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC4INC10LvQtdC80LXQvdGC0Lgg0YEg0L/QvtC80L7RidGC0LAg0L3QsCDQvtCx0YnQuNGPINC40L3RgtC10YDRhNC10LnRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0L3QtdC+0LHRhdC+0LTQuNC80LjRgtC1INGA0LDQt9GA0LXRiNC10L3QuNGPINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuCDQtdC70LXQvNC10L3RgtC4INGBINC/0L7QvNC+0YnRgtCwINC90LAg0L7QsdGJ0LjRjyDQuNC90YLQtdGA0YTQtdC50YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINCX0LDQtNGK0LvQttC40YLQtdC70L3QuCDRgNCw0LfRgNC10YjQtdC90LjRjyDQt9CwINC30LDQtNCw0LLQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQvdCwIElUU00g0YEg0L/QvtC80L7RidGC0LAg0L3QsCDQvtCx0YnQuNGPINC40L3RgtC10YDRhNC10LnRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQvNC+0LTRg9C7INC30LAg0L/RgNC10LPQu9C10LQsINC30LAg0LTQsCDQv9C+0LrQsNC20LUg0LzQsNC70YrQuiDQuNC30LPQu9C10LQg0L3QsCDRgdC/0LjRgdGK0Log0YEg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC4INC10LvQtdC80LXQvdGC0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0LTQsNC70Lgg0LXRgtC40LrQtdGC0LjRgtC1INC30LAg0YLQuNC/0LAg0L3QsCDQstGA0YrQt9C60LDRgtCwINGC0YDRj9Cx0LLQsCDQtNCwINGB0LUg0L/QvtC60LDQt9Cy0LDRgiDQstGK0LIg0LLRgNGK0LfQutC40YLQtSDQvdCwINCy0YrQt9C70LjRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDRgNC10LPRg9C70Y/RgNC90Lgg0LjQt9GA0LDQt9C4INC40L3QtNC40LLQuNC00YPQsNC70L3QviDQt9CwINCy0YHQtdC60Lgg0LrQu9Cw0YEg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIsINC30LAg0LTQsCDQv9GA0L7QstC10YDQuCDQuNC80LXRgtC+INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0Lgg0LTQsCDQv9C+0LrQsNC20LUg0YHRitC+0YLQstC10YLQvdC40YLQtSDRgdGK0L7QsdGJ0LXQvdC40Y8g0LfQsCDQs9GA0LXRiNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQvdCw0LvQuNGH0L3QuNGC0LUg0LrQvtC70L7QvdC4INC90LAgQ0kg0LIg0L/RgNC10LPQu9C10LTQsCDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgiDQvtGCINC60LvQsNGB0LAgQ0kuINCS0YHQtdC60Lgg0LfQsNC/0LjRgSDRgtGA0Y/QsdCy0LAg0LTQsCDRgdC1INGB0YrRgdGC0L7QuCDQvtGCINC40LzQtSDQvdCwINC60LvQsNGBINC4INC80LDRgdC40LIg0L7RgiDQvdCw0LvQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0LfQsCDRgdGK0L7RgtCy0LXRgtC90LjRjyDQutC70LDRgS4g0JfQsNC/0LjRgdC40YLQtSDQt9CwINC00LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0YLRgNGP0LHQstCwINC00LAg0L7RgtCz0L7QstCw0YDRj9GCINC90LAg0YHRhdC10LzQsNGC0LAgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0LDRgtGA0LjQsdGD0YLQsCDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC30LAg0YHQvtGA0YLQuNGA0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINGA0LXQt9GD0LvRgtCw0YLQsCDQvtGCINGC0YrRgNGB0LXQvdC10YLQviDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0LDRgtGA0LjQsdGD0YLQsCDQvdCwINC10LvQtdC80LXQvdGC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1INC30LAg0YHQvtGA0YLQuNGA0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINGA0LXQt9GD0LvRgtCw0YLQsCDQvtGCINGC0YrRgNGB0LXQvdC10YLQviDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQutC70LjQtdC90YLRgdC60LjRjyDQuNC90YLQtdGA0YTQtdC50YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQsNGC0YDQuNCx0YPRgtCwINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LfQsCDRgdC+0YDRgtC40YDQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0YDQtdC30YPQu9GC0LDRgtCwINC+0YIg0YLRitGA0YHQtdC90LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0L3QsCDRgtCw0LfQuCDQvtC/0LXRgNCw0YbQuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDRgNC10LTQsCDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDRgNC10LfRg9C70YLQsNGC0LAg0L7RgiDRgtGK0YDRgdC10L3QtdGC0L4g0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuINCd0LDQs9C+0YDQtTog0L3QsNC5LdGB0YLQsNGA0LjRj9GCINC+0YLQs9C+0YDQtS4g0J3QsNC00L7Qu9GDOiDQvdCw0Lkt0L3QvtCy0LjRj9GCINC+0YLQs9C+0YDQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0YDQtdC00LAg0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0YDQtdC30YPQu9GC0LDRgtCwINC+0YIg0YLRitGA0YHQtdC90LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQutC70LjQtdC90YLQsC4g0J3QsNCz0L7RgNC1OiDQvdCw0Lkt0YHRgtCw0YDQuNGP0YIg0L7RgtCz0L7RgNC1LiDQndCw0LTQvtC70YM6INC90LDQuS3QvdC+0LLQuNGP0YIg0L7RgtCz0L7RgNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINGA0LXQtNCwINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINGA0LXQt9GD0LvRgtCw0YLQsCDQvtGCINGC0YrRgNGB0LXQvdC10YLQviDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQvdCwINGC0LDQt9C4INC+0L/QtdGA0LDRhtC40Y8uINCd0LDQs9C+0YDQtTog0L3QsNC5LdGB0YLQsNGA0LjRj9GCINC+0YLQs9C+0YDQtS4g0J3QsNC00L7Qu9GDOiDQvdCw0Lkt0L3QvtCy0LjRgtC1INC+0YLQs9C+0YDQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0LrQvtC70L7QvdC40YLQtSDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSwg0LrQvtC40YLQviDRgdC1INC/0L7QutCw0LfQstCw0YIg0L3QsCBDSSDQsiDQv9GA0LXQs9C70LXQtNCwINC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgiDQvtGCINC60LvQsNGB0LAg0L3QsCBDSS4g0JLRgdC10LrQuCDQt9Cw0L/QuNGBINGC0YDRj9Cx0LLQsCDQtNCwINGB0LUg0YHRitGB0YLQvtC4INC+0YIg0LjQvNC1INC90LAg0LrQu9Cw0YEg0Lgg0LzQsNGB0LjQsiDQvtGCINC90LDQu9C40YfQvdC40YLQtSDQv9C+0LvQtdGC0LAg0LfQsCDRgdGK0L7RgtCy0LXRgtC90LjRjyDQutC70LDRgS4g0JfQsNC/0LjRgdC40YLQtSDQt9CwINC00LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0YLRgNGP0LHQstCwINC00LAg0L7RgtCz0L7QstCw0YDRj9GCINC90LAg0YHRhdC10LzQsNGC0LAgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAn0J7Qv9GA0LXQtNC10LvRjyDQtNGK0LvQsdC+0YfQuNC90LDRgtCwINC90LAg0L7RgtC90L7RiNC10L3QuNGP0YLQsCDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSwg0LrQvtC40YLQviDRidC1INGB0LUg0L/QvtC60LDQt9Cy0LDRgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9C+0LrQsNC30LDQvdC40Y8g0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUg0LDRgtGA0LjQsdGD0YIg0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC30LAg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0L/QvtC60LDQt9Cw0L3QuNGPINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1INCw0YLRgNC40LHRg9GCINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQt9CwINC10LrRgNCw0L3QsCDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAuINCf0YDQuNC80LXRgDogIktleSIgKNCa0LvRjtGHKSDRgtGA0Y/QsdCy0LAg0LTQsCDRgdGK0LTRitGA0LbQsCDQuNC80LXRgtC+INC90LAg0LTQuNC90LDQvNC40YfQvdC+0YLQviDQv9C+0LvQtSDQsiDRgtC+0LfQuCDRgdC70YPRh9Cw0LkgIlgiLCAiQ29udGVudCIgKNCh0YrQtNGK0YDQttCw0L3QuNC1KSDRgtGA0Y/QsdCy0LAg0LTQsCDRgdGK0LTRitGA0LbQsCDRgdGC0L7QudC90L7RgdGC0YLQsCDQvdCwINC00LjQvdCw0LzQuNGH0L3QvtGC0L4g0L/QvtC70LUg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YIg0L7RgiDRgtC40L/QsCDQvdCwINC00LjQvdCw0LzQuNGH0L3QvtGC0L4g0L/QvtC70LUsIFRleHQgKNCi0LXQutGB0YIpOiAiYSB0ZXh0IiAo0YLQtdC60YHRgiksIERyb3Bkb3duICjQv9Cw0LTQsNGJ0L4pOiAiMSIgKDEpLCBEYXRlL1RpbWUgKNCU0LDRgtCwL9GH0LDRgSk6ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnINC4INC40LvQuCBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD3RgdC10LTQvNC40YbQsDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ90J/RgNC10LTQuDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0L/QvtC00L7QsdC10LrRgtCwINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1INC90LAg0LrQu9Cw0YHQsCDigJ5JVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RguKAnC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0L3QsNC70LjRh9C90LjRgtC1INC60L7Qu9C+0L3QuCDQvdCwIENJINCyINC/0YDQtdCz0LvQtdC00LAg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YIg0L7RgiDQutC70LDRgdCwIENJLiDQktGB0LXQutC4INC30LDQv9C40YEg0YLRgNGP0LHQstCwINC00LAg0YHQtSDRgdGK0YHRgtC+0Lgg0L7RgiDQuNC80LUg0L3QsCDQutC70LDRgSDQuCDQvNCw0YHQuNCyINC+0YIg0L3QsNC70LjRh9C90Lgg0L/QvtC70LXRgtCwINC30LAg0YHRitC+0YLQstC10YLQvdC40Y8g0LrQu9Cw0YEuINCX0LDQv9C40YHQuNGC0LUg0LfQsCDQtNC40L3QsNC80LjRh9C90Lgg0L/QvtC70LXRgtCwINGC0YDRj9Cx0LLQsCDQtNCwINC+0YLQs9C+0LLQsNGA0Y/RgiDQvdCwINGB0YXQtdC80LDRgtCwIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0LLQuNGB0L7Rh9C40L3QsNGC0LAg0L3QsCDQutC+0LzQv9C+0L3QtdC90YLQsCDQvdCwINGA0LXQtNCw0LrRgtC+0YDQsCDQt9CwINCx0L7Qs9Cw0YIg0YLQtdC60YHRgiDQt9CwINGC0L7Qt9C4INC10LrRgNCw0L0uINCS0YrQstC10LTQtdGC0LUg0YfQuNGB0LvQviAo0L/QuNC60YHQtdC70LgpINC40LvQuCDQv9GA0L7RhtC10L3RgtC90LAg0YHRgtC+0LnQvdC+0YHRgiAo0L7RgtC90L7RgdC40YLQtdC70L3QsCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0LHRgNC+0Y8g0L3QsCDRgNC10LTQvtCy0LXRgtC1INC30LAg0YDQtdC00LDQutGC0L7RgNCwINC90LAg0JrQlSDQtNC10YTQuNC90LjRhtC40Lgg0LIg0LDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YDRgdC60LjRjyDQuNC90YLQtdGA0YTQtdC50YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0YDQtdC00LAg0L3QsCDQuNC90YbQuNC00LXQvdGC0L3QuNGC0LUg0YHRitGB0YLQvtGP0L3QuNGPINC+0YIg0LLQuNGB0L7QutC+ICjQvdCw0L/RgC4g0LrRgNC40YLQuNGH0L3Qvikg0LTQviDQvdC40YHQutC+ICjQvdCw0L/RgC4g0YTRg9C90LrRhtC40L7QvdCw0LvQvdC+KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINGB0YrQvtGC0LLQtdGC0L3QuNGC0LUg0YHRitGB0YLQvtGP0L3QuNGPINC90LAg0LLQvdC10LTRgNGP0LLQsNC90LUsINC/0YDQuCDQutC+0LjRgtC+INGB0LLRitGA0LfQsNC90LjRgtC1INCx0LjQu9C10YLQuCDQvNC+0LPQsNGCINC00LAg0L/QvtCy0LvQuNGP0Y/RgiDQvdCwINGB0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0L7Qs9GA0LDQvdC40YfQtdC90LjQtdGC0L4g0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LrRgNCw0L3QsCDQt9CwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0L7Qs9GA0LDQvdC40YfQtdC90LjQtdGC0L4g0LfQsCDRgtGK0YDRgdC10L3QtSDQsiDQtdC60YDQsNC90LAg0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LvQtdC80LXQvdGCINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGPINC90LAg0LDQs9C10L3RgtCwIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNC10YLQviDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQutGA0LDQvdCwIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNC10YLQviDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQutGA0LDQvdCwIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9C+0LrQsNC30LDQvdC40YLQtSDQutC+0LvQvtC90Lgg0L7RgiDQmtCVINCyINC60L7QvNC/0LvQtdC60YHQvdC40Y8g0LjQt9Cz0LvQtdC0INC90LAg0YLQsNCx0LvQuNGG0LDRgtCwINC30LAg0LLRgNGK0LfQutC4INC30LAg0LLRgdC40YfQutC4INC60LvQsNGB0L7QstC1INCa0JUuINCQ0LrQviDQvdGP0LzQsCDQt9Cw0L/QuNGBLCDRgdC1INC/0L7QutCw0LfQstCw0YIg0LrQvtC70L7QvdC40YLQtSDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0L/QvtC60LDQt9Cw0L3QuNGC0LUg0LrQvtC70L7QvdC4INC+0YIg0JrQlSDQsiDRgdC70L7QttC90LjRjyDQuNC30LPQu9C10LQg0L3QsCDRgtCw0LHQu9C40YbQsNGC0LAg0YEg0LLRgNGK0LfQutC4LCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgiDQvtGCINC60LvQsNGB0LAg0L3QsCDQmtCVLiDQktGB0LXQutC4INC30LDQv9C40YEg0YLRgNGP0LHQstCwINC00LAg0LjQvNCwINC/0YDQtdGE0LjQutGBINGBINC40LzQtdGC0L4g0L3QsCDQutC70LDRgdCwINC4INC00LLQvtC50L3QviDQtNCy0L7QtdGC0L7Rh9C40LUgKNGCLtC1LiDQutC+0LzQv9GO0YLRitGAIDo6KS4g0JjQvNCwINC90Y/QutC+0LvQutC+INCa0JUt0LDRgtGA0LjQsdGD0YLQsCwg0LrQvtC40YLQviDRgdCwINC+0LHRidC4INC30LAg0LLRgdC40YfQutC4INCa0JUgKNC/0YDQuNC80LXRgCDQt9CwINC60LvQsNGB0LAgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCX0LAg0LTQsCDRgdC1INC/0L7QutCw0LbQsNGCINC+0YLQtNC10LvQvdC4INCa0JUt0LDRgtGA0LjQsdGD0YLQuCwg0LrQsNC60YLQviDRgdCwINC00LXRhNC40L3QuNGA0LDQvdC4INCyINCa0JUt0LTQtdGE0LjQvdC40YbQuNGP0YLQsCwg0YLRgNGP0LHQstCwINC00LAg0YHQtSDQuNC30L/QvtC70LfQstCwINGB0LvQtdC00L3QsNGC0LAg0YHRhdC10LzQsCAo0L/RgNC40LzQtdGAINC30LAg0LrQu9Cw0YHQsCBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiDQkNC60L4g0L3Rj9C80LAg0LfQsNC/0LjRgSDQt9CwINCa0JUg0LrQu9Cw0YEsINGC0L7Qs9Cw0LLQsCDRgdC1INC/0L7QutCw0LfQstCw0YIg0LrQvtC70L7QvdC40YLQtSDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINC60L7QuCDQtdC70LXQvNC10L3RgtC4INGB0LAg0LTQvtGB0YLRitC/0L3QuCDQt9CwICLQlNC10LnRgdGC0LLQuNC1IiDQsiDRgtGA0LXRgtC+0YLQviDQvdC40LLQviDQvdCwINGB0YLRgNGD0LrRgtGD0YDQsNGC0LAgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQutC+0Lgg0LXQu9C10LzQtdC90YLQuCDRgdCwINC90LDQu9C40YfQvdC4INCyINC/0YrRgNCy0L7RgtC+INC90LjQstC+INC90LAg0YHRgtGA0YPQutGC0YPRgNCw0YLQsCBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQutC+0Lgg0LXQu9C10LzQtdC90YLQuCDRgdCwINC90LDQu9C40YfQvdC4INCy0YrQsiDQstGC0L7RgNC+0YLQviDQvdC40LLQviDQvdCwINGB0YLRgNGD0LrRgtGD0YDQsNGC0LAgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0LrQvtC5INGC0LjQvyDQstGA0YrQt9C60LAgKNC90LDQt9C+0LLQsNC9INC+0YIg0LPQu9C10LTQvdCwINGC0L7Rh9C60LAg0L3QsCDQsdC40LvQtdGC0LApINC80L7QttC1INC00LAg0L/QvtCy0LvQuNGP0LUg0L3QsCDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0YHQstGK0YDQt9Cw0L0g0JrQlS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINC60L7QuSDRgtC40L8g0LHQuNC70LXRgiDQvNC+0LbQtSDQtNCwINC/0L7QstC70LjRj9C1INC90LAg0YHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINGB0LLRitGA0LfQsNC9INCa0JUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAn0JDQutGC0YPQsNC70LjQt9Cw0YbQuNGPINC90LAg0L7Qv9GA0LXQtNC10LvQtdC90LjQtdGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9CY0LfRgtGA0LjQstCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGCINC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ9Cm0LLRj9GCINC30LAg0YHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINC40LfQv9C+0LvQt9Cy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ9Ch0YrRgdGC0L7Rj9C90LjQtSDQvdCwINCy0L3QtdC00YDRj9Cy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ9Cd0LDQv9GA0LDQstC4INC60L7Qv9C40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0YHRitCx0LjRgtC40Y8g0YEg0LTQuNC90LDQvNC40YfQvdC4INC/0L7Qu9C10YLQsCwg0LrQvtC50YLQviDQvNCw0YDQutC40YDQsCDQtNC10YTQuNC90LjRhtC40LjRgtC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC60LDRgtC+INC90LXRgdC40L3RhdGA0L7QvdC40LfQuNGA0LDQvdC4LCDQsNC60L4g0YHRitC00YrRgNC20LDRidC40YLQtSDQs9C4INC00LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0YHQtSDQv9GA0L7QvNC10L3Rj9GCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQvdC4INC/0L7Qu9C10YLQsCwg0L/QvtC60LDQt9Cw0L3QuCDQsiDQtdC60YDQsNC90LAg0LfQsCDQtNC+0L/RitC70L3QuNGC0LXQu9C90Lgg0L/QvtC70LXRgtCwINC90LAgSVRTTSDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQvdC4INC/0L7Qu9C10YLQsCwg0L/QvtC60LDQt9Cw0L3QuCDQsiDQtdC60YDQsNC90LAg0LfQsCDQv9GA0LXQs9C70LXQtCDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQutC70LjQtdC90YLRgdC60LjRjyDQuNC90YLQtdGA0YTQtdC50YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C90Lgg0L/QvtC70LXRgtCwLCDQv9C+0LrQsNC30LDQvdC4INCyINC10LrRgNCw0L3QsCDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ9Cg0LDQt9GA0LXRiNCw0LLQsCDRhNGD0L3QutGG0LjRj9GC0LAg0LfQsCDQs9GA0YPQv9C+0LLQviDQtNC10LnRgdGC0LLQuNC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC30LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAg0LTQsCDRgNCw0LHQvtGC0Lgg0LLRitGA0YXRgyDQv9C+0LLQtdGH0LUg0L7RgiDQtdC00LjQvSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0L3QsNCy0LXQtNC90YrQti4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LAg0YTRg9C90LrRhtC40Y/RgtCwINC30LAg0LPRgNGD0L/QvtCy0L4g0LTQtdC50YHRgtCy0LjQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDRgdCw0LzQviDQt9CwINC40LfQsdGA0L7QtdC90LjRgtC1INCz0YDRg9C/0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LAv0LTQtdCw0LrRgtC40LLQuNGA0LAg0YTRg9C90LrRhtC40L7QvdCw0LvQvdC+0YHRgtGC0LAg0LfQsCDQv9GA0L7QstC10YDQutCwINC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC90LAgSVRTTSDQt9CwINGD0L3QuNC60LDQu9C90Lgg0LjQvNC10L3QsC4g0J/RgNC10LTQuCDQtNCwINCw0LrRgtC40LLQuNGA0LDRgtC1INGC0LDQt9C4INC+0L/RhtC40Y8sINGC0YDRj9Cx0LLQsCDQtNCwINC/0YDQvtCy0LXRgNC40YLQtSDRgdC40YHRgtC10LzQsNGC0LAg0YHQuCDQt9CwINCy0LXRh9C1INGB0YrRidC10YHRgtCy0YPQstCw0YnQuCDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDRgSDQtNGD0LHQu9C40YDQsNGJ0Lgg0YHQtSDQuNC80LXQvdCwLiDQnNC+0LbQtdGC0LUg0LTQsCDQvdCw0L/RgNCw0LLQuNGC0LUg0YLQvtCy0LAg0YEg0LrQvtC90LfQvtC70L3QsNGC0LAg0LrQvtC80LDQvdC00LAgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC90LAg0YHRitCx0LjRgtC40LUg0LfQsCDQt9Cw0LTQsNCy0LDQvdC1INC30LAg0YHRitGB0YLQvtGP0L3QuNC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC30LAg0LLRgNGK0LfQutCwINC30LAg0LHQuNC70LXRgi3QutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ9Cf0L7Qu9C10YLQsCDQvtGCINC40L3QtNC10LrRgdCwINC90LAg0LXQu9C10LzQtdC90YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAsINC40LfQv9C+0LvQt9Cy0LDQvdC4INC30LAg0L/RitC70L3QvtGC0LXQutGB0YLQvtCy0L4g0YLRitGA0YHQtdC90LUuINCf0L7Qu9C10YLQsNGC0LAg0YHRitGJ0L4g0YHQtSDRgdGK0YXRgNCw0L3Rj9Cy0LDRgiwg0L3QviDQvdC1INGB0LAg0LfQsNC00YrQu9C20LjRgtC10LvQvdC4INC30LAg0YbRj9C70L7RgdGC0L3QsNGC0LAg0YTRg9C90LrRhtC40L7QvdCw0LvQvdC+0YHRgi4g0JLQutC70Y7Rh9Cy0LDQvdC10YLQviDQvdCwINC/0YDQuNC60LDRh9C10L3QuCDRhNCw0LnQu9C+0LLQtSDQvNC+0LbQtSDQtNCwINCx0YrQtNC1INC30LDQsdGA0LDQvdC10L3QviDRh9GA0LXQtyDQt9Cw0LTQsNCy0LDQvdC1INC90LAg0YHRgtC+0LnQvdC+0YHRgiAwINC40LvQuCDQuNC30YLRgNC40LLQsNC90LUg0L3QsCDQt9Cw0L/QuNGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICfQn9C+0LvQtdGC0LAsINGB0YrRhdGA0LDQvdGP0LLQsNC90Lgg0LIg0LjQvdC00LXQutGB0LAg0L3QsCDQtdC70LXQvNC10L3RgtCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCwg0LrQvtC40YLQviDRgdC1INC40LfQv9C+0LvQt9Cy0LDRgiDQt9CwINC00YDRg9Cz0Lgg0YbQtdC70LgsINC+0YHQstC10L0g0LfQsCDQv9GK0LvQvdC+0YLQtdC60YHRgtC+0LLQviDRgtGK0YDRgdC10L3QtS4g0JfQsCDQv9GK0LvQvdCw0YLQsCDRhNGD0L3QutGG0LjQvtC90LDQu9C90L7RgdGCINCy0YHQuNGH0LrQuCDQv9C+0LvQtdGC0LAg0YHQsCDQt9Cw0LTRitC70LbQuNGC0LXQu9C90LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAn0JfQsCDQstGB0Y/QutCwINGD0LXQsSDRg9GB0LvRg9Cz0LAgKNC60LvRjtGHKSDQvNC+0LbQtSDQtNCwINGB0LUg0LTQtdGE0LjQvdC40YDQsCDQvNCw0YHQuNCyINC+0YIg0LrQu9Cw0YHQvtCy0LUgKNGB0YLQvtC50L3QvtGB0YIpLCDQt9CwINC60L7QuNGC0L4g0LLQvdC+0YHRitGCINC1INC+0LPRgNCw0L3QuNGH0LXQvS4g0JfQsCDQstGB0LjRh9C60Lgg0LjQt9Cx0YDQsNC90Lgg0LrQu9Cw0YHQvtCy0LUg0LjQu9C4INC30LAg0LLRgdC40YfQutC4INGB0YrRidC10YHRgtCy0YPQstCw0YnQuCDQutC70LDRgdC+0LLQtSDQuNC00LXQvdGC0LjRhNC40YbQuNGA0LDRidC40YLQtSDQsNGC0YDQuNCx0YPRgtC4INGJ0LUg0YLRgNGP0LHQstCwINC00LAg0LHRitC00LDRgiDQuNC30LHRgNCw0L3QuCDQsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC90LAg0LjQt9Cy0LjQutCy0LDRidC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LjRgNCw0L3QtSDQvdCwINC80L7QtNGD0LsgR2VuZXJpY0ludGVyZmFjZSDQt9CwINGB0LvQvtGPINC30LAg0LjQt9Cy0LjQutCy0LDQvdC1INC90LAgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LjRgNCw0L3QtSDQvdCwINC80L7QtNGD0LsgR2VuZXJpY0ludGVyZmFjZSDQt9CwINGB0LvQvtGPINC30LAg0LjQt9Cy0LjQutCy0LDQvdC1INC90LAgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNC40YDQsNC90LUg0L3QsCDQvNC+0LTRg9C7IEdlbmVyaWNJbnRlcmZhY2Ug0LfQsCDRgdC70L7RjyDQt9CwINC40LfQstC40LrQstCw0L3QtSDQvdCwIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAn0J/RgNC10LPQu9C10LQg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LrQu9GO0YfQstCwINGB0YrRgdGC0L7Rj9C90LjRjyDQvdCwINCy0L3QtdC00YDRj9Cy0LDQvdC1INCyINGC0YrRgNGB0LXQvdC10YLQviDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC60LvQuNC10L3RgtGB0LrQuNGPINC40L3RgtC10YDRhNC10LnRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LrQu9GO0YfQstCwINGB0YrRgdGC0L7Rj9C90LjRjyDQvdCwINC40L3RhtC40LTQtdC90YLQuCDQsiDRgtGK0YDRgdC10L3QtdGC0L4g0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9C10L0g0LHRgNC+0Lkg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAsINC60L7QuNGC0L4g0LTQsCDQsdGK0LTQsNGCINC/0L7QutCw0LfQsNC90Lgg0LIg0YDQtdC30YPQu9GC0LDRgtCwINC+0YIg0YLQsNC30Lgg0L7Qv9C10YDQsNGG0LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfQnNC+0LTRg9C7INC30LAg0L/RgNC+0LLQtdGA0LrQsCDQvdCwINCz0YDRg9C/0LDRgtCwLCDQvtGC0LPQvtCy0LDRgNGP0YnQsCDQt9CwINC00LDQtNC10L0g0LrQu9Cw0YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQt9CwINC/0YDQvtCy0LXRgNC60LAg0L3QsCDQs9GA0YPQv9Cw0YLQsCwg0L7RgtCz0L7QstC+0YDQvdCwINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ9Cc0L7QtNGD0Lsg0LfQsCDQs9C10L3QtdGA0LjRgNCw0L3QtSDQvdCwINGB0YLQsNGC0LjRgdGC0LjRh9C10YHQutC4INC00LDQvdC90Lgg0LfQsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICfQmNC80LUg0L3QsCDQvNC+0LTRg9C70LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ9Cd0L7QvNC10YAg0L3QsCDQvNC+0LTRg9C70LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHRgNC+0Lkg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAsINC60L7QuNGC0L4g0LTQsCDRgdC1INC/0L7QutCw0LfQstCw0YIg0L3QsCDQstGB0Y/QutCwINGB0YLRgNCw0L3QuNGG0LAg0L7RgiDRgNC10LfRg9C70YLQsNGC0LAg0L7RgiDRgtGK0YDRgdC10L3QtdGC0L4g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0YDQvtC5INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLCDQutC+0LjRgtC+INC00LAg0YHQtSDQv9C+0LrQsNC30LLQsNGCINC90LAg0LLRgdGP0LrQsCDRgdGC0YDQsNC90LjRhtCwINC90LAg0YDQtdC30YPQu9GC0LDRgtCwINC+0YIg0YLRitGA0YHQtdC90LXRgtC+INCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAn0J7QsdC10LrRgtC4LCDQutC+0LjRgtC+INC00LAg0YHQtSDRgtGK0YDRgdGP0YIsINC60L7Qu9C60L4g0LfQsNC/0LjRgdC4INC4INC60L7QuCDQsNGC0YDQuNCx0YPRgtC4INC00LAg0YHQtSDQv9C+0LrQsNC30LLQsNGCLiDQkNGC0YDQuNCx0YPRgtC40YLQtSDQvdCwIENvbmZpZ0l0ZW0g0YLRgNGP0LHQstCwINC40LfRgNC40YfQvdC+INC00LAg0YHQtSDRgdGK0YXRgNCw0L3Rj9Cy0LDRgiDRh9GA0LXQtyBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfQn9GA0LXQs9C70LXQtC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC60LDRgtC10LPQvtGA0LjQuNGC0LUg0LfQsCDQutC70LDRgdC+0LLQtdGC0LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQt9Cz0LvQtdC00LAg0L3QsCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRj9GC0LAg0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRhNC40LvRgtGA0LjRgtC1INC90LAg0LrQvtC70L7QvdC40YLQtSDQsiDQv9GA0LXQs9C70LXQtNCwINC90LAg0LzQsNC70LrQuNGPINC10LvQtdC80LXQvdGCINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsC4g0JzQvtC70Y8sINC+0LHRitGA0L3QtdGC0LUg0LLQvdC40LzQsNC90LjQtTog0LfQsNC00LDQstCw0L3QtdGC0L4g0L3QsCDRgdGC0L7QudC90L7RgdGCICLQkNC60YLQuNCy0LXQvSIg0L3QsCAwINGJ0LUg0L/QvtC/0YDQtdGH0Lgg0YHQsNC80L4g0L3QsCDQsNCz0LXQvdGC0LjRgtC1INC00LAg0YDQtdC00LDQutGC0LjRgNCw0YIg0L3QsNGB0YLRgNC+0LnQutC40YLQtSDQvdCwINGC0LDQt9C4INCz0YDRg9C/0LAg0LIg0LvQuNGH0L3QuNGC0LUg0YHQuCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRjywg0L3QviDQstGB0LUg0L/QsNC6INGJ0LUg0L/QvtC30LLQvtC70Lgg0L3QsCDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNC40YLQtSDQtNCwINGA0LXQtNCw0LrRgtC40YDQsNGCINC90LDRgdGC0YDQvtC50LrQuNGC0LUg0L7RgiDQuNC80LXRgtC+INC90LAg0LTRgNGD0LMg0L/QvtGC0YDQtdCx0LjRgtC10LsuINCY0LfQv9C+0LvQt9Cy0LDQudGC0LUgXCdQcmVmZXJlbmNlR3JvdXBcJyAo0JPRgNGD0L/QsCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRjyksINC30LAg0LTQsCDQutC+0L3RgtGA0L7Qu9C40YDQsNGC0LUg0LIg0LrQvtGPINC+0LHQu9Cw0YHRgiDQvdCwINC/0L7RgtGA0LXQsdC40YLQtdC70YHQutC40Y8g0LjQvdGC0LXRgNGE0LXQudGBINC00LAg0YHQtSDQv9C+0LrQsNC30LLQsNGCINGC0LXQt9C4INC90LDRgdGC0YDQvtC50LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuNGC0LUg0LfQsCDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0YHQtSDQvtGG0LLQtdGC0Y/QstCw0YIg0LIg0LjQt9Cz0LvQtdC00LAg0YEg0L/RgNC10LTQv9C+0YfQuNGC0LDQvdC40Y8g0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGK0YHRgtC+0Y/QvdC40Y/RgtCwINC90LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0LIg0LjQt9Cz0LvQtdC00LAg0YEg0L/RgNC10LTQv9C+0YfQuNGC0LDQvdC40Y8g0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0L/RgNC40LzQtdGA0L3QuNGC0LUg0YDQsNC30YDQtdGI0LjRgtC10LvQvdC4INCz0YDRg9C/0Lgg0L7RgiDQsNGC0YDQuNCx0YPRgtC40YLQtSDQvdCwINC+0LHRidC40Y8g0LrQsNGC0LDQu9C+0LMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LzQvtC00YPQu9CwINC90LAg0LjQvNC10L3QsNGC0LAg0LfQsCDQutC70LDRgdC+0LLQtdGC0LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQt9Cz0LvQtdC00LAg0L3QsCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRj9GC0LAg0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC80L7QtNGD0LvQsCDQt9CwINC90L7QvNC10YDQsCDQvdCwINC60LvQsNGB0L7QstC10YLQtSDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC30LPQu9C10LTQsCDQvdCwINC/0YDQtdC00L/QvtGH0LjRgtCw0L3QuNGP0YLQsCDQvdCwINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGC0YDQsNC90LjRhtC40YLQtSAo0LIg0LrQvtC40YLQviDRgdC1INC/0L7QutCw0LfQstCw0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40YLQtSDQtdC70LXQvNC10L3RgtC4KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LzQvtC00YPQu9CwINC30LAg0L3QuNC3INC+0YIg0LLQtdGA0YHQuNC4INC30LAg0LrQu9Cw0YHQvtCy0LXRgtC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC40LfQs9C70LXQtNCwINC30LAg0L/RgNC10LTQv9C+0YfQuNGC0LDQvdC40Y8g0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDQvNC+0LTRg9C70LAg0L3QsCDQvdCw0LHQvtGA0LAg0L7RgiDQuNC90YHRgtGA0YPQvNC10L3RgtC4INC30LAg0YjQsNCx0LvQvtC90Lgg0LfQsCDQvdC40Lcg0L7RgiDQstC10YDRgdC40Lgg0LfQsCDQutC70LDRgdC+0LLQtdGC0LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQt9Cz0LvQtdC00LAg0L3QsCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRj9GC0LAg0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LfQsNC00LXQudGB0YLQstCw0L3QtSDQvdCwINCy0LXRgNGB0LjRj9GC0LAg0LfQsCDQutC70LDRgdC+0LLQtdGC0LUg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQt9Cz0LvQtdC00LAg0LfQsCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRjyDQvdCwINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ9CY0LfQstGK0YDRiNCy0LAg0LrQvtC90YTQuNCz0YPRgNC40YDQsNC90L7RgtC+INC00LXQudGB0YLQstC40LUg0LfQsCDQstGB0Y/QutC+INGB0YrQsdC40YLQuNC1ICjQutCw0YLQviBJbnZva2VyKSDQt9CwINCy0YHRj9C60LAg0LrQvtC90YTQuNCz0YPRgNC40YDQsNC90LAg0YPQtdCxINGD0YHQu9GD0LPQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ9CT0YDRg9C/0LAg0YDQsNC30YDQtdGI0LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC00LXQudGB0YLQstC40LXRgtC+INC30LAg0L/RgNC40LrQsNGH0LLQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgiDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0L3QsCBJVFNNINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0L/RgNCw0LLQsCDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0L/RgNCw0LLQsCDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzQuCDRgNCw0LfRgNC10YjQtdC90LjRjyDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQvdCwIElUU00g0LIg0LrQu9C40LXQvdGC0YHQutC40Y8g0LjQvdGC0LXRgNGE0LXQudGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INGA0LDQt9GA0LXRiNC10L3QuNGPINC30LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0L3QsCDQtdC60YDQsNC90LAg0YEg0LTRitGA0LLQvtCy0LjQtNC90LjRjyDQuNC30LPQu9C10LQg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0L3QsCBJVFNNINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzQuCDQv9GA0LDQstCwINC30LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0L3QsCDQtdC60YDQsNC90LAg0LfQsCDQvNCw0YnQsNCx0LjRgNCw0L3QtSDQvdCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INC/0YDQsNCy0LAg0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDQt9CwINC00L7QsdCw0LLRj9C90LUg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDRgSDQtdC70LXQvNC10L3RgtC40YLQtSDQt9CwINCz0YDRg9C/0L7QstCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRjyDQvdCwIElUU00g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INC/0YDQsNCy0LAg0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDQt9CwINGA0LXQtNCw0LrRgtC40YDQsNC90LUg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0L/RgNCw0LLQsCDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAg0YXRgNC+0L3QvtC70L7Qs9C40Y/RgtCwINC90LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INC/0YDQsNCy0LAg0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDQt9CwINC/0LXRh9Cw0YIg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INC/0YDQsNCy0LAg0LfQsCDQuNC30YLRgNC40LLQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfQotGK0YDRgdC10L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuCDQtdC70LXQvNC10L3RgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAn0JfQsNC00LDQudGC0LUg0LDQstGC0L7QvNCw0YLQuNGH0L3QviDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0LjQvdGG0LjQtNC10L3RgiDQvdCwINCa0JUsINC60L7Qs9Cw0YLQviDQsdC40LvQtdGC0YrRgiDQtSDRgdCy0YrRgNC30LDQvSDRgSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LLQsCDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0LIg0LPRgNGD0L/QvtCy0LjRjyDQtdC60YDQsNC9INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0LfQsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQt9CwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQstCwINGB0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDQuNC90YbQuNC00LXQvdGC0LAg0LIg0LPRgNGD0L/QvtCy0LjRjyDQtdC60YDQsNC9INC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+LCDQutC+0LXRgtC+INC/0L7Qt9Cy0L7Qu9GP0LLQsCDRgdCy0YrRgNC30LLQsNC90LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0YEg0LTRgNGD0LMg0L7QsdC10LrRgiDQsiDQuNC30LPQu9C10LTQsCDQt9CwINC80LDRidCw0LHQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINC00L7RgdGC0YrQvyDQtNC+INGF0YDQvtC90L7Qu9C+0LPQuNGP0YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQvtCx0YnQuNGPINC/0YDQtdCz0LvQtdC0INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINC00L7RgdGC0YrQvyDQtNC+INGF0YDQvtC90L7Qu9C+0LPQuNGP0YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQvdC10LPQvtCy0LjRjyDQvNCw0YnQsNCx0LjRgNCw0L0g0LjQt9Cz0LvQtdC0INC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINC40LfRgtGA0LjQstCw0L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQvdC10LPQvtCy0LjRjyDRg9Cy0LXQu9C40YfQtdC9INC40LfQs9C70LXQtCDQvtGCINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINC/0L7QutCw0LfQstCw0L3QtSDQvdCwINCy0YDRitC30LrQuNGC0LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LrQsNGC0L4g0LTRitGA0LLQvtCy0LjQtNC10L0g0LjQt9Cz0LvQtdC0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQstCwINCy0YDRitC30LrQsCDQsiDQvNC10L3RjtGC0L4g0LfQsCDQtNGD0LHQu9C40YDQsNC90LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0L/RgNC4INC/0YDQtdCz0LvQtdC00LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiDQvdCwINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+INC30LAg0LTRg9Cx0LvQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC90LXQs9C+0LLQuNGPINC80LDRidCw0LHQuNGA0LDQvSDQuNC30LPQu9C10LQg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQstCwINCy0YDRitC30LrQsCDQsiDQvNC10L3RjtGC0L4g0LfQsCDRgNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC90LXQs9C+0LLQuNGPINC80LDRidCw0LHQuNGA0LDQvSDQuNC30LPQu9C10LQg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQstCwINCy0YDRitC30LrQsCDQsiDQvNC10L3RjtGC0L4g0LfQsCDQstGA0YrRidCw0L3QtSDQsiDQuNC30LPQu9C10LTQsCDQt9CwINC80LDRidCw0LHQuNGA0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+INC30LAg0L7RgtC/0LXRh9Cw0YLQstCw0L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQvdC10LPQvtCy0LjRjyDQvNCw0YnQsNCx0LjRgNCw0L0g0LjQt9Cz0LvQtdC0INC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINGD0LLQtdC70LjRh9Cw0LLQsNC90LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC/0YDQtdCz0LvQtdC00LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiDQvtGCINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0YXRgNC+0L3QvtC70L7Qs9C40Y/RgtCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40Y8g0LXQu9C10LzQtdC90YIgKNCyINC+0LHRgNCw0YLQtdC9INGA0LXQtCkg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ9Ca0LDRgtC10LPQvtGA0LjRjyDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSwg0LrQvtGP0YLQviDRgdC1INC/0L7QutCw0LfQstCwLCDQsNC60L4g0L3QtSDQtSDQuNC30LHRgNCw0L3QsCDRgtCw0LrQsNCy0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgNGK0YIg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIsINC90LDQv9GALiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4g0J/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUg0LUgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAn0JfQsNC00LXQudGB0YLQstCwINCw0LLRgtC+0LzQsNGC0LjRh9C90L4g0LjQt9Cy0LjQutCy0LDQvdC10YLQviDQvdCwIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ9CS0LXRgNGB0LjRjyDQodGC0YDQuNC90LMg0LjQt9GA0LDQt9GP0LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAn0JLQtdGA0YHQuNGPINCh0YLRgNGD0L3QtdC9INC80L7QtNGD0LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAn0JLQtdGA0YHQuNGPIFRyaWdnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ9CU0LDQu9C4INC40LfQv9GK0LvQvdC10L3QuNC10YLQviDQvdCwIENvbmZpZ0l0ZW1BQ0wg0LzQvtC20LUg0LTQsCDQsdGK0LTQtSDQuNC30LHQtdCz0L3QsNGC0L4g0YfRgNC10Lcg0L/RgNC+0LLQtdGA0LrQsCDQvdCwINC60LXRiNC40YDQsNC90LjRgtC1INC30LDQstC40YHQuNC80L7RgdGC0Lgg0L3QsCDQv9C+0LvQtdGC0LDRgtCwLiDQotC+0LLQsCDQvNC+0LbQtSDQtNCwINC/0L7QtNC+0LHRgNC4INCy0YDQtdC80LXRgtC+INC30LAg0LfQsNGA0LXQttC00LDQvdC1INC90LAg0YTQvtGA0LzRg9C70Y/RgNC40YLQtSwg0L3QviDRgtGA0Y/QsdCy0LAg0LTQsCDQsdGK0LTQtSDQtNC10LDQutGC0LjQstC40YDQsNC90L4sINCw0LrQviBBQ0xNb2R1bGVzINGC0YDRj9Cx0LLQsCDQtNCwINGB0LUg0LjQt9C/0L7Qu9C30LLQsNGCINC30LAgSVRTTUNvbmZpZ0l0ZW0tINC4IEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICfQmtC+0Y8g0L7QsdGJ0LAg0LjQvdGE0L7RgNC80LDRhtC40Y8g0LUg0L/QvtC60LDQt9Cw0L3QsCDQsiDQt9Cw0LPQu9Cw0LLQuNC10YLQvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfQutC70LDRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfQs9C70L7QsdCw0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn0L/QvtGB0YLQv9GA0L7QtNGD0LrRgtC40LLQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfQv9GA0LXQv9GA0L7QtNGD0LrRgtC40LLQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICfQv9GA0L7QtNGD0LrRgtC40LLQtdC9JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1INC40L3Rh9CwICg0NCw0NSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSDQuNC90YfQsCAoNTMsMzQg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUg0LjQvdGH0LAgKDY2LDY4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSDQuNC90YfQsCAoODAsMDEg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkt0LjQvdGH0L7QsiDRgdGC0LXQu9Cw0LYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1INC40L3Rh9CwICg0LDQ1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUg0LjQvdGH0LAgKDg4LDkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEt0LjQvdGH0L7QsiDQsdCw0LPQsNC20L3QuNC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSDQuNC90YfQsCAoOTcsNzkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMt0LjQvdGH0L7QstCwINGB0YLQvtC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYg0LjQvdGH0LAgKDYwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIg0LjQvdGH0LAgKDEwNiw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUg0LjQvdGH0LAgKDEyMCwwMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1INC40L3Rh9CwICg4LDg5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUg0LjQvdGH0LAgKDEzMywzNSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUg0LjQvdGH0LAgKDgwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUg0LjQvdGH0LAgKDE0Niw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQg0LjQvdGH0LAgKDkwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMg0LjQvdGH0LAgKDE2MCwwMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0INC40L3Rh9CwICgxMDAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSDQuNC90YfQsCAoMTczLDM1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUg0LjQvdGH0LAgKDEzLDM0INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUg0LjQvdGH0LAgKDE4Niw2OSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyDQuNC90YfQsCAoMTEwMCDQvNC8KTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1INC40L3Rh9CwICgyMDAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiDQuNC90YfQsCAoMTIwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQg0LjQvdGH0LAgKDIxMywzNiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3INC40L3Rh9CwICgxNyw3OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1INC40L3Rh9CwICgyMiwyMyDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1INC40L3Rh9CwICgyNiw2NyDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUg0LjQvdGH0LAgKDMxLDEyINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCDQuNC90YfQsCAoMzUsNTYg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1INC40L3Rh9CwICg0MCwwMSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ9Ch0YfQtdGC0L7QstC+0LTRgdGC0LLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ9Cg0LDQt9C/0YDQtdC00LXQu9C10L3QuNC1INC90LAg0LDQtNGA0LXRgdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfQkNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICfQkNC90LDQu9C+0LPQvtCyINGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAn0KLQuNC/INC90LAg0YPRgNC10LTQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ9Ca0LDQv9Cw0YbQuNGC0LXRgiDQvdCwINCx0LDRgtC10YDQuNGP0YLQsCAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ9Ci0LjQvyDQsdCw0YLQtdGA0LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ9Ch0LPRgNCw0LTQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn0JjQvdGC0LXRgNGE0LXQudGBINC90LAg0YjQuNC90LDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICfQn9GA0L7RhtC10YHQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ9Ca0LvQsNGBINC90LAg0L/RgNC+0YbQtdGB0L7RgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICfQmtCw0L/QsNGG0LjRgtC10YIgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ9Ca0LDQv9Cw0YbQuNGC0LXRgiDQvdCwINCz0YDQsNGE0LjRh9C90LAg0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0L3QsCDQutCw0YDRgtCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ9Cn0LXRgtC10YYg0L3QsCDQutCw0YDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ9Ci0LjQvyDQutCw0YDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICfQmtC70LjQtdC90YLRgdC60Lgg0YHQtdGA0YLQuNGE0LjQutCw0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICfQmtC70LjQtdC90YLRgdC60Lgg0YHQvtGE0YLRg9C10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAn0JrQsNGC0LXQs9C+0YDQuNGPINC90LAg0LrQu9C40LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAn0KfQsNGB0L7QstC90LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAn0KHQutC+0YDQvtGB0YIg0L3QsCDRh9Cw0YHQvtCy0L3QuNC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNC40LrQsNGC0Lgg0LfQsCDQv9C+0LTQv9C40YHQstCw0L3QtSDQvdCwINC60L7QtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAn0JrQvtC90YTQtdGA0LXQvdGC0LXQvSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ9Ch0L/QvtGA0LDQt9GD0LzQtdC90LjQtSDQt9CwINC60L7QvdGB0YPQu9GC0LjRgNCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAn0KHQstGK0YDQttC10YLQtSDRgdC1INGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfQodCy0YrRgNC20LXRgtC1INGB0LUg0YEg0LTQuNGB0YLRgNC40LHRg9GC0L7RgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0L3QsCDQutC+0L3RgtC10LnQvdC10YDQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ9CU0L7Qs9C+0LLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICfQktC40LQg0L3QsCDQtNC+0LPQvtCy0L7RgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAn0KHRgNC+0Log0L3QsCDQtNC+0LPQvtCy0L7RgNCwINC+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAn0KHRgNC+0Log0L3QsCDQtNC+0LPQvtCy0L7RgNCwINC00L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAn0JHQtdC30LbQuNGH0LXQvSDRgtC10LvQtdGE0L7QvSAoREVDVCDRgtC10LvQtdGE0L7QvSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAn0KDQsNC30YXQvtC00L3QsCDQtdC00LjQvdC40YbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ9CR0YDQvtC5INC90LAg0LvQuNGG0LXQvdC30LjRgtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICfQlNCw0YLQsCDQvdCwINGB0YrQt9C00LDQstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn0J/QvtGC0YDQtdCx0LjRgtC10LvRgdC60Lgg0YHRgtC10LvQsNC2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQINCX0LDQv9Cw0LfQtdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy3RgdGK0YDQstGK0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ9CU0LDRgtCwINC90LAg0YTQsNC60YLRg9GA0LDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICfQlNCw0YLQsCDQvdCwINC/0L7RgNGK0YfQutCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAn0JTQsNGC0LAg0L3QsCDQuNC30LTQsNCy0LDQvdC1INC90LAg0LPQsNGA0LDQvdGG0LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAn0JTQsNGC0LAg0L3QsCDQuNC30LTQsNCy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfQndCw0YHRgtC+0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfQodC10YDRgtC40YTQuNC60LDRgtC4INC30LAg0L/QvtC00L/QuNGB0LLQsNC90LUg0L3QsCDQtNC+0LrRg9C80LXQvdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ9Ch0LXRgNGC0LjRhNC40LrQsNGC0Lgg0LfQsCDQtdC70LXQutGC0YDQvtC90L3QsCDQv9C+0YnQsCAoUy9NSU1FINGB0LXRgNGC0LjRhNC40LrQsNGC0LgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ9Ci0YDRg9C00L7QsiDQtNC+0LPQvtCy0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ9Ca0YDQsNC10L0gSVAg0LDQtNGA0LXRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ9Ca0YDQsNC5INC90LAg0L/QvtC00LrRgNC10L/QsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICfQlNCw0YLQsCDQvdCwINC40LfRgtC40YfQsNC90LUg0L3QsCDQstCw0LvQuNC00L3QvtGB0YLRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICfQktGK0L3RiNC10L0g0YLQstGK0YDQtCDQtNC40YHQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ9CX0LDRidC40YLQvdCwINGB0YLQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICfQpNGK0YDQvNGD0LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ9Ch0YrRhdGA0LDQvdC10L3QuNC1INC90LAg0LXQvdC10YDQs9C40Y8g0YfRgNC10Lcg0LzQsNGF0L7QstC40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICfQpNCw0LrRgtC+0YAg0L3QsCDRhNC+0YDQvNCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAn0KHQv9C+0YDQsNC30YPQvNC10L3QuNC1INC30LAg0YTRgNCw0L3Rh9Cw0LnQtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ9CR0LXQt9C/0LvQsNGC0L3QviDRgNCw0LfQv9GA0L7RgdGC0YDQsNC90Y/QstCw0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn0J7QsdGJ0LAg0LjQvdGE0L7RgNC80LDRhtC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICfQk9GA0LDRhNC40YfQvdC4INC60LDRgNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ9CT0YDQsNGE0LjRh9C90LAg0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ9Cl0LDRgNC00YPQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAn0JzQvtC00LXQuyDQvdCwINGF0LDRgNC00YPQtdGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAn0KLQtdCz0LvQviDQvdCwINGF0LDRgNC00YPQtdGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ9Ch0LvRg9GI0LDQu9C60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCDQv9GA0L7RgtC+0LrQvtC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC90LAg0LjQtNC10L3RgtC40YfQvdC+0YHRgtGC0LAg0Lgg0LTQvtGB0YLRitC/0LAgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ9CY0L3QstC10L3RgtCw0YDQtdC9INC90L7QvNC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICfQoNCw0LfRhdC+0LTQuCDQt9CwINC40L3QstC10YDRgtC40YDQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfQndC+0LzQtdGAINC90LAg0YTQsNC60YLRg9GA0LDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn0JrQu9Cw0LLQuNCw0YLRg9GA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEINC80L7QvdC40YLQvtGAICjQtNC40YHQv9C70LXQuSDRgSDRgtC10YfQvdC4INC60YDQuNGB0YLQsNC70LgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQg0LzQvtC90LjRgtC+0YAgKNGB0LLQtdGC0LvQvtC40LfQu9GK0YfQstCw0Ykg0LTQuNC+0LQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ9Ch0YLQsNGG0LjQvtC90LDRgNC10L0g0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn0J/RgNC10L3QvtGB0LjQvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ9CT0LXQvtCz0YDQsNGE0YHQutCwINGI0LjRgNC40L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ9Ch0LvQvtC5IDE6INCk0LjQt9C40YfQtdGB0LrQuCDRgdC70L7QuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICfQodC70L7QuSAyOiDQodC70L7QuSDQt9CwINCy0YDRitC30LrQsCDRgSDQtNCw0L3QvdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfQodC70L7QuSAzOiDQnNGA0LXQttC+0LIg0YHQu9C+0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAn0KHQu9C+0LkgMzog0JzRgNC10LbQvtCyINGB0LvQvtC5ICjRgdGD0L/QtdGA0LzRgNC10LbQsCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAn0KHQu9C+0LkgNDog0KLRgNCw0L3RgdC/0L7RgNGC0LXQvSDRgdC70L7QuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAn0KHQu9C+0LkgNTog0KHQu9C+0Lkg0L3QsCDRgdC10YHQuNGP0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICfQodC70L7QuSA2OiDQodC70L7QuSDQvdCwINC/0YDQtdC00YHRgtCw0LLRj9C90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICfQodC70L7QuSA3OiDQodC70L7QuSDQvdCwINC/0YDQuNC70L7QttC10L3QuNC10YLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICfQodC/0L7RgNCw0LfRg9C80LXQvdC40LUg0LfQsCDQu9C40LfQuNC90LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICfQodC/0L7RgNCw0LfRg9C80LXQvdC40LUg0LfQsCDQu9C40YbQtdC90LcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ9Ca0LvRjtGHINC30LAg0LvQuNGG0LXQvdC3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ9CS0LjQtCDQu9C40YbQtdC90LcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ9Cf0LXRgNC40L7QtCDQvdCwINC70LjRhtC10L3Qt9CwINC+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICfQodGA0L7QuiDQvdCwINC70LjRhtC10L3Qt9CwINC00L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ9CR0LDRgtC10YDQuNGPINC+0YIg0LvQuNGC0LjQtdCy0L4t0LbQtdC70LXQt9C10L0g0YTQvtGB0YTQsNGCIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn0JvQuNGC0LjQtdCy0L4t0LnQvtC90L3QsCAoTGktaW9uKSDQsdCw0YLQtdGA0LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ9Ch0L/QvtGA0LDQt9GD0LzQtdC90LjQtSDQt9CwINC30LDQtdC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICfQndCw0LzQuNGA0LAg0YHQtSDQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICfQlNGK0LvQttC40L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ9Cf0YDQvtC40LfQstC+0LTQuNGC0LXQuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAn0JzQsNC60YHQuNC80LDQu9C10L0g0LrQsNC/0LDRhtC40YLQtdGCINC90LAg0L3QsNGC0L7QstCw0YDQstCw0L3QtSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAn0J/QsNC80LXRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ9Ci0LjQvyDQv9Cw0LzQtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ9Cc0L7QsdC40LvQtdC9INC90L7QvNC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAn0JzQvtCx0LjQu9C90Lgv0LLQs9GA0LDQtNC10L3QuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ9Cc0L7QtNC10LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICfQntC/0LjRgdCw0L3QuNC1INC90LAg0LzQvtC00LXQu9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ9Cg0LXQt9C+0LvRjtGG0LjRjyDQvdCwINC80L7QvdC40YLQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAn0KDQsNC30LzQtdGAINC90LAg0LzQvtC90LjRgtC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ9Cc0LjRiNC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ9Cc0YDQtdC20LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAn0JjQvdGE0L7RgNC80LDRhtC40Y8g0LfQsCDQvNGA0LXQttCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAn0JjQvdGE0L7RgNC80LDRhtC40Y8g0LfQsCDQvNGA0LXQttCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAn0JzRgNC10LbQvtCy0L4g0L3QuNCy0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICfQndC40LrQtdC7LdC60LDQtNC80LjQtdCy0LAgKE5pQ2QpINCx0LDRgtC10YDQuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAn0J3QuNC60LXQuy3QvNC10YLQsNC70YXQuNC00YDQuNC00L3QsCAoTmlNSCkg0LHQsNGC0LXRgNC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAn0KHQv9C+0YDQsNC30YPQvNC10L3QuNC1INC30LAg0L3QtdGA0LDQt9C60YDQuNCy0LDQvdC1INC90LAg0LjQvdGE0L7RgNC80LDRhtC40Y8gKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICfQkdC10LvQtdC20L3QuNC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAn0JHRgNC+0Lkg0L/RgNC+0YbQtdGB0L7RgNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ9CR0YDQvtC5INC80L7QtNGD0LvQuCBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAn0JHRgNC+0Lkg0LPRgNCw0YTQuNGH0L3QuCDQutCw0YDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEINC80L7QvdC40YLQvtGAICjQvtGA0LPQsNC90LjRh9C10L0g0YHQstC10YLQvtC40LfQu9GK0YfQstCw0Ykg0LTQuNC+0LQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ9Ce0L/QtdGA0LDRgtC40LLQvdC4INGA0LDQt9GF0L7QtNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0L3QsCDQv9C+0YDRitGH0LrQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfQlNGA0YPQs9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfQmNC30YXQvtC00LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAn0J/QmNCdIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAn0KHQv9C+0YDQsNC30YPQvNC10L3QuNC1INC30LAg0L/QsNGA0YLQvdGM0L7RgNGB0YLQstC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn0KLQtdC70LXRhNC+0L3QtdC9INC90L7QvNC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ9Ci0LjQvyDQvdCwINGC0LXQu9C10YTQvtC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfQpNC40LfQuNGH0LXRgdC60Lgg0Y/QtNGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICfQlNC+0YHRgtCw0LLQutCwINC90LAg0LXQvdC10YDQs9C40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICfQl9Cw0LrRg9C/0LXQvdC+INCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICfQlNGK0LvQsdC+0YfQuNC90LAg0L3QsCDRgdGC0LXQu9Cw0LbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ9CV0LTQuNC90LjRhtC4INC30LAg0YHRgtC10LvQsNC2IChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn0KHRgtCw0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0g0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMg0YHQtdGA0YLQuNGE0LjQutCw0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ9CU0L7Qs9C+0LLQvtGAINC30LAg0L/RgNC+0LTQsNC20LHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICfQodCw0YLQtdC70LjRgtC10L0g0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAn0JfQsNC/0LXRh9Cw0YLQsNC90LAg0L7Qu9C+0LLQvdC+LdC60LjRgdC10LvQuNC90L3QsCDQsdCw0YLQtdGA0LjRjyAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ9Ch0LXRgNC40LXQvSDQvdC+0LzQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ9Ch0L7RhNGC0YPQtdGAINC30LAg0YHRitGA0LLRitGA0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfQodC/0L7RgNCw0LfRg9C80LXQvdC40LUg0LfQsCDRg9GB0LvRg9Cz0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfQodC10YDQstC40LfQtdC9INC10YLQuNC60LXRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICfQotC40L8g0LPQvdC10LfQtNC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn0KHQvtGE0YLRg9C10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICfQktC40YHQvtC60L7Qs9C+0LLQvtGA0LjRgtC10LvQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfQodGC0LDQvdC00LDRgNGC0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAn0J3QsNGH0LDQu9C10L0gSVAg0LDQtNGA0LXRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAn0KHRitGF0YDQsNC90LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICfQoNCw0LfQtNC10Lsg0LfQsCDRgdGK0YXRgNCw0L3QtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ9CU0YrRidC10YDQvdC+INC00YDRg9C20LXRgdGC0LLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAn0KDQtdC30Y7QvNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAn0KLRitC90YrQuiDQutC70LjQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ9Cd0LjRiNC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAn0J7QsdGJ0LAg0L7Qv9C10YDQsNGC0LjQstC90LAg0L/QsNC80LXRgiDQvdCwINCz0YDQsNGE0LjRh9C90LDRgtCwINC60LDRgNGC0LAgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ9Ce0LHRidC+IFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICfQnNC+0L3QuNGC0L7RgCDRgdGK0YEg0YHQtdC90LfQvtGA0LXQvSDQtdC60YDQsNC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAn0JrRg9C70LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiDQutC+0L3RhtC10L3RgtGA0LDRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICfQodC70YPRiNCw0LvQutC4INC30LAgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUCDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAn0KPQtdCxINC60LDQvNC10YDQsCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/ca_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmNhX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnUmVhbG1lbnQgZGVzaXRqYSBlbGltaW5hciBhcXVlc3QgaW52b2NhZG9yPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ1RlbXBzIGRlIGNyZWFjacOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Zpc3RhIGRlIHpvb20nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdFeGVjdXRhciByZWNlcmNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICdUaXB1cyBkXCdvYmplY3RlJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmlsdHJhciBwZXIgdGlwdXMnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyw6huY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdBdGVuY2nDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTm8gdMOpIFBlcm3DrXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0V4cGlyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Jlc3VtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZsOtY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnRm9ybXVsYXJpIGRlIHJlc3VsdGF0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0Fjb3JkIGRlIE5pdmVsbCBkZSBTZXJ2ZWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ0VzdMOgbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/cs_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmNzX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdPYmVjbsOpIHByb3Zvem7DrSDDumRhamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ05hc3RhdmVuw60gcHJvIHDFmcOtY2hvesOtIGRhdGEgcG/FvmFkYXZrxa8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdOYXN0YXZlbsOtIHBybyBvZGNob3rDrSBkYXRhIG9kcG92xJtkw60nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdTcHLDoXZhIEtvbmZpZ3VyYcSNbsOtY2ggUG9sb8W+ZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdabcSbbmEgZGVmaW5pY2UgdMWZw61keSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnWm3Em25hIGRlZmluaWNlIHJvbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdTdmF6a3kgdMWZw61kIFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ1pkZSBtxa/FvmV0ZSBpbXBvcnRvdmF0IHN2YXpreSB0xZnDrWQgUmVhZHkySW1wb3J0LCBrdGVyw6kgcMWZZWRzdGF2dWrDrSBuYcWhZSBuZWpvYnZ5a2xlasWhw60gcG9sb8W+a3kga29uZmlndXJhY2UuIFZlem3Em3RlIHByb3PDrW0gbmEgdsSbZG9tw60sIMW+ZSBtxa/FvmUgYsO9dCB2ecW+YWRvdsOhbmEgZGFsxaHDrSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQWt0dWFsaXphY2Ugc3TDoXZhasOtY8OtY2ggc3ViamVrdMWvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0IHN2YXprxa8gdMWZw61kIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnVMWZw61kYSBwb2xvxb5reSBrb25maWd1cmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnUm9sZSBwb2xvxb5reSBrb25maWd1cmFjZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWcuIFBvbG/FvmthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRyIHBybyB0xZnDrWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ0NoY2V0ZS1saSB2eXR2b8WZaXQgbm92b3UgcG9sb8W+a3Uga29uZmlndXJhY2UsIHZ5YmVydGUgemUgc2V6bmFtdSB0xZnDrWR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ1TFmcOtZGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdIcm9tYWRuw6EgYWtjZSBJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ1N0YXYgTmFzYXplbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnU3RhdiBJbmNpZGVudHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnT2RrYXogbmEgZGFsxaHDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTmVzcHLDoXZuw6kgxI3DrXNsbyBrb25maWd1cmHEjW7DrSBwb2xvxb5reSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnxIzDrXNsbyBqaW7DqSBwb2xvxb5reSBrb25maWd1cmFjZSwgc2Uga3Rlcm91IHNlIG3DoSBwcm9wb2ppdC4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdPcHJhdmR1IGNoY2V0ZSB0dXRvIHBvbG/Fvmt1IGtvbmZpZ3VyYWNlIG9kc3RyYW5pdD8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSm3DqW5vIHTDqXRvIEtvbmZpZy4gUG9sb8W+a3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ07DoXpldiBqZSBqacW+IHBvdcW+w612w6FuIHBvbG/FvmtvdSBDb25maWdJdGVtcyBzIG7DoXNsZWR1asOtY8OtbSDEjcOtc2xlbSAoxI3DrXNseSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnxIzDrXNsbyB2ZXJ6ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnxIzDrXNsbyB2ZXJ6ZSB0w6l0byBwb2xvxb5reSBrb25maWd1cmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ8SMw61zbG8gdmVyemUgamUgamnFviBwb3XFvml0byB2IHBvbG/FvmNlIENvbmZpZ0l0ZW1zIHMgbsOhc2xlZHVqw61jw61tIMSNw61zbGVtICjEjcOtc2x5KTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXYgTmFzYXplbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnU3RhdiBJbmNpZGVudHUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0hpc3RvcmllIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdPYnNhaCBoaXN0b3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnRG9iYSB2eXR2b8WZZW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdQxZlpYmzDrcW+ZW7DrSB6b2JyYXplbsOtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ1BvbG/Fvmt5IGtvbmZpZ3VyYWNlIG5hIHN0csOhbmt1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOZWJ5bGEgbmFsZXplbmEgxb7DoWRuw6EgZGF0YSBwb2xvxb5reSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWeWJlcnRlIHR1dG8gcG9sb8W+a3Uga29uZmlndXJhY2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdTcHVzdGl0IHZ5aGxlZMOhdsOhbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0hsZWRhdCB0YWvDqSB2IHDFmWVkY2hvesOtY2ggdmVyesOtY2g/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnWm9icmF6ZW7DrSBzdHJvbXUgcHJvIHBvbG/Fvmt1IENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICfDmnJvdmXFiCBobG91Ymt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnUMWZaWJsw63FvmVuw60vb2Rkw6FsZW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdQcm8gQ29uZmlnSXRlbSBieWxvIGRvc2HFvmVubyBtYXhpbcOhbG7DrSDDunJvdm7EmyBvZGthesWvISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1BvbG/FvmthIGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjZSBvIHBvbG/FvmNlIGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0FrdHXDoWxuw60gU3RhdiBOYXNhemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0FrdHXDoWxuw60gU3RhdiBJbmNpZGVudHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnUG9zbGVkbsOtIHptxJtuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdQb3NsZWRuw60gem3Em25hIG9kJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVmHFoWUgcG9sb8W+a3kgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnVnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsgQ29uZmlnSXRlbSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnVHlwIG9iamVrdHUnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0cm92YXQgcG9kbGUgdHlwdSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0J1ZG91IGltcG9ydG92w6FueSBuw6FzbGVkdWrDrWPDrSB0xZnDrWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0J1ZG91IGltcG9ydG92w6FueSBuw6FzbGVkdWrDrWPDrSByb2xlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1bFoWltbsSbdGUgc2ksIMW+ZSBidWRvdSB2eXR2b8WZZW5hIHRha8OpIG9kcG92w61kYWrDrWPDrSBkeW5hbWlja8OhIHBvbGUgYSB0xZnDrWR5IEdlbmVyYWxDYXRhbG9nIGEgbmVkb2pkZSBrIGplamljaCBhdXRvbWF0aWNrw6ltdSBvZHN0cmFuxJtuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnQ2hjZXRlIHBva3JhxI1vdmF0Pyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdQb3TFmWVidWpldGUgcMWZw61rbGFkb3bDqSB0xZnDrWR5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbmljZSBuZW7DrSBwbGF0bsO9IGhhc2ggWUFNTC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdQxZllaGxlZDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lbsOtIHphZMOhbm8gxb7DoWRuw6kgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1BvdMWZZWJ1amV0ZSBhbGVzcG/FiCBqZWRudSB2eWJyYW5vdSBwb2xvxb5rdSBrb25maWd1cmFjZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdLIHTDqXRvIGtvbmZpZ3VyYcSNbsOtIHBvbG/FvmNlIG5lbcOhdGUgcHLDoXZvIHrDoXBpc3U6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdQcm8gdMWZw61kdSAlcyBuZWJ5bGEgZGVmaW5vdsOhbmEgxb7DoWRuw6EgZGVmaW5pY2UhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdLb25maWd1cmHEjW7DrSBwb2xvxb5rYSAiJXMiIG5lYnlsYSB2IGRhdGFiw6F6aSBuYWxlemVuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdEZWZpbnVqZSBwb8SNZXQgxZnDoWRrxa8gZWRpdG9ydSBkZWZpbmljZSBDSSB2IHJvemhyYW7DrSBzcHLDoXZjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ1BybyBDb25maWdJdGVtSUQgJXMgbmVieWxhIG5hbGV6ZW5hIMW+w6FkbsOhIHZlcnplISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOZW7DrSB1dmVkZW5vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgYW5pIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdQxZnDrXN0dXAgbmVuw60gdW1vxb5uxJtuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZWx6ZSB6b2JyYXppdCBoaXN0b3JpaSwgbmVuw60gemFkw6FubyBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmVsemUgem9icmF6aXQgaGlzdG9yaWksIG5lanNvdSBkw6FuYSDFvsOhZG7DoSBwxZnDrXN0dXBvdsOhIHByw6F2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vdsO9IHBydmVrIGtvbmZpZ3VyYWNlIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05vdsOhIHZlcnplIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGF2IG5hc2F6ZW7DrSBha3R1YWxpem92w6FuIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdiBpbmNpZGVudHUgYWt0dWFsaXpvdsOhbiAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIG9kc3RyYW7Em24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdQxZlpZMOhbiBvZGtheiBuYSAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ09ka2F6IG5hICVzICh0eXBlPSVzKSBvZHN0cmFuxJtuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbmljZSBwb2xvxb5reSBDb25maWdJdGVtIGFrdHVhbGl6b3bDoW5hIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOw6F6ZXYgYWt0dWFsaXpvdsOhbiAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dCAlcyBha3R1YWxpem92w6FuIHogIiVzIiBuYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnplICVzIG9kc3RyYW7Em25hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05lbsOtIHV2ZWRlbm8gxb7DoWRuw6kgQ29uZmlnSXRlbUlEIGFuaSBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lbHplIHpvYnJheml0IHBvbG/Fvmt1IGtvbmZpZ3VyYWNlLCBuZWpzb3UgemFkw6FuYSDFvsOhZG7DoSBwxZnDrXN0dXBvdsOhIHByw6F2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbmVieWxvIHYgZGF0YWLDoXppIG5hbGV6ZW5vISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAndnl0acWhdMSbbm8gJXMgbmEgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ1BhcmFtZXRyeSBzdHLDoW5layAobmEga3RlcsO9Y2ggc2Ugem9icmF6dWrDrSBrb25maWd1cmHEjW7DrSBwb2xvxb5reSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmVuw60gdXZlZGVubyDFvsOhZG7DqSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ1BybyB0dXRvIHTFmcOtZHUgbmVqc291IGTDoW5hIMW+w6FkbsOhIHDFmcOtc3R1cG92w6EgcHLDoXZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnxb3DoWRuw70gdsO9c2xlZGVrISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1bDvXNsZWRreSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTmVsemUgem9icmF6aXQgcG9sb8W+a3UsIG5lanNvdSB6YWTDoW5hIMW+w6FkbsOhIHDFmcOtc3R1cG92w6EgcHLDoXZhIHBybyBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdQb2xvxb5rYSBDb25maWdJdGVtIG5lYnlsYSBuYWxlemVuYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTmVieWx5IG5hbGV6ZW55IMW+w6FkbsOpIHZlcnplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ3Byb3Zvem7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAndmFyb3bDoW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ1ZlcnplICVzIG9kc3RyYW7Em25hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGF2IE5hc2F6ZW7DrSB0w6l0byBLb25maWcuIFBvbG/Fvmt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhdiBJbmNpZGVudHUgdMOpdG8gS29uZmlnLiBQb2xvxb5reSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ8W9w6FkbsOpIHBvdm9sZW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ciBqZSBuZXBsYXRuw70hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdIbGVkw6Fuw60gcGFyYW1zIGplIG5lcGxhdG7DqSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdab2JyYXplbsOpIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1R5cCBzdGF2dSBuYXNhemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwIGFrdHXDoWxuw61obyBzdGF2dSBpbmNpZGVudHUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnTWV6aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnT21lemVuw60gdMWZw61keSBwcm8gcG9sb8W+a3Uga29uZmlndXJhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1bDvWLEm3JlbSBqZWRuw6kgbmVibyB2w61jZSB0xZnDrWQgb21lesOtdGUgdnliw61yYXRlbG7DqSBwb2xvxb5reSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ09tZXplbsOtIHTFmcOtZHkgcHJvIHBvbG/Fvmt1IGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVsO9YsSbcmVtIGplZG7DqSBuZWJvIHbDrWNlIHTFmcOtZCBvbWV6w610ZSB2eWLDrXJhdGVsbsOpIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFtaWNrw6kgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKHZlcnplKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXAgb2RrYXp1IE9ka2F6b3bDoW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdaZGEgc2UgdGVudG8gb2RrYXogdnp0YWh1amUgbmEgQ29uZmlnSXRlbSBuZWJvIHN0YXRpY2tvdSB2ZXJ6aSBvZGthenVqw61jw61obyBvYmpla3R1LiBWw71wb8SNZXQgYWt0dcOhbG7DrWhvIHN0YXZ1IGluY2lkZW50dSBzZSBwcm92w6Fkw60gcG91emUgdSBkeW5hbWlja8O9Y2ggb2RrYXrFry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWeWJlcnRlIGF0cmlidXQsIHBvZGxlIGt0ZXLDqWhvIHNlIGJ1ZG91IGhsZWRhdCBwb2xvxb5reSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdaw6FrbGFkbsOtIHN0cnVrdHVyYSBuZW7DrSBwbGF0bsOhLiBQb3NreXRuxJt0ZSBoYXNoIHMgZGF0eSB2ZSBmb3Jtw6F0dSBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ8WYZXTEm3plYyBZQU1MIG11c8OtIHphxI3DrW5hdCB6bmFrZW0gXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTmVwb2RhxZlpbG8gc2UgdnnEjWlzdGl0IHRhYnVsa3UgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTmVieWxhIG5hbGV6ZW5hIMW+w6FkbsOhIHJlbGV2YW50bsOtIGR5bmFtaWNrw6EgcG9sZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ05lbHplIHZsb8W+aXQgZG8gdGFidWxreSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ1Zsb8W+ZW5vIDAgxZnDoWRrxa8gZG8gdGFidWxreSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWF4IHBvxI1ldCBqZWRuw6kgUG9sb8W+a3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnSW1wb3J0L2V4cG9ydCBwxZnDrWxvaCAoamFrbyBwb3NsZWRuw60gcG9sb8W+a3kgbmEgxZnDoWRrdSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJ6ZSDFmGV0xJt6ZWMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnQ2h5YmEgcMWZaSBzeW5jaHJvbml6YWNpIGRlZmluaWMuIFprb250cm9sdWp0ZSBwcm9zw61tIHByb3Rva29sLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ03DoXRlIGRlZmluaWNlIElUU01Db25maWdJdGVtLCBrdGVyw6kgbmVqc291IHN5bmNocm9uaXpvdsOhbnkuIE5hc2HEj3RlIHptxJtueSBkeW5hbWlja8O9Y2ggcG9sw60gSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdQcm9wYWRudXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ8OaZHLFvmJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnxZjDrWTDrWPDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnTmFwbMOhbm92w6Fubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdPcHJhdmEvT2Jub3ZlbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdNaW1vIHByb3Zveic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdQxZllaGxlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9Lb250cm9sYSBrdmFsaXR5JzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdQxZllaGxlZCBhIHBvdHZyemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0IHTFmcOtZC9yb2zDrSBhIGplamljaCBzb3V2aXNlasOtY8OtY2ggcG9sw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdQxZlpIGltcG9ydHUgdMWZw61keSBkb8WhbG8gayBjaHlixJsuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBTa3J5dMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBWeW9icmF6ZW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdVbW/FvsWIdWplIHJvesWhw63FmWVuw6kgcG9kbcOtbmt5IHZ5aGxlZMOhdsOhbsOtIHYga29uZmlndXJhxI1uw61jaCBwb2xvxb5rw6FjaCByb3pocmFuw60gYWdlbnRhLiBQb21vY8OtIHTDqXRvIGZ1bmtjZSBtxa/FvmV0ZSB2eWhsZWTDoXZhdCBuYXDFmS4gbsOhemV2IGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHMgcG9kbcOtbmthbWkgdHlwdSAiKCprZXkxKiYmKmtleTIqKSIgbmVibyAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Vtb8W+xYh1amUgcm96xaHDrcWZZW7DqSBwb2Rtw61ua3kgdnlobGVkw6F2w6Fuw60gdiBrb25maWd1cmHEjW7DrW0gdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsgdiB6w6FrYXpuaWNrw6ltIHJvemhyYW7DrS4gUG9tb2PDrSB0w6l0byBmdW5rY2UgbcWvxb5ldGUgdnlobGVkw6F2YXQgbmFwxZkuIG7DoXpldiBrb25maWd1cmHEjW7DrSBwb2xvxb5reSBzIHBvZG3DrW5rYW1pIHR5cHUgIigqa2V5MSomJiprZXkyKikiIG5lYm8gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdQxZlpxZlhemVuw6kgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJIHDFmWlkxJtsZW7DqSBzcG9sZcSNbm9zdGkgesOha2F6bsOta2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSSBwxZlpxZlhemVuw6kgdcW+aXZhdGVsaSB6w6FrYXpuw61rYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnTmFzdGF2ZW7DrSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdaa29udHJvbHVqdGUgamVkaW5lxI1uw70gbsOhemV2IHBvdXplIHYgcsOhbWNpIHN0ZWpuw6kgdMWZw61keSBDb25maWdJdGVtICgiY2xhc3MiKSBuZWJvIGdsb2LDoWxuxJsgKCJnbG9iYWwiKSwgY2/FviB6bmFtZW7DoSwgxb5lIHDFmWkgaGxlZMOhbsOtIGR1cGxpY2l0IHNlIGJlcmUgdiDDunZhaHUga2HFvmTDvSBleGlzdHVqw61jw60gQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1p2b2x0ZSBtb2R1bCBwcm8gdnludWNlbsOtIHNjaMOpbWF0dSBwb2ptZW5vdsOhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnVnliZXJ0ZSBtb2R1bCBwcm8gdnludWNlbsOtIMSNw61zZWxuw6lobyBzY2jDqW1hdHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1p2b2x0ZSBtb2R1bCBwcm8gdnludWNlbsOtIHNjaMOpbWF0dSDFmWV0xJt6Y2UgdmVyesOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1Z5YmVydGUgYXRyaWJ1dHksIGt0ZXLDqSBzcHVzdMOtIHZ5dHZvxZllbsOtIG5vdsOpIHZlcnplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdWeWJlcnRlIGthdGVnb3JpZSwga3RlcsOpIGNoY2V0ZSBwxZlpxZlhZGl0IHTDqXRvIHTFmcOtZMSbIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cnkgc2xvdXBjb3bDvWNoIGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgcHJvIHDFmWVobGVkIHBvbG/FvmVrIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdTbG91cGNlLCBrdGVyw6kgbHplIGZpbHRyb3ZhdCB2IHDFmWVobGVkdSBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrIHJvemhyYW7DrSBhZ2VudGEuIFBvem7DoW1rYTogUG92b2xlbnkganNvdSBwb3V6ZSBhdHJpYnV0eSBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrIGEgZHluYW1pY2vDoSBwb2xlIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdQb2xvxb5reSBrb25maWd1cmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnUMWZaWTDoW7DrSBwb2xvxb5reSBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfDmnByYXZhIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIHVkw6Fsb3N0w60gcG9sb8W+a3kga29uZmlndXJhY2UsIGt0ZXLDvSB1bW/FvsWIdWplIHByb3Rva29sb3bDoW7DrSBkbyBoaXN0b3JpZSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ01vZHVsIHVkw6Fsb3N0w60ga29uZmlndXJhxI1uw61jaCBwb2xvxb5laywga3RlcsO9IGFrdHVhbGl6dWplIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHBvZGxlIGplamljaCBha3R1w6FsbsOtIGRlZmluaWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0hpc3RvcmllIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdUaXNrIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ1DFmWlibMOtxb5lbsOtIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1N0cm9tb3bDqSB6b2JyYXplbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ1ZlcnplIHBvbG/Fvmt5IENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnUG9sb8W+a3kgQ29uZmlnSXRlbXMgbsOhc2xlZHVqw61jw61jaCB0xZnDrWQgbmVidWRvdSBuYSBzZXJ2ZXJ1IEVsYXN0aWNzZWFyY2ggdWxvxb5lbnkuIENoY2V0ZS1saSB0dXRvIG1vxb5ub3N0IHBvdcW+w610IG5hIGV4aXN0dWrDrWPDrSBDSSwgamUgdMWZZWJhIHBvIHptxJtuxJsgdMOpdG8gbW/Fvm5vc3RpIHNwdXN0aXQgbWlncmFjaSBDSSBwcm9zdMWZZWRuaWN0dsOtbSBrb256b2x5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdQb2xvxb5reSBDb25maWdJdGVtcyBzIG7DoXNsZWR1asOtY8OtbWkgc3RhdnkgbmFzYXplbsOtIG5lYnVkb3UgbmEgc2VydmVydSBFbGFzdGljc2VhcmNoIHVsb8W+ZW55LiBDaGNldGUtbGkgdHV0byBtb8W+bm9zdCBwb3XFvsOtdCBuYSBleGlzdHVqw61jw60gQ0ksIGplIHTFmWViYSBwbyB6bcSbbsSbIHTDqXRvIG1vxb5ub3N0aSBzcHVzdGl0IG1pZ3JhY2kgQ0kgcHJvc3TFmWVkbmljdHbDrW0ga29uem9seS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnTGltaXQgcG9sb8W+a3kga29uZmlndXJhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ3VyYWNlIE9tZXplbsOtIHBvbG/FvmVrIG5hIHN0csOhbmt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnRGF0YWLDoXplIHBybyBzcHLDoXZ1IGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnSHJvbWFkbsO9IG1vZHVsIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmHEjW7DrSBwb2xvxb5rYSB2eWhsZWTDoXbDoW7DrSBiYWNrZW5kb3bDqWhvIHNtxJtyb3ZhxI1lIHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ1Z5dHbDocWZZXQgYSBzcHJhdm92YXQgZGVmaW5pY2UgcG9sb8W+ZWsga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnVnl0dsOhxZnDrSB0aXB5IHBybyBwb2xvxb5reSBDb25maWdJdGVtcyB2IHVyxI1pdMO9Y2ggxI1hc292w71jaCBib2RlY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ1rDoWthem7DrWNpIHNpIG1vaG91IHByb2hsw6lkbm91dCBoaXN0b3JpY2vDqSB2ZXJ6ZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnWsOha2F6bsOtY2kgbWFqw60gbW/Fvm5vc3QgcnXEjW7EmyBwxZllcMOtbmF0IG1lemkgaGlzdG9yaWNrw71taSB2ZXJ6ZW1pIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ1bDvWNob3rDrSDDumRhamUsIGt0ZXLDqSBzZSBwb3XFvmlqw60gbmEgb2JyYXpvdmNlIHBybyB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZS4gUMWZw61rbGFkOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1bDvWNob3rDrSDDumRhamUsIGt0ZXLDqSBzZSBwb3XFvmlqw60gbmEgb2JyYXpvdmNlIHBybyB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZS4gUMWZw61rbGFkOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW51anRlIEFrY2UsIHUga3RlcsO9Y2ggamUgdmUgd2lkZ2V0dSBwcm9wb2plbsO9Y2ggb2JqZWt0xa8gayBkaXNwb3ppY2kgdGxhxI3DrXRrbyBuYXN0YXZlbsOtIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFVwb3pvcsWIdWplbWUsIMW+ZSB0eXRvIEFrY2UgbXVzw60gbcOtdCB6YXJlZ2lzdHJvdmFuw6kgbsOhc2xlZHVqw61jw60gc291Ym9yeSBKUyBhIENTUzogVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmljZSBzY2jDqW1hdHUgc2FkeSBUZW1wbGF0ZTo6VG9vbGtpdCBwcm8gxZlldMSbemNlIHZlcnrDrS4gUG91xb7DrXbDoSBzZSBwb3V6ZSB2IHDFmcOtcGFkxJssIMW+ZSBqZSBtb2R1bCBWZXJzaW9uIFN0cmluZyBuYXN0YXZlbiBuYSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW51anRlIHNhZHUgcG9kbcOtbmVrLCB6YSBrdGVyw71jaCBqZSB6w6FrYXpuw61rb3ZpIHBvdm9sZW5vIHpvYnJheml0IHBvbG/Fvmt1IGtvbmZpZ3VyYWNlLiBQb2Rtw61ua3kgbHplIHZvbGl0ZWxuxJsgb21leml0IG5hIHVyxI1pdMOpIHNrdXBpbnkgesOha2F6bsOta8WvLiBKZWRpbsO9bSBwb3Zpbm7DvW0gYXRyaWJ1dGVtIGplIG7DoXpldi4gUG9rdWQgbmVqc291IHphZMOhbnkgxb7DoWRuw6kgZGFsxaHDrSBtb8W+bm9zdGksIGJ1ZG91IHYgZGFuw6kga2F0ZWdvcmlpIHZpZGl0ZWxuw6kgdsWhZWNobnkgcG9sb8W+a3kga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIGsgb2RzdHJhxYhvdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIElUU00gcG9tb2PDrSBvYmVjbsOpaG8gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gesOtc2vDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNIHBvbW9jw60gb2JlY27DqWhvIHJvemhyYW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIFBvxb5hZG92YW7DoSBvcHLDoXZuxJtuw60gayB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNIHBvbW9jw60gb2JlY27DqWhvIHJvemhyYW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIFBvxb5hZG92YW7DoSBvcHLDoXZuxJtuw60gayBuYXN0YXZlbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIElUU00gcG9tb2PDrSBvYmVjbsOpaG8gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbnVqZSBtb2R1bCBwxZllaGxlZHUgcHJvIHpvYnJhemVuw60gbWFsw6lobyB6b2JyYXplbsOtIHNlem5hbXUga29uZmlndXJhxI1uw61jaCBwb2xvxb5lay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnVXLEjXVqZSwgemRhIHNlIHYgcHJvcG9qZW7DrSB1emzFryBtdXPDrSB6b2JyYXpvdmF0IHBvcGlza3kgdHlwdSBwcm9wb2plbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW51amUgcmVndWzDoXJuw60gdsO9cmF6eSBqZWRub3RsaXbEmyBwcm8ga2HFvmRvdSB0xZnDrWR1IENvbmZpZ0l0ZW0gcHJvIGtvbnRyb2x1IG7DoXp2dSBDb25maWdJdGVtIGEgem9icmF6ZW7DrSBwxZnDrXNsdcWhbsO9Y2ggY2h5Ym92w71jaCB6cHLDoXYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW51amUgZG9zdHVwbsOpIHNsb3VwY2UgQ0kgdiBwxZllaGxlZHUgcG9sb8W+ZWsga29uZmlndXJhY2UgdiB6w6F2aXNsb3N0aSBuYSB0xZnDrWTEmyBDSS4gS2HFvmTDoSBwb2xvxb5rYSBzZSBtdXPDrSBza2zDoWRhdCB6IG7DoXp2dSB0xZnDrWR5IGEgcG9sZSBkb3N0dXBuw71jaCBwb2zDrSBwcm8gcMWZw61zbHXFoW5vdSB0xZnDrWR1LiBQb2xvxb5reSBkeW5hbWlja8O9Y2ggcG9sw60gbXVzw60gcmVzcGVrdG92YXQgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgdsO9Y2hvesOtIGF0cmlidXQgcG9sb8W+a3kga29uZmlndXJhY2UgcHJvIHTFmcOtZMSbbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHZlIHbDvXNsZWRrdSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSB2w71jaG96w60gYXRyaWJ1dCBwb2xvxb5reSBrb25maWd1cmFjZSBwcm8gdMWZw61kxJtuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdmUgdsO9c2xlZGt1IHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHYgesOha2F6bmlja8OpbSByb3pocmFuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW51amUgdsO9Y2hvesOtIGF0cmlidXQgcG9sb8W+a3kga29uZmlndXJhY2UgcHJvIHTFmcOtZMSbbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHZlIHbDvXNsZWRrdSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSB0w6l0byBvcGVyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW51amUgdsO9Y2hvesOtIHBvxZlhZMOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHZlIHbDvXNsZWRrdSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSB2IHJvemhyYW7DrSBhZ2VudGEuIE5haG9ydTogbmVqc3RhcsWhw60gbmFob8WZZS4gRG9sxa86IG5lam5vdsSbasWhw60gbmFob8WZZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSBwb8WZYWTDrSBwb2xvxb5layBrb25maWd1cmFjZSB2ZSB2w71zbGVka3UgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdiB6w6FrYXpuaWNrw6ltIHJvemhyYW7DrS4gTmFob3J1OiBuZWpzdGFyxaHDrSBuYWhvxZllLiBEb2zFrzogbmVqbm92xJtqxaHDrSBuYWhvxZllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbnVqZSB2w71jaG96w60gcG/FmWFkw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdmUgdsO9c2xlZGt1IHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHTDqXRvIG9wZXJhY2UuIE5haG9ydTogbmVqc3RhcsWhw60gbmFob8WZZS4gRG9sxa86IG5lam5vdsSbasWhw60gbmFob8WZZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSB6b2JyYXplbsOpIHNsb3VwY2UgQ0kgdiBwxZllaGxlZHUgcG9sb8W+ZWsga29uZmlndXJhY2UgdiB6w6F2aXNsb3N0aSBuYSB0xZnDrWTEmyBDSS4gS2HFvmTDoSBwb2xvxb5rYSBzZSBtdXPDrSBza2zDoWRhdCB6IG7DoXp2dSB0xZnDrWR5IGEgcG9sZSBkb3N0dXBuw71jaCBwb2zDrSBwcm8gcMWZw61zbHXFoW5vdSB0xZnDrWR1LiBQb2xvxb5reSBkeW5hbWlja8O9Y2ggcG9sw60gbXVzw60gcmVzcGVrdG92YXQgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbnVqZSB2w71jaG96w60gaGxvdWJrdSB2enRhaMWvLCBrdGVyw6kgc2UgbWFqw60gem9icmF6aXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSB6b2JyYXplbsO9IGF0cmlidXQgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgcHJvIG9icmF6b3ZrdSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmludWplIHbDvWNob3rDrSB6b2JyYXplbsO9IGF0cmlidXQgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgcHJvIG9icmF6b3ZrdSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZS4gUMWZw61rbGFkOiAiS2V5IiBtdXPDrSBtw610IG7DoXpldiBkeW5hbWlja8OpaG8gcG9sZSB2IHRvbXRvIHDFmcOtcGFkxJsgIlgiLCAiQ29udGVudCIgbXVzw60gbcOtdCBob2Rub3R1IGR5bmFtaWNrw6lobyBwb2xlIHYgesOhdmlzbG9zdGkgbmEgdHlwdSBkeW5hbWlja8OpaG8gcG9sZSwgVGV4dDogImEgdGV4dCIsIERyb3Bkb3duOiAiMSIsIERhdGUvVGltZTogIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYSBuZWJvIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXTDvWRlbjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9UMWZZWQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbnVqZSB2w71jaG96w60gcG9kb2JqZWt0IHTFmcOtZHkgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW51amUgZG9zdHVwbsOpIHNsb3VwY2UgQ0kgdiBwxZllaGxlZHUgcG9sb8W+ZWsga29uZmlndXJhY2UgdiB6w6F2aXNsb3N0aSBuYSB0xZnDrWTEmyBDSS4gS2HFvmTDoSBwb2xvxb5rYSBzZSBtdXPDrSBza2zDoWRhdCB6IG7DoXp2dSB0xZnDrWR5IGEgcG9sZSBkb3N0dXBuw71jaCBwb2zDrSBwcm8gcMWZw61zbHXFoW5vdSB0xZnDrWR1LiBQb2xvxb5reSBkeW5hbWlja8O9Y2ggcG9sw60gbXVzw60gcmVzcGVrdG92YXQgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbnVqZSB2w73FoWt1IGtvbXBvbmVudHkgdGV4dG92w6lobyBlZGl0b3J1IHBybyB0dXRvIG9icmF6b3ZrdS4gWmFkZWp0ZSDEjcOtc2xvIChwaXhlbHkpIG5lYm8gcHJvY2VudHXDoWxuw60gaG9kbm90dSAocmVsYXRpdm7DrSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHBvxI1ldCDFmcOhZGvFryBlZGl0b3J1IGRlZmluaWNlIENJIHYgcm96aHJhbsOtIHNwcsOhdmNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbnVqZSBwb8WZYWTDrSBpbmNpZGVudG7DrWNoIHN0YXbFryBvZCB2eXNva8OpaG8gKG5hcMWZLiBjcmljaXRhbCkgcG8gbsOtemvDvSAobmFwxZkuIGZ1bmN0aW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmludWplIHDFmcOtc2x1xaFuw6kgc3RhdnkgbmFzYXplbsOtLCB2ZSBrdGVyw71jaCBtb2hvdSBwcm9wb2plbsOpIHRpcHkgb3ZsaXZuaXQgc3RhdiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBvbWV6ZW7DrSB2eWhsZWTDoXbDoW7DrSBwcm8gb2JyYXpvdmt1IEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW51amUgbGltaXQgdnlobGVkw6F2w6Fuw60gcHJvIG9icmF6b3ZrdSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmludWplIG9tZXplbsOtIHZ5aGxlZMOhdsOhbsOtIHBybyBvYnJhem92a3UgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBsaW1pdCB2eWhsZWTDoXbDoW7DrSBwcm8gb2JyYXpvdmt1IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW51amUgem9icmF6ZW7DqSBzbG91cGNlIENJIHYga29tcGxleG7DrW0gem9icmF6ZW7DrSB0YWJ1bGt5IG9ka2F6xa8gcHJvIHbFoWVjaG55IHTFmcOtZHkgQ0kuIFBva3VkIG5lbsOtIGsgZGlzcG96aWNpIMW+w6FkbsOhIHBvbG/FvmthLCB6b2JyYXrDrSBzZSB2w71jaG96w60gc2xvdXBjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0ZpbHRyIHBybyB0xZnDrWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnVXLEjXVqZSwga3RlcsOpIHBvbG/Fvmt5IGpzb3UgayBkaXNwb3ppY2kgcHJvICJBY3Rpb24iIHZlIHTFmWV0w60gw7pyb3ZuaSBzdHJ1a3R1cnkgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnVXLEjXVqZSwga3RlcsOpIHBvbG/Fvmt5IGpzb3UgayBkaXNwb3ppY2kgdiBwcnZuw60gw7pyb3ZuaSBzdHJ1a3R1cnkgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ1VyxI11amUsIGt0ZXLDqSBwb2xvxb5reSBqc291IGsgZGlzcG96aWNpIHZlIGRydWjDqSDDunJvdm5pIHN0cnVrdHVyeSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnVXLEjXVqZSwga3RlcsO9IHR5cCBwcm9wb2plbsOtIChwb2ptZW5vdmFuw70geiBwb2hsZWR1IHRpcHUpIG3Fr8W+ZSBvdmxpdm5pdCBzdGF2IHByb3BvamVuw6kgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnVXLEjXVqZSwga3RlcsO9IHR5cCB0aXB1IG3Fr8W+ZSBvdmxpdm5pdCBzdGF2IHByb3BvamVuw6kgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnQWt0dWFsaXphY2UgZGVmaW5pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ09kc3RyYW7Em27DrSBwb2xvxb5reSBrb25maWd1cmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0JhcnZhIHN0YXZ1IG5hc2F6ZW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGlrYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdWwgdWTDoWxvc3TDrSBkeW5hbWlja8O9Y2ggcG9sw60sIGt0ZXLDvSBvem5hxI3DrSBkZWZpbmljZSBwb2xvxb5layBrb25maWd1cmFjZSBqYWtvIG5lc3luY2hyb25pem92YW7DqSwgcG9rdWQgc2Ugem3Em27DrSBkeW5hbWlja8OhIHBvbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlja8OhIHBvbGUgem9icmF6ZW7DoSBuYSBvYnJhem92Y2UgZG9kYXRlxI1uw71jaCBwb2zDrSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pY2vDoSBwb2xlIHpvYnJhemVuw6EgbmEgb2JyYXpvdmNlIHDFmWVobGVkdSBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrIHYgesOha2F6bmlja8OpbSByb3pocmFuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlja8OhIHBvbGUgem9icmF6ZW7DoSBuYSBvYnJhem92Y2UgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdQb3ZvbHVqZSBmdW5rY2kgaHJvbWFkbsOpIGFrY2Uga29uZmlndXJhxI1uw60gcG9sb8W+a3kgcHJvIGZyb250ZW5kIGFnZW50YSwgYWJ5IGJ5bG8gbW/Fvm7DqSBwcmFjb3ZhdCBzIHbDrWNlIG5lxb4gamVkbm91IGtvbmZpZ3VyYcSNbsOtIHBvbG/FvmtvdSBuYWplZG5vdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ1Bvdm9sw60gZnVua2NpIGhyb21hZG7DqSBha2NlIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHBvdXplIHBybyB1dmVkZW7DqSBza3VwaW55Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdQb3ZvbHVqZS96YWthenVqZSBmdW5rY2kga29udHJvbHkgamVkaW5lxI1uw71jaCBuw6F6dsWvIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIElUU00uIFDFmWVkIHBvdm9sZW7DrW0gdMOpdG8gbW/Fvm5vc3RpIGJ5c3RlIG3Em2xpIHprb250cm9sb3ZhdCBzeXN0w6ltLCB6ZGEgamnFviBuZWV4aXN0dWrDrSBrb25maWd1cmHEjW7DrSBwb2xvxb5reSBzIGR1cGxpY2l0bsOtbWkgbsOhenZ5LiBUbyBtxa/FvmV0ZSBwcm92w6lzdCBwb21vY8OtIGtvbnpvbG92w6lobyBwxZnDrWthenUgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bCB1ZMOhbG9zdMOtIHBybyBuYXN0YXZlbsOtIGNvbmZpZ2l0ZW0tc3RhdHVzIG5hIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ1BvbGUgaW5kZXh1IHBvbG/Fvmt5IGtvbmZpZ3VyYWNlLCBrdGVyw6Egc2UgcG91xb7DrXZhasOtIHBybyBmdWxsdGV4dG92w6kgdnlobGVkw6F2w6Fuw60uIFBvbGUganNvdSByb3ZuxJvFviB1bG/FvmVuYSwgYWxlIHBybyBjZWxrb3ZvdSBmdW5rxI1ub3N0IG5lanNvdSBwb3Zpbm7DoS4gWmFocm51dMOtIHDFmcOtbG9oIGx6ZSB6YWvDoXphdCBuYXN0YXZlbsOtbSBwb2xvxb5reSBuYSBob2Rub3R1IDAgbmVibyBqZWrDrW0gb2RzdHJhbsSbbsOtbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ1BvbGUgdWxvxb5lbsOhIHYgaW5kZXh1IHBvbG/FvmVrIGtvbmZpZ3VyYWNlLCBrdGVyw6Egc2Uga3JvbcSbIGZ1bGx0ZXh0b3bDqWhvIHZ5aGxlZMOhdsOhbsOtIHBvdcW+w612YWrDrSBpIGsgamluw71tIMO6xI1lbMWvbS4gUHJvIMO6cGxub3UgZnVua8SNbm9zdCBqc291IHbFoWVjaG5hIHBvbGUgcG92aW5uw6EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnUHJvIGthxb5kb3Ugd2Vib3ZvdSBzbHXFvmJ1IChrbMOtxI0pIGx6ZSBkZWZpbm92YXQgcG9sZSB0xZnDrWQgKGhvZG5vdGEpLCBuYSBrdGVyw6kgamUgaW1wb3J0IG9tZXplbi4gUHJvIHbFoWVjaG55IHp2b2xlbsOpIHTFmcOtZHkgbmVibyB2xaFlY2hueSBleGlzdHVqw61jw60gdMWZw61keSBidWRlIHTFmWViYSB2IGtvbmZpZ3VyYWNpIGludm9rZXJ1IHp2b2xpdCBpZGVudGlmaWthxI1uw60gYXRyaWJ1dHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhY2UgbW9kdWx1IEdlbmVyaWNJbnRlcmZhY2UgcHJvIHZyc3R2dSB2eXZvbMOhdmHEjWUgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhY2UgbW9kdWx1IEdlbmVyaWNJbnRlcmZhY2UgcHJvIHZyc3R2dSB2eXZvbMOhdmHEjWUgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYWNlIG1vZHVsdSBHZW5lcmljSW50ZXJmYWNlIHBybyB2cnN0dnUgdnl2b2zDoXZhxI1lIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnUMWZZWhsZWQgcG9sb8W+ZWsga29uZmlndXJhY2UgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaHJudWplIHN0YXZ5IG5hc2F6ZW7DrSBkbyB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSB2IHrDoWthem5pY2vDqW0gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFocm51amUgc3RhdnkgaW5jaWRlbnTFryBkbyB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSB2IHrDoWthem5pY2vDqW0gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWF4aW3DoWxuw60gcG/EjWV0IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWssIGt0ZXLDqSBzZSB6b2JyYXrDrSB2ZSB2w71zbGVka3UgdMOpdG8gb3BlcmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCBwcm8ga29udHJvbHUgc2t1cGlueSBvZHBvdsSbZG7DqSB6YSB0xZnDrWR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsIHBybyBrb250cm9sdSBza3VwaW55IG9kcG92xJtkbsOpIHphIHBvbG/Fvmt1IGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIHBybyBnZW5lcm92w6Fuw60gc3RhdGlzdGlrIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTsOhemV2IG1vZHVsdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnxIzDrXNlbG7DvSBtb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8SNZXQga29uZmlndXJhxI1uw61jaCBwb2xvxb5laywga3RlcsOpIHNlIG1hasOtIHpvYnJheml0IG5hIGthxb5kw6kgc3Ryw6FuY2UgdsO9c2xlZGt1IHZ5aGxlZMOhdsOhbsOtIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/EjWV0IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWssIGt0ZXLDqSBzZSBtYWrDrSB6b2JyYXppdCBuYSBrYcW+ZMOpIHN0csOhbmNlIHbDvXNsZWRrdSB2eWhsZWTDoXbDoW7DrSB2IHrDoWthem5pY2vDqW0gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrdHksIGt0ZXLDqSBzZSBtYWrDrSB2eWhsZWRhdCwga29saWsgesOhem5hbcWvIGEga3RlcsOpIGF0cmlidXR5IHNlIG1hasOtIHpvYnJheml0LiBBdHJpYnV0eSBDb25maWdJdGVtIG11c8OtIGLDvXQgZXhwbGljaXRuxJsgdWxvxb5lbnkgcHJvc3TFmWVkbmljdHbDrW0gRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnUMWZZWhsZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgcHJvIGthdGVnb3JpZSB0xZnDrWQga29uZmlndXJhxI1uw61jaCBwb2xvxb5layB2IHpvYnJhemVuw60gcMWZZWR2b2xlYiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBwcm8gZmlsdHJ5IHNsb3VwY8WvIHDFmWVobGVkdSBtYWzDvWNoIGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsuIFVwb3pvcm7Em27DrTogTmFzdGF2ZW7DrSBob2Rub3R5ICJBa3Rpdm7DrSIgbmEgMCBwb3V6ZSB6YWJyw6Fuw60gYWdlbnTFr20gdXByYXZvdmF0IG5hc3RhdmVuw60gdMOpdG8gc2t1cGlueSB2IGplamljaCBvc29ibsOtY2ggcHJlZmVyZW5jw61jaCwgYWxlIHNwcsOhdmPFr20gc3TDoWxlIHVtb8W+bsOtIHVwcmF2b3ZhdCBuYXN0YXZlbsOtIGptw6luZW0gamluw6lobyB1xb5pdmF0ZWxlLiBQb21vY8OtIFwnUHJlZmVyZW5jZUdyb3VwXCcgbcWvxb5ldGUgxZnDrWRpdCwgdmUga3RlcsOpIG9ibGFzdGkgc2UgbWFqw60gdGF0byBuYXN0YXZlbsOtIHYgdcW+aXZhdGVsc2vDqW0gcm96aHJhbsOtIHpvYnJhem92YXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgcHJvIHN0YXZ5IG5hc2F6ZW7DrSBzZSB2eWJhcnbDrSB2IHpvYnJhemVuw60gcMWZZWR2b2xlYiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBwcm8gc3RhdnkgbmFzYXplbsOtIHYgem9icmF6ZW7DrSBwxZllZHZvbGViIHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBza3VwaW55IHBybyBwxZnDrWtsYWQgb3Byw6F2bsSbbsOtIG9iZWNuw71jaCBhdHJpYnV0xa8ga2F0YWxvZ3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgbW9kdWx1IG7DoXp2xa8gcHJvIHTFmcOtZHkga29uZmlndXJhxI1uw61jaCBwb2xvxb5layB2IHpvYnJhemVuw60gcMWZZWR2b2xlYiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IG1vZHVsdSDEjcOtc2VsIHBybyB0xZnDrWR5IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgdiB6b2JyYXplbsOtIHDFmWVkdm9sZWIgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IHN0csOhbmVrIChuYSBrdGVyw71jaCBzZSB6b2JyYXp1asOtIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IG1vZHVsdSDFmWV0xJt6Y2UgdmVyemUgcHJvIHTFmcOtZHkga29uZmlndXJhxI1uw61jaCBwb2xvxb5layB2IHpvYnJhemVuw60gcMWZZWR2b2xlYiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBtb2R1bHUgxaFhYmxvbnkgxZlldMSbemNlIHZlcnplIHNhZHkgbsOhc3Ryb2rFryBwcm8gdMWZw61keSBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrIHYgem9icmF6ZW7DrSBwxZllZHZvbGViIHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBwcm8gc3BvdcWhdMSbxI0gdmVyemUgcHJvIHTFmcOtZHkgcG9sb8W+ZWsga29uZmlndXJhY2UgdiB6b2JyYXplbsOtIHDFmWVkdm9sZWIgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdQcm92ZWRlIG5ha29uZmlndXJvdmFub3UgYWtjaSBwcm8ga2HFvmRvdSB1ZMOhbG9zdCAoamFrbyBJbnZva2VyKSBwcm8ga2HFvmRvdSBuYWtvbmZpZ3Vyb3Zhbm91IHdlYm92b3Ugc2x1xb5idS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ1NrdXBpbmEgb3Byw6F2bsSbbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DoSBvcHLDoXZuxJtuw60gcHJvIHBvdcW+aXTDrSBha2NlIHDFmWlwb2plbsOtIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSBwb2xvxb5reSBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIHBybyBwb3XFvml0w60gb2JyYXpvdmt5IHBybyB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIHBybyBwb3XFvml0w60gb2JyYXpvdmt5IHBybyB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNIHYgesOha2F6bmlja8OpbSByb3pocmFuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSB6b2JyYXplbsOtIHN0cm9tdSBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSB6dsSbdMWhZW7DrSBwb2xvxb5reSBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPZGtheiBuYSAlcyAodHlwZT0lcykgb2RzdHJhbsSbbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIHBybyBwb3XFvml0w60gb2JyYXpvdmt5IHBvbG/Fvmt5IGhyb21hZG7DqSBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSBwcm8gw7pwcmF2dSBwb2xvxb5reSBrb25maWd1cmFjZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOhIG9wcsOhdm7Em27DrSBwcm8gcG91xb5pdMOtIG9icmF6b3ZreSBwb2xvxb5reSBrb25maWd1cmFjZSBoaXN0b3JpZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DoSBvcHLDoXZuxJtuw60gcHJvIHBvdcW+aXTDrSBvYnJhem92a3kgcyBwb2xvxb5rb3Uga29uZmlndXJhY2UgdGlza3UgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQb8W+YWRvdmFuw6Egb3Byw6F2bsSbbsOtIGsgb2RzdHJhbsSbbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1Z5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQXV0b21hdGlja8OpIG5hc3RhdmVuw60gc3RhdnUgaW5jaWRlbnR1IENJLCBrZHnFviBqZSB0aWtldCBwcm9wb2plbiBzIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hc3RhdsOtIHN0YXYgbmFzYXplbsOtIG5hIG9icmF6b3ZjZSBocm9tYWRuw6kgcG9sb8W+a3kga29uZmlndXJhY2Ugcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFzdGF2w60gc3RhdiB1ZMOhbG9zdGkgbmEgb2JyYXpvdmNlIGhyb21hZG7DqSBwb2xvxb5reSBrb25maWd1cmFjZSByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgbmFiw61kY2UsIGt0ZXLDvSB1bW/FvsWIdWplIHByb3Bvaml0IGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt1IHMgamluw71tIG9iamVrdGVtIHYgem9icmF6ZW7DrSB6dsSbdMWhZW7DrSBrb25maWd1cmHEjW7DrSBwb2xvxb5reSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gcMWZw61zdHVwIGsgaGlzdG9yaWkga29uZmlndXJhxI1uw60gcG9sb8W+a3kgdiBwxZllaGxlZHUga29uZmlndXJhxI1uw61jaCBwb2xvxb5layByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IG5hYsOtZGNlIHBybyBwxZnDrXN0dXAgayBoaXN0b3JpaSBwb2xvxb5reSBrb25maWd1cmFjZSB2IHpvYnJhemVuw60gYWdlbnRhIHMgcMWZaWJsw63FvmVuw61tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgbmFiw61kY2UgcHJvIG9kc3RyYW7Em27DrSBwb2xvxb5reSBrb25maWd1cmFjZSB2IGplasOtbSB6dsSbdMWhZW7DqW0gem9icmF6ZW7DrSByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gem9icmF6ZW7DrSBvZGthesWvIG5hIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlIHZlIHN0cm9tb3bDqW0gem9icmF6ZW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IG5hYsOtZGNlIHBybyBkdXBsaWtvdsOhbsOtIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHYgcMWZZWhsZWR1IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gZHVwbGlrb3bDoW7DrSBwb2xvxb5reSBrb25maWd1cmFjZSB2IHpvYnJhemVuw60gYWdlbnRhIHMgcMWZaWJsw63FvmVuw61tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gw7pwcmF2dSBwb2xvxb5reSBrb25maWd1cmFjZSB2IHpvYnJhemVuw60gYWdlbnRhIHMgcMWZaWJsw63FvmVuw61tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gbsOhdnJhdCB6cMSbdCBkbyB6b2JyYXplbsOtIHp2xJt0xaFlbsOtIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBuYWLDrWRjZSBwcm8gdGlzayBrb25maWd1cmHEjW7DrSBwb2xvxb5reSB2IGplasOtbSB6dsSbdMWhZW7DqW0gem9icmF6ZW7DrSByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgbmFiw61kY2UgcHJvIHDFmWlibMOtxb5lbsOtIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHYgcMWZZWhsZWR1IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIGhpc3RvcmlpIGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgKHYgb3BhxI1uw6ltIHBvxZlhZMOtKSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ1bDvWNob3rDrSBrYXRlZ29yaWUsIGt0ZXLDoSBzZSB6b2JyYXrDrSwgcG9rdWQgbmVuw60gdnlicsOhbmEgxb7DoWRuw6EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdJZGVudGlmaWvDoXRvciBrb25maWd1cmHEjW7DrSBwb2xvxb5reSwgbmFwxZkuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBWw71jaG96w60gamUgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnQXV0b21hdGlja3kgc3BvdcWhdMOtIGludm9rw6F0b3IgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyemUgxZhldMSbemNvdsO9IHbDvXJheic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdNb2R1bCBWZXJzaW9uIFN0cmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdTcG91xaF0xJvEjSB2ZXJ6ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnWmRhIHNlIGx6ZSB2eWhub3V0IHByb3ZlZGVuw60gQ29uZmlnSXRlbUFDTCBrb250cm9sb3UgesOhdmlzbG9zdMOtIHBvbMOtIHVsb8W+ZW7DvWNoIHYgbWV6aXBhbcSbdGkuIFRvIG3Fr8W+ZSB6bGVwxaFpdCDEjWFzeSBuYcSNw610w6Fuw60gZm9ybXVsw6HFmcWvLCBhbGUgbXVzw60gdG8gYsO9dCB6YWvDoXrDoW5vLCBwb2t1ZCBzZSBtYWrDrSBwb3XFvsOtdmF0IEFDTE1vZHVseSBwcm8gdHlweSBJVFNNQ29uZmlnSXRlbS0gYSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnS3RlcsOpIG9iZWNuw6kgaW5mb3JtYWNlIGpzb3UgdXZlZGVueSB2IHrDoWhsYXbDrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICd0xZnDrWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2LDoWxuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrdGl2bsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwxZllZHByb2R1a8SNbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWt0aXZuw60nOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgcGFsY2UgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBwYWxjxa8gKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBwYWxjZSAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBwYWxjZSAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5cGFsY292w70gc3RvamFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBwYWxjZSAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBwYWxjxa8gKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxcGFsY292w70gc3RvamFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBwYWxjZSAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzcGFsY292w70gc3RvamFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwYWxjZSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgcGFsY8WvICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBwYWxjZSAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IHBhbGNlICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IHBhbGNlICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwYWxjZSAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgcGFsY2UgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHBhbGNlICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBwYWxjxa8gKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBwYWxjZSAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IHBhbGNlICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgcGFsY2UgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IHBhbGNlICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHBhbGNlICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IHBhbGNlICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgcGFsY2UgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBwYWxjxa8gKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBwYWxjxa8gKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IHBhbGNlICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBwYWxjZSAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBwYWxjZSAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBwYWxjxa8gKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgcGFsY2UgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ8OaxI1ldG5pY3R2w60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdQxZlpZMSbbG92w6Fuw60gYWRyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ1NwcsOhdmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZ292w70gdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1R5cCBzcG90xZllYmnEjWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdLYXBhY2l0YSBiYXRlcmllIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVHlwIGJhdGVyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCdWRvdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ1JvemhyYW7DrSBzYsSbcm5pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ1Byb2Nlc29yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ1TFmcOtZGEgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdLYXBhY2l0YSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnS2FwYWNpdGEgbmEgZ3JhZmlja291IGthcnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnxIzDrXNsbyBrYXJ0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ8SMdGXEjWthIGthcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ1R5cCBrYXJ0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS2xpZW50c2vDqSBjZXJ0aWZpa8OhdHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnS2xpZW50c2vDvSBzb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLYXRlZ29yaWUga2xpZW50xa8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnQ2xvY2tyYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdDbG9ja3NwZWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpa8OhdHkgcHJvIHBvZGVwaXNvdsOhbsOtIGvDs2R1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJlbsSNbsOtIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdTbWxvdXZhIG8gcG9yYWRlbnN0dsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLb250YWt0IG5hIGRpc3RyaWJ1dG9yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ1NwcsOhdmEga29udGVqbmVyxa8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdTbWxvdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUeXAgc21sb3V2eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0RvYmEgdHJ2w6Fuw60gc21sb3V2eSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdEb2JhIHRydsOhbsOtIHNtbG91dnkgZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnQmV6ZHLDoXRvdsO9IHRlbGVmb24gKHRlbGVmb24gREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnTsOha2xhZG92w6EgamVkbm90a2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdQb8SNZXQgbGljZW5jw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0RhdHVtIHZ5dHZvxZllbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdWbGFzdG7DrSBzdG9qYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgdnlocmF6ZW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTZXJ2ZXIgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXR1bSB2eXN0YXZlbsOtIGZha3R1cnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdHVtIG9iamVkbsOhdmt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXR1bSB6w6FydWt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdHVtIHZ5ZMOhbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdTdG9sbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpa8OhdHkgcHJvIHBvZGVwaXNvdsOhbsOtIGRva3VtZW50xa8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtbWFpbG92w6kgY2VydGlmaWvDoXR5IChjZXJ0aWZpa8OhdHkgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdQcmFjb3Zuw60gc21sb3V2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0tvbmNvdsOhIElQIGFkcmVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1Vrb27EjWVuw60gcG9kcG9yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0RhdHVtIHZ5cHLFoWVuw60gcGxhdG5vc3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdFeHRlcm7DrSBwZXZuw70gZGlzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0Jyw6FuYSBmaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnU2tsYWRvdsOhbsOtIGVuZXJnaWUgdiBzZXRydmHEjW7DrWt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRm9ybcOhdG92w70gZmFrdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuxaHDrXpvdsOhIHNtbG91dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdPYmVjbsOpIGluZm9ybWFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpY2vDqSBrYXJ0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlja8OhIGthcnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbCBoYXJkd2FydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdIbW90bm9zdCBoYXJkd2FydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnTsOhaGxhdm7DrSBzb3VwcmF2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3Rva29sIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ1NwcsOhdmEgaWRlbnRpdCBhIHDFmcOtc3R1cHUgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudMOhcm7DrSDEjcOtc2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnTsOha2xhZHkgbmEgaW52ZXJ6aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ8SMw61zbG8gZmFrdHVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ0tsw6F2ZXNuaWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEIChkaXNwbGVqIHogdGVrdXTDvWNoIGtyeXN0YWzFryknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChzdsSbdGVsbsOhIGRpb2RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdQZXZuw6EgdGVsZWZvbm7DrSBsaW5rYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdNb2JpbG7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ1plbcSbcGlzbsOhIMWhw63FmWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnVnJzdHZhIDE6IEZ5emlja8OhIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdWcnN0dmEgMjogVnJzdHZhIGRhdG92w6lobyBzcG9qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnVnJzdHZhIDM6IFPDrcWlb3bDoSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnVnJzdHZhIDM6IFPDrcWlb3bDoSB2cnN0dmEgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdWcnN0dmEgNDogVHJhbnNwb3J0bsOtIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnVnJzdHZhIDU6IFJlbGFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdWcnN0dmEgNjogUHJlemVudGHEjW7DrSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdWcnN0dmEgNzogQXBsaWthxI1uw60gdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ07DoWplbW7DrSBzbWxvdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW7EjW7DrSBzbWxvdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbsSNbsOtIGtsw63EjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdUeXAgbGljZW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnRG9iYSBwbGF0bm9zdGkgbGljZW5jZSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0RvYmEgcGxhdG5vc3RpIGxpY2VuY2UgZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGhpdW0txb5lbGV6by1mb3Nmw6F0b3bDoSBiYXRlcmllIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGl0aGl1bS1pb250b3bDoSAoTGktaW9uKSBiYXRlcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnU21sb3V2YSBvIHDFr2rEjWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdOYWNow6F6w60gc2Ugdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdaZW3Em3Bpc27DoSBkw6lsa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdWw71yb2JjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTWF4aW3DoWxuw60gemF0w63Fvml0ZWxub3N0IChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdQYW3Em8WlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVHlwIHBhbcSbdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnxIzDrXNsbyBtb2JpbG7DrWhvIHRlbGVmb251JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsbsOtL3Zsb8W+ZW7DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnUG9waXMgbW9kZWx1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1JvemxpxaFlbsOtIG1vbml0b3J1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1ZlbGlrb3N0IG1vbml0b3J1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTXnFoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnU8OtxaUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSW5mb3JtYWNlIG8gc8OtdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjZSBvIHPDrXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdTw63FpW92w6EgdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlrbC1rYWRtaW92w6EgKE5pQ2QpIGJhdGVyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWtsLW1ldGFsaHlkcmlkb3bDoSAoTmlNSCkgYmF0ZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdEb2hvZGEgbyBtbMSNZW5saXZvc3RpIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTm90ZWJvb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdQb8SNZXQgcHJvY2Vzb3LFryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdQb8SNZXQgbW9kdWzFryBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnUG/EjWV0IGdyYWZpY2vDvWNoIGthcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIE9MRUQgKG9yZ2FuaWNrw6EgZGlvZGEgZW1pdHVqw61jw60gc3bEm3RsbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnUHJvdm96bsOtIG7DoWtsYWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ09iamVkbmFjw60gxI3DrXNsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0ppbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdWw71zdHVweSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdEb2hvZGEgbyBwYXJ0bmVyc3R2w60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdUZWxlZm9ubsOtIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1R5cCB0ZWxlZm9udSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0Z5emlja8OhIGrDoWRyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ0RvZMOhdmthIGVuZXJnaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdaYWtvdXBlbm8gdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnSGxvdWJrYSBzdG9qYW51JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnU3RvamFub3bDqSBqZWRub3RreSAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ03DrXN0bm9zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ0thcnRhIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmlrw6F0eSBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnUHJvZGVqbsOtIHNtbG91dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWxpdG7DrSB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1V6YXbFmWVuw6Egb2xvdsSbbsOhIGJhdGVyaWUgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTw6lyaW92w6kgxI3DrXNsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTZXJ2ZXJvdsO9IHNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnU21sb3V2YSBvIHBvc2t5dG92w6Fuw60gc2x1xb5lYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpc27DrSDFoXTDrXRlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdUeXAgesOhc3V2a3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdFLW1haWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdSZXByb2R1a3RvcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1BvxI3DoXRlxI1uw60gSVAgYWRyZXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICfDmmxvxb5pxaF0xJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICfDmmxvxb5uw70gb2Rkw61sJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRGNlxZlpbsOhIHNwb2xlxI1ub3N0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdTb3Vocm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUZW5rw70ga2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdWbMOha25hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ0NlbGtvdsOhIHBhbcSbxaUgUkFNIGdyYWZpY2vDqSBrYXJ0eSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnQ2Vsa292w6EgcGFtxJvFpSBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnRG90eWtvdsO9IG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdWxJvFvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnUm96Ym/EjW92YcSNIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ07DoWhsYXZuw60gc291cHJhdmEgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVGVsZWZvbiBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJvdsOhIGthbWVyYSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/da_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRhX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lcmVsbGUgZHJpZnRzZGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnSW5kc3RpbGxpbmdlciBmb3IgaW5kZ8OlZW5kZSBmb3Jlc3DDuHJnc2Vsc2RhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdJbmRzdGlsbGluZ2VyIGZvciB1ZGfDpWVuZGUgc3ZhcmRhdGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWcgSXRlbSBzdHlyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnU2tpZnQga2xhc3NlZGVmaW5pdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnw4ZuZHJpbmcgYWYgcm9sbGVkZWZpbml0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0LWtsYXNzZWJ1bmR0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdIZXIga2FuIGR1IGltcG9ydGVyZSBSZWFkeTJJbXBvcnQta2xhc3NlYnVuZHRlciwgZGVyIHZpc2VyIHZvcmVzIG1lc3QgYWxtaW5kZWxpZ2Uga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuIEJlbcOmcmssIGF0IGRlciBrYW4gdsOmcmUgYmVob3YgZm9yIHlkZXJsaWdlcmUga29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnT3BkYXRlciBla3Npc3RlcmVuZGUgZW5oZWRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ0ltcG9ydGVyIFJlYWR5MkFkb3B0LWtsYXNzZWJ1bmR0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdLb25maWctZWxlbWVudGtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnS29uZmlnLWVsZW1lbnRldHMgcm9sbGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnQ29uZmlnSXRlbUlEICVzIGZpbmRlcyBpa2tlIGkgZGF0YWJhc2VuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdWw6ZsZyBlbiBrbGFzc2UgZnJhIGxpc3RlbiBmb3IgYXQgb3ByZXR0ZSBldCBueXQgQ29uZmlnIEl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc3NlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdEZXBsb3ltZW50IHRpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnSW5jaWRlbnQgdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnTGluayB0aWwgZW4gYW5kZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ1VneWxkaWd0IG51bW1lciBww6Uga29uZmlndXJhdGlvbnNlbGVtZW50ZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ051bW1lcmV0IHDDpSBldCBhbmRldCBrb25maWd1cmF0aW9uc2VsZW1lbnQsIGRlciBza2FsIGxpbmtlcyB0aWwuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVmlsIGR1IHZpcmtlbGlnIHNsZXR0ZSBkZXR0ZSBrb25maWd1cmF0aW9uc2VsZW1lbnQ/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ05hdm5ldCBww6UgZGVubmUgQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ05hdm5ldCBlciBhbGxlcmVkZSBpIGJydWcgYWYgQ29uZmlnSXRlbXMgbWVkIGbDuGxnZW5kZSBudW1tZXIoZSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnVmVyc2lvbnNudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlcnNpb25zbnVtbWVyIGZvciBkZXR0ZSBrb25maWd1cmF0aW9uc2VsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdWZXJzaW9uc251bW1lcmV0IGVyIGFsbGVyZWRlIGkgYnJ1ZyBhZiBDb25maWdJdGVtcyBtZWQgZsO4bGdlbmRlIG51bW1lcihlKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0RlcGxveW1lbnQgdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVudCB0aWxzdGFuZCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yaWsgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ09wcmV0dGVsc2VzdGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1pvb20tdmlzbmluZyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdLb25maWd1cmVyIGVsZW1lbnRlciBwci4gc2lkZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnSW5nZW4gZGF0YSBvbSBrb25maWd1cmF0aW9uc2VsZW1lbnRldCBmdW5kZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVsOmbGcgZGV0dGUga29uZmlndXJhdGlvbnNlbGVtZW50JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnS8O4ciBzw7hnbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICdTw7hnIG9nc8OlIGkgdGlkbGlnZXJlIHZlcnNpb25lcj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyB0aWwgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0R5YmRlbml2ZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbSBpbmQvdWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTWFrcy4gbGlua25pdmVhdSBuw6VldCBmb3IgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1cmF0aW9uc2VsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb24gb20ga29uZmlndXJhdGlvbnNlbGVtZW50ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnTnV2w6ZyZW5kZSBkZXBsb3ltZW50IHN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnTnV2w6ZyZW5kZSBJbmNpZGVudCB0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdTaWRzdCDDpm5kcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1NpZHN0IMOmbmRyZXQgYWYnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdEaW5lIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0tc8O4Z25pbmcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ09iamVrdHR5cGUnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0cmVyIHDDpSB0eXBlJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRsO4bGdlbmRlIGtsYXNzZXIgdmlsIGJsaXZlIGltcG9ydGVyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRsO4bGdlbmRlIHJvbGxlciB2aWwgYmxpdmUgaW1wb3J0ZXJldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdCZW3DpnJrLCBhdCBkZXIgb2dzw6Ugb3ByZXR0ZXMgdGlsc3ZhcmVuZGUgZHluYW1pc2tlIGZlbHRlciBvZyBHZW5lcmFsQ2F0YWxvZy1rbGFzc2VyLCBvZyBhdCBkZXIgaWtrZSBza2VyIG5vZ2VuIGF1dG9tYXRpc2sgZmplcm5lbHNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1ZpbCBkdSBmb3J0c8OmdHRlPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdCcnVnIGZvciBla3NlbXBlbGtsYXNzZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0RlZmluaXRpb25lbiBlciBpa2tlIGVuIGd5bGRpZyBZQU1MLWhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0RlciBlciBpa2tlIGFuZ2l2ZXQgbm9nZXQgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0R1IHNrYWwgYnJ1Z2UgbWluZHN0IMOpdCB2YWxndCBrb25maWd1cmF0aW9uc2VsZW1lbnQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnRHUgaGFyIGlra2Ugc2tyaXZlYWRnYW5nIHRpbCBkZXR0ZSBrb25maWd1cmF0aW9uc2VsZW1lbnQ6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdEZXIgYmxldiBpa2tlIGRlZmluZXJldCBub2dlbiBkZWZpbml0aW9uIGZvciBrbGFzc2VuICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnS29uZmlnLWVsZW1lbnRldCAiJXMiIGJsZXYgaWtrZSBmdW5kZXQgaSBkYXRhYmFzZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnRGVmaW5lcmVyIGFudGFsbGV0IGFmIHLDpmtrZXIgZm9yIENJLWRlZmluaXRpb25zZWRpdG9yZW4gaSBhZG1pbmlzdHJhdGlvbnNncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnSW5nZW4gdmVyc2lvbiBmdW5kZXQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnRGVyIGVyIGlra2UgYW5naXZldCBub2dldCBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIGVsbGVyIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdEZXIgZ2l2ZXMgaW5nZW4gYWRnYW5nISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdLYW4gaWtrZSB2aXNlIGhpc3RvcmlrLCBkYSBkZXIgaWtrZSBlciBhbmdpdmV0IG5vZ2V0IENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gaWtrZSB2aXNlIGhpc3RvcmlrLCBpbmdlbiBhZGdhbmdzcmV0dGlnaGVkZXIgZ2l2ZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOeXQgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOeSB2ZXJzaW9uIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdJbXBsZW1lbnRlcmluZ3NzdGF0dXMgb3BkYXRlcmV0IChueT0lcywgZ2FtbWVsPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdIw6ZuZGVsc2Vzc3RhdHVzIG9wZGF0ZXJldCAobnk9JXMsIGdhbW1lbD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgc2xldHRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0xpbmsgdGlsICVzICh0eXBlPSVzKSB0aWxmw7hqZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0xpbmsgdGlsICVzICh0eXBlPSVzKSBzbGV0dGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdDb25maWdJdGVtLWRlZmluaXRpb24gb3BkYXRlcmV0IChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOYXZuIG9wZGF0ZXJldCAobnl0PSVzLCBnYW1tZWx0PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnV0ICVzIG9wZGF0ZXJldCBmcmEgIiVzIiB0aWwgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaW9uICVzIHNsZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnRGVyIGVyIGlra2UgYW5naXZldCBub2dldCBDb25maWdJdGVtSUQgZWxsZXIgVmVyc2lvbklEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gaWtrZSB2aXNlIGtvbmZpZ3VyYXRpb25zZWxlbWVudCwgaW5nZW4gYWRnYW5nc3JldHRpZ2hlZGVyIGdpdmV0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBmaW5kZXMgaWtrZSBpIGRhdGFiYXNlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0tvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3Vkc2tyZXZldCBhZiAlcyBww6UgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ1VneWxkaWd0IGtsYXNzZS1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdEZXIgZXIgaWtrZSBhbmdpdmV0IG5vZ2V0IENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnRGVyIGVyIGlra2UgZ2l2ZXQgYWRnYW5nc3JldHRpZ2hlZGVyIHRpbCBkZW5uZSBrbGFzc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdJbnRldCByZXN1bHRhdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdTw7hnZXJlc3VsdGF0ZXIgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdLYW4gaWtrZSB2aXNlIGVsZW1lbnQsIGluZ2VuIGFkZ2FuZ3NyZXR0aWdoZWRlciB0aWwgQ29uZmlnSXRlbSBlciBnaXZldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBpa2tlIGZ1bmRldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnSW5nZW4gdmVyc2lvbmVyIGZ1bmRldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXRpb25lbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnYWR2YXJzZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdow6ZuZGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0RlcGxveW1lbnQgdGlsc3RhbmQgZm9yIGRlbm5lIENvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSW5jaWRlbnQgdGlsc3RhbmQgZm9yIGRlbm5lIENvbmZpZyBJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnSW5nZW4gdGlsbGFkZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXJldCBlciB1Z3lsZGlndCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1PDuGdlcGFyYW1ldHJlIHVneWxkaWdlISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ1Zpc3RlIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1R5cGUgYWYgdWRydWxuaW5nc3RpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ051dsOmcmVuZGUgaMOmbmRlbHNlc3RpbHN0YW5kIFR5cGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnTWVsbGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2ViZWdyw6Zuc25pbmdlciBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1bDpmxnIGVuIGVsbGVyIGZsZXJlIGtsYXNzZXIgZm9yIGF0IGJlZ3LDpm5zZSB2YWxnYmFyZSBrb25maWd1cmF0aW9uc2VsZW1lbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS2xhc3NlYmVncsOmbnNuaW5nZXIgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVsOmbGcgZW4gZWxsZXIgZmxlcmUga2xhc3NlciBmb3IgYXQgYmVncsOmbnNlIHZhbGdiYXJlIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pc2sgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXNrICh2ZXJzaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXBlIGFmIGxpbmtoZW52aXNuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ09tIGRldHRlIGxpbmsgZ8OmbGRlciBmb3IgQ29uZmlnSXRlbSBlbGxlciBkZW4gc3RhdGlza2UgdmVyc2lvbiBhZiBkZXQgcmVmZXJlcmVuZGUgb2JqZWt0LiBCZXJlZ25pbmcgYWYgYWt0dWVsIGjDpm5kZWxzZXN0aWxzdGFuZCB1ZGbDuHJlcyBrdW4gcMOlIGR5bmFtaXNrZSBsaW5rcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWw6ZsZyBkZW4gYXR0cmlidXQsIHNvbSBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBza2FsIHPDuGdlcyBlZnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0Jhc2lzc3RydWt0dXJlbiBlciBpa2tlIGd5bGRpZy4gQW5naXYgdmVubGlnc3QgZW4gaGFzaCBtZWQgZGF0YSBpIFlBTUwtZm9ybWF0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0RldCBlciBuw7hkdmVuZGlndCBhdCBzdGFydGUgWUFNTC1zdHJlbmdlbiBtZWQgXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnS3VubmUgaWtrZSByZW5zZSB0YWJlbGxlbiBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdEZXIgYmxldiBpa2tlIGZ1bmRldCBub2dlbiByZWxldmFudGUgZHluYW1pc2tlIGZlbHRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0t1bm5lIGlra2UgaW5kc8OmdHRlIGkgdGFiZWxsZW4gY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbmRzYXQgMCByw6Zra2VyIGkgdGFiZWxsZW4gY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01heGltdW0gYW50YWwgYWYgZXQgZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICdJbXBvcnQvZWtzcG9ydCBhZiB2ZWRow6ZmdGVkZSBmaWxlciAoc29tIGRlIHNpZHN0ZSBwb3N0ZXIgcHIuIGxpbmplKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpb25zc3RyZW5nJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0ZlamwgdmVkIHN5bmtyb25pc2VyaW5nIGFmIGRlZmluaXRpb25lcm5lLiBUamVrIHZlbmxpZ3N0IGxvZ2dlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdEdSBoYXIgSVRTTUNvbmZpZ0l0ZW0tZGVmaW5pdGlvbmVyLCBzb20gaWtrZSBlciBzeW5rcm9uaXNlcmVkZS4gSW1wbGVtZW50ZXIgdmVubGlnc3QgZGluZSBJVFNNQ29uZmlnSXRlbSBkeW5hbWlza2UgZmVsdMOmbmRyaW5nZXIuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdVZGzDuGJldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ1ZlZGxpZ2Vob2xkZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFubGFndCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBlcmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdQZXJzaW9uZXJldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdBbm1lbGRlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0L1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdPdmVyc2lndCBvZyBiZWtyw6ZmdGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0IGFmIGtsYXNzZXIvcm9sbGVyIG9nIGRlcmVzIHJlbGF0ZXJlZGUgZmVsdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnRGVyIG9wc3RvZCBlbiBmZWpsIHVuZGVyIGtsYXNzZWltcG9ydGVuLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gU2tqdWx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSB2aXN0IHDDpSBiaWxsZWRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVGlsbGFkZXIgdWR2aWRlZGUgc8O4Z2ViZXRpbmdlbHNlciB2ZWQgc8O4Z25pbmcgZWZ0ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uIE1lZCBkZW5uZSBmdW5rdGlvbiBrYW4gZHUgZi5la3MuIHPDuGdlIGVmdGVyIG5hdm5ldCBww6UgZXQga29uZmlndXJhdGlvbnNlbGVtZW50IG1lZCBiZXRpbmdlbHNlciBzb20gIigqa2V5MSomJiprZXkyKikiIGVsbGVyICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVGlsbGFkZXIgdWR2aWRlZGUgc8O4Z2ViZXRpbmdlbHNlciBpIHPDuGduaW5nIGVmdGVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkga3VuZGVncsOmbnNlZmxhZGVuLiBNZWQgZGVubmUgZnVua3Rpb24ga2FuIGR1IGYuZWtzLiBzw7hnZSBpIG5hdm5ldCBww6UgZXQga29uZmlndXJhdGlvbnNlbGVtZW50IG1lZCBiZXRpbmdlbHNlciBzb20gIigqa2V5MSomJiprZXkyKikiIGVsbGVyICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnVGlsZGVsdGUgQ0lcJ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSVwnZXIgdGlsZGVsdCBrdW5kZXZpcmtzb21oZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSVwnZXIgdGlsZGVsdCBrdW5kZWJydWdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQi1pbmRzdGlsbGluZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdUamVrIGt1biBmb3IgZXQgdW5pa3QgbmF2biBpbmRlbiBmb3IgZGVuIHNhbW1lIENvbmZpZ0l0ZW0ta2xhc3NlIChcJ2NsYXNzXCcpIGVsbGVyIGdsb2JhbHQgKFwnZ2xvYmFsXCcpLCBodmlsa2V0IGJldHlkZXIsIGF0IGFsbGUgZWtzaXN0ZXJlbmRlIENvbmZpZ0l0ZW1zIHRhZ2VzIGkgYmV0cmFndG5pbmcsIG7DpXIgZGVyIGxlZGVzIGVmdGVyIGR1YmxldHRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1bDpmxnIGV0IG1vZHVsIHRpbCBhdCBow6VuZGjDpnZlIGV0IG5hdm5lc2tlbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdWw6ZsZyBldCBtb2R1bCB0aWwgYXQgaMOlbmRow6Z2ZSBldCBudW1tZXJza2VtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnVsOmbGcgZXQgbW9kdWwgdGlsIGF0IGjDpW5kaMOmdmUgZW4gdmVyc2lvbnNzdHJlbmdvcmRuaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1bDpmxnIGRlIGF0dHJpYnV0dGVyLCBkZXIgc2thbCB1ZGzDuHNlIG9wcmV0dGVsc2VuIGFmIGVuIG55IHZlcnNpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1bDpmxnIGthdGVnb3JpZXIsIGRlciBza2FsIHRpbGRlbGVzIGRlbm5lIGtsYXNzZSBhZiBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnS29sb25uZS1rb25maWd1cmF0aW9uc2VsZW1lbnRmaWx0cmUgdGlsIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdLb2xvbm5lciwgZGVyIGthbiBmaWx0cmVyZXMgaSBvdmVyc2lndGVuIG92ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uIEJlbcOmcms6IEt1biBDb25maWcgSXRlbS1hdHRyaWJ1dHRlciBvZyBkeW5hbWlza2UgZmVsdGVyIChEeW5hbWljRmllbGRfTmFtZVgpIGVyIHRpbGxhZHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0tvbmZpZ3VyYXRpb25zZWxlbWVudGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdUaWxmw7hqIGtvbmZpZy1lbGVtZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ1JlZGlnZXIga29uZmlndXJhdGlvbnNlbGVtZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZyBpdGVtLWjDpm5kZWxzZXNtb2R1bCwgZGVyIG11bGlnZ8O4ciBsb2duaW5nIHRpbCBoaXN0b3JpayBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0gZXZlbnQtbW9kdWwsIGRlciBvcGRhdGVyZXIgY29uZmlnIGl0ZW1zIHRpbCBkZXJlcyBha3R1ZWxsZSBkZWZpbml0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0tvbmZpZ3VyZXIgZWxlbWVudGV0cyBoaXN0b3Jpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnUHJpbnQgYWYga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnS29uZmlndXJlciBlbGVtZW50em9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdDb25maWdJdGVtLXRyw6Z2aXNuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBpIGbDuGxnZW5kZSBrbGFzc2VyIHZpbCBpa2tlIGJsaXZlIGdlbXQgcMOlIEVsYXN0aWNzZWFyY2gtc2VydmVyZW4uIEZvciBhdCBhbnZlbmRlIGRldHRlIHDDpSBla3Npc3RlcmVuZGUgQ0lcJ2VyIHNrYWwgQ0ktbWlncmVyaW5nZW4ga8O4cmVzIHZpYSBrb25zb2xsZW4sIGVmdGVyIGF0IGRlbm5lIGluZHN0aWxsaW5nIGVyIMOmbmRyZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIG1lZCBmw7hsZ2VuZGUgaW1wbGVtZW50ZXJpbmdzdGlsc3RhbmRlIHZpbCBpa2tlIGJsaXZlIGdlbXQgcMOlIEVsYXN0aWNzZWFyY2gtc2VydmVyZW4uIEZvciBhdCBhbnZlbmRlIGRldHRlIHDDpSBla3Npc3RlcmVuZGUgQ0lcJ2VyIHNrYWwgQ0ktbWlncmVyaW5nZW4ga8O4cmVzIHZpYSBrb25zb2xsZW4sIGVmdGVyIGF0IGRlbm5lIGluZHN0aWxsaW5nIGVyIMOmbmRyZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0dyw6Zuc2UgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlndXJhdGlvbiBFbGVtZW50Z3LDpm5zZSBwci4gc2lkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0RhdGFiYXNlIGZvciBrb25maWd1cmF0aW9uc3N0eXJpbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdLb25maWd1cmF0aW9uc2VsZW1lbnRldHMgYnVsay1tb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXJhdGlvbnNlbGVtZW50IHPDuGcgYmFja2VuZC1yb3V0ZXIgZm9yIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnT3ByZXQgb2cgYWRtaW5pc3RyZXIgZGVmaW5pdGlvbmVybmUgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnT3ByZXR0ZXIgYmlsbGV0dGVyIHRpbCBDb25maWdJdGVtcyBww6UgYmVzdGVtdGUgdGlkc3B1bmt0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0t1bmRlciBrYW4gc2UgaGlzdG9yaXNrZSBDSS12ZXJzaW9uZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0t1bmRlcm5lIGhhciBtdWxpZ2hlZCBmb3IgbWFudWVsdCBhdCBza2lmdGUgbWVsbGVtIGhpc3Rvcmlza2UgQ0ktdmVyc2lvbmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ1N0YW5kYXJkZGF0YSwgZGVyIHNrYWwgYnJ1Z2VzIHDDpSBhdHRyaWJ1dHRlbiBmb3Igc2vDpnJtYmlsbGVkZXQgdGlsIHPDuGduaW5nIGVmdGVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLiBFa3NlbXBlbDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGEsIGRlciBza2FsIGJydWdlcyBww6UgYXR0cmlidXR0ZW4gZm9yIHNrw6ZybWJpbGxlZGV0IHRpbCBzw7hnbmluZyBlZnRlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4gRWtzZW1wZWw6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmVyIGhhbmRsaW5nZXIsIGh2b3IgZW4gaW5kc3RpbGxpbmdza25hcCBlciB0aWxnw6ZuZ2VsaWcgaSBkZSBsaW5rZWRlIG9iamVrdGVycyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gQmVtw6ZyaywgYXQgZGlzc2UgaGFuZGxpbmdlciBza2FsIGhhdmUgcmVnaXN0cmVyZXQgZsO4bGdlbmRlIEpTLSBvZyBDU1MtZmlsZXI6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIG9nIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluZXIgZXQgVGVtcGxhdGU6OlRvb2xraXQtc2tlbWEgdGlsIHZlcnNpb25zc3RyZW5nZS4gQnJ1Z2VzIGt1biwgaHZpcyBWZXJzaW9uIFN0cmluZyBNb2R1bGUgZXIgc2F0IHRpbCBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lciBldCBzw6Z0IGJldGluZ2Vsc2VyLCB1bmRlciBodmlsa2UgZW4ga3VuZGUgaGFyIGxvdiB0aWwgYXQgc2UgZXQga29uZmlndXJhdGlvbnNlbGVtZW50LiBCZXRpbmdlbHNlcm5lIGthbiBldmVudHVlbHQgYmVncsOmbnNlcyB0aWwgYmVzdGVtdGUga3VuZGVncnVwcGVyLiBOYXZuIGVyIGRlbiBlbmVzdGUgb2JsaWdhdG9yaXNrZSBhdHRyaWJ1dC4gSHZpcyBkZXIgaWtrZSBlciBhbmdpdmV0IGFuZHJlIG11bGlnaGVkZXIsIHZpbCBhbGxlIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIHbDpnJlIHN5bmxpZ2UgdW5kZXIgZGVuIHDDpWfDpmxkZW5kZSBrYXRlZ29yaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBuw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgc2xldHRlIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIgdmVkIGhqw6ZscCBhZiBkZW4gZ2VuZXJpc2tlIGdyw6Zuc2VmbGFkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBuw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgaGVudGUgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciB2ZWQgaGrDpmxwIGFmIGRlbiBnZW5lcmlza2UgZ3LDpm5zZWZsYWRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBzw7hnZSBpIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIgdmVkIGhqw6ZscCBhZiBkZW4gZ2VuZXJpc2tlIGdyw6Zuc2VmbGFkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBuw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgaW5kc3RpbGxlIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIgdmVkIGhqw6ZscCBhZiBkZW4gZ2VuZXJpc2tlIGdyw6Zuc2VmbGFkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lcmVyIGV0IG92ZXJzaWd0c21vZHVsIHRpbCBhdCB2aXNlIGRlbiBsaWxsZSB2aXNuaW5nIGFmIGVuIGxpc3RlIG92ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmluZXJlciwgb20gbGlua3R5cGVldGlrZXR0ZXJuZSBza2FsIHZpc2VzIGkgbm9kZWZvcmJpbmRlbHNlcm5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHJlZ3Vsw6ZyZSB1ZHRyeWsgaW5kaXZpZHVlbHQgZm9yIGh2ZXIgQ29uZmlnSXRlbS1rbGFzc2UgZm9yIGF0IGtvbnRyb2xsZXJlIENvbmZpZ0l0ZW0tbmF2bmV0IG9nIGZvciBhdCB2aXNlIHRpbHN2YXJlbmRlIGZlamxtZWRkZWxlbHNlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGUgdGlsZ8OmbmdlbGlnZSBrb2xvbm5lciBtZWQgQ0lcJ2VyIGkgb3ZlcnNpZ3RlbiBvdmVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGFmaMOmbmdpZ3QgYWYgQ0kta2xhc3Nlbi4gSHZlciBwb3N0IHNrYWwgYmVzdMOlIGFmIGV0IGtsYXNzZW5hdm4gb2cgZXQgYXJyYXkgYWYgdGlsZ8OmbmdlbGlnZSBmZWx0ZXIgZm9yIGRlbiB0aWxzdmFyZW5kZSBrbGFzc2UuIER5bmFtaXNrZSBmZWx0aW5kZ2FuZ2Ugc2thbCBvdmVyaG9sZGUgc2tlbWFldCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJka29uZmlndXJhdGlvbnNlbGVtZW50YXR0cmlidXR0ZW4gZm9yIHNvcnRlcmluZyBhZiBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIHPDuGdlcmVzdWx0YXRldCBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRrb25maWd1cmF0aW9uc2VsZW1lbnRhdHRyaWJ1dHRlbiBmb3Igc29ydGVyaW5nIGFmIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgc8O4Z2VyZXN1bHRhdGV0IGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGt1bmRlZ3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRrb25maWd1cmF0aW9uc2VsZW1lbnRhdHRyaWJ1dHRlbiBmb3Igc29ydGVyaW5nIGFmIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0IGkgc8O4Z2VyZXN1bHRhdGV0IGZvciBkZW5uZSBoYW5kbGluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZHLDpmtrZWbDuGxnZW4gZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgc8O4Z2VyZXN1bHRhdGV0IGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4gT3A6IMOmbGRzdGUgw7h2ZXJzdC4gTmVkOiBueWVzdGUgw7h2ZXJzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZHLDpmtrZWbDuGxnZW4gZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgc8O4Z2VyZXN1bHRhdGV0IGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGt1bmRlZ3LDpm5zZWZsYWRlbi4gT3A6IMOmbGRzdGUgw7h2ZXJzdC4gTmVkOiBueWVzdGUgw7h2ZXJzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkcsOma2tlZsO4bGdlbiBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBzw7hnZXJlc3VsdGF0ZXQgZm9yIGRlbm5lIGhhbmRsaW5nLiBPcDogw6ZsZHN0ZSDDuHZlcnN0LiBOZWQ6IG55ZXN0ZSDDuHZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIGtvbG9ubmVyLCBkZXIgc29tIHN0YW5kYXJkIHZpc2VzIGZvciBDSVwnZXIgaSBvdmVyc2lndGVuIG92ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIsIGFmaMOmbmdpZ3QgYWYgQ0kta2xhc3Nlbi4gSHZlciBwb3N0IHNrYWwgYmVzdMOlIGFmIGV0IGtsYXNzZW5hdm4gb2cgZXQgYXJyYXkgYWYgdGlsZ8OmbmdlbGlnZSBmZWx0ZXIgZm9yIGRlbiB0aWxzdmFyZW5kZSBrbGFzc2UuIER5bmFtaXNrZSBmZWx0aW5kZ2FuZ2Ugc2thbCBvdmVyaG9sZGUgc2tlbWFldCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmVyZXIgZGVuIHN0YW5kYXJkcmVsYXRpb25zZHliZGUsIGRlciBza2FsIHZpc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGVuIHZpc3RlIHN0YW5kYXJkYXR0cmlidXQgZm9yIHPDuGduaW5nIGVmdGVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIHDDpSBza8Omcm1lbiB0aWwgc8O4Z25pbmcgZWZ0ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGVuIHN0YW5kYXJkIHZpc3RlIHPDuGdlYXR0cmlidXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIHDDpSBza8Omcm1lbiB0aWwgc8O4Z25pbmcgZWZ0ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuIEVrc2VtcGVsOiAiS2V5IiBza2FsIGhhdmUgbmF2bmV0IHDDpSBkZXQgZHluYW1pc2tlIGZlbHQsIGkgZGV0dGUgdGlsZsOmbGRlIFwnWFwnLCAiQ29udGVudCIgc2thbCBoYXZlIHbDpnJkaWVuIGFmIGRldCBkeW5hbWlza2UgZmVsdCBhZmjDpm5naWd0IGFmIGRlbiBkeW5hbWlza2UgZmVsdHR5cGUsIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgb2cgZWxsZXIgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkdW5kZXJvYmpla3RldCBpIGtsYXNzZW4gXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIHRpbGfDpm5nZWxpZ2Uga29sb25uZXIgbWVkIENJXCdlciBpIG92ZXJzaWd0ZW4gb3ZlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBhZmjDpm5naWd0IGFmIENJLWtsYXNzZW4uIEh2ZXIgcG9zdCBza2FsIGJlc3TDpSBhZiBldCBrbGFzc2VuYXZuIG9nIGV0IGFycmF5IGFmIHRpbGfDpm5nZWxpZ2UgZmVsdGVyIGZvciBkZW4gdGlsc3ZhcmVuZGUga2xhc3NlLiBEeW5hbWlza2UgZmVsdGluZGdhbmdlIHNrYWwgb3ZlcmhvbGRlIHNrZW1hZXQgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGjDuGpkZW4gZm9yIFJpY2ggVGV4dCBFZGl0b3Ita29tcG9uZW50ZW4gZm9yIGRlbm5lIHNrw6ZybS4gSW5kdGFzdCB0YWwgKHBpeGVscykgZWxsZXIgcHJvY2VudHbDpnJkaSAocmVsYXRpdikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBhbnRhbGxldCBhZiByw6Zra2VyIGZvciBDSS1kZWZpbml0aW9uc2VkaXRvcmVuIGkgYWRtaW5pc3RyYXRpb25zZ3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHLDpmtrZWbDuGxnZW4gYWYgaMOmbmRlbHNlc3RpbHN0YW5kZSBmcmEgaMO4aiAoZi5la3MuIGNyaWNpdGFsKSB0aWwgbGF2IChmLmVrcy4gZnVua3Rpb25lbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIHJlbGV2YW50ZSBpbXBsZW1lbnRlcmluZ3N0aWxzdGFuZGUsIGh2b3IgdGlsa255dHRlZGUgdGlja2V0cyBrYW4gcMOldmlya2Ugc3RhdHVzIGZvciBldCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4Z2VncsOmbnNlbiBmb3Igc2vDpnJtYmlsbGVkZXQgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4Z2VncsOmbnNlbiBmb3Igc2vDpnJtYmlsbGVkZXQgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4Z2VncsOmbnNlbiBmb3IgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS1za8Omcm1lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4Z2VncsOmbnNlbiBmb3Igc2vDpnJtYmlsbGVkZXQgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdDb25maWdJdGVtIChJRD0lcykgc2xldHRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIHZpc3RlIGtvbG9ubmVyIGFmIENJXCdlciBpIGRlbiBrb21wbGVrc2UgdmlzbmluZyBhZiBsaW5rdGFiZWxsZW4sIGFmaMOmbmdpZ3QgYWYgQ0kta2xhc3Nlbi4gSHZlciBwb3N0IHNrYWwgaW5kbGVkZXMgbWVkIGtsYXNzZW5zIG5hdm4gb2cgZG9iYmVsdCBrb2xvbiAoZi5la3MuIENvbXB1dGVyOjopLiBEZXIgZXIgbm9nbGUgZsOlIENJLWF0dHJpYnV0dGVyLCBzb20gZXIgZsOmbGxlcyBmb3IgYWxsZSBDSVwnZXIgKGVrc2VtcGVsIGZvciBrbGFzc2VuIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBGb3IgYXQgdmlzZSBpbmRpdmlkdWVsbGUgQ0ktYXR0cmlidXR0ZXIgc29tIGRlZmluZXJldCBpIENJLWRlZmluaXRpb25lbiBza2FsIGbDuGxnZW5kZSBza2VtYSBicnVnZXMgKGVrc2VtcGVsIGZvciBrbGFzc2VuIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIEh2aXMgZGVyIGlra2UgZXIgbm9nZW4gcG9zdCBmb3IgZW4gQ0kta2xhc3NlLCB2aXNlcyBzdGFuZGFyZGtvbG9ubmVybmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcmVyLCBodmlsa2UgZWxlbWVudGVyIGRlciBlciB0aWxnw6ZuZ2VsaWdlIGZvciBcJ0hhbmRsaW5nXCcgcMOlIHRyZWRqZSBuaXZlYXUgaSBJVFNNIENvbmZpZyBJdGVtIEFDTC1zdHJ1a3R1cmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciwgaHZpbGtlIGVsZW1lbnRlciBkZXIgZXIgdGlsZ8OmbmdlbGlnZSBww6UgZsO4cnN0ZSBuaXZlYXUgaSBJVFNNIENvbmZpZyBJdGVtIEFDTC1zdHJ1a3R1cmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVyZXIsIGh2aWxrZSBlbGVtZW50ZXIgZGVyIGVyIHRpbGfDpm5nZWxpZ2UgcMOlIGFuZGV0IG5pdmVhdSBpIElUU00gQ29uZmlnIEl0ZW0gQUNMLXN0cnVrdHVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciwgaHZpbGtlbiB0eXBlIGxpbmsgKG5hdm5naXZldCBmcmEgdGlja2V0LXBlcnNwZWt0aXZldCkgZGVyIGthbiBww6V2aXJrZSBzdGF0dXMgZm9yIGV0IGxpbmtldCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmVyZXIsIGh2aWxrZW4gdHlwZSB0aWNrZXQgZGVyIGthbiBww6V2aXJrZSBzdGF0dXMgZm9yIGV0IGxpbmtldCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdPcGRhdGVyaW5nIGFmIGRlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1NsZXQga29uZmlndXJhdGlvbnNlbGVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnRmFydmUgcMOlIGltcGxlbWVudGVyaW5nc3N0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGlrZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdIw6ZuZGVsc2VzbW9kdWwgZm9yIGR5bmFtaXNrZSBmZWx0ZXIsIGRlciBtYXJrZXJlciBrb25maWd1cmF0aW9uc2VsZW1lbnRkZWZpbml0aW9uZXIgc29tIHVzeW5rcm9uaXNlcmVkZSwgaHZpcyBkZSBpbmRlaG9sZGVyIGR5bmFtaXNrZSBmZWx0ZXIsIGRlciDDpm5kcmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2tlIGZlbHRlciwgZGVyIHZpc2VzIGkgZGVuIGVrc3RyYSBJVFNNLWZlbHRza8Omcm0gaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNrZSBmZWx0ZXIsIGRlciB2aXNlcyBpIG92ZXJzaWd0c3Nrw6ZybWVuIGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGt1bmRlZ3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNrZSBmZWx0ZXIsIGRlciB2aXNlcyBpIHNrw6ZybWJpbGxlZGV0IHRpbCBzw7hnbmluZyBlZnRlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWt0aXZlcmVyIGZ1bmt0aW9uZW4gdGlsIG1hc3NlaGFuZGxpbmcgYWYga29uZmlndXJhdGlvbnNlbGVtZW50ZXIsIHPDpSBhZ2VudGVucyBmcm9udGVuZCBrYW4gYXJiZWpkZSBww6UgbWVyZSBlbmQgw6l0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBhZCBnYW5nZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGUgcmVsZXZhbnRlIGltcGxlbWVudGVyaW5nc3RpbHN0YW5kZSwgaHZvciB0aWxrbnl0dGVkZSB0aWNrZXRzIGthbiBww6V2aXJrZSBzdGF0dXMgZm9yIGV0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdBa3RpdmVyZXIvZGVha3RpdmVyZXIgZnVua3Rpb25lbiB0aWwgYXQga29udHJvbGxlcmUgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciBmb3IgdW5pa2tlIG5hdm5lLiBGw7hyIGR1IGFrdGl2ZXJlciBkZW5uZSBtdWxpZ2hlZCwgYsO4ciBkdSB0amVra2UgZGl0IHN5c3RlbSBmb3IgYWxsZXJlZGUgZWtzaXN0ZXJlbmRlIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIG1lZCBkdXBsaWthdG5hdm5lLiBEZXQga2FuIGR1IGfDuHJlIG1lZCBrb25zb2xrb21tYW5kb2VuIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnSMOmbmRlbHNlc21vZHVsIHRpbCBhdCBzw6Z0dGUgY29uZmlnaXRlbS1zdGF0dXMgcMOlIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0ZlbHRlciBpIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0cyBpbmRla3MsIGRlciBicnVnZXMgdGlsIGZ1bGR0ZWtzdHPDuGduaW5nLiBGZWx0ZXIgZ2VtbWVzIG9nc8OlLCBtZW4gZXIgaWtrZSBvYmxpZ2F0b3Jpc2tlIGZvciBkZW4gb3Zlcm9yZG5lZGUgZnVua3Rpb25hbGl0ZXQuIElua2x1ZGVyaW5nIGFmIHZlZGjDpmZ0ZWRlIGZpbGVyIGthbiBkZWFrdGl2ZXJlcyB2ZWQgYXQgc8OmdHRlIHBvc3RlbiB0aWwgMCBlbGxlciBzbGV0dGUgZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnRmVsdGVyIGdlbXQgaSBrb25maWd1cmF0aW9uc2VsZW1lbnRldHMgaW5kZWtzLCBzb20gYnJ1Z2VzIHRpbCBhbmRyZSB0aW5nIGVuZCBmdWxkdGVrc3Rzw7hnbmluZy4gRm9yIGF0IGbDpSBmdWxkIGZ1bmt0aW9uYWxpdGV0IGVyIGFsbGUgZmVsdGVyIG9ibGlnYXRvcmlza2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnRm9yIGh2ZXIgd2VidGplbmVzdGUgKG7DuGdsZSkga2FuIGRlciBkZWZpbmVyZXMgZXQgYXJyYXkgYWYga2xhc3NlciAodsOmcmRpKSwgc29tIGltcG9ydGVuIGVyIGJlZ3LDpm5zZXQgdGlsLiBGb3IgYWxsZSB2YWxndGUga2xhc3NlciBlbGxlciBhbGxlIGVrc2lzdGVyZW5kZSBrbGFzc2VyIHNrYWwgZGUgaWRlbnRpZmljZXJlbmRlIGF0dHJpYnV0dGVyIHbDpmxnZXMgaSBpbnZva2VyLWtvbmZpZ3VyYXRpb25lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmVyaW5nIGFmIEdlbmVyaWNJbnRlcmZhY2UtbW9kdWwgdGlsIENvbmZpZ0l0ZW1GZXRjaC1pbnZva2F0b3JsYWdldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYWYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bCB0aWwgQ29uZmlnSXRlbUZldGNoLWludm9rYXRvcmxhZ2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYWYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bCB0aWwgQ29uZmlnSXRlbUZldGNoLWludm9rYXRvcmxhZ2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdPdmVyc2lndCBvdmVyIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSMOmbmRlbHNlc3N0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmtsdWRlcmVyIGltcGxlbWVudGVyaW5nc3RpbHN0YW5kZSBpIHPDuGduaW5nZW4gZWZ0ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBrdW5kZWdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmtsdWRlcmVyIGjDpm5kZWxzZXN0aWxzdGFuZGUgaSBrb25maWd1cmF0aW9uc2VsZW1lbnQtc8O4Z25pbmdlbiBpIGt1bmRlZ3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01ha3NpbWFsdCBhbnRhbCBrb25maWd1cmF0aW9uc2VsZW1lbnRlciwgZGVyIHNrYWwgdmlzZXMgaSByZXN1bHRhdGV0IGFmIGRlbm5lIGhhbmRsaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsIHRpbCBhdCBrb250cm9sbGVyZSBkZW4gZ3J1cHBlLCBkZXIgZXIgYW5zdmFybGlnIGZvciBlbiBrbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgdGlsIGF0IGtvbnRyb2xsZXJlIGRlbiBncnVwcGUsIGRlciBlciBhbnN2YXJsaWcgZm9yIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bCB0aWwgYXQgZ2VuZXJlcmUgc3RhdGlzdGlrIG92ZXIgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOYXZuIE1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW1tZXJtb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbnRhbCBrb25maWd1cmF0aW9uc2VsZW1lbnRlciwgZGVyIHNrYWwgdmlzZXMgcMOlIGh2ZXIgc2lkZSBhZiBldCBzw7hnZXJlc3VsdGF0IGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbnRhbCBrb25maWd1cmF0aW9uc2VsZW1lbnRlciwgZGVyIHNrYWwgdmlzZXMgcMOlIGh2ZXIgc2lkZSBhZiBldCBzw7hnZXJlc3VsdGF0IGkga3VuZGVncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrdGVyLCBkZXIgc2thbCBzw7hnZXMgZWZ0ZXIsIGh2b3IgbWFuZ2UgcG9zdGVyIG9nIGh2aWxrZSBhdHRyaWJ1dHRlciwgZGVyIHNrYWwgdmlzZXMuIENvbmZpZ0l0ZW0tYXR0cmlidXR0ZXIgc2thbCBla3NwbGljaXQgZ2VtbWVzIHZpYSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdPdmVyYmxpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBmb3Iga2F0ZWdvcmllcm5lIGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRrbGFzc2VyIGkgcHLDpmZlcmVuY2V2aXNuaW5nZW4gaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIGZvciBrb2xvbm5lZmlsdHJlbmUgaSBvdmVyc2lndGVuIG92ZXIgc23DpSBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4gQmVtw6ZyazogSHZpcyBcJ0FrdGl2XCcgc8OmdHRlcyB0aWwgMCwgZm9yaGluZHJlciBkZXQga3VuIGFnZW50ZXIgaSBhdCByZWRpZ2VyZSBpbmRzdGlsbGluZ2VybmUgZm9yIGRlbm5lIGdydXBwZSBpIGRlcmVzIHBlcnNvbmxpZ2UgcHLDpmZlcmVuY2VyLCBtZW4gZGV0IGdpdmVyIHN0YWRpZyBhZG1pbmlzdHJhdG9yZXIgbXVsaWdoZWQgZm9yIGF0IHJlZGlnZXJlIGluZHN0aWxsaW5nZXJuZSBww6UgZW4gYW5kZW4gYnJ1Z2VycyB2ZWduZS4gQnJ1ZyBcJ1ByZWZlcmVuY2VHcm91cFwnIHRpbCBhdCBzdHlyZSwgaSBodmlsa2V0IG9tcsOlZGUgZGlzc2UgaW5kc3RpbGxpbmdlciBza2FsIHZpc2VzIGkgYnJ1Z2VyZ3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBmb3IgdWRydWxuaW5nc3RpbHN0YW5kZW5lcyBmYXJ2ZSBpIHByw6ZmZXJlbmNldmlzbmluZ2VuIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBmb3IgdWRydWxuaW5nc3RpbHN0YW5kZSBpIHByw6ZmZXJlbmNldmlzbmluZ2VuIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIGVrc2VtcGxlcm5lIHDDpSB0aWxsYWRlbHNlc2dydXBwZXIgZm9yIGRlIGdlbmVyZWxsZSBrYXRhbG9nYXR0cmlidXR0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHRpbCBuYXZuZW1vZHVsZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGtsYXNzZXIgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBhZiBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIG51bW1lcm1vZHVsZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGtsYXNzZXIgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJlIGZvciBzaWRlcm5lIChodm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVybmUgdmlzZXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIHZlcnNpb25zc3RyZW5nbW9kdWxldCBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50a2xhc3NlciBpIHByw6ZmZXJlbmNldmlzbmluZ2VuIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBmb3IgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIGZvciB2ZXJzaW9uc3VkbMO4c2VyZW4gZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGtsYXNzZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW5zIHByw6ZmZXJlbmNldmlzbmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdVZGbDuHJlciBkZW4ga29uZmlndXJlcmVkZSBoYW5kbGluZyBmb3IgaHZlciBiZWdpdmVuaGVkIChzb20gZW4gSW52b2tlcikgZm9yIGh2ZXIga29uZmlndXJlcmV0IHdlYnRqZW5lc3RlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnVGlsbGFkZWxzZXNncnVwcGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXRzIHZlZGjDpmZ0bmluZ3NoYW5kbGluZyBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBicnVnZSBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudHNrw6ZybWVuIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBicnVnZSBza8Omcm1iaWxsZWRldCB0aWwgc8O4Z25pbmcgZWZ0ZXIgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2Ugc2vDpnJtYmlsbGVkZXQgdGlsIHPDuGduaW5nIGVmdGVyIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBrdW5kZWdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIHNrw6ZybWJpbGxlZGV0IG1lZCB0csOmdmlzbmluZyBhZiBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2Ugem9vbXNrw6ZybWVuIGZvciBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBicnVnZSBza8Omcm1iaWxsZWRldCBUaWxmw7hqIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50IGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2Ugc2vDpnJtYmlsbGVkZXQgbWVkIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBidWxrIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2Ugc2vDpnJtYmlsbGVkZXQgUmVkaWdlciBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIHNrw6ZybWJpbGxlZGV0IG1lZCBoaXN0b3JpayBmb3IgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBicnVnZSBza8Omcm1iaWxsZWRldCBVZHNrcml2IElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50IGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnTsO4ZHZlbmRpZ2UgcmV0dGlnaGVkZXIgZm9yIGF0IHNsZXR0ZSBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdTw7hnIGkga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdJbmRzdGlsIGF1dG9tYXRpc2sgaMOmbmRlbHNlc3N0YXR1cyBmb3IgZW4gQ0ksIG7DpXIgZW4gdGlja2V0IGVyIGxpbmtldCB0aWwgZW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5kc3RpbGxlciBpbXBsZW1lbnRlcmluZ3N0aWxzdGFuZGVuIGkga29uZmlndXJhdGlvbnNlbGVtZW50ZXRzIGJ1bGtza8Omcm0gaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luZHN0aWxsZXIgaMOmbmRlbHNlc3RpbHN0YW5kZW4gaSBrb25maWd1cmF0aW9uc2VsZW1lbnRldHMgYnVsa3Nrw6ZybSBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBldCBsaW5rIGkgbWVudWVuLCBkZXIgZ8O4ciBkZXQgbXVsaWd0IGF0IGZvcmJpbmRlIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBtZWQgZXQgYW5kZXQgb2JqZWt0IGkgem9vbXZpc25pbmdlbiBhZiBrb25maWd1cmF0aW9uc2VsZW1lbnRldCBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBldCBsaW5rIGkgbWVudWVuIGZvciBhdCBmw6UgYWRnYW5nIHRpbCBoaXN0b3Jpa2tlbiBmb3IgZXQga29uZmlndXJhdGlvbnNlbGVtZW50IGkgb3ZlcnNpZ3RlbiBvdmVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBldCBsaW5rIGkgbWVudWVuIGZvciBhdCBmw6UgYWRnYW5nIHRpbCBoaXN0b3Jpa2tlbiBmb3IgZXQga29uZmlndXJhdGlvbnNlbGVtZW50IGkgYWdlbnRncsOmbnNlZmxhZGVucyB6b29tdmlzbmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBldCBsaW5rIGkgbWVudWVuIHRpbCBhdCBzbGV0dGUgZXQga29uZmlndXJhdGlvbnNlbGVtZW50IGkgem9vbXZpc25pbmdlbiBhZiBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdWaXNlciBldCBsaW5rIGkgbWVudWVuIGZvciBhdCB2aXNlIGxpbmtzIHRpbCBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBzb20gZW4gdHLDpnZpc25pbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiB0aWwgYXQgZHVwbGlrZXJlIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIG92ZXJzaWd0ZW4gb3ZlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiB0aWwgYXQgZHVwbGlrZXJlIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIHpvb212aXNuaW5nZW4gYWYgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiB0aWwgcmVkaWdlcmluZyBhZiBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgaSBhZ2VudGdyw6Zuc2VmbGFkZW5zIHpvb212aXNuaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiB0aWwgYXQgZ8OlIHRpbGJhZ2UgaSB6b29tdmlzbmluZ2VuIGFmIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0IGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gdGlsIGF0IHVkc2tyaXZlIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIGFnZW50Z3LDpm5zZWZsYWRlbnMgem9vbXZpc25pbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiB0aWwgYXQgem9vbWUgaW5kIHDDpSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgaSBvdmVyc2lndGVuIG92ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBrb25maWd1cmF0aW9uc2VsZW1lbnRldHMgaGlzdG9yaWsgKGkgb212ZW5kdCByw6Zra2Vmw7hsZ2UpIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdTdGFuZGFyZGthdGVnb3JpZW4sIHNvbSB2aXNlcywgaHZpcyBpbmdlbiBlciB2YWxndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa2F0b3JlbiBmb3IgZXQga29uZmlndXJhdGlvbnNlbGVtZW50LCBmLmVrcy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFN0YW5kYXJkIGVyIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ1VkbMO4c2VyIGF1dG9tYXRpc2sgQ29uZmlnSXRlbUZldGNoIGludm9rZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaW9uIFN0cmluZy11ZHRyeWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNpb24gdWRsw7hzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ09tIHVkZsO4cmVsc2VuIGFmIENvbmZpZ0l0ZW1BQ0wga2FuIHVuZGfDpXMgdmVkIGF0IHRqZWtrZSBjYWNoZWxhZ3JlZGUgZmVsdGFmaMOmbmdpZ2hlZGVyLiBEZXR0ZSBrYW4gZm9yYmVkcmUgaW5kbMOmc25pbmdzdGlkZW4gZm9yIGZvcm11bGFyZXIsIG1lbiBza2FsIGRlYWt0aXZlcmVzLCBodmlzIEFDTE1vZHVsZXMgc2thbCBicnVnZXMgdGlsIElUU01Db25maWdJdGVtLSBvZyBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnSHZpbGtlIGdlbmVyZWxsZSBvcGx5c25pbmdlciB2aXNlcyBpIG92ZXJza3JpZnRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWt0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ0RldGFsamVyIG9tIHZlcnNpb24gYWYga29uZmlndXJhdGlvbnNlbGVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWt0aXYnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDQ0LDQ1IGNtICgxNyw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogNTMsMzQgY20gKDIxIHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogNjYsNjggY20gKDI2LDI1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiA4MCwwMSBjbSAoMzEsNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LXRvbW1lciByYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogODgsOSBjbSAoMzUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMSB0b21tZXIgc3RhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSB0b21tZXIgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMyB0b21tZXIgc3RhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiB0b21tZXIgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDEwNiw2OCBjbSAoNDIgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgdG9tbWVyICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiA4LDg5IGNtICgzLDUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiAxMzMsMzUgY20gKDUyLDUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgdG9tbWVyICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiAxNDYsNjggY20gKDU3LDc1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHRvbW1lciAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogMTYwLDAyIGNtICg2MyB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgdG9tbWVyICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogMTczLDM1IGNtICg2OCwyNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDEzLDM0IGNtICg1LDI1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSB0b21tZXIgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgdG9tbWVyICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDIwMCwwMiBjbSAoNzgsNzUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHRvbW1lciAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IHRvbW1lciAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiAxNyw3OCBjbSAoNyB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDIyLDIzIGNtICg4LDc1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMzEsMTIgY20gKDEyLDI1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDM1LDU2IGNtICgxNCB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiA0MCwwMSBjbSAoMTUsNzUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ1JlZ25za2FiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnVGlsZGVsaW5nIGFmIGFkcmVzc2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZyB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVHlwZSBhcHBhcmF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQmF0dGVyaWthcGFjaXRldCAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0JhdHRlcml0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQnlnbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzLWdyw6Zuc2VmbGFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVS1rbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0thcGFjaXRldCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnS2FwYWNpdGV0IHByLiBncmFmaWtrb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnS29ydG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0tvcnRsw6ZzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnS29ydHR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0tsaWVudC1jZXJ0aWZpa2F0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnS2xpZW50c29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnS3VuZGVrYXRlZ29yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdVcmZyZWt2ZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdVcmV0cyBoYXN0aWdoZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0tvZGVzaWduZXJpbmdzY2VydGlmaWthdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJlbmNldGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0tvbnN1bGVudGFmdGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnS29udGFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnS29udGFrdCBkaXN0cmlidXTDuHInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdIw6VuZHRlcmluZyBhZiBjb250YWluZXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnS29udHJha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ0tvbnRyYWt0dHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0tvbnRyYWt0cGVyaW9kZSBmcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnS29udHJha3RwZXJpb2RlIGluZHRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdUcsOlZGzDuHMgdGVsZWZvbiAoREVDVC10ZWxlZm9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdPbWtvc3RuaW5nc2VuaGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnQW50YWwgbGljZW5zZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ09wcmV0dGVsc2VzZGF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnQnJ1Z2VyZGVmaW5lcmV0IHN0YXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZlcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtc2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXRvIGZvciBmYWt0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXRvIGZvciBiZXN0aWxsaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXRvIGZvciBnYXJhbnRpc3RpbGxlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdG8gZm9yIHVkZ2l2ZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGVza3RvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnRG9rdW1lbnRzaWduZXJpbmdzY2VydGlmaWthdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSS1zdGF0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtbWFpbC1jZXJ0aWZpa2F0ZXIgKFMvTUlNRS1jZXJ0aWZpa2F0ZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0Fuc8OmdHRlbHNlc2tvbnRyYWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnU2x1dCBJUC1hZHJlc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnU2x1dCBtZWQgc3TDuHR0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ1VkbMO4YnNkYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdFa3N0ZXJuIGhhcmRkaXNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnRmlyZXdhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ1N2aW5naGp1bCB0aWwgZW5lcmdpbGFncmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zvcm1mYWt0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW5jaGlzZWFmdGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0dlbmVyZWwgaW5mb3JtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdHcmFmaWtrb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaWtrb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdIYXJkd2FyZS1tb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdIYXJkd2FyZS12w6ZndCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnSGVhZHNldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQLXByb3Rva29sJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lkZW50aXRldHMtIG9nIGFkZ2FuZ3NzdHlyaW5nIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdJbnZlbnRhcm51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0ludmVyc3RlcmluZ3NvbWtvc3RuaW5nZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdGYWt0dXJhbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFzdGF0dXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENELXNrw6ZybSAoZmx5ZGVuZGUga3J5c3RhbHNrw6ZybSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRC1za8Omcm0gKGx5c2VtaXR0ZXJlbmRlIGRpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdGYXN0bmV0dGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdCcmVkZGVncmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnTGFnIDE6IEZ5c2lzayBsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnTGFnIDI6IERhdGFsaW5rLWxhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnTGFnIDM6IE5ldHbDpnJrc2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdMYWcgMzogTmV0dsOmcmtzbGFnIChzdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnTGFnIDQ6IFRyYW5zcG9ydGxhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnTGFnIDU6IFNlc3Npb25zbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0xhZyA2OiBQcsOmc2VudGF0aW9uc2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0xhZyA3OiBBcHBsaWthdGlvbnNsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnTGVqZWFmdGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpY2Vuc2FmdGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW5zbsO4Z2xlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpY2Vuc3R5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0xpY2Vuc3BlcmlvZGUgZnJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnTGljZW5zcGVyaW9kZSBpbmR0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGhpdW0tamVybmZvc2ZhdCAoTGlGZVBPNCktYmF0dGVyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGl0aXVtLWlvbi1iYXR0ZXJpIChMaS1pb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnTMOlbmVhZnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0JlbGlnZ2VuZGUgaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMw6ZuZ2RlZ3JhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1Byb2R1Y2VudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTWFrc2ltYWwgYmVsYXN0bmluZ3NrYXBhY2l0ZXQgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ0h1a29tbWVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdIdWtvbW1lbHNlc3R5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWxudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWwvaW5kbGVqcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdNb2RlbGJlc2tyaXZlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1Nrw6ZybWVucyBvcGzDuHNuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1Nrw6ZybXN0w7hycmVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ05ldHbDpnJrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ05ldHbDpnJrc2luZm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF0aW9uIG9tIG5ldHbDpnJrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdOZXR2w6Zya3NsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWtrZWwtY2FkbWl1bS1iYXR0ZXJpIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2tlbC1tZXRhbGh5ZHJpZC1iYXR0ZXJpIChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdBZnRhbGUgb20gaGVtbWVsaWdob2xkZWxzZSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGVzYm9nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQW50YWwgQ1BVXCdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdBbnRhbCBSQU0tbW9kdWxlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdBbnRhbCBncmFmaWtrb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVELXNrw6ZybSAob3JnYW5pc2sgbHlzZW1pdHRlcmVuZGUgZGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0RyaWZ0c29ta29zdG5pbmdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdCZXN0aWxsaW5nc251bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0FuZGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdVZGdhbmdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTi1LT0RFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcnNrYWJzYWZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvbm51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGVsZWZvbnR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGeXNpc2tlIGtlcm5lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1N0csO4bWZvcnN5bmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0vDuGJ0IHDDpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnU3RhdGl2ZXRzIGR5YmRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnUmFjay1lbmhlZGVyIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnVsOmcmVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0ta29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMtY2VydGlmaWthdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnU2FsZ3Nrb250cmFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbGxpdHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnRm9yc2VnbGV0IGJseXN5cmViYXR0ZXJpIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VyaWVudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyLXNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnU2VydmljZWFmdGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpY2UtdGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1N0aWtrb250YWt0dHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnSMO4anR0YWxlcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1N0YXJ0IElQLWFkcmVzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ09wYmV2YXJpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdPcGJldmFyaW5nc3BhcnRpdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0RhdHRlcnNlbHNrYWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1NhbW1lbmZhdG5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUeW5kIGtsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnVHLDpWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVG9yZGVuYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnR3JhZmlra29ydGV0cyBzYW1sZWRlIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnUkFNIGkgYWx0IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ0JlcsO4cmluZ3Nmw7hsc29tIHNrw6ZybSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1TDpXJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0ItaHViJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlItaGVhZHNldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQLXRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/de_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdBbGxnZW1laW5lIEJldHJpZWJzZGF0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0VpbnN0ZWxsdW5nZW4gZsO8ciBlaW5nZWhlbmRlIEFuZm9yZGVydW5nc2RhdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnRWluc3RlbGx1bmdlbiBmw7xyIGF1c2dlaGVuZGUgQW50d29ydGRhdGVuJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnQ29uZmlnSXRlbS1WZXJ3YWx0dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnS2xhc3Nlbi1EZWZpbml0aW9uIMOkbmRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ1JvbGxlbmRlZmluaXRpb24gw6RuZGVybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1JlYWR5MkltcG9ydC1LbGFzc2VuYsO8bmRlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0hpZXIga8O2bm5lbiBTaWUgUmVhZHkySW1wb3J0LUtsYXNzZW5iw7xuZGVsIGltcG9ydGllcmVuLCBkaWUgdW5zZXJlIGdlYnLDpHVjaGxpY2hzdGVuIEtvbmZpZ3VyYXRpb25zcHVua3RlIHplaWdlbi4gQml0dGUgYmVhY2h0ZW4gU2llLCBkYXNzIGVpbmlnZSB6dXPDpHR6bGljaGUgS29uZmlndXJhdGlvbmVuIGVyZm9yZGVybGljaCBzZWluIGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ1ZvcmhhbmRlbmUgRW50aXTDpHRlbiBha3R1YWxpc2llcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnUmVhZHkyQWRvcHQtS2xhc3NlbmLDvG5kZWwgaW1wb3J0aWVyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDb25maWdJdGVtLUtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnQ29uZmlnIEl0ZW0tUm9sbGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdGVyIGbDvHIgS2xhc3Nlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdXw6RobGVuIFNpZSBlaW5lIEtsYXNzZSBhdXMgZGVyIExpc3RlIGF1cyB1bSBlaW4gbmV1ZXMgQ29uZmlnIEl0ZW0genUgZXJzdGVsbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0tsYXNzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBTYW1tZWxha3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ1ZlcndlbmR1bmdzc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnVm9yZmFsbHN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdadSBlaW5lbSBhbmRlcmVuIHZlcmtuw7xwZmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdVbmfDvGx0aWdlIENvbmZpZ3VyYXRpb24gSXRlbSBOdW1tZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0RpZSBOdW1tZXIgZGVzIHp1IHZlcmtuw7xwZmVuZGVuIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnV29sbGVuIFNpZSBkaWVzZXMgQ29uZmlndXJhdGlvbiBJdGVtIHdpcmtsaWNoIGzDtnNjaGVuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdEZXIgTmFtZSBkaWVzZXMgQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFtZSB3aXJkIGJlcmVpdHMgdm9uIGRlbiBDb25maWd1cmF0aW9uIEl0ZW1zIG1pdCBkZW4gZm9sZ2VuZGVuIE51bW1lcm4gdmVyd2VuZGV0OiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1ZlcnNpb25zbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWZXJzaW9uc251bW1lciBkaWVzZXMgS29uZmlndXJhdGlvbnNlbGVtZW50cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0RpZSBWZXJzaW9uc251bW1lciB3aXJkIGJlcmVpdHMgdm9uIGRlbiBDb25maWdJdGVtcyBtaXQgZGVuIGZvbGdlbmRlbiBOdW1tZXJuIHZlcndlbmRldDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1ZlcndlbmR1bmdzc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnVm9yZmFsbHN0YXR1cyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yaWUgdm9uIENvbmZpZ3VyYXRpb24gSXRlbTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnw4RuZGVydW5nc3ZlcmxhdWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0Vyc3RlbGx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ0RldGFpbGFuc2ljaHQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtcyBwcm8gU2VpdGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ0tlaW5lIENvbmZpZyBJdGVtLURhdGVuIGdlZnVuZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0NvbmZpZyBJdGVtIGF1c3fDpGhsZW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdTdWNoZSBhdXNmw7xocmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0F1Y2ggaW4gZnLDvGhlcmVuIFZlcnNpb25lbiBzdWNoZW4/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgZsO8ciBDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ1RpZWZlIEViZW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnVmVyZ3LDtsOfZXJuL1ZlcmtsZWluZXJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ01heGltYWxlIFZlcmtuw7xwZnVuZ3NlYmVuZSBmw7xyIENvbmZpZ0l0ZW0gZXJyZWljaHQhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdBa3R1ZWxsZXIgVmVyd2VuZHVuZ3NzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0FrdHVlbGxlciBWb3JmYWxsc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1p1bGV0enQgZ2XDpG5kZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1p1bGV0enQgZ2XDpG5kZXJ0IHZvbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0locmUgQ29uZmlnIEl0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZyBJdGVtLVN1Y2hlJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICdPYmpla3QtVHlwJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmVsZCBuYWNoIE9iamVrdHR5cCBmaWx0ZXJuJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRGllIGZvbGdlbmRlbiBLbGFzc2VuIHdlcmRlIGltcG9ydGllcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRGllIGZvbGdlbmRlbiBSb2xsZW4gd2VyZGVuIGltcG9ydGllcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnQmVhY2h0ZW4gU2llLCBkYXNzIGF1Y2ggZW50c3ByZWNoZW5kZSBkeW5hbWlzY2hlIEZlbGRlciB1bmQgR2VuZXJhbENhdGFsb2ctS2xhc3NlbiBlcnN0ZWxsdCB3ZXJkZW4gdW5kIGVzIGtlaW5lIGF1dG9tYXRpc2NoZSBMw7ZzY2h1bmcgZ2lidC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdNw7ZjaHRlbiBTaWUgZm9ydGZhaHJlbj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnQmVuw7Z0aWdlIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbml0aW9uIGlzdCBrZWluIGfDvGx0aWdlcyBZQU1MLUhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnw5xiZXJzaWNodDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0tlaW5lIElEIGbDvHIgZGFzIENvbmZpZ3VyYXRpb24gSXRlbSBhbmdlZ2ViZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnU2llIGJlbsO2dGlnZW4gd2VuaWdzdGVucyBlaW4gYXVzZ2V3w6RobHRlcyBDb25maWd1cmF0aW9uIEl0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnU2llIGhhYmVuIGtlaW5lIFNjaHJlaWItQmVyZWNodGlndW5nZW4gZsO8ciBkaWVzZXMgQ29uZmlndXJhdGlvbiBJdGVtOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnS2VpbmUgRGVmaW5pdGlvbiBmw7xyIEtsYXNzZSAlcyBkZWZpbmllcnQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gIiVzIiBpbiBEYXRlbmJhbmsgbmljaHQgZ2VmdW5kZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnRXMgd2FyIG5pY2h0IG3DtmdsaWNoLCBkaWUgQ29uZmlndXJhdGlvbiBJdGVtLUlEICVzIHp1IGzDtnNjaGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnS2VpbmUgVmVyc2lvbiBmw7xyIENvbmZpZ3VyYXRpb24gSXRlbS1JRCAlcyBnZWZ1bmRlbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnS2VpbmUgQ29uZmlndXJhdGlvbiBJdGVtLUlELCBEdXBsaWthdHMtSUQgb2RlciBLbGFzc2VuLUlEIGFuZ2VnZWJlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0tlaW4gWnVncmlmZiBnZXfDpGhydCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnS2FubiBIaXN0b3JpZSBuaWNodCBhbnplaWdlbiwga2VpbmUgQ29uZmlndXJhdGlvbiBJdGVtLUlEIMO8YmVybWl0dGVsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW5uIEhpc3RvcmllIG5pY2h0IGFuemVpZ2VuLCBrZWluZSBDb25maWd1cmF0aW9uIEl0ZW0tSUQgw7xiZXJtaXR0ZWx0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTmV1ZXMgQ29uZmlndXJhdGlvbiBJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05ldWUgVmVyc2lvbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnVmVyd2VuZHVuZ3NzdGF0dXMgYWt0dWFsaXNpZXJ0IChuZXU9JXMsIGFsdD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnVm9yZmFsbHN0YXR1cyBha3R1YWxpc2llcnQgKG5ldT0lcywgYWx0PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBnZWzDtnNjaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdWZXJrbsO8cGZ1bmcgenUgJXMgKFR5cD0lcykgaGluenVnZWbDvGd0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdWZXJrbsO8cGZ1bmcgenUgJXMgKFR5cD0lcykgZ2Vsw7ZzY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdDb25maWdJdGVtLURlZmluaXRpb24gYWt0dWFsaXNpZXJ0IChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOYW1lIGFrdHVhbGlzaWVydCAobmV1PSVzLCBhbHQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidXQgJXMgYWt0dWFsaXNpZXJ0IHZvbiAiJXMiIG5hY2ggIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaW9uICVzIGdlbMO2c2NodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICdEYXRlaSAiJXMiIGhvY2hnZWxhZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnRGF0ZWkgIiVzIiBlbnRmZXJudCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0tlaW5lIENvbmZpZ3VyYXRpb24gSXRlbS1JRCBvZGVyIFZlcnNpb25zLUlEIGFuZ2VnZWJlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIGthbm4gbmljaHQgYW5nZXplaWd0IHdlcmRlbiwga2VpbmUgWnVncmlmZnNyZWNodGUgdmVyZ2ViZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtLUlEICVzIGluIERhdGVuYmFuayBuaWNodCBnZWZ1bmRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2dlZHJ1Y2t0IHZvbiAlcyBhbSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbnonOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdVbmfDvGx0aWdlIEtsYXNzZW4tSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnS2VpbmUgS2xhc3Nlbi1JRCDDvGJlcm1pdHRlbHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnS2VpbmUgWnVncmlmZnNyZWNodGUgZsO8ciBkaWVzZSBLbGFzc2UgdmVyZ2ViZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdLZWluIEVyZ2VibmlzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0NvbmZpZyBJdGVtLVN1Y2hlcmdlYm5pc3NlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdLYW5uIGRhcyBFbGVtZW50IG5pY2h0IGFuemVpZ2VuLCBrZWluZSBadWdyaWZmc3JlY2h0ZSBmw7xyIGRhcyBDb25maWdJdGVtIHZlcmdlYmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWcgSXRlbSBuaWNodCBnZWZ1bmRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnS2VpbmUgVmVyc2lvbmVuIGdlZnVuZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdXYXJudW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnVm9yZmFsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRGVyIFZlcndlbmR1bmdzc3RhdHVzIGRpZXNlcyBDb25maWcgSXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdEZXIgVm9yZmFsbHN0YXR1cyBkaWVzZXMgQ29uZmlnIEl0ZW1zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnS2VpbmUgQmVyZWNodGlndW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciB1bmfDvGx0aWchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdTdWNocGFyYW1ldGVyIHVuZ8O8bHRpZyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdBbmdlemVpZ3RlIENvbmZpZ3VyYXRpb24gSXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVmVyd2VuZHVuZ3NzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnQWt0dWVsbGVyIFZvcmZhbGxzc3RhdHVzLVR5cCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdad2lzY2hlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS2xhc3NlbmVpbnNjaHLDpG5rdW5nZW4gZsO8ciBkYXMgS29uZmlndXJhdGlvbnNvYmpla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1fDpGhsZW4gU2llIGVpbmUgb2RlciBtZWhyZXJlIEtsYXNzZW4gYXVzLCB1bSBkaWUgYXVzd8OkaGxiYXJlbiBDb25maWcgSXRlbXMgZWluenVzY2hyw6Rua2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdWZXJ3ZW5kdW5nc3N0YXR1cy1FaW5zY2hyw6Rua3VuZ2VuIGbDvHIgZGFzIENvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnRWluZW4gb2RlciBtZWhyZXJlIFZlcndlbmR1bmdzc3RhdHVzIGF1c3fDpGhsZW4gdW0gYXVzd8OkaGxiYXJlIENvbmZpZyBJdGVtcyBlaW56dXNjaHLDpG5rZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWlzY2ggKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXNjaCAoVmVyc2lvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnTGluay1SZWZlcmVuemllcnVuZ3NhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnQW5nYWJlLCBvYiBzaWNoIGRpZXNlciBMaW5rIGF1ZiBkYXMgQ29uZmlnSXRlbSBvZGVyIGRpZSBzdGF0aXNjaGUgVmVyc2lvbiBkZXMgcmVmZXJlbnppZXJlbmRlbiBPYmpla3RzIGJlemllaHQuIERpZSBCZXJlY2hudW5nIGRlcyBha3R1ZWxsZW4gVm9yZmFsbHNzdGF0dXMgd2lyZCBudXIgYmVpIGR5bmFtaXNjaGVuIExpbmtzIGR1cmNoZ2Vmw7xocnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnV8OkaGxlbiBTaWUgZGFzIEF0dHJpYnV0IGF1cywgbmFjaCBkZW0gZGllIEtvbmZpZ3VyYXRpb25zZWxlbWVudGUgZHVyY2hzdWNodCB3ZXJkZW4gc29sbGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICdTY2hsw7xzc2VsIGRlciBleHRlcm5lbiBRdWVsbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICdXw6RobGVuIFNpZSBkaWUgQW56ZWlnZWFydCBhdXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQmFzaXNzdHJ1a3R1ciBpc3QgbmljaHQgZ8O8bHRpZy4gQml0dGUgZ2ViZW4gU2llIGVpbmVuIEhhc2ggbWl0IERhdGVuIGltIFlBTUwtRm9ybWF0IGFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0RlciBCZWdpbm4gZGVyIFlBTUwtWmVpY2hlbmtldHRlIG1pdCBcJy0tLVwnIGlzdCBlcmZvcmRlcmxpY2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ0RpZSBUYWJlbGxlIGNvbmZpZ2l0ZW1fbGluayBrb25udGUgbmljaHQgZ2Vsw7ZzY2h0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ0VzIHd1cmRlbiBrZWluZSByZWxldmFudGVuIGR5bmFtaXNjaGVuIEZlbGRlciBnZWZ1bmRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0tvbm50ZSBuaWNodCBpbiBkaWUgVGFiZWxsZSBjb25maWdpdGVtX2xpbmsgZWluZ2Vmw7xndCB3ZXJkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJzAgWmVpbGVuIGluIGRpZSBUYWJlbGxlIGNvbmZpZ2l0ZW1fbGluayBlaW5nZWbDvGd0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01heGltYWxlIEFuemFobCBlaW5lcyBFbGVtZW50cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJ01heGltYWxlIEFuemFobCB2b24gRWxlbWVudGVuIGVpbmVzIER5bmFtaXNjaGVuIEZlbGRzIHZvbSBUeXAg4oCeU2V04oCcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCBlaW5lcyBFbGVtZW50cyBpbm5lcmhhbGIgZWluZXMgRHluYW1pc2NoZW4gRmVsZHMgdm9tIFR5cCAiU2V0Iic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9ydC9FeHBvcnQgdm9uIEFuaMOkbmdlbiAoYWxzIGxldHp0ZSBFaW50csOkZ2UgcHJvIFplaWxlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpb24gU3RyaW5nJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0ZlaGxlciBiZWltIFN5bmNocm9uaXNpZXJlbiBkZXIgRGVmaW5pdGlvbmVuLiBCaXR0ZSBwcsO8ZmVuIFNpZSBkYXMgUHJvdG9rb2xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1NpZSBoYWJlbiBJVFNNQ29uZmlnSXRlbS1EZWZpbml0aW9uZW4sIGRpZSBuaWNodCBzeW5jaHJvbmlzaWVydCBzaW5kLiBCaXR0ZSBzdGVsbGVuIFNpZSBJaHJlIGR5bmFtaXNjaGVuIElUU01Db25maWdJdGVtLUZlbGTDpG5kZXJ1bmdlbiBiZXJlaXQuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdBYmdlbGF1ZmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnSW4gV2FydHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90YmV0cmllYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnR2VwbGFudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdJbiBSZXBhcmF0dXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ0F1w59lciBEaWVuc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnVW50ZXIgUmV2aWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0L1FTJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICfDnGJlcmJsaWNrIHVuZCBCZXN0w6R0aWd1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0IHZvbiBLbGFzc2VuL1JvbGxlbiB1bmQgaWhyZW4genVnZWjDtnJpZ2VuIEZlbGRlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdCZWltIEtsYXNzZW5pbXBvcnQgaXN0IGVpbiBGZWhsZXIgYXVmZ2V0cmV0ZW4uJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBWZXJzdGVja3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIEFiZ2ViaWxkZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnRWluZSBadW9yZG51bmcgZGVyIGludGVybmVuIEZlbGRuYW1lbiwgZGllIGluIGRlbiBQcm96ZXNzbWFuYWdlbWVudCDDnGJlcmdhbmdzYWt0aW9uZW4gQ29uZmlnSXRlbUFkZCB1bmQgLVVwZGF0ZSB2ZXJ3ZW5kZXQgd2VyZGVuLiBEaWUgU2NobMO8c3NlbCBzaW5kIGRpZSBOYW1lbiBkZXIgRmVsZGVyIGlubmVyaGFsYiBkZXIgU2V0cyBtaXQgZGVtIE9iamVrdHR5cCDigJ5UaWNrZXTigJwsIGRpZSB6dXIgRXJzdGVsbHVuZy9Ba3R1YWxpc2llcnVuZyBkZXIgQ0lzIGdlbnV0enQgd2VyZGVuLiBEaWUgV2VydGUgc2luZCBkaWUgTmFtZW4gZGVyIEZlbGRlciBpbm5lcmhhbGIgZGVyIFNldHMgbWl0IGRlbSBPYmpla3R0eXAg4oCeSVRTTUNvbmZpZ0l0ZW3igJwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0VybcO2Z2xpY2h0IGVyd2VpdGVydGUgU3VjaGJlZGluZ3VuZ2VuIGJlaSBkZXIgU3VjaGUgbmFjaCBLb25maWd1cmF0aW9uc29iamVrdGVuIGluIGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4gTWl0IGRpZXNlciBGdW5rdGlvbiBrw7ZubmVuIFNpZSB6LiBCLiBkZW4gTmFtZW4gZGVzIEtvbmZpZ3VyYXRpb25zZWludHJhZ3MgbWl0IHNvbGNoZW4gQmVkaW5ndW5nZW4gd2llICIoKmtleTEqJiYqa2V5MiopIiBvZGVyICIoKmtleTEqfHwqa2V5MiopIiBzdWNoZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0VybcO2Z2xpY2h0IGVyd2VpdGVydGUgU3VjaGJlZGluZ3VuZ2VuIGJlaSBkZXIgU3VjaGUgbmFjaCBLb25maWd1cmF0aW9uc2VpbnRyw6RnZW4gaW4gZGVyIEt1bmRlbnNjaG5pdHRzdGVsbGUuIE1pdCBkaWVzZXIgRnVua3Rpb24ga8O2bm5lbiBTaWUgei4gQi4gZGVuIE5hbWVuIGVpbmVzIEtvbmZpZ3VyYXRpb25zZWludHJhZ3MgbWl0IEJlZGluZ3VuZ2VuIHdpZSAiKCprZXkxKiYmKmtleTIqKSIgb2RlciAiKCprZXkxKnx8KmtleTIqKSIgc3VjaGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdadWdld2llc2VuZSBDb25maWd1cmF0aW9uIEl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICdadWdld2llc2VuIGFuIEVudGl0w6R0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnWnUgZWluZW0gYmVzdGltbXRlbiBaZWl0cHVua3QgZWluIFRpY2tldCBmw7xyIENvbmZpZ0l0ZW1zIGVyc3RlbGxlbiwgd2VubiBkaWUga29uZmlndXJpZXJ0ZW4gQW5mb3JkZXJ1bmdlbiBlcmbDvGxsdCBzaW5kLiBEZXIgWmVpdHB1bmt0IHdpcmQgZHVyY2ggZGVuIFdlcnQgZGVzIHVudGVyICJUaW1lQ0lLZXkiIGRlcyBDb25maWdJdGVtcyBrb25maWd1cmllcnRlbiBEeW5hbWlzY2hlbiBGZWxkcyB2b20gVHlwICJEYXR1bSIgYmVzdGltbXQgdW5kIGR1cmNoICJUaW1lTW9kaWZpZXIiIG1vZGlmaXppZXJ0LiBMZXR6dGVyZXIga2FubiBlbnR3ZWRlciBudXIgZWluZSBaYWhsIHNlaW4sIG9kZXIgZWluIFZvcnplaWNoZW4gKCsvLSksIGVpbmUgWmFobCB1bmQgZWluZSBFaW5oZWl0IChkL2gvbSk6ICI3IiBlbnRzcHJpY2h0ICIrN2QiLiBEYXMgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lyZCB2ZXJ3ZW5kZXQsIHVtIGVyc3RlbGx0ZSBUaWNrZXRzIHp1IG1hcmtpZXJlbiAtIGVzIG11c3MgZXhpc3RpZXJlbi4gRGllIEZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4sIHdvYmVpIFggc293b2hsIE5BTUUsIGFscyBhdWNoIE5VTUJFUiB1bmQgREFURSBzZWluIGthbm4sIHdlcmRlbiBkdXJjaCBkaWUgZW50c3ByZWNoZW5kZW4gV2VydGUgaW4gIlRpY2tldC0+VGV4dCIgZXJzZXR6dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJ0F0dHJpYnV0IGbDvHIgTGl6ZW56dmVyd2FsdHVuZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnQXR0cmlidXRlIGbDvHIgZGllIExpemVuenrDpGhsdW5nLCB3b2JlaSDigJ5Ub3RhbExpY2Vuc2VzREbigJwsIOKAnkF2YWlsYWJsZUxpY2Vuc2VzREbigJwgdW5kIOKAnkxpY2Vuc2VSZWZlcmVuY2VERuKAnCBkaWUgTmFtZW4gZGVyIGR5bmFtaXNjaGVuIEZlbGRlciBzaW5kLCBkaWUgenVyIE5hY2h2b2xsemllaGJhcmtlaXQgZGVyIHZlcmJsZWliZW5kZW4gTGl6ZW56ZW4gdmVyd2VuZGV0IHdlcmRlbi4gRmFsbHMgdmVyd2VuZGV0LCB3ZXJkZW4gbnVyIGRpZSBWZXJ3ZW5kdW5nc3N0YXR1cyBpbiDigJ5WYWxpZERlcGxTdGF0ZXPigJwgYmVyw7xja3NpY2h0aWd0LiBXZW5uIGVpbiBTY2h3ZWxsd2VydCBpbiDigJ5NaW5pbXVtTGljZW5zZXPigJwgZGVmaW5pZXJ0IGlzdCwgd2lyZCBhdXRvbWF0aXNjaCBlaW4gVGlja2V0IGVyc3RlbGx0LCB3ZW5uIHdlbmlnZXIgTGl6ZW56ZW4gdmVyZsO8Z2JhciBzaW5kLiBEYXp1IG11c3MgZGFzIER5bmFtaXNjaGUgRmVsZCB2b20gVHlwICJLb250cm9sbGvDpHN0Y2hlbiIg4oCeVGlja2V0LT5EeW5hbWljRmllbGTigJwgZXhpc3RpZXJlbi4gRGllIFRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiAod29iZWkgWCBzb3dvaGwgTkFNRSwgYWxzIGF1Y2ggTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBvZGVyIExJQ0VOU0VTX01JTiBzZWluIGthbm4pIHdlcmRlbiBpbSDigJ5UaWNrZXQtPlRleHTigJwgZHVyY2ggZGllIGVudHNwcmVjaGVuZGVuIFdlcnRlIGVyc2V0enQ6IGRlbiBDb25maWcgSXRlbSBOYW1lbiwgZGllIE51bW1lciwgZGllIHZlcmbDvGdiYXJlbiBMaXplbnplbiB1bmQgZGllIG1pbmltYWxlIEFuemFobCBhbiB2ZXJmw7xnYmFyZW4gTGl6ZW56ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnWnVtIEt1bmRlbiB6dWdld2llc2VuZSBDb25maWd1cmF0aW9ucyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ1p1bSBLdW5kZW5iZW51dHplciB6dWdld2llc2VuZSBDb25maWd1cmF0aW9ucyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQi1FaW5zdGVsbHVuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdQcsO8ZnQgTmFtZW4gYXVmIEVpbmRldXRpZ2tlaXQgaW5uZXJoYWxiIGRlciBzZWxiZW4gQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZSBvZGVyIGdsb2JhbCwgZC5oLiBlcyB3ZXJkZW4gYWxsZSBDb25maWd1cmF0aW9uIEl0ZW1zIGplZ2xpY2hlciBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3NlIGJlaSBkZXIgUHLDvGZ1bmcgYXVmIGVpbmVuIGVpbmRldXRpZ2VuIE5hbWVuIGJlcsO8Y2tzaWNodGlndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1fDpGhsZW4gU2llIGVpbiBNb2R1bCwgdW0gZWluIEJlbmVubnVuZ3NzY2hlbWEgenUgZXJ6d2luZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnV8OkaGxlbiBTaWUgZWluIE1vZHVsLCB1bSBlaW4gTnVtbWVybnNjaGVtYSB6dSBlcnp3aW5nZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1fDpGhsZW4gU2llIGVpbiBNb2R1bCwgdW0gZWluIFZlcnNpb25za2V0dGVuc2NoZW1hIHp1IGVyendpbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdXw6RobGVuIFNpZSBBdHRyaWJ1dGUsIHVtIGRpZSBFcnN0ZWxsdW5nIGVpbmVyIG5ldWVuIFZlcnNpb24gYXVzenVsw7ZzZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1fDpGhsZW4gU2llIEthdGVnb3JpZW4gYXVzLCBkaWUgU2llIGRpZXNlciBLb25maWd1cmF0aW9uc2VsZW1lbnRrbGFzc2UgenVvcmRuZW4gbcO2Y2h0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ1NwYWx0ZW5rb25maWd1cmF0aW9uc2ZpbHRlciBmw7xyIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdTcGFsdGVuLCBkaWUgaW4gZGVyIENvbmZpZyBJdGVtIMOcYmVyc2ljaHQgZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlIGdlZmlsdGVydCB3ZXJkZW4ga8O2bm5lbi4gSGlud2VpczogTnVyIENvbmZpZyBJdGVtIEF0dHJpYnV0ZSB1bmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgc2luZCBlcmxhdWJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gaGluenVmw7xnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIGJlYXJiZWl0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJ0VyZWlnbmlzbW9kdWwgdm9uIENvbmZpZyBJdGVtcywgZGFzIGRpZSBMaXplbnp6w6RobHVuZyBmw7xyIGVpbiBiZXN0aW1tdGVzIENvbmZpZyBJdGVtIGFrdGl2aWVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYXRpb24gSXRlbS1FdmVudC1Nb2R1bCwgZGFzIGRpZSBQcm90b2tvbGxpZXJ1bmcgZGVyIEhpc3RvcmllIGltIEFnZW50ZW4tSW50ZXJmYWNlIGVybcO2Z2xpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdDb25maWctRWxlbWVudC1FcmVpZ25pc21vZHVsLCBkYXMgQ29uZmlnLUVsZW1lbnRlIGF1ZiBpaHJlIGFrdHVlbGxlIERlZmluaXRpb24gYWt0dWFsaXNpZXJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbS1IaXN0b3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIGRydWNrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtLURldGFpbGFuc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbS1TdHJ1a3R1cmFuc2ljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIGRlciBmb2xnZW5kZW4gS2xhc3NlbiB3ZXJkZW4gbmljaHQgYXVmIGRlbSBFbGFzdGljc2VhcmNoLVNlcnZlciBnZXNwZWljaGVydC4gVW0gZGllcyBhdWYgYmVzdGVoZW5kZSBDSXMgYW56dXdlbmRlbiwgbXVzcyBkaWUgQ0ktTWlncmF0aW9uIMO8YmVyIGRpZSBLb25zb2xlIGF1c2dlZsO8aHJ0IHdlcmRlbiwgbmFjaGRlbSBkaWVzZSBPcHRpb24gZ2XDpG5kZXJ0IHd1cmRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBtaXQgZGVuIGZvbGdlbmRlbiBCZXJlaXRzdGVsbHVuZ3N6dXN0w6RuZGVuIHdlcmRlbiBuaWNodCBhdWYgZGVtIEVsYXN0aWNzZWFyY2gtU2VydmVyIGdlc3BlaWNoZXJ0LiBVbSBkaWVzIGF1ZiBiZXN0ZWhlbmRlIENJcyBhbnp1d2VuZGVuLCBtdXNzIGRpZSBDSS1NaWdyYXRpb24gw7xiZXIgZGllIEtvbnNvbGUgYXVzZ2Vmw7xocnQgd2VyZGVuLCBuYWNoZGVtIGRpZXNlIE9wdGlvbiBnZcOkbmRlcnQgd3VyZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbS1MaW1pdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtLUxpbWl0IHBybyBTZWl0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbS1TYW1tZWxha3Rpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYXRpb24gSXRlbSBTdWNoLUJhY2tlbmQgTmF2aWdhdGlvbiBkZXMgQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICdLb25maWd1cmllcmUgZGllIFNwYWx0ZW4sIGRpZSBpbSBLdW5kZW5pbnRlcmZhY2UgZsO8ciBkaWUgQW56ZWlnZSB2b24gWnVncmlmZnNiZWRpbmd1bmdlbiB2ZXJmw7xnYmFyIHNpbmQsIHdlbm4gZGllIGVudHNwcmVjaGVuZGVuIFNwYWx0ZW4gZsO8ciBadWdyaWZmc2JlZGluZ3VuZ2VuIG5pY2h0IGV4cGxpeml0IGtvbmZpZ3VyaWVydCBzaW5kLiBEaWVzZSBFaW5zdGVsbHVuZyBkaWVudCBhbHMgUsO8Y2tmYWxsb3B0aW9uIGbDvHIgZGllIGFuZGVyZW4gRWluc3RlbGx1bmdlbiB6dSBkZW4gU3BhbHRlbmVpbnN0ZWxsdW5nZW4gZsO8ciBadWdyaWZmc2JlZGluZ3VuZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyaWVyZSBkaWUgU3BhbHRlbiwgZGllIGluIGRlciBLdW5kZW5vYmVyZmzDpGNoZSBpbiBkZXIgQW5zaWNodCBkZXIgZW50c3ByZWNoZW5kZW4gQmVyZWNodGlndW5nc2JlZGluZ3VuZyB2ZXJmw7xnYmFyIHNpbmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdEaWUgRGVmaW5pdGlvbmVuIHZvbiBDb25maWd1cmF0aW9uIEl0ZW0tTGltaXQgZXJzdGVsbGVuIHVuZCB2ZXJ3YWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnRXJ6ZXVndCBUaWNrZXRzIGbDvHIgQ29uZmlnSXRlbXMgenUgYmVzdGltbXRlbiBaZWl0cHVua3Rlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS3VuZGVuIGvDtm5uZW4gaGlzdG9yaXNjaGUgQ0ktVmVyc2lvbmVuIGVpbnNlaGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLdW5kZW4gaGFiZW4gZGllIE3DtmdsaWNoa2VpdCwgbWFudWVsbCB6d2lzY2hlbiBoaXN0b3Jpc2NoZW4gQ0ktVmVyc2lvbmVuIHp1IHdlY2hzZWxuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ1N0YW5kYXJkZGF0ZW4sIGRpZSBhdWYgZGVtIEF0dHJpYnV0IGbDvHIgZGVuIFN1Y2hiaWxkc2NoaXJtIGbDvHIgS29uZmlndXJhdGlvbnNvYmpla3RlIHZlcndlbmRldCB3ZXJkZW4gc29sbGVuLiBCZWlzcGllbDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGVuLCBkaWUgZsO8ciBkYXMgQXR0cmlidXQgZsO8ciBkZW4gU3VjaGJpbGRzY2hpcm0gZsO8ciBLb25maWd1cmF0aW9uc29iamVrdGUgdmVyd2VuZGV0IHdlcmRlbiBzb2xsZW4uIEJlaXNwaWVsOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pZXJlbiBTaWUgQWN0aW9ucywgaW4gZGVuZW4gaW0gVmVya27DvHBmdGUtT2JqZWt0ZS1XaWRnZXQgZWluIEVpbnN0ZWxsdW5nZW4tS25vcGYgdmVyZsO8Z2JhciBzZWluIHNvbGwgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gQml0dGUgYmVhY2h0ZW4gU2llLCBkYXNzIGbDvHIgZGllc2UgQWN0aW9ucyBkaWUgZm9sZ2VuZGVuIEpTLSB1bmQgQ1NTLURhdGVpZW4gcmVnaXN0cmllcnQgc2VpbiBtw7xzc2VuOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyB1bmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGVpbiBUZW1wbGF0ZTo6VG9vbGtpdC1TY2hlbWEgZsO8ciBWZXJzaW9uc3N0cmluZ3MuIFdpcmQgbnVyIHZlcndlbmRldCwgd2VubiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgYXVmIFRlbXBsYXRlVG9vbGtpdCBlaW5nZXN0ZWxsdCBpc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5pZXJlbiBTaWUgZWluZSBSZWloZSB2b24gQmVkaW5ndW5nZW4sIHVudGVyIGRlbmVuIGVpbiBLdW5kZSBlaW4gS29uZmlndXJhdGlvbnNvYmpla3Qgc2VoZW4gZGFyZi4gRGllIEJlZGluZ3VuZ2VuIGvDtm5uZW4gb3B0aW9uYWwgYXVmIGJlc3RpbW10ZSBLdW5kZW5ncnVwcGVuIGJlc2NocsOkbmt0IHdlcmRlbi4gRGVyIE5hbWUgaXN0IGRhcyBlaW56aWdlIG9ibGlnYXRvcmlzY2hlIEF0dHJpYnV0LiBXZW5uIGtlaW5lIGFuZGVyZW4gT3B0aW9uZW4gYW5nZWdlYmVuIHdlcmRlbiwgc2luZCBhbGxlIEtvbmZpZ3VyYXRpb25zb2JqZWt0ZSB1bnRlciBkaWVzZXIgS2F0ZWdvcmllIHNpY2h0YmFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBiZW7DtnRpZ3RlbiBCZXJlY2h0aWd1bmdlbiB6dW0gTMO2c2NoZW4gdm9uIElUU00gQ29uZmlndXJhdGlvbiBJdGVtcyBkdXJjaCBkYXMgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIGJlbsO2dGlndGVuIEJlcmVjaHRpZ3VuZ2VuLCB1bSBJVFNNLUNvbmZpZ3VyYXRpb24gSXRlbXMgw7xiZXIgZGFzIEdlbmVyaWMgSW50ZXJmYWNlIGFienVydWZlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgYmVuw7Z0aWd0ZW4gQmVyZWNodGlndW5nZW4sIHVtIG5hY2ggSVRTTS1Db25maWd1cmF0aW9uIEl0ZW1zIG1pdCBkZW0gR2VuZXJpYyBJbnRlcmZhY2UgenUgc3VjaGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBlcmZvcmRlcmxpY2hlbiBCZXJlY2h0aWd1bmdlbiB6dW0gRWluc3RlbGxlbiB2b24gSVRTTS1Lb25maWd1cmF0aW9uc2VsZW1lbnRlbiDDvGJlciBkaWUgZ2VuZXJpc2NoZSBTY2huaXR0c3RlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIMOcYmVyc2ljaHRzbW9kdWwgdW0gZGllICJLbGVpbiItQW5zaWNodCBlaW5lciBDb25maWd1cmF0aW9uIEl0ZW1zLUxpc3RlIGFuenV6ZWlnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0xlZ3QgZmVzdCwgb2IgZGllIEJlc2NocmlmdHVuZ2VuIGRlciBWZXJiaW5kdW5nc3R5cGVuIGluIGRlbiBLbm90ZW52ZXJiaW5kdW5nZW4gYW5nZXplaWd0IHdlcmRlbiBtw7xzc2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IHJlZ3Vsw6RyZSBBdXNkcsO8Y2tlIGluZGl2aWR1ZWxsIGbDvHIgamVkZXMgQ29uZmlndXJhdGlvbiBJdGVtLCB1bSBkZW4gTmFtZW4gZGVzIENvbmZpZ3VyYXRpb24gSXRlbSB6dSDDvGJlcnByw7xmZW4gdW5kIGVudHNwcmVjaGVuZGUgRmVobGVybWVsZHVuZ2VuIGFuenV6ZWlnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSB2ZXJmw7xnYmFyZW4gU3BhbHRlbiBkZXIgQ0lzIGluIGRlciBLb25maWd1cmF0aW9uc8O8YmVyc2ljaHQgaW4gQWJow6RuZ2lna2VpdCB2b24gZGVyIENJLUtsYXNzZS4gSmVkZXIgRWludHJhZyBtdXNzIGF1cyBlaW5lbSBLbGFzc2VubmFtZW4gdW5kIGVpbmVtIEFycmF5IHZvbiB2ZXJmw7xnYmFyZW4gRmVsZGVybiBmw7xyIGRpZSBlbnRzcHJlY2hlbmRlIEtsYXNzZSBiZXN0ZWhlbi4gRHluYW1pc2NoZSBGZWxkZWludHLDpGdlIG3DvHNzZW4gZGFzIFNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lIGVpbmhhbHRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3RhbmRhcmQtS29uZmlndXJhdGlvbnNhdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlcyBLb25maWd1cmF0aW9uc2VyZ2Vibmlzc2VzIGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3RhbmRhcmQtS29uZmlndXJhdGlvbnNhdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlcyBTdWNoZXJnZWJuaXNzZXMgZGVyIEt1bmRlbnNjaG5pdHRzdGVsbGUgbmFjaCBLb25maWctRWxlbWVudGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3RhbmRhcmQtS29uZmlndXJhdGlvbnNhdHRyaWJ1dCBmw7xyIGRpZSBTb3J0aWVydW5nIGRlcyBLb25maWd1cmF0aW9ucy1TdWNoZXJnZWJuaXNzZXMgZGllc2VyIE9wZXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0xlZ3QgZGllIFN0YW5kYXJkcmVpaGVuZm9sZ2UgZGVyIEtvbmZpZ3VyYXRpb25zb2JqZWt0ZSBpbiBkZW4gU3VjaGVyZ2Vibmlzc2VuIGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZSBmZXN0LiBVcDogw6RsdGVzdGVyIEVpbnRyYWcgb2Jlbi4gTmFjaCB1bnRlbjogZGFzIG5ldWVzdGUgb2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgU3RhbmRhcmRyZWloZW5mb2xnZSBkZXIgS29uZmlndXJhdGlvbnNvYmpla3RlIGluIGRlbiBTdWNoZXJnZWJuaXNzZW4gZGVyIEt1bmRlbnNjaG5pdHRzdGVsbGUuIE9iZW46IMOkbHRlc3RlciBFaW50cmFnIGdhbnogb2Jlbi4gVW50ZW46IG5ldWVzdGUgb2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTGVndCBkaWUgU3RhbmRhcmRyZWloZW5mb2xnZSBkZXIgS29uZmlndXJhdGlvbnNvYmpla3RlIGltIFN1Y2hlcmdlYm5pcyBkaWVzZXIgT3BlcmF0aW9uIGZlc3QuIFVwOiDDpGx0ZXN0ZXIgRWludHJhZyBvYmVuLiBOYWNoIHVudGVuOiBkYXMgTmV1ZXN0ZSBvYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBzdGFuZGFyZG3DpMOfaWcgYW5nZXplaWd0ZW4gU3BhbHRlbiBkZXIgQ0lzIGluIGRlciBLb25maWd1cmF0aW9uc8O8YmVyc2ljaHQgaW4gQWJow6RuZ2lna2VpdCB2b24gZGVyIENJLUtsYXNzZS4gSmVkZXIgRWludHJhZyBtdXNzIGF1cyBlaW5lbSBLbGFzc2VubmFtZW4gdW5kIGVpbmVtIEFycmF5IHZvbiB2ZXJmw7xnYmFyZW4gRmVsZGVybiBmw7xyIGRpZSBlbnRzcHJlY2hlbmRlIEtsYXNzZSBiZXN0ZWhlbi4gRHluYW1pc2NoZSBGZWxkZWludHLDpGdlIG3DvHNzZW4gZGFzIFNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lIGVpbmhhbHRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnTGVndCBkaWUgU3RhbmRhcmR0aWVmZSBkZXIgQmV6aWVodW5nZW4gZmVzdCwgZGllIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIHN0YW5kYXJkbcOkw59pZyBhbmdlemVpZ3RlIFN1Y2hhdHRyaWJ1dCBmw7xyIGRpZSBTdWNoZSBuYWNoIEtvbmZpZ3VyYXRpb25zb2JqZWt0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIHN0YW5kYXJkbcOkw59pZyBhbmdlemVpZ3RlIFN1Y2hhdHRyaWJ1dCBmw7xyIGRpZSBTdWNobWFza2UgZGVzIEtvbmZpZ3VyYXRpb25zb2JqZWt0cy4gQmVpc3BpZWw6ICJLZXkiIG11c3MgZGVuIE5hbWVuIGRlcyBkeW5hbWlzY2hlbiBGZWxkZXMgZW50aGFsdGVuLCBpbiBkaWVzZW0gRmFsbCBcJ1hcJywgIkNvbnRlbnQiIG11c3MgZGVuIFdlcnQgZGVzIGR5bmFtaXNjaGVuIEZlbGRlcyBlbnRoYWx0ZW4sIGFiaMOkbmdpZyB2b20gVHlwIGRlcyBkeW5hbWlzY2hlbiBGZWxkZXMsIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgdW5kIG9kZXIgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1VbnRlcm9iamVrdCBkZXIgS2xhc3NlIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgdmVyZsO8Z2JhcmVuIFNwYWx0ZW4gZGVyIENJcyBpbiBkZXIgS29uZmlndXJhdGlvbnPDvGJlcnNpY2h0IGluIEFiaMOkbmdpZ2tlaXQgdm9uIGRlciBDSS1LbGFzc2UuIEplZGVyIEVpbnRyYWcgbXVzcyBhdXMgZWluZW0gS2xhc3Nlbm5hbWVuIHVuZCBlaW5lbSBBcnJheSB2b24gdmVyZsO8Z2JhcmVuIEZlbGRlcm4gZsO8ciBkaWUgZW50c3ByZWNoZW5kZSBLbGFzc2UgYmVzdGVoZW4uIER5bmFtaXNjaGUgRmVsZGVpbnRyw6RnZSBtw7xzc2VuIGRhcyBTY2hlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSBlaW5oYWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgSMO2aGUgZGVyIFJpY2hUZXh0LUVkaXRvciBLb21wb25lbnRlLiBHZWJlbiBTaWUgZWluZW4gWmFobGVuLSAoUGl4ZWwpIG9kZXIgUHJvemVud2VydCAocmVsYXRpdikgYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgQW56YWhsIGRlciBaZWlsZW4gZsO8ciBkZW4gRWRpdG9yIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tRGVmaW5pdGlvbiBpbSBBZG1pbmlzdHJhdG9yLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBSZWloZW5mb2xnZSBkZXIgVm9yZmFsbHN0YXR1cyB2b24gaG9jaCAoYnNwdy4ga3JpdGlzY2gpIG5hY2ggbmllZHJpZyAoYnNwdy4gZnVua3Rpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IHJlbGV2YW50ZSBWZXJ3ZW5kdW5nc3N0YXR1cywgaW4gZGVuZW4gdmVya27DvHBmdGUgVGlja2V0cyBkZW4gU3RhdHVzIGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMgYmVlaW5mbHVzc2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3VjaGxpbWl0IGbDvHIgZGllIElUU00gQ29uZmlndXJhdGlvbi1BbnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3VjaGxpbWl0IGbDvHIgZGllIENvbmZpZ3VyYXRpb24gSXRlbXMtU3VjaGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBTdWNoZ3JlbnplIGbDvHIgZGVuIEJpbGRzY2hpcm0gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdMZWd0IGRpZSBTdWNoZ3JlbnplIGbDvHIgZGVuIEJpbGRzY2hpcm0gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBmZXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgYW5nZXplaWd0ZW4gU3BhbHRlbiBpbiBkZXIgS29tcGxleGFuc2ljaHQgZGVyIFZlcmtuw7xwZnVuZ3N0YWJlbGxlIGbDvHIgYWxsZSBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3Nlbi4gV2VubiBlcyBrZWluZW4gRWludHJhZyBnaWJ0LCB3ZXJkZW4gZGllIFN0YW5kYXJkc3BhbHRlbiBhbmdlemVpZ3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW4gZGVyIEtvbXBsZXhhbnNpY2h0IGRlciBWZXJrbsO8cGZ1bmdzdGFiZWxsZSBhYmjDpG5naWcgdm9uIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3NlLiBEZWZpbmllcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW4gZGVyIENvbmZpZ3VyYXRpb24gSXRlbS3DnGJlcnNpY2h0IGluIEFiaMOkbmdpZ2tlaXQgdm9uIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3NlLiBKZWRlbSBFaW50cmFnIG3DvHNzZW4gZGVyIEtsYXNzZW5uYW1lIHVuZCBEb3BwZWxwdW5rdGUgdm9yYW5nZXN0ZWxsdCB3ZXJkZW4gKHouQi4gQ29tcHV0ZXI6OjopLiBFcyBnaWJ0IGVpbmlnZSBDb25maWd1cmF0aW9uIEl0ZW0tQXR0cmlidXRlLCBkaWUgYWxsZW4gQ29uZmlndXJhdGlvbiBJdGVtcyBnZW1laW5zYW0gc2luZCAoQmVpc3BpZWwgZsO8ciBkaWUgS2xhc3NlIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBVbSBlaW56ZWxuZSBDb25maWd1cmF0aW9uIEl0ZW0tQXR0cmlidXRlLCB3aWUgc2llIGluIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tRGVmaW5pdGlvbiBkZWZpbmllcnQgc2luZCwgZGFyenVzdGVsbGVuLCBtdXNzIGRhcyBmb2xnZW5kZSBTY2hlbWEgdmVyd2VuZGV0IHdlcmRlbiAoQmVpc3BpZWwgZsO8ciBkaWUgS2xhc3NlIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkthcGF6aXTDpHQ6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpLYXBheml0w6R0OjoxLiBXZW5uIGVzIGtlaW5lbiBFaW50cmFnIGbDvHIgZWluZSBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3NlIGdpYnQsIHdlcmRlbiBkaWUgU3RhbmRhcmRzcGFsdGVuIGFuZ2V6ZWlndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdMZWd0IGZlc3QsIHdlbGNoZSBFbGVtZW50ZSBpbiBkZXIgZHJpdHRlbiBFYmVuZSBkZXIgSVRTTSBDb25maWcgSXRlbSBBQ0wtU3RydWt0dXIgZsO8ciAiQWN0aW9uIiB2ZXJmw7xnYmFyIHNpbmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTGVndCBmZXN0LCB3ZWxjaGUgRWxlbWVudGUgaW4gZGVyIGVyc3RlbiBFYmVuZSBkZXIgSVRTTSBDb25maWcgSXRlbSBBQ0wtU3RydWt0dXIgdmVyZsO8Z2JhciBzaW5kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdMZWd0IGZlc3QsIHdlbGNoZSBFbGVtZW50ZSBpbiBkZXIgendlaXRlbiBFYmVuZSBkZXIgSVRTTSBDb25maWcgSXRlbSBBQ0wtU3RydWt0dXIgdmVyZsO8Z2JhciBzaW5kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdMZWd0IGZlc3QsIHdlbGNoZSBBcnQgdm9uIExpbmsgKGF1cyBkZXIgVGlja2V0cGVyc3Bla3RpdmUgYmVuYW5udCkgZGVuIFN0YXR1cyBlaW5lcyB2ZXJsaW5rdGVuIENJIGJlZWluZmx1c3NlbiBrYW5uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCwgd2VsY2hlciBUeXAgdm9uIFRpY2tldCBkZW4gU3RhdHVzIGVpbmVzIHZlcmtuw7xwZnRlbiBDb25maWd1cmF0aW9uIEl0ZW1zIGJlZWluZmx1c3NlbiBrYW5uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0FrdHVhbGlzaWVydW5nIGRlciBEZWZpbml0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gbMO2c2NoZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdGYXJiZSBWZXJ3ZW5kdW5nc3N0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGl6aWVyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEeW5hbWlzY2hlcyBGZWxkLUVyZWlnbmlzbW9kdWwsIGRhcyBLb25maWd1cmF0aW9uc2RlZmluaXRpb25lbiBhbHMgbmljaHQgbWVociBzeW5jaHJvbiBtYXJraWVydCwgd2VubiBzaWNoIGRpZSBkYXJpbiBlbnRoYWx0ZW5lbiBkeW5hbWlzY2hlbiBGZWxkZXIgw6RuZGVybi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpZSBhbmdlemVpZ3RlbiBEeW5hbWlzY2hlbiBGZWxkZXIgaW4gZGVyIEFuc2ljaHQgInp1c8OkdHpsaWNoZSBJVFNNLUZlbGRlciIgaW0gQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNjaGUgRmVsZGVyLCBkaWUgaW4gZGVyIMOcYmVyc2ljaHRzbWFza2UgZGVyIEt1bmRlbnNjaG5pdHRzdGVsbGUgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNjaGUgRmVsZGVyLCBkaWUgaW4gZGVyIFN1Y2htYXNrZSBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUgZsO8ciBLb25maWd1cmF0aW9uc29iamVrdGUgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWt0aXZpZXJ0IGRpZSBGdW5rdGlvbiAiU2FtbWVsYWt0aW9uIiBmw7xyIGRhcyBBZ2VudGVuLUZyb250ZW5kLCB1bSB6dXIgZ2xlaWNoZW4gWmVpdCBhbiBtZWhyZXJlbiBDb25maWd1cmF0aW9uIEl0ZW1zIGFyYmVpdGVuIHp1IGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdBa3RpdmllcnQgZGllIEZ1bmt0aW9uICJTYW1tZWxha3Rpb24iIG51ciBmw7xyIGRpZSBnZWxpc3RldGVuIEdydXBwZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0FrdGl2aWVydC9kZWFrdGl2aWVydCBkaWUgRnVua3Rpb24sIElUU00tS29uZmlndXJhdGlvbnNlbGVtZW50ZSBhdWYgZWluZGV1dGlnZSBOYW1lbiB6dSBwcsO8ZmVuLiBCZXZvciBTaWUgZGllc2UgT3B0aW9uIGFrdGl2aWVyZW4sIHNvbGx0ZW4gU2llIElociBTeXN0ZW0gYXVmIGJlcmVpdHMgdm9yaGFuZGVuZSBLb25maWd1cmF0aW9uc2VsZW1lbnRlIG1pdCBkb3BwZWx0ZW4gTmFtZW4gw7xiZXJwcsO8ZmVuLiBTaWUga8O2bm5lbiBkaWVzIG1pdCBkZW0gS29uc29sZW5iZWZlaGwgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzIHR1bi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnRWluIEVyZWlnbmlzbW9kdWwgZGFzIGJlaW0gVmVya27DvHBmZW4gdm9uIFRpY2tldHMgbWl0IENvbmZpZ3VyYXRpb24gSXRlbXMgZGVuIFN0YXR1cyBkZXMgQ29uZmlndXJhdGlvbiBJdGVtcyB2ZXLDpG5kZXJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdGZWxkZXIgZGVzIEtvbmZpZ3VyYXRpb25zZWxlbWVudGluZGV4LCBkaWUgZsO8ciBkaWUgVm9sbHRleHRzdWNoZSB2ZXJ3ZW5kZXQgd2VyZGVuLiBGZWxkZXIgd2VyZGVuIGViZW5mYWxscyBnZXNwZWljaGVydCwgc2luZCBhYmVyIGbDvHIgZGllIEdlc2FtdGZ1bmt0aW9uYWxpdMOkdCBuaWNodCB6d2luZ2VuZCBlcmZvcmRlcmxpY2guIERpZSBBdWZuYWhtZSB2b24gQW5ow6RuZ2VuIGthbm4gZGVha3RpdmllcnQgd2VyZGVuLCBpbmRlbSBkZXIgRWludHJhZyBhdWYgMCBnZXNldHp0IG9kZXIgZ2Vsw7ZzY2h0IHdpcmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdJbSBJbmRleCBkZXIgS29uZmlndXJhdGlvbnNlbGVtZW50ZSBnZXNwZWljaGVydGUgRmVsZGVyLCBkaWUgbmViZW4gZGVyIFZvbGx0ZXh0c3VjaGUgYXVjaCBmw7xyIGFuZGVyZSBad2Vja2UgdmVyd2VuZGV0IHdlcmRlbi4gRsO8ciBkaWUgdm9sbHN0w6RuZGlnZSBGdW5rdGlvbmFsaXTDpHQgc2luZCBhbGxlIEZlbGRlciBvYmxpZ2F0b3Jpc2NoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ0bDvHIgamVkZW4gV2Vic2VydmljZSAoU2NobMO8c3NlbCkga2FubiBlaW4gQXJyYXkgdm9uIEtsYXNzZW4gKFdlcnQpIGRlZmluaWVydCB3ZXJkZW4sIGF1ZiBkaWUgZGVyIEltcG9ydCBiZXNjaHLDpG5rdCB3aXJkLiBGw7xyIGFsbGUgZ2V3w6RobHRlbiBLbGFzc2VuIG9kZXIgYWxsZSB2b3JoYW5kZW5lbiBLbGFzc2VuIG3DvHNzZW4gZGllIGlkZW50aWZpemllcmVuZGVuIEF0dHJpYnV0ZSBpbiBkZXIgSW52b2tlcmtvbmZpZ3VyYXRpb24gYXVzZ2V3w6RobHQgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlLU1vZHVscmVnaXN0cmllcnVuZyBmw7xyIGRpZSBDb25maWdJdGVtRmV0Y2gtQXVmcnVmZXJzY2hpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UtTW9kdWxyZWdpc3RyaWVydW5nIGbDvHIgZGllIENvbmZpZ0l0ZW1GZXRjaC1BdWZydWZlcnNjaGljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UtTW9kdWxyZWdpc3RyaWVydW5nIGbDvHIgZGllIENvbmZpZ0l0ZW1GZXRjaC1BdWZydWZlcnNjaGljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnRWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU00gQ29uZmlndXJhdGlvbiBJdGVtLcOcYmVyc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnVm9yZmFsbFp1c3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2NobGllw590IEJlcmVpdHN0ZWxsdW5nc3p1c3TDpG5kZSBpbiBkaWUgU3VjaGUgbmFjaCBLb25maWd1cmF0aW9uc2VsZW1lbnRlbiBpbiBkZXIgS3VuZGVuc2Nobml0dHN0ZWxsZSBlaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTY2hsaWXDn3QgVm9yZmFsbHN6dXN0w6RuZGUgaW4gZGllIEtvbmZpZ3VyYXRpb25zc3VjaGUgZGVyIEt1bmRlbnNjaG5pdHRzdGVsbGUgZWluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICdFdmVudC1Nb2R1bCB6dXIgTGl6ZW56esOkaGx1bmcgdm9uIENvbmZpZyBJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNYXhpbWFsZSBBbnphaGwgZGVyIEtvbmZpZ3VyYXRpb25zb2JqZWt0ZSwgZGllIGltIEVyZ2VibmlzIGRpZXNlciBPcGVyYXRpb24gYW5nZXplaWd0IHdlcmRlbiBzb2xsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgenVyIMOcYmVycHLDvGZ1bmcgZGVyIEdydXBwZSwgZGllIGbDvHIgZWluZSBLbGFzc2UgdmVyYW50d29ydGxpY2ggaXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsLCB1bSBkaWUgR3J1cHBlIHp1IMO8YmVycHLDvGZlbiwgZGllIGbDvHIgZWluIENvbmZpZ3VyYXRpb24gSXRlbSB2ZXJhbnR3b3J0bGljaCBpc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgenVtIEdlbmVyaWVyZW4gdm9uIElUU00tQ29uZmlndXJhdGlvbiBJdGVtLVN0YXRpc3Rpa2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05hbWUgTW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bW1lciBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbnphaGwgZGVyIEtvbmZpZ3VyYXRpb25zcHVua3RlLCBkaWUgYXVmIGplZGVyIFNlaXRlIGVpbmVzIFN1Y2hlcmdlYm5pc3NlcyBpbiBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUgYW5nZXplaWd0IHdlcmRlbiBzb2xsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuemFobCBkZXIgS29uZmlndXJhdGlvbnNwdW5rdGUsIGRpZSBhdWYgamVkZXIgU2VpdGUgZWluZXMgU3VjaGVyZ2Vibmlzc2VzIGluIGRlciBLdW5kZW5zY2huaXR0c3RlbGxlIGFuZ2V6ZWlndCB3ZXJkZW4gc29sbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrdGUsIG5hY2ggZGVuZW4gZ2VzdWNodCB3ZXJkZW4gc29sbCwgd2llIHZpZWxlIEVpbnRyw6RnZSB1bmQgd2VsY2hlIEF0dHJpYnV0ZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGxlbi4gQ29uZmlnSXRlbS1BdHRyaWJ1dGUgbcO8c3NlbiBleHBsaXppdCDDvGJlciBFbGFzdGljc2VhcmNoIGdlc3BlaWNoZXJ0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnw5xiZXJzaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSBLYXRlZ29yaWVuIGbDvHIgS29uZmlndXJhdGlvbnNvYmpla3RrbGFzc2VuIGluIGRlciBFaW5zdGVsbHVuZ3NhbnNpY2h0IGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkaWUgU3BhbHRlbmZpbHRlciBkZXIga2xlaW5lbiBLb25maWd1cmF0aW9uc8O8YmVyc2ljaHQuIEJpdHRlIGJlYWNodGVuIFNpZTogV2VubiBTaWUgXCdBY3RpdmVcJyBhdWYgMCBzZXR6ZW4sIGvDtm5uZW4gQWdlbnRlbiBkaWUgRWluc3RlbGx1bmdlbiBkaWVzZXIgR3J1cHBlIG51ciBpbiBpaHJlbiBwZXJzw7ZubGljaGVuIFByw6RmZXJlbnplbiBiZWFyYmVpdGVuLCBBZG1pbmlzdHJhdG9yZW4ga8O2bm5lbiBqZWRvY2ggd2VpdGVyaGluIGRpZSBFaW5zdGVsbHVuZ2VuIGVpbmVzIGFuZGVyZW4gQmVudXR6ZXJzIGJlYXJiZWl0ZW4uIFZlcndlbmRlbiBTaWUgXCdQcmVmZXJlbmNlR3JvdXBcJywgdW0genUgc3RldWVybiwgaW4gd2VsY2hlbSBCZXJlaWNoIGRpZXNlIEVpbnN0ZWxsdW5nZW4gaW4gZGVyIEJlbnV0emVyb2JlcmZsw6RjaGUgYW5nZXplaWd0IHdlcmRlbiBzb2xsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbml0aW9uIHZvbiBGYXJiZW4gZsO8ciBWZXJ3ZW5kdW5nc3N0YXR1cyBpbiBkZW4gcGVyc8O2bmxpY2hlbiBFaW5zdGVsbHVuZ2VuIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIFZlcndlbmR1bmdzc3RhdHVzIGluIGRlbiBwZXJzw7ZubGljaGVuIEVpbnN0ZWxsdW5nZW4gaW0gQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSB6dWdyaWZmc2JlcmVjaHRpZ3RlbiBCZWlzcGllbGdydXBwZW4gZGVyIEdlbmVyYWwgQ2F0YWxvZy1BdHRyaWJ1dGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgZGFzIE5hbWVuc21vZHVsIGbDvHIgS29uZmlndXJhdGlvbnNvYmpla3RrbGFzc2VuIGluIGRlciBFaW5zdGVsbHVuZ3NhbnNpY2h0IGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRhcyBOdW1tZXJubW9kdWwgZsO8ciBLb25maWd1cmF0aW9uc29iamVrdGtsYXNzZW4gaW4gZGVyIEVpbnN0ZWxsdW5nc2Fuc2ljaHQgZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkaWUgU2VpdGVuLCBpbiBkZW5lbiBDb25maWd1cmF0aW9uIEl0ZW1zIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRhcyBWZXJzaW9uc3N0cmluZ21vZHVsIGbDvHIgS29uZmlndXJhdGlvbnNvYmpla3RrbGFzc2VuIGluIGRlciBFaW5zdGVsbHVuZ3NhbnNpY2h0IGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkYXMgVmVyc2lvbnN0cmluZy1UZW1wbGF0ZS1Ub29sa2l0LU1vZHVsIGbDvHIgQ29uZmlnLUl0ZW0tS2xhc3NlbiBpbiBkZXIgRWluc3RlbGx1bmdzYW5zaWNodCBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRlbiBWZXJzaW9ucy1UcmlnZ2VyIGbDvHIgQ29uZmlnLUl0ZW0tS2xhc3NlbiBpbiBkZXIgRWluc3RlbGx1bmdzYW5zaWNodCBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnRsO8aHJ0IGRpZSBrb25maWd1cmllcnRlIEFrdGlvbiBmw7xyIGplZGVzIEVyZWlnbmlzIGbDvHIgamVkZW4ga29uZmlndXJpZXJ0ZW4gV2Vic2VydmljZSBhdXMgKGFscyBJbnZva2VyKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0JlcmVjaHRpZ3VuZ3NncnVwcGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiBmw7xyIGRpZSBWZXJ3ZW5kdW5nIGRlciBJVFNNLUtvbmZpZ3VyYXRpb25zb2JqZWt0LUFuaMOkbmdlYWt0aW9uIGluIGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4sIHVtIGRpZSBBbnNpY2h0IHp1ciBLb25maWd1cmF0aW9uIHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGltIEFnZW50ZW4tSW50ZXJmYWNlIG51dHplbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4sIHVtIGRpZSBBbnNpY2h0IHp1ciBTdWNoZSB2b24gQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyZmFjZSBudXR6ZW4genUga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcmZvcmRlcmxpY2hlIEJlcmVjaHRpZ3VuZ2VuIHp1ciBWZXJ3ZW5kdW5nIGRlcyBJVFNNLVN1Y2hiaWxkc2NoaXJtcyBmw7xyIEtvbmZpZ3VyYXRpb25zZWxlbWVudGUgaW4gZGVyIEt1bmRlbnNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiBmw7xyIGRpZSBWZXJ3ZW5kdW5nIGRlciBJVFNNLUtvbmZpZ3VyYXRpb25zYmF1bWFuc2ljaHQgaW4gZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcmZvcmRlcmxpY2hlIEJlcmVjaHRpZ3VuZ2VuLCB1bSBkaWUgRGV0YWlsYW5zaWNodCB2b24gQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyZmFjZSBudXR6ZW4genUga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcmZvcmRlcmxpY2hlIEJlcmVjaHRpZ3VuZ2VuLCB1bSBkaWUgQW5zaWNodCB6dW0gSGluenVmw7xnZW4gdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW0gQWdlbnRlbi1JbnRlcmZhY2UgbnV0emVuIHp1IGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4genVyIFZlcndlbmR1bmcgZGVzIElUU00tS29uZmlndXJhdGlvbnNiaWxkc2NoaXJtcyBpbiBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4sIHVtIGRpZSBBbnNpY2h0IHp1bSBCZWFyYmVpdGVuIHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGltIEFnZW50ZW4tSW50ZXJmYWNlIG51dHplbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcmZvcmRlcmxpY2hlIEJlcmVjaHRpZ3VuZ2VuLCB1bSBkaWUgSGlzdG9yaWVuLUFuc2ljaHQgdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW0gQWdlbnRlbi1JbnRlcmZhY2UgbnV0emVuIHp1IGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcmZvcmRlcmxpY2hlIEJlcmVjaHRpZ3VuZ2VuLCB1bSBkaWUgQW5zaWNodCB6dW0gRHJ1Y2tlbiB2b24gQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyZmFjZSBudXR6ZW4genUga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ0VyZm9yZGVybGljaGUgQmVyZWNodGlndW5nZW4sIHVtIENvbmZpZ3VyYXRpb24gSXRlbXMgbMO2c2NoZW4genUga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW1zIHN1Y2hlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ1NldHR6dCBkZW4gVm9yZmFsbHN0YXR1cyBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zIGF1dG9tYXRpc2NoLCB3ZW5uIGVpbiBUaWNrZXQgbWl0IGVpbmVtIENvbmZpZ3VyYXRpb24gSXRlbSB2ZXJrbsO8cGZ0IHdpcmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0enQgZGVuIFZlcndlbmR1bmdzc3RhdHVzIGluIGRlciBGdW5rdGlvbiAiU2FtbWVsYWt0aW9uIiBmw7xyIENvbmZpZ3VyYXRpb24gSXRlbXMgaW0gQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldHp0IGRlbiBWZXJ3ZW5kdW5nc3N0YXR1cyBmw7xyIGRpZSBGdW5rdGlvbiAiU2FtbWVsYWt0aW9uIiBmw7xyIENvbmZpZ3VyYXRpb24gSXRlbXMgaW0gQWdlbnRlbi1JbnRlcmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lIFZlcmtuw7xwZnVuZyBpbSBNZW7DvCwgZGllIGVzIGVybGF1YnQgZWluIENvbmZpZ3VyYXRpb24gSXRlbSBtaXQgZWluZW0gYW5kZXJlbiBPYmpla3QgaW4gZGVyIERldGFpbGFuc2ljaHQgZGVzIENvbmZpZ3VyYXRpb24gSXRlbXMgZGVzIEFnZW50ZW4tSW50ZXJmYWNlIHp1IHZlcmtuw7xwZmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGltIE1lbsO8IGRlciBDb25maWd1cmF0aW9uIEl0ZW0tw5xiZXJzaWNodCBkaWUgVmVya27DvHBmdW5nIHp1ciBIaXN0b3JpZSBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBpbSBNZW7DvCBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLURldGFpbGFuc2ljaHQgZGllIFZlcmtuw7xwZnVuZyB6dXIgSGlzdG9yaWUgZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBpbSBNZW7DvCBkZXIgRGV0YWlsYW5zaWNodCBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zIGRpZSBWZXJrbsO8cGZ1bmcgenVtIEzDtnNjaGVuIGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGltIE1lbsO8IGFuLCB1bSBkaWUgTGlua3MgenUgZGVuIEtvbmZpZ3VyYXRpb25zZWxlbWVudGVuIGluIGVpbmVyIEJhdW1hbnNpY2h0IGFuenV6ZWlnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgaW0gTWVuw7wgZGVyIENvbmZpZ3VyYXRpb24gSXRlbS3DnGJlcnNpY2h0IGRpZSBWZXJrbsO8cGZ1bmcgenVtIER1cGxpemllcmVuIGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGltIE1lbsO8IGRlciBEZXRhaWxhbnNpY2h0IGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMgZGllIFZlcmtuw7xwZnVuZyB6dW0gRHVwbGl6aWVyZW4gZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGltIE1lbsO8IGRlciBEZXRhaWxhbnNpY2h0IGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMgZGllIFZlcmtuw7xwZnVuZyB6dW0gQmVhcmJlaXRlbiBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgaW0gTWVuw7wgZGVyIERldGFpbGFuc2ljaHQgZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtIGVpbmUgVmVya27DvHBmdW5nIHp1bSBadXLDvGNrZ2VoZW4gYXVmIGRpZSB2b3JoZXJpZ2UgQW5zaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBpbSBNZW7DvCBkZXIgRGV0YWlsYW5zaWNodCBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zIGRpZSBWZXJrbsO8cGZ1bmcgenVtIERydWNrZW4gZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lIFZlcmtuw7xwZnVuZyBpbSBNZW7DvCBkZXIgQW5zaWNodCAiQ29uZmlndXJhdGlvbiBJdGVtLcOcYmVyc2ljaHQiLCB1bSB6dXIgRGV0YWlsYW5zaWNodCBkZXMgQ29uZmlndXJhdGlvbiBJdGVtcyB6dSBnZWxhbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGRpZSBDb25maWd1cmF0aW9uIEl0ZW0tSGlzdG9yaWUgKHVtZ2VrZWhydGUgUmVpaGVuZm9sZ2UpIGltIEFnZW50ZW4tSW50ZXJmYWNlIGFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdEaWUgU3RhbmRhcmRrYXRlZ29yaWUsIGRpZSBhbmdlemVpZ3Qgd2lyZCwgd2VubiBrZWluZSBLYXRlZ29yaWUgYXVzZ2V3w6RobHQgaXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnRGVyIElkZW50aWZpa2F0b3IgZsO8ciBlaW4gQ29uZmlndXJhdGlvbiBJdGVtLCBic3B3LiAiQ29uZmlnSXRlbSMiICwgIk1laW5Db25maWdJdGVtIyIuIERlciBTdGFuZGFyZCBpc3QgIkNvbmZpZ0l0ZW0jIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdMw7ZzdCBhdXRvbWF0aXNjaCBkZW4gQXVmcnVmIHZvbiBDb25maWdJdGVtRmV0Y2ggYXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2lvbiBTdHJpbmctQXVzZHJ1Y2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2lvbiBTdHJpbmctTW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2lvbiBBdXNsw7ZzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnRGVmaW5pZXJ0LCBvYiBGZWxkZXIgYXV0b21hdGlzY2ggYmVmw7xsbHQgKDEpLCB1bmQgb2IgYXV0b21hdGlzY2ggYmVmw7xsbHRlIEZlbGRlciBpbiBkZW4gVGlja2V0Zm9ybXVsYXJlbiBhdXNnZWJsZW5kZXQgd2VyZGVuIHNvbGxlbiAoMikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ09iIGRpZSBBdXNmw7xocnVuZyB2b24gQ29uZmlnSXRlbUFDTCBkdXJjaCDDnGJlcnByw7xmdW5nIHZvbiB6d2lzY2hlbmdlc3BlaWNoZXJ0ZW4gRmVsZGFiaMOkbmdpZ2tlaXRlbiB2ZXJtaWVkZW4gd2VyZGVuIGthbm4uIERpZXMga2FubiBkaWUgTGFkZXplaXRlbiB2b24gRm9ybXVsYXJlbiB2ZXJiZXNzZXJuLCBtdXNzIGFiZXIgZGVha3RpdmllcnQgd2VyZGVuLCB3ZW5uIEFDTE1vZHVsZSBmw7xyIElUU01Db25maWdJdGVtLSB1bmQgRm9ybS1SZXR1cm5UeXBlcyB2ZXJ3ZW5kZXQgd2VyZGVuIHNvbGxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0RpZSBhbGxnZW1laW5lbiBJbmZvcm1hdGlvbmVuIHdlcmRlbiBpbiBkZXIgS29wZnplaWxlIGFuZ2V6ZWlndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdLbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnR2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnUG9zdC1wcm9kdWt0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ1ByZS1wcm9kdWt0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ1Byb2R1a3Rpdic7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBab2xsICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgWm9sbCAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IFpvbGwgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgWm9sbCAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LVpvbGwtUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEsNzUgWm9sbCAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBab2xsICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS1ab2xsLUdlc3RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IFpvbGwgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy1ab2xsLUdlc3RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IFpvbGwgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIFpvbGwgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IFpvbGwgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSBab2xsICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IFpvbGwgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IFpvbGwgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IFpvbGwgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IFpvbGwgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIFpvbGwgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBab2xsICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgWm9sbCAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1IFpvbGwgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IFpvbGwgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgWm9sbCAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSBab2xsICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgWm9sbCAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IFpvbGwgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBab2xsICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSBab2xsICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBab2xsICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IFpvbGwgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgWm9sbCAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBab2xsICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdCdWNoaGFsdHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnQnVjaGhhbHR1bmdzaW5mb3JtYXRpb25lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBZHJlc3N6dXdlaXN1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ1ZlcndhbHRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb2dlcyBUZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnQXBhY2hlLUxpemVueic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ0dlcsOkdGV0eXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJ0JTRC1MaXplbnogKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdCYXR0ZXJpZWthcGF6aXTDpHQgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdBa2t1LVR5cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0dlYsOkdWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdCdXMtU2Nobml0dHN0ZWxsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICdDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVS1LbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0thcGF6aXTDpHQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0thcGF6aXTDpHQgcHJvIEdyYWZpa2thcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnS2FydGVubnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS2FydGVubGVzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnS2FydGUgVHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdLdW5kZW4tWmVydGlmaWthdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnS3VuZGVuLVNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0NsaWVudC1LYXRlZ29yaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnVGFrdHJhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1Rha3RmcmVxdWVueic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ29kZSBTaWduaW5nLVplcnRpZmlrYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJlbnp0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnQmVyYXR1bmdzdmVydHJhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnS29udGFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnS29udGFrdCBWZXJ0cmllYnNwYXJ0bmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnQ29udGFpbmVyLVZlcndhbHR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdWZXJ0cmFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdWZXJ0cmFnc2FydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1ZlcnRyYWdzZGF1ZXIgdm9tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ1ZlcnRyYWdzZGF1ZXIgYmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1NjaG51cmxvc2VzIFRlbGVmb24gKERFQ1QtVGVsZWZvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnS29zdGVudHLDpGdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0FuemFobCBkZXIgTGl6ZW56ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0Vyc3RlbGx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICdDcmVhdGl2ZSBDb21tb25zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnQmVudXR6ZXJkZWZpbmllcnRlcyBHZXN0ZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFJlc2VydmllcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy1TZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdHVtIGRlciBSZWNobnVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0dW0gZGVyIEJlc3RlbGx1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0RhdHVtIGRlciBCw7xyZ3NjaGFmdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXR1bSBkZXIgVmVyw7ZmZmVudGxpY2h1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW50ZW5zaWduYXR1ci1aZXJ0aWZpa2F0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJLUdlc3RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtTWFpbC1aZXJ0aWZpa2F0ZSAoUy9NSU1FLVplcnRpZmlrYXRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnRWluZ2ViZXR0ZXRlIFNJTSAoZVNJTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0FyYmVpdHN2ZXJ0cmFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnRW5kLUlQLUFkcmVzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdFbmRlIGRlciBVbnRlcnN0w7x0enVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ1ZlcmZhbGxzZGF0dW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0V4dGVybmVzIEZlc3RwbGF0dGVubGF1ZndlcmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdGaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnU2Nod3VuZ3JhZC1FbmVyZ2llc3BlaWNoZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGb3JtZmFrdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2V2ZXJ0cmFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJ0dQTCAoR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdBbGxnZW1laW5lIEluZm9ybWF0aW9uZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdHcmFmaWtrYXJ0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0dyYWZpa2thcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdIYXJkd2FyZS1Nb2RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnSGFyZHdhcmUgR2V3aWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnS29wZmjDtnJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQLVByb3Rva29sbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0w6R0cy0gdW5kIFp1Z3JpZmZzbWFuYWdlbWVudCAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50YXJudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdJbnZlcnN0bWVudGtvc3Rlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ1JlY2hudW5nc251bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1Rhc3RhdHVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRC1Nb25pdG9yIChGbMO8c3NpZ2tyaXN0YWxsYW56ZWlnZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRC1Nb25pdG9yIChMaWNodCBlbWl0dGllcmVuZGUgRGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJ0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ0Zlc3RuZXR6dGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdCcmVpdGVuZ3JhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ1NjaGljaHQgMTogUGh5c2lrYWxpc2NoZSBTY2hpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ1NjaGljaHQgMjogRGF0ZW52ZXJiaW5kdW5nc3NjaGljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ1NjaGljaHQgMzogTmV0endlcmtzY2hpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ1NjaGljaHQgMzogTmV0endlcmtzY2hpY2h0IChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnU2NoaWNodCA0OiBUcmFuc3BvcnRzY2hpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdTY2hpY2h0IDU6IFNpdHp1bmdzc2NoaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdTY2hpY2h0IDY6IFByw6RzZW50YXRpb25zc2NoaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ1NjaGljaHQgNzogQW53ZW5kdW5nc3NjaGljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnUGFjaHR2ZXJ0cmFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGl6ZW56dmVyZWluYmFydW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICdMaXplbnphbnphaGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaXplbnpzY2hsw7xzc2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpemVuei1UeXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0xpemVuenplaXRyYXVtIHZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpemVuemRhdWVyIGJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGl0aGl1bS1FaXNlbi1QaG9zcGhhdC1Ba2t1IChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGl0aGl1bS1Jb25lbi1Ba2t1IChMaS1Jb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnRGFybGVoZW5zdmVydHJhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnQW5nZXNpZWRlbHQgaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTMOkbmdlbmdyYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJ01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnSGVyc3RlbGxlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTWF4aW1hbGUgVHJhZ2bDpGhpZ2tlaXQgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ1NwZWljaGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnU3BlaWNoZXIgVHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJ01pY3JvLVNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ0hhbmR5bnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsL0VpbmdlYmV0dGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnQmVzY2hyZWlidW5nIGRlcyBNb2RlbGxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ01vbml0b3ItQXVmbMO2c3VuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdNb25pdG9yIEdyw7bDn2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNYXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnTmFuby1TSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ05ldHp3ZXJrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ05ldHp3ZXJrLUluZm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdOZXR6d2Vyay1JbmZvcm1hdGlvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdOZXR6d2Vya3NjaGljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWNrZWwtTWV0YWxsaHlkcmlkLUFra3UgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ1ZlcnRyYXVsaWNoa2VpdHN2ZXJlaW5iYXJ1bmcgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOb3RlYm9vayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ0FuemFobCBkZXIgQ1BVcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdBbnphaGwgZGVyIFJBTS1Nb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnQW56YWhsIGRlciBHcmFmaWtrYXJ0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQtTW9uaXRvciAoT3JnYW5pc2NoZSBMZXVjaHRkaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnQmV0cmllYnNrb3N0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnQmVzdGVsbG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ1NvbnN0aWdlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnQXVzZ8OkbmdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXJzY2hhZnRzYWJrb21tZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnVW5iZWZyaXN0ZXRlIExpemVuemVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJ1RlbGVmb24gLyBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1J1Zm51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGVsZWZvbiBUeXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdQaHlzaWthbGlzY2hlIEtlcm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnU3Ryb21saWVmZXJ1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJ1B1YmxpYyBEb21haW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnR2VrYXVmdCBiZWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1JhY2stVGllZmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdSZWdhbGVpbmhlaXRlbiAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1JhdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0tS2FydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTLVplcnRpZmlrYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnS2F1ZnZlcnRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWxsaXRlbnRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnVmVyc2NobG9zc2VuZSBCbGVpLVPDpHVyZS1CYXR0ZXJpZSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnU2l0enBsYXR6bGl6ZW56ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VyaWVubnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NlcnZlci1Tb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0RpZW5zdGxlaXN0dW5nc3ZlcnRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTZXJ2aWNlLVRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICdTaGFyZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdCdWNoc2UgVHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdSZWRuZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1N0YXJ0LUlQLUFkcmVzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1N0b3JhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdTcGVpY2hlci1QYXJ0aXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnQWJvbm5lbWVudC1iYXNpZXJ0ZSBMaXplbnplbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnVG9jaHRlcmdlc2VsbHNjaGFmdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnWnVzYW1tZW5mYXNzdW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVGhpbiBDbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ1RocmVhZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnR3JhZmlra2FydGVuLVJBTSBpbnNnZXNhbXQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1JBTSBpbnNnZXNhbXQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnVG91Y2hzY3JlZW4tTW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1R1cm0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQi1IdWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUi1IZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnVmlydHVlbGxlciBDbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUC1UZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJ1ZvbHVtZW5saXplbnplbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJjYW0nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/el_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVsX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfOk861zr3Ouc66zqwgz4PPhM6/zrnPh861zq/OsSDOu861zrnPhM6/z4XPgc6zzq/Osc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICfOoc+FzrjOvM6vz4POtc65z4IgzrPOuc6xIM61zrnPg861z4HPh8+MzrzOtc69zrEgzrTOtc60zr/OvM6tzr3OsSDOsc6vz4TOt8+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ86hz4XOuM68zq/Pg861zrnPgiDOs865zrEgzrTOtc60zr/OvM6tzr3OsSDOtc6+zrXPgc+Hz4zOvM61zr3Ot8+CIM6xz4DOrM69z4TOt8+DzrfPgic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ86bzrXOuc+Ezr/Phc+BzrPOuc66z4wgz4PPjc+Dz4TOt868zrEgzrTOuc6xzrrOv868zrnPg8+Ezq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICfOkc67zrvOsc6zzq4gzr/Pgc65z4POvM6/z40gzrrOu86sz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICfOkc67zrvOsc6zzq4gzr/Pgc65z4POvM6/z40gz4HPjM67zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ86Uzq3Pg868zrXPgiDOus67zqzPg861z4nOvSBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICfOlc60z44gzrzPgM6/z4HOtc6vz4TOtSDOvc6xIM61zrnPg86xzrPOrM6zzrXPhM61IM60zq3Pg868zrXPgiDOus67zqzPg861z4nOvSBSZWFkeTJJbXBvcnQgz4DOv8+FIM+AzrHPgc6/z4XPg865zqzOts6/z4XOvSDPhM6xIM+AzrnOvyDPg8+Fzr3Ot864zrnPg868zq3Ovc6xIM+Dz4TOv865z4fOtc6vzrEgz4HPhc64zrzOr8+DzrXPic69LiDOoM6xz4HOsc66zrHOu86/z43OvM61IM+DzrfOvM61zrnPjs+Dz4TOtSDPjM+EzrkgzrXOvc60zq3Ph861z4TOsc65IM69zrEgzrHPgM6xzrnPhM6/z43Ovc+EzrHOuSDOus6sz4DOv865zrXPgiDPgM+Bz4zPg864zrXPhM61z4Igz4HPhc64zrzOr8+DzrXOuc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICfOlc69zrfOvM6tz4HPic+Dzrcgz4XPhs65z4PPhM6szrzOtc69z4nOvSDOv869z4TOv8+Ezq7PhM+Jzr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICfOlc65z4POsc6zz4nOs86uIM+AzrHOus6tz4TPic69IM66zrvOrM+DzrXPic69IFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ29uZmlnIEl0ZW0gQ2xhc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ86hz4zOu86/z4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnzqPPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ86mzq/Ou8+Ez4HOvyDOs865zrEgz4TOrM6+zrXOuc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ86Vz4DOuc67zq3Ovs+EzrUgzrzOuc6xIM66zrvOrM+DzrcgzrHPgM+MIM+EzrcgzrvOr8+Dz4TOsSDOs865zrEgzr3OsSDOtM63zrzOuc6/z4XPgc6zzq7Pg861z4TOtSDOrc69zrEgzr3Orc6/IM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfOpM6szr7Otyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ86czrHOts65zrrOriDOtc69zq3Pgc6zzrXOuc6xIElUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnzprOsc+EzqzPg8+EzrHPg863IM6xzr3OrM+Az4TPhc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ86azrHPhM6sz4PPhM6xz4POtyDPg8+FzrzOss6szr3PhM6/z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnzqPPjc69zrTOtc+DzrzOv8+CIM+DzrUgzqzOu867zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ86czrcgzq3Os866z4XPgc6/z4IgzrHPgc65zrjOvM+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4IhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ86fIM6xz4HOuc64zrzPjM+CIM61zr3PjM+CIM6szrvOu86/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrzOtSDPhM6/IM6/z4DOv86vzr8gzrjOsSDPg8+Fzr3OtM61zrjOtc6vLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ86Uzq/Ous+Ez4XOvyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfOpM6/IM+Mzr3Ov868zrEgzrHPhc+Ezr/PjSDPhM6/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ86kzr8gz4zOvc6/zrzOsSDPh8+BzrfPg865zrzOv8+Azr/Ouc61zq/PhM6xzrkgzq7OtM63IM6xz4DPjCDPhM6xIENvbmZpZ0l0ZW1zIM68zrUgz4TOv869IM6xzrrPjM67zr/Phc64zr8gzrHPgc65zrjOvM+MKC3Ov8+Fz4IpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM6tzrrOtM6/z4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfOkc+BzrnOuM68z4zPgiDOrc66zrTOv8+DzrfPgiDOsc+Fz4TOv8+NIM+Ezr/PhSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ86fIM6xz4HOuc64zrzPjM+CIM6tzrrOtM6/z4POt8+CIM+Hz4HOt8+DzrnOvM6/z4DOv865zrXOr8+EzrHOuSDOrs60zrcgzrHPgM+MIM+EzrEgQ29uZmlnSXRlbXMgzrzOtSDPhM6/zr0oz4TOv8+Fz4IpIM6xzrrPjM67zr/Phc64zr8oLc6/z4XPgikgzrHPgc65zrjOvM+MKC3Ov8+Fz4IpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnzprOsc+EzqzPg8+EzrHPg863IM6xzr3OrM+Az4TPhc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ86azrHPhM6sz4PPhM6xz4POtyDPg8+FzrzOss6szr3PhM6/z4InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ86Zz4PPhM6/z4HOuc66z4wgz4TOv8+FIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+COiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfOmc+Dz4TOv8+Bzq/OsSDOoM61z4HOuc61z4fPjM68zrXOvc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfOp8+Bz4zOvc6/z4IgzrTOt868zrnOv8+Fz4HOs86vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfOoM+Bzr/Oss6/zrvOriDOts6/z4XOvCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgzqPPhM6/zrnPh861zq/OsSDOsc69zqwgz4POtc67zq/OtM6xJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfOlM61zr0gzrLPgc6tzrjOt866zrHOvSDOtM61zrTOv868zq3Ovc6xIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ86Vz4DOuc67zq3Ovs+EzrUgzrHPhc+Ez4wgz4TOvyDPg8+Ezr/Ouc+HzrXOr86/IM60zrnOsc68z4zPgc+Gz4nPg863z4InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfOlc66z4TOrc67zrXPg863IM6xzr3Osc62zq7PhM63z4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ86Vz4DOr8+DzrfPgiDOsc69zrHOts6uz4TOt8+Dzrcgz4POtSDPgM+Bzr/Ot86zzr/Pjc68zrXOvc61z4IgzrXOus60z4zPg861zrnPgj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyDOs865zrEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ86Vz4DOr8+AzrXOtM6/IM6yzqzOuM6/z4XPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ86czrXOs86tzrjPhc69z4POty/Oo868zq/Ous+Bz4XOvc+DzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnzpXPgM6vz4TOtc+Fzr7OtyDOvM6tzrPOuc+Dz4TOv8+FIM61z4DOuc+Azq3OtM6/z4Ugz4PPhc69zrTOrc+DzrXPic69IM6zzrnOsSDPhM6/IENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnzqPPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ86gzrvOt8+Bzr/Phs6/z4HOr861z4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnzqTPgc6tz4fOv8+Fz4POsSDOus6xz4TOrM+Dz4TOsc+DzrcgzrHOvc6sz4DPhM+Fzr7Ot8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfOpM+Bzq3Ph86/z4XPg86xIM66zrHPhM6sz4PPhM6xz4POtyDPg8+FzrzOss6szr3PhM6/z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnzqTOtc67zrXPhc+EzrHOr86xIM6xzrvOu86xzrPOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfOpM61zrvOtc+Fz4TOsc6vzrEgzrHOu867zrHOs86uIM6xz4DPjCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ86kzrEgQ29uZmlnSXRlbXMgz4POsc+CJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ86Rzr3Osc62zq7PhM63z4POtyBDb25maWdJdGVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM6xzr3PhM65zrrOtc65zrzOrc69zr/PhSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ86YzrEgzrXOuc+DzrHPh864zr/Pjc69IM6/zrkgzrHOus+MzrvOv8+FzrjOtc+CIM66zrvOrM+DzrXOuc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ86YzrEgzrXOuc+DzrHPh864zr/Pjc69IM6/zrkgzrHOus+MzrvOv8+FzrjOv865IM+Bz4zOu86/zrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnzqPOt868zrXOuc+Oz4PPhM61IM+Mz4TOuSDOuM6xIM60zrfOvM65zr/Phc+BzrPOt864zr/Pjc69IM61z4DOr8+DzrfPgiDPhM6xIM6xzr3PhM6vz4PPhM6/zrnPh86xIM60z4XOvc6xzrzOuc66zqwgz4DOtc60zq/OsSDOus6xzrkgzr/OuSDOus67zqzPg861zrnPgiBHZW5lcmFsQ2F0YWxvZyDOus6xzrkgzrTOtc69IM+Fz4DOrM+Bz4fOtc65IM6xz4XPhM+MzrzOsc+EzrcgzrHPhs6xzq/Pgc61z4POty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfOmM6tzrvOtc+EzrUgzr3OsSDPgM+Bzr/Ph8+Jz4HOrs+DzrXPhM61Oyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfOp8+BzrXOuc6szrbOtc+Dz4TOtSBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnzp8gzr/Pgc65z4POvM+Mz4IgzrTOtc69IM61zq/Ovc6xzrkgzq3Os866z4XPgc6/z4IgzrrOsc+EzrHOus61z4HOvM6xz4TOuc+DzrzPjM+CIFlBTUwuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnzpXPgM65z4POus+Mz4DOt8+Dzrc6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfOlM61zr0gzq3Ph861zrkgzrTOv864zrXOryBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnzqfPgc61zrnOrM62zrXPg8+EzrUgz4TOv8+FzrvOrM+HzrnPg8+Ezr/OvSDOrc69zrEgzrXPgM65zrvOtc6zzrzOrc69zr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ86UzrXOvSDOrc+HzrXPhM61IM+Az4HPjM+DzrLOsc+DzrcgzrXOs86zz4HOsc+Gzq7PgiDPg861IM6xz4XPhM+MIM+Ezr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+COiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnzpTOtc69IM6tz4fOtc65IM6/z4HOuc+Dz4TOtc6vIM6/z4HOuc+DzrzPjM+CIM6zzrnOsSDPhM63zr0gzrrOu86sz4POtyAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ86kzr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CICIlcyIgzrTOtc69IM6yz4HOrc64zrfOus61IM+Dz4TOtyDOss6sz4POtyDOtM61zrTOv868zq3Ovc+Jzr0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnzpTOtc69IM68z4DPjM+BzrXPg861IM69zrEgzrTOuc6xzrPPgc6sz4jOtc65IM+Ezr8gY29uZmlnaXRlbSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ86UzrXOvSDOss+Bzq3OuM63zrrOtSDOrc66zrTOv8+DzrcgzrPOuc6xIM+Ezr8gQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfOlM61zr0gzrTOr869zrXPhM6xzrkgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCDOriBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnzpTOtc69IM60zq/Ovc61z4TOsc65IM66zrHOvM6vzrEgz4DPgc+Mz4POss6xz4POtyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnzpTOtc69IM68z4DOv8+BzrXOryDOvc6xIM61zrzPhs6xzr3Ouc+Dz4TOtc6vIM+Ezr8gzrnPg8+Ezr/Pgc65zrrPjCwgzrTOtc69IM60zq/Ovc61z4TOsc65IENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfOlM61zr0gzrzPgM6/z4HOtc6vIM69zrEgzrXOvM+GzrHOvc65z4PPhM61zq8gz4TOvyDOuc+Dz4TOv8+BzrnOus+MLCDOtM61zr0gzq3Ph86/z4XOvSDOtM6/zrjOtc6vIM60zrnOus6xzrnPjs68zrHPhM6xIM+Az4HPjM+DzrLOsc+DzrfPgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ86dzq3OvyBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ86dzq3OsSDOrc66zrTOv8+DzrcgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM65z4Igzr/OvM6szrTOtc+CIM60zrnOus6xzrnPic68zqzPhM+Jzr0gz4TOv8+FIM+AzrHPgc6xzrTOtc6vzrPOvM6xz4TOv8+CIM+Ez4nOvSDOs861zr3Ouc66z47OvSDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+Ozr0gzrrOsc+EzrHOu8+MzrPOv8+FLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfOlc69zrfOvM6tz4HPic+DzrcgzrrOsc+EzqzPg8+EzrHPg863z4Igz4DOtc+BzrnPg8+EzrHPhM65zrrOv8+NIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgzrTOuc6xzrPPgc6sz4bOt866zrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICfOoM+Bzr/Pg8+Ezq3OuM63zrrOtSDPg8+Nzr3OtM61z4POvM6/z4Igz4DPgc6/z4IgJXMgKHR5cGU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICfOlM65zrHOs8+BzrHPhs6uIM+Dz4XOvc60zq3Pg868zr/PhSDPgM+Bzr/PgiAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ86fIM6/z4HOuc+DzrzPjM+CIENvbmZpZ0l0ZW0gzrXOvc63zrzOtc+Bz47OuM63zrrOtSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnzozOvc6/zrzOsSDOtc69zrfOvM61z4HPic68zq3Ovc6/IChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICfOlM61zr0gzrzPgM6/z4HOtc6vIM69zrEgzrXOvM+GzrHOvc65z4PPhM61zq8gz4TOvyDPg8+Ezr/Ouc+HzrXOr86/LCDOtM61zr0gzq3Ph86/z4XOvSDOtM6/zrjOtc6vIM60zrnOus6xzrnPjs68zrHPhM6xIM+Az4HPjM+DzrLOsc+DzrfPgiDOs865zrEgz4TOvyBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICfOiM66zrTOv8+DzrcgJXMgzrTOuc6xzrPPgc6sz4bOt866zrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnzpTOtc69IM60zq/Ovc61z4TOsc65IENvbmZpZ0l0ZW1JRCDOriBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ86UzrXOvSDOvM+Azr/Pgc61zq8gzr3OsSDOtc68z4bOsc69zrnPg8+EzrXOryDPhM6/IM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiwgzrTOtc69IM6tz4fOv8+Fzr0gzrTOv864zrXOryDOtM65zrrOsc65z47OvM6xz4TOsSDPgM+Bz4zPg86yzrHPg863z4IhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnzqTOvyBDb25maWdJdGVtSUQgJXMgzrTOtc69IM6yz4HOrc64zrfOus61IM+Dz4TOtyDOss6sz4POtyDOtM61zrTOv868zq3Ovc+Jzr0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfPhM+Fz4DPic68zq3Ovc6/IM6xz4DPjCAlcyDPg8+Ezr8gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ86czrcgzq3Os866z4XPgc6/IENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnzpTOtc69IM60zq/Ovc61z4TOsc65IENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnzpTOtc69IM60zq/Ovc6/zr3PhM6xzrkgzrTOuc66zrHOuc+OzrzOsc+EzrEgz4DPgc+Mz4POss6xz4POt8+CIM6zzrnOsSDOsc+Fz4TOriDPhM63zr0gzrrOu86sz4POtyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ86azrHOvc6tzr3OsSDOsc+Azr/PhM6tzrvOtc+DzrzOsSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfOkc+Azr/PhM61zrvOrc+DzrzOsc+EzrEgzrHOvc6xzrbOrs+EzrfPg863z4IgzrHOvc+EzrnOus61zrnOvM6tzr3Ov8+FIENvbmZpZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnzpTOtc69IM68z4DOv8+BzrXOryDOvc6xIM61zrzPhs6xzr3Ouc+Dz4TOtc6vIM+Ezr8gz4PPhM6/zrnPh861zq/OvywgzrTOtc69IM6tz4fOv8+Fzr0gzrTOv864zrXOryDOtM65zrrOsc65z47OvM6xz4TOsSDPgM+Bz4zPg86yzrHPg863z4IgzrPOuc6xIM+Ezr8gQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnzqTOvyBDb25maWdJdGVtIM60zrXOvSDOss+Bzq3OuM63zrrOtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnzpTOtc69IM6yz4HOrc64zrfOus6xzr0gzrXOus60z4zPg861zrnPgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfOu861zrnPhM6/z4XPgc6zzrnOus+MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfPgM+Bzr/Otc65zrTOv8+Azr/Or863z4POtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ8+AzrXPgc65z4PPhM6xz4TOuc66z4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ86XIM66zrHPhM6sz4PPhM6xz4POtyDOsc69zqzPgM+Ez4XOvs63z4IgzrHPhc+Ezr/PjSDPhM6/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfOlyDOus6xz4TOrM+Dz4TOsc+Dzrcgz4PPhc68zrLOrM69z4TOv8+CIM6xz4XPhM6/z40gz4TOv8+FIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnzpTOtc69IM+Fz4DOrM+Bz4fOtc65IM6szrTOtc65zrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnzqbOr867z4TPgc6/IM6szrrPhc+Bzr8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICfOn865IM+AzrHPgc6xzrzOrc+Ez4HOv8+Fz4IgzrHOvc6xzrbOrs+EzrfPg863z4IgzrXOr869zrHOuSDOrM66z4XPgc61z4IhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnzpXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+Dz4TOv865z4fOtc6vzrEgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM66zrHPhM6sz4PPhM6xz4POt8+CIM6xzr3OrM+Az4TPhc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICfOpM+Bzq3Ph86/zr0gz4DOtc+BzrnPg8+EzrHPhM65zrrPjCDOpM+Nz4DOv8+CIM66zrHPhM6sz4PPhM6xz4POt8+CJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ86czrXPhM6xzr7PjSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnzqDOtc+BzrnOv8+BzrnPg868zr/OryDOus67zqzPg863z4IgzrPOuc6xIM+Ezr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfOlc+AzrnOu86tzr7PhM61IM68zq/OsSDOriDPgM61z4HOuc+Dz4PPjM+EzrXPgc61z4IgzrrOu86sz4POtc65z4IgzrPOuc6xIM69zrEgz4DOtc+BzrnOv8+Bzq/Pg861z4TOtSDPhM6xIM61z4DOuc67zq3Ovs65zrzOsSDPg8+Ezr/Ouc+HzrXOr86xIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ86gzrXPgc65zr/Pgc65z4POvM6/zq8gzrrOu86sz4POt8+CIM6zzrnOsSDPhM6/IM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ86Vz4DOuc67zq3Ovs+EzrUgzrzOr86xIM6uIM+AzrXPgc65z4PPg8+Mz4TOtc+BzrXPgiDOus67zqzPg861zrnPgiDOs865zrEgzr3OsSDPgM61z4HOuc6/z4HOr8+DzrXPhM61IM+EzrEgzrXPgM65zrvOrc6+zrnOvM6xIM+Dz4TOv865z4fOtc6vzrEgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ86Uz4XOvc6xzrzOuc66z4wgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKM6IzrrOtM6/z4POtyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnzqTPjc+Azr/PgiDOsc69zrHPhs6/z4HOrM+CIM+Dz4XOvc60zq3Pg868zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfOlc6szr0gzrHPhc+Ezq4gzrcgz4PPjc69zrTOtc+DzrcgzrnPg8+Hz43Otc65IM6zzrnOsSDPhM6/IENvbmZpZ0l0ZW0gzq4gz4TOtyDPg8+EzrHPhM65zrrOriDOrc66zrTOv8+Dzrcgz4TOv8+FIM6xzr3PhM65zrrOtc65zrzOrc69zr/PhSDOsc69zrHPhs6/z4HOrM+CLiDOnyDPhc+Azr/Ou86/zrPOuc+DzrzPjM+CIM+EzrfPgiDPhM+Bzq3Ph86/z4XPg86xz4IgzrrOsc+EzqzPg8+EzrHPg863z4Igz4PPhc68zrLOrM69z4TOv8+CIM61zrrPhM61zrvOtc6vz4TOsc65IM68z4zOvc6/IM+DzrUgzrTPhc69zrHOvM65zrrOrc+CIM+Dz4XOvc60zq3Pg861zrnPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICfOlc+AzrnOu86tzr7PhM61IM+Ezr8gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjCDOvM61IM6yzqzPg863IM+Ezr8gzr/PgM6/zq/OvyDOuM6xIM6zzq/Ovc61z4TOsc65IM63IM6xzr3Osc62zq7PhM63z4POtyDPhM+Jzr0gz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICfOlyDOss6xz4POuc66zq4gzrTOv868zq4gzrTOtc69IM61zq/Ovc6xzrkgzq3Os866z4XPgc63LiDOoM6xz4HOsc66zrHOu86/z43OvM61IM60z47Pg8+EzrUgzq3Ovc6xIGhhc2ggzrzOtSDOtM61zrTOv868zq3Ovc6xIM+DzrUgzrzOv8+Bz4bOriBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ86Rz4DOsc65z4TOtc6vz4TOsc65IM63IM6tzr3Osc+Bzr7OtyDPhM63z4Igz4PPhc68zrLOv867zr/Pg861zrnPgc6sz4IgWUFNTCDOvM61IFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ86UzrXOvSDOrs+EzrHOvSDOtM+Fzr3Osc+Ezq4gzrcgzrXOus66zrHOuM6sz4HOuc+Dzrcgz4TOv8+FIM+Azq/Ovc6xzrrOsSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICfOlM61zr0gzrLPgc6tzrjOt866zrHOvSDPg8+HzrXPhM65zrrOrCDOtM+Fzr3Osc68zrnOus6sIM+AzrXOtM6vzrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICfOlM61zr0gzq7PhM6xzr0gzrTPhc69zrHPhM6uIM63IM61zrnPg86xzrPPic6zzq4gz4PPhM6/zr0gz4DOr869zrHOus6xIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnzpXOuc+Dzq7Ph864zrfPg86xzr0gMCDOs8+BzrHOvM68zq3PgiDPg8+Ezr/OvSDPgM6vzr3Osc66zrEgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ86czq3Os865z4PPhM6/z4IgzrHPgc65zrjOvM+Mz4IgzrXOvc+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ86VzrnPg86xzrPPic6zzq4vzpXOvs6xzrPPic6zzq4gz4PPhc69zrfOvM68zq3Ovc+Jzr0gKM+Jz4Igzr/OuSDPhM61zrvOtc+Fz4TOsc6vzrXPgiDOus6xz4TOsc+Hz4nPgc6uz4POtc65z4IgzrHOvc6sIM6zz4HOsc68zrzOriknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICfOo8+FzrzOss6/zrvOv8+DzrXOuc+Bzqwgzq3Ous60zr/Pg863z4InOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnzqPPhs6szrvOvM6xIM+Dz4XOs8+Hz4HOv869zrnPg868zr/PjSDPhM+Jzr0gzr/Pgc65z4POvM+Ozr0uIM6VzrvOrc6zzr7PhM61IM+Ezr8gzrHPgc+HzrXOr86/IM66zrHPhM6xzrPPgc6xz4bOrs+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ86Iz4fOtc+EzrUgzr/Pgc65z4POvM6/z43PgiBJVFNNQ29uZmlnSXRlbSDPgM6/z4UgzrTOtc69IM61zq/Ovc6xzrkgz4PPhc6zz4fPgc6/zr3Ouc+DzrzOrc69zr/OuS4gzqDOsc+BzrHOus6xzrvOv8+NzrzOtSDOsc69zrHPgM+Ez43Ovs+EzrUgz4TOuc+CIM6xzrvOu86xzrPOrc+CIM+Ez4nOvSDOtM+Fzr3Osc68zrnOus+Ozr0gz4DOtc60zq/Pic69IElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnzpvOtc65z4TOv8+Nz4HOs863z4POtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ86jz4XOvc+Ezq7Pgc63z4POtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ86gzrnOu8+Mz4TOv8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICfOoM+Bzr/Os8+BzrHOvM68zrHPhM65z4POvM6tzr3Ovyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfOlc+AzrnPg866zrXPhc6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfOo8+Fzr3PhM6xzr7Ouc6/z43Ph86/z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnzpHOvc6xz4POus+Mz4DOt8+DzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ86Uzr/Ous65zrzOri9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnzpXPgM65z4POus+Mz4DOt8+DzrcgzrrOsc65IM61z4DOuc6yzrXOss6xzq/Pic+DzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnzpXOuc+DzrHOs8+JzrPOriDOus67zqzPg861z4nOvS/Pgc+MzrvPic69IM66zrHOuSDPhM+Jzr0gz4PPh861z4TOuc66z47OvSDPgM61zrTOr8+Jzr0gz4TOv8+Fz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICfOoM+Bzr/Orc66z4XPiM61IM+Dz4bOrM67zrzOsSDOus6xz4TOrCDPhM63zr0gzrXOuc+DzrHOs8+JzrPOriDPhM63z4IgzrrOu86sz4POt8+CLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gzprPgc+Fz4bPjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gzpXOvM+GzrHOvc6vzrbOtc+EzrHOuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnzpXPgM65z4TPgc6tz4DOtc65IM61zrrPhM61z4TOsc68zq3Ovc61z4Igz4PPhc69zrjOrs66zrXPgiDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+EzrfOvSDOsc69zrHOts6uz4TOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DPgc6szrrPhM6/z4HOsS4gzpzOtSDOsc+Fz4TOriDPhM63IM60z4XOvc6xz4TPjM+EzrfPhM6xIM68z4DOv8+BzrXOr8+EzrUgzr3OsSDOsc69zrHOts63z4TOrs+DzrXPhM61IM+ALs+HLiDPhM6/IM+Mzr3Ov868zrEgz4TOv8+FIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM68zrUgz4TOrc+Ezr/Ouc6/z4UgzrXOr860zr/Phc+CIM+Dz4XOvc64zq7Ous61z4Igz4zPgM+Jz4IgIigqa2V5MSomJiprZXkyKikiIM6uICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnzpXPgM65z4TPgc6tz4DOtc65IM61zrrPhM61z4TOsc68zq3Ovc61z4Igz4PPhc69zrjOrs66zrXPgiDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+EzrfOvSDOsc69zrHOts6uz4TOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DOtc67zrHPhM+Ozr0uIM6czrUgzrHPhc+Ezq4gz4TOtyDOtM+Fzr3Osc+Ez4zPhM63z4TOsSDOvM+Azr/Pgc61zq/PhM61IM69zrEgzrHOvc6xzrbOt8+Ezq7Pg861z4TOtSDPgC7Phy4gz4TOvyDPjM69zr/OvM6xIM+Ezr/PhSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOvM61IM+Ezq3PhM6/zrnOv8+FIM61zq/OtM6/z4XPgiDPg8+Fzr3OuM6uzrrOtc+CIM+Mz4DPic+CICIoKmtleTEqJiYqa2V5MiopIiDOriAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ86VzrrPh8+Jz4HOt864zq3Ovc+EzrEgQ0lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSXMgz4DOv8+FIM6xzr3Osc+Ezq/OuM61zr3PhM6xzrkgz4PPhM63zr0gzrXPhM6xzrnPgc61zq/OsS3PgM61zrvOrM+EzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSXMgz4DOv8+FIM6tz4fOv8+Fzr0gzrXOus+Hz4nPgc63zrjOtc6vIM+DzrUgz4fPgc6uz4PPhM63IM+AzrXOu86sz4TOtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnzqHPhc64zrzOr8+DzrXOuc+CIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ86VzrvOrc6zzr7PhM61IM6zzrnOsSDOrc69zrEgzrzOv869zrHOtM65zrrPjCDPjM69zr/OvM6xIM68z4zOvc6/IM61zr3PhM+Mz4Igz4TOt8+CIM6vzrTOuc6xz4IgzrrOu86sz4POt8+CIENvbmZpZ0l0ZW0gKFwnY2xhc3NcJykgzq4gz4POtSDPgM6xzrPOus+Mz4POvM65zr8gzrXPgM6vz4DOtc60zr8gKFwnZ2xvYmFsXCcpLCDPgM+BzqzOs868zrEgz4DOv8+FIM+DzrfOvM6xzq/Ovc61zrkgz4zPhM65IM66zqzOuM61IM+Fz4DOrM+Bz4fOv869IENvbmZpZ0l0ZW0gzrvOsc68zrLOrM69zrXPhM6xzrkgz4XPgM+Mz4jOtyDOus6xz4TOrCDPhM63zr0gzrHOvc6xzrbOrs+EzrfPg863IM6xzr3PhM65zrPPgc6sz4bPic69Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnzpXPgM65zrvOrc6+z4TOtSDOvM65zrEgzrXOvc+Mz4TOt8+EzrEgzrPOuc6xIM+EzrfOvSDOtc+AzrnOss6/zrvOriDOtc69z4zPgiDPg8+Hzq7OvM6xz4TOv8+CIM6/zr3Ov868zrHPhM6/zrTOv8+Dzq/Osc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnzpXPgM65zrvOrc6+z4TOtSDOvM65zrEgzrXOvc+Mz4TOt8+EzrEgzrPOuc6xIM+EzrfOvSDOtc+AzrnOss6/zrvOriDOtc69z4zPgiDOsc+BzrnOuM68zrfPhM65zrrOv8+NIM+Dz4XPg8+Ezq7OvM6xz4TOv8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICfOlc+AzrnOu86tzr7PhM61IM68zrnOsSDOtc69z4zPhM63z4TOsSDOs865zrEgz4TOt869IM61z4DOuc6yzr/Ou86uIM61zr3PjM+CIM+Dz4fOrs68zrHPhM6/z4Igz4PPhc68zrLOv867zr/Pg861zrnPgc6sz4IgzrXOus60z4zPg861z4nOvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfOlc+AzrnOu86tzr7PhM61IM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66zqwgzrPOuc6xIM69zrEgzrXOvc61z4HOs86/z4DOv865zq7Pg861z4TOtSDPhM63IM60zrfOvM65zr/Phc+BzrPOr86xIM68zrnOsc+CIM69zq3Osc+CIM6tzrrOtM6/z4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICfOlc+AzrnOu86tzr7PhM61IM66zrHPhM63zrPOv8+Bzq/Otc+CIM6zzrnOsSDOvc6xIM6xzr3Osc64zq3Pg861z4TOtSDPg861IM6xz4XPhM6uIM+EzrfOvSDOus6xz4TOt86zzr/Pgc6vzrEgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ86mzq/Ou8+Ez4HOsSDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4PPhM6uzrvOt8+CIM6zzrnOsSDPhM63zr0gzpXPgM65z4POus+Mz4DOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnzqPPhM6uzrvOtc+CIM+Azr/PhSDOvM+Azr/Pgc6/z43OvSDOvc6xIM+GzrnOu8+Ez4HOsc+BzrnPg8+Ezr/Pjc69IM+Dz4TOt869IM61z4DOuc+DzrrPjM+AzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Ezr/PhSDPgM61z4HOuc6yzqzOu867zr/Ovc+Ezr/PgiDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLiDOo863zrzOtc6vz4nPg863OiDOlc+AzrnPhM+Bzq3PgM6/zr3PhM6xzrkgzrzPjM69zr8gz4TOsSDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus6sIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM66zrHOuSDPhM6xIM60z4XOvc6xzrzOuc66zqwgz4DOtc60zq/OsSAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnzqPPhM6/zrnPh861zq/OsSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICfOoM+Bzr/Pg864zq7Ous63IM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ86Vz4DOtc6+zrXPgc6zzrHPg86vzrEgz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpzOv869zqzOtM6xIM+Dz4XOvM6yzqzOvc+Ez4nOvSDPg8+Ezr/Ouc+HzrXOr86/z4Ugz4HPjc64zrzOuc+DzrfPgiDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPgM6/z4UgzrXPgM65z4TPgc6tz4DOtc65IM+EzrfOvSDOus6xz4TOsc6zz4HOsc+Gzq4gz4PPhM6/IM65z4PPhM6/z4HOuc66z4wgz4PPhM63IM60zrnOtc+AzrHPhs6uIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICfOnM6/zr3OrM60zrEgz4PPhc68zrLOrM69z4TPic69IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Azr/PhSDOtc69zrfOvM61z4HPjs69zrXOuSDPhM6xIM+Dz4TOv865z4fOtc6vzrEgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+Ezr/OvSDPhM+Bzq3Ph86/zr3PhM6xIM6/z4HOuc+DzrzPjCDPhM6/z4XPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICfOiM6+zr/OtM6/z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnzpXOus+Ez43PgM+Jz4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICfOoc+NzrjOvM65z4POtyDOts6/z4XOvCDOsc69z4TOuc66zrXOuc68zq3Ovc6/z4UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnzpTOtc69zrTPgc65zrrOriDPgM+Bzr/Oss6/zrvOriBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gzojOus60zr/Pg863JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ86kzrEgQ29uZmlnSXRlbXMgz4TPic69IM6xzrrPjM67zr/Phc64z4nOvSDOus67zqzPg861z4nOvSDOtM61zr0gzrjOsSDOsc+Azr/OuM63zrrOtc+Nzr/Ovc+EzrHOuSDPg8+Ezr8gzrTOuc6xzrrOv868zrnPg8+Ezq4gRWxhc3RpY3NlYXJjaC4gzpPOuc6xIM69zrEgzrXPhs6xz4HOvM6/z4PPhM61zq8gzrHPhc+Ez4wgz4POtSDPhc+AzqzPgc+Hzr/Ovc+EzrEgQ0ksIM63IM68zrXPhM6szrLOsc+DzrcgQ0kgz4DPgc6tz4DOtc65IM69zrEgzrXOus+EzrXOu861z4PPhM61zq8gzrzOrc+Dz4kgz4TOt8+CIM66zr/Ovc+Dz4zOu86xz4IsIM68zrXPhM6sIM+EzrfOvSDOsc67zrvOsc6zzq4gzrHPhc+Ezq7PgiDPhM63z4IgzrXPgM65zrvOv86zzq7Pgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnzqTOsSBDb25maWdJdGVtcyDOvM61IM+EzrnPgiDOsc66z4zOu86/z4XOuM61z4IgzrrOsc+EzrHPg8+EzqzPg861zrnPgiDOsc69zqzPgM+Ez4XOvs63z4IgzrTOtc69IM64zrEgzrHPgM6/zrjOt866zrXPjc6/zr3PhM6xzrkgz4PPhM6/IM60zrnOsc66zr/OvM65z4PPhM6uIEVsYXN0aWNzZWFyY2guIM6TzrnOsSDOvc6xIM61z4bOsc+BzrzOv8+Dz4TOtc6vIM6xz4XPhM+MIM+DzrUgz4XPgM6sz4HPh86/zr3PhM6xIENJcywgzrcgzrzOtc+EzqzOss6xz4POtyBDSSDPgM+Bzq3PgM61zrkgzr3OsSDOtc66z4TOtc67zrXPg8+EzrXOryDOvM6tz4PPiSDPhM63z4IgzrrOv869z4PPjM67zrHPgiwgzrzOtc+Ezqwgz4TOt869IM6xzrvOu86xzrPOriDOsc+Fz4TOrs+CIM+EzrfPgiDOtc+AzrnOu86/zrPOrs+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfOjM+BzrnOvyDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnzozPgc65zr8gz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrHOvc6sIM+DzrXOu86vzrTOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ86SzqzPg863IM60zrXOtM6/zrzOrc69z4nOvSDOtM65zrHPh861zq/Pgc65z4POt8+CIM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfOo8+Ezr/Ouc+HzrXOr86/IM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrzOsc62zrnOus6uz4IgzrzOv869zqzOtM6xz4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86jz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+Ezr/Ouc+HzrXOr86/IM6xzr3Osc62zq7PhM63z4POt8+CIGJhY2tlbmQgcm91dGVyIM+EzrfPgiDOtM65zrHPg8+Nzr3OtM61z4POt8+CIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ86UzrfOvM65zr/Phc+BzrPOr86xIM66zrHOuSDOtM65zrHPh861zq/Pgc65z4POtyDPhM+Jzr0gzr/Pgc65z4POvM+Ozr0gzrPOuc6xIM+EzrEgz4PPhM6/zrnPh861zq/OsSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ86UzrfOvM65zr/Phc+BzrPOtc6vIM61zrnPg865z4TOrs+BzrnOsSDOs865zrEgQ29uZmlnSXRlbXMgz4POtSDPg8+FzrPOus61zrrPgc65zrzOrc69zrEgz4fPgc6/zr3Ouc66zqwgz4POt868zrXOr86xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICfOn865IM+AzrXOu86sz4TOtc+CIM68z4DOv8+Bzr/Pjc69IM69zrEgzrTOv8+Fzr0gzrnPg8+Ezr/Pgc65zrrOrc+CIM61zrrOtM+Mz4POtc65z4IgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ86fzrkgz4DOtc67zqzPhM61z4Igzq3Ph86/z4XOvSDPhM63IM60z4XOvc6xz4TPjM+EzrfPhM6xIM69zrEgzrXOvc6xzrvOu86sz4PPg86/zr3PhM6xzrkgz4fOtc65z4HOv866zq/Ovc63z4TOsSDOvM61z4TOsc6+z40gz4TPic69IM65z4PPhM6/z4HOuc66z47OvSDOtc66zrTPjM+DzrXPic69IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ86gz4HOv861z4DOuc67zrXOs868zq3Ovc6xIM60zrXOtM6/zrzOrc69zrEgz4DOv8+FIM64zrEgz4fPgc63z4POuc68zr/PgM6/zrnOv8+Nzr3PhM6xzrkgz4PPhM6/IM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66z4wgzrPOuc6xIM+EzrfOvSDOv864z4zOvc63IM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLiDOoM6xz4HOrM60zrXOuc6zzrzOsTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfOoM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OsSDOtM61zrTOv868zq3Ovc6xIM+Azr/PhSDOuM6xIM+Hz4HOt8+DzrnOvM6/z4DOv865zr/Pjc69z4TOsc65IM+Dz4TOvyDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+MIM6zzrnOsSDPhM63zr0gzr/OuM+Mzr3OtyDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4gzqDOsc+BzqzOtM61zrnOs868zrE6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICfOn8+BzrnPg868z4zPgiDOlc69zrXPgc6zzrXOuc+Ozr0gz4zPgM6/z4Ugzq3Ovc6xIM66zr/Phc68z4DOryDPgc+FzrjOvM6vz4POtc+Jzr0gzrXOr869zrHOuSDOtM65zrHOuM6tz4POuc68zr8gz4PPhM6/IHdpZGdldCDPhM+Jzr0gz4PPhc69zrTOtc60zrXOvM6tzr3Pic69IM6xzr3PhM65zrrOtc65zrzOrc69z4nOvSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiDOo863zrzOtc65z47Pg8+EzrUgz4zPhM65IM6xz4XPhM6tz4Igzr/OuSDOlc69zq3Pgc6zzrXOuc61z4Igz4DPgc6tz4DOtc65IM69zrEgzq3Ph86/z4XOvSDOus6xz4TOsc+Hz4nPgc6vz4POtc65IM+EzrEgzrHOus+MzrvOv8+FzrjOsSDOsc+Bz4fOtc6vzrEgSlMgzrrOsc65IENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgzrrOsc65IENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ86fz4HOuc+DzrzPjM+CIM61zr3PjM+CIM+Dz4fOrs68zrHPhM6/z4IgVGVtcGxhdGU6OlRvb2xraXQgzrPOuc6xIM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrc+CIM6tzrrOtM6/z4POt8+CLiDOp8+BzrfPg865zrzOv8+Azr/Ouc61zq/PhM6xzrkgzrzPjM69zr8gzrHOvSDOtyDOtc69z4zPhM63z4TOsSBWZXJzaW9uIFN0cmluZyBNb2R1bGUgzq3Ph861zrkgzr/Pgc65z4PPhM61zq8gz4POtSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnzp/Pgc6vz4PPhM61IM6tzr3OsSDPg8+Nzr3Ov867zr8gz4PPhc69zrjOt866z47OvSDPhc+Az4wgz4TOuc+CIM6/z4DOv86vzrXPgiDOtc+AzrnPhM+Bzq3PgM61z4TOsc65IM+DzrUgzq3Ovc6xzr0gz4DOtc67zqzPhM63IM69zrEgzrTOtc65IM6tzr3OsSDPg8+Ezr/Ouc+HzrXOr86/IM60zrnOsc68z4zPgc+Gz4nPg863z4IuIM6fzrkgz4PPhc69zrjOrs66zrXPgiDOvM+Azr/Pgc6/z43OvSDPgM+Bzr/Osc65z4HOtc+EzrnOus6sIM69zrEgz4DOtc+BzrnOv8+BzrnPg8+Ezr/Pjc69IM+DzrUgzr/Pgc65z4POvM6tzr3Otc+CIM6/zrzOrM60zrXPgiDPgM61zrvOsc+Ez47OvS4gzqTOvyDPjM69zr/OvM6xIM61zq/Ovc6xzrkgz4TOvyDOvM+Mzr3OvyDPhc+Azr/Ph8+BzrXPic+EzrnOus+MIM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66z4wuIM6VzqzOvSDOtM61zr0gzrTOv864zr/Pjc69IM6szrvOu861z4IgzrXPgM65zrvOv86zzq3Pgiwgz4zOu86xIM+EzrEgz4PPhM6/zrnPh861zq/OsSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM64zrEgzrXOr869zrHOuSDOv8+BzrHPhM6sIM+Dz4TOvyDPgM67zrHOr8+DzrnOvyDOsc+Fz4TOrs+CIM+EzrfPgiDOus6xz4TOt86zzr/Pgc6vzrHPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6xIM6xz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+EzrcgzrTOuc6xzrPPgc6xz4bOriDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM68zrUgz4fPgc6uz4POtyDPhM63z4IgzrPOtc69zrnOus6uz4IgzrTOuc61z4DOsc+Gzq7Pgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6xIM6xz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+EzrcgzrvOrs+Izrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDOvM61IM+Hz4HOrs+Dzrcgz4TOt8+CIM6zzrXOvc65zrrOrs+CIM60zrnOtc+AzrHPhs6uz4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOsSDOsc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63zr0gzrHOvc6xzrbOrs+EzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gzrzOtSDPh8+Bzq7Pg863IM+EzrfPgiDOs861zr3Ouc66zq7PgiDOtM65zrXPgM6xz4bOrs+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrEgzrHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOv869IM66zrHOuM6/z4HOuc+DzrzPjCDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM68zrUgz4fPgc6uz4POtyDPhM63z4IgzrPOtc69zrnOus6uz4IgzrTOuc61z4DOsc+Gzq7Pgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnzp/Pgc6vzrbOtc65IM68zrnOsSDOtc69z4zPhM63z4TOsSDOtc+AzrnPg866z4zPgM63z4POt8+CIM6zzrnOsSDPhM63zr0gzrXOvM+GzqzOvc65z4POtyDPhM63z4IgzrzOuc66z4HOrs+CIM+Az4HOv86yzr/Ou86uz4IgzrzOuc6xz4IgzrvOr8+Dz4TOsc+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgzrXOrM69IM6/zrkgzrXPhM65zrrOrc+EzrXPgiDPhM+Nz4DOv8+FIM+Dz4XOvc60zq3Pg868zr/PhSDPgM+Bzq3PgM61zrkgzr3OsSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgz4PPhM65z4Igz4PPhc69zrTOrc+DzrXOuc+CIM66z4zOvM6yz4nOvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ86fz4HOr862zrXOuSDOus6xzr3Ov869zrnOus6tz4IgzrXOus+Gz4HOrM+DzrXOuc+CIM6+zrXPh8+Jz4HOuc+Dz4TOrCDOs865zrEgzrrOrM64zrUgzrrOu86sz4POtyBDb25maWdJdGVtIM6zzrnOsSDPhM6/zr0gzq3Ou861zrPPh86/IM+Ezr/PhSDOv869z4zOvM6xz4TOv8+CIM+Ezr/PhSBDb25maWdJdGVtIM66zrHOuSDPhM63zr0gzrXOvM+GzqzOvc65z4POtyDPhM+Jzr0gzrHOvc+Ezq/Pg8+Ezr/Ouc+Hz4nOvSDOvM63zr3Phc68zqzPhM+Jzr0gz4PPhs6szrvOvM6xz4TOv8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM65z4IgzrTOuc6xzrjOrc+DzrnOvM61z4Igz4PPhM6uzrvOtc+CIM+Ez4nOvSBDSSDPg8+EzrfOvSDOtc+AzrnPg866z4zPgM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOsc69zqzOu86/zrPOsSDOvM61IM+EzrfOvSDOus6xz4TOt86zzr/Pgc6vzrEgQ0kuIM6azqzOuM61IM66zrHPhM6xz4fPjs+BzrfPg863IM+Az4HOrc+AzrXOuSDOvc6xIM6xz4DOv8+EzrXOu861zq/PhM6xzrkgzrHPgM+MIM6tzr3OsSDPjM69zr/OvM6xIM66zrvOrM+DzrfPgiDOus6xzrkgzq3Ovc6xzr0gz4DOr869zrHOus6xIM60zrnOsc64zq3Pg865zrzPic69IM+AzrXOtM6vz4nOvSDOs865zrEgz4TOt869IM6xzr3PhM6vz4PPhM6/zrnPh863IM66zrvOrM+DzrcuIM6fzrkgzrrOsc+EzrHPh8+Jz4HOr8+DzrXOuc+CIM60z4XOvc6xzrzOuc66z47OvSDPgM61zrTOr8+Jzr0gz4DPgc6tz4DOtc65IM69zrEgz4TOt8+Bzr/Pjc69IM+Ezr8gz4PPh86uzrzOsSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezr8gz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zr8gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjCDPg8+Ezr/Ouc+HzrXOr86/IM+AzrHPgc6xzrzOrc+Ez4HPic69IM6zzrnOsSDPhM63zr0gz4TOsc6+zrnOvc+MzrzOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM+Ezr/PhSDOsc+Azr/PhM61zrvOrc+DzrzOsc+Ezr/PgiDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4TOt8+CIM60zrnOsc+Dz43Ovc60zrXPg863z4Igz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc6/IM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66z4wgz4PPhM6/zrnPh861zq/OvyDPgM6xz4HOsc68zq3PhM+Bz4nOvSDOs865zrEgz4TOt869IM+EzrHOvs65zr3PjM68zrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPhM6/z4UgzrHPgM6/z4TOtc67zq3Pg868zrHPhM6/z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+AzrXOu86sz4TOty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOvyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OvyDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+MIM+Dz4TOv865z4fOtc6vzr8gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gzrPOuc6xIM+EzrfOvSDPhM6xzr7Ouc69z4zOvM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4TOv8+FIM6xz4DOv8+EzrXOu86tz4POvM6xz4TOv8+CIM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDOsc+Fz4TOrs+CIM+EzrfPgiDOu861zrnPhM6/z4XPgc6zzq/Osc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrfOvSDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OtyDPg861zrnPgc6sIM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPg8+Ezr8gzrHPgM6/z4TOrc67zrXPg868zrEgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM+EzrfPgiDOtM65zrHPg8+Nzr3OtM61z4POt8+CIM+Az4HOrM66z4TOv8+BzrEuIFVwOiDPhM6/IM+AzrHOu86xzrnPjM+EzrXPgc6/IM+Dz4TOt869IM66zr/Pgc+Fz4bOri4gzprOrM+Ez4k6IM+Ezr8gz4TOtc67zrXPhc+EzrHOr86/IM+Dz4TOt869IM66zr/Pgc+Fz4bOri4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM63zr0gz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zrcgz4POtc65z4HOrCDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4PPhM6/IM6xz4DOv8+Ezq3Ou861z4POvM6xIM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPgM61zrvOrM+EzrcuIM6gzqzOvc+JOiDPhM6/IM+AzrHOu86xzrnPjM+EzrXPgc6/IM+Dz4TOt869IM66zr/Pgc+Fz4bOri4gzprOrM+Ez4k6IM+Ezr8gz4TOtc67zrXPhc+EzrHOr86/IM+Dz4TOt869IM66zr/Pgc+Fz4bOri4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrfOvSDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OtyDPg861zrnPgc6sIM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPg8+Ezr8gzrHPgM6/z4TOrc67zrXPg868zrEgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM+EzrfPgiDOu861zrnPhM6/z4XPgc6zzq/Osc+CIM6xz4XPhM6uz4IuIM6gzqzOvc+JOiDPhM6/IM+AzrHOu86xzrnPjM+EzrXPgc6/IM+Dz4TOt869IM66zr/Pgc+Fz4bOri4gzprOrM+Ez4k6IM+Ezr8gz4TOtc67zrXPhc+EzrHOr86/IM+Dz4TOt869IM66zr/Pgc+Fz4bOri4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM65z4Igz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zrXPgiDOtc68z4bOsc69zrnOts+MzrzOtc69zrXPgiDPg8+Ezq7Ou861z4Igz4TPic69IENJIM+Dz4TOt869IM61z4DOuc+DzrrPjM+AzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM6xzr3OrM67zr/Os86xIM68zrUgz4TOt869IM66zrHPhM63zrPOv8+Bzq/OsSBDSS4gzprOrM64zrUgzrrOsc+EzrHPh8+Oz4HOt8+Dzrcgz4DPgc6tz4DOtc65IM69zrEgzrHPgM6/z4TOtc67zrXOr8+EzrHOuSDOsc+Az4wgzq3Ovc6xIM+Mzr3Ov868zrEgzrrOu86sz4POt8+CIM66zrHOuSDOrc69zrHOvSDPgM6vzr3Osc66zrEgzrTOuc6xzrjOrc+DzrnOvM+Jzr0gz4DOtc60zq/Pic69IM6zzrnOsSDPhM63zr0gzrHOvc+Ezq/Pg8+Ezr/Ouc+HzrcgzrrOu86sz4POty4gzp/OuSDOus6xz4TOsc+Hz4nPgc6uz4POtc65z4IgzrTPhc69zrHOvM65zrrPjs69IM+AzrXOtM6vz4nOvSDPgM+Bzq3PgM61zrkgzr3OsSDPhM63z4HOv8+Nzr0gz4TOvyDPg8+Hzq7OvM6xIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc6/IM6yzqzOuM6/z4Igz4PPh86tz4POtc+Jzr0gz4DOv8+FIM64zrEgzrXOvM+GzrHOvc6vzrbOtc+EzrHOuS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezr8gz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zr8gzrXOvM+GzrHOvc65zrbPjM68zrXOvc6/IM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66z4wgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrPOuc6xIM+EzrfOvSDOv864z4zOvc63IM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezr8gz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zr8gzrXOvM+GzrHOvc65zrbPjM68zrXOvc6/IM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66z4wgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrPOuc6xIM+EzrfOvSDOv864z4zOvc63IM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLiDOoM6xz4HOrM60zrXOuc6zzrzOsTogIktleSIgz4DPgc6tz4DOtc65IM69zrEgzq3Ph861zrkgz4TOvyDPjM69zr/OvM6xIM+Ezr/PhSDOtM+Fzr3Osc68zrnOus6/z40gz4DOtc60zq/Ov8+FIM+Dz4TOt869IM+Az4HOv866zrXOuc68zq3Ovc63IM+AzrXPgc6vz4DPhM+Jz4POtyBcJ1hcJywgIkNvbnRlbnQiIM+Az4HOrc+AzrXOuSDOvc6xIM6tz4fOtc65IM+EzrfOvSDPhM65zrzOriDPhM6/z4UgzrTPhc69zrHOvM65zrrOv8+NIM+AzrXOtM6vzr/PhSDOsc69zqzOu86/zrPOsSDOvM61IM+Ezr/OvSDPhM+Nz4DOvyDPhM6/z4UgzrTPhc69zrHOvM65zrrOv8+NIM+AzrXOtM6vzr/PhSwgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NC0gU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxLSBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2LSBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMCwgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMC0gU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMC0gU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzLSBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMSwgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2LSBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzLSBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTktIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OSxcJyDOus6xzrkgzq4gXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnzp/Pgc6vzrbOtc65IM+Ezr8gz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zr8gz4XPgM6/zrHOvc+EzrnOus61zq/OvM61zr3OvyDPhM63z4IgzrrOu86sz4POt8+CIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM65z4IgzrTOuc6xzrjOrc+DzrnOvM61z4Igz4PPhM6uzrvOtc+CIM+Ez4nOvSBDSSDPg8+EzrfOvSDOtc+AzrnPg866z4zPgM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOsc69zqzOu86/zrPOsSDOvM61IM+EzrfOvSDOus6xz4TOt86zzr/Pgc6vzrEgQ0kuIM6azqzOuM61IM66zrHPhM6xz4fPjs+BzrfPg863IM+Az4HOrc+AzrXOuSDOvc6xIM6xz4DOv8+EzrXOu861zq/PhM6xzrkgzrHPgM+MIM6tzr3OsSDPjM69zr/OvM6xIM66zrvOrM+DzrfPgiDOus6xzrkgzq3Ovc6xzr0gz4DOr869zrHOus6xIM60zrnOsc64zq3Pg865zrzPic69IM+AzrXOtM6vz4nOvSDOs865zrEgz4TOt869IM6xzr3PhM6vz4PPhM6/zrnPh863IM66zrvOrM+DzrcuIM6fzrkgzrrOsc+EzrHPh8+Jz4HOr8+DzrXOuc+CIM60z4XOvc6xzrzOuc66z47OvSDPgM61zrTOr8+Jzr0gz4DPgc6tz4DOtc65IM69zrEgz4TOt8+Bzr/Pjc69IM+Ezr8gz4PPh86uzrzOsSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOvyDPjc+Izr/PgiDOs865zrEgz4TOvyDPg8+Ezr/Ouc+HzrXOr86/IM+Ezr/PhSDOtc+AzrXOvs61z4HOs86xz4PPhM6uIM+AzrvOv8+Nz4POuc6/z4UgzrrOtc65zrzOrc69zr/PhSDOs865zrEgzrHPhc+Ezq4gz4TOt869IM6/zrjPjM69zrcuIM6VzrnPg86szrPOtc+EzrUgzrHPgc65zrjOvM+MIChwaXhlbHMpIM6uIM+Azr/Pg86/z4PPhM65zrHOr86xIM+EzrnOvM6uICjPg8+HzrXPhM65zrrOrikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/zr0gzrHPgc65zrjOvM+MIM+Ez4nOvSDOs8+BzrHOvM68z47OvSDOs865zrEgz4TOv869IM61z4DOtc6+zrXPgc6zzrHPg8+Ezq4gzr/Pgc65z4POvM6/z40gQ0kgz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4IgzrTOuc6xz4fOtc6vz4HOuc+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezrcgz4POtc65z4HOrCDPhM+Jzr0gzrrOsc+EzrHPg8+EzqzPg861z4nOvSDPg8+FzrzOss6szr3PhM+Jzr0gzrHPgM+MIM+Fz4jOt867zq4gKM+ALs+HLiDOus+Bzq/Pg865zrzOtykgzq3Pic+CIM+HzrHOvM63zrvOriAoz4Auz4cuIM67zrXOuc+Ezr/Phc+BzrPOuc66zq4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM65z4Igz4PPh861z4TOuc66zq3PgiDOus6xz4TOsc+Dz4TOrM+DzrXOuc+CIM6xzr3OrM+Az4TPhc6+zrfPgiDPjM+Azr/PhSDPhM6xIM+Dz4XOvc60zrXOtM61zrzOrc69zrEgzrXOuc+DzrnPhM6uz4HOuc6xIM68z4DOv8+Bzr/Pjc69IM69zrEgzrXPgM63z4HOtc6sz4POv8+Fzr0gz4TOt869IM66zrHPhM6sz4PPhM6xz4POtyDOtc69z4zPgiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOvyDPjM+BzrnOvyDOsc69zrHOts6uz4TOt8+DzrfPgiDOs865zrEgz4TOt869IM6/zrjPjM69zrcgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOvyDPjM+BzrnOvyDOsc69zrHOts6uz4TOt8+DzrfPgiDOs865zrEgz4TOt869IM6/zrjPjM69zrcgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOvyDPjM+BzrnOvyDOsc69zrHOts6uz4TOt8+DzrfPgiDOs865zrEgz4TOt869IM6/zrjPjM69zrcgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOvyDPjM+BzrnOvyDOsc69zrHOts6uz4TOt8+DzrfPgiDOs865zrEgz4TOt869IM6/zrjPjM69zrcgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOuc+CIM61zrzPhs6xzr3Ouc62z4zOvM61zr3Otc+CIM+Dz4TOrs67zrXPgiDPhM+Jzr0gQ0kgz4PPhM63zr0gz4DOv867z43PgM67zr/Ous63IM+Az4HOv86yzr/Ou86uIM+Ezr/PhSDPgM6vzr3Osc66zrEgz4PPhc69zrTOrc+DzrXPic69IM6zzrnOsSDPjM67zrXPgiDPhM65z4IgzrrOsc+EzrfOs86/z4HOr861z4IgQ0kuIM6VzqzOvSDOtM61zr0gz4XPgM6sz4HPh861zrkgzrrOsc+EzrHPh8+Oz4HOuc+DzrcsIM+Ez4zPhM61IM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDOv865IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc61z4Igz4PPhM6uzrvOtc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrnPgiDOtc68z4bOsc69zrnOts+MzrzOtc69zrXPgiDPg8+Ezq7Ou861z4Igz4TPic69IENJIM+Dz4TOt869IM+Azr/Ou8+Nz4DOu86/zrrOtyDPgM+Bzr/Oss6/zrvOriDPhM6/z4Ugz4DOr869zrHOus6xIM+Dz4XOvc60zq3Pg868z4nOvSwgzrHOvc6szrvOv86zzrEgzrzOtSDPhM63zr0gzrrOsc+EzrfOs86/z4HOr86xIENJLiDOms6szrjOtSDOtc6zzrPPgc6xz4bOriDPgM+Bzq3PgM61zrkgzr3OsSDOrc+HzrXOuSDPic+CIM+Az4HPjM64zrXOvM6xIM+Ezr8gz4zOvc6/zrzOsSDPhM63z4IgzrrOu86sz4POt8+CIM66zrHOuSDOtM65z4DOu86tz4IgzqzOvc+JIM66zrHOuSDOus6sz4TPiSDPhM61zrvOtc6vzrEgKM+ALs+HLiBDb21wdXRlcjo6OikuIM6lz4DOrM+Bz4fOv8+Fzr0gzrzOtc+BzrnOus6sIENJLUF0dHJpYnV0ZXMgz4DOv8+FIM61zq/Ovc6xzrkgzrrOv865zr3OrCDOs865zrEgz4zOu86xIM+EzrEgQ0kgKM+AzrHPgc6szrTOtc65zrPOvM6xIM6zzrnOsSDPhM63zr0gzrrOu86sz4POtyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gzpPOuc6xIM69zrEgzrXOvM+GzrHOvc65z4PPhM6/z43OvSDOvM61zrzOv869z4nOvM6tzr3OsSBDSS1BdHRyaWJ1dGVzIM+Mz4DPic+CIM6/z4HOr862zr/Ovc+EzrHOuSDPg8+Ezr/OvSBDSS1EZWZpbml0aW9uLCDPgM+Bzq3PgM61zrkgzr3OsSDPh8+BzrfPg865zrzOv8+Azr/Ouc63zrjOtc6vIM+Ezr8gzrHOus+MzrvOv8+FzrjOvyDPg8+Hzq7OvM6xICjPgM6xz4HOrM60zrXOuc6zzrzOsSDOs865zrEgz4TOt869IM66zrvOrM+DzrcgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gzpXOrM69IM60zrXOvSDPhc+AzqzPgc+HzrXOuSDOus6xz4TOsc+Hz47Pgc63z4POtyDOs865zrEgzrzOuc6xIM66zrvOrM+DzrcgQ0ksIM+Ez4zPhM61IM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDOv865IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc61z4Igz4PPhM6uzrvOtc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPgM6/zrnOsSDPg8+Ezr/Ouc+HzrXOr86xIM61zq/Ovc6xzrkgzrTOuc6xzrjOrc+DzrnOvM6xIM6zzrnOsSAizpTPgc6sz4POtyIgz4PPhM6/IM+Ez4HOr8+Ezr8gzrXPgM6vz4DOtc60zr8gz4TOt8+CIM60zr/OvM6uz4IgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Azr/Ouc6xIM+Dz4TOv865z4fOtc6vzrEgzrXOr869zrHOuSDOtM65zrHOuM6tz4POuc68zrEgz4PPhM6/IM+Az4HPjs+Ezr8gzrXPgM6vz4DOtc60zr8gz4TOt8+CIM60zr/OvM6uz4IgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPgM6/zrnOsSDPg8+Ezr/Ouc+HzrXOr86xIM61zq/Ovc6xzrkgzrTOuc6xzrjOrc+DzrnOvM6xIM+Dz4TOvyDOtM61z43PhM61z4HOvyDOtc+Azq/PgM61zrTOvyDPhM63z4IgzrTOv868zq7PgiBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Azr/Ouc6/z4Igz4TPjc+Azr/PgiDPg8+Nzr3OtM61z4POt8+CICjOvM61IM+Mzr3Ov868zrEgzrHPgM+MIM+EzrfOvSDOv8+Az4TOuc66zq4gzrPPic69zq/OsSDPhM6/z4UgzrXOuc+DzrnPhM63z4HOr86/z4UpIM68z4DOv8+BzrXOryDOvc6xIM61z4DOt8+BzrXOrM+DzrXOuSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM61zr3PjM+CIM+Dz4XOvc60zrXOtM61zrzOrc69zr/PhSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4DOv865zr/PgiDPhM+Nz4DOv8+CIM61zrnPg865z4TOt8+Bzq/Ov8+FIM68z4DOv8+BzrXOryDOvc6xIM61z4DOt8+BzrXOrM+DzrXOuSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM61zr3PjM+CIM+Dz4XOvc60zrXOtM61zrzOrc69zr/PhSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICfOlc69zrfOvM6tz4HPic+Dzrcgzr/Pgc65z4POvM6/z40nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ86UzrnOsc6zz4HOsc+Gzq4gz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfOp8+Bz47OvM6xIM66zrHPhM6sz4PPhM6xz4POt8+CIM6xzr3OrM+Az4TPhc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnzpTOuc+AzrvPjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ86czr/Ovc6szrTOsSDPg8+FzrzOss6szr3PhM+Jzr0gzrTPhc69zrHOvM65zrrPjs69IM+AzrXOtM6vz4nOvSDPgM6/z4UgzrXPgM65z4POt868zrHOr869zrXOuSDPhM6/z4XPgiDOv8+BzrnPg868zr/Pjc+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Jz4IgzrzOtyDPg8+FzrPPh8+Bzr/Ovc65z4POvM6tzr3Ov8+Fz4IsIM61zqzOvSDOsc67zrvOrM6+zr/Phc69IM+EzrEgzrTPhc69zrHOvM65zrrOrCDPgM61zrTOr86xIM+Azr/PhSDPgM61z4HOuc6tz4fOv8+Fzr0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlM+Fzr3Osc68zrnOus6sIM+AzrXOtM6vzrEgz4DOv8+FIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPg8+EzrfOvSDOv864z4zOvc63IM+Az4HPjM+DzrjOtc+Ez4nOvSDPgM61zrTOr8+Jzr0gSVRTTSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpTPhc69zrHOvM65zrrOrCDPgM61zrTOr86xIM+Azr/PhSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgz4PPhM63zr0gzr/OuM+Mzr3OtyDOtc+AzrnPg866z4zPgM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+AzrXOu86sz4TOty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Uz4XOvc6xzrzOuc66zqwgz4DOtc60zq/OsSDPgM6/z4UgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+Dz4TOt869IM6/zrjPjM69zrcgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ86Vzr3Otc+BzrPOv8+Azr/Ouc61zq8gz4TOtyDOtM+Fzr3Osc+Ez4zPhM63z4TOsSDOvM6xzrbOuc66zq7PgiDOtM+BzqzPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrPOuc6xIM+Ezr8gZnJvbnRlbmQgz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEgz47Pg8+EzrUgzr3OsSDOtc+BzrPOrM62zrXPhM6xzrkgz4POtSDPgM61z4HOuc+Dz4PPjM+EzrXPgc6xIM6xz4DPjCDOrc69zrEgz4PPhM6/zrnPh861zq/OsSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+EzrHPhc+Ez4zPh8+Bzr/Ovc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnzpcgzrrOsc+EzqzPg8+EzrHPg863IM6xzr3OrM+Az4TPhc6+zrfPgiDOsc+Fz4TOv8+NIM+Ezr/PhSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICfOlc69zrXPgc6zzr/PgM6/zrnOtc6vL86xz4DOtc69zrXPgc6zzr/PgM6/zrnOtc6vIM+EzrcgzrvOtc65z4TOv8+Fz4HOs86vzrEgzrXOu86tzrPPh86/z4Ugz4TPic69IM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSBJVFNNIM6zzrnOsSDOvM6/zr3Osc60zrnOus6sIM6/zr3PjM68zrHPhM6xLiDOoM+BzrnOvSDOtc69zrXPgc6zzr/PgM6/zrnOrs+DzrXPhM61IM6xz4XPhM6uzr0gz4TOt869IM61z4DOuc67zr/Os86uLCDOuM6xIM+Az4HOrc+AzrXOuSDOvc6xIM61zrvOrc6zzr7Otc+EzrUgz4TOvyDPg8+Nz4PPhM63zrzOrCDPg86xz4IgzrPOuc6xIM6uzrTOtyDPhc+AzqzPgc+Hzr/Ovc+EzrEgz4PPhM6/zrnPh861zq/OsSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM68zrUgzrTOuc+AzrvOrCDOv869z4zOvM6xz4TOsS4gzpzPgM6/z4HOtc6vz4TOtSDOvc6xIM+Ezr8gzrrOrM69zrXPhM61IM6xz4XPhM+MIM68zrUgz4TOt869IM61zr3PhM6/zrvOriDPhM63z4IgzrrOv869z4PPjM67zrHPgiBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ86Vzr3PjM+EzrfPhM6xIM+Dz4XOvM6yzqzOvc+Ezr/PgiDOs865zrEgzr3OsSDOv8+Bzq/Pg861z4TOtSDPhM63zr0gzrrOsc+EzqzPg8+EzrHPg863IM+Ezr/PhSDPg8+Ezr/Ouc+HzrXOr86/z4Ugz4DOsc+BzrHOvM61z4TPgc6/z4DOv86vzrfPg863z4Igz4PPhM6/IM+Dz43Ovc60zrXPg868zr8gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnzqDOtc60zq/OsSDPhM6/z4UgzrXPhc+BzrXPhM63z4HOr86/z4Ugz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IsIM+Azr/PhSDPh8+BzrfPg865zrzOv8+Azr/Ouc6/z43Ovc+EzrHOuSDOs865zrEgz4TOt869IM6xzr3Osc62zq7PhM63z4POtyDPgM67zq7Pgc6/z4XPgiDOus61zrnOvM6tzr3Ov8+FLiDOpM6xIM+AzrXOtM6vzrEgzrHPgM6/zrjOt866zrXPjc6/zr3PhM6xzrkgzrXPgM6vz4POt8+CLCDOsc67zrvOrCDOtM61zr0gzrXOr869zrHOuSDPhc+Azr/Ph8+BzrXPic+EzrnOus6sIM6zzrnOsSDPhM63IM+Dz4XOvc6/zrvOuc66zq4gzrvOtc65z4TOv8+Fz4HOs865zrrPjM+EzrfPhM6xLiDOlyDPg8+FzrzPgM61z4HOr867zrfPiM63IM+Ez4nOvSDPg8+Fzr3Ot868zrzOrc69z4nOvSDOvM+Azr/Pgc61zq8gzr3OsSDOsc+AzrXOvc61z4HOs86/z4DOv865zrfOuM61zq8gzrjOrc+Ezr/Ovc+EzrHPgiDPhM63zr0gzrrOsc+EzrHPh8+Oz4HOt8+Dzrcgz4POtSAwIM6uIM60zrnOsc6zz4HOrM+Gzr/Ovc+EzqzPgiDPhM63zr0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICfOoM61zrTOr86xIM+Azr/PhSDOsc+Azr/OuM63zrrOtc+Nzr/Ovc+EzrHOuSDPg8+Ezr8gzrXPhc+BzrXPhM6uz4HOuc6/IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM66zrHOuSDPh8+BzrfPg865zrzOv8+Azr/Ouc6/z43Ovc+EzrHOuSDOs865zrEgzqzOu867zrEgz4DPgc6szrPOvM6xz4TOsSDOtc66z4TPjM+CIM6xz4DPjCDPhM63zr0gzrHOvc6xzrbOrs+EzrfPg863IM+AzrvOrs+Bzr/Phc+CIM66zrXOuc68zq3Ovc6/z4UuIM6TzrnOsSDPhM63zr0gz4DOu86uz4HOtyDOu861zrnPhM6/z4XPgc6zzrnOus+Mz4TOt8+EzrEgz4zOu86xIM+EzrEgz4DOtc60zq/OsSDOtc6vzr3Osc65IM+Fz4DOv8+Hz4HOtc+Jz4TOuc66zqwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnzpPOuc6xIM66zqzOuM61IM+Fz4DOt8+BzrXPg86vzrEgzrnPg8+Ezr/PjSAozrrOu861zrnOtM6vKSDOvM+Azr/Pgc61zq8gzr3OsSDOv8+BzrnPg8+EzrXOryDOrc69zrHPgiDPgM6vzr3Osc66zrHPgiDOus67zqzPg861z4nOvSAoz4TOuc68zq4pLCDPg8+EzrnPgiDOv8+Azr/Or861z4Igz4DOtc+BzrnOv8+Bzq/Ots61z4TOsc65IM63IM61zrnPg86xzrPPic6zzq4uIM6TzrnOsSDPjM67zrXPgiDPhM65z4IgzrXPgM65zrvOtc6zzrzOrc69zrXPgiDOus67zqzPg861zrnPgiDOriDOs865zrEgz4zOu861z4Igz4TOuc+CIM+Fz4DOrM+Bz4fOv8+Fz4POtc+CIM66zrvOrM+DzrXOuc+CIM64zrEgz4DPgc6tz4DOtc65IM69zrEgzrXPgM65zrvOtc6zzr/Pjc69IM+EzrEgz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrOrCDOsc69zrHOs869z47Pgc65z4POt8+CIM+Dz4TOvyBjb25maWcgz4TOv8+FIGludm9rZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ86VzrPOs8+BzrHPhs6uIM68zr/Ovc6szrTOsc+CIEdlbmVyaWNJbnRlcmZhY2UgzrPOuc6xIM+Ezr8gzrXPgM6vz4DOtc60zr8gzrXPgM65zrrOsc67zr/Pjc68zrXOvc6/z4UgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ86VzrPOs8+BzrHPhs6uIM68zr/Ovc6szrTOsc+CIEdlbmVyaWNJbnRlcmZhY2UgzrPOuc6xIM+Ezr8gzrXPgM6vz4DOtc60zr8gzrXPgM65zrrOsc67zr/Pjc68zrXOvc6/z4UgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfOlc6zzrPPgc6xz4bOriDOvM6/zr3OrM60zrHPgiBHZW5lcmljSW50ZXJmYWNlIM6zzrnOsSDPhM6/IM61z4DOr8+AzrXOtM6/IM61z4DOuc66zrHOu86/z43OvM61zr3Ov8+FIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnzpXPgM65z4POus+Mz4DOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM+Bz4XOuM68zq/Pg861z4nOvSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOtc+BzrnOu86xzrzOss6szr3Otc65IM66zrHPhM6xz4PPhM6sz4POtc65z4IgzrHOvc6sz4DPhM+Fzr7Ot8+CIM+Dz4TOt869IM6xzr3Osc62zq7PhM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPgM61zrvOrM+EzrcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOoM61z4HOuc67zrHOvM6yzqzOvc61zrkgzrrOsc+EzrHPg8+EzqzPg861zrnPgiDPg8+FzrzOss6szr3PhM+Jzr0gz4PPhM63zr0gzrHOvc6xzrbOrs+EzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+AzrXOu86sz4TOty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ86czq3Os865z4PPhM6/z4IgzrHPgc65zrjOvM+Mz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4DOv8+FIM64zrEgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+Dz4TOvyDOsc+Azr/PhM6tzrvOtc+DzrzOsSDOsc+Fz4TOrs+CIM+EzrfPgiDOu861zrnPhM6/z4XPgc6zzq/Osc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ86Vzr3PjM+EzrfPhM6xIM6zzrnOsSDPhM6/zr0gzq3Ou861zrPPh86/IM+EzrfPgiDOv868zqzOtM6xz4Igz4DOv8+FIM61zq/Ovc6xzrkgz4XPgM61z43OuM+Fzr3OtyDOs865zrEgzrzOuc6xIM+EzqzOvs63Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ86Vzr3PjM+EzrfPhM6xIM6zzrnOsSDPhM6/zr0gzq3Ou861zrPPh86/IM+EzrfPgiDOv868zqzOtM6xz4Igz4DOv8+FIM61zq/Ovc6xzrkgz4XPgM61z43OuM+Fzr3OtyDOs865zrEgzq3Ovc6xIM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfOlc69z4zPhM63z4TOsSDOs865zrEgz4TOtyDOtM63zrzOuc6/z4XPgc6zzq/OsSDPg8+EzrHPhM65z4PPhM65zrrPjs69IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnzozOvc6/zrzOsSDOlc69z4zPhM63z4TOsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnzpXOvc+Mz4TOt8+EzrEgzrHPgc65zrjOvM6/z40nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgc65zrjOvM+Mz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4DOv8+FIM64zrEgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+DzrUgzrrOrM64zrUgz4POtc67zq/OtM6xIM61zr3PjM+CIM6xz4DOv8+EzrXOu86tz4POvM6xz4TOv8+CIM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+BzrnOuM68z4zPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPgM6/z4UgzrjOsSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgz4POtSDOus6szrjOtSDPg861zrvOr860zrEgzrXOvc+Mz4IgzrHPgM6/z4TOtc67zq3Pg868zrHPhM6/z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+AzrXOu86sz4TOty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICfOkc69z4TOuc66zrXOr868zrXOvc6xIM6zzrnOsSDPhM6xIM6/z4DOv86vzrEgzrjOsSDOs86vzr3Otc65IM6xzr3Osc62zq7PhM63z4POtywgz4DPjM+DzrXPgiDOus6xz4TOsc+Hz4nPgc6uz4POtc65z4IgzrrOsc65IM+Azr/Ouc6xIM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66zqwgzrjOsSDOtc68z4bOsc69zrnPg8+Ezr/Pjc69LiDOpM6xIM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66zqwgQ29uZmlnSXRlbSDPgM+Bzq3PgM61zrkgzr3OsSDOsc+Azr/OuM63zrrOtc+Nzr/Ovc+EzrHOuSDPgc63z4TOrCDOvM6tz4PPiSDPhM6/z4UgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnzpXPgM65z4POus+Mz4DOt8+DzrcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOuc+CIM66zrHPhM63zrPOv8+Bzq/Otc+CIM+Ez4nOvSDOus67zqzPg861z4nOvSDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDPgM+Bzr/Oss6/zrvOriDPgM+Bzr/PhM65zrzOrs+DzrXPic69IM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM6xIM+Gzq/Ou8+Ez4HOsSDPg8+Ezq7Ou863z4Igz4TOt8+CIM61z4DOuc+DzrrPjM+AzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM68zrnOus+Bzq7PgiDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLiDOo863zrzOtc6vz4nPg863OiDOtyDPgc+NzrjOvM65z4POtyBcJ0FjdGl2ZVwnIM+DzrUgMCDOuM6xIM61zrzPgM6/zrTOr8+DzrXOuSDOvM+Mzr3OvyDPhM6/z4XPgiDPgM+BzqzOus+Ezr/Pgc61z4Igzr3OsSDOtc+AzrXOvs61z4HOs86szrbOv869z4TOsc65IM+EzrnPgiDPgc+FzrjOvM6vz4POtc65z4IgzrHPhc+Ezq7PgiDPhM63z4Igzr/OvM6szrTOsc+CIM+Dz4TOuc+CIM+Az4HOv8+Dz4nPgM65zrrOrc+CIM+Ezr/Phc+CIM+Az4HOv8+EzrnOvM6uz4POtc65z4IsIM6xzrvOu86sIM64zrEgzrXPgM65z4TPgc6tz4jOtc65IM+Dz4TOv8+Fz4IgzrTOuc6xz4fOtc65z4HOuc+Dz4TOrc+CIM69zrEgzrXPgM61zr7Otc+BzrPOrM62zr/Ovc+EzrHOuSDPhM65z4Igz4HPhc64zrzOr8+DzrXOuc+CIM6zzrnOsSDOu86/zrPOsc+BzrnOsc+DzrzPjCDOrM67zrvOv8+FIM+Hz4HOrs+Dz4TOty4gzqfPgc63z4POuc68zr/PgM6/zrnOrs+Dz4TOtSDPhM6/IFwnUHJlZmVyZW5jZUdyb3VwXCcgzrPOuc6xIM69zrEgzrXOu86tzrPOvs61z4TOtSDPg861IM+Azr/Ouc6xIM+AzrXPgc65zr/Ph86uIM64zrEgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM6xz4XPhM6tz4Igzr/OuSDPgc+FzrjOvM6vz4POtc65z4Igz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4fPgc6uz4PPhM63Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+Ezr8gz4fPgc+OzrzOsSDPhM+Jzr0gzrrOsc+EzrHPg8+EzqzPg861z4nOvSDOsc69zqzPgM+Ez4XOvs63z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gz4DPgc6/z4TOuc68zq7Pg861z4nOvSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOuc+CIM66zrHPhM6xz4PPhM6sz4POtc65z4IgzrHOvc6sz4DPhM+Fzr7Ot8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM+Az4HOv8+EzrnOvM6uz4POtc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM65z4Igzr/OvM6szrTOtc+CIM60zrnOus6xzrnPic68zqzPhM+Jzr0gz4TOv8+FIM+AzrHPgc6xzrTOtc6vzrPOvM6xz4TOv8+CIM+Ez4nOvSDOs861zr3Ouc66z47OvSDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+Ozr0gzrrOsc+EzrHOu8+MzrPOv8+FLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM63IM68zr/Ovc6szrTOsSDOv869z4zOvM6xz4TOv8+CIM6zzrnOsSDPhM65z4IgzrrOu86sz4POtc65z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gz4DPgc6/z4TOuc68zq7Pg861z4nOvSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrcgzrzOv869zqzOtM6xIM6xz4HOuc64zrzOv8+NIM6zzrnOsSDPhM65z4IgzrrOu86sz4POtc65z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gz4DPgc6/z4TOuc68zq7Pg861z4nOvSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOuc+CIM+DzrXOu86vzrTOtc+CICjPg8+EzrnPgiDOv8+Azr/Or861z4IgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+EzrEgz4PPhM6/zrnPh861zq/OsSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrcgzrzOv869zqzOtM6xIM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrM+CIM6tzrrOtM6/z4POt8+CIM6zzrnOsSDPhM65z4IgzrrOu86sz4POtc65z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gz4DPgc6/z4TOuc68zq7Pg861z4nOvSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOt869IM61zr3PjM+EzrfPhM6xIM61z4HOs86xzrvOtc65zr/OuM6uzrrOt8+CIM+Az4HOv8+Ez43PgM6/z4Ugz4PPhc68zrLOv867zr/Pg861zrnPgc6sz4Igzq3Ous60zr/Pg863z4IgzrPOuc6xIM+EzrnPgiDOus67zqzPg861zrnPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDPgM+Bzr/Oss6/zrvOriDPgM+Bzr/PhM65zrzOrs+DzrXPic69IM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOt869IM61zr3Otc+BzrPOv8+Azr/Or863z4POtyDOrc66zrTOv8+DzrfPgiDOs865zrEgz4TOuc+CIM66zrvOrM+DzrXOuc+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM+Az4HOv8+EzrnOvM6uz4POtc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnzpXOus+EzrXOu861zq8gz4TOtyDPgc+FzrjOvM65z4POvM6tzr3OtyDOtc69zq3Pgc6zzrXOuc6xIM6zzrnOsSDOus6szrjOtSDPg8+FzrzOss6szr0gKM+Jz4IgSW52b2tlcikgzrPOuc6xIM66zqzOuM61IM+Bz4XOuM68zrnPg868zq3Ovc63IM+Fz4DOt8+BzrXPg86vzrEgV2Vic2VydmljZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ86fzrzOrM60zrEgzrHOtM61zrnPjs69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4IgzrXOvc6tz4HOs861zrnOsc+CIM+Az4HOv8+DzqzPgc+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDPh8+Bzq7Pg863IM+EzrfPgiDOv864z4zOvc63z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM+Hz4HOrs+Dzrcgz4TOt8+CIM6/zrjPjM69zrfPgiDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM+Dz4TOtyDOtM65zrXPgM6xz4bOriDPgM61zrvOrM+EzrcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDPh8+Bzq7Pg863IM+EzrfPgiDOv864z4zOvc63z4IgzrTOtc69zrTPgc65zrrOrs+CIM+Az4HOv86yzr/Ou86uz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDPh8+Bzq7Pg863IM+EzrfPgiDOv864z4zOvc63z4IgzrzOtc6zzq3OuM+Fzr3Pg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDPg8+EzrcgzrTOuc61z4DOsc+Gzq4gz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDPh8+Bzq7Pg863IM+EzrfPgiDOv864z4zOvc63z4Igz4DPgc6/z4POuM6uzrrOt8+CIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM68zrHOts65zrrPjs69IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM61z4DOtc6+zrXPgc6zzrHPg86vzrHPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM+Dz4TOtyDOtM65zrXPgM6xz4bOriDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDPh8+Bzq7Pg863IM+EzrfPgiDOv864z4zOvc63z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrnPg8+Ezr/Pgc65zrrOv8+NIElUU00gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM+Hz4HOrs+Dzrcgz4TOt8+CIM6/zrjPjM69zrfPgiBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgz4DPgc6/zr3PjM68zrnOsSDOs865zrEgz4TOtyDOtM65zrHOs8+BzrHPhs6uIM+Dz4TOv865z4fOtc6vz4nOvSDPgc+FzrjOvM6vz4POtc+Jzr0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnzpHOvc6xzrbOrs+EzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnzp/Pgc6vz4PPhM61IM6xz4XPhM+MzrzOsc+EzrEgz4TOt869IM66zrHPhM6sz4PPhM6xz4POtyDPg8+FzrzOss6szr3PhM6/z4IgzrXOvc+Mz4IgQ0kgz4zPhM6xzr0gzq3Ovc6xIFRpY2tldCDPg8+Fzr3OtM6tzrXPhM6xzrkgzrzOtSDOrc69zrEgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzp/Pgc6vzrbOtc65IM+EzrfOvSDOus6xz4TOrM+Dz4TOsc+DzrcgzrHOvc6sz4DPhM+Fzr7Ot8+CIM+Dz4TOt869IM6/zrjPjM69zrcgzrzOsc62zrnOus6uz4Igz4DPgc6/zrLOv867zq7PgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM63z4IgzrTOuc6xz4PPjc69zrTOtc+DzrfPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzp/Pgc6vzrbOtc65IM+EzrfOvSDOus6xz4TOrM+Dz4TOsc+Dzrcgz4PPhc68zrLOrM69z4TOv8+CIM+Dz4TOt869IM6/zrjPjM69zrcgzrzOsc62zrnOus6uz4Igz4DPgc6/zrLOv867zq7PgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8+Az4HOv8+AzrHPgc6xzrPPic6zzrnOus6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpXOvM+GzrHOvc6vzrbOtc65IM6tzr3Osc69IM+Dz43Ovc60zrXPg868zr8gz4PPhM6/IM68zrXOvc6/z40gzrPOuc6xIM+Az4HPjM+DzrLOsc+Dzrcgz4PPhM6/IM65z4PPhM6/z4HOuc66z4wgzrXOvc+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gzrXPgM65z4POus+Mz4DOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDOrc69zrHOvSDPg8+Nzr3OtM61z4POvM6/IM+Dz4TOvyDOvM61zr3Ov8+NIM6zzrnOsSDPgM+Bz4zPg86yzrHPg863IM+Dz4TOvyDOuc+Dz4TOv8+BzrnOus+MIM61zr3PjM+CIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM68zrXOs86tzrjPhc69z4POt8+CIM+Ezr/PhSDPgM61z4HOuc6yzqzOu867zr/Ovc+Ezr/PgiDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDOrc69zrHOvSDPg8+Nzr3OtM61z4POvM6/IM+Dz4TOvyDOvM61zr3Ov8+NIM6zzrnOsSDPhM63IM60zrnOsc6zz4HOsc+Gzq4gzrXOvc+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gzrzOtc6zzq3OuM+Fzr3Pg863z4Igz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4TOt869IM61zrzPhs6szr3Ouc+Dzrcgz4TPic69IM+Dz4XOvc60zq3Pg868z4nOvSDPhM+Jzr0gz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4nPgiDOtM61zr3OtM+BzrnOus6uIM+Az4HOv86yzr/Ou86uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDOrc69zrHOvSDPg8+Nzr3OtM61z4POvM6/IM+Dz4TOvyDOvM61zr3Ov8+NIM6zzrnOsSDPhM63zr0gzrHOvc+EzrnOs8+BzrHPhs6uIM61zr3PjM+CIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM61z4DOuc+DzrrPjM+AzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Ezr/PhSDPgM61z4HOuc6yzqzOu867zr/Ovc+Ezr/PgiDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4TOt869IM6xzr3PhM65zrPPgc6xz4bOriDOtc69z4zPgiDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDPgM+Bzr/Oss6/zrvOriDOvM61zrPOrc64z4XOvc+DzrfPgiDPhM6/z4Ugz4DOtc+BzrnOss6szrvOu86/zr3PhM6/z4IgzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDOrc69zrHOvSDPg8+Nzr3OtM61z4POvM6/IM+Dz4TOvyDOvM61zr3Ov8+NIM6zzrnOsSDPhM63zr0gzrXPgM61zr7Otc+BzrPOsc+Dzq/OsSDOtc69z4zPgiDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDPgM+Bzr/Oss6/zrvOriDOvM61zrPOrc64z4XOvc+DzrfPgiDPhM6/z4Ugz4DOtc+BzrnOss6szrvOu86/zr3PhM6/z4IgzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDOrc69zrHOvSDPg8+Nzr3OtM61z4POvM6/IM+Dz4TOvyDOvM61zr3Ov8+NIM6zzrnOsSDOvc6xIM61z4DOuc+Dz4TPgc6tz4jOtc+EzrUgz4PPhM63zr0gz4DPgc6/zrLOv867zq4gzrzOtc6zzq3OuM+Fzr3Pg863z4Igz4TOv8+FIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDOrc69zrHOvSDPg8+Nzr3OtM61z4POvM6/IM+Dz4TOvyDOvM61zr3Ov8+NIM6zzrnOsSDPhM63zr0gzrXOus+Ez43PgM+Jz4POtyDOtc69z4zPgiDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDPgM+Bzr/Oss6/zrvOriDOvM61zrPOrc64z4XOvc+DzrfPgiDPhM6/z4Ugz4DOtc+BzrnOss6szrvOu86/zr3PhM6/z4IgzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgzrzOtc6zzq3OuM+Fzr3Pg863IM+DzrUgzq3Ovc6xIM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDOtc+AzrnPg866z4zPgM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM6/z4Ugz4DOtc+BzrnOss6szrvOu86/zr3PhM6/z4IgzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDPhM6/IM65z4PPhM6/z4HOuc66z4wgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgKM6xzr3PhM6vz4PPhM+Bzr/Phs63IM+DzrXOuc+BzqwpIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICfOlyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OtyDOus6xz4TOt86zzr/Pgc6vzrEgz4DOv8+FIM61zrzPhs6xzr3Or862zrXPhM6xzrksIM61zqzOvSDOtM61zr0gzq3Ph861zrkgzrXPgM65zrvOtc6zzrXOryDOus6xzrzOr86xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnzqTOvyDOsc69zrHOs869z4nPgc65z4PPhM65zrrPjCDOs865zrEgzq3Ovc6xIM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiwgz4Auz4cuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiDOlyDPgM+Bzr/Otc+AzrnOu86/zrPOriDOtc6vzr3Osc65IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ86gz4HOv866zrHOu861zq8gzrHPhc+Ez4zOvM6xz4TOsSDPhM63zr0gzrXPgM6vzrrOu863z4POtyBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICfOiM66zrTOv8+DzrcgU3RyaW5nIEV4cHJlc3Npb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnzojOus60zr/Pg863IFN0cmluZyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnzqPOus6xzr3OtM6szrvOtyDOrc66zrTOv8+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnzpXOrM69IM63IM61zrrPhM6tzrvOtc+Dzrcgz4TOv8+FIENvbmZpZ0l0ZW1BQ0wgzrzPgM6/z4HOtc6vIM69zrEgzrHPgM6/z4bOtc+Fz4fOuM61zq8gzrzOtSDPhM6/zr0gzq3Ou861zrPPh86/IM+Ez4nOvSDOtc6+zrHPgc+Ezq7Pg861z4nOvSDPhM+Jzr0gz4DOtc60zq/Pic69IM+Azr/PhSDOrc+Hzr/Phc69IM6xz4DOv864zrfOus61z4XPhM61zq8gz4PPhM63zr0gz4DPgc6/z4PPic+BzrnOvc6uIM68zr3Ors68zrcuIM6Rz4XPhM+MIM68z4DOv8+BzrXOryDOvc6xIM6yzrXOu8+EzrnPjs+DzrXOuSDPhM6/z4XPgiDPh8+Bz4zOvc6/z4XPgiDPhs+Mz4HPhM+Jz4POt8+CIM+Ez4nOvSDPhs6/z4HOvM+Ozr0sIM6xzrvOu86sIM+Az4HOrc+AzrXOuSDOvc6xIM6xz4DOtc69zrXPgc6zzr/PgM6/zrnOt864zrXOrywgzrXOrM69IM+Az4HPjM66zrXOuc+EzrHOuSDOvc6xIM+Hz4HOt8+DzrnOvM6/z4DOv865zrfOuM6/z43OvSBBQ0xNb2R1bGVzIM6zzrnOsSBJVFNNQ29uZmlnSXRlbS0gzrrOsc65IEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICfOoM6/zrnOtc+CIM6zzrXOvc65zrrOrc+CIM+AzrvOt8+Bzr/Phs6/z4HOr861z4IgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+Dz4TOt869IM61z4DOuc66zrXPhs6xzrvOr860zrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnzrrOsc+EzrfOs86/z4HOr86xJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ8+AzrHOs866z4zPg868zrnOvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ868zrXPhM6xz4DOsc+BzrHOs8+JzrPOuc66zq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ8+Az4HOv8+AzrHPgc6xzrPPic6zzrnOus6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICfPgM6xz4HOsc6zz4nOs865zrrPjCc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogNDQsNDUgY20gKDE3LDUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSDOr869z4TPg861z4IgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiA2Niw2OCBjbSAoMjYsMjUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDgwLDAxIGNtICgzMSw1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnzqHOrM+GzrkgMTkgzrnOvc+Ez4PPjs69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogODgsOSBjbSAoMzUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICfOoc6sz4bOuSAyMSDOuc69z4TPg8+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IM6vzr3PhM+DzrXPgiAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJ86hzqzPhs65IDIzIM65zr3PhM+Dz47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgzq/Ovc+Ez4POtc+CICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiDOr869z4TPg861z4IgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IM6vzr3PhM+DzrXPgiAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogOCw4OSBjbSAoMyw1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSDOr869z4TPg861z4IgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IM6vzr3PhM+DzrXPgiAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgzq/Ovc+Ez4POtc+CICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCDOr869z4TPg861z4IgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDE2MCwwMiBjbSAoNjMgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IM6vzr3PhM+DzrXPgiAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDE3MywzNSBjbSAoNjgsMjUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiAxMywzNCBjbSAoNSwyNSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDE4Niw2OSBjbSAoNzMsNSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIM6vzr3PhM+DzrXPgiAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiAyMDAsMDIgY20gKDc4LDc1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiDOr869z4TPg861z4IgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiAyMTMsMzYgY20gKDg0IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyDOr869z4TPg861z4IgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiAyMiwyMyBjbSAoOCw3NSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDI2LDY3IGNtICgxMCw1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDMxLDEyIGNtICgxMiwyNSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCDOr869z4TPg861z4IgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogNDAsMDEgY20gKDE1LDc1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICfOm86/zrPOuc+Dz4TOuc66zq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICfOms6xz4TOsc69zr/OvM6uIM60zrnOtc+FzrjPjc69z4POtc+Jzr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ86UzrnOsc+HzrXOuc+BzrnPg8+Ezq7Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICfOkc69zrHOu86/zrPOuc66z4wgz4TOt867zq3Phs+Jzr3Ovyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ86kz43PgM6/z4Igz4PPhc+DzrrOtc+Fzq7Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ86nz4nPgc63z4TOuc66z4zPhM63z4TOsSDOvM+AzrHPhM6xz4HOr86xz4IgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM68z4DOsc+EzrHPgc6vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ86az4TOr8+BzrnOvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnzpTOuc6xz4PPjc69zrTOtc+DzrcgzrTOuc6xz43Ou86/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICfOms6xz4TOt86zzr/Pgc6vzrEgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICfOp8+Jz4HOt8+EzrnOus+Mz4TOt8+EzrEgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ86nz4nPgc63z4TOuc66z4zPhM63z4TOsSDOsc69zqwgzrrOrM+Bz4TOsSDOs8+BzrHPhs65zrrPjs69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnzpHPgc65zrjOvM+Mz4IgzrrOrM+Bz4TOsc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnzpHOvc6xzrPOvc+Oz4PPhM63z4IgzrrOsc+Bz4TPjs69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ86kz43PgM6/z4IgzrrOrM+Bz4TOsc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICfOoM65z4PPhM6/z4DOv865zrfPhM65zrrOrCDPgM61zrvOsc+Ez47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICfOm86/zrPOuc+DzrzOuc66z4wgz4DOtc67zqzPhM63JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ86azrHPhM63zrPOv8+Bzq/OsSDPgM61zrvOrM+EzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnzqHPhc64zrzPjM+CIM+Bzr/Ou86/zrPOuc6/z40nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ86kzrHPh8+Nz4TOt8+EzrEgz4HOv867zr/Os865zr/PjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnzqDOuc+Dz4TOv8+Azr/Ouc63z4TOuc66zqwgz4XPgM6/zrPPgc6xz4bOrs+CIM66z47OtM65zrrOsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnzqTOt867zq3Phs+Jzr3OvyDPg8+Fzr3OtM65zqzPg866zrXPiM63z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICfOo8+FzrzOss6/z4XOu861z4XPhM65zrrOriDPg8+FzrzPhs+Jzr3Or86xJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICfOlc+AzrnOus6/zrnOvc+Jzr3Or86xJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfOlc+AzrnOus6/zrnOvc+Jzr3Ors+Dz4TOtSDOvM61IM+Ezr/OvSDOtM65zrHOvc6/zrzOrc6xJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnzpTOuc6xz4fOtc6vz4HOuc+DzrcgzrXOvM+Azr/Pgc61z4XOvM6xz4TOv866zrnOss+Jz4TOr8+Jzr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICfOo8+NzrzOss6xz4POtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnzqTPjc+Azr/PgiDPg8+NzrzOss6xz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnzqDOtc+Bzq/Ov860zr/PgiDPg8+NzrzOss6xz4POt8+CIM6xz4DPjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICfOoM61z4HOr86/zrTOv8+CIM+Dz43OvM6yzrHPg863z4Igzq3Pic+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ86Rz4PPjc+BzrzOsc+Ezr8gz4TOt867zq3Phs+Jzr3OvyAoz4TOt867zq3Phs+Jzr3OvyBERUNUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfOnM6/zr3OrM60zrEgzrrPjM+Dz4TOv8+Fz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICfOkc+BzrnOuM68z4zPgiDOsc60zrXOuc+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ86XzrzOtc+Bzr/OvM63zr3Or86xIM60zrfOvM65zr/Phc+BzrPOr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ86gz4HOv8+DzrHPgc68zr/Pg868zq3Ovc6/IM+BzqzPhs65JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIM6az4HOsc+EzrfOvM6tzr3Ovyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLVNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnzpfOvM61z4HOv868zrfOvc6vzrEgz4TOv8+FIM+EzrnOvM6/zrvOv86zzq/Ov8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICfOl868zrXPgc6/zrzOt869zq/OsSDPgM6xz4HOsc6zzrPOtc67zq/Osc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICfOl868zrXPgc6/zrzOt869zq/OsSDPh86/z4HOrs6zzrfPg863z4IgzrXOs86zz43Ot8+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICfOl868zrXPgc6/zrzOt869zq/OsSDOus+FzrrOu86/z4bOv8+Bzq/Osc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfOlc+AzrnPhM+BzrHPgM6tzrbOuc6xIM61z4DOuc+GzqzOvc61zrnOsSDOtc+BzrPOsc+Dzq/Osc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfOoM65z4PPhM6/z4DOv865zrfPhM65zrrOrCDPhc+Azr/Os8+BzrHPhs6uz4IgzrXOs86zz4HOrM+Gz4nOvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ86hzqzPhs65IEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ86gzrnPg8+Ezr/PgM6/zrnOt8+EzrnOus6sIM63zrvOtc66z4TPgc6/zr3Ouc66zr/PjSDPhM6xz4fPhc60z4HOv868zrXOr86/z4UgKM+AzrnPg8+Ezr/PgM6/zrnOt8+EzrnOus6sIFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnzqPPjc68zrLOsc+DzrcgzrXPgc6zzrHPg86vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ86UzrnOtc+NzrjPhc69z4POtyBJUCDPhM6tzrvOv8+Fz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICfOpM6tzrvOv8+CIM+EzrfPgiDPg8+Ezq7Pgc65zr7Ot8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnzpfOvM61z4HOv868zrfOvc6vzrEgzrvOrs6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnzpXOvs+Jz4TOtc+BzrnOus+Mz4Igz4POus67zrfPgc+Mz4IgzrTOr8+DzrrOv8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnzqTOtc6vz4fOv8+CIM+Az4HOv8+Dz4TOsc+Dzq/Osc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICfOkc+Azr/OuM6uzrrOtc+Fz4POtyDOtc69zq3Pgc6zzrXOuc6xz4IgzrzOtSDOuc+Az4TOrM68zrXOvc6/IM+Ez4HOv8+Hz4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICfOoM6xz4HOrM6zzr/Ovc+EzrHPgiDOvM6/z4HPhs6uz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ86jz4XOvM+Gz4nOvc6vzrEgRnJhbmNoaXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnzpPOtc69zrnOus6tz4Igz4DOu863z4HOv8+Gzr/Pgc6vzrXPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ86azqzPgc+EzrXPgiDOs8+BzrHPhs65zrrPjs69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICfOms6sz4HPhM6xIM6zz4HOsc+GzrnOus+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICfOpc67zrnOus+MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnzpzOv869z4TOrc67zr8gz4XOu865zrrOv8+NJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ86SzqzPgc6/z4Igz4XOu865zrrOv8+NJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICfOkc66zr/Phc+Dz4TOuc66zqwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICfOoM+Bz4nPhM+MzrrOv867zrvOvyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICfOlM65zrHPh861zq/Pgc65z4POtyDPhM6xz4XPhM+Mz4TOt8+EzrHPgiDOus6xzrkgz4DPgc+Mz4POss6xz4POt8+CIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICfOkc+BzrnOuM68z4zPgiDOsc+Azr/Os8+BzrHPhs6uz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICfOms+Mz4PPhM6/z4IgzrzOtc+EzrHPhM+Bzr/PgM6uz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfOkc+BzrnOuM68z4zPgiDPhM65zrzOv867zr/Os86vzr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ86gzrvOt866z4TPgc6/zrvPjM6zzrnOvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICfOn864z4zOvc63IExDRCAozp/OuM+Mzr3OtyDPhc6zz4HPjs69IM66z4HPhc+Dz4TOrM67zrvPic69KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnzp/OuM+Mzr3OtyBMRUQgKM60zq/Ov860zr/PgiDOtc66z4DOv868z4DOrs+CIM+Gz4nPhM+Mz4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ86jz4TOsc64zrXPgc+MIM+EzrfOu86tz4bPic69zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnzqbOv8+BzrfPhM+Mz4Igz4XPgM6/zrvOv86zzrnPg8+Ezq7Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ86TzrXPic6zz4HOsc+GzrnOus+MIM+AzrvOrM+Ezr/Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ86jz4TPgc+OzrzOsSAxOiDOps+Fz4POuc66z4wgz4PPhM+Bz47OvM6xJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ86jz4TPgc+OzrzOsSAyOiDOo8+Ez4HPjs68zrEgzrbOtc+Nzr7Ot8+CIM60zrXOtM6/zrzOrc69z4nOvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnzqPPhM+Bz47OvM6xIDM6IM6jz4TPgc+OzrzOsSDOtM65zrrPhM+Nzr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICfOlc+Azq/PgM61zrTOvyAzOiDOlc+Azq/PgM61zrTOvyDOtM65zrrPhM+Nzr/PhSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ86jz4TPgc+OzrzOsSA0OiDOo8+Ez4HPjs68zrEgzrzOtc+EzrHPhs6/z4HOrM+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICfOo8+Ez4HPjs68zrEgNTogzqPPhM+Bz47OvM6xIM+Dz4XOvc+MzrTOv8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ86jz4TPgc+OzrzOsSA2OiDOo8+Ez4HPjs68zrEgz4DOsc+Bzr/Phc+Dzq/Osc+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ86jz4TPgc+OzrzOsSA3OiDOo8+Ez4HPjs68zrEgzrXPhs6xz4HOvM6/zrPOrs+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ86jz4XOvM+Gz4nOvc6vzrEgzrzOr8+DzrjPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ86jz4XOvM+Gz4nOvc6vzrEgzqzOtM61zrnOsc+CIM+Hz4HOrs+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnzprOu861zrnOtM6vIM6szrTOtc65zrHPgiDPh8+Bzq7Pg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnzqTPjc+Azr/PgiDOrM60zrXOuc6xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ86gzrXPgc6vzr/OtM6/z4IgzqzOtM61zrnOsc+CIM6xz4DPjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ86gzrXPgc6vzr/OtM6/z4IgzqzOtM61zrnOsc+CIM68zq3Ph8+BzrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ86cz4DOsc+EzrHPgc6vzrEgz4bPic+Dz4bOv8+BzrnOus6/z40gz4POuc60zq7Pgc6/z4UgzrvOuc64zq/Ov8+FIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnzpzPgM6xz4TOsc+Bzq/OsSDOuc+Mzr3PhM+Jzr0gzrvOuc64zq/Ov8+FIChMaS1pb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnzqPPjc68zrLOsc+DzrcgzrTOsc69zrXOr86/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ86Sz4HOr8+DzrrOtc+EzrHOuSDPg8+EzrfOvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICfOk861z4nOs8+BzrHPhs65zrrPjCDOvM6uzrrOv8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnzprOsc+EzrHPg866zrXPhc6xz4PPhM6uz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ86czq3Os865z4PPhM63IM+Hz4nPgc63z4TOuc66z4zPhM63z4TOsSDPhs6/z4HPhM6vzr/PhSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnzpzOvc6uzrzOtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ86kz43PgM6/z4IgzrzOvc6uzrzOt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM66zrnOvc63z4TOv8+NIM+EzrfOu861z4bPjs69zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICfOms65zr3Ot8+Ez4wvzrXOvc+Dz4nOvM6xz4TPic68zq3Ovc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnzpzOv869z4TOrc67zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICfOoM61z4HOuc6zz4HOsc+Gzq4gzrzOv869z4TOrc67zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICfOkc69zqzOu8+Fz4POtyDOv864z4zOvc63z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnzpzOrc6zzrXOuM6/z4Igzr/OuM+Mzr3Ot8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnzqDOv869z4TOr866zrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ86Uzq/Ous+Ez4XOvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfOoM67zrfPgc6/z4bOv8+Bzq/Otc+CIM60zrnOus+Ez43Ov8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICfOoM67zrfPgc6/z4bOv8+Bzq/Otc+CIM60zrnOus+Ez43Ov8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICfOlc+Azq/PgM61zrTOvyDOtM65zrrPhM+Nzr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ86cz4DOsc+EzrHPgc6vzrEgzr3Ouc66zrXOu86vzr/PhS3Ous6xzrTOvM6vzr/PhSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICfOnM+AzrHPhM6xz4HOr86xIM69zrnOus61zrvOr86/z4UtzrzOtc+EzrHOu867zrnOus6/z40gz4XOtM+BzrnOtM6vzr/PhSAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnzqPPhc68z4bPic69zq/OsSDOvM63IM6xz4DOv866zqzOu8+Fz4jOt8+CIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnzqPOt868zrXOuc+JzrzOsc+EzqzPgc65zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICfOkc+BzrnOuM68z4zPgiBDUFVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ86Rz4HOuc64zrzPjM+CIM68zr/Ovc6szrTPic69IFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICfOkc+BzrnOuM68z4zPgiDOus6xz4HPhM+Ozr0gzrPPgc6xz4bOuc66z47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnzp/OuM+Mzr3OtyBPTEVEICjOv8+BzrPOsc69zrnOus6uIM60zq/Ov860zr/PgiDOtc66z4DOv868z4DOrs+CIM+Gz4nPhM+Mz4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ86bzrXOuc+Ezr/Phc+BzrPOuc66z4wgzrrPjM+Dz4TOv8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM+AzrHPgc6xzrPOs861zrvOr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfOhs67zrvOsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnzojOvs6/zrTOv865JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ86jz4XOvM+Gz4nOvc6vzrEgzrXPhM6xzrnPgc65zrrOrs+CIM+Dz4fOrc+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM+EzrfOu861z4bPjs69zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnzqTPjc+Azr/PgiDPhM63zrvOtc+Gz47Ovc6/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfOps+Fz4POuc66zr/OryDPgM+Fz4HOrs69zrXPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ86gzrHPgc6szrTOv8+DzrcgzrnPg8+Hz43Ov8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnzpHOs86/z4HOrM+Dz4TOt866zrUgz4PPhM6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICfOks6szrjOv8+CIM+BzrHPhs65zr/PjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ86czr/Ovc6szrTOtc+CIFJhY2sgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfOlM+JzrzOrM+EzrnOvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ86azqzPgc+EzrEgU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnzqDOuc+Dz4TOv8+Azr/Ouc63z4TOuc66zqwgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ86jz43OvM6yzrHPg863IM+Az47Ou863z4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ86Uzr/Pgc+Fz4bOv8+BzrnOus+MIM+EzrfOu86tz4bPic69zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnzqPPhs+BzrHOs865z4POvM6tzr3OtyDOvM+AzrHPhM6xz4HOr86xIM68zr/Ou8+NzrLOtM6/z4Utzr/Ovs6tzr/PgiAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ86Rz43Ovs+Jzr0gzrHPgc65zrjOvM+Mz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnzpvOv86zzrnPg868zrnOus+MIM60zrnOsc66zr/OvM65z4PPhM6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnzqPPhc68z4bPic69zq/OsSDPgM6xz4HOv8+Hzq7PgiDPhc+AzrfPgc61z4POuc+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfOlc+EzrnOus6tz4TOsSDPhc+AzrfPgc61z4POr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnzqTPjc+Azr/PgiDPhc+Azr/OtM6/z4fOrs+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnzpvOv86zzrnPg868zrnOus+MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnzp/OvM65zrvOt8+Ezq3Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfOms6xzr3Ov869zrnOus6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICfOlM65zrXPjc64z4XOvc+DzrcgSVAgzq3Ovc6xz4HOvs63z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ86Rz4DOv864zq7Ous61z4XPg863JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnzpTOuc6xzrzOrc+BzrnPg868zrEgzrHPgM6/zrjOrs66zrXPhc+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ86Yz4XOs86xz4TPgc65zrrOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnzqDOtc+Bzq/Ou863z4jOtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ86bzrXPgM+Ez4zPgiDPgM61zrvOrM+EzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnzp3Ors68zrHPhM6xJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ86jz4XOvc6/zrvOuc66zq4gzrzOvc6uzrzOtyBSQU0gzrrOrM+Bz4TOsc+CIM6zz4HOsc+GzrnOus+Ozr0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ86jz4XOvc6/zrvOuc66zq4gzrzOvc6uzrzOtyBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnzp/OuM+Mzr3OtyDOsc+Gzq7Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ86gz43Pgc6zzr/Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnzpTOuc6xzr3Ov868zq3Osc+CIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ86RzrrOv8+Fz4PPhM65zrrOrCBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICfOpM63zrvOrc+Gz4nOvc6/IFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/en_CA_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVuX0NBX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lcmFsIG9wZXJhdGlvbiBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWcgSXRlbSBNYW5hZ2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NoYW5nZSByb2xlIGRlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgSXRlbSBSb2xlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciBmb3IgQ2xhc3Nlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnSW5jaWRlbnQgc3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnTGluayB0byBhbm90aGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ05ldHdvcmsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzaW9uIE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRGVwbG95bWVudCBTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0luY2lkZW50IFN0YXRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0b3J5IENvbnRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnWm9vbSB2aWV3JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnUnVuIFNlYXJjaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICdBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0RlcHRoIExldmVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbSBJbi9PdXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnTGFzdCBjaGFuZ2VkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ0xhc3QgY2hhbmdlZCBieSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ1lvdXIgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQ29uZmlnSXRlbSBTZWFyY2gnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ09iamVjdCBUeXBlJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdOZWVkIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdPdmVydmlldzogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ05vIGFjY2VzcyBpcyBnaXZlbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOZXcgdmVyc2lvbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaW9uICVzIGRlbGV0ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnU3VibmV0IE1hc2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAncHJpbnRlZCBieSAlcyBhdCAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05vIENsYXNzSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05vIFJlc3VsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbm90IGZvdW5kISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdObyB2ZXJzaW9ucyBmb3VuZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXRpb25hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnd2FybmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdObyBwZXJtaXNzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciBpbnZhbGlkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ1Nob3duIGNvbmZpZyBpdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdEZXBsb3ltZW50IFN0YXRlIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0JldHdlZW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFtaWMgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKFZlcnNpb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ0xpbmsgUmVmZXJlbmNpbmcgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaW9uIFN0cmluZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnQ29uZmlnIEl0ZW0gQ2xhc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbm5lZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBhaXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2aWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0L1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBIaWRkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIFNob3duJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnQXNzaWduZWQgQ0lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIFNldHRpbmdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdDb25maWcgSXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0NvbmZpZyBpdGVtIGFkZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdDb25maWcgaXRlbSBlZGl0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdDb25maWcgaXRlbSBoaXN0b3J5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdDb25maWcgaXRlbSBwcmludC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWcgaXRlbSB6b29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0gVHJlZSBWaWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnRGVmaW5pdGlvbiBVcGRhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnRGVwbG95bWVudCBTdGF0ZSBDb2xvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmFtZSBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bWJlciBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ092ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnUGVybWlzc2lvbiBHcm91cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1NlYXJjaCBjb25maWcgaXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNpb24gVHJpZ2dlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWN0aXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWN0aXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWN0aXZlJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS1pbmNoIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLWluY2ggUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMtaW5jaCBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMuNiBpbmNoZXMgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLjUgaW5jaGVzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNS40IGluY2hlcyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LjQgaW5jaGVzICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLjMgaW5jaGVzICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0Ny4yIGluY2hlcyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IGluY2hlcyAoMTcuNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0FjY291bnRpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBZGRyZXNzIEFsbG9jYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmF0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9nIFBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnQXBwbGlhbmNlIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdCYXR0ZXJ5IENhcGFjaXR5IChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnQmF0dGVyeSBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQnVpbGRpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0J1cyBJbnRlcmZhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFUgQ2xhc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0NhcGFjaXR5IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0NhcmQgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnQ2FyZCBSZWFkZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnQ2FyZCBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdDbGllbnQgQ2VydGlmaWNhdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ0NsaWVudCBTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdDbGllbnQgY2F0ZWdvcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnQ2xvY2tyYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdDbG9ja3NwZWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdDb25mZXJlbmNlIFBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnQ29uc3VsdGluZyBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0NvbnRhY3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0NvbnRhY3QgRGlzdHJpYnV0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdDb250YWluZXIgTWFuYWdlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0NvbnRyYWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdDb250cmFjdCBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnQ29udHJhY3QgcGVyaW9kIGZyb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnQ29udHJhY3QgcGVyaW9kIHVudGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdDb3N0IHVuaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdDb3VudCBvZiBsaWNlbnNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnQ3JlYXRpb24gRGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnQ3VzdG9tIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy1TZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdGUgb2YgSW52b2ljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0ZSBvZiBPcmRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0ZSBvZiBXYXJyYW50eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXRlIG9mIHJlbGVhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0VtcGxveW1lbnQgQ29udHJhY3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdFbmQgSVAgQWRkcmVzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0VuZCBvZiBzdXBwb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRXhwaXJ5IERhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0V4dGVybmFsIEhhcmQgRHJpdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdGaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGb3JtIEZhY3Rvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbmNoaXNlIEFncmVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0dlbmVyYWwgSW5mb3JtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdHcmFwaGljcyBDYXJkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhcGhpY3MgY2FyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnSGFyZHdhcmUgTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnSGFyZHdhcmUgV2VpZ2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdIZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAgUHJvdG9jb2wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdJbnZlbnRvcnkgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnSW52ZXJzdG1lbnQgY29zdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdJbnZvaWNlIE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ0tleWJvYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdMYW5kbGluZSBQaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdMYXRpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0xheWVyIDE6IFBoeXNpY2FsIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0xheWVyIDI6IERhdGEgTGluayBMYXllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnTGF5ZXIgMzogTmV0d29yayBMYXllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdMYXllciA1OiBTZXNzaW9uIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0xlYXNlIEFncmVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpY2Vuc2UgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbnNlIEtleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdMaWNlbnNlIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0xpY2Vuc2UgcGVyaW9kIGZyb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaWNlbnNlIHBlcmlvZCB1bnRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0xvYW4gQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdMb2NhdGVkIGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xvbmdpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ01hbnVmYWN0dXJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW1vcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdNZW1vcnkgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpbGUgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsZS9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTW9kZWwgRGVzY3JpcHRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnTW9uaXRvciBSZXNvbHV0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ01vbml0b3IgU2l6ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ01vdXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdOZXR3b3JrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ05ldHdvcmsgSW5mbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnTmV0d29yayBJbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnTmV0d29yayBMYXllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTm90ZWJvb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdOdW1iZXIgb2YgQ1BVcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdOdW1iZXIgb2YgUkFNIG1vZHVsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ09wZXJhdGluZyBjb3N0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdPcmRlciBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdPdGhlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnT3V0cHV0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdQaG9uZSBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1Bob25lIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdQaHlzaWNhbCBDb3Jlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1Bvd2VyIERlbGl2ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnUHVyY2hhc2VkIGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdSYWNrIERlcHRoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnUmFjayBVbml0cyAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1Jvb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0gQ2FyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMgQ2VydGlmaWNhdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnU2FsZXMgQ29udHJhY3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWxsaXRlIFBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ1NlcmlhbG51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTZXJ2ZXIgU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTZXJ2aWNlIEFncmVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpY2UgVGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1NvY2tldCBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdTcGVha2Vycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1N0YXJ0IElQIEFkZHJlc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1N0b3JhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdTdG9yYWdlIFBhcnRpdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ1N1YnNpZGlhcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1N1bW1hcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUaGluIENsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnVGhyZWFkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnVG90YWwgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ1RvdWNoc2NyZWVuIE1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3dlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCIEh1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSIEhlYWRzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUCBQaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/en_GB_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVuX0dCX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lcmFsIG9wZXJhdGlvbiBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWcgSXRlbSBNYW5hZ2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NoYW5nZSByb2xlIGRlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgSXRlbSBSb2xlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciBmb3IgQ2xhc3Nlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnRGVwbG95bWVudCBzdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdMaW5rIHRvIGFub3RoZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnVmVyc2lvbiBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0RlcGxveW1lbnQgU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVudCBTdGF0ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yeSBDb250ZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDcmVhdGV0aW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1pvb20gdmlldyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgSXRlbXMgcGVyIHBhZ2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdSdW4gU2VhcmNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IGZvciBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnRGVwdGggTGV2ZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tIEluL091dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdMYXN0IGNoYW5nZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTGFzdCBjaGFuZ2VkIGJ5JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnWW91ciBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtIFNlYXJjaCc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnT2JqZWN0IFR5cGUnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0ZXIgYnkgdHlwZSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdObyBhY2Nlc3MgaXMgZ2l2ZW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTmV3IHZlcnNpb24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb24gJXMgZGVsZXRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAncHJpbnRlZCBieSAlcyBhdCAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbmNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnSW52YWxpZCBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05vIENsYXNzSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05vIFJlc3VsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBub3QgZm91bmQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05vIHZlcnNpb25zIGZvdW5kISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhdGlvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICd3YXJuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ05vIFBlcm1pc3Npb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdGVyIGludmFsaWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdTZWFyY2ggcGFyYW1zIGludmFsaWQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnU2hvd24gY29uZmlnIGl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ0RlcGxveW1lbnQgU3RhdGUgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnQmV0d2Vlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pYyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpYyAoVmVyc2lvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnTGluayBSZWZlcmVuY2luZyBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICdJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpb24gU3RyaW5nJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0V4cGlyZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdNYWludGVuYW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFubmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlcGFpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0aXJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIEhpZGRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gU2hvd24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdBc3NpZ25lZCBDSXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIgU2V0dGluZ3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0NvbmZpZyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQ29uZmlnIGl0ZW0gYWRkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0NvbmZpZyBpdGVtIGVkaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0NvbmZpZyBpdGVtIGhpc3RvcnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NvbmZpZyBpdGVtIHByaW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZyBpdGVtIHpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbSBUcmVlIFZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0RlZmluaXRpb24gVXBkYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnRGVwbG95bWVudCBTdGF0ZSBDb2xvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmFtZSBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bWJlciBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ092ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9ndWUgYXR0cmlidXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdQZXJtaXNzaW9uIEdyb3VwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcnNpb25JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNpb24gVHJpZ2dlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWN0aXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWN0aXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWN0aXZlJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS1pbmNoIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLWluY2ggUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMtaW5jaCBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMuNiBpbmNoZXMgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLjUgaW5jaGVzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNS40IGluY2hlcyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LjQgaW5jaGVzICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLjMgaW5jaGVzICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0Ny4yIGluY2hlcyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IGluY2hlcyAoMTcuNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0FjY291bnRpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBZGRyZXNzIEFsbG9jYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmF0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9nIFBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnQXBwbGlhbmNlIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdCYXR0ZXJ5IENhcGFjaXR5IChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnQmF0dGVyeSBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQnVpbGRpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0J1cyBJbnRlcmZhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFUgQ2xhc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0NhcGFjaXR5IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0NhcmQgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnQ2FyZCBSZWFkZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnQ2FyZCBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdDbGllbnQgQ2VydGlmaWNhdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ0NsaWVudCBTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdDbGllbnQgY2F0ZWdvcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnQ2xvY2tyYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdDbG9ja3NwZWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdDb25mZXJlbmNlIFBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnQ29uc3VsdGluZyBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0NvbnRhY3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0NvbnRhY3QgRGlzdHJpYnV0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdDb250YWluZXIgTWFuYWdlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0NvbnRyYWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdDb250cmFjdCBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnQ29udHJhY3QgcGVyaW9kIGZyb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnQ29udHJhY3QgcGVyaW9kIHVudGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdDb3N0IHVuaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdDb3VudCBvZiBsaWNlbnNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnQ3JlYXRpb24gRGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnQ3VzdG9tIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy1TZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdGUgb2YgSW52b2ljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0ZSBvZiBPcmRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0ZSBvZiBXYXJyYW50eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXRlIG9mIHJlbGVhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0VtcGxveW1lbnQgQ29udHJhY3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdFbmQgSVAgQWRkcmVzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0VuZCBvZiBzdXBwb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRXhwaXJ5IERhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0V4dGVybmFsIEhhcmQgRHJpdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdGaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGb3JtIEZhY3Rvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbmNoaXNlIEFncmVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0dlbmVyYWwgSW5mb3JtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdHcmFwaGljcyBDYXJkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhcGhpY3MgY2FyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnSGFyZHdhcmUgTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnSGFyZHdhcmUgV2VpZ2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdIZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAgUHJvdG9jb2wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdJbnZlbnRvcnkgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnSW52ZXJzdG1lbnQgY29zdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdJbnZvaWNlIE51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ0tleWJvYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdMYW5kbGluZSBQaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdMYXRpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0xheWVyIDE6IFBoeXNpY2FsIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0xheWVyIDI6IERhdGEgTGluayBMYXllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnTGF5ZXIgMzogTmV0d29yayBMYXllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdMYXllciA1OiBTZXNzaW9uIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0xlYXNlIEFncmVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpY2Vuc2UgQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbnNlIEtleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdMaWNlbnNlIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0xpY2Vuc2UgcGVyaW9kIGZyb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaWNlbnNlIHBlcmlvZCB1bnRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0xvYW4gQWdyZWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdMb2NhdGVkIGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xvbmdpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ01hbnVmYWN0dXJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW1vcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdNZW1vcnkgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpbGUgTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsZS9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTW9kZWwgRGVzY3JpcHRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnTW9uaXRvciBSZXNvbHV0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ01vbml0b3IgU2l6ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ01vdXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdOZXR3b3JrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ05ldHdvcmsgSW5mbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnTmV0d29yayBJbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnTmV0d29yayBMYXllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTm90ZWJvb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdOdW1iZXIgb2YgQ1BVcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdOdW1iZXIgb2YgUkFNIG1vZHVsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ09wZXJhdGluZyBjb3N0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdPcmRlciBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdPdGhlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnT3V0cHV0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdQaG9uZSBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1Bob25lIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdQaHlzaWNhbCBDb3Jlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1Bvd2VyIERlbGl2ZXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnUHVyY2hhc2VkIGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdSYWNrIERlcHRoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnUmFjayBVbml0cyAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1Jvb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0gQ2FyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMgQ2VydGlmaWNhdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnU2FsZXMgQ29udHJhY3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWxsaXRlIFBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ1NlcmlhbG51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTZXJ2ZXIgU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTZXJ2aWNlIEFncmVlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpY2UgVGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1NvY2tldCBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdTcGVha2Vycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnU3RhcnQgSVAgQWRkcmVzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnU3RvcmFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1N0b3JhZ2UgUGFydGl0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnU3Vic2lkaWFyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnU3VtbWFyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1RoaW4gQ2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdUaHJlYWRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdUb3RhbCBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnVG91Y2hzY3JlZW4gTW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1Rvd2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0IgSHViJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIgSGVhZHNldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQIFBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJjYW0nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/es_CO_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX0NPX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRvcyBnZW5lcmFsZXMgZGUgZnVuY2lvbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0FqdXN0ZXMgZGUgbG9zIGRhdG9zIGRlIHNvbGljaXR1ZCBlbnRyYW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdDb25maWd1cmFjacOzbiBkZSBsb3MgZGF0b3MgZGUgcmVzcHVlc3RhIHNhbGllbnRlcyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGUgY2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGVsIHJvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhcXVldGVzIGRlIGNsYXNlcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdBcXXDrSBwdWVkZXMgaW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkltcG9ydCBxdWUgbXVlc3RyYW4gbnVlc3Ryb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG3DoXMgaGFiaXR1YWxlcy4gVGVuZ2EgZW4gY3VlbnRhIHF1ZSBwdWVkZSBzZXIgbmVjZXNhcmlhIGFsZ3VuYSBjb25maWd1cmFjacOzbiBhZGljaW9uYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ0FjdHVhbGl6YXIgbGFzIGVudGlkYWRlcyBleGlzdGVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc2UgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0NvbmZpZyBJdGVtIFJvbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgRWxlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdHJvIHBvciBjbGFzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnU2VsZWNjaW9uZSB1bmEgY2xhc2UgZGUgbGEgbGlzdGEgcGFyYSBjcmVhciB1biBudWV2byBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0FjY2nDs24gbWFzaXZhIElUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdFc3RhZG8gZGVsIEluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdFbmxhY2UgYSBvdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOw7ptZXJvIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIG5vIHbDoWxpZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0VsIG7Dum1lcm8gZGUgb3RybyBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBjb24gZWwgcXVlIGVubGF6YXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnUmVkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIG5vbWJyZSBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdDcmVhdGV0aW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnTsO6bWVybyBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTsO6bWVybyBkZSB2ZXJzacOzbiBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTsO6bWVybyBkZSB2ZXJzacOzbiB5YSBlc3TDoSBlbiB1c28gcG9yIGVsIENvbmZpZ0l0ZW1zIGNvbiBlbCBzaWd1aWVudGUgbsO6bWVybyAocyk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdFc3RhZG8gZGUgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgSW5jaWRlbnRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpYSBkZSBDb25maWcgSXRlbTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yaWEgQ29udGVuaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDcmVhdGV0aW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Zpc3RhIGRldGFsbGFkYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgRWxlbWVudG9zIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdObyBzZSBoYW4gZW5jb250cmFkbyBkYXRvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWNjaW9uZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnRWplY3V0YXIgYsO6c3F1ZWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ8K/QnVzY2FyIHRhbWJpw6luIGVuIHZlcnNpb25lcyBhbnRlcmlvcmVzPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHBhcmEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ05pdmVsIGRlIHByb2Z1bmRpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnQWNlcmNhci9BbGVqYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnwqFOaXZlbCBtw6F4aW1vIGRlIGVubGFjZXMgYWxjYW56YWRvIHBhcmEgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdEZW1vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGFjdHVhbCBkZWwgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGFjdHVhbCBkZWwgaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ8OabHRpbW8gY2FtYmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ8OabHRpbW8gY2FtYmlvIHBvcic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ1N1cyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIENvbmZpZ0l0ZW0nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ1RpcG8gZGUgb2JqZXRvJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmlsdHJhciBwb3IgdGlwbyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NlIGltcG9ydGFyw6FuIGxhcyBzaWd1aWVudGVzIGNsYXNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdTZSBpbXBvcnRhcsOhbiBsYXMgc2lndWllbnRlcyBmdW5jaW9uZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnVGVuZ2EgZW4gY3VlbnRhIHF1ZSB0YW1iacOpbiBzZSBjcmVhcsOhbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgeSBsYXMgY2xhc2VzIEdlbmVyYWxDYXRhbG9nIGNvcnJlc3BvbmRpZW50ZXMgeSBxdWUgbm8gc2UgZWxpbWluYXLDoW4gYXV0b23DoXRpY2FtZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfCv1F1aWVyZXMgY29udGludWFyPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfCoU5lY2VzaXRhIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdMYSBkZWZpbmljacOzbiBubyBlcyB1biBoYXNoIFlBTUwgdsOhbGlkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdWaXNpw7NuIGdlbmVyYWw6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBoYSBpbmRpY2FkbyBuaW5nw7puIENvbmZpZ0l0ZW1JRC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdOZWNlc2l0YSBhbCBtZW5vcyB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBzZWxlY2Npb25hZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnTm8gdGllbmUgYWNjZXNvIGRlIGVzY3JpdHVyYSBhIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs246ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICfCoU5vIHNlIGhhIGRlZmluaWRvIGxhIGNsYXNlICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnRWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gIiVzIiBubyBzZSBlbmN1ZW50cmEgZW4gbGEgYmFzZSBkZSBkYXRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfCoU5vIHNlIGhhIHBvZGlkbyBib3JyYXIgZWwgY29uZmlnaXRlbSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ8KhTm8gc2UgaGEgZW5jb250cmFkbyBuaW5ndW5hIHZlcnNpw7NuIHBhcmEgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBpbmRpY2EgbmluZ8O6biBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG8gQ2xhc3NJRC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0RlZmluZSBxdcOpIHRpcG8gZGUgdGlja2V0IHB1ZWRlIGFmZWN0YXIgYWwgZXN0YWRvIGRlIHVuIENJIHZpbmN1bGFkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBoaXN0b3JpYWwsIMKhbm8gc2UgZGEgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05vIHB1ZWRvIG1vc3RyYXIgZWwgaGlzdG9yaWFsLCBubyB0ZW5nbyBkZXJlY2hvcyBkZSBhY2Nlc28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOdWV2byBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOdWV2YSB2ZXJzacOzbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUgYWN0dWFsaXphZG8gKG51ZXZvPSVzLCBhbnRpZ3VvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdFc3RhZG8gZGVsIGluY2lkZW50ZSBhY3R1YWxpemFkbyAobnVldm89JXMsIGFudGlndW89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIGVsaW1pbmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0VubGFjZSBhICVzICh0eXBlPSVzKSBhw7FhZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnRW5sYWNlIGEgJXMgKHR5cGU9JXMpIGVsaW1pbmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnRGVmaW5pY2nDs24gZGUgQ29uZmlnSXRlbSBhY3R1YWxpemFkYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTm9tYnJlIGFjdHVhbGl6YWRvIChudWV2bz0lcywgYW50aWd1bz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0byAlcyBhY3R1YWxpemFkbyBkZSAiJXMiIGEgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzacOzbiAlcyBlbGltaW5hZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaW5kaWNhIG5pbmfDum4gQ29uZmlnSXRlbUlEIG5pIFZlcnNpb25JRC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiwgbm8gc2UgaGFuIGNvbmNlZGlkbyBkZXJlY2hvcyBkZSBhY2Nlc28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIG5vIHNlIGVuY3VlbnRyYSBlbiBsYSBiYXNlIGRlIGRhdG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnRWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2ltcHJlc28gcG9yICVzIGVuICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnwqFDbGFzc0lEIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBpbmRpY2EgbmluZ8O6biBDbGFzc0lELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ05vIHNlIGhhbiBjb25jZWRpZG8gZGVyZWNob3MgZGUgYWNjZXNvIHBhcmEgZXN0YSBjbGFzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ8KhU2luIHJlc3VsdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWd1cmFyIHJlc3VsdGFkb3MgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50bywgwqFubyBzZSBkYW4gZGVyZWNob3MgZGUgYWNjZXNvIHBhcmEgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnwqFDb25maWdJdGVtIG5vIGVuY29udHJhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIHZlcnNpb25lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYWNpb25hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnYWR2ZXJ0ZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIGVzdGFkbyBkZSBkZXNwbGllZ3VlIGRlIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdFbCBlc3RhZG8gZGVsIGluY2lkZW50ZSBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTm8gdGllbmUgcGVybWlzb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ8KhRmlsdHJvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcsOhbWV0cm9zIGRlIGLDunNxdWVkYSBpbnbDoWxpZG9zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnRWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRlIGVzdGFkbyBkZSBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0VzdGFkbyBhY3R1YWwgZGVsIGluY2lkZW50ZSBUaXBvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0VudHJlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmljY2lvbmVzIGRlIGNsYXNlIHBhcmEgZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgdW5hIG8gbcOhcyBjbGFzZXMgcGFyYSByZXN0cmluZ2lyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWNjaW9uZXMgZGUgY2xhc2UgcGFyYSBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgdW5hIG8gbcOhcyBjbGFzZXMgcGFyYSByZXN0cmluZ2lyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW7DoW1pY28gKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdFc3TDoXRpY2EgKFZlcnNpw7NuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXBvIGRlIHJlZmVyZW5jaWEgZGUgZW5sYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ1NpIGVzdGUgZW5sYWNlIHNlIGFwbGljYSBhbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBvIGEgbGEgdmVyc2nDs24gZXN0w6F0aWNhIGRlbCBvYmpldG8gZGUgcmVmZXJlbmNpYS4gRWwgY8OhbGN1bG8gZGVsIGVzdGFkbyBhY3R1YWwgZGVsIGluY2lkZW50ZSBzw7NsbyBzZSByZWFsaXphIGVuIGxvcyBlbmxhY2VzIGRpbsOhbWljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU2VsZWNjaW9uZSBlbCBhdHJpYnV0byBwb3IgZWwgcXVlIHNlIGJ1c2NhcsOhbiBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnTGEgZXN0cnVjdHVyYSBiYXNlIG5vIGVzIHbDoWxpZGEuIFBvciBmYXZvciwgcHJvcG9yY2lvbmUgdW4gaGFzaCBjb24gZGF0b3MgZW4gZm9ybWF0byBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0VzIG5lY2VzYXJpbyBjb21lbnphciBsYSBjYWRlbmEgWUFNTCBjb24gXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTm8gc2UgaGEgcG9kaWRvIHB1cmdhciBsYSB0YWJsYSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdObyBzZSBoYW4gZW5jb250cmFkbyBjYW1wb3MgZGluw6FtaWNvcyByZWxldmFudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTm8gc2UgaGEgcG9kaWRvIGluc2VydGFyIGVuIGxhIHRhYmxhIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW5zZXJ0YWRhcyAwIGZpbGFzIGVuIGxhIHRhYmxhIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdOw7ptZXJvIG3DoXhpbW8gZGUgdW4gZWxlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnSW1wb3J0YXIvZXhwb3J0YXIgYXJjaGl2b3MgYWRqdW50b3MgKGNvbW8gw7psdGltYXMgZW50cmFkYXMgcG9yIGzDrW5lYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzacOzbiBDYWRlbmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJyb3IgYWwgc2luY3Jvbml6YXIgbGFzIGRlZmluaWNpb25lcy4gUG9yIGZhdm9yLCBjb21wcnVlYmUgZWwgcmVnaXN0cm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVGllbmUgZGVmaW5pY2lvbmVzIGRlIElUU01Db25maWdJdGVtIHF1ZSBubyBlc3TDoW4gc2luY3Jvbml6YWRhcy4gRGVzcGxpZWd1ZSBsb3MgY2FtYmlvcyBlbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgZGUgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdDYWR1Y2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnRlbmltaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5pZmljYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlcGFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0aXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnQ29uc3VsdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1BydWViYXMvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1Zpc2nDs24gZ2VuZXJhbCB5IGNvbmZpcm1hY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0YXIgY2xhc2VzL3JvbGVzIHkgc3VzIGNhbXBvcyByZWxhY2lvbmFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdTZSBoYSBwcm9kdWNpZG8gdW4gZXJyb3IgZHVyYW50ZSBsYSBpbXBvcnRhY2nDs24gZGUgbGEgY2xhc2UuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBPY3VsdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIFNlIG11ZXN0cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgY29uZGljaW9uZXMgZGUgYsO6c3F1ZWRhIGV4dGVuZGlkYXMgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBDb24gZXN0YSBmdW5jacOzbiBwdWVkZSBidXNjYXIsIHBvciBlamVtcGxvLCBlbCBub21icmUgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIGNvbmRpY2lvbmVzIGNvbW8gIigqY2xhdmUxKiYmKmNsYXZlMiopIiBvICIoKmNsYXZlMSp8fCpjbGF2ZTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgYW1wbGlhciBsYXMgY29uZGljaW9uZXMgZGUgYsO6c3F1ZWRhIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4gQ29uIGVzdGEgZnVuY2nDs24gcHVlZGUgYnVzY2FyLCBwb3IgZWplbXBsbywgZWwgbm9tYnJlIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBjb24gZXN0ZSB0aXBvIGRlIGNvbmRpY2lvbmVzIGNvbW8gIigqY2xhdmUxKiYmKmNsYXZlMiopIiBvICIoKmNsYXZlMSp8fCpjbGF2ZTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0lDIGFzaWduYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnSUMgYXNpZ25hZG9zIGEgbGEgZW1wcmVzYSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnQ0lzIGFzaWduYWRvcyBhbCB1c3VhcmlvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NvbmZpZ3VyYWNpw7NuIGRlIGxhIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0J1c2NhIHVuIG5vbWJyZSDDum5pY28gc8OzbG8gZGVudHJvIGRlIGxhIG1pc21hIGNsYXNlIGRlIENvbmZpZ0l0ZW0gKFwnY2xhc3NcJykgbyBnbG9iYWxtZW50ZSAoXCdnbG9iYWxcJyksIGxvIHF1ZSBzaWduaWZpY2EgcXVlIGNhZGEgQ29uZmlnSXRlbSBleGlzdGVudGUgc2UgdGllbmUgZW4gY3VlbnRhIGEgbGEgaG9yYSBkZSBidXNjYXIgZHVwbGljYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ0VsaWphIHVuIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVuIGVzcXVlbWEgZGUgbm9tYnJlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ0VsaWphIHVuIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVuIGVzcXVlbWEgbnVtw6lyaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdFbGlqYSB1biBtw7NkdWxvIHBhcmEgYXBsaWNhciB1biBlc3F1ZW1hIGRlIGNhZGVuYXMgZGUgdmVyc2lvbmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ0VsaWphIGF0cmlidXRvcyBwYXJhIGFjdGl2YXIgbGEgY3JlYWNpw7NuIGRlIHVuYSBudWV2YSB2ZXJzacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnRWxpamEgbGFzIGNhdGVnb3LDrWFzIHF1ZSBkZXNlYSBhc2lnbmFyIGEgZXN0YSBjbGFzZSBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgY29sdW1uYSBwYXJhIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2x1bW5hcyBxdWUgc2UgcHVlZGVuIGZpbHRyYXIgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gTm90YTogU29sbyBzZSBwZXJtaXRlbiBhdHJpYnV0b3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHkgY2FtcG9zIGRpbsOhbWljb3MgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0VsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQ29uZmlnIGl0ZW0gYWRkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0VkaXRhciBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBwZXJtaXRlIGVsIHJlZ2lzdHJvIGVuIGVsIGhpc3RvcmlhbCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBhY3R1YWxpemEgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBhIHN1IGRlZmluaWNpw7NuIGFjdHVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0b3JpYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdDb25maWcgaXRlbSBwcmludC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWd1cmFyIHpvb20gZGUgZWxlbWVudG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1Zpc3RhIGVuIMOhcmJvbCBkZSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnTG9zIENvbmZpZ0l0ZW1zIGRlIGxhcyBzaWd1aWVudGVzIGNsYXNlcyBubyBzZSBhbG1hY2VuYXLDoW4gZW4gZWwgc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGVzdG8gYSBsb3MgQ0lzIGV4aXN0ZW50ZXMsIGxhIG1pZ3JhY2nDs24gZGVsIENJIHRpZW5lIHF1ZSBzZXIgZWplY3V0YWRhIGEgdHJhdsOpcyBkZSBsYSBjb25zb2xhLCBkZXNwdcOpcyBkZSBjYW1iaWFyIGVzdGEgb3BjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnTG9zIENvbmZpZ0l0ZW1zIGNvbiBsb3Mgc2lndWllbnRlcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgbm8gc2UgYWxtYWNlbmFyw6FuIGVuIGVsIHNlcnZpZG9yIEVsYXN0aWNzZWFyY2guIFBhcmEgYXBsaWNhciBlc3RvIGEgbG9zIENJcyBleGlzdGVudGVzLCBsYSBtaWdyYWNpw7NuIGRlbCBDSSB0aWVuZSBxdWUgc2VyIGVqZWN1dGFkYSBhIHRyYXbDqXMgZGUgbGEgY29uc29sYSwgZGVzcHXDqXMgZGUgY2FtYmlhciBlc3RhIG9wY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0NvbmZpZ3VyYWNpw7NuIEVsZW1lbnRvIEzDrW1pdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYWNpw7NuIEzDrW1pdGUgZGUgZWxlbWVudG9zIHBvciBww6FnaW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmFzZSBkZSBkYXRvcyBkZSBnZXN0acOzbiBkZSBsYSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ03Ds2R1bG8gbWFzaXZvIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gYnVzY2FyIGVucnV0YWRvciBiYWNrZW5kIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NyZWUgeSBnZXN0aW9uZSBsYXMgZGVmaW5pY2lvbmVzIGRlIGxvcyBFbGVtZW50b3MgZGUgQ29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3JlYSBUaWNrZXRzIHBhcmEgQ29uZmlnSXRlbXMgZW4gbW9tZW50b3MgZXNwZWPDrWZpY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdMb3MgY2xpZW50ZXMgcHVlZGVuIHZlciBsYXMgdmVyc2lvbmVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdMb3MgY2xpZW50ZXMgdGllbmVuIGxhIHBvc2liaWxpZGFkIGRlIGNhbWJpYXIgbWFudWFsbWVudGUgZW50cmUgdmVyc2lvbmVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHByZWRldGVybWluYWRvcyBxdWUgc2UgdXRpbGl6YXLDoW4gZW4gZWwgYXRyaWJ1dG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLiBFamVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9YcOxbztJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PcOabHRpbW87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHBvciBkZWZlY3RvIGEgdXRpbGl6YXIgZW4gZWwgYXRyaWJ1dG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGNvbmZpZy4gRWplbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluYSBhY2Npb25lcyBkb25kZSB1biBib3TDs24gZGUgY29uZmlndXJhY2nDs24gZXN0w6kgZGlzcG9uaWJsZSBlbiBlbCB3aWRnZXQgZGUgb2JqZXRvcyB2aW5jdWxhZG9zIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGVqbyIpLiBUZW5nYSBlbiBjdWVudGEgcXVlIGVzdGFzIGFjY2lvbmVzIGRlYmVuIGhhYmVyIHJlZ2lzdHJhZG8gbG9zIHNpZ3VpZW50ZXMgYXJjaGl2b3MgSlMgeSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIHkgQ29yZS5BZ2VudCAuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBlc3F1ZW1hIFRlbXBsYXRlOjpUb29sa2l0IHBhcmEgY2FkZW5hcyBkZSB2ZXJzacOzbi4gU8OzbG8gc2UgdXRpbGl6YSBzaSBWZXJzaW9uIFN0cmluZyBNb2R1bGUgc2UgZXN0YWJsZWNlIGVuIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmUgdW4gY29uanVudG8gZGUgY29uZGljaW9uZXMgYmFqbyBsYXMgY3VhbGVzIHVuIGNsaWVudGUgcHVlZGUgdmVyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLiBMYXMgY29uZGljaW9uZXMgcHVlZGVuIHJlc3RyaW5naXJzZSBvcGNpb25hbG1lbnRlIGEgZGV0ZXJtaW5hZG9zIGdydXBvcyBkZSBjbGllbnRlcy4gRWwgbm9tYnJlIGVzIGVsIMO6bmljbyBhdHJpYnV0byBvYmxpZ2F0b3Jpby4gU2kgbm8gc2UgZXNwZWNpZmljYSBuaW5ndW5hIG90cmEgb3BjacOzbiwgdG9kb3MgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBzZXLDoW4gdmlzaWJsZXMgZW4gZXNhIGNhdGVnb3LDrWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdQcm9waWVkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgcGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIG9idGVuZXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gdXRpbGl6YW5kbyBsYSBJbnRlcmZheiBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBlcm1pc29zIHJlcXVlcmlkb3MgcGFyYSBidXNjYXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gdXRpbGl6YW5kbyBsYSBJbnRlcmZheiBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBlcm1pc29zIHJlcXVlcmlkb3MgcGFyYSBlc3RhYmxlY2VyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIHV0aWxpemFuZG8gbGEgSW50ZXJmYXogR2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmUgdW4gbcOzZHVsbyBkZSB2aXN0YSBnZW5lcmFsIHBhcmEgbW9zdHJhciBsYSB2aXN0YSBwZXF1ZcOxYSBkZSB1bmEgbGlzdGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEZWZpbmUgc2kgbGFzIGV0aXF1ZXRhcyBkZSB0aXBvIGRlIGVubGFjZSBkZWJlbiBtb3N0cmFyc2UgZW4gbGFzIGNvbmV4aW9uZXMgZGUgbG9zIG5vZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5lIGV4cHJlc2lvbmVzIHJlZ3VsYXJlcyBpbmRpdmlkdWFsbWVudGUgcGFyYSBjYWRhIGNsYXNlIENvbmZpZ0l0ZW0gcGFyYSBjb21wcm9iYXIgZWwgbm9tYnJlIENvbmZpZ0l0ZW0geSBtb3N0cmFyIGxvcyBtZW5zYWplcyBkZSBlcnJvciBjb3JyZXNwb25kaWVudGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgZGlzcG9uaWJsZXMgZGUgQ0lzIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGZ1bmNpw7NuIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBjb25zdGFyIGRlIHVuIG5vbWJyZSBkZSBjbGFzZSB5IHVuYSBtYXRyaXogZGUgY2FtcG9zIGRpc3BvbmlibGVzIHBhcmEgbGEgY2xhc2UgY29ycmVzcG9uZGllbnRlLiBMYXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOhbWljb3MgZGViZW4gcmVzcGV0YXIgZWwgZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHByZWRldGVybWluYWRvIHBhcmEgbGEgY2xhc2lmaWNhY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHByZWRldGVybWluYWRvIHBhcmEgbGEgY2xhc2lmaWNhY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwcmVkZXRlcm1pbmFkbyBwYXJhIGxhIGNsYXNpZmljYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgZXN0YSBvcGVyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHByZWRldGVybWluYWRvIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gQXJyaWJhOiBlbCBtw6FzIGFudGlndW8gYXJyaWJhLiBBYmFqbzogZWwgbcOhcyByZWNpZW50ZSBhcnJpYmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcHJlZGV0ZXJtaW5hZG8gZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLiBBcnJpYmE6IGVsIG3DoXMgYW50aWd1byBhcnJpYmEuIEFiYWpvOiBlbCBtw6FzIHJlY2llbnRlIGFycmliYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHByZWRldGVybWluYWRvIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgZXN0YSBvcGVyYWNpw7NuLiBBcnJpYmE6IGVsIG3DoXMgYW50aWd1byBhcnJpYmEuIEFiYWpvOiBlbCBtw6FzIHJlY2llbnRlIGFycmliYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgbW9zdHJhZGFzIHBvciBkZWZlY3RvIGRlIGxvcyBDSXMgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVwZW5kaWVuZG8gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGNvbnNpc3RpciBlbiB1biBub21icmUgZGUgY2xhc2UgeSB1biBhcnJheSBkZSBjYW1wb3MgZGlzcG9uaWJsZXMgcGFyYSBsYSBjbGFzZSBjb3JyZXNwb25kaWVudGUuIExhcyBlbnRyYWRhcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBkZWJlbiByZXNwZXRhciBlbCBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluZSBsYSBwcm9mdW5kaWRhZCBkZSBsYXMgcmVsYWNpb25lcyBxdWUgc2UgbW9zdHJhcsOhbiBwb3IgZGVmZWN0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gbW9zdHJhZG8gcG9yIGRlZmVjdG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gbW9zdHJhZG8gcG9yIGRlZmVjdG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLiBFamVtcGxvOiAiQ2xhdmUiIGRlYmUgdGVuZXIgZWwgbm9tYnJlIGRlbCBDYW1wbyBEaW7DoW1pY28gZW4gZXN0ZSBjYXNvIFwnWFwnLCAiQ29udGVuaWRvIiBkZWJlIHRlbmVyIGVsIHZhbG9yIGRlbCBDYW1wbyBEaW7DoW1pY28gZGVwZW5kaWVuZG8gZGVsIHRpcG8gZGUgQ2FtcG8gRGluw6FtaWNvLCBUZXh0bzogXCdhIHRleHRcJywgRGVzcGxlZ2FibGU6IFwnMVwnLCBGZWNoYS9Ib3JhOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFNlY29uZD01OTtcJyB5IG8gXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5lIGVsIHN1Ym9iamV0byBwb3IgZGVmZWN0byBkZSBsYSBjbGFzZSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIGRpc3BvbmlibGVzIGRlIENJcyBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBmdW5jacOzbiBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgY29uc3RhciBkZSB1biBub21icmUgZGUgY2xhc2UgeSB1bmEgbWF0cml6IGRlIGNhbXBvcyBkaXNwb25pYmxlcyBwYXJhIGxhIGNsYXNlIGNvcnJlc3BvbmRpZW50ZS4gTGFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7DoW1pY29zIGRlYmVuIHJlc3BldGFyIGVsIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGFsdHVyYSBkZWwgY29tcG9uZW50ZSBlZGl0b3IgZGUgdGV4dG8gZW5yaXF1ZWNpZG8gcGFyYSBlc3RhIHBhbnRhbGxhLiBJbnRyb2R1emNhIHVuIG7Dum1lcm8gKHDDrXhlbGVzKSBvIHVuIHZhbG9yIHBvcmNlbnR1YWwgKHJlbGF0aXZvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG7Dum1lcm8gZGUgZmlsYXMgZGVsIGVkaXRvciBkZSBkZWZpbmljaW9uZXMgQ0kgZW4gbGEgaW50ZXJmYXogZGUgYWRtaW5pc3RyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gZGUgbG9zIGVzdGFkb3MgaW5jaWRlbnRlcyBkZSBhbHRvIChwb3IgZWplbXBsbywgY3JpY2l0YWwpIGEgYmFqbyAocG9yIGVqZW1wbG8sIGZ1bmNpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgcmVsZXZhbnRlcyBlbiBsb3MgcXVlIGxvcyB0aWNrZXRzIHZpbmN1bGFkb3MgcHVlZGVuIGFmZWN0YXIgYWwgZXN0YWRvIGRlIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgZGUgbG9zIENJcyBlbiBsYSB2aXN0YSBjb21wbGVqYSBkZSBsYSB0YWJsYSBkZSBlbmxhY2VzIHBhcmEgdG9kYXMgbGFzIGNsYXNlcyBkZSBDSS4gU2kgbm8gaGF5IG5pbmd1bmEgZW50cmFkYSwgc2UgbXVlc3RyYW4gbGFzIGNvbHVtbmFzIHBvciBkZWZlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgZGUgQ0lzIGVuIGxhIHZpc3RhIGNvbXBsZWphIGRlIGxhIHRhYmxhIGRlIGVubGFjZXMsIGRlcGVuZGllbmRvIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBsbGV2YXIgY29tbyBwcmVmaWpvIGVsIG5vbWJyZSBkZSBsYSBjbGFzZSB5IGRvcyBwdW50b3MgZG9ibGVzIChwb3IgZWplbXBsbywgT3JkZW5hZG9yOjopLiBIYXkgYWxndW5vcyBDSS1BdHJpYnV0b3MgcXVlIHNvbiBjb211bmVzIGEgdG9kb3MgbG9zIENJcyAoZWplbXBsbyBwYXJhIGxhIGNsYXNlIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBQYXJhIG1vc3RyYXIgbG9zIEF0cmlidXRvcy1DSSBpbmRpdmlkdWFsZXMgdGFsIHkgY29tbyBzZSBkZWZpbmVuIGVuIGxhIERlZmluaWNpw7NuLUNJLCBzZSBkZWJlIHV0aWxpemFyIGVsIHNpZ3VpZW50ZSBlc3F1ZW1hIChlamVtcGxvIHBhcmEgbGEgY2xhc2UgT3JkZW5hZG9yKTogT3JkZW5hZG9yOjpEaXNjb0R1cm86OjEsIE9yZGVuYWRvcjo6RGlzY29EdXJvOjoxOjpDYXBhY2lkYWQ6OjEsIE9yZGVuYWRvcjo6RGlzY29EdXJvOjoyLCBPcmRlbmFkb3I6OkRpc2NvRHVybzo6Mjo6Q2FwYWNpZGFkOjoxLiBTaSBubyBoYXkgbmluZ3VuYSBlbnRyYWRhIHBhcmEgdW5hIGNsYXNlIENJLCBzZSBtdWVzdHJhbiBsYXMgY29sdW1uYXMgcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgZWxlbWVudG9zIGVzdMOhbiBkaXNwb25pYmxlcyBwYXJhICJBY2Npw7NuIiBlbiBlbCB0ZXJjZXIgbml2ZWwgZGUgbGEgZXN0cnVjdHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIGVuIGVsIHByaW1lciBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIGVuIGVsIHNlZ3VuZG8gbml2ZWwgZGUgbGEgZXN0cnVjdHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgdGlwbyBkZSBlbmxhY2UgKG5vbWJyYWRvIGRlc2RlIGxhIHBlcnNwZWN0aXZhIGRlbCB0aWNrZXQpIHB1ZWRlIGFmZWN0YXIgYWwgZXN0YWRvIGRlIHVuIENJIGVubGF6YWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIHRpcG8gZGUgdGlja2V0IHB1ZWRlIGFmZWN0YXIgYWwgZXN0YWRvIGRlIHVuIENJIHZpbmN1bGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBY3R1YWxpemFjacOzbiBkZSBsYSBkZWZpbmljacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQm9ycmFyIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUgQ29sb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgZGUgY2FtcG9zIGRpbsOhbWljb3MgcXVlIG1hcmNhIGxhcyBkZWZpbmljaW9uZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbW8gbm8gc2luY3Jvbml6YWRhcyBzaSBjYW1iaWFuIGxvcyBjYW1wb3MgZGluw6FtaWNvcyBxdWUgY29udGllbmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGNhbXBvcyBJVFNNIGFkaWNpb25hbGVzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSByZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgZGUgbG9zIENJcyBlbiBsYSB2aXN0YSBjb21wbGVqYSBkZSBsYSB0YWJsYSBkZSBlbmxhY2VzIHBhcmEgdG9kYXMgbGFzIGNsYXNlcyBkZSBDSS4gU2kgbm8gaGF5IG5pbmd1bmEgZW50cmFkYSwgc2UgbXVlc3RyYW4gbGFzIGNvbHVtbmFzIHBvciBkZWZlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWN0aXZhIGxhIGZ1bmNpw7NuIGRlIGFjY2nDs24gbWFzaXZhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBzw7NsbyBwYXJhIGxvcyBncnVwb3MgZGUgbGEgbGlzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0FjdGl2YS9kZXNhY3RpdmEgbGEgZnVuY2lvbmFsaWRhZCBkZSBjb21wcm9iYXIgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIHBhcmEgbm9tYnJlcyDDum5pY29zLiBBbnRlcyBkZSBoYWJpbGl0YXIgZXN0YSBvcGNpw7NuIGRlYmUgY29tcHJvYmFyIHNpIGV4aXN0ZW4gZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBub21icmVzIGR1cGxpY2Fkb3MuIFB1ZWRlIGhhY2VybG8gY29uIGVsIGNvbWFuZG8gZGUgY29uc29sYSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBwYXJhIGVzdGFibGVjZXIgY29uZmlnaXRlbS1zdGF0dXMgZW4gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQ2FtcG9zIGRlbCDDrW5kaWNlIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiwgdXRpbGl6YWRvcyBwYXJhIGxhIGLDunNxdWVkYSBkZSB0ZXh0byBjb21wbGV0by4gTG9zIGNhbXBvcyB0YW1iacOpbiBzZSBhbG1hY2VuYW4sIHBlcm8gbm8gc29uIG9ibGlnYXRvcmlvcyBwYXJhIGxhIGZ1bmNpb25hbGlkYWQgZ2VuZXJhbC4gTGEgaW5jbHVzacOzbiBkZSBhbmV4b3MgcHVlZGUgZGVzYWN0aXZhcnNlIHBvbmllbmRvIGxhIGVudHJhZGEgYSAwIG8gYm9ycsOhbmRvbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdDYW1wb3MgYWxtYWNlbmFkb3MgZW4gZWwgw61uZGljZSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIHNlIHV0aWxpemFuIHBhcmEgb3RyYXMgY29zYXMgYWRlbcOhcyBkZSBsYXMgYsO6c3F1ZWRhcyBkZSB0ZXh0byBjb21wbGV0by4gUGFyYSBsYSBmdW5jaW9uYWxpZGFkIGNvbXBsZXRhIHRvZG9zIGxvcyBjYW1wb3Mgc29uIG9ibGlnYXRvcmlvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdQYXJhIGNhZGEgd2Vic2VydmljZSAoY2xhdmUpIHNlIHB1ZWRlIGRlZmluaXIgdW4gYXJyYXkgZGUgY2xhc2VzICh2YWxvcikgc29icmUgbGFzIHF1ZSBzZSByZXN0cmluZ2UgbGEgaW1wb3J0YWNpw7NuLiBQYXJhIHRvZGFzIGxhcyBjbGFzZXMgZWxlZ2lkYXMsIG8gdG9kYXMgbGFzIGNsYXNlcyBleGlzdGVudGVzLCBsb3MgYXRyaWJ1dG9zIGRlIGlkZW50aWZpY2FjacOzbiB0ZW5kcsOhbiBxdWUgc2VyIGVsZWdpZG9zIGVuIGxhIGNvbmZpZ3VyYWNpw7NuIGRlbCBpbnZvY2Fkb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlbCBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBsYSBjYXBhIGludm9jYWRvcmEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlbCBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBsYSBjYXBhIGludm9jYWRvcmEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RybyBkZWwgbcOzZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBhcmEgbGEgY2FwYSBpbnZvY2Fkb3JhIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnUmVzdW1lbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdFc3RhZG9JbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV5ZSBsb3MgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1eWUgZXN0YWRvcyBkZSBpbmNpZGVuY2lhcyBlbiBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGVsIHJlc3VsdGFkbyBkZSBlc3RhIG9wZXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTcOzZHVsbyBwYXJhIGNvbXByb2JhciBlbCBncnVwbyByZXNwb25zYWJsZSBkZSB1bmEgY2xhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGNvbXByb2JhciBlbCBncnVwbyByZXNwb25zYWJsZSBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNw7NkdWxvIHBhcmEgZ2VuZXJhciBlc3RhZMOtc3RpY2FzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05vbWJyZSBNw7NkdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdNw7NkdWxvIG51bcOpcmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgbW9zdHJhcsOhbiBlbiBjYWRhIHDDoWdpbmEgZGUgdW4gcmVzdWx0YWRvIGRlIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgZGViZW4gbW9zdHJhcnNlIGVuIGNhZGEgcMOhZ2luYSBkZSB1biByZXN1bHRhZG8gZGUgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamV0b3MgYSBidXNjYXIsIGN1w6FudGFzIGVudHJhZGFzIHkgcXXDqSBhdHJpYnV0b3MgbW9zdHJhci4gTG9zIGF0cmlidXRvcyBDb25maWdJdGVtIGRlYmVuIGFsbWFjZW5hcnNlIGV4cGzDrWNpdGFtZW50ZSBhIHRyYXbDqXMgZGUgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzacOzbiBnZW5lcmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBsYXMgY2F0ZWdvcsOtYXMgZGUgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBsb3MgZmlsdHJvcyBkZSBjb2x1bW5hIGRlIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHBlcXVlw7Fvcy4gUG9yIGZhdm9yLCB0ZW5nYSBlbiBjdWVudGE6IGVzdGFibGVjZXIgXCdBY3Rpdm9cJyBhIDAgc8OzbG8gZXZpdGFyw6EgcXVlIGxvcyBhZ2VudGVzIGVkaXRlbiBsb3MgYWp1c3RlcyBkZSBlc3RlIGdydXBvIGVuIHN1cyBwcmVmZXJlbmNpYXMgcGVyc29uYWxlcywgcGVybyBzZWd1aXLDoSBwZXJtaXRpZW5kbyBhIGxvcyBhZG1pbmlzdHJhZG9yZXMgZWRpdGFyIGxvcyBhanVzdGVzIGVuIG5vbWJyZSBkZSBvdHJvIHVzdWFyaW8uIFV0aWxpY2UgXCdQcmVmZXJlbmNlR3JvdXBcJyBwYXJhIGNvbnRyb2xhciBlbiBxdcOpIMOhcmVhIGRlYmVuIG1vc3RyYXJzZSBlc3RvcyBhanVzdGVzIGVuIGxhIGludGVyZmF6IGRlIHVzdWFyaW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIGNvbG9yIGRlIGxvcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBsb3MgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBncnVwb3MgZGUgcGVybWlzb3MgZGUgZWplbXBsbyBkZSBsb3MgYXRyaWJ1dG9zIGdlbmVyYWxlcyBkZWwgY2F0w6Fsb2dvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIGRlbCBtw7NkdWxvIGRlIG5vbWJyZXMgcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIGRlbCBtw7NkdWxvIG51bcOpcmljbyBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxhcyBww6FnaW5hcyAoZW4gbGFzIHF1ZSBzZSBtdWVzdHJhbiBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGVsIG3Ds2R1bG8gZGUgY2FkZW5hcyBkZSB2ZXJzacOzbiBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgbcOzZHVsbyBkZWwga2l0IGRlIGhlcnJhbWllbnRhcyBkZSBwbGFudGlsbGFzIGRlIGNhZGVuYXMgZGUgdmVyc2nDs24gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBlbCBhY3RpdmFkb3IgZGUgdmVyc2nDs24gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdSZWFsaXphIGxhIGFjY2nDs24gY29uZmlndXJhZGEgcGFyYSBjYWRhIGV2ZW50byAoY29tbyBJbnZva2VyKSBwYXJhIGNhZGEgV2Vic2VydmljZSBjb25maWd1cmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0dydXBvIGRlIHBlcm1pc29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBhY2Npw7NuIGRlIGFkanVudGFyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSB2aXN0YSBkZSDDoXJib2wgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGFtcGxpYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGHDsWFkaXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gbWFzaXZhIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBlZGljacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZGVsIGhpc3RvcmlhbCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2FsdGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdEaXNwb3NpdGl2byBkZSBjb3BpYSBkZSBzZWd1cmlkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdCdXNjYXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnRXN0YWJsZXpjYSBhdXRvbcOhdGljYW1lbnRlIGVsIGVzdGFkbyBkZSBpbmNpZGVuY2lhIGRlIHVuIENJIGN1YW5kbyBzZSB2aW5jdWxlIHVuIFRpY2tldCBhIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBlbCBlc3RhZG8gZGUgZGVzcGxpZWd1ZSBlbiBsYSBwYW50YWxsYSBtYXNpdmEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBlbCBlc3RhZG8gZGVsIGluY2lkZW50ZSBlbiBsYSBwYW50YWxsYSBtYXNpdmEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcXVlIHBlcm1pdGUgdmluY3VsYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIG90cm8gb2JqZXRvIGVuIGxhIHZpc3RhIGRlIHpvb20gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBhY2NlZGVyIGFsIGhpc3RvcmlhbCBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIHN1IHZpc3RhIGFtcGxpYWRhIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBlbGltaW5hciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBzdSB2aXN0YSBhbXBsaWFkYSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSB2aXN1YWxpemFyIGxvcyBlbmxhY2VzIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gY29tbyB1bmEgdmlzdGEgZW4gw6FyYm9sLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZHVwbGljYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBkdXBsaWNhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBhbXBsaWFkYSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBlZGl0YXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgYW1wbGlhZGEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgdm9sdmVyIGF0csOhcyBlbiBsYSB2aXN0YSBkZSB6b29tIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgaW1wcmltaXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gc3UgdmlzdGEgYW1wbGlhZGEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFtcGxpYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgZWwgaGlzdG9yaWFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiAob3JkZW4gaW52ZXJzbykgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnTGEgY2F0ZWdvcsOtYSBwb3IgZGVmZWN0byBxdWUgc2UgbXVlc3RyYSwgc2kgbm8gc2Ugc2VsZWNjaW9uYSBuaW5ndW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnRWwgaWRlbnRpZmljYWRvciBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiwgcG9yIGVqZW1wbG8gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFBvciBkZWZlY3RvIGVzIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0FjdGl2YSBhdXRvbcOhdGljYW1lbnRlIGVsIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdFeHByZXNpw7NuIGRlIGNhZGVuYSBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdNw7NkdWxvIGRlIGNhZGVuYXMgZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnQWN0aXZhZG9yIGRlIHZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdTaSBzZSBwdWVkZSBldml0YXIgbGEgZWplY3VjacOzbiBkZSBDb25maWdJdGVtQUNMIGNvbXByb2JhbmRvIGxhcyBkZXBlbmRlbmNpYXMgZGUgY2FtcG9zIGVuIGNhY2jDqS4gRXN0byBwdWVkZSBtZWpvcmFyIGxvcyB0aWVtcG9zIGRlIGNhcmdhIGRlIGxvcyBmb3JtdWxhcmlvcywgcGVybyBkZWJlIGRlc2FjdGl2YXJzZSBzaSBzZSB2YW4gYSB1dGlsaXphciBBQ0xNb2R1bGVzIHBhcmEgSVRTTUNvbmZpZ0l0ZW0tIHkgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ1F1w6kgaW5mb3JtYWNpw7NuIGdlbmVyYWwgc2UgbXVlc3RyYSBlbiBsYSBjYWJlY2VyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdjbGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVjdGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVjdGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVjdGl2byc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBwdWxnYWRhcyAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHB1bGdhZGFzICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgcHVsZ2FkYXMgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgcHVsZ2FkYXMgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICdSYWNrIGRlIDE5IHB1bGdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBwdWxnYWRhcyAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnQ3JlbWFsbGVyYSBkZSAyMSBwdWxnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDk3LDc5IGNtICgzOCw1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICdFc3RhbnRlIGRlIDIzIHB1bGdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwdWxnYWRhcyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgcHVsZ2FkYXMgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHB1bGdhZGFzICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgcHVsZ2FkYXMgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgcHVsZ2FkYXMgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHB1bGdhZGFzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwdWxnYWRhcyAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcHVsZ2FkYXMgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIHB1bGdhZGFzICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzEuMDAwIG1tICgzOSw0IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcHVsZ2FkYXMgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwdWxnYWRhcyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgcHVsZ2FkYXMgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcHVsZ2FkYXMgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgcHVsZ2FkYXMgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBwdWxnYWRhcyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IHB1bGdhZGFzICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgcHVsZ2FkYXMgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiAyMiwyMyBjbSAoOCw3NSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBwdWxnYWRhcyAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBwdWxnYWRhcyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiA0MCwwMSBjbSAoMTUsNzUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29udGFiaWxpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQXNpZ25hY2nDs24gZGUgZGlyZWNjaW9uZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmFkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnVGVsw6lmb25vIGFuYWzDs2dpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUaXBvIGRlIGFwYXJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdDYXBhY2lkYWQgZGUgbGEgYmF0ZXLDrWEgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdUaXBvIGRlIGJhdGVyw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnRWRpZmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZmF6IGRlIGJ1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NsYXNlIGRlIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnQ2FwYWNpZGFkIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdDYXBhY2lkYWQgcG9yIHRhcmpldGEgZ3LDoWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRhcmpldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdMZWN0b3IgZGUgdGFyamV0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVGlwbyBkZSB0YXJqZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0NhdGVnb3LDrWEgZGUgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdSZWxvaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVmVsb2NpZGFkIGRlIHJlbG9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgZmlybWEgZGUgY8OzZGlnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVGVsw6lmb25vIGRlIGNvbmZlcmVuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnQWN1ZXJkbyBkZSBjb25zdWx0b3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ1DDs25nYXNlIGVuIGNvbnRhY3RvIGNvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnQ29udGFjdGFyIGNvbiBlbCBkaXN0cmlidWlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdHZXN0acOzbiBkZSBjb250ZW5lZG9yZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdDb250cmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVGlwbyBkZSBjb250cmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRlbCBjb250cmF0byBkZXNkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdQZXLDrW9kbyBkZWwgY29udHJhdG8gaGFzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVGVsw6lmb25vIGluYWzDoW1icmljbyAodGVsw6lmb25vIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ1VuaWRhZCBkZSBjb3N0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ1JlY3VlbnRvIGRlIGxpY2VuY2lhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRmVjaGEgZGUgY3JlYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdFc3RhbnRlcsOtYSBwZXJzb25hbGl6YWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFJlc2VydmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnU2Vydmlkb3IgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdGZWNoYSBkZSBsYSBmYWN0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdGZWNoYSBkZWwgcGVkaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdGZWNoYSBkZSBsYSBnYXJhbnTDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRmVjaGEgZGUgcHVibGljYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdFc2NyaXRvcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgZmlybWEgZGUgZG9jdW1lbnRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ1JhY2sgRVRTSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGNvcnJlbyBlbGVjdHLDs25pY28gKENlcnRpZmljYWRvcyBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0NvbnRyYXRvIGRlIHRyYWJham8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdEaXJlY2Npw7NuIElQIGZpbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRmluIGRlIGxhIGF5dWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRmVjaGEgZGUgZXhwaXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0Rpc2NvIGR1cm8gZXh0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0NvcnRhZnVlZ29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdBbG1hY2VuYW1pZW50byBkZSBlbmVyZ8OtYSBtZWRpYW50ZSB2b2xhbnRlIGRlIGluZXJjaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYWN0b3IgZGUgZm9ybWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgZnJhbnF1aWNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBnZW5lcmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnVGFyamV0YXMgZ3LDoWZpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdUYXJqZXRhIGdyw6FmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbG8gZGUgaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnUGVzbyBkZWwgaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0F1cmljdWxhcmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9jb2xvIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0dlc3Rpw7NuIGRlIGlkZW50aWRhZGVzIHkgYWNjZXNvcyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBpbnZlbnRhcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnQ29zdGVzIGRlIGludmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGZhY3R1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUZWNsYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEIChwYW50YWxsYSBkZSBjcmlzdGFsIGzDrXF1aWRvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBMRUQgKGRpb2RvIGVtaXNvciBkZSBsdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBmaWpvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ1BvcnTDoXRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdDYXBhIDE6IENhcGEgZsOtc2ljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdDYXBhIDI6IENhcGEgZGUgZW5sYWNlIGRlIGRhdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdDYXBhIDM6IENhcGEgZGUgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0NhcGEgMzogQ2FwYSBkZSByZWQgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdDYXBhIDQ6IENhcGEgZGUgdHJhbnNwb3J0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnQ2FwYSA1OiBDYXBhIGRlIHNlc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnQ2FwYSA2OiBDYXBhIGRlIHByZXNlbnRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdDYXBhIDc6IENhcGEgZGUgYXBsaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgYXJyZW5kYW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0NsYXZlIGRlIGxpY2VuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1RpcG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRlIGxpY2VuY2lhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZGUgbGljZW5jaWEgaGFzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIGxpdGlvIGZvc2ZhdG8gZGUgaGllcnJvIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgaW9uZXMgZGUgbGl0aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIHByw6lzdGFtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnU2l0dWFkbyBlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ0ZhYnJpY2FudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ0NhcGFjaWRhZCBkZSBjYXJnYSBtw6F4aW1hIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVGlwbyBkZSBtZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgbcOzdmlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ03Ds3ZpbC9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXBjacOzbiBkZWwgbW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1Jlc29sdWNpw7NuIGRlbCBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1RhbWHDsW8gZGVsIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdSYXTDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm1hY2nDs24gZGUgbGEgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZGUgbGEgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdDYXBhIGRlIHJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIG7DrXF1ZWwtY2FkbWlvIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIG7DrXF1ZWwtaGlkcnVybyBtZXTDoWxpY28gKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0FjdWVyZG8gZGUgY29uZmlkZW5jaWFsaWRhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ0N1YWRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTsO6bWVybyBkZSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTsO6bWVybyBkZSBtw7NkdWxvcyBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTsO6bWVybyBkZSB0YXJqZXRhcyBncsOhZmljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAoZGlvZG8gb3Jnw6FuaWNvIGVtaXNvciBkZSBsdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0Nvc3RlcyBkZSBleHBsb3RhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBwZWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdPdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdTYWxpZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgYXNvY2lhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRlbMOpZm9ubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGlwbyBkZSB0ZWzDqWZvbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdOw7pjbGVvcyBmw61zaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1N1bWluaXN0cm8gZGUgZW5lcmfDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdDb21wcmFkbyBlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUHJvZnVuZGlkYWQgZGUgbGEgZXN0YW50ZXLDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbmlkYWRlcyBkZSByYWNrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnSGFiaXRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdUYXJqZXRhIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnQ29udHJhdG8gZGUgdmVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVGVsw6lmb25vIHBvciBzYXTDqWxpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgcGxvbW8tw6FjaWRvIHNlbGxhZGEgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOw7ptZXJvIGRlIHNlcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGRlIHNlcnZpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgc2VydmljaW9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnRXRpcXVldGEgZGUgc2VydmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVGlwbyBkZSBlbmNodWZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdBbHRhdm9jZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnRXN0w6FuZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdEaXJlY2Npw7NuIElQIGRlIGluaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnQWxtYWNlbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdQYXJ0aWNpw7NuIGRlIGFsbWFjZW5hbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRmlsaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdSZXN1bWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnQ2xpZW50ZSBsaWdlcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0hpbG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1JBTSB0b3RhbCBkZSBsYSB0YXJqZXRhIGdyw6FmaWNhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdSQU0gdG90YWwgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciB0w6FjdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ycmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0h1YiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdDYXNjb3MgZGUgUlYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVGVsw6lmb25vIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ0PDoW1hcmEgd2ViJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/es_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRvcyBnZW5lcmFsZXMgZGUgZnVuY2lvbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0FqdXN0ZXMgZGUgbG9zIGRhdG9zIGRlIHNvbGljaXR1ZCBlbnRyYW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdDb25maWd1cmFjacOzbiBkZSBsb3MgZGF0b3MgZGUgcmVzcHVlc3RhIHNhbGllbnRlcyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIEVsZW1lbnRvcyBkZSBDb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgZGVmaW5pY2nDs24gZGUgbGEgQ2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGVsIHJvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhcXVldGVzIGRlIGNsYXNlcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdBcXXDrSBwdWVkZXMgaW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkltcG9ydCBxdWUgbXVlc3RyYW4gbnVlc3Ryb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG3DoXMgaGFiaXR1YWxlcy4gVGVuZ2EgZW4gY3VlbnRhIHF1ZSBwdWVkZSBzZXIgbmVjZXNhcmlhIGFsZ3VuYSBjb25maWd1cmFjacOzbiBhZGljaW9uYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ0FjdHVhbGl6YXIgbGFzIGVudGlkYWRlcyBleGlzdGVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc2UgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0NvbmZpZyBJdGVtIFJvbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdFbGVtZW50byBkZSBDb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cm8gcGFyYSBDbGFzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnU2VsZWNjaW9uZSB1bmEgQ2xhc2UgZGUgbGEgbGlzdGEgcGFyYSBjcmVhciB1biBudWV2byBJdGVtIGRlIENvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnQ2xhc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gQWNjacOzbiBNYXNpdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0VzdGFkbyBkZSBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlbCBpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnRW5sYXphciBjb24gb3Rybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnwqFOw7ptZXJvIGRlIMONdGVtIGRlIENvbmZpZ3VyYWNpw7NuIG5vIHZhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnRWwgbsO6bWVybyBkZSBvdHJvIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBlbCBxdWUgdmluY3VsYXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRWwgbm9tYnJlIGRlIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0VsIG5vbWJyZSB5YSBlc3RhIGVuIHVzbyBwb3Igw410ZW1zIGRlIENvbmZpZ3VyYWNpw7NuIGNvbiBsb3Mgc2lndWllbnRlcyBuw7ptZXJvKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24gZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgdmVyc2nDs24geWEgZXN0w6EgZW4gdXNvIHBvciBlbCBDb25maWdJdGVtcyBjb24gZWwgc2lndWllbnRlIG7Dum1lcm8gKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIGxhIEltcGxlbWVudGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgSW5jaWRlbnRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpYWwgZGVsIEVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZW5pZG8gZGVsIGhpc3RvcmlhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnRmVjaGEgZGUgQ3JlYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Zpc3RhIGRldGFsbGFkYSAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ0lzIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdObyBzZSBoYW4gZW5jb250cmFkbyBkYXRvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWNjaW9uZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnRWplY3V0YXIgbGEgYsO6c3F1ZWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ8K/RGVzZWEgYnVzY2FyIGVuIHZlcnNpb25lcyBhbnRlcmlvcmVzPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHBhcmEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ05pdmVsIGRlIHByb2Z1bmRpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnQWNlcmNhci9BbGVqYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnwqFOaXZlbCBtw6F4aW1vIGRlIGVubGFjZXMgYWxjYW56YWRvIHBhcmEgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdFbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBBY3R1YWwgZGUgbGEgSW1wbGVtZW50YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdFc3RhZG8gZGVsIEluY2lkZW50ZSBBY3R1YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnw5psdGltbyBjYW1iaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTGEgw7psdGltYSB2ZXogcXVlIHNlIG1vZGlmaWPDsyBmdWUgcG9yJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnU3VzIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgQ29uZmlnSXRlbSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnVGlwbyBkZSBvYmpldG8nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0cmFyIHBvciB0aXBvJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2UgaW1wb3J0YXLDoW4gbGFzIHNpZ3VpZW50ZXMgY2xhc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NlIGltcG9ydGFyw6FuIGxhcyBzaWd1aWVudGVzIGZ1bmNpb25lcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdUZW5nYSBlbiBjdWVudGEgcXVlIHRhbWJpw6luIHNlIGNyZWFyw6FuIGxvcyBjYW1wb3MgZGluw6FtaWNvcyB5IGxhcyBjbGFzZXMgR2VuZXJhbENhdGFsb2cgY29ycmVzcG9uZGllbnRlcyB5IHF1ZSBubyBzZSBlbGltaW5hcsOhbiBhdXRvbcOhdGljYW1lbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ8K/RGVzZWEgcHJvY2VkZXI/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ8KhTmVjZXNpdGEgRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0xhIGRlZmluaWNpw7NuIG5vIGVzIHVuIGhhc2ggWUFNTCB2w6FsaWRvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1Jlc3VtZW46IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhIHByb3BvcmNpb25hZG8gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ8KhTmVjZXNpdGEgYWwgbWVub3MgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05vIHRpZW5lIHBlcm1pc28gZGUgZXNjcml0dXJhIHBhcmEgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnwqFOaW5ndW5hIGRlZmluaWNpw7NuIGZ1ZSBkZWZpbmlkYSBwYXJhIGNsYXNlICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnwqFFbGVtZW50byBkZSBjb25maWd1cmFjacOzbiAiJXMiICBubyBzZSBlbmNvbnRyw7MgZW4gbGEgYmFzZSBkZSBkYXRvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfCoU5vIGZ1ZSBwb3NpYmxlIGVsaW1pbmFyIGVsIGNvbmZpZ2l0ZW0gSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICfCoU5vIHNlIGVuY29udHLDsyBWZXJzacOzbiBwYXJhIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBoYSBwcm9wb3JjaW9uYWRvIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgbyBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBoYSBwcm9wb3JjaW9uYWRvIGFjY2VzbyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGhpc3RvcmlhbCwgbm8gc2UgaGEgcHJvcG9yY2lvbmFkbyBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGhpc3RvcmlhbCwgbm8gc2UgaGFuIHByb3BvcmNpb25hZG8gcGVybWlzb3MgZGUgYWNjZXNvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTnVldm8gQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOdWV2YSB2ZXJzacOzbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnQWN0dWFsaXphZG8gZXN0YWRvIGRlIGRlc3BsaWVndWUgKG51ZXZvPSVzLCB2aWVqbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnQWN0dWFsaXphZG8gZXN0YWRvIGRlIGluY2lkZW5jaWEgKG51ZXZvPSVzLHZpZWpvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBlbGltaW5hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdFbmxhY2UgYSAlcyAodGlwbz0lcykgYcOxYWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0VubGFjZSBhICVzICh0aXBvPSVzKSBlbGltaW5hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0FjdHVhbGl6YWRhIGRlZmluaWNpw7NuIGRlIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05vbWJyZSBhY3R1YWxpemFkbyAobnVldm89JXMsdmllam89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dG8gJXMgYWN0dWFsaXphZG8gZGUgIiVzIiBhICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2nDs24gJXMgZWxpbWluYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgaGEgcHJvcG9yY2lvbmFkbyBDb25maWdJdGVtSUQgbyBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ8KhTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiwgbm8gc2UgaGFuIHByb3BvcmNpb25hZG8gcGVybWlzb3MgZGUgYWNjZXNvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ8KhQ29uZmlnSXRlbUlEICVzIG5vIHNlIGVuY29udHLDsyBlbiBsYSBiYXNlIGRlIGRhdG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnaW1wcmVzbyBwb3IgJXMgZW4gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jaWEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfCoUNsYXNzSUQgbm8gZXMgdsOhbGlkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhIHByb3BvcmNpb25hZG8gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhIHByb3BvcmNpb25hZG8gcGVybWlzb3MgZGUgYWNjZXNvIHBhcmEgZXN0YSBjbGFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ8KhU2luIHJlc3VsdGFkb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnUmVzdWx0YWRvcyBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ8KhTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50bywgbm8gc2UgaGFuIHByb3BvcmNpb25hZG8gcGVybWlzb3MgZGUgYWNjZXNvIHBhcmEgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnwqFDb25maWdJdGVtIG5vIGVuY29udHJhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIHZlcnNpb25lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYWNpb25hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnYWR2ZXJ0ZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIGVzdGFkbyBkZSBpbXBsZW1lbnRhY2nDs24gZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIGVzdGFkbyBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnU2luIHBlcm1pc29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ8KhRmlsdHJvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcsOhbWV0cm9zIGRlIGLDunNxdWVkYSBpbnbDoWxpZG9zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnU2UgbXVlc3RyYW4gZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcG8gZGUgZXN0YWRvIGRlIGltcGxlbWVudGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdFc3RhZG8gYWN0dWFsIGRlbCBUaXBvIGRlIGluY2lkZW50ZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdFbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY2Npb25lcyBkZSBjbGFzZSBwYXJhIGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVuYSBvIG3DoXMgY2xhc2VzIHBhcmEgcmVzdHJpbmdpciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHNlbGVjY2lvbmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmljY2lvbmVzIGRlIGNsYXNlIHBhcmEgZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVuYSBvIG3DoXMgY2xhc2VzIHBhcmEgcmVzdHJpbmdpciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHNlbGVjY2lvbmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluw6FtaWNvIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnRXN0w6F0aWNhIChWZXJzacOzbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVGlwbyBkZSByZWZlcmVuY2lhIGRlIGVubGFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdTaSBlc3RlIGVubGFjZSBzZSBhcGxpY2EgYWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gbyBhIGxhIHZlcnNpw7NuIGVzdMOhdGljYSBkZWwgb2JqZXRvIGRlIHJlZmVyZW5jaWEuIEVsIGPDoWxjdWxvIGRlbCBlc3RhZG8gYWN0dWFsIGRlbCBpbmNpZGVudGUgc8OzbG8gc2UgcmVhbGl6YSBlbiBsb3MgZW5sYWNlcyBkaW7DoW1pY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjY2lvbmUgZWwgYXRyaWJ1dG8gcG9yIGVsIHF1ZSBzZSBidXNjYXLDoW4gbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0xhIGVzdHJ1Y3R1cmEgYmFzZSBubyBlcyB2w6FsaWRhLiBQb3IgZmF2b3IsIHByb3BvcmNpb25lIHVuIGhhc2ggY29uIGRhdG9zIGVuIGZvcm1hdG8gWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdFcyBuZWNlc2FyaW8gcXVlIGxhIGNhZGVuYSBZQU1MIGNvbWllbmNlIHBvciBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdObyBzZSBoYSBwb2RpZG8gcHVyZ2FyIGxhIHRhYmxhIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIGNhbXBvcyBkaW7DoW1pY29zIHJlbGV2YW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdObyBzZSBoYSBwb2RpZG8gaW5zZXJ0YXIgZW4gbGEgdGFibGEgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnNlcnRhZGFzIDAgZmlsYXMgZW4gbGEgdGFibGEgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ07Dum1lcm8gbcOheGltbyBkZSB1biBlbGVtZW50byAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnSW1wb3J0YXIvZXhwb3J0YXIgYXJjaGl2b3MgYWRqdW50b3MgKGNvbW8gw7psdGltYXMgZW50cmFkYXMgcG9yIGzDrW5lYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzacOzbiBDYWRlbmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJyb3IgYWwgc2luY3Jvbml6YXIgbGFzIGRlZmluaWNpb25lcy4gUG9yIGZhdm9yLCBjb21wcnVlYmUgZWwgcmVnaXN0cm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVGllbmUgZGVmaW5pY2lvbmVzIGRlIElUU01Db25maWdJdGVtIHF1ZSBubyBlc3TDoW4gc2luY3Jvbml6YWRhcy4gRGVzcGxpZWd1ZSBsb3MgY2FtYmlvcyBlbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgZGUgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnRlbmltaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5pZmljYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlcGFyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSZXRpcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZpc2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnUHJ1ZWJhIC8gQ29udHJvbCBkZSBjYWxpZGFkJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdWaXNpw7NuIGdlbmVyYWwgeSBjb25maXJtYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGFyIGNsYXNlcy9yb2xlcyB5IHN1cyBjYW1wb3MgcmVsYWNpb25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnU2UgaGEgcHJvZHVjaWRvIHVuIGVycm9yIGR1cmFudGUgbGEgaW1wb3J0YWNpw7NuIGRlIGxhIGNsYXNlLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gT2N1bHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBTZSBtdWVzdHJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpY2lvbmVzIGRlIGLDunNxdWVkYSBleHRlbmRpZGFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gQ29uIGVzdGEgZnVuY2nDs24gcHVlZGUgYnVzY2FyLCBwb3IgZWplbXBsbywgZWwgbm9tYnJlIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBjb25kaWNpb25lcyBjb21vICIoKmNsYXZlMSomJipjbGF2ZTIqKSIgbyAiKCpjbGF2ZTEqfHwqY2xhdmUyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGFtcGxpYXIgbGFzIGNvbmRpY2lvbmVzIGRlIGLDunNxdWVkYSBlbiBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuIENvbiBlc3RhIGZ1bmNpw7NuIHB1ZWRlIGJ1c2NhciwgcG9yIGVqZW1wbG8sIGVsIG5vbWJyZSBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIGVzdGUgdGlwbyBkZSBjb25kaWNpb25lcyBjb21vICIoKmNsYXZlMSomJipjbGF2ZTIqKSIgbyAiKCpjbGF2ZTEqfHwqY2xhdmUyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdDSXMgYXNpZ25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDaXMgYXNpZ25hZG9zIGEgbGEgRW1wcmVzYSBkZWwgQ2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NpcyBhc2lnbmFkb3MgYWwgdXN1YXJpbyBkZWwgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ29uZmlndXJhY2lvbmVzIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0J1c3F1ZSB1biBub21icmUgw7puaWNvIHNvbG8gZGVudHJvIGRlIGxhIG1pc21hIGNsYXNlIGRlIENvbmZpZ0l0ZW0gKFwnY2xhc2VcJykgbyBnbG9iYWxtZW50ZSAoXCdnbG9iYWxcJyksIGxvIHF1ZSBzaWduaWZpY2EgcXVlIGNhZGEgQ29uZmlnSXRlbSBleGlzdGVudGUgc2UgdGllbmUgZW4gY3VlbnRhIGN1YW5kbyBzZSBidXNjYW4gZHVwbGljYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ0VsaWphIHVuIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVuIGVzcXVlbWEgZGUgbm9tYnJlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ0VsaWphIHVuIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVuIGVzcXVlbWEgbnVtw6lyaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdFbGlqYSB1biBtw7NkdWxvIHBhcmEgYXBsaWNhciB1biBlc3F1ZW1hIGRlIGNhZGVuYXMgZGUgdmVyc2lvbmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ0VsaWphIGF0cmlidXRvcyBwYXJhIGFjdGl2YXIgbGEgY3JlYWNpw7NuIGRlIHVuYSBudWV2YSB2ZXJzacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnRWxpamEgbGFzIGNhdGVnb3LDrWFzIHF1ZSBkZXNlYSBhc2lnbmFyIGEgZXN0YSBjbGFzZSBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgY29sdW1uYSBwYXJhIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2x1bW5hcyBxdWUgc2UgcHVlZGVuIGZpbHRyYXIgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gTm90YTogU29sbyBzZSBwZXJtaXRlbiBhdHJpYnV0b3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHkgY2FtcG9zIGRpbsOhbWljb3MgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0VsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQcOxYWRpciBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0VkaXRhciBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIGhhYmlsaXRhIGVsIGFjY2VzbyBhIGxhIGhpc3RvcmlhIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIGFjdHVhbGl6YSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGEgc3UgZGVmaW5pY2nDs24gYWN0dWFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0hpc3RvcmlhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0ltcHJpbWlyIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0RldGFsbGV6IGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdWaXN0YSBlbiDDoXJib2wgZGUgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xvcyBDb25maWdJdGVtcyBkZSBsYXMgc2lndWllbnRlcyBjbGFzZXMgbm8gc2UgYWxtYWNlbmFyw6FuIGVuIGVsIHNlcnZpZG9yIEVsYXN0aWNzZWFyY2guIFBhcmEgYXBsaWNhciBlc3RvIGEgbG9zIENJcyBleGlzdGVudGVzLCBsYSBtaWdyYWNpw7NuIGRlbCBDSSB0aWVuZSBxdWUgc2VyIGVqZWN1dGFkYSBhIHRyYXbDqXMgZGUgbGEgY29uc29sYSwgZGVzcHXDqXMgZGUgY2FtYmlhciBlc3RhIG9wY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xvcyBDb25maWdJdGVtcyBjb24gbG9zIHNpZ3VpZW50ZXMgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIG5vIHNlIGFsbWFjZW5hcsOhbiBlbiBlbCBzZXJ2aWRvciBFbGFzdGljc2VhcmNoLiBQYXJhIGFwbGljYXIgZXN0byBhIGxvcyBDSXMgZXhpc3RlbnRlcywgbGEgbWlncmFjacOzbiBkZWwgQ0kgdGllbmUgcXVlIHNlciBlamVjdXRhZGEgYSB0cmF2w6lzIGRlIGxhIGNvbnNvbGEsIGRlc3B1w6lzIGRlIGNhbWJpYXIgZXN0YSBvcGNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMw61taXRlIGRlIEVsZW1lbnRvcyBkZSBDb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnTMOtbWl0ZSBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwb3IgcMOhZ2luYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0dlc3Rpw7NuIGRlIGxhIENvbmZpZ3VyYWNpw7NuIGRlIEJhc2VzIGRlIERhdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdFbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZWwgbcOzZHVsbyBtYXNpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm91dGVyIGJhY2tlbmQgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDcmVhIHkgZ2VzdGlvbmEgbGFzIGRlZmluaWNpb25lcyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0NyZWEgVGlja2V0cyBwYXJhIENvbmZpZ0l0ZW1zIGVuIG1vbWVudG9zIGVzcGVjw61maWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnTG9zIGNsaWVudGVzIHB1ZWRlbiB2ZXIgbGFzIHZlcnNpb25lcyBoaXN0w7NyaWNhcyBkZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnTG9zIGNsaWVudGVzIHRpZW5lbiBsYSBwb3NpYmlsaWRhZCBkZSBjYW1iaWFyIG1hbnVhbG1lbnRlIGVudHJlIHZlcnNpb25lcyBoaXN0w7NyaWNhcyBkZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEYXRvcyBwcmVkZXRlcm1pbmFkb3MgcXVlIHNlIHV0aWxpemFyw6FuIGVuIGVsIGF0cmlidXRvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4gRWplbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PWHDsW87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD3Dmmx0aW1vO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEYXRvcyBwb3IgZGVmZWN0byBhIHV0aWxpemFyIGVuIGVsIGF0cmlidXRvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBjb25maWcuIEVqZW1wbG86ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmlyIEFjY2lvbmVzIGVuIGxhcyBxdWUgdW4gYm90w7NuIGRlIGNvbmZpZ3VyYWNpw7NuIGVzdMOhIGRpc3BvbmlibGUgZW4gZWwgd2lkZ2V0IGRlIG9iamV0b3MgdmluY3VsYWRvcyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBUZW5nYSBlbiBjdWVudGEgcXVlIGVzdGFzIEFjY2lvbmVzIGRlYmVuIGhhYmVyIHJlZ2lzdHJhZG8gbG9zIHNpZ3VpZW50ZXMgYXJjaGl2b3MgSlMgeSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIHkgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIGVzcXVlbWEgVGVtcGxhdGU6OlRvb2xraXQgcGFyYSBjYWRlbmFzIGRlIHZlcnNpw7NuLiBTw7NsbyBzZSB1dGlsaXphIHNpIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBzZSBlc3RhYmxlY2UgZW4gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBjb25qdW50byBkZSBjb25kaWNpb25lcyBiYWpvIGxhcyBjdWFsZXMgdW4gY2xpZW50ZSBwdWVkZSB2ZXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uIExhcyBjb25kaWNpb25lcyBwdWVkZW4gcmVzdHJpbmdpcnNlIG9wY2lvbmFsbWVudGUgYSBkZXRlcm1pbmFkb3MgZ3J1cG9zIGRlIGNsaWVudGVzLiBFbCBub21icmUgZXMgZWwgw7puaWNvIGF0cmlidXRvIG9ibGlnYXRvcmlvLiBTaSBubyBzZSBlc3BlY2lmaWNhIG5pbmd1bmEgb3RyYSBvcGNpw7NuLCB0b2RvcyBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHNlcsOhbiB2aXNpYmxlcyBlbiBlc2EgY2F0ZWdvcsOtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgcGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIGVsaW1pbmFyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIG1lZGlhbnRlIGxhIGludGVyZmF6IGdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgcGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIG9idGVuZXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gdXRpbGl6YW5kbyBsYSBpbnRlcmZheiBnZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBlcm1pc29zIG5lY2VzYXJpb3MgcGFyYSBidXNjYXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gdXRpbGl6YW5kbyBsYSBpbnRlcmZheiBnZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIHBlcm1pc29zIHJlcXVlcmlkb3MgcGFyYSBlc3RhYmxlY2VyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIHV0aWxpemFuZG8gbGEgSW50ZXJmYXogR2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmUgdW4gbcOzZHVsbyBkZSByZXN1bWVuIHBhcmEgbW9zdHJhciBsYSBwZXF1ZcOxYSB2aXN0YSBkZSB1bmEgbGlzdGEgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBzaSBsYXMgZXRpcXVldGFzIGRlIHRpcG8gZGUgZW5sYWNlIGRlYmVuIG1vc3RyYXJzZSBlbiBsYXMgY29uZXhpb25lcyBkZSBsb3Mgbm9kb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmUgZXhwcmVzaW9uZXMgcmVndWxhcmVzIGluZGl2aWR1YWxtZW50ZSBwYXJhIGNhZGEgY2xhc2UgQ29uZmlnSXRlbSBwYXJhIHZlcmlmaWNhciBlbCBub21icmUgZGUgQ29uZmlnSXRlbSB5IHBhcmEgbW9zdHJhciBsb3MgbWVuc2FqZXMgZGUgZXJyb3IgY29ycmVzcG9uZGllbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIGRpc3BvbmlibGVzIGRlIENJcyBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBmdW5jacOzbiBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgY29uc3RhciBkZSB1biBub21icmUgZGUgY2xhc2UgeSB1bmEgbWF0cml6IGRlIGNhbXBvcyBkaXNwb25pYmxlcyBwYXJhIGxhIGNsYXNlIGNvcnJlc3BvbmRpZW50ZS4gTGFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7DoW1pY29zIGRlYmVuIHJlc3BldGFyIGVsIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwcmVkZXRlcm1pbmFkbyBwYXJhIGxhIGNsYXNpZmljYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwcmVkZXRlcm1pbmFkbyBwYXJhIGxhIGNsYXNpZmljYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGVzdGEgb3BlcmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwcmVkZXRlcm1pbmFkbyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIEFycmliYTogZWwgbcOhcyBhbnRpZ3VvIGFycmliYS4gQWJham86IGVsIG3DoXMgcmVjaWVudGUgYXJyaWJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHByZWRldGVybWluYWRvIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4gQXJyaWJhOiBlbCBtw6FzIGFudGlndW8gYXJyaWJhLiBBYmFqbzogZWwgbcOhcyByZWNpZW50ZSBhcnJpYmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwcmVkZXRlcm1pbmFkbyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGVzdGEgb3BlcmFjacOzbi4gQXJyaWJhOiBlbCBtw6FzIGFudGlndW8gYXJyaWJhLiBBYmFqbzogZWwgbcOhcyByZWNpZW50ZSBhcnJpYmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBwb3IgZGVmZWN0byBkZSBsb3MgQ0lzIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlcGVuZGllbmRvIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBjb25zaXN0aXIgZW4gdW4gbm9tYnJlIGRlIGNsYXNlIHkgdW4gYXJyYXkgZGUgY2FtcG9zIGRpc3BvbmlibGVzIHBhcmEgbGEgY2xhc2UgY29ycmVzcG9uZGllbnRlLiBMYXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOhbWljb3MgZGViZW4gcmVzcGV0YXIgZWwgZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmUgbGEgcHJvZnVuZGlkYWQgZGUgbGFzIHJlbGFjaW9uZXMgcXVlIHNlIG1vc3RyYXLDoW4gcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvIHBvciBkZWZlY3RvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvIHBvciBkZWZlY3RvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4gRWplbXBsbzogIkNsYXZlIiBkZWJlIHRlbmVyIGVsIG5vbWJyZSBkZWwgQ2FtcG8gRGluw6FtaWNvIGVuIGVzdGUgY2FzbyBcJ1hcJywgIkNvbnRlbmlkbyIgZGViZSB0ZW5lciBlbCB2YWxvciBkZWwgQ2FtcG8gRGluw6FtaWNvIGRlcGVuZGllbmRvIGRlbCB0aXBvIGRlIENhbXBvIERpbsOhbWljbywgVGV4dG86IFwnYSB0ZXh0XCcsIERlc3BsZWdhYmxlOiBcJzFcJywgRmVjaGEvSG9yYTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTZWNvbmQ9NTk7XCcgeSBvIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzdWJvYmpldG8gcG9yIGRlZmF1bHQgZGUgbGEgY2xhc2UgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBkaXNwb25pYmxlcyBkZSBDSXMgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZnVuY2nDs24gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGNvbnN0YXIgZGUgdW4gbm9tYnJlIGRlIGNsYXNlIHkgdW5hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uaWJsZXMgcGFyYSBsYSBjbGFzZSBjb3JyZXNwb25kaWVudGUuIExhcyBlbnRyYWRhcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBkZWJlbiByZXNwZXRhciBlbCBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYSBhbHR1cmEgZGVsIGNvbXBvbmVudGUgZWRpdG9yIGRlIHRleHRvIGVucmlxdWVjaWRvIHBhcmEgZXN0YSBwYW50YWxsYS4gSW50cm9kdXpjYSB1biBuw7ptZXJvIChww614ZWxlcykgbyB1biB2YWxvciBwb3JjZW50dWFsIChyZWxhdGl2bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBuw7ptZXJvIGRlIGZpbGFzIHBhcmEgZWwgZWRpdG9yIGRlIGRlZmluaWNpb25lcyBkZSBDSSBlbiBsYSBpbnRlcmZheiBkZSBhZG1pbmlzdHJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBkZSBsb3MgZXN0YWRvcyBkZSBpbmNpZGVuY2lhIGRlc2RlIGFsdG8gKHBvciBlamVtcGxvLCBjcsOtdGljbykgYSBiYWpvIChwb3IgZWplbXBsbywgZnVuY2lvbmFsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIGVzdGFkb3MgZGUgaW1wbGVtZW50YWNpw7NuIHJlbGV2YW50ZXMgZG9uZGUgbG9zIHRpY2tldHMgdmluY3VsYWRvcyBwdWVkZW4gYWZlY3RhciBlbCBlc3RhZG8gZGUgdW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIGRlIENJIG1vc3RyYWRhcyBlbiBsYSB2aXN0YSBjb21wbGVqYSBkZSBsYSB0YWJsYSBkZSB2w61uY3Vsb3MgcGFyYSB0b2RhcyBsYXMgY2xhc2VzIGRlIENJLiBTaSBubyBoYXkgbmluZ3VuYSBlbnRyYWRhLCBzZSBtdWVzdHJhbiBsYXMgY29sdW1uYXMgcHJlZGV0ZXJtaW5hZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvcyBlbiBsYSB2aXN0YSBjb21wbGVqYSBkZSBsYSB0YWJsYSBkZSBlbmxhY2VzLCBzZWfDum4gbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGlyIHByZWNlZGlkYSBkZWwgbm9tYnJlIGRlIGxhIGNsYXNlIHkgZG9zIHB1bnRvcyBkb2JsZXMgKGVzIGRlY2lyLCBjb21wdXRhZG9yYTogOikuIEhheSBhbGd1bm9zIGF0cmlidXRvcyBkZSBDSSBxdWUgc29uIGNvbXVuZXMgYSB0b2RvcyBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIChlamVtcGxvIHBhcmEgbGEgY2xhc2UgQ29tcHV0YWRvcmE6IENvbXB1dGFkb3JhIDo6IE5vbWJyZSwgQ29tcHV0YWRvcmEgOjogQ3VyRGVwbFN0YXRlLCBDb21wdXRhZG9yYSA6OiBDcmVhdGVUaW1lKS4gUGFyYSBtb3N0cmFyIGxvcyBJQy1BdHJpYnV0b3MgaW5kaXZpZHVhbGVzIGRlZmluaWRvcyBlbiBsYSBEZWZpbmljacOzbi1DSSwgc2UgZGViZSB1dGlsaXphciBlbCBzaWd1aWVudGUgZXNxdWVtYSAoZWplbXBsbyBwYXJhIGxhIGNsYXNlIENvbXB1dGFkb3JhKTogQ29tcHV0YWRvcmEgOjogRGlzY28gRHVybyA6OiAxLCBDb21wdXRhZG9yYSA6OiBEaXNjbyBEdXJvIDo6IDEgOjogQ2FwYWNpZGFkIDo6IDEsIENvbXB1dGFkb3JhIDo6IERpc2NvIER1cm8gOjogMiwgQ29tcHV0YWRvcmEgOjogRGlzY28gRHVybyA6OiAyIDo6IENhcGFjaWRhZCA6OiAxLiBTaSBubyBoYXkgdW5hIGVudHJhZGEgcGFyYSB1bmEgY2xhc2UgQ0ksIHNlIG11ZXN0cmFuIGxhcyBjb2x1bW5hcyBwcmVkZXRlcm1pbmFkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgZWxlbWVudG9zIGVzdMOhbiBkaXNwb25pYmxlcyBwYXJhICJBY2Npw7NuIiBlbiBlbCB0ZXJjZXIgbml2ZWwgZGUgbGEgZXN0cnVjdHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIGVuIGVsIHByaW1lciBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIGVuIGVsIHNlZ3VuZG8gbml2ZWwgZGUgbGEgZXN0cnVjdHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgdGlwbyBkZSBlbmxhY2UgKG5vbWJyYWRvIGRlc2RlIGxhIHBlcnNwZWN0aXZhIGRlbCB0aWNrZXQpIHB1ZWRlIGFmZWN0YXIgZWwgZXN0YWRvIGRlIHVuIENJIHZpbmN1bGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSB0aXBvIGRlIHRpY2tldCBwdWVkZSBhZmVjdGFyIGVsIGVzdGFkbyBkZSB1biBDSSB2aW5jdWxhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnQWN0dWFsaXphY2nDs24gZGUgbGEgZGVmaW5pY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsaW1pbmFyIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQ29sb3IgZGVsIGVzdGFkbyBkZSBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0VzdGFkbyBkZSBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBxdWUgbWFyY2EgbGFzIGRlZmluaWNpb25lcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gY29tbyBubyBzaW5jcm9uaXphZGFzIHNpIGNhbWJpYW4gbG9zIGNhbXBvcyBkaW7DoW1pY29zIHF1ZSBjb250aWVuZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBxdWUgc2UgbXVlc3RyYW4gZW4gbGEgcGFudGFsbGEgZGUgY2FtcG8gSVRTTSBhZGljaW9uYWwgZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgcmVzdW1lbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ1Blcm1pdGUgcXVlIGxhIGNhcmFjdGVyw61zdGljYSBkZSBhY2Npw7NuIG1hc2l2YSBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcGFyYSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlIGZ1bmNpb25lIGVuIG3DoXMgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gYSBsYSB2ZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdIYWJpbGl0YSBsYSBjYXJhY3RlcsOtc3RpY2EgZGUgYWNjacOzbiBtYXNpdmEgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHNvbG8gcGFyYSBsb3MgZ3J1cG9zIGVudW1lcmFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0FjdGl2YS9kZXNhY3RpdmEgbGEgZnVuY2lvbmFsaWRhZCBkZSBjb21wcm9iYXIgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIHBhcmEgbm9tYnJlcyDDum5pY29zLiBBbnRlcyBkZSBoYWJpbGl0YXIgZXN0YSBvcGNpw7NuIGRlYmUgY29tcHJvYmFyIHNpIGV4aXN0ZW4gZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBub21icmVzIGR1cGxpY2Fkb3MuIFB1ZWRlIGhhY2VybG8gY29uIGVsIGNvbWFuZG8gZGUgY29uc29sYSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBwYXJhIGNvbmZpZ3VyYXIgY29uZmlnaXRlbS1zdGF0dXMgZW4gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQ2FtcG9zIGRlbCDDrW5kaWNlIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiwgdXRpbGl6YWRvcyBwYXJhIGxhIGLDunNxdWVkYSBkZSB0ZXh0byBjb21wbGV0by4gTG9zIGNhbXBvcyB0YW1iacOpbiBzZSBhbG1hY2VuYW4sIHBlcm8gbm8gc29uIG9ibGlnYXRvcmlvcyBwYXJhIGxhIGZ1bmNpb25hbGlkYWQgZ2VuZXJhbC4gTGEgaW5jbHVzacOzbiBkZSBhbmV4b3MgcHVlZGUgZGVzYWN0aXZhcnNlIHBvbmllbmRvIGxhIGVudHJhZGEgYSAwIG8gYm9ycsOhbmRvbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdDYW1wb3MgYWxtYWNlbmFkb3MgZW4gZWwgw61uZGljZSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIHNlIHV0aWxpemFuIHBhcmEgb3RyYXMgY29zYXMgYWRlbcOhcyBkZSBsYXMgYsO6c3F1ZWRhcyBkZSB0ZXh0byBjb21wbGV0by4gUGFyYSBsYSBmdW5jaW9uYWxpZGFkIGNvbXBsZXRhIHRvZG9zIGxvcyBjYW1wb3Mgc29uIG9ibGlnYXRvcmlvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdQYXJhIGNhZGEgd2Vic2VydmljZSAoY2xhdmUpIHNlIHB1ZWRlIGRlZmluaXIgdW4gYXJyYXkgZGUgY2xhc2VzICh2YWxvcikgc29icmUgbGFzIHF1ZSBzZSByZXN0cmluZ2UgbGEgaW1wb3J0YWNpw7NuLiBQYXJhIHRvZGFzIGxhcyBjbGFzZXMgZWxlZ2lkYXMsIG8gdG9kYXMgbGFzIGNsYXNlcyBleGlzdGVudGVzLCBsb3MgYXRyaWJ1dG9zIGRlIGlkZW50aWZpY2FjacOzbiB0ZW5kcsOhbiBxdWUgc2VyIGVsZWdpZG9zIGVuIGxhIGNvbmZpZ3VyYWNpw7NuIGRlbCBpbnZvY2Fkb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlbCBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBsYSBjYXBhIGludm9jYWRvcmEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlbCBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBsYSBjYXBhIGludm9jYWRvcmEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RybyBkZWwgbcOzZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBhcmEgbGEgY2FwYSBpbnZvY2Fkb3JhIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnRGVzY3JpcGNpw7NuIGdlbmVyYWwgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnRXN0YWRvSW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1eWUgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1eWUgZXN0YWRvcyBkZSBpbmNpZGVuY2lhcyBlbiBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGVsIHJlc3VsdGFkbyBkZSBlc3RhIG9wZXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTcOzZHVsbyBwYXJhIHZlcmlmaWNhciBlbCBncnVwbyByZXNwb25zYWJsZSBkZSB1bmEgY2xhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIHZlcmlmaWNhciBlbCBncnVwbyByZXNwb25zYWJsZSBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNw7NkdWxvIHBhcmEgZ2VuZXJhciBlc3RhZMOtc3RpY2FzIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOb21icmUgTcOzZHVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTcOzZHVsbyBudW3DqXJpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIHNlIG1vc3RyYXLDoW4gZW4gY2FkYSBww6FnaW5hIGRlIHVuIHJlc3VsdGFkbyBkZSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIGRlYmVuIG1vc3RyYXJzZSBlbiBjYWRhIHDDoWdpbmEgZGUgdW4gcmVzdWx0YWRvIGRlIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmpldG9zIGEgYnVzY2FyLCBjdcOhbnRhcyBlbnRyYWRhcyB5IHF1w6kgYXRyaWJ1dG9zIG1vc3RyYXIuIExvcyBhdHJpYnV0b3MgQ29uZmlnSXRlbSBkZWJlbiBhbG1hY2VuYXJzZSBleHBsw61jaXRhbWVudGUgYSB0cmF2w6lzIGRlIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Zpc3RhIGdlbmVyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxhcyBjYXRlZ29yw61hcyBkZSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBmaWx0cm9zIGRlIGNvbHVtbmEgZGUgbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcGVxdWXDsW9zLiBQb3IgZmF2b3IsIHRlbmdhIGVuIGN1ZW50YTogZXN0YWJsZWNlciBcJ0FjdGl2b1wnIGEgMCBzw7NsbyBldml0YXLDoSBxdWUgbG9zIGFnZW50ZXMgZWRpdGVuIGxvcyBhanVzdGVzIGRlIGVzdGUgZ3J1cG8gZW4gc3VzIHByZWZlcmVuY2lhcyBwZXJzb25hbGVzLCBwZXJvIHNlZ3VpcsOhIHBlcm1pdGllbmRvIGEgbG9zIGFkbWluaXN0cmFkb3JlcyBlZGl0YXIgbG9zIGFqdXN0ZXMgZW4gbm9tYnJlIGRlIG90cm8gdXN1YXJpby4gVXRpbGljZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHBhcmEgY29udHJvbGFyIGVuIHF1w6kgw6FyZWEgZGViZW4gbW9zdHJhcnNlIGVzdG9zIGFqdXN0ZXMgZW4gbGEgaW50ZXJmYXogZGUgdXN1YXJpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xvcyBwYXLDoW1ldHJvcyBwYXJhIGxhIGltcGxlbWVudGFjacOzbiBpbmRpY2FuIGVsIGNvbG9yIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBsb3MgZXN0YWRvcyBkZSBpbXBsZW1lbnRhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbG9zIHBlcm1pc29zIGRlIGVqZW1wbG8gZGUgbG9zIGF0cmlidXRvcyBkZWwgY2F0w6Fsb2dvIGdlbmVyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBlbCBtw7NkdWxvIGRlIG5vbWJyZXMgZGUgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZWwgbcOzZHVsbyBudW3DqXJpY28gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBsYXMgcMOhZ2luYXMgKGRvbmRlIHNlIG11ZXN0cmFuIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIGRlbCBtw7NkdWxvIGRlIGNhZGVuYXMgZGUgdmVyc2nDs24gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIG3Ds2R1bG8gZGVsIGtpdCBkZSBoZXJyYW1pZW50YXMgZGUgcGxhbnRpbGxhcyBkZSBjYWRlbmFzIGRlIHZlcnNpw7NuIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgYWN0aXZhZG9yIGRlIHZlcnNpw7NuIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnUmVhbGl6YSBsYSBhY2Npw7NuIGNvbmZpZ3VyYWRhIHBhcmEgY2FkYSBldmVudG8gKCBjb21vIHVuIEludm9rZXIpIHBhcmEgY2FkYSBzZXJ2aWNpbyBXZWIgY29uZmlndXJhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcnVwbyBkZSBwZXJtaXNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgYWNjacOzbiBkZSBhZGp1bnRhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSB2aXN0YSBkZSDDoXJib2wgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBkZXRhbGxlIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXNhciBsYSB2ZW50YW5hIHBhcmEgYWdyZWdhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIG1hc2l2YSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXNhciBsYSB2ZW50YW5hIGRlIGVkaWNpw7NuIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBoaXN0b3JpYWwgZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBpbXByZXNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUHJpdmlsZWdpb3MgbmVjZXNhcmlvcyBwYXJhIGVsaW1pbmFyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnQnVzY2FyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0VzdGFibGV6Y2EgZWwgZXN0YWRvIGRlIGluY2lkZW50ZSBkZSB1biBDSSBhdXRvbcOhdGljYW1lbnRlIGN1YW5kbyB1biB0aWNrZXQgZXN0w6kgdmluY3VsYWRvIGEgdW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXN0YWJsZWNlIGVsIGVzdGFkbyBkZSBpbXBsZW1lbnRhY2nDs24gZW4gbGEgcGFudGFsbGEgbWFzaXZhIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBlbCBlc3RhZG8gZGVsIGluY2lkZW50ZSBlbiBsYSBwYW50YWxsYSBtYXNpdmEgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGxpbmsgZW4gZWwgbWVuw7ogcGFyYSB2aW5jdWxhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBjb24gb3RybyBvYmpldG8sIGVuIGxhIHZpc3RhIGRldGFsbGFkYSBkZSBkaWNobyBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgYWNjZWRlciBhbCBoaXN0b3JpYWwgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGxpbmsgZW4gZWwgbWVuw7ogcGFyYSBhY2NlZGVyIGEgbGEgaGlzdG9yaWEgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2lvbiBlbiBzdSB2aXN0YSBkZXRhbGxhZGEsIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBlbGltaW5hciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBzdSB2aXN0YSBhbXBsaWFkYSBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIHZpc3VhbGl6YXIgbG9zIGVubGFjZXMgZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBjb21vIHVuYSB2aXN0YSBlbiDDoXJib2wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBkdXBsaWNhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBsYSBkZXNjcmlwY2nDs24gZ2VuZXJhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGxpbmsgZW4gZWwgbWVuw7ogcGFyYSBkdXBsaWNhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjaW9uIGVuIHN1IHZpc3RhIGRldGFsbGFkYSwgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gbGluayBlbiBlbCBtZW7DuiBwYXJhIGVkaXRhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjaW9uIGVuIHN1IHZpc3RhIGRldGFsbGFkYSwgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgdm9sdmVyIGEgbGEgdmlzdGEgZGUgem9vbSBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBsaW5rIGVuIGVsIG1lbsO6IHBhcmEgaW1wcmltaXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2lvbiBlbiBzdSB2aXN0YSBkZXRhbGxhZGEsIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBhY2VyY2Fyc2UgYSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIGxhIGhpc3RvcmlhIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gKG9yZGVuYWRvcyBpbnZlcnNhbWVudGUpIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0xhIGNhdGVnb3LDrWEgcG9yIGRlZmVjdG8gcXVlIHNlIG11ZXN0cmEsIHNpIG5vIHNlIHNlbGVjY2lvbmEgbmluZ3VuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0VsIGlkZW50aWZpY2Fkb3IgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24sIHBvciBlamVtcGxvLiBDb25maWdJdGVtICMsIE15Q29uZmlnSXRlbSAjLiBFbCB2YWxvciBwb3IgZGVmZWN0byBlcyBDb25maWdJdGVtICMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnQWN0aXZhIGF1dG9tw6F0aWNhbWVudGUgZWwgaW52b2NhZG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0V4cHJlc2nDs24gZGUgY2FkZW5hIGRlIHZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ03Ds2R1bG8gZGUgY2FkZW5hcyBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdBY3RpdmFkb3IgZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1NpIHNlIHB1ZWRlIGV2aXRhciBsYSBlamVjdWNpw7NuIGRlIENvbmZpZ0l0ZW1BQ0wgY29tcHJvYmFuZG8gbGFzIGRlcGVuZGVuY2lhcyBkZSBjYW1wb3MgZW4gY2FjaMOpLiBFc3RvIHB1ZWRlIG1lam9yYXIgbG9zIHRpZW1wb3MgZGUgY2FyZ2EgZGUgbG9zIGZvcm11bGFyaW9zLCBwZXJvIGRlYmUgZGVzYWN0aXZhcnNlIHNpIHNlIHZhbiBhIHV0aWxpemFyIEFDTE1vZHVsZXMgcGFyYSBJVFNNQ29uZmlnSXRlbS0geSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnUXXDqSBpbmZvcm1hY2nDs24gZ2VuZXJhbCBzZSBtdWVzdHJhIGVuIGxhIGNhYmVjZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWN0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWN0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWN0aXZvJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IHB1bGdhZGFzICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgcHVsZ2FkYXMgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBwdWxnYWRhcyAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBwdWxnYWRhcyAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ1JhY2sgZGUgMTkgcHVsZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiA0LDQ1IGNtICgxLDc1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IHB1bGdhZGFzICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICdDcmVtYWxsZXJhIGRlIDIxIHB1bGdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogOTcsNzkgY20gKDM4LDUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJ0VzdGFudGUgZGUgMjMgcHVsZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHB1bGdhZGFzICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBwdWxnYWRhcyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgcHVsZ2FkYXMgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSBwdWxnYWRhcyAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSBwdWxnYWRhcyAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgcHVsZ2FkYXMgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IHB1bGdhZGFzICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBwdWxnYWRhcyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgcHVsZ2FkYXMgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMS4wMDAgbW0gKDM5LDQgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBwdWxnYWRhcyAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1IHB1bGdhZGFzICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSBwdWxnYWRhcyAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBwdWxnYWRhcyAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSBwdWxnYWRhcyAoMjAwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHB1bGdhZGFzICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgcHVsZ2FkYXMgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBwdWxnYWRhcyAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDIyLDIzIGNtICg4LDc1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IHB1bGdhZGFzICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHB1bGdhZGFzICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDQwLDAxIGNtICgxNSw3NSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdDb250YWJpbGlkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBc2lnbmFjacOzbiBkZSBkaXJlY2Npb25lcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdUZWzDqWZvbm8gYW5hbMOzZ2ljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1RpcG8gZGUgYXBhcmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0NhcGFjaWRhZCBkZSBsYSBiYXRlcsOtYSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1RpcG8gZGUgYmF0ZXLDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdFZGlmaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmYXogZGUgYnVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ2xhc2UgZGUgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2lkYWQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0NhcGFjaWRhZCBwb3IgdGFyamV0YSBncsOhZmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdGFyamV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0xlY3RvciBkZSB0YXJqZXRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUaXBvIGRlIHRhcmpldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2F0ZWdvcsOtYSBkZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ1JlbG9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdWZWxvY2lkYWQgZGUgcmVsb2onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBmaXJtYSBkZSBjw7NkaWdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdUZWzDqWZvbm8gZGUgY29uZmVyZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIGNvbnN1bHRvcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnUMOzbmdhc2UgZW4gY29udGFjdG8gY29uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdDb250YWN0YXIgY29uIGVsIGRpc3RyaWJ1aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGNvbnRlbmVkb3Jlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0NvbnRyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUaXBvIGRlIGNvbnRyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnUGVyw61vZG8gZGVsIGNvbnRyYXRvIGRlc2RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ1BlcsOtb2RvIGRlbCBjb250cmF0byBoYXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdUZWzDqWZvbm8gaW5hbMOhbWJyaWNvICh0ZWzDqWZvbm8gREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnVW5pZGFkIGRlIGNvc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnUmVjdWVudG8gZGUgbGljZW5jaWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdGZWNoYSBkZSBjcmVhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0VzdGFudGVyw61hIHBlcnNvbmFsaXphZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTZXJ2aWRvciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0ZlY2hhIGRlIGxhIGZhY3R1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0ZlY2hhIGRlbCBwZWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0ZlY2hhIGRlIGxhIGdhcmFudMOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdGZWNoYSBkZSBwdWJsaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0VzY3JpdG9yaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBmaXJtYSBkZSBkb2N1bWVudG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnUmFjayBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgY29ycmVvIGVsZWN0csOzbmljbyAoQ2VydGlmaWNhZG9zIFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQ29udHJhdG8gZGUgdHJhYmFqbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0RpcmVjY2nDs24gSVAgZmluYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdGaW4gZGUgbGEgYXl1ZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdGZWNoYSBkZSBleHBpcmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRGlzY28gZHVybyBleHRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnQ29ydGFmdWVnb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ0FsbWFjZW5hbWllbnRvIGRlIGVuZXJnw61hIG1lZGlhbnRlIHZvbGFudGUgZGUgaW5lcmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0ZhY3RvciBkZSBmb3JtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnQWN1ZXJkbyBkZSBmcmFucXVpY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpw7NuIGdlbmVyYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdUYXJqZXRhcyBncsOhZmljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ1RhcmpldGEgZ3LDoWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsbyBkZSBoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdQZXNvIGRlbCBoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQXVyaWN1bGFyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2NvbG8gSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnR2VzdGnDs24gZGUgaWRlbnRpZGFkZXMgeSBhY2Nlc29zIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGludmVudGFyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdDb3N0ZXMgZGUgaW52ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgZmFjdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1RlY2xhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRvciBMQ0QgKHBhbnRhbGxhIGRlIGNyaXN0YWwgbMOtcXVpZG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIExFRCAoZGlvZG8gZW1pc29yIGRlIGx1eiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVGVsw6lmb25vIGZpam8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnT3JkZW5hZG9yIHBvcnTDoXRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdDYXBhIDE6IENhcGEgZsOtc2ljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdDYXBhIDI6IENhcGEgZGUgZW5sYWNlIGRlIGRhdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdDYXBhIDM6IENhcGEgZGUgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0NhcGEgMzogQ2FwYSBkZSByZWQgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdDYXBhIDQ6IENhcGEgZGUgdHJhbnNwb3J0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnQ2FwYSA1OiBDYXBhIGRlIHNlc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnQ2FwYSA2OiBDYXBhIGRlIHByZXNlbnRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdDYXBhIDc6IENhcGEgZGUgYXBsaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgYXJyZW5kYW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0NsYXZlIGRlIGxpY2VuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1RpcG8gZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRlIGxpY2VuY2lhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZGUgbGljZW5jaWEgaGFzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIGxpdGlvIGZvc2ZhdG8gZGUgaGllcnJvIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgaW9uZXMgZGUgbGl0aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdBY3VlcmRvIGRlIHByw6lzdGFtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnU2l0dWFkbyBlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ0ZhYnJpY2FudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ0NhcGFjaWRhZCBkZSBjYXJnYSBtw6F4aW1hIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVGlwbyBkZSBtZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgbcOzdmlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ03Ds3ZpbC9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXBjacOzbiBkZWwgbW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1Jlc29sdWNpw7NuIGRlbCBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1RhbWHDsW8gZGVsIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdSYXTDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm1hY2nDs24gZGUgbGEgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZGUgbGEgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdDYXBhIGRlIHJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIG7DrXF1ZWwtY2FkbWlvIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ0JhdGVyw61hIGRlIG7DrXF1ZWwtaGlkcnVybyBtZXTDoWxpY28gKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0FjdWVyZG8gZGUgY29uZmlkZW5jaWFsaWRhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ0N1YWRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTsO6bWVybyBkZSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTsO6bWVybyBkZSBtw7NkdWxvcyBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTsO6bWVybyBkZSB0YXJqZXRhcyBncsOhZmljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAoZGlvZG8gb3Jnw6FuaWNvIGVtaXNvciBkZSBsdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0Nvc3RlcyBkZSBleHBsb3RhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBwZWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdPdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdTYWxpZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgYXNvY2lhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRlbMOpZm9ubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGlwbyBkZSB0ZWzDqWZvbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdOw7pjbGVvcyBmw61zaWNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1N1bWluaXN0cm8gZGUgZW5lcmfDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdDb21wcmFkbyBlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUHJvZnVuZGlkYWQgZGUgbGEgZXN0YW50ZXLDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbmlkYWRlcyBkZSByYWNrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnSGFiaXRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdUYXJqZXRhIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnQ29udHJhdG8gZGUgdmVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVGVsw6lmb25vIHBvciBzYXTDqWxpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgcGxvbW8tw6FjaWRvIHNlbGxhZGEgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOw7ptZXJvIGRlIHNlcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGRlIHNlcnZpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgc2VydmljaW9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnRXRpcXVldGEgZGUgc2VydmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVGlwbyBkZSBlbmNodWZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdBbHRhdm9jZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnRXN0w6FuZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdEaXJlY2Npw7NuIElQIGRlIGluaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnQWxtYWNlbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdQYXJ0aWNpw7NuIGRlIGFsbWFjZW5hbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRmlsaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdSZXN1bWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnQ2xpZW50ZSBsaWdlcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0hpbG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1JBTSB0b3RhbCBkZSBsYSB0YXJqZXRhIGdyw6FmaWNhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdSQU0gdG90YWwgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciB0w6FjdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ycmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0h1YiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdDYXNjb3MgZGUgUlYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVGVsw6lmb25vIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ0PDoW1hcmEgd2ViJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/es_MX_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX01YX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRvcyBnZW5lcmFsZXMgZGUgZnVuY2lvbmFtaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0FqdXN0ZXMgZGUgbG9zIGRhdG9zIGRlIHNvbGljaXR1ZCBlbnRyYW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdDb25maWd1cmFjacOzbiBkZSBsb3MgZGF0b3MgZGUgcmVzcHVlc3RhIHNhbGllbnRlcyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGUgY2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgbGEgZGVmaW5pY2nDs24gZGVsIHJvbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhcXVldGVzIGRlIGNsYXNlcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdBcXXDrSBwdWVkZXMgaW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkltcG9ydCBxdWUgbXVlc3RyYW4gbnVlc3Ryb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG3DoXMgaGFiaXR1YWxlcy4gVGVuZ2EgZW4gY3VlbnRhIHF1ZSBwdWVkZSBzZXIgbmVjZXNhcmlhIGFsZ3VuYSBjb25maWd1cmFjacOzbiBhZGljaW9uYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ0FjdHVhbGl6YXIgbGFzIGVudGlkYWRlcyBleGlzdGVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXIgcGFxdWV0ZXMgZGUgY2xhc2VzIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc2UgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0NvbmZpZyBJdGVtIFJvbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWd1cmFyIGVsZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRybyBwb3IgY2xhc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1NlbGVjY2lvbmUgdW5hIGNsYXNlIGRlIGxhIGxpc3RhIHBhcmEgY3JlYXIgdW4gbnVldm8gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnQ2xhc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdBY2Npw7NuIG1hc2l2YSBkZSBJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0VubGFjZSBhIG90cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ8KhTsO6bWVybyBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBubyB2w6FsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdFbCBuw7ptZXJvIGRlIG90cm8gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIGVsIHF1ZSBzZSB2YSBhIGVubGF6YXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnwr9SZWFsbWVudGUgcXVpZXJlIGVsaW1pbmFyIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIG5vbWJyZSBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdFbCBub21icmUgeWEgZXN0w6EgZW4gdXNvIHBvciBsb3MgQ29uZmlnSXRlbXMgY29uIGxvcyBzaWd1aWVudGVzIG7Dum1lcm9zOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24gZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgdmVyc2nDs24geWEgZXN0w6EgZW4gdXNvIHBvciBlbCBDb25maWdJdGVtcyBjb24gZWwgc2lndWllbnRlIG7Dum1lcm8gKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlbCBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlbCBJbmNpZGVudGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0hpc3RvcmlhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs246ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0NvbnRlbmlkbyBkZSBsYSBoaXN0b3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXIgdGllbXBvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Zpc3RhIGRldGFsbGFkYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWd1cmFjacOzbiBkZSBlbGVtZW50b3MgcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIGRhdG9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTZWxlY2Npb25lIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdDb3JyZXIgYsO6c3F1ZWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ8K/VGFtYmnDqW4gYnVzY2FyIGVuIHZlcnNpb25lcyBhbnRlcmlvcmVzPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHBhcmEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ05pdmVsIGRlIHByb2Z1bmRpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnQWNlcmNhci9BbGVqYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnwqFOaXZlbCBtw6F4aW1vIGRlIGVubGFjZXMgYWxjYW56YWRvIHBhcmEgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdFbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBhY3R1YWwgZGVsIGRlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgSW5jaWRlbnRlIEFjdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfDmmx0aW1vIGNhbWJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdNb2RpZmljYWRvIHBvciDDumx0aW1hIHZleiBwb3InOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdTdXMgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0LDunNxdWVkYSBDb25maWdJdGVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICdUaXBvIGRlIG9iamV0byc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJ0ZpbHRybyBwb3IgdGlwbyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NlIGltcG9ydGFyw6FuIGxhcyBzaWd1aWVudGVzIGNsYXNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdTZSBpbXBvcnRhcsOhbiBsYXMgc2lndWllbnRlcyBmdW5jaW9uZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnVGVuZ2EgZW4gY3VlbnRhIHF1ZSB0YW1iacOpbiBzZSBjcmVhcsOhbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgeSBsYXMgY2xhc2VzIEdlbmVyYWxDYXRhbG9nIGNvcnJlc3BvbmRpZW50ZXMgeSBxdWUgbm8gc2UgZWxpbWluYXLDoW4gYXV0b23DoXRpY2FtZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfCv1F1aWVyZXMgY29udGludWFyPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfCoU5lY2VzaXRhIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdMYSBkZWZpbmljacOzbiBubyBlcyB1biBoYXNoIFlBTUwgdsOhbGlkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdSZXN1bWVuOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBkYSBuaW5nw7puIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfCoU5lY2VzaXRhIGFsIG1lbm9zIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHNlbGVjY2lvbmFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdObyB0aWVuZSBhY2Nlc28gZGUgZXNjcml0dXJhIGEgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbjogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ8KhTm8gc2UgaGEgZGVmaW5pZG8gbGEgY2xhc2UgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfCoUVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuICIlcyIgbm8gc2UgZW5jdWVudHJhIGVuIGxhIGJhc2UgZGUgZGF0b3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnwqFObyBzZSBoYSBwb2RpZG8gYm9ycmFyIGVsIGNvbmZpZ2l0ZW0gSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICfCoU5vIHNlIGhhIGVuY29udHJhZG8gbmluZ3VuYSB2ZXJzacOzbiBwYXJhIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSB0aWVuZSBuaW5nw7puIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgbyBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSB0aWVuZSBhY2Nlc28hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05vIHNlIHB1ZWRlIG1vc3RyYXIgZWwgaGlzdG9yaWFsLCDCoW5vIHNlIHRpZW5lIGVsIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGhpc3RvcmlhbCwgwqFubyBzZSB0aWVuZW4gZGVyZWNob3MgZGUgYWNjZXNvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTnVldm8gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTnVldmEgdmVyc2nDs24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0VzdGFkbyBkZSBkZXNwbGllZ3VlIGFjdHVhbGl6YWRvIChudWV2bz0lcywgYW50aWd1bz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnRXN0YWRvIGRlbCBpbmNpZGVudGUgYWN0dWFsaXphZG8gKG51ZXZvPSVzLCBhbnRpZ3VvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBib3JyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnRW5sYWNlIGEgJXMgKCB0aXBvPSVzKSBhw7FhZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnRW5sYWNlIGEgJXMgKCB0aXBvPSVzKSBib3JyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbmljacOzbiBkZSBDb25maWdJdGVtIGFjdHVhbGl6YWRhIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOb21icmUgYWN0dWFsaXphZG8gKG51ZXZvPSVzLCBhbnRpZ3VvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0cmlidXRvICVzIGFjdHVhbGl6YWRvIGRlICIlcyIgYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpw7NuICVzIGJvcnJhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSB0aWVuZSBuaW5nw7puIENvbmZpZ0l0ZW1JRCBvIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiwgwqFubyBzZSB0aWVuZW4gZGVyZWNob3MgZGUgYWNjZXNvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ8KhQ29uZmlnSXRlbUlEICVzIG5vIHNlIGVuY3VlbnRyYSBlbiBsYSBiYXNlIGRlIGRhdG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnaW1wcmVzbyBwb3IgJXMgZW4gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jaWEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfCoUNsYXNzSUQgaW52w6FsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgdGllbmUgbmluZ8O6biBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ8KhTm8gc2UgaGFuIGNvbmNlZGlkbyBkZXJlY2hvcyBkZSBhY2Nlc28gcGFyYSBlc3RhIGNsYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnwqFObyBoYXkgcmVzdWx0YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1Jlc3VsdGFkb3MgZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBlbGVtZW50bywgwqFubyBzZSB0aWVuZW4gZGVyZWNob3MgZGUgYWNjZXNvIHBhcmEgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnwqFDb25maWdJdGVtIG5vIGVuY29udHJhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIHZlcnNpb25lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYWNpb25hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnYWR2ZXJ0ZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIGVzdGFkbyBkZSBkZXNwbGllZ3VlIGRlIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdFbCBlc3RhZG8gZGVsIGluY2lkZW50ZSBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnU2luIHBlcm1pc28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnwqFGaWx0cm8gaW52w6FsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnUGFyw6FtZXRyb3MgZGUgYsO6c3F1ZWRhIGludsOhbGlkb3MnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdFbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gbW9zdHJhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcG8gZGUgRXN0YWRvIGRlIERlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVGlwbyBhY3R1YWwgZGVsIGVzdGFkbyBkZWwgaW5jaWRlbnRlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0VudHJlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmljY2lvbmVzIGRlIGNsYXNlIHBhcmEgZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgdW5hIG8gbcOhcyBjbGFzZXMgcGFyYSByZXN0cmluZ2lyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWNjaW9uZXMgZGUgY2xhc2UgcGFyYSBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgdW5hIG8gbcOhcyBjbGFzZXMgcGFyYSByZXN0cmluZ2lyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW7DoW1pY28gKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdFc3TDoXRpY2EgKFZlcnNpw7NuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXBvIGRlIHJlZmVyZW5jaWEgZGUgZW5sYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ1NpIGVzdGUgZW5sYWNlIHNlIGFwbGljYSBhbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBvIGEgbGEgdmVyc2nDs24gZXN0w6F0aWNhIGRlbCBvYmpldG8gZGUgcmVmZXJlbmNpYS4gRWwgY8OhbGN1bG8gZGVsIGVzdGFkbyBhY3R1YWwgZGVsIGluY2lkZW50ZSBzw7NsbyBzZSByZWFsaXphIGVuIGxvcyBlbmxhY2VzIGRpbsOhbWljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU2VsZWNjaW9uZSBlbCBhdHJpYnV0byBwb3IgZWwgcXVlIHNlIGJ1c2NhcsOhbiBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnTGEgZXN0cnVjdHVyYSBiYXNlIG5vIGVzIHbDoWxpZGEuIFBvciBmYXZvciwgcHJvcG9yY2lvbmUgdW4gaGFzaCBjb24gZGF0b3MgZW4gZm9ybWF0byBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0VzIG5lY2VzYXJpbyBxdWUgbGEgY2FkZW5hIFlBTUwgY29taWVuY2UgcG9yIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ05vIHNlIGhhIHBvZGlkbyBwdXJnYXIgbGEgdGFibGEgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTm8gc2UgaGFuIGVuY29udHJhZG8gY2FtcG9zIGRpbsOhbWljb3MgcmVsZXZhbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ05vIHNlIGhhIHBvZGlkbyBpbnNlcnRhciBlbiBsYSB0YWJsYSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VydGFkYXMgMCBmaWxhcyBlbiBsYSB0YWJsYSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTsO6bWVybyBtw6F4aW1vIGRlIHVuIGVsZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9ydGFyL2V4cG9ydGFyIGFyY2hpdm9zIGFkanVudG9zIChjb21vIMO6bHRpbWFzIGVudHJhZGFzIHBvciBsw61uZWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2nDs24gQ2FkZW5hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0Vycm9yIGFsIHNpbmNyb25pemFyIGxhcyBkZWZpbmljaW9uZXMuIFBvciBmYXZvciwgY29tcHJ1ZWJlIGVsIHJlZ2lzdHJvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1RpZW5lIGRlZmluaWNpb25lcyBkZSBJVFNNQ29uZmlnSXRlbSBxdWUgbm8gZXN0w6FuIHNpbmNyb25pemFkYXMuIERlc3BsaWVndWUgbG9zIGNhbWJpb3MgZW4gbG9zIGNhbXBvcyBkaW7DoW1pY29zIGRlIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdNYW50ZW5pbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFuaWZpY2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBhcmFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSZXRpcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZpc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1BydWViYS9Db250cm9sIGRlIGNhbGlkYWQnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1Zpc2nDs24gZ2VuZXJhbCB5IGNvbmZpcm1hY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0YXIgY2xhc2VzL3JvbGVzIHkgc3VzIGNhbXBvcyByZWxhY2lvbmFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdTZSBoYSBwcm9kdWNpZG8gdW4gZXJyb3IgZHVyYW50ZSBsYSBpbXBvcnRhY2nDs24gZGUgbGEgY2xhc2UuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBPY3VsdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIFNlIG11ZXN0cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgY29uZGljaW9uZXMgZGUgYsO6c3F1ZWRhIGV4dGVuZGlkYXMgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBDb24gZXN0YSBmdW5jacOzbiBwdWVkZSBidXNjYXIsIHBvciBlamVtcGxvLCBlbCBub21icmUgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIGNvbmRpY2lvbmVzIGNvbW8gIigqY2xhdmUxKiYmKmNsYXZlMiopIiBvICIoKmNsYXZlMSp8fCpjbGF2ZTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgYW1wbGlhciBsYXMgY29uZGljaW9uZXMgZGUgYsO6c3F1ZWRhIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4gQ29uIGVzdGEgZnVuY2nDs24gcHVlZGUgYnVzY2FyLCBwb3IgZWplbXBsbywgZWwgbm9tYnJlIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBjb24gZXN0ZSB0aXBvIGRlIGNvbmRpY2lvbmVzIGNvbW8gIigqY2xhdmUxKiYmKmNsYXZlMiopIiBvICIoKmNsYXZlMSp8fCpjbGF2ZTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0NJcyBhc2lnbmFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJcyBhc2lnbmFkb3MgYSBsYSBlbXByZXNhIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSXMgYXNpZ25hZG9zIGFsIHVzdWFyaW8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ29uZmlndXJhY2nDs24gZGUgbGEgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnQnVzY2EgdW4gbm9tYnJlIMO6bmljbyBzw7NsbyBkZW50cm8gZGUgbGEgbWlzbWEgY2xhc2UgZGUgQ29uZmlnSXRlbSAoXCdjbGFzc1wnKSBvIGdsb2JhbG1lbnRlIChcJ2dsb2JhbFwnKSwgbG8gcXVlIHNpZ25pZmljYSBxdWUgY2FkYSBDb25maWdJdGVtIGV4aXN0ZW50ZSBzZSB0aWVuZSBlbiBjdWVudGEgYWwgYnVzY2FyIGR1cGxpY2Fkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdFbGlqYSB1biBtw7NkdWxvIHBhcmEgYXBsaWNhciB1biBlc3F1ZW1hIGRlIG5vbWJyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdFbGlqYSB1biBtw7NkdWxvIHBhcmEgYXBsaWNhciB1biBlc3F1ZW1hIG51bcOpcmljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnRWxpamEgdW4gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW4gZXNxdWVtYSBkZSBjYWRlbmFzIGRlIHZlcnNpb25lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdFbGlqYSBhdHJpYnV0b3MgcGFyYSBhY3RpdmFyIGxhIGNyZWFjacOzbiBkZSB1bmEgbnVldmEgdmVyc2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0VsaWphIGxhcyBjYXRlZ29yw61hcyBxdWUgZGVzZWEgYXNpZ25hciBhIGVzdGEgY2xhc2UgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyb3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGNvbHVtbmEgcGFyYSBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sdW1uYXMgcXVlIHNlIHB1ZWRlbiBmaWx0cmFyIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIE5vdGE6IFNvbG8gc2UgcGVybWl0ZW4gYXRyaWJ1dG9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiB5IGNhbXBvcyBkaW7DoW1pY29zIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdFbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0HDsWFkaXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnRWRpY2nDs24gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgcGVybWl0ZSBlbCByZWdpc3RybyBlbiBlbCBoaXN0b3JpYWwgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgYWN0dWFsaXphIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gYSBzdSBkZWZpbmljacOzbiBhY3R1YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSGlzdG9yaWFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnQ29uZmlndXJhciBlbGVtZW50byBpbXByZXNvcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnQ29uZmlndXJhciBlbCB6b29tIGRlbCBlbGVtZW50by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdWaXN0YSBlbiDDoXJib2wgZGUgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xvcyBDb25maWdJdGVtcyBkZSBsYXMgc2lndWllbnRlcyBjbGFzZXMgbm8gc2UgYWxtYWNlbmFyw6FuIGVuIGVsIHNlcnZpZG9yIEVsYXN0aWNzZWFyY2guIFBhcmEgYXBsaWNhciBlc3RvIGEgbG9zIENJcyBleGlzdGVudGVzLCBsYSBtaWdyYWNpw7NuIGRlbCBDSSB0aWVuZSBxdWUgc2VyIGVqZWN1dGFkYSBhIHRyYXbDqXMgZGUgbGEgY29uc29sYSwgZGVzcHXDqXMgZGUgY2FtYmlhciBlc3RhIG9wY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xvcyBDb25maWdJdGVtcyBjb24gbG9zIHNpZ3VpZW50ZXMgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIG5vIHNlIGFsbWFjZW5hcsOhbiBlbiBlbCBzZXJ2aWRvciBFbGFzdGljc2VhcmNoLiBQYXJhIGFwbGljYXIgZXN0byBhIGxvcyBDSXMgZXhpc3RlbnRlcywgbGEgbWlncmFjacOzbiBkZWwgQ0kgdGllbmUgcXVlIHNlciBlamVjdXRhZGEgYSB0cmF2w6lzIGRlIGxhIGNvbnNvbGEsIGRlc3B1w6lzIGRlIGNhbWJpYXIgZXN0YSBvcGNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdDb25maWd1cmFjacOzbiBMw61taXRlIGRlIGVsZW1lbnRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnQ29uZmlndXJhY2nDs24gTMOtbWl0ZSBkZSBlbGVtZW50b3MgcG9yIHDDoWdpbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdCYXNlIGRlIGRhdG9zIGRlIGdlc3Rpw7NuIGRlIGxhIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnTcOzZHVsbyBkZSBjb25maWd1cmFjacOzbiBkZSBlbGVtZW50b3MgaW5kaXZpZHVhbGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBxdWUgYnVzY2EgZWwgZW5ydXRhbWllbnRvIGJhY2tlbmQgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JlYXIgeSBnZXN0aW9uYXIgbGFzIGRlZmluaWNpb25lcyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0NvbiBlc3RhIG9wY2nDs24gZXMgcG9zaWJsZSByZWxsZW5hciBhdXRvbcOhdGljYW1lbnRlIHVuIGNhbXBvIENJLCBkZXBlbmRpZW5kbyBkZWwgcmVjdWVudG8gZGUgQ0kgdmluY3VsYWRvcyBjb24gZWwgdGlwbyBleGlzdGVudGUgRGVwZW5kc09uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdMb3MgY2xpZW50ZXMgcHVlZGVuIHZlciBsYXMgdmVyc2lvbmVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdMb3MgY2xpZW50ZXMgdGllbmVuIGxhIHBvc2liaWxpZGFkIGRlIGNhbWJpYXIgbWFudWFsbWVudGUgZW50cmUgdmVyc2lvbmVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHByZWRldGVybWluYWRvcyBxdWUgc2UgdXRpbGl6YXLDoW4gZW4gZWwgYXRyaWJ1dG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLiBFamVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9YcOxbztJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PcOabHRpbW87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHBvciBkZWZlY3RvIGEgdXRpbGl6YXIgZW4gZWwgYXRyaWJ1dG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGNvbmZpZy4gRWplbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXIgYWNjaW9uZXMgZW4gbGFzIHF1ZSB1biBib3TDs24gZGUgY29uZmlndXJhY2nDs24gZXN0w6EgZGlzcG9uaWJsZSBlbiBlbCB3aWRnZXQgZGUgb2JqZXRvcyB2aW5jdWxhZG9zIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFRlbmdhIGVuIGN1ZW50YSBxdWUgZXN0YXMgYWNjaW9uZXMgZGViZW4gaGFiZXIgcmVnaXN0cmFkbyBsb3Mgc2lndWllbnRlcyBhcmNoaXZvcyBKUyB5IENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgeSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmUgdW4gZXNxdWVtYSBUZW1wbGF0ZTo6VG9vbGtpdCBwYXJhIGNhZGVuYXMgZGUgdmVyc2nDs24uIFPDs2xvIHNlIHV0aWxpemEgc2kgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIHNlIGVzdGFibGVjZSBlbiBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIGNvbmp1bnRvIGRlIGNvbmRpY2lvbmVzIGJham8gbGFzIGN1YWxlcyB1biBjbGllbnRlIHB1ZWRlIHZlciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4gTGFzIGNvbmRpY2lvbmVzIHB1ZWRlbiByZXN0cmluZ2lyc2Ugb3BjaW9uYWxtZW50ZSBhIGRldGVybWluYWRvcyBncnVwb3MgZGUgY2xpZW50ZXMuIEVsIG5vbWJyZSBlcyBlbCDDum5pY28gYXRyaWJ1dG8gb2JsaWdhdG9yaW8uIFNpIG5vIHNlIGluZGljYW4gb3RyYXMgb3BjaW9uZXMsIHRvZG9zIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2Vyw6FuIHZpc2libGVzIGVuIGVzYSBjYXRlZ29yw61hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgZWxpbWluYXIgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIG1lZGlhbnRlIGxhIGludGVyZmF6IGdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgcGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIG9idGVuZXIgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIHV0aWxpemFuZG8gbGEgSW50ZXJmYXogR2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgYnVzY2FyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIHV0aWxpemFuZG8gbGEgSW50ZXJmYXogR2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnVmVyc2nDs24gQ2FkZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHJlc3VtZW4gcGFyYSBtb3N0cmFyIGxhIHZpc3RhIHBlcXVlw7FhIGRlIHVuYSBsaXN0YSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBzaSBsYXMgZXRpcXVldGFzIGRlIHRpcG8gZGUgZW5sYWNlIGRlYmVuIG1vc3RyYXJzZSBlbiBsYXMgY29uZXhpb25lcyBkZSBsb3Mgbm9kb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmUgZXhwcmVzaW9uZXMgcmVndWxhcmVzIGluZGl2aWR1YWxtZW50ZSBwYXJhIGNhZGEgY2xhc2UgQ29uZmlnSXRlbSBwYXJhIGNvbXByb2JhciBlbCBub21icmUgZGUgQ29uZmlnSXRlbSB5IG1vc3RyYXIgbG9zIG1lbnNhamVzIGRlIGVycm9yIGNvcnJlc3BvbmRpZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBkaXNwb25pYmxlcyBkZSBDSXMgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZnVuY2nDs24gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGNvbnNpc3RpciBlbiB1biBub21icmUgZGUgY2xhc2UgeSB1biBhcnJheSBkZSBjYW1wb3MgZGlzcG9uaWJsZXMgcGFyYSBsYSBjbGFzZSBjb3JyZXNwb25kaWVudGUuIExhcyBlbnRyYWRhcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBkZWJlbiByZXNwZXRhciBlbCBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHByZWRldGVybWluYWRvIHBhcmEgbGEgY2xhc2lmaWNhY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBlc3RhIG9wZXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcHJlZGV0ZXJtaW5hZG8gZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBBcnJpYmE6IGVsIG3DoXMgYW50aWd1byBhcnJpYmEuIEFiYWpvOiBlbCBtw6FzIHJlY2llbnRlIGFycmliYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwcmVkZXRlcm1pbmFkbyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuIEFycmliYTogZWwgbcOhcyBhbnRpZ3VvIGFycmliYS4gQWJham86IGVsIG3DoXMgcmVjaWVudGUgYXJyaWJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcHJlZGV0ZXJtaW5hZG8gZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBlc3RhIG9wZXJhY2nDs24uIEFycmliYTogZWwgbcOhcyBhbnRpZ3VvIGFycmliYS4gQWJham86IGVsIG3DoXMgcmVjaWVudGUgYXJyaWJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgcG9yIGRlZmVjdG8gZGUgbG9zIENJcyBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZXBlbmRpZW5kbyBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgY29uc2lzdGlyIGVuIHVuIG5vbWJyZSBkZSBjbGFzZSB5IHVuIGFycmF5IGRlIGNhbXBvcyBkaXNwb25pYmxlcyBwYXJhIGxhIGNsYXNlIGNvcnJlc3BvbmRpZW50ZS4gTGFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7DoW1pY29zIGRlYmVuIHJlc3BldGFyIGVsIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRGVmaW5lIGxhIHByb2Z1bmRpZGFkIGRlIGxhcyByZWxhY2lvbmVzIHF1ZSBzZSBtb3N0cmFyw6FuIHBvciBkZWZlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBtb3N0cmFkbyBwb3IgZGVmZWN0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBtb3N0cmFkbyBwb3IgZGVmZWN0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uIEVqZW1wbG86ICJDbGF2ZSIgZGViZSB0ZW5lciBlbCBub21icmUgZGVsIENhbXBvIERpbsOhbWljbyBlbiBlc3RlIGNhc28gXCdYXCcsICJDb250ZW5pZG8iIGRlYmUgdGVuZXIgZWwgdmFsb3IgZGVsIENhbXBvIERpbsOhbWljbyBkZXBlbmRpZW5kbyBkZWwgdGlwbyBkZSBDYW1wbyBEaW7DoW1pY28sIFRleHRvOiBcJ2EgdGV4dFwnLCBEZXNwbGVnYWJsZTogXCcxXCcsIEZlY2hhL0hvcmE6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U2Vjb25kPTU5O1wnIHkgbyBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmUgZWwgc3Vib2JqZXRvIHBvciBkZWZlY3RvIGRlIGxhIGNsYXNlIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgZGlzcG9uaWJsZXMgZGUgQ0lzIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGZ1bmNpw7NuIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBjb25zaXN0aXIgZW4gdW4gbm9tYnJlIGRlIGNsYXNlIHkgdW4gYXJyYXkgZGUgY2FtcG9zIGRpc3BvbmlibGVzIHBhcmEgbGEgY2xhc2UgY29ycmVzcG9uZGllbnRlLiBMYXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOhbWljb3MgZGViZW4gcmVzcGV0YXIgZWwgZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmUgbGEgYWx0dXJhIGRlbCBjb21wb25lbnRlIGRlbCBlZGl0b3IgZGUgdGV4dG8gZW5yaXF1ZWNpZG8gcGFyYSBlc3RhIHBhbnRhbGxhLiBJbnRyb2R1emNhIHVuIG7Dum1lcm8gKHDDrXhlbGVzKSBvIHVuIHZhbG9yIHBvcmNlbnR1YWwgKHJlbGF0aXZvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG7Dum1lcm8gZGUgZmlsYXMgZGVsIGVkaXRvciBkZSBkZWZpbmljaW9uZXMgQ0kgZW4gbGEgaW50ZXJmYXogZGUgYWRtaW5pc3RyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gZGUgbG9zIGVzdGFkb3MgZGUgaW5jaWRlbmNpYSBkZSBhbHRvIChwb3IgZWplbXBsbywgY3LDrXRpY28pIGEgYmFqbyAocG9yIGVqZW1wbG8sIGZ1bmNpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgcmVsZXZhbnRlcyBlbiBsb3MgcXVlIGxvcyB0aWNrZXRzIHZpbmN1bGFkb3MgcHVlZGVuIGFmZWN0YXIgYWwgZXN0YWRvIGRlIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgZGUgbG9zIENJcyBlbiBsYSB2aXN0YSBjb21wbGVqYSBkZSBsYSB0YWJsYSBkZSBlbmxhY2VzIHBhcmEgdG9kYXMgbGFzIGNsYXNlcyBkZSBDSS4gU2kgbm8gaGF5IG5pbmd1bmEgZW50cmFkYSwgc2UgbXVlc3RyYW4gbGFzIGNvbHVtbmFzIHBvciBkZWZlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgZGUgbG9zIENJcyBlbiBsYSB2aXN0YSBjb21wbGVqYSBkZSBsYSB0YWJsYSBkZSBlbmxhY2VzLCBkZXBlbmRpZW5kbyBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgbGxldmFyIGNvbW8gcHJlZmlqbyBlbCBub21icmUgZGUgbGEgY2xhc2UgeSBkb3MgcHVudG9zIGRvYmxlcyAocG9yIGVqZW1wbG8sIENvbXB1dGVyOjopLiBIYXkgYWxndW5vcyBhdHJpYnV0b3MgQ0kgcXVlIHNvbiBjb211bmVzIGEgdG9kb3MgbG9zIENJcyAoZWplbXBsbyBwYXJhIGxhIGNsYXNlIENvbXB1dGFkb3I6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFBhcmEgbW9zdHJhciBsb3MgQXRyaWJ1dG9zLUNpIGluZGl2aWR1YWxlcyBjb21vIHNlIGRlZmluZW4gZW4gbGEgRGVmaW5pY2nDs24tQ2ksIHNlIGRlYmUgdXRpbGl6YXIgZWwgc2lndWllbnRlIGVzcXVlbWEgKGVqZW1wbG8gcGFyYSBsYSBjbGFzZSBDb21wdXRhZG9yKTogT3JkZW5hZG9yOjpEaXNjb0R1cm86OjEsIENvbXB1dGFkb3I6OkRpc2NvRHVybzo6MTo6Q2FwYWNpZGFkOjoxLCBDb21wdXRhZG9yOjpEaXNjb0R1cm86OjIsIENvbXB1dGFkb3I6OkRpc2NvRHVybzo6Mjo6Q2FwYWNpZGFkOjoxLiBTaSBubyBoYXkgbmluZ3VuYSBlbnRyYWRhIHBhcmEgdW5hIGNsYXNlIENJLCBzZSBtdWVzdHJhbiBsYXMgY29sdW1uYXMgcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgZWxlbWVudG9zIGVzdMOhbiBkaXNwb25pYmxlcyBwYXJhICJBY2Npw7NuIiBlbiBlbCB0ZXJjZXIgbml2ZWwgZGUgbGEgZXN0cnVjdHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIGVuIGVsIHByaW1lciBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIGVuIGVsIHNlZ3VuZG8gbml2ZWwgZGUgbGEgZXN0cnVjdHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgdGlwbyBkZSBlbmxhY2UgKG5vbWJyYWRvIGRlc2RlIGxhIHBlcnNwZWN0aXZhIGRlbCB0aWNrZXQpIHB1ZWRlIGFmZWN0YXIgYWwgZXN0YWRvIGRlIHVuIENJIHZpbmN1bGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSB0aXBvIGRlIHRpY2tldCBwdWVkZSBhZmVjdGFyIGFsIGVzdGFkbyBkZSB1biBDSSB2aW5jdWxhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnQWN0dWFsaXphY2nDs24gZGUgbGEgZGVmaW5pY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0JvcnJhciBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0NvbG9yIGRlbCBFc3RhZG8gZGUgRGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdFc3RhZG8gZGUgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgZGUgY2FtcG9zIGRpbsOhbWljb3MgcXVlIG1hcmNhIGxhcyBkZWZpbmljaW9uZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbW8gbm8gc2luY3Jvbml6YWRhcyBzaSBjYW1iaWFuIGxvcyBjYW1wb3MgZGluw6FtaWNvcyBxdWUgY29udGllbmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGNhbXBvcyBhZGljaW9uYWxlcyBJVFNNIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSByZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWN0aXZhIGxhIGZ1bmNpw7NuIGRlIGFjY2nDs24gbWFzaXZhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBwYXJhIHF1ZSBlbCBmcm9udGVuZCBkZWwgYWdlbnRlIHRyYWJhamUgZW4gbcOhcyBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBhIGxhIHZlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0FjdGl2YSBsYSBmdW5jacOzbiBkZSBhY2Npw7NuIG1hc2l2YSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc8OzbG8gcGFyYSBsb3MgZ3J1cG9zIGRlIGxhIGxpc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdBY3RpdmEvZGVzYWN0aXZhIGxhIGZ1bmNpb25hbGlkYWQgZGUgY29tcHJvYmFyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBwYXJhIG5vbWJyZXMgw7puaWNvcy4gQW50ZXMgZGUgaGFiaWxpdGFyIGVzdGEgb3BjacOzbiBkZWJlIGNvbXByb2JhciBzaSBleGlzdGVuIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBjb24gbm9tYnJlcyBkdXBsaWNhZG9zLiBQdWVkZSBoYWNlcmxvIGNvbiBlbCBjb21hbmRvIGRlIGNvbnNvbGEgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgcGFyYSBlc3RhYmxlY2VyIGVsIGVzdGFkbyBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gZWwgdGlja2V0LWNvbmZpZ2l0ZW0tZW5sYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdDYW1wb3MgZGVsIMOtbmRpY2UgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLCB1dGlsaXphZG9zIHBhcmEgbGEgYsO6c3F1ZWRhIGRlIHRleHRvIGNvbXBsZXRvLiBMb3MgY2FtcG9zIHRhbWJpw6luIHNlIGFsbWFjZW5hbiwgcGVybyBubyBzb24gb2JsaWdhdG9yaW9zIHBhcmEgbGEgZnVuY2lvbmFsaWRhZCBnZW5lcmFsLiBMYSBpbmNsdXNpw7NuIGRlIGFuZXhvcyBwdWVkZSBkZXNhY3RpdmFyc2UgcG9uaWVuZG8gbGEgZW50cmFkYSBhIDAgbyBib3Jyw6FuZG9sYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0NhbXBvcyBhbG1hY2VuYWRvcyBlbiBlbCDDrW5kaWNlIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgdXRpbGl6YW4gcGFyYSBvdHJhcyBjb3NhcyBhZGVtw6FzIGRlIGxhcyBiw7pzcXVlZGFzIGRlIHRleHRvIGNvbXBsZXRvLiBQYXJhIGxhIGZ1bmNpb25hbGlkYWQgY29tcGxldGEgdG9kb3MgbG9zIGNhbXBvcyBzb24gb2JsaWdhdG9yaW9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ1BhcmEgY2FkYSB3ZWJzZXJ2aWNlIChjbGF2ZSkgc2UgcHVlZGUgZGVmaW5pciB1biBhcnJheSBkZSBjbGFzZXMgKHZhbG9yKSBzb2JyZSBsYXMgcXVlIHNlIHJlc3RyaW5nZSBsYSBpbXBvcnRhY2nDs24uIFBhcmEgdG9kYXMgbGFzIGNsYXNlcyBlbGVnaWRhcywgbyB0b2RhcyBsYXMgY2xhc2VzIGV4aXN0ZW50ZXMsIGxvcyBhdHJpYnV0b3MgZGUgaWRlbnRpZmljYWNpw7NuIHRlbmRyw6FuIHF1ZSBzZXIgZWxlZ2lkb3MgZW4gbGEgY29uZmlndXJhY2nDs24gZGVsIGludm9jYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlbCBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBsYSBjYXBhIGludm9jYWRvcmEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdSZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0VzdGFkb0luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdXllIGVzdGFkb3MgZGUgZGVzcGxpZWd1ZSBlbiBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdXllIGVzdGFkb3MgZGUgaW5jaWRlbmNpYXMgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgbW9zdHJhcsOhbiBlbiBlbCByZXN1bHRhZG8gZGUgZXN0YSBvcGVyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ03Ds2R1bG8gcGFyYSBjb21wcm9iYXIgZWwgZ3J1cG8gcmVzcG9uc2FibGUgZGUgdW5hIGNsYXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gcGFyYSBjb21wcm9iYXIgZWwgZ3J1cG8gcmVzcG9uc2FibGUgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgZXN0YWTDrXN0aWNhcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOb21icmUgTcOzZHVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTcOzZHVsbyBudW3DqXJpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIHNlIG1vc3RyYXLDoW4gZW4gY2FkYSBww6FnaW5hIGRlIHVuIHJlc3VsdGFkbyBkZSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIGRlYmVuIG1vc3RyYXJzZSBlbiBjYWRhIHDDoWdpbmEgZGUgdW4gcmVzdWx0YWRvIGRlIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmpldG9zIGEgYnVzY2FyLCBjdcOhbnRhcyBlbnRyYWRhcyB5IHF1w6kgYXRyaWJ1dG9zIG1vc3RyYXIuIExvcyBhdHJpYnV0b3MgQ29uZmlnSXRlbSBkZWJlbiBhbG1hY2VuYXJzZSBleHBsw61jaXRhbWVudGUgYSB0cmF2w6lzIGRlIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Zpc3RhIEdlbmVyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxhcyBjYXRlZ29yw61hcyBkZSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBmaWx0cm9zIGRlIGNvbHVtbmEgZGUgbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcGVxdWXDsW9zLiBQb3IgZmF2b3IsIHRlbmdhIGVuIGN1ZW50YTogZXN0YWJsZWNlciBcJ0FjdGl2b1wnIGEgMCBzw7NsbyBldml0YXLDoSBxdWUgbG9zIGFnZW50ZXMgZWRpdGVuIGxvcyBhanVzdGVzIGRlIGVzdGUgZ3J1cG8gZW4gc3VzIHByZWZlcmVuY2lhcyBwZXJzb25hbGVzLCBwZXJvIHNlZ3VpcsOhIHBlcm1pdGllbmRvIGEgbG9zIGFkbWluaXN0cmFkb3JlcyBlZGl0YXIgbG9zIGFqdXN0ZXMgZW4gbm9tYnJlIGRlIG90cm8gdXN1YXJpby4gVXRpbGljZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHBhcmEgY29udHJvbGFyIGVuIHF1w6kgw6FyZWEgZGViZW4gbW9zdHJhcnNlIGVzdG9zIGFqdXN0ZXMgZW4gbGEgaW50ZXJmYXogZGUgdXN1YXJpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgY29sb3IgZGUgbG9zIGVzdGFkb3MgZGUgZGVzcGxpZWd1ZSBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgZWplbXBsbyBkZSBwZXJtaXNvcyBkZSBncnVwbyBkZWwgY2F0w6Fsb2dvIGdlbmVyYWwgZGUgYXRyaWJ1dG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgbcOzZHVsbyBkZSBub21icmVzIGRlIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGVsIG3Ds2R1bG8gbnVtw6lyaWNvIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbGFzIHDDoWdpbmFzIChlbiBsYXMgcXVlIHNlIG11ZXN0cmFuIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZWwgbcOzZHVsbyBkZSBjYWRlbmFzIGRlIHZlcnNpw7NuIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBlbCBtw7NkdWxvIGRlbCBraXQgZGUgaGVycmFtaWVudGFzIGRlIHBsYW50aWxsYXMgZGUgY2FkZW5hcyBkZSB2ZXJzacOzbiBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIGFjdGl2YWRvciBkZSB2ZXJzacOzbiBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ1JlYWxpemEgbGEgYWNjacOzbiBjb25maWd1cmFkYSBwYXJhIGNhZGEgZXZlbnRvIChjb21vIEludm9rZXIpIHBhcmEgY2FkYSBXZWJzZXJ2aWNlIGNvbmZpZ3VyYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnUGVybWlzb3MgZGUgZ3J1cG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIGFjY2nDs24gZGUgYWRqdW50YXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIHZpc3RhIGRlIMOhcmJvbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgYW1wbGlhY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgYcOxYWRpciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gbWFzaXZhIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBlZGljacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlbCBoaXN0b3JpYWwgZGUgSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGltcHJlc2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQcml2aWxlZ2lvcyBuZWNlc2FyaW9zIHBhcmEgZWxpbWluYXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0J1c2NhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdFc3RhYmxlemNhIGVsIGVzdGFkbyBkZSBsYSBpbmNpZGVuY2lhIGRlIHVuIENJIGRlIGZvcm1hIGF1dG9tw6F0aWNhIGN1YW5kbyBzZSB2aW5jdWxlIHVuIHRpY2tldCBhIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBlbCBlc3RhZG8gZGUgZGVzcGxpZWd1ZSBlbiBsYSBwYW50YWxsYSBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFc3RhYmxlY2UgZWwgZXN0YWRvIGRlIGxhIGluY2lkZW5jaWEgZW4gbGEgcGFudGFsbGEgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBxdWUgcGVybWl0ZSB2aW5jdWxhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBjb24gb3RybyBvYmpldG8gZW4gbGEgdmlzdGEgZGUgem9vbSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VtZW4gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgYWNjZWRlciBhbCBoaXN0b3JpYWwgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgem9vbSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZWxpbWluYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gc3UgdmlzdGEgZGUgem9vbSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSB2aXN1YWxpemFyIGxvcyBlbmxhY2VzIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gY29tbyB1bmEgdmlzdGEgZW4gw6FyYm9sLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZHVwbGljYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gZWwgcmVzdW1lbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBkdXBsaWNhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSB6b29tIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGVkaXRhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSB6b29tIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIHZvbHZlciBhIGxhIHZpc3RhIGRlIHpvb20gZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBpbXByaW1pciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBzdSB2aXN0YSBkZSB6b29tIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBhbXBsaWFyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VtZW4gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIGVsIGhpc3RvcmlhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gKG9yZGVuYWRvIGRlIGZvcm1hIGludmVyc2EpIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0xhIGNhdGVnb3LDrWEgcG9yIGRlZmVjdG8gcXVlIHNlIG11ZXN0cmEsIHNpIG5vIHNlIHNlbGVjY2lvbmEgbmluZ3VuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0VsIGlkZW50aWZpY2Fkb3IgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24sIHBvciBlamVtcGxvIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBFbCB2YWxvciBwb3IgZGVmZWN0byBlcyBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBY3RpdmEgYXV0b23DoXRpY2FtZW50ZSBlbCBpbnZvY2Fkb3IgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnRXhwcmVzacOzbiBkZSBjYWRlbmEgZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnTcOzZHVsbyBkZSBjYWRlbmFzIGRlIHZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ0FjdGl2YWRvciBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICdTaSBsb3MgY2FtcG9zIGRlYmVuIHJlbGxlbmFyc2UgYXV0b23DoXRpY2FtZW50ZSAoMSksIHkgZW4gZXNlIGNhc28gdGFtYmnDqW4gZGViZW4gb2N1bHRhcnNlIGRlIGxvcyBmb3JtdWxhcmlvcyBkZSBsYXMgZW50cmFkYXMgKDIpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdTaSBzZSBwdWVkZSBldml0YXIgbGEgZWplY3VjacOzbiBkZSBDb25maWdJdGVtQUNMIGNvbXByb2JhbmRvIGxhcyBkZXBlbmRlbmNpYXMgZGUgY2FtcG9zIGVuIGNhY2jDqS4gRXN0byBwdWVkZSBtZWpvcmFyIGxvcyB0aWVtcG9zIGRlIGNhcmdhIGRlIGxvcyBmb3JtdWxhcmlvcywgcGVybyBkZWJlIGRlc2FjdGl2YXJzZSBzaSBzZSB2YW4gYSB1dGlsaXphciBBQ0xNb2R1bGVzIHBhcmEgSVRTTUNvbmZpZ0l0ZW0tIHkgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ1F1w6kgaW5mb3JtYWNpw7NuIGdlbmVyYWwgc2UgbXVlc3RyYSBlbiBsYSBjYWJlY2VyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdDbGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVjdGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVjdGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVjdGl2byc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBwdWxnYWRhcyAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHB1bGdhZGFzICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgcHVsZ2FkYXMgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgcHVsZ2FkYXMgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICdSYWNrIGRlIDE5IHB1bGdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBwdWxnYWRhcyAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnQ3JlbWFsbGVyYSBkZSAyMSBwdWxnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDk3LDc5IGNtICgzOCw1IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICdFc3RhbnRlIGRlIDIzIHB1bGdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwdWxnYWRhcyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgcHVsZ2FkYXMgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHB1bGdhZGFzICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgcHVsZ2FkYXMgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgcHVsZ2FkYXMgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHB1bGdhZGFzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwdWxnYWRhcyAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcHVsZ2FkYXMgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIHB1bGdhZGFzICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzEuMDAwIG1tICgzOSw0IHB1bGdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcHVsZ2FkYXMgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwdWxnYWRhcyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgcHVsZ2FkYXMgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcHVsZ2FkYXMgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgcHVsZ2FkYXMgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBwdWxnYWRhcyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IHB1bGdhZGFzICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgcHVsZ2FkYXMgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiAyMiwyMyBjbSAoOCw3NSBwdWxnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBwdWxnYWRhcyAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBwdWxnYWRhcyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiA0MCwwMSBjbSAoMTUsNzUgcHVsZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29udGFiaWxpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQXNpZ25hY2nDs24gZGUgZGlyZWNjaW9uZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmFkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnVGVsw6lmb25vIGFuYWzDs2dpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUaXBvIGRlIGFwYXJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdDYXBhY2lkYWQgZGUgbGEgYmF0ZXLDrWEgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdUaXBvIGRlIGJhdGVyw61hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnRWRpZmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZmF6IGRlIGJ1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NsYXNlIGRlIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnQ2FwYWNpZGFkIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdDYXBhY2lkYWQgcG9yIHRhcmpldGEgZ3LDoWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRhcmpldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdMZWN0b3IgZGUgdGFyamV0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVGlwbyBkZSB0YXJqZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0NhdGVnb3LDrWEgZGUgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdSZWxvaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVmVsb2NpZGFkIGRlIHJlbG9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgZmlybWEgZGUgY8OzZGlnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVGVsw6lmb25vIGRlIGNvbmZlcmVuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnQWN1ZXJkbyBkZSBjb25zdWx0b3LDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ1DDs25nYXNlIGVuIGNvbnRhY3RvIGNvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnQ29udGFjdGFyIGNvbiBlbCBkaXN0cmlidWlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdHZXN0acOzbiBkZSBjb250ZW5lZG9yZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdDb250cmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVGlwbyBkZSBjb250cmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRlbCBjb250cmF0byBkZXNkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdQZXLDrW9kbyBkZWwgY29udHJhdG8gaGFzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVGVsw6lmb25vIGluYWzDoW1icmljbyAodGVsw6lmb25vIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ1VuaWRhZCBkZSBjb3N0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ1JlY3VlbnRvIGRlIGxpY2VuY2lhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRmVjaGEgZGUgY3JlYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdFc3RhbnRlcsOtYSBwZXJzb25hbGl6YWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFJlc2VydmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnU2Vydmlkb3IgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdGZWNoYSBkZSBsYSBmYWN0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdGZWNoYSBkZWwgcGVkaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdGZWNoYSBkZSBsYSBnYXJhbnTDrWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRmVjaGEgZGUgcHVibGljYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdFc2NyaXRvcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgZmlybWEgZGUgZG9jdW1lbnRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ1JhY2sgRVRTSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGNvcnJlbyBlbGVjdHLDs25pY28gKENlcnRpZmljYWRvcyBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0NvbnRyYXRvIGRlIHRyYWJham8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdEaXJlY2Npw7NuIElQIGZpbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRmluIGRlIGxhIGF5dWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRmVjaGEgZGUgZXhwaXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0Rpc2NvIGR1cm8gZXh0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0NvcnRhZnVlZ29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdBbG1hY2VuYW1pZW50byBkZSBlbmVyZ8OtYSBtZWRpYW50ZSB2b2xhbnRlIGRlIGluZXJjaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYWN0b3IgZGUgZm9ybWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgZnJhbnF1aWNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBnZW5lcmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnVGFyamV0YXMgZ3LDoWZpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdUYXJqZXRhIGdyw6FmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbG8gZGUgaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnUGVzbyBkZWwgaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0F1cmljdWxhcmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9jb2xvIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0dlc3Rpw7NuIGRlIGlkZW50aWRhZGVzIHkgYWNjZXNvcyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBpbnZlbnRhcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnQ29zdGVzIGRlIGludmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGZhY3R1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUZWNsYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEIChwYW50YWxsYSBkZSBjcmlzdGFsIGzDrXF1aWRvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBMRUQgKGRpb2RvIGVtaXNvciBkZSBsdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBmaWpvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0NvbXB1dGFkb3IgUG9ydMOhdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0NhcGEgMTogQ2FwYSBmw61zaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0NhcGEgMjogQ2FwYSBkZSBlbmxhY2UgZGUgZGF0b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0NhcGEgMzogQ2FwYSBkZSByZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnQ2FwYSAzOiBDYXBhIGRlIHJlZCAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0NhcGEgNDogQ2FwYSBkZSB0cmFuc3BvcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdDYXBhIDU6IENhcGEgZGUgc2VzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdDYXBhIDY6IENhcGEgZGUgcHJlc2VudGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0NhcGEgNzogQ2FwYSBkZSBhcGxpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBhcnJlbmRhbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnQWN1ZXJkbyBkZSBsaWNlbmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnQ2xhdmUgZGUgbGljZW5jaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVGlwbyBkZSBsaWNlbmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnUGVyw61vZG8gZGUgbGljZW5jaWEgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdQZXLDrW9kbyBkZSBsaWNlbmNpYSBoYXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgbGl0aW8gZm9zZmF0byBkZSBoaWVycm8gKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdCYXRlcsOtYSBkZSBpb25lcyBkZSBsaXRpbyAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0FjdWVyZG8gZGUgcHLDqXN0YW1vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdTaXR1YWRvIGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xvbmdpdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnRmFicmljYW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnQ2FwYWNpZGFkIGRlIGNhcmdhIG3DoXhpbWEgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01lbW9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdUaXBvIGRlIG1lbW9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBtw7N2aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTcOzdmlsL0VtYmVkZGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTcOzZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXBjacOzbiBkZWwgbW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1Jlc29sdWNpw7NuIGRlbCBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1RhbWHDsW8gZGVsIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNb3VzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnUmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybWFjacOzbiBkZSBsYSByZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkZSBsYSByZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ0NhcGEgZGUgcmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgbsOtcXVlbC1jYWRtaW8gKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgbsOtcXVlbC1oaWRydXJvIG1ldMOhbGljbyAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnQWN1ZXJkbyBkZSBjb25maWRlbmNpYWxpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnQ3VhZGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdOw7ptZXJvIGRlIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdOw7ptZXJvIGRlIG3Ds2R1bG9zIFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdOw7ptZXJvIGRlIHRhcmpldGFzIGdyw6FmaWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBPTEVEIChkaW9kbyBvcmfDoW5pY28gZW1pc29yIGRlIGx1eiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnQ29zdGVzIGRlIGV4cGxvdGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHBlZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ090cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1NhbGlkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnQWN1ZXJkbyBkZSBhc29jaWFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdGVsw6lmb25vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUaXBvIGRlIHRlbMOpZm9ubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ07DumNsZW9zIGbDrXNpY29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnU3VtaW5pc3RybyBkZSBlbmVyZ8OtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0NvbXByYWRvIGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdQcm9mdW5kaWRhZCBkZSBsYSBlc3RhbnRlcsOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1VuaWRhZGVzIGRlIHJhY2sgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdST00nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdUYXJqZXRhIFNJTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnQ29udHJhdG8gZGUgdmVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVGVsw6lmb25vIHBvciBzYXTDqWxpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnQmF0ZXLDrWEgZGUgcGxvbW8tw6FjaWRvIHNlbGxhZGEgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdJbmNsdXllIGVzdGFkb3MgZGUgaW5jaWRlbmNpYXMgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBkZSBzZXJ2aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIHNlcnZpY2lvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ0V0aXF1ZXRhIGRlIHNlcnZpY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1RpcG8gZGUgZW5jaHVmZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnQWx0YXZvY2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ0VzdMOhbmRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnRGlyZWNjacOzbiBJUCBkZSBpbmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ0FsbWFjZW5hbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGljacOzbiBkZSBhbG1hY2VuYW1pZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0ZpbGlhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnUmVzdW1lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ0NsaWVudGUgbGlnZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdIaWxvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdSQU0gdG90YWwgZGUgbGEgdGFyamV0YSBncsOhZmljYSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0b3IgdMOhY3RpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1RvcnJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdIdWIgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnQ2FzY29zIGRlIFJWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbMOpZm9ubyBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdDw6FtYXJhIHdlYic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/et_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmV0X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfDnGxkaXNlZCB0ZWdldnVzYW5kbWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdTaXNzZXR1bGV2YXRlIHRhb3RsdXN0ZSBhbmRtZXRlIHNlYWRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ1bDpGxqYW1pbmV2YXRlIHZhc3R1c2FuZG1ldGUgc2VhZGVkJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnU2VydmVyIE9TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTXV1ZGEga2xhc3NpIG3DpMOkcmF0bHVzdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnTXV1ZGEgcm9sbGkgbcOkw6RyYXRsdXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0IGtsYXNzaWtvbXBsZWt0aWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdTaWl0IHNhYXRlIGltcG9ydGlkYSBSZWFkeTJJbXBvcnQta2xhc3NpZGUgcGFrZXR0ZSwgbWlzIHR1dHZ1c3RhdmFkIG1laWUga8O1aWdlIHRhdmFsaXNlbWFpZCBrb25maWd1cmF0c2lvb25pZWxlbWVudGUuIFBhbmdlIHTDpGhlbGUsIGV0IG3DtW5lZCB0w6RpZW5kYXZhZCBrb25maWd1cmF0c2lvb25pZCB2w7VpdmFkIG9sbGEgdmFqYWxpa3VkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdPbGVtYXNvbGV2YXRlIMO8a3N1c3RlIGFqYWtvaGFzdGFtaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3JkaSBSZWFkeTJBZG9wdCBrbGFzc2kgcGFrZXRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgSXRlbSBSb2xlIChzZWFkaXN0dXNlbGVtZW5kaSByb2xsKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdLbGFzc2lkZSBmaWx0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnVXVlIENvbmZpZyBJdGVtXCdpIGxvb21pc2VrcyB2YWxpZ2UgbmltZWtpcmphc3Qga2xhc3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc3MnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0thc3V0dXNlbGV2w7V0dSBzZWlzdW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnSW50c2lkZW50aWRlIG9sdWtvcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnTGluayB0ZWlzZWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdWaWdhbmUga29uZmlndXJhdHNpb29uaSBraXJqZSBudW1iZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ1RlaXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBudW1iZXIsIG1pbGxlZ2Egc2lkdWRhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1bDtXJrJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGxlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBuaW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOaW1pIG9uIGp1YmEga2FzdXR1c2VsIENvbmZpZ0l0ZW1zXCdpIHBvb2x0IGrDpHJnbWlzZSh0ZSkgbnVtYnJpKGRlKWdhOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1ZlcnNpb29uaSBudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGxlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSB2ZXJzaW9vbmkgbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnVmVyc2lvb25pbnVtYmVyIG9uIGp1YmEga2FzdXR1c2VsIENvbmZpZ0l0ZW1zXCdpcywgbWlsbGUgbnVtYmVyKGQpIG9uIGrDpHJnbWluZShkKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0thc3V0dXNlbGV2w7V0dSByaWlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnSW50c2lkZW50aWRlIHJpaWsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0NvbmZpZyBJdGVtXCdpIGFqYWx1Z3U6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0FqYWx1Z3UgU2lzdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdTdXVyZW5kdXN2YWFkZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgSXRlbXMgcGVyIHBhZ2UgKHNlYWRpc3R1c2VsZW1lbmRpZCBsZWhla8O8bGplIGtvaHRhKSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnQ29uZmlnLWVsZW1lbmRpIGFuZG1laWQgZWkgbGVpdHVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZhbGlnZSBzZWUga29uZmlndXJhdHNpb29uaWVsZW1lbnQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdLw6Rpdml0YSBvdHNpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnT3RzaSBrYSBlZWxtaXN0ZXMgdmVyc2lvb25pZGVzPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW1cJ2kgVHJlZVZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdTw7xnYXZ1c2UgdGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ1N1dW1pbWluZSBzaXNzZS92w6RsamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQ29uZmlnSXRlbVwnaSBtYWtzaW1hYWxuZSBsaW5raWRlIHRhc2Ugb24gc2FhdnV0YXR1ZCEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1cmVlcmltaXNvYmpla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnS29uZmlndXJlZXJpbWlzZWxlbWVuZGkgdGVhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnUHJhZWd1bmUga2FzdXR1c2VsZXbDtXR1IG9sdWtvcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ1ByYWVndW5lIGp1aHR1bWl0ZSBvbHVrb3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1ZpaW1hdGkgbXV1ZGV0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnVmlpbWF0aSBtdXV0aXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdUZWllIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0gb3RzaW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICdPYmpla3RpIHTDvMO8cCc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0ltcG9yZGl0YWtzZSBqw6RyZ21pc2VkIGtsYXNzaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnSW1wb3JkaXRha3NlIGrDpHJnbWlzZWQgcm9sbGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1BhbmdlIHTDpGhlbGUsIGV0IGthIHZhc3RhdmFkIGTDvG5hYW1pbGlzZWQgdsOkbGphZCBqYSBHZW5lcmFsQ2F0YWxvZ2kga2xhc3NpZCBsdXVha3NlIGphIG5laWQgZWkgZWVtYWxkYXRhIGF1dG9tYWF0c2VsdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdLYXMgc29vdml0ZSBqw6R0a2F0YT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnVmFqYWQgRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ03DpMOkcmF0bHVzIGVpIG9sZSBrZWh0aXYgWUFNTC1oYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ8OcbGV2YWFkZTogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCBlaSBvbGUgYW50dWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnVGVpbCBvbiB2YWphIHbDpGhlbWFsdCDDvGh0ZSB2YWxpdHVkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdUZWlsIGVpIG9sZSBzZWxsZWxlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaWxlIGtpcmp1dGFtaXPDtWlndXN0OiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnS2xhc3NpbGUgJXMgZWkgb2xlIG3DpMOkcmF0bGV0dWQgZGVmaW5pdHNpb29uaSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZyBpdGVtICIlcyIgZWkgb2xlIGFuZG1lYmFhc2lzIGxlaXR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdFaSDDtW5uZXN0dW51ZCBrdXN0dXRhZGEga29uZmlndXJhdHNpb29uaWVsZW1lbnRpIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnQ29uZmlnSXRlbUlEICVzIGphb2tzIGVpIGxlaXR1ZCB2ZXJzaW9vbmkhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgdsO1aSBDbGFzc0lEIGVpIG9sZSBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0p1dXJkZXDDpMOkc3UgZWkgYW50YSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnRWkgc2FhIG7DpGlkYXRhIGFqYWx1Z3UsIENvbmZpZ0l0ZW1JRCBlaSBvbGUgYW50dWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnRWkgc2FhIG7DpGlkYXRhIGFqYWx1Z3UsIGp1dXJkZXDDpMOkc3XDtWlndXN0IGVpIG9sZSBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ1V1cyBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ1V1cyB2ZXJzaW9vbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnw5xsZGlzdGUga2F0YWxvb2dpIGF0cmlidXV0aWRlIG7DpGlkaXPDtWlndXN0ZSByw7xobWFkZSBwYXJhbWVldHJpZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnSnVodHVtaXRlIHNlaXN1bmRpIHV1ZW5kYW1pbmUgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBrdXN0dXRhdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGlzYXR1ZCBsaW5rICVzICh0eXBlPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGluayAlcyAodHlwZT0lcykga3VzdHV0YXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQ29uZmlnSXRlbSBtw6TDpHJhdGx1cyB1dWVuZGF0dWQgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05pbWkgdXVlbmRhdHVkIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdFaSBzYWEgbsOkaWRhdGEgZWxlbWVudGksIENvbmZpZ0l0ZW1pbGUgZWkgb2xlIGFudHVkIGp1dXJkZXDDpMOkc3XDtWlndXNpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaW9vbiAlcyBrdXN0dXRhdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCB2w7VpIFZlcnNpb25JRCBlaSBvbGUgYW50dWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0VpIHNhYSBrdXZhZGEga29uZmlndXJhdHNpb29uaWVsZW1lbnRpLCBlaSBvbGUgYW50dWQganV1cmRlcMOkw6RzdcO1aWd1c2khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIGVpIGxlaXR1ZCBhbmRtZWJhYXNpcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3Ryw7xraXR1ZCAlcyBwb29sdCBhYWRyZXNzaWwgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1ZpaXRlZCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ1ZhbGUgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDbGFzc0lEIGVpIG9sZSBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdTZWxsZWxlIGtsYXNzaWxlIGVpIG9sZSBqdXVyZGVww6TDpHN1w7VpZ3VzdCBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1R1bGVtdXN0IGVpIG9sZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWcgSXRlbSBvdHNpbmd1IHR1bGVtdXNlZCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnRWkgc2FhIG7DpGlkYXRhIGVsZW1lbnRpLCBDb25maWdJdGVtaWxlIGVpIG9sZSBhbnR1ZCBqdXVyZGVww6TDpHN1w7VpZ3VzaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBlaSBsZWl0dWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ8OcaHRlZ2kgdmVyc2lvb25pIGVpIGxlaXR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXRpaXZuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnaG9pYXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2p1aHR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsbGUga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGthc3V0dXNlbGV2w7V0dSBvbGVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsbGUga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGludHNpZGVudG5lIG9sZWsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdMdWJhIHB1dWR1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIga2VodGV0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1NlYXJjaCBwYXJhbXMga2VodGV0dSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdOw6RpZGF0dWQga29uZmlndXJhdHNpb29uaSBlbGVtZW5kaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnS2FzdXR1c2VsZXbDtXR1IHJpaWdpIHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdQcmFlZ3VuZSDDtW5uZXR1c2p1aHR1bWkgc2Vpc3VuZGl0w7zDvHAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnQmV0d2Vlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS2xhc3NpIHBpaXJhbmd1ZCBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgamFva3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZhbGlnZSDDvGtzIHbDtWkgbWl0dSBrbGFzc2ksIGV0IHBpaXJhdGEgdmFsaXRhdmFpZCBrb25maWd1cmF0c2lvb25pZWxlbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2kgcGlpcmFuZ3VkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBqYW9rcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZhbGlnZSDDvGtzIHbDtWkgbWl0dSBrbGFzc2ksIGV0IHBpaXJhdGEgdmFsaXRhdmFpZCBrb25maWd1cmF0c2lvb25pZWxlbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRMO8bmFhbWlsaW5lIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhYXRpbGluZSAodmVyc2lvb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ0xpbmtpZGUgdmlpdGFtaXNlIHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdLYXMgc2VlIGxpbmsga2VodGliIHZpaXRhdmEgb2JqZWt0aSBDb25maWdJdGVtXCdpIHbDtWkgc3RhYXRpbGlzZSB2ZXJzaW9vbmkga29odGEuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGVcJ2kgYXJ2dXRhbWluZSB0b2ltdWIgYWludWx0IGTDvG5hYW1pbGlzdGUgbGlua2lkZSBwdWh1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWYWxpZ2UgYXRyaWJ1dXQsIG1pbGxlIGrDpHJnaSBrb25maWd1cmF0c2lvb25pZWxlbWVudGUgb3RzaXRha3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQmFhc3N0cnVrdHV1ciBlaSBvbGUga2VodGl2LiBQYWx1biBlc2l0YWdlIFlBTUwtdm9ybWluZ3VzIGFuZG1ldGUgaGFzaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdZQU1MLXN0cmluZ2kgYWx1c3RhbWluZSBzw7VuYWdhIFwnLS0tXCcgb24gbsO1dXRhdi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnVGFiZWxpdCBjb25maWdpdGVtX2xpbmsgZWkgw7VubmVzdHVudWQgcHVoYXN0YWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnQXNqYWtvaGFzZWlkIGTDvG5hYW1pbGlzaSB2w6RsanUgZWkgbGVpdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnRWkgw7VubmVzdHVudWQgc2lzZXN0YWRhIHRhYmVsaXNzZSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ1Npc2VzdGF0dWQgMCByaWRhIHRhYmVsaXNzZSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnw5xoZSBlbGVtZW5kaSBtYWtzaW1hYWxuZSBhcnYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnSW1wb3JkaS9la3Nwb3JkaSBtYW51c2VkICh2aWltYXNlZCBraXJqZWQgcmVhIGtvaHRhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpb29uIFN0cmluZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdWaWdhIG3DpMOkcmF0bHVzdGUgc8O8bmtyb25pc2VlcmltaXNlbC4gUGFsdW4ga29udHJvbGxpZ2UgbG9naS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdUZWlsIG9uIElUU01Db25maWdJdGVtIG3DpMOkcmF0bHVzZWQsIG1pcyBlaSBvbGUgc8O8bmtyb25pc2Vlcml0dWQuIFBhbHVuIHbDtXRrZSBrYXN1dHVzZWxlIG9tYSBJVFNNQ29uZmlnSXRlbSBkw7xuYWFtaWxpc3RlIHbDpGxqYWRlIG11dWRhdHVzZWQuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdBZWd1bnVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnSG9vbGR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG9vdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmVlcml0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVtb250JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdQZW5zaW9uaWxlIGrDpMOkbnVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ8OcbGV2YWFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnw5xsZXZhYWRlIGphIGtpbm5pdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0tsYXNzaWRlL3JvbGxpZGUgamEgbmVuZGVnYSBzZW90dWQgdsOkbGphZGUgaW1wb3J0aW1pbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdLbGFzc2kgaW1wb3J0aW1pc2VsIHRla2tpcyB2aWdhLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gcGVpZGV0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIG7DpGlkYXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVsO1aW1hbGRhYiBsYWllbmRhdHVkIG90c2luZ3V0aW5naW11c2kgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIG90c2luZ3VzLiBTZWxsZSBmdW5rdHNpb29uaWdhIHNhYXRlIG90c2lkYSBudCBjb25maWctZWxlbWVuZGkgbmltZSBzZWxsaXN0ZSB0aW5naW11c3RlZ2EgbmFndSAiKCprZXkxKiYmKmtleTIqKSIgdsO1aSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1bDtWltYWxkYWIgbGFpZW5kYXR1ZCBvdHNpbmd1dGluZ2ltdXNpIGtsaWVuZGkga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1cy4gU2VsbGUgZnVua3RzaW9vbmlnYSBzYWF0ZSBvdHNpZGEgbnQga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG5pbWUgc2VsbGlzdGUgdGluZ2ltdXN0ZWdhIG5hZ3UgIigqa2V5MSomJiprZXkyKikiIHbDtWkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdNw6TDpHJhdHVkIGVsdXTDpGh0c2FkIGluZnJhc3RydWt0dXVyaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0tsaWVudGlkZWxlIG3DpMOkcmF0dWQgQ0lkIGtsaWVuZGlldHRldsO1dHRlbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdLbGllbmRpa2FzdXRhamFsZSBtw6TDpHJhdHVkIENJZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQiBzZWFkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0tvbnRyb2xsaWRhIHVuaWthYWxzZXQgbmltZSBhaW51bHQgc2FtYSBDb25maWdJdGVtIGtsYXNzaSAoXCdjbGFzc1wnKSB2w7VpIGdsb2JhYWxzZWx0IChcJ2dsb2JhbFwnKSwgbWlzIHTDpGhlbmRhYiwgZXQgZHVibGVlcmluZ3V0ZSBvdHNpbWlzZWwgdsO1ZXRha3NlIGFydmVzc2UgaWdhIG9sZW1hc29sZXZhdCBDb25maWdJdGVtXCdpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnVmFsaWdlIG1vb2R1bCBuaW1lc2tlZW1pIGrDtXVzdGFtaXNla3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdWYWxpZ2UgbW9vZHVsIG51bWJyaXNrZWVtaSBqw7V1c3RhbWlzZWtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdWYWxpZ2UgbW9vZHVsLCBldCBrZWh0ZXN0YWRhIHZlcnNpb29uaWphZGEgc2tlZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnVmFsaWdlIGF0cmlidXVkaWQsIG1pcyBrw6Rpdml0YXZhZCB1dWUgdmVyc2lvb25pIGxvb21pc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1ZhbGlnZSBrYXRlZ29vcmlhZCwgbWlzIG3DpMOkcmF0YWtzZSBzZWxsZWxlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBrbGFzc2lsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnQ29uZmlnSXRlbSBPdmVydmlldyB2ZWVyZ3UgQ29uZmlnSXRlbSBlbGVtZW5kaSBmaWx0cmlkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnVmVlcnVkLCBtaWRhIHNhYWIgZmlsdHJlZXJpZGEgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSDDvGxldmFhdGVzLiBNw6Rya3VzOiBMdWJhdHVkIG9uIGFpbnVsdCBDb25maWcgSXRlbSBhdHJpYnV1ZGlkIGphIGTDvG5hYW1pbGlzZWQgdsOkbGphZCAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXJlZXJpbWlzb2JqZWt0aWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0NvbmZpZyBpdGVtIGFkZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdDb25maWcgaXRlbSBlZGl0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZyBpdGVtIGV2ZW50IG1vb2R1bCwgbWlzIHbDtWltYWxkYWIgYWdlbmRpIGthc3V0YWphbGlpZGVzZXMgYWphbHVra3UgbG9naWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdDb25maWcgZWxlbWVudGlkZSBzw7xuZG11c3RlIG1vb2R1bCwgbWlzIHV1ZW5kYWIgY29uZmlnIGVsZW1lbnRlIG5lbmRlIHByYWVndXNlIG3DpMOkcmF0bHVzZSBqw6RyZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnVsOkbGphbGFza2VhdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnQ29uZmlnIGl0ZW0gcHJpbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnQ29uZmlnIGl0ZW0gem9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdDb25maWdJdGVtIFRyZWUgVmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIHZlcnNpb29uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0rDpHJnbWlzdGUga2xhc3NpZGUgQ29uZmlnSXRlbXMgZWkgc2FsdmVzdGF0YSBFbGFzdGljc2VhcmNoaSBzZXJ2ZXJpc3NlLiBFdCBzZWRhIG9sZW1hc29sZXZhdGVsZSBDSS1kZWxlIHJha2VuZGFkYSwgdHVsZWIgcMOkcmFzdCBzZWxsZSB2YWxpa3UgbXV1dG1pc3Qga8OkaXZpdGFkYSBDSSBtaWdyYXRzaW9vbiBrb25zb29saSBrYXVkdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMsIG1pbGxlbCBvbiBqw6RyZ21pc2VkIGthc3V0dXNlbGV2w7V0dSBvbGVrdWQsIGVpIHNhbHZlc3RhdGEgRWxhc3RpY3NlYXJjaGkgc2VydmVyaXNzZS4gU2VsbGUga29oYWxkYW1pc2VrcyBvbGVtYXNvbGV2YXRlbGUgQ0ktZGVsZSB0dWxlYiBww6RyYXN0IHNlbGxlIHZhbGlrdSBtdXV0bWlzdCBrw6Rpdml0YWRhIENJLW1pZ3JhdHNpb29uIGtvbnNvb2xpIGthdWR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdLb25maWd1cmVlcmltaXPDvGtzdXNlIHBpaXJhbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ3VyYXRzaW9vbiBFbGVtZW50aWRlIHBpaXJhcnYgbGVoZWvDvGxqZSBrb2h0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0tvbmZpZ3VyYXRzaW9vbmkganVodGltaXNlIGFuZG1lYmFhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0tvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBsYWh0aW5lIG1vb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXJlZXJpbWlzZWxlbWVuZGkgb3RzaW5nIGFnZW50aWRlIGxpaWRlc2UgdGFnYXNpc2lkZSBtYXJzcnV1dGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdMdXVhIGphIGhhbGxhdGEga29uZmlndXJhdHNpb29uaW9iamVrdGlkZSBtw6TDpHJhdGx1c2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnTG9vYiBDb25maWdJdGVtc1wnaSBwaWxldGlkIHRlYXR1ZCBhamFoZXRrZWRlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS2xpZW5kaWQgc2FhdmFkIG7DpGhhIGFqYWxvb2xpc2kgQ0ktdmVyc2lvb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLbGllbnRpZGVsIG9uIHbDtWltYWx1cyBrw6RzaXRzaSB2YWhldGFkYSB2YXJhc2VtYXRlIENJLXZlcnNpb29uaWRlIHZhaGVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ1ZhaWtpbWlzaSBhbmRtZWQsIG1pZGEga2FzdXRhdGFrc2UgYXRyaWJ1dXRpZGUgcHVodWwga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3UgZWtyYWFuaWwuIE7DpGlkZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdWYWlraW1pc2kgYW5kbWVkLCBtaWRhIGthc3V0YXRha3NlIGF0cmlidXV0aWRlIHB1aHVsIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1IGVrcmFhbmlsLiBOw6RpZGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdNw6TDpHJha2UgdG9pbWluZ3VkLCBtaWxsZSBwdWh1bCBvbiBzZW90dWQgb2JqZWt0aWRlIHZpZGluYSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpIHNhYWRhdmFsIHNlYWRldGUgbnVwcCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQYW5nZSB0w6RoZWxlLCBldCBuZWVkIHRvaW1pbmd1ZCBwZWF2YWQgb2xlbWEgcmVnaXN0cmVlcml0dWQgasOkcmdtaXNlZCBKUy0gamEgQ1NTLWZhaWxpZDogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgamEgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnTcOkw6RyYWtlIG1hbGxpOjpUb29sa2l0IHNrZWVtIHZlcnNpb29uaSBzdHJpbmdpZGUgamFva3MuIEthc3V0YXRha3NlIGFpbnVsdCBzaWlzLCBrdWkgVmVyc2lvbiBTdHJpbmcgTW9kdWxlXCdpbGUgb24gbcOkw6RyYXR1ZCBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnTcOkw6RyYWtlIHRpbmdpbXVzZWQsIG1pbGxlIGFsdXNlbCBrbGllbmRpbCBvbiBsdWJhdHVkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aSBuw6RoYS4gVGluZ2ltdXNpIHNhYWIgdmFsaWt1bGlzZWx0IHBpaXJhdGEgdGVhdHVkIGtsaWVuZGlyw7xobWFkZWxlLiBOaW1pIG9uIGFpbnVzIGtvaHVzdHVzbGlrIGF0cmlidXV0LiBLdWkgbXVpZCB2YWxpa3VpZCBlaSBvbGUgYW50dWQsIG9uIGvDtWlrIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaWQgc2VsbGUga2F0ZWdvb3JpYSBhbGwgbsOkaHRhdmFkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgbsO1dXRhdmFkIMO1aWd1c2VkIElUU01pIGtvbmZpZ3VyYXRzaW9vbmlvYmpla3RpZGUga3VzdHV0YW1pc2VrcyDDvGxkaXNlIGxpaWRlc2UgYWJpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIG7DtXV0YXZhZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVudGlkZSBzYWFtaXNla3Mgw7xsZGlzZSBsaWlkZXNlIGFiaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBuw7V1dGF2YWQgw7VpZ3VzZWQgSVRTTWkga29uZmlndXJhdHNpb29uaW9iamVrdGlkZSBvdHNpbWlzZWtzIMO8bGRpc2UgbGlpZGVzZSBhYmlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgbsO1dXRhdmFkIMO1aWd1c2VkIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIHNlYWRpc3RhbWlzZWtzIMO8bGRpc2UgbGlpZGVzZSBhYmlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiDDvGxldmFhdGVtb29kdWxpLCBtaXMgbsOkaXRhYiBrb25maWd1cmF0c2lvb25pZWxlbWVudGlkZSBsb2VuZGkgdsOkaWtlc3QgdmFhZGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdNw6TDpHJhYiwga2FzIGxpbmdpdMO8w7xiaSBzaWxkaWQgcGVhdmFkIG9sZW1hIGt1dmF0dWQgc8O1bG1lw7xoZW5kdXN0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBpZ2EgQ29uZmlnSXRlbS1rbGFzc2kgamFva3MgZXJhbGRpIHJlZ3VsYWFyYXZhbGRpc2VkIENvbmZpZ0l0ZW0tbmltZSBrb250cm9sbGltaXNla3MgamEgdmFzdGF2YXRlIHZlYXRlYWRldGUga3V2YW1pc2Vrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBDSWRlIG9sZW1hc29sZXZhZCB2ZWVydWQga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIMO8bGV2YWF0ZXMgc8O1bHR1dmFsdCBDSS1rbGFzc2lzdC4gSWdhIGtpcmplIHBlYWIga29vc25lbWEga2xhc3NpIG5pbWVzdCBqYSB2YXN0YXZhIGtsYXNzaSBqYW9rcyBrw6R0dGVzYWFkYXZhdGUgdsOkbGphZGUgbWFzc2lpdmkuIETDvG5hYW1pbGlzdGUgdsOkbGphZGUga2lyamVkIHBlYXZhZCBqw6RyZ2ltYSBza2VlbWkgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIHZhaWtpbWlzaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgYXRyaWJ1dWRpLCBtaXMgb24gdmFqYWxpayBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3V0dWxlbXVzZSBzb3J0ZWVyaW1pc2Vrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcmFiIHZhaWtpbWlzaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgYXRyaWJ1dWRpIGtsaWVuZGkga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1dHVsZW11c2Ugc29ydGVlcmltaXNla3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTcOkw6RyYWIgdmFpa2ltaXNpIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBhdHJpYnV1ZGkgc2VsbGUgb3BlcmF0c2lvb25pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1dHVsZW11c2Ugc29ydGVlcmltaXNla3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNw6TDpHJhYiB2YWlraW1pc2kga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGrDpHJqZWtvcnJhIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndXR1bGVtdXNlcy4gw5xsZXM6IHZhbmltIG9uIMO8bGV2YWwuIEFsbGE6IHV1c2ltIMO8bGV2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNw6TDpHJhYiB2YWlraW1pc2kga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGrDpHJqZWtvcnJhIGtsaWVuZGkga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1dHVsZW11c2VzLiDDnGxlczogdmFuaW0gb24gw7xsZXZhbC4gQWxsYTogdXVzaW0gw7xsZXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTcOkw6RyYWIgdmFpa2ltaXNpIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBqw6RyamVrb3JyYSBzZWxsZSBvcGVyYXRzaW9vbmkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3V0dWxlbXVzZXMuIMOcbGVzOiB2YW5pbSBwZWFsLiBBbGxhOiB1dXNpbSDDvGxldmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgQ0lkZSB2YWlraW1pc2kga3V2YXRhdmFkIHZlZXJ1ZCBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgw7xsZXZhYXRlcyBzw7VsdHV2YWx0IENJLWtsYXNzaXN0LiBJZ2Ega2lyamUgcGVhYiBrb29zbmVtYSBrbGFzc2kgbmltZXN0IGphIHZhc3RhdmEga2xhc3NpIGphb2tzIGvDpHR0ZXNhYWRhdmF0ZSB2w6RsamFkZSBtYXNzaWl2aS4gRMO8bmFhbWlsaXN0ZSB2w6RsamFkZSBraXJqZWQgcGVhdmFkIGrDpHJnaW1hIHNrZWVtaSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdNw6TDpHJhYiB2YWlraW1pc2kga3V2YXRhdmF0ZSBzdWhldGUgc8O8Z2F2dXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiB2YWlraW1pc2kga3V2YXRhdmEga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3UgYXRyaWJ1dWRpIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1IGVrcmFhbmlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgdmFpa2ltaXNpIGt1dmF0YXZhIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1IGF0cmlidXVkaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndSBla3JhYW5pbC4gTsOkaWRlOiAiS2V5IiBwZWFiIG9sZW1hIGTDvG5hYW1pbGlzZSB2w6RsamEgbmltaSwgYW50dWQganVodWwgXCdYXCcsICJDb250ZW50IiBwZWFiIG9sZW1hIGTDvG5hYW1pbGlzZSB2w6RsamEgdsOkw6RydHVzIHPDtWx0dXZhbHQgZMO8bmFhbWlsaXNlIHbDpGxqYSB0w7zDvGJpc3QsIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGphIHbDtWkgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIga2xhc3NpIFwnSVRTTUNvbmZpZ0l0ZW1cJyB2YWlraW1pc2kgYWxhbW9iamVrdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBDSWRlIG9sZW1hc29sZXZhZCB2ZWVydWQga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIMO8bGV2YWF0ZXMgc8O1bHR1dmFsdCBDSS1rbGFzc2lzdC4gSWdhIGtpcmplIHBlYWIga29vc25lbWEga2xhc3NpIG5pbWVzdCBqYSB2YXN0YXZhIGtsYXNzaSBqYW9rcyBrw6R0dGVzYWFkYXZhdGUgdsOkbGphZGUgbWFzc2lpdmkuIETDvG5hYW1pbGlzdGUgdsOkbGphZGUga2lyamVkIHBlYXZhZCBqw6RyZ2ltYSBza2VlbWkgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnTcOkw6RyYWIgc2VsbGUgZWtyYWFuaSByaWtrYWxpa3UgdGVrc3RpcmVkYWt0b3JpIGtvbXBvbmVuZGkga8O1cmd1c2UuIFNpc2VzdGFnZSBhcnYgKHBpa3NsaWQpIHbDtWkgcHJvdHNlbnR1YWFsbmUgdsOkw6RydHVzIChzdWh0ZWxpbmUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBDSSBtw6TDpHJhdGx1c2UgcmVkYWt0b3JpIHJpZGFkZSBhcnZ1IGhhbGR1c2xpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBqdWh0dW1pIHNlaXN1bmRpdGUgasOkcmpla29ycmEga8O1cmdlc3QgKG50IGtyaXRzaWFhbG5lKSBrdW5pIG1hZGFsYW5pIChudCBmdW5rdHNpb25hYWxuZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgYXNqYW9tYXNlZCBrYXN1dHVzZWxldsO1dHUgb2xla3VkLCBtaWxsZSBwdWh1bCBzZW90dWQgcGlsZXRpZCB2w7VpdmFkIG3DtWp1dGFkYSBDSSBvbGVrdXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgYWdlbnRJVFNNQ29uZmlnSXRlbSBla3JhYW5pIG90c2luZ3VwaWlyYW5ndS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBvdHNpbmd1cGlpcmFuZ3UgZWtyYWFuaSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIGphb2tzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ03DpMOkcmFiIG90c2luZ3VwaWlyYW5ndSBla3JhYW5pIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gamFva3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTcOkw6RyYWIgb3RzaW5ndXBpaXJhbmd1IGVrcmFhbmlsIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIga8O1aWtpZGUgQ0kta2xhc3NpZGUgamFva3MgbGluZ2l0YWJlbGlzIGtvbXBsZWtzdmFhdGVzIG7DpGlkYXR1ZCBDSWRlIHZlZXJ1ZC4gS3VpIGthbm5lIHB1dWR1Yiwga3V2YXRha3NlIHZhaWtpbWlzaSB2ZWVydWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBsaW5naXRhYmVsaXMga29tcGxla3N2YWF0ZXMgbsOkaWRhdHVkIENJZGUgdmVlcnVkIHPDtWx0dXZhbHQgQ0kta2xhc3Npc3QuIElnYSBraXJqZSBlZXMgcGVhYiBvbGVtYSBrbGFzc2kgbmltaSBqYSBrYWtzIGtvb2xvbml0IChudCBDb21wdXRlcjo6KS4gT24gb2xlbWFzIG3DtW5lZCBDSS1BdHRyaWJ1dWRpZCwgbWlzIG9uIGvDtWlnaWxlIENJZGVsZSDDvGhpc2VkIChuw6RpdGVrcyBrbGFzc2kgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIMOca3Npa3V0ZSBDSS1BdHRyaWJ1dXRpZGUgbsOkaXRhbWlzZWtzLCBuYWd1IG9uIG3DpMOkcmF0bGV0dWQgQ0ktRGVmaW5pdHNpb29uaXMsIHR1bGViIGthc3V0YWRhIGrDpHJnbWlzdCBza2VlbWkgKG7DpGlkZSBrbGFzc2kgQ29tcHV0ZXIgcHVodWwpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gS3VpIENJLWtsYXNzaSBrb2h0YSBwdXVkdWIga2FubmUsIGt1dmF0YWtzZSB2YWlraW1pc2kgdmVlcnVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ03DpMOkcmFiLCBtaWxsaXNlZCBlbGVtZW5kaWQgb24gc2FhZGF2YWwgIkFjdGlvbiIgamFva3MgSVRTTSBDb25maWcgSXRlbSBBQ0xpIHN0cnVrdHV1cmkga29sbWFuZGFsIHRhc2FuZGlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ03DpMOkcmFiLCBtaWxsaXNlZCBlbGVtZW5kaWQgb24gc2FhZGF2YWwgSVRTTSBDb25maWcgSXRlbSBBQ0xpIHN0cnVrdHV1cmkgZXNpbWVzZWwgdGFzYW5kaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ03DpMOkcmFiLCBtaWxsaXNlZCBlbGVtZW5kaWQgb24gc2FhZGF2YWwgSVRTTSBDb25maWcgSXRlbSBBQ0xpIHN0cnVrdHV1cmkgdGVpc2VsIHRhc2FuZGlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdNw6TDpHJhYiwgbWlsbGlzdCB0w7zDvHBpIGxpbmsgKG5pbWVnYSBwaWxldGkgdmFhdGVudXJnYXN0KSB2w7VpYiBtw7VqdXRhZGEgc2VvdHVkIENJIHN0YWF0dXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ03DpMOkcmFiLCBtaWxsaXN0IHTDvMO8cGkgcGlsZXRpZCB2w7VpdmFkIG3DtWp1dGFkYSBzZW90dWQgQ0kgc3RhYXR1c3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnTcOkw6RyYXRsdXNlIGFqYWtvaGFzdGFtaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLdXN0dXRhIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnS2FzdXR1c2VsZXbDtXR1IG9sZWsgVsOkcnYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa2FhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ0TDvG5hYW1pbGlzdGUgdsOkbGphZGUgc8O8bmRtdXN0ZSBtb29kdWwsIG1pcyBtw6RyZ2liIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBtw6TDpHJhdGx1c2VkIHPDvG5rcm9vbmlzdCB2w6RsamFzIG9sZXZha3MsIGt1aSBkw7xuYWFtaWxpc2kgdsOkbGp1IHNpc2FsZGF2YWQgZMO8bmFhbWlsaXNlZCB2w6RsamFkIG11dXR1dmFkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMO8bmFhbWlsaXNlZCB2w6RsamFkLCBtaXMga3V2YXRha3NlIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSB0w6RpZW5kYXZhdGUgSVRTTS12w6RsamFkZSBla3JhYW5pbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMO8bmFhbWlsaXNlZCB2w6RsamFkLCBtaXMga3V2YXRha3NlIGtsaWVuZGkga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSDDvGxldmFhdGUgZWtyYWFuaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw7xuYWFtaWxpc2VkIHbDpGxqYWQsIG1pcyBrdXZhdGFrc2UgYWdlbmRpIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndSBla3JhYW5pbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnVsO1aW1hbGRhYiBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgbWFzc2l0ZWdldnVzZSBmdW5rdHNpb29uaSwgZXQgYWdlbnRpZGUgZnJvbnRlbmQgc2Fha3MgdMO2w7Z0YWRhIGtvcnJhZ2Egcm9oa2VtIGt1aSDDvGhlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaWdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnU2VsbGUga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGthc3V0dXNlbGV2w7V0dSBvbGVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1bDtWltYWxkYWIvdsOkbGphIGzDvGxpdGFiIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIGtvbnRyb2xsaW1pc2UgZnVua3RzaW9vbmkgdW5pa2FhbHNldGUgbmltZWRlIG9zYXMuIEVubmUgc2VsbGUgc3V2YW5kaSBsdWJhbWlzdCBwZWFrc2l0ZSBrb250cm9sbGltYSBvbWEgc8O8c3RlZW1pIGp1YmEgb2xlbWFzb2xldmF0ZSBkdWJsZWVyaXZhdGUgbmltZWRlZ2Ega29uZmlndXJhdHNpb29uaWVsZW1lbnRpZGUgc3VodGVzLiBTZWRhIHNhYXRlIHRlaGEga29uc29vbGkga8Okc3VnYSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ1PDvG5kbXVzZSBtb29kdWwsIGV0IG3DpMOkcmF0YSBjb25maWdpdGVtLXN0YXR1cyB0aWNrZXQtY29uZmlnaXRlbS1saW5raWxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdLb25maWd1cmF0c2lvb25pZWxlbWVuZGkgaW5kZWtzaSB2w6RsamFkLCBtaWRhIGthc3V0YXRha3NlIHTDpGlzdGVrc3Rpb3RzaW5ndWtzLiBWw6RsamFkIG9uIHNhbXV0aSBzYWx2ZXN0YXR1ZCwga3VpZCBlaSBvbGUgw7xsZGlzZSBmdW5rdHNpb25hYWxzdXNlIGphb2tzIGtvaHVzdHVzbGlrdWQuIE1hbnVzdGUgbGlzYW1pc2Ugc2FhYiBrZWVsYXRhLCBrdWkgbcOkw6RyYXRhIGtpcmplIHbDpMOkcnR1c2VrcyAwIHbDtWkga3VzdHV0YWRhIHNlZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBpbmRla3Npc3NlIHNhbHZlc3RhdHVkIHbDpGxqYWQsIG1pZGEga2FzdXRhdGFrc2UgbGlzYWtzIHTDpGlzdGVrc3RvdHNpbmd1dGVsZSBrYSBtdXVkZWtzIGFzamFkZWtzLiBUw6RpZWxpa3UgZnVua3RzaW9uYWFsc3VzZSB0YWdhbWlzZWtzIG9uIGvDtWlrIHbDpGxqYWQga29odXN0dXNsaWt1ZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdJZ2EgdmVlYml0ZWVudXNlICh2w7V0aSkgamFva3Mgc2FhYiBtw6TDpHJhdGxlZGEga2xhc3NpZGUgbWFzc2lpdmkgKHbDpMOkcnR1cyksIG1pbGxlIHB1aHVsIG9uIGltcG9ydCBwaWlyYXR1ZC4gS8O1aWdpIHZhbGl0dWQga2xhc3NpZGUgdsO1aSBrw7VpZ2kgb2xlbWFzb2xldmF0ZSBrbGFzc2lkZSBqYW9rcyB0dWxlYiBpbnZva2VyXCdpIGtvbmZpZ3VyYXRzaW9vbmlzIHZhbGlkYSBpZGVudGlmaXRzZWVyaXZhZCBhdHJpYnV1ZGlkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlXCdpIG1vb2R1bGkgcmVnaXN0cmVlcmltaW5lIENvbmZpZ0l0ZW1GZXRjaCBrdXRzdXZhIGtpaGkgamFva3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZVwnaSBtb29kdWxpIHJlZ2lzdHJlZXJpbWluZSBDb25maWdJdGVtRmV0Y2gga3V0c3V2YSBraWhpIGphb2tzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlXCdpIG1vb2R1bGkgcmVnaXN0cmVlcmltaW5lIENvbmZpZ0l0ZW1GZXRjaCBrdXRzdXZhIGtpaGkgamFva3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSDDvGxldmFhZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaXNhbGRhYiBrbGllbmRpIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndXNzZSBrYXN1dHVzZWxldsO1dHUgb2xla3VpZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Npc2FsZGFiIGtsaWVuZGlsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1c3NlIGludHNpZGVudGlkZSBvbGVrdWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdTZWxsZSBvcGVyYXRzaW9vbmkgdHVsZW11c2VsIGt1dmF0YXZhdGUga29uZmlndXJhdHNpb29uaWVsZW1lbnRpZGUgbWFrc2ltYWFsbmUgYXJ2Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vb2R1bCwgZXQga29udHJvbGxpZGEga2xhc3NpIGVlc3QgdmFzdHV0YXZhdCByw7xobWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9vZHVsLCBldCBrb250cm9sbGlkYSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgZWVzdCB2YXN0dXRhdmF0IHLDvGhtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb29kdWwgSVRTTS1pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIHN0YXRpc3Rpa2EgZ2VuZXJlZXJpbWlzZWtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05pbWkgTW9vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW1icmltb29kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXJlZXJpbWlzb2JqZWt0aWRlIGFydiwgbWlzIGt1dmF0YWtzZSBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcyBpZ2FsIG90c2luZ3V0dWxlbXVzZSBsZWhlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS2xpZW50aWRlIGthc3V0YWphbGlpZGVzZXMgaWdhbCBvdHNpbmd1dHVsZW11c2UgbGVoZWwga3V2YXRhdmF0ZSBrb25maWd1cmF0c2lvb25pZWxlbWVudGlkZSBhcnYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnb2JqZWt0aWQsIG1pZGEgb3RzaWRhLCBrdWkgcGFsanUga2lyamVpZCBqYSBtaWxsaXNlaWQgYXRyaWJ1dXRlIG7DpGlkYXRhLiBDb25maWdJdGVtIGF0cmlidXVkaWQgdHVsZWIgc2VsZ2Vzw7VuYWxpc2VsdCBzYWx2ZXN0YWRhIEVsYXN0aWNzZWFyY2hpIGthdWR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfDnGxldmFhZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWVldHJpZCBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkga2xhc3NpZGUga2F0ZWdvb3JpYXRlIGphb2tzIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBlZWxpc3R1c3RlIHZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWVldHJpZCB2w6Rpa2VzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgw7xsZXZhYXRlIHZlZXJndWRlIGZpbHRyaXRlIGphb2tzLiBQYW5nZSB0w6RoZWxlOiBrdWkgbcOkw6RyYXRhIFwnQWN0aXZlXCcgdsOkw6RydHVzZWtzIDAsIHRha2lzdGFiIHNlZSBhaW51bHQgYWdlbnRpZGVsIHNlbGxlIGdydXBpIHNlYWRldGUgbXV1dG1pc3Qgb21hIGlzaWtsaWtlcyBlZWxpc3R1c3Rlcywga3VpZCBsdWJhYiBhZG1pbmlzdHJhYXRvcml0ZWwgc2lpc2tpIHRlaXNlIGthc3V0YWphIG5pbWVsIHNlYWRldGUgbXV1dG1pc3QuIEthc3V0YWdlIFwnUHJlZmVyZW5jZUdyb3VwXCcsIGV0IGtvbnRyb2xsaWRhLCBtaWxsaXNlcyBwaWlya29ubmFzIG5laWQgc2VhZGVpZCBrYXN1dGFqYWxpaWRlc2VzIG7DpGlkYXRha3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS2FzdXR1c2VsZXbDtXR1IG9sZWt1dGUgcGFyYW1lZXRyaXRlIHbDpHJ2IGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBlZWxpc3R1c3RlIHZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdrYXN1dHVzZWxldsO1dHUgb2xla3V0ZSBwYXJhbWVldHJpZCBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2UgZWVsaXN0dXN0ZSB2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ8OcbGRpc3RlIGthdGFsb29naSBhdHJpYnV1dGlkZSBuw6RpZGlzw7VpZ3VzdGUgcsO8aG1hZGUgcGFyYW1lZXRyaWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmltZW1vb2R1bGkgcGFyYW1lZXRyaWQga29uZmlndXJlZXJpdHVkIGVsZW1lbmRpa2xhc3NpZGUgamFva3MgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1lZXRyaWQgbnVtYnJpbW9vZHVsaSBqYW9rcyBrb25maWd1cmVlcml0dWQgZWxlbWVuZGlrbGFzc2lkZSBqYW9rcyBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2UgZWVsaXN0dXN0ZSB2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ0xlaGVrw7xsZ2VkZSBwYXJhbWVldHJpZCAoa3VzIGt1dmF0YWtzZSBrb25maWd1cmF0c2lvb25pZWxlbWVudGUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWVldHJpZCB2ZXJzaW9vbmkgc3RyaW5naSBtb29kdWxpIGphb2tzIGNvbmZpZyBlbGVtZW50aWRlIGtsYXNzaWRlIGphb2tzIGFnZW50aWRlIGxpaWRlc2UgZWVsaXN0dXN0ZSB2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1lZXRyaWQgdmVyc2lvb25pIHN0cmluZ2kgbWFsbGkgdMO2w7ZyaWlzdGFrb21wbGVrdGkgbW9vZHVsaSBqYW9rcyBrb25maWd1cmVlcml0dWQgZWxlbWVuZGlrbGFzc2lkZSBqYW9rcyBhZ2VudGlkZSBsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWVldHJpZCB2ZXJzaW9vbmkga8OkaXZpdGFtaXNla3Mga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGtsYXNzaWRlIGphb2tzIGFnZW50aWRlIGxpaWRlc2UgZWVsaXN0dXN0ZSB2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnVGVvc3RhYiBzZWFkaXN0YXR1ZCB0b2ltaW5ndSBpZ2Egc8O8bmRtdXNlIGphb2tzIChrdWkga3V0c3VqYSkgaWdhIGtvbmZpZ3VyZWVyaXR1ZCB2ZWViaXRlZW51c2UgamFva3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdMb2EgZ3J1cHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO1dXRhdmFkIMO1aWd1c2VkIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBraW5uaXRhbWlzZSB0b2ltaW5ndSBrYXN1dGFtaXNla3MgYWdlbmRpIGthc3V0YWphbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWYWphbGlrdWQgw7VpZ3VzZWQgSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGVrcmFhbmkga2FzdXRhbWlzZWtzIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmFqYWxpa3VkIMO1aWd1c2VkIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1IGVrcmFhbmkga2FzdXRhbWlzZWtzIGFnZW5kaSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DtXV0YXZhZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndSBla3JhYW5pIGthc3V0YW1pc2VrcyBrbGllbmRpIGthc3V0YWphbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmFqYWxpa3VkIMO1aWd1c2VkIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBwdXUgdmFhdGUgZWtyYWFuaSBrYXN1dGFtaXNla3MgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmFqYWxpa3VkIMO1aWd1c2VkIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBzdXVtaW1pc2VrcmFhbmkga2FzdXRhbWlzZWtzIGFnZW5kaSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCwgZXQga2FzdXRhZGEgSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGxpc2FtaXNlIGVrcmFhbmkgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmFqYWxpa3VkIMO1aWd1c2VkLCBldCBrYXN1dGFkYSBJVFNNaSBtYXNza29uZmlndXJhdHNpb29uaSBlbGVtZW5kaSBla3JhYW5pIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCwgZXQga2FzdXRhZGEgSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIHJlZGlnZWVyaW1pc2UgZWtyYWFuaSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWYWphbGlrdWQgw7VpZ3VzZWQsIGV0IGthc3V0YWRhIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBhamFsb28gZWtyYWFuaSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmFqYWxpa3VkIMO1aWd1c2VkLCBldCBrYXN1dGFkYSBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgZWtyYWFuaSBwcmludGltaW5lIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdOw7V1dGF2YWQgw7VpZ3VzZWQga29uZmlndXJhdHNpb29uaWVsZW1lbnRpZGUga3VzdHV0YW1pc2Vrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdPdHNpIGtvbmZpZ3VyZWVyaXR1ZCBlbGVtZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ1NlYWRpc3RhZ2UgQ0kgaW50c2lkZW5kaSBzdGFhdHVzIGF1dG9tYWF0c2VsdCwga3VpIHBpbGV0IG9uIHNlb3R1ZCBDSWdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcmFiIGthc3V0dXNlbGV2w7V0dSBvbGVrdSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGh1bGdpYWtuYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcmFiIGludHNpZGVuZGkgb2xla3UgYWdlbnRpZGUgbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgaHVsZ2lha25hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdwcmVwcm9kdWt0aWl2bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLdXZhYiBtZW7DvMO8cyBsaW5naSwgbWlsbGUgYWJpbCBww6TDpHNlYiBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgYWphbHVra3UgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSDDvGxldmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLdXZhYiBtZW7DvMO8cyBsaW5naSwgbWlsbGUgYWJpbCBzYWFiIGp1dXJkZXDDpMOkc3Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGFqYWxvb2xlIGFnZW5kaSBrYXN1dGFqYWxpaWRlc2Ugc3V1bWl2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIG1pbGxlIGFiaWwgc2FhYiBrdXN0dXRhZGEga29uZmlndXJhdHNpb29uaWVsZW1lbnRpIG9tYSBhZ2VuZGkga2FzdXRhamFsaWlkZXNlIHN1dW1pdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIGV0IGt1dmFkYSBrb25maWd1cmF0c2lvb25pZWxlbWVudGlkZSBsaW5naWQgcHV1dmFhdGVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLdXZhYiBtZW7DvMO8cyBsaW5naSwgbWlsbGUgYWJpbCBzYWFiIGtvbmZpZ3VyZWVyaW1pc29iamVrdGkgZHVibGVlcmlkYSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaW9iamVrdGlkZSDDvGxldmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLdXZhYiBtZW7DvMO8cyBsaW5naSwgbWlsbGUgYWJpbCBzYWFiIGtvbmZpZ3VyZWVyaW1pc29iamVrdGkgZHVibGVlcmlkYSBzZWxsZSBzdXVtaXZhYXRlcyBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIG1pbGxlIGFiaWwgc2FhYiBzZWFkaXN0dXNvYmpla3RpIHJlZGlnZWVyaWRhIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBzdXVtaXZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpGl0YWIgbWVuw7zDvHMgbGlua2ksIG1pbGxlIGFiaWwgc2FhYiBtaW5uYSB0YWdhc2kgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBzdXVtaXZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLdXZhYiBtZW7DvMO8cyBsaW5naSwgZXQgcHJpbnRpZGEga29uZmlndXJhdHNpb29uaWVsZW1lbnRpIHNlbGxlIHN1dW1pdmFhdGVzIGFnZW5kaSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpGl0YWIgbWVuw7zDvHMgbGlua2ksIG1pbGxlIGFiaWwgc2FhYiBrb25maWd1cmF0c2lvb25pZWxlbWVudGkgc3V1cmVuZGFtYSBhc2phbmR1c2xpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIMO8bGV2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6RpdGFiIGtvbmZpZ3VyZWVyaXR1ZCBlbGVtZW5kaSBhamFsdWd1ICh2YXN0dXBpZGlzZXMgasOkcmpla29ycmFzKSBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnVmFpa2ltaXNpIGthdGVnb29yaWEsIG1pcyBrdXZhdGFrc2UsIGt1aSDDvGtza2kga2F0ZWdvb3JpYSBlaSBvbGUgdmFsaXR1ZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBpZGVudGlmaWthYXRvciwgbnQgQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFZhaWtpbWlzaSBvbiBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdLw6Rpdml0YWIgQ29uZmlnSXRlbUZldGNoLWkga3V0c3VqYSBhdXRvbWFhdHNlbHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaW9vbiBTdHJpbmcgVsOkbGplbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2lvb25pIHN0cmluZyBtb29kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2lvb25pIHZhbGxhbmRhamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ0thcyBDb25maWdJdGVtQUNMaSB0w6RpdG1pc3Qgc2FhYiB2w6RsdGlkYSwga29udHJvbGxpZGVzIHZhaGVtw6RsdSB2w6RsamFsaXN0ZSBzw7VsdHV2dXNpLiBTZWUgdsO1aWIgcGFyYW5kYWRhIHZvcm1pZGUgbGFhZGltaXNhZWdhLCBrdWlkIHR1bGViIGtlZWxhdGEsIGt1aSBBQ0xNb2R1bGVzXCdpIGthc3V0YXRha3NlIElUU01Db25maWdJdGVtLSBqYSBGb3JtLVJldHVyblR5cGVzXCdpIHB1aHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnTWlsbGlzZWQgw7xsZGFuZG1lZCBvbiBlc2l0YXR1ZCBww6Rpc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhYWxuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWt0aWl2bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZXByb2R1a3RpaXZuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVrdGlpdm5lJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IHRvbGxpICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgdG9sbGkgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSB0b2xsaSAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSB0b2xsaSAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LXRvbGxpbmUgcmlpdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiA0LDQ1IGNtICgxLDc1IHRvbGxpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IHRvbGxpICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS10b2xsaW5lIHJpaXVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSB0b2xsaSAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLXRvbGxpbmUgcmlpdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHRvbGxpICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiB0b2xsaSAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgdG9sbGkgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSB0b2xsaSAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSB0b2xsaSAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgdG9sbGkgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IHRvbGxpICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCB0b2xsaSAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogMTYwLDAyIGNtICg2MyB0b2xsaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCB0b2xsaSAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IHRvbGxpICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDEzLDM0IGNtICg1LDI1IHRvbGxpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IHRvbGxpICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHRvbGxpICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDIwMCwwMiBjbSAoNzgsNzUgdG9sbGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgdG9sbGkgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCB0b2xsaSAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IHRvbGxpICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSB0b2xsaSAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDI2LDY3IGNtICgxMCw1IHRvbGxpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgdG9sbGkgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgdG9sbGkgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgdG9sbGkgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ1JhYW1hdHVwaWRhbWluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0FhZHJlc3NpIGVyYWxkYW1pbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmFhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvb2d0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnU2VhZG1lIHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0FrdSBtYWh1dGF2dXMgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdBa3UgdMO8w7xwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnSG9vbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0J1c3NpbGlpZGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVIGtsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdNYWh0IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdWw7VpbXN1cyDDvGhlIGdyYWFmaWtha2FhcmRpIGtvaHRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnS2FhcmRpIG51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0thYXJkaWx1Z2VqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdLYWFyZGkgdMO8w7xwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdLbGllbnRpZGUgc2VydGlmaWthYWRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdLbGllbmRpdGFya3ZhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnS2xpZW5kaWthdGVnb29yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnS2VsbGFhZWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0Nsb2Nrc3BlZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0tvb2RpIGFsbGtpcmphc3RhbWlzZSBzZXJ0aWZpa2FhZGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb252ZXJlbnRzaXRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdLb25zdWx0YXRzaW9vbmlsZXBpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0tvbnRha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ1bDtXRrZSDDvGhlbmR1c3QgZWRhc2ltw7zDvGphZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdLb250ZWluZXJpdGUgaGFsZGFtaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnTGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdMZXBpbmd1IHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0xlcGluZ3VwZXJpb29kIGFsYXRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdMZXBpbmd1IGtlc3R1cyBrdW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ0p1aHRtZXRhIHRlbGVmb24gKERFQ1QtdGVsZWZvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnS3VsdcO8aGlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnTGl0c2VudHNpZGUgYXJ2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdMb29taXNlIGt1dXDDpGV2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdLb2hhbmRhdHVkIHJpaXVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFJlc2VydmVlcml0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy1zZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0FydmUga3V1cMOkZXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ1RlbGxpbXVzZSBrdXVww6Rldic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnR2FyYW50aWkga3V1cMOkZXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnVsOkbGphbGFza21pc2Uga3V1cMOkZXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ1TDtsO2bGF1YWFydnV0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnRG9rdW1lbmRpIGFsbGtpcmphc3RhbWlzZSBzZXJ0aWZpa2FhZGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSByaWl1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRS1wb3N0aSBzZXJ0aWZpa2FhZGlkIChTL01JTUUgc2VydGlmaWthYWRpZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnVMO2w7ZsZXBpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdMw7VwcC1JUC1hYWRyZXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnVG9ldHVzZSBsw7VwcGVtaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnS2VodGl2dXNrdXVww6Rldic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnVsOkbGluZSBrw7V2YWtldGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnVHVsZW3DvMO8cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnTsO1Z2FyYXR0YSBlbmVyZ2lhc2FsdmVzdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnVm9ybWlmYWt0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW50c2lpc2lsZXBpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdUYXN1dGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnw5xsZGluZSB0ZWF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWFmaWtha2FhcmRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhYWZpa2FrYWFydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ1JpaXN0dmFyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ1JpaXN0dmFyYSBtdWRlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdSaWlzdHZhcmEga2FhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnUGVha29tcGxla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUC1wcm90b2tvbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnSWRlbnRpdGVlZGkgamEganV1cmRlcMOkw6RzdSBoYWxkYW1pbmUgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudGFyaW51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0ludmVyc3RtZW50aSBrdWx1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0FydmUgbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2xhdmlhdHV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QgbW9uaXRvciAodmVkZWxrcmlzdGFsbGt1dmFyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVEIG1vbml0b3IgKHZhbGd1c2Rpb29kKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdMYXVhdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdTw7xsZWFydnV0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhaXVza3JhYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdLaWh0IDE6IGbDvMO8c2lsaW5lIGtpaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnS2lodCAyOiBhbmRtZXNpZGVraWhpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdLaWh0IDM6IHbDtXJndWtpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnS2lodCAzOiB2w7VyZ3VraWhpIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnS2lodCA0OiBUcmFuc3BvcmRpa2lodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnS2lodCA1OiBTZWFuc2lraWhpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0tpaHQgNjogRXNpdGx1c2tpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdLaWh0IDc6IFJha2VuZHVza2loaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdSZW5kaWxlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpdHNlbnRzaWxlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGl0c2VudHNpIHbDtXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpdHNlbnRzaXTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGl0c2VudHNpIGtlaHRpdnVzYWVnIGFsYXRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpdHNlbnRzaSBrZWh0aXZ1c2FlZyBrdW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaWl0aXVtcmF1ZGZvc2ZhYXQgKExpRmVQTzQpIGFrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGlpdGl1bS1pb29uIGFrdSAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0xhZW51bGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdBc3ViJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ1Bpa2t1c2tyYWFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnVG9vdGphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYWtzaW1hYWxuZSBrYW5kZXbDtWltZSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTcOkbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdNw6RsdSB0w7zDvHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWlsaW51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpaWxuZS9pbnRlZ3JlZXJpdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTXVkZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdNdWRlbGkga2lyamVsZHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ01vbml0b3JpIHJlc29sdXRzaW9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdNb25pdG9yaSBzdXVydXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdIaWlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdWw7Vyayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdWw7VyZ3VpbmZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdWw7VyZ3V0ZWF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnVsO1cmd1a29ycmFsZHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlra2VsLWthYWRtaXVtIChOaUNkKSBha3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWtrZWwtbWV0YWxsaMO8ZHJpaWQgKE5pTUgpIGFrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdNaXR0ZWF2YWxkYW1pc2UgbGVwaW5nIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTcOkcmttaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdQcm90c2Vzc29yaXRlIGFydic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdSQU0tbW9vZHVsaXRlIGFydic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdHcmFhZmlrYWthYXJ0aWRlIGFydic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCBtb25pdG9yIChvcmdhYW5pbGluZSB2YWxndXNkaW9vZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnVGVnZXZ1c2t1bHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ1RlbGxpbXVzZSBudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdNdXVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdWw6RsanVuZGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTi1LT09EJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcmx1c2xlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb25pbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUZWxlZm9uaSB0w7zDvHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGw7zDvHNpbGlzZWQgc8O8ZGFtaWt1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1RvaXRldmFydXN0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdPc3RldHVkIGFhZHJlc3NpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmlpdWxpIHPDvGdhdnVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnUmlpdWxpw7xrc3VzZWQgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdUdWJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNLWthYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUyBzZXJ0aWZpa2FhZGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnTcO8w7xnaWxlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbGxpaXR0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1N1bGV0dWQgcGxpaS1zb29saGFwcGUgYWt1IChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VlcmlhbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NlcnZlcmkgdGFya3ZhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdUZWVudXNlbGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnVGVlbnVzZSBzaWx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1Bpc3Rpa3VwZXNhIHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1Rhcmt2YXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnS8O1bmVsZWphZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1N0YXJ0IElQLWFhZHJlc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ0xhZHVzdGFtaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnU2FsdmVzdHVzcnV1bWkgZXJhbGRpc2Vpc3VuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ1TDvHRhcmV0dGV2w7V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnS29ra3V2w7V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ8OVaHVrZSBrbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ05paWRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdHcmFhZmlrYWthYXJkaSBSQU0ga29ra3UgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1JBTSBrb2trdSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdQdXV0ZWVrcmFhbmlnYSBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ybmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiBwZXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIgcGVha29tcGxla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUC10ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdWZWViaWthYW1lcmEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/fa_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZhX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ9mG2q/Yp9i02Kog2KjYsdin24wg2K/Ysdiu2YjYp9iz2Kog2K/Yp9iv2Ycg2YfYp9uMINmI2LHZiNiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICfZhtqv2KfYtNiqINio2LHYp9uMINm+2KfYs9iuINiu2LHZiNis24wg2K/Yp9iv2YcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICfZhdiv24zYsduM2KogQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICfYqti624zbjNixINiq2LnYsduM2YEg2qnZhNin2LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ9iq2LrbjNuM2LEg2KrYudix24zZgSDaqdmE2KfYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICfYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9ii24zYqtmFINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn2YHbjNmE2KrYsSDYqNix2KfbjCDaqdmE2KfYs+KAjNmH2KcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAn2qnZhNin2LPbjCDYsdinINio2LHYp9uMINiz2KfYrtiqINuM2qkg2KLbjNiq2YUg2b7YqNqp2LHYqNmG2K/bjCDYrNiv24zYryDYp9mG2KrYrtinINqp2YbbjNivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ9qp2YTYp9izJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICfZiNi22LnbjNiqINmG2LXYqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ9mI2LbYuduM2Kog2LHYrtiv2KfYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICfYotuM2Kcg2LTZhdinINmI2KfZgti52Kcg2YXbjCDYrtmI2KfZh9uM2K8gINin24zZhiDZgdi52KfZhNuM2Kog2LHYpyDYrdiw2YEg2qnZhtuM2K8g2J8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn2YbYp9mFINin24zZhiDYotuM2KrZheKAjNmH2KfbjCDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfYtNmF2KfYsdmHINmG2LPYrtmHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfZhtin2YUg2KfbjNmGINii24zYqtmF4oCM2YfYp9uMINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9mI2LbYuduM2Kog2YbYtdioJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn2YjYtti524zYqiDYsdiu2K/Yp9ivJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn2YXYrdiq2YjYp9uMINiz2KfYqNmC2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ9iy2YXYp9mGINin24zYrNin2K8gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ9mG2YXYp9uMINqp2KfZhdmEJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ9iq2LnYr9in2K8g2KLbjNiq2YXigIzZh9in24wg2b7bjNqp2LHYqNmG2K/bjCDYr9ixINmH2LEg2LXZgdit2YcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ9in2KzYsdinINis2LPYqtis2YgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn2K/YsSDZiNuM2LHYp9uM2LTigIzZh9in24wg2YLYqNmE24wg2YfZhSDYrNiz2KrYrNmIINin2YbYrNin2YUg2LTZiNiv2J8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn2KLbjNiq2YUg2b7bjNqp2LHYqNmG2K/bjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn2YjYtti524zYqiDZgdi52YTbjCDZhti12KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ9mI2LbYuduM2Kog2KzYp9ix24wg2LHYrtiv2KfYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfYotiu2LHbjNmGINiq2LrbjNuM2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn2KLYrtix24zZhiDYqti624zbjNixINio2Ycg2YjYs9uM2YTZhyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ9mG2YjYuSDZhdmI2LbZiNi5JzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAn2YHbjNmE2KrYsSDYqNixINin2LPYp9izINmG2YjYuSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ9mG24zYp9iyIEV4YW1wbGVQcm9jZXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfZhtmF24wg2KrZiNin2YbYryDYqtin2LHbjNiuINix2Kcg2YbYtNin2YYg2K/Zh9iv2Iwg2YfbjNqGIFRpY2tldElEINiv2KfYr9mHINmG2LTYr9mHINin2LPYqiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfZhtmF24wg2KrZiNin2YbYryDYqtin2LHbjNiuINix2Kcg2YbYtNin2YYg2K/Zh9iv2Iwg2YfbjNqGIFRpY2tldElEINiv2KfYr9mHINmG2LTYr9mHINin2LPYqiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfZhtmF24wg2KrZiNin2YbYryDYqtin2LHbjNiuINix2Kcg2YbYtNin2YYg2K/Zh9iv2Iwg2YfbjNqGIFRpY2tldElEINiv2KfYr9mHINmG2LTYr9mHINin2LPYqiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ9ii24zYqtmFINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn2YXZhtio2LknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfYudmF2YTbjNin2KrbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAn2KfYrti32KfYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn2YjYtti524zYqiDZhti12Kgg2KfbjNmGIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn2YjYtti524zYqiDYsdiu2K/Yp9ivINin24zZhiBDSSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ9io2K/ZiNmGINmF2KzZiNiyINmIINin2KzYp9iy2YcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ9mG2YjYuSDZiNi22LnbjNiqINmG2LXYqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICfZhtmI2Lkg2YjYtti524zYqiDYrNin2LHbjCDYsdiu2K/Yp9ivJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ9io24zZhic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfYrdiv2Kfaqdir2LEg2LTZhdin2LHZhyDbjNqpINi52YbYtdixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ9mF2YbZgti224wg2LTYr9mHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn2b7YtNiq24zYqNin2YbbjCDZiCDZhtqv2YfYr9in2LHbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9mG2YXZiNmG2Ycg2KLYstmF2KfbjNi024wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9io2LHZhtin2YXZhyDYsduM2LLbjCDYtNiv2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn2KrYudmF24zYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn2KjYp9iy2YbYtNiz2KrZhyDYtNiv2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn2KjYp9iy2KjbjNmG24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ9iq2LPYqi/Yqti22YXbjNmGINqp24zZgduM2KonOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn2KfYrNin2LLZhyDZhduMINiv2YfYryDYqtinINi02LHYp9uM2Lcg2KzYs9iq2KzZiCDYtNiv2Ycg2K/YsSDYrNiz2KrYrNmI24wg2KjZhNuM2Lcg2KfYsiDYsdin2KjYtyDYudin2YXZhCDYudmF2YjZhduMINin2LPYqi4g2KjYpyDYp9uM2YYg2YjbjNqY2q/bjCDYtNmF2Kcg2YXbjCDYqtmI2KfZhtuM2K8g2KjZhyDYudmG2YjYp9mGINmF2KvYp9mEINi52YbZiNin2YYg2KjZhNuM2Lcg2KjYpyDYp9uM2YYg2YbZiNi5INin2LIg2LTYsdin24zYtyDZhdin2YbZhtivIFwg2KzYs9iq2KzZiCAiKCoga2V5MSAqICYmICoga2V5MiAqKSAiINuM2KcgXCAiKCoga2V5MSAqIHx8ICoga2V5MiAqKSAiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfYp9is2KfYstmHINmF24wg2K/Zh9ivINiq2Kcg2LTYsdin24zYtyDYrNiz2KrYrNmIINi02K/ZhyDYr9ixINis2LPYqtis2YjbjCDYqNmE24zYtyDYp9iyINix2KfYqNi3INi52KfZhdmEINi52YXZiNmF24wg2KfYs9iqLiDYqNinINin24zZhiDZiNuM2pjar9uMINi02YXYpyDZhduMINiq2YjYp9mG24zYryDYqNmHINi52YbZiNin2YYg2YXYq9in2YQg2LnZhtmI2KfZhiDYqNmE24zYtyDYqNinINin24zZhiDZhtmI2Lkg2KfYsiDYtNix2KfbjNi3INmF2KfZhtmG2K8gXCDYrNiz2KrYrNmIICIoKiBrZXkxICogJiYgKiBrZXkyICopICIg24zYpyBcICIoKiBrZXkxICogfHwgKiBrZXkyICopICIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhdin2pjZiNmEINix2YjbjNiv2KfYryDYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMINqp2Ycg2KvYqNiqINmI2YLYp9uM2Lkg2K/YsSDYqtin2LHbjNiu2obZhyDYsdinINiv2LEg2YjYp9iz2Lcg2qnYp9ix2KjYsduMINqp2KfYsdi02YbYp9izINmB2LnYp9mEINmF24zigIzYs9in2LLYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfZhdit2K/ZiNiv24zYqiDYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iq2LrbjNuM2LEg2YXYs9uM2LHbjNin2Kgg2KzYs9iq2KzZiCDYr9ixINix2KfYqNi3INqp2KfYsdio2LHbjCDaqdin2LHYtNmG2KfYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfYs9in2K7YqiDZiCDZhdiv24zYsduM2Kog2KrYudin2LHbjNmBINii24zYqtmF4oCM2YfYp9uMINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ9iv2KfYr9mHINmH2KfbjCDZvtuM2LQg2YHYsdi2INio2LHYp9uMINin2LPYqtmB2KfYr9mHINio2LEg2LHZiNuMINmI24zamNqv24wg2KjYsdin24wg2LXZgdit2Ycg2YbZhdin24zYtCDYrNiz2KrYrNmIINio2YTbjNi3LiDYqNmHINi52YbZiNin2YYg2YXYq9in2YQ6IFwgIlRpY2tldENyZWF0ZVRpbWVQb2ludEZvcm1hdCA9INiz2KfZhNibIFRpY2tldENyZWF0ZVRpbWVQb2ludFN0YXJ0ID0g2KLYrtix24zZhi4gVGlja2V0Q3JlYXRlVGltZVBvaW50ID0gMtibICIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAn2K/Yp9iv2Ycg2YfYp9uMINm+24zYtCDZgdix2LYg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KjYsSDYsdmI24wg2YjbjNqY2q/bjCDYqNix2KfbjCDYtdmB2K3ZhyDZhtmF2KfbjNi0INis2LPYqtis2Ygg2KjZhNuM2LcuINio2Ycg2LnZhtmI2KfZhiDZhdir2KfZhDogXCAiVGlja2V0Q3JlYXRlVGltZVN0YXJ0WWVhciA9IDIwMTDYmyBUaWNrZXRDcmVhdGVUaW1lU3RhcnRNb250aCA9IDEw2JsgVGlja2V0Q3JlYXRlVGltZVN0YXJ0RGF5ID0gNNibIFRpY2tldENyZWF0ZVRpbWVTdG9wWWVhciA9IDIwMTDYmyBUaWNrZXRDcmVhdGVUaW1lU3RvcE1vbnRoID0gMTHYmyBUaWNrZXRDcmVhdGVUaW1lU3RvcERheSA9IDPYmyAiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn2KrYudix24zZgSDYudmF2YTbjNin2Kog2qnZhyDYr9ixINii2YYg24zaqSDYr9qp2YXZhyDYqtmG2LjbjNmF2KfYqiDYr9ixINiv2LPYqtix2LMg2KfYs9iqINiv2LEg2KfYtNuM2KfYoSDZhdix2KrYqNi3INmI24zYrNiqIChMaW5rT2JqZWN0IDo6IFZpZXdNb2RlID0gXCAi2b7bjNqG24zYr9mHICIpLiDZhNi32YHYpyDYqtmI2KzZhyDYr9in2LTYqtmHINio2KfYtNuM2K8g2qnZhyDYp9uM2YYg2KfZgtiv2KfZhdin2Kog2KjYp9uM2K8g2K/YsSDYqNixINiv2KfYtNiqINiy24zYsSBKUyDZiCBDU1Mg2YHYp9uM2YQg2YfYp9uMINir2KjYqiDZhtin2YUg2qnYsdiv2Ycg2KfZhtivOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzc9iMIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanPYjCBDb3JlLlVJLlRhYmxlLlNvcnQuanPYjCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYqtmI2KzZhyDYr9in2LTYqtmHINio2KfYtNuM2K8g2KjZhNuM2Lcg2K/YsSDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iv2LPYqtix2LPbjCDZhdmI2LHYryDZhtuM2KfYsiDYqNix2KfbjCDYp9iz2KrZgdin2K/ZhyDYp9iyINi12YHYrdmHINmG2YXYp9uM2LQg2KrZiNis2Ycg2K/Yp9i02KrZhyDYqNin2LTbjNivINio2YTbjNi3INiv2LEg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiq2YjYrNmHINiv2KfYtNiq2Ycg2KjYp9i024zYryDYqNmE24zYtyDYr9ixINix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYqtmI2KzZhyDYr9in2LTYqtmHINio2KfYtNuM2K8g2KjZhNuM2Lcg2K/YsSDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAn2KrYudix24zZgSDZhdin2pjZiNmEINmG2YXYp9uMINqp2YTbjCDYqNix2KfbjCDZhtmF2KfbjNi0INmG2YXYp9uMINqp2YjahtqpINin2LIg2YHZh9ix2LPYqiDYqti624zbjNix2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINio2Ycg2LfZiNixINm+24zYtCDZgdix2LYg2YjbjNqY2q/bjCDYqNmE24zYtyDYqNix2KfbjCDZhdix2KrYqCDYs9in2LLbjCDYqNmE24zYtyDYp9iyINmG2KrbjNis2Ycg2KzYs9iq2KzZiCDYqNmE24zYtyDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYqNmHINi32YjYsSDZvtuM2LQg2YHYsdi2INmI24zamNqv24wg2KjZhNuM2Lcg2KjYsdin24wg2YXYsdiq2Kgg2LPYp9iy24wg2KjZhNuM2Lcg2KfYsiDZhtiq24zYrNmHINis2LPYqtis2Ygg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINio2Ycg2LfZiNixINm+24zYtCDZgdix2LYg2YjbjNqY2q/bjCDYqNmE24zYtyDYqNix2KfbjCDZhdix2KrYqCDYs9in2LLbjCDYqNmE24zYtyDYp9iyINmG2KrbjNis2Ycg2KzYs9iq2KzZiCDYqNmE24zYtyDYp9uM2YYg2LnZhdmE24zYp9iqLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINio2Ycg2LfZiNixINm+24zYtCDZgdix2LYg2LPZgdin2LHYtCDYqNmE24zYtyDYr9ixINmG2KrbjNis2Ycg2KzYs9iq2KzZiCDYqNmE24zYtyDYsdin2KjYtyDYudin2YXZhC4g2KrYpzog2YLYr9uM2YXbjCDYqtix24zZhiDYr9ixINio2KfZhNin24wg2LXZgdit2YcuINm+2KfbjNuM2YY6INi02K/ZhiDYr9ixINio2KfZhNin24wg2LXZgdit2YcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfYqti52LHbjNmBINmF24wg2qnZhtivINqp2Ycg2KjZhyDYt9mI2LEg2b7bjNi0INmB2LHYtiDYs9mB2KfYsdi0INio2YTbjNi3INin2LIg24zaqSDZhtiq24zYrNmHINis2LPYqtis2Ygg2K/YsSDYsdin2KjYtyDZhdi02KrYsduMLiDYqtinOiDZgtiv24zZhduMINiq2LHbjNmGINiv2LEg2KjYp9mE2KfbjCDYtdmB2K3Zhy4g2b7Yp9uM24zZhjog2LTYr9mGINiv2LEg2KjYp9mE2KfbjCDYtdmB2K3Zhy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINio2Ycg2LfZiNixINm+24zYtCDZgdix2LYg2LPZgdin2LHYtCDYqNmE24zYtyDYr9ixINmG2KrbjNis2Ycg2KzYs9iq2KzZiCDYqNmE24zYtyDYp9iyINin24zZhiDYudmF2YTbjNin2KouINiq2Kc6INmC2K/bjNmF24wg2KrYsduM2YYg2K/YsSDYqNin2YTYp9uMINi12YHYrdmHLiDZvtin24zbjNmGOiDYtNiv2YYg2K/YsSDYqNin2YTYp9uMINi12YHYrdmHLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfYqti52LHbjNmBINmF24wg2qnZhtivINqp2Ycg2KjZhyDYt9mI2LEg2b7bjNi0INmB2LHYtiDZhti02KfZhiDYr9in2K/ZhyDYqNmE24zYtyDZiNuM2pjar9uMINis2LPYqtis2Ygg2KjYsdin24wg2LXZgdit2Ycg2YbZhdin24zYtCDYrNiz2KrYrNmIINio2YTbjNi3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINio2Ycg2LfZiNixINm+24zYtCDZgdix2LYg2YbYtNin2YYg2K/Yp9iv2Ycg2KjZhNuM2Lcg2YjbjNqY2q/bjCDYrNiz2KrYrNmIINio2LHYp9uMINi12YHYrdmHINmG2YXYp9uM2LQg2KzYs9iq2KzZiCDYqNmE24zYty4g2KjZhyDYudmG2YjYp9mGINmF2KvYp9mEOiBcICLaqdmE24zYryAiINio2KfbjNivINmG2KfZhSDYstmF24zZhtmHINm+2YjbjNinINiv2LEg2KfbjNmGINmF2YjYsdivIFwnWFwn2IwgXCAi2YXYrdiq2YjYpyAi2Iwg2KjYp9uM2K8g2KfYsdiy2LQg2K/Ysdiz2Kog2b7ZiNuM2Kcg2KjYs9iq2Ycg2KjZhyDZhtmI2Lkg2b7ZiNuM2Kcg2K/Ysdiz2KrYjCDZhdiq2YYg2LHYpyDYr9in2LTYqtmHINio2KfYtNivOiDbjNqpINmF2KrZhtiMINqp2LHaqdix2YcgOiBcJzFcJ9iMINiq2KfYsduM2K4gLyDYstmF2KfZhjogU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXIgPSAxOTc02JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoID0gMDHYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5ID0gMjbYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91ciA9IDAw2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZSA9IDAw2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZCA9IDAw2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhciA9IDIwMTPYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aCA9IDAx2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5ID0gMjbYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyID0gMjPYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGUgPSA1OdibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZCA9IDU52JsgXCcg2Ygg24zYpyAiU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0ID0g2YfZgdiq2YfYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydCA9INmC2KjZhCDYp9iyLiBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZSA9IDcgXCfYmy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYp9ix2KrZgdin2Lkg2KjYsdin24wg2LrZhtuMINis2LLYoSDZiNuM2LHYp9uM2LTar9ixINmF2KrZhiDYqNix2KfbjCDYp9uM2YYg2LXZgdit2Ycg2YbZhdin24zYtC4g2KrYudiv2KfYryAo2b7bjNqp2LPZhCkg24zYpyDYp9ix2LLYtCDYr9ix2LXYryAo2YbYs9io24wpINix2Kcg2YjYp9ix2K8g2qnZhtuM2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYp9mC2YTYp9mFINio2LHYp9uMIFwn2LnZhdmEXCcg2K/YsSDYs9i32K0g2LPZiNmFINiz2KfYrtiq2KfYsSBBQ0wg2K/YsSDYr9iz2KrYsdizINmH2LPYqtmG2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINin2YLZhNin2YUg2K/YsSDYs9i32K0g2KfZiNmEINin2LIg2LPYp9iu2KrYp9ixIEFDTCDYr9ixINiv2LPYqtix2LMg2YfYs9iq2YbYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINin2YLZhNin2YUg2K/YsSDYs9i32K0g2K/ZiNmFINin2LIg2LPYp9iu2KrYp9ixIEFDTCDYr9ixINiv2LPYqtix2LMg2YfYs9iq2YbYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn2YjYtti524zYqiDZhti12KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAn2YjYtti524zYqiDZhti12KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn2Kraqdir24zYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ9it2KzZhSDYr9ix2K7ZiNin2LPYqiDYp9iyINmI24zamNqv24wg2YfYp9uMINi52YXZhCDYqNix2KfbjCDYuNin2YfYsSDYudin2YXZhCDYqNmHINqp2KfYsSDYqNixINix2YjbjCDYqNuM2LQg2KfYsiDYr9ix2K7ZiNin2LPYqiDYr9ixINuM2qkg2LLZhdin2YYg2YLYp9iv2LEg2YXbjCDYs9in2LLYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ9mI24zamNqv24wg2YfYp9uMINi52YXZhCDYrdis2YUg2K/Ysdiu2YjYp9iz2Kog2KrZhtmH2Kcg2KjYsdin24wg2q/YsdmI2Ycg2YfYp9uMINiw2qnYsSDYtNiv2Ycg2LHYpyDZgtin2K/YsSDZhduMINiz2KfYstivIC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlINir2KjYqiDZhtin2YUg2YXYp9qY2YjZhCDYqNix2KfbjCDZhNin24zZhyBpbnZva2VyINin2LPYqi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlINir2KjYqiDZhtin2YUg2YXYp9qY2YjZhCDYqNix2KfbjCDZhNin24zZhyBpbnZva2VyINin2LPYqi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSDYq9io2Kog2YbYp9mFINmF2KfamNmI2YQg2KjYsdin24wg2YTYp9uM2YcgaW52b2tlciDYp9iz2KouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ9ii24zYqtmFINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAn2YjYtti524zYqiDYsdiu2K/Yp9ivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfZiNi22LnbjNiqINix2K7Yr9in2K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9it2K/Yp9qp2KvYsSDYqti52K/Yp9ivINiv2LHYrtmI2KfYs9iqINiv2LEg2YbYqtuM2KzZhyDYp9uM2YYg2qnYp9ixINmG2YXYp9uM2LQg2K/Yp9iv2Ycg2YXbjCDYtNmI2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KrYudiv2KfYryDYqNmE24zYtyDYr9ixINmH2LEg2LXZgdit2Ycg2KfYsiDbjNqpINmG2KrbjNis2Ycg2KzYs9iq2KzZiCDYr9ixINix2KfYqNi3INi52KfZhdmEINmG2YXYp9uM2LQg2K/Yp9iv2Ycg2LTZiNivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYqti52K/Yp9ivINio2YTbjNi3INiv2LEg2YfYsSDYtdmB2K3ZhyDYp9iyINuM2qkg2YbYqtuM2KzZhyDYrNiz2KrYrNmIINiv2LEg2LHYp9io2Lcg2YXYtNiq2LHbjCDZhtmF2KfbjNi0INiv2KfYr9mHINmF24wg2LTZiNivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfZvtuM2LQg2YbZhdin24zYtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn2b7Yp9ix2KfZhdiq2LHZh9in24zbjCDYqNix2KfbjCDar9ix2YjZh+KAjNmH2KfbjCDYr9iz2KrYsdiz24wg2YbZhdmI2YbZhyDZhdix2KjZiNi3INio2Ycg2YjbjNqY2q/bjOKAjNmH2KfbjCDZgdmH2LHYs9iqINi52YXZiNmF24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ9in2YbYrNin2YUg2LnZhdmEINm+24zaqdix2KjZhtiv24wg2KjYsdin24wg2YfYsSDYsdmI24zYr9in2K8gKNio2Ycg2LnZhtmI2KfZhiDbjNqpIEludm9rZXIpINio2LHYp9uMINmH2LEg2KfYsiB3ZWJzZXJ2aWNlINm+24zaqdix2KjZhtiv24wg2LTYr9mHINin2LPYqi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiu2LHZiNis24wg2KfbjNmF24zZhCDYr9ixINi12YHYrdmHINuMINqp2KfYsdi02YbYp9izLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYqtmI2KzZhyDYr9in2LTYqtmHINio2KfYtNuM2K8g2KjZhNuM2Lcg2K/YsSDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiu2LHZiNis24wg2KfbjNmF24zZhCDYr9ixINi12YHYrdmHINuMINqp2KfYsdi02YbYp9izLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iv2LPYqtix2LPbjCDZhdmI2LHYryDZhtuM2KfYsiDYqNix2KfbjCDYp9iz2KrZgdin2K/ZhyDYp9iyINi12YHYrdmHINmG2YXYp9uM2LQg2K7YsdmI2KzbjCDYp9uM2YXbjNmEINiv2LEg2LXZgdit2Ycg24wg2qnYp9ix2LTZhtin2LMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LLYr9ix2K7ZiNin2LPYqiDYtdmB2K3ZhyDZhtmF2KfbjNi0INmH2KfbjCDZhdiq2YbbjCDYsdin24zar9in2YYg2K/YsSDYtdmB2K3ZhyDbjCDaqdin2LHYtNmG2KfYsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYrtix2YjYrNuMINin24zZhduM2YQg2K/YsSDYtdmB2K3ZhyDbjCDaqdin2LHYtNmG2KfYsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiu2LHZiNis24wg2KfbjNmF24zZhCDYr9ixINi12YHYrdmHINuMINqp2KfYsdi02YbYp9izLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiu2LHZiNis24wg2KfbjNmF24zZhCDYr9ixINi12YHYrdmHINuMINqp2KfYsdi02YbYp9izLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiu2LHZiNis24wg2KfbjNmF24zZhCDYr9ixINi12YHYrdmHINuMINqp2KfYsdi02YbYp9izLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiq2YjYrNmHINiv2KfYtNiq2Ycg2KjYp9i024zYryDYqNmE24zYtyDYr9ixINix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYqtmI2KzZhyDYr9in2LTYqtmHINio2KfYtNuM2K8g2KjZhNuM2Lcg2K/YsSDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YbZiNi5INio2YTbjNi3INiv2LEg2LXZgdit2Ycg2YbZhdin24zYtCDZgdmE2Ycg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQg2KrZhti424zZhSDZhduMINqp2YbYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YbZiNi5INio2YTbjNi3INiv2LEg2LXZgdit2Ycg2YbZhdin24zYtCDZgdmE2Ycg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQg2KrZhti424zZhSDZhduMINqp2YbYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhti02KfZhiDZhduMINiv2YfYryDbjNqpINmE24zZhtqpINiv2LEg2YXZhtmI24wg2KvYqNiqINmG2KfZhSDbjNqpINio2YTbjNi3INio2Ycg24zaqSDZgdix2KfbjNmG2K8g2K/YsSDZhti42LEg2LLZiNmFINio2YTbjNi3INix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9uM2qkg2YTbjNmG2qkg2K/YsSDZhdmG2YjbjCDZhti02KfZhiDZhduMINiv2YfYryDYqNix2KfbjCDYr9uM2K/ZhiDYqtin2LHbjNiuINuM2qkg2KjZhNuM2Lcg2K/YsSDZh9ixINmF2LHZiNix24wg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9uM2qkg2YTbjNmG2qkg2K/YsSDZhdmG2YjbjCDZhti02KfZhiDZhduMINiv2YfYryDYqNix2KfbjCDYr9uM2K/ZhiDYqtin2LHbjNiuINuM2qkg2KjZhNuM2Lcg2K/YsSDZh9ixINmF2LHZiNix24wg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YbYtNin2YYg2YXbjCDYr9mH2K8g24zaqSDZhNuM2YbaqSDYr9ixINmF2YbZiNuMINir2KjYqiDZhtin2YUg24zaqSDYqNmE24zYtyDYqNmHINuM2qkg2YHYsdin24zZhtivINiv2LEg2YbYuNixINiy2YjZhSDYqNmE24zYtyDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mG2LTYp9mGINmF24wg2K/Zh9ivINuM2qkg2YTbjNmG2qkg2K/YsSDZhdmG2YjbjCDYq9io2Kog2YbYp9mFINuM2qkg2KjZhNuM2Lcg2KjZhyDbjNqpINmB2LHYp9uM2YbYryDYr9ixINmG2LjYsSDYstmI2YUg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mG2LTYp9mGINmF24wg2K/Zh9ivINuM2qkg2YTbjNmG2qkg2K/YsSDZhdmG2YjbjCDYq9io2Kog2YbYp9mFINuM2qkg2KjZhNuM2Lcg2KjZhyDbjNqpINmB2LHYp9uM2YbYryDYr9ixINmG2LjYsSDYstmI2YUg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZhti02KfZhiDZhduMINiv2YfYryDbjNqpINmE24zZhtqpINiv2LEg2YXZhtmI24wg2KvYqNiqINmG2KfZhSDbjNqpINio2YTbjNi3INio2Ycg24zaqSDZgdix2KfbjNmG2K8g2K/YsSDZhti42LEg2LLZiNmFINio2YTbjNi3INix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn24zaqSDZhNuM2YbaqSDYr9ixINmF2YbZiNuMINmG2LTYp9mGINmF24wg2K/Zh9ivINio2Ycg2LLZiNmFINuM2qkg2KjZhNuM2Lcg2K/YsSDZhdix2YjYsduMINio2YTbjNi3INix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mG2LTYp9mGINmF24wg2K/Zh9ivINuM2qkg2YTbjNmG2qkg2K/YsSDZhdmG2YjbjCDYq9io2Kog2YbYp9mFINuM2qkg2KjZhNuM2Lcg2KjZhyDbjNqpINmB2LHYp9uM2YbYryDYr9ixINmG2LjYsSDYstmI2YUg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YbYtNin2YYg2YXbjCDYr9mH2K8g24zaqSDZhNuM2YbaqSDYr9ixINmF2YbZiNuMINir2KjYqiDZhtin2YUg24zaqSDYqNmE24zYtyDYqNmHINuM2qkg2YHYsdin24zZhtivINiv2LEg2YbYuNixINiy2YjZhSDYqNmE24zYtyDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iq2KfYsduM2K4g2KjZhNuM2LcgKNmF2LnaqdmI2LMg2K/Ys9iq2YjYsSDYr9in2K8pINiv2LEg2LHYp9io2Lcg2LnYp9mF2YQg2YbYtNin2YYg2YXbjCDYr9mH2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfaqdmE2KfYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ9iz2KfYrtiq2YXYp9mGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfZiNin2LPYtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICfYs9uM4oCM2b7bjOKAjNuM2YgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAn2LHZiNmF24zYstuMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ9mG2LHZhSDYp9mB2LLYp9ixINmF2KzYp9mG24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ9i12YHYrdmHINqp2YTbjNivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfaqduM2YHbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn2YXYr9mEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfZhdin2YjYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn2LrbjNix2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ9mG2YjYuSDZhtiq24zYrNmHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn2KfYqtin2YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfYqtmI2KfZgdmCINiz2LfYrSDYs9ix2YjbjNizJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfYp9iz2KrYp9mG2K/Yp9ix2K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/fi_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZpX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdZbGVpc2V0IHRvaW1pbnRhdGllZG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdTYWFwdXZpZW4gcHl5bnTDtmplbiB0aWV0b2plbiBhc2V0dWtzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdMw6RodGV2aWVuIHZhc3RhdXN0aWV0b2plbiBhc2V0dWtzZXQnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWcgSXRlbSBNYW5hZ2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTXV1dGEgbHVva2FuIG3DpMOkcml0ZWxtw6TDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnTXV1dGEgcm9vbGluIG3DpMOkcml0ZWxtw6TDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1JlYWR5MkltcG9ydC1sdW9ra2Frb2tvbmFpc3V1ZGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnVMOkw6RsdMOkIHZvaXQgdHVvZGEgUmVhZHkySW1wb3J0LWx1b2trYWtva29uYWlzdXVrc2lhLCBqb3RrYSBlc2l0dGVsZXbDpHQgdGF2YWxsaXNpbXBpYSBrb25maWd1cm9pbnRpa29odGVpdGFtbWUuIEh1b21hYSwgZXR0w6Qgam9pdGFraW4gbGlzw6Rrb25maWd1cmFhdGlvaXRhIHNhYXRldGFhbiB0YXJ2aXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdQw6Rpdml0ZXTDpMOkbiBvbGVtYXNzYSBvbGV2YXQgeWtzaWvDtnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdUdW8gUmVhZHkyQWRvcHQtbHVva2FuIG5pcHB1amEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDb25maWcgSXRlbSAtbHVva2thJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgSXRlbSByb29saSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdMdW9ra2llbiBzdW9kYXRpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdWYWxpdHNlIGx1b2trYSBsdWV0dGVsb3N0YSBsdW9kYWtzZXNpIHV1ZGVuIENvbmZpZyBJdGVtaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnTHVva2thJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGstdG9pbWludG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0vDpHl0dMO2w7Zub3RvbiB0aWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnVGFwYWh0dW1hbiB0aWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0xpbmtraSB0b2lzZWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdWaXJoZWVsbGluZW4ga29uZmlndXJvaW50aWtvaHRlZW4gbnVtZXJvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdUb2lzZW4ga29rb29ucGFub2tvaHRlZW4gbnVtZXJvLCBqb2hvbiBsaW5raXRldMOkw6RuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ0hhbHVhdGtvIHRvZGVsbGEgcG9pc3RhYSB0w6Rtw6RuIGtvbmZpZ3VyYWF0aW9lbGVtZW50aW4/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1TDpG3DpG4ga29uZmlndXJhYXRpb2VsZW1lbnRpbiBuaW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOaW1pIG9uIGpvIGvDpHl0w7Zzc8OkIENvbmZpZ0l0ZW1zLWtvaHRlaXNzYSBzZXVyYWF2YWxsYSBudW1lcm9sbGEgKHNldXJhYXZpbGxhIG51bWVyb2lsbGEpOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzaW9uIG51bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVMOkbcOkbiBrb25maWd1cmFhdGlvZWxlbWVudGluIHZlcnNpb251bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ1ZlcnNpb2x1a3Ugb24gam8ga8OkeXTDtnNzw6QgQ29uZmlnSXRlbXNpc3NhLCBqb2lsbGEgb24gc2V1cmFhdmEodCkgbnVtZXJvKHQpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnS8OkeXR0w7bDtm5vdG9uIHRpbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdUYXBhaHR1bWFuIHRpbGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0NvbmZpZyBJdGVtaW4gaGlzdG9yaWE6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0hpc3RvcmlhIFNpc8OkbHTDtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdab29tYXVzbsOka3ltw6QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlnIEtvaHRlZXQgcGVyIHNpdnUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ0tvbmZpZ3Vyb2ludGlrb2hkZXRpZXRvamEgZWkgbMO2eXR5bnl0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZhbGl0c2UgdMOkbcOkIGtvbmZpZ3Vyb2ludGlrb2h0YSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1N1b3JpdGEgaGFrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICdNecO2cyBoYWt1IGFpZW1taXNzYSB2ZXJzaW9pc3NhPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0tcHV1bsOka3ltw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdTeXZ5eXN0YXNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbWF1cyBzaXPDpMOkbi91bG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ0NvbmZpZ0l0ZW1pbiBlbmltbcOkaXNsaW5ra2llbiB0YXNvIHNhYXZ1dGV0dHUhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS29uZmlndXJvaW50aSBLb2hkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdLb25maWd1cm9pbnRpa29odGVlbiB0aWVkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnTnlreWluZW4ga8OkeXR0w7bDtm5vdHRvdGlsYW5uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnTnlreWluZW4gdGFwYWh0dW1hdGlsYW5uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdWaWltZWtzaSBtdXV0ZXR0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdWaWltZWtzaSBtdXV0dGFudXQnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdTaW51biBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtLWhha3UnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ0tvaHRlZW4gdHl5cHBpJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2V1cmFhdmF0IGx1b2thdCB0dW9kYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NldXJhYXZhdCByb29saXQgdHVvZGFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdIdW9tYWEsIGV0dMOkIG15w7ZzIHZhc3RhYXZhdCBkeW5hYW1pc2V0IGtlbnTDpHQgamEgR2VuZXJhbENhdGFsb2ctbHVva2F0IGx1b2RhYW4sIGVpa8OkIG5paXTDpCBwb2lzdGV0YSBhdXRvbWFhdHRpc2VzdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnSGFsdWF0dGVrbyBqYXRrYWE/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ1RhcnZpdGFhbiBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnTcOkw6RyaXRlbG3DpCBlaSBvbGUga2Vsdm9sbGluZW4gWUFNTC1oYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1lsZWlza2F0c2F1czogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRDp0w6QgZWkgb2xlIGFubmV0dHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnVGFydml0c2V0IHbDpGhpbnTDpMOkbiB5aGRlbiB2YWxpdHVuIG3DpMOkcml0eXNrb2h0ZWVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ1NpbnVsbGEgZWkgb2xlIGtpcmpvaXR1c29pa2V1dHRhIHTDpGjDpG4gbcOkw6RyaXR5c2tvaHRlZXNlZW46ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdMdW9rYWxsZSAlcyBlaSBvbGUgbcOkw6RyaXRlbHR5IG3DpMOkcml0ZWxtw6TDpCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0tvbmZpZ3VyYWF0aW9lbGVtZW50dGnDpCAiJXMiIGVpIGzDtnlkeSB0aWV0b2thbm5hc3RhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ0tvbmZpZ2lrb2hkZXR1bm51c3RhICVzIGVpIHB5c3R5dHR5IHBvaXN0YW1hYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdDb25maWdJdGVtSUQgJXM6bGxlIGVpIGzDtnl0eW55dCB2ZXJzaW90YSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlELSwgRHVwbGljYXRlSUQtIHRhaSBDbGFzc0lELW51bWVyb2EgZWkgb2xlIGFubmV0dHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdQw6TDpHN5w6QgZWkgYW5uZXRhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdIaXN0b3JpYWEgZWkgdm9pIG7DpHl0dMOkw6QsIGtvc2thIENvbmZpZ0l0ZW1JRDp0w6QgZWkgb2xlIGFubmV0dHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnSGlzdG9yaWFhIGVpIHZvaSBuw6R5dHTDpMOkLCBrb3NrYSBrw6R5dHTDtm9pa2V1a3NpYSBlaSBvbGUgYW5uZXR0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ1V1c2kgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdVdXNpIHZlcnNpbyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnWWxlaXNlbiBsdWV0dGVsb24gYXR0cmlidXV0dGllbiBlc2ltZXJra2lvaWtldXNyeWhtaWVuIHBhcmFtZXRyaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1RhcGFodHVtYW4gdGlsYSBww6Rpdml0ZXR0eSAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIHBvaXN0ZXR0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdMaW5ra2kgJXMgKHR5cGU9JXMpIGxpc8OkdHR5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGlua2tpICVzICh0eXBlPSVzKSBwb2lzdGV0dHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW0tbcOkw6RyaXRlbG3DpCBww6Rpdml0ZXR0eSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTmltaSBww6Rpdml0ZXR0eSAodXVzaT0lcywgdmFuaGE9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidXV0dGkgJXMgcMOkaXZpdGV0dHkgIiVzIi1hcnZvc3RhICIlcyIgYXJ2b29uICIlcyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpbyAlcyBwb2lzdGV0dHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlELSB0YWkgVmVyc2lvbklELW51bWVyb2EgZWkgb2xlIGFubmV0dHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0tvbmZpZ3VyYWF0aW9lbGVtZW50dGnDpCBlaSB2b2kgbsOkeXR0w6TDpCwga29za2Ega8OkeXR0w7ZvaWtldWtzaWEgZWkgb2xlIGFubmV0dHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIGVpIGzDtnlkeSB0aWV0b2thbm5hc3RhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAndHVsb3N0YW51dCAlcyBvc29pdHRlZXNzYSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnVmlpdGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdWw6TDpHLDpCBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0NsYXNzSUQ6dMOkIGVpIG9sZSBhbm5ldHR1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ1TDpGxsZSBsdW9rYWxsZSBlaSBvbGUgYW5uZXR0dSBrw6R5dHTDtm9pa2V1a3NpYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0VpIHR1bG9zdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnQ29uZmlnIEl0ZW0gaGFrdXR1bG9rc2V0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdFbGVtZW50dGnDpCBlaSB2b2kgbsOkeXR0w6TDpCwgQ29uZmlnSXRlbWlsbGUgZWkgb2xlIGFubmV0dHUga8OkeXR0w7ZvaWtldWtzaWEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gZWkgbMO2eXR5bnl0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdWZXJzaW9pdGEgZWkgbMO2eXR5bnl0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ3RvaW1pbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICd2YXJvaXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ3RhcGFodHVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVMOkbcOkbiBrb25maWd1cmFhdGlvZWxlbWVudGluIGvDpHl0dMO2w7Zub3R0b3RpbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUw6Rtw6RuIGtvbmZpZ3VyYWF0aW9lbGVtZW50aW4gdGFwYWh0dW1hdGlsYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0VpIGx1cGFhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ1N1b2RhdGluIG9uIHZpcmhlZWxsaW5lbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdOw6R5dGV0eXQga29uZmlndXJvaW50aWtvaHRlZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnS8OkeXR0w7bDtm5vdHRvdGlsYW4gdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ055a3lpbmVuIHRhcGFodHVtYXRpbGEgVHl5cHBpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ1bDpGxpbGzDpCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnTHVva2thcmFqb2l0dWtzZXQga29uZmlndXJvaW50aWtvaGRldHRhIHZhcnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVmFsaXRzZSB5a3NpIHRhaSB1c2VhbXBpIGx1b2trYSByYWpvaXR0YWFrc2VzaSB2YWxpdHRhdmlzc2Egb2xldmlhIGtvbmZpZ3VyYWF0aW9rb2h0ZWl0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0x1b2trYXJham9pdHVrc2V0IGtvbmZpZ3Vyb2ludGlrb2hkZXR0YSB2YXJ0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdWYWxpdHNlIHlrc2kgdGFpIHVzZWFtcGkgbHVva2thIHJham9pdHRhYWtzZXNpIHZhbGl0dGF2aXNzYSBvbGV2aWEga29uZmlndXJhYXRpb2tvaHRlaXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFhbWluZW4gKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKHZlcnNpbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnTGlua2tpIFZpaXR0YXVzdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ0tvc2tlZWtvIHTDpG3DpCBsaW5ra2kgQ29uZmlnSXRlbS1vYmpla3RpYSB2YWkgdmlpdHRhYXZhbiBvYmpla3RpbiBzdGFhdHRpc3RhIHZlcnNpb3RhLiBDdXJyZW50IEluY2lkZW50IFN0YXRlIC1sYXNrZW50YSBzdW9yaXRldGFhbiB2YWluIGR5bmFhbWlzaWxsZSBsaW5rZWlsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnVmFsaXRzZSBhdHRyaWJ1dXR0aSwgam9ua2EgbXVrYWFuIGtvbmZpZ3Vyb2ludGlrb2h0ZWl0YSBldHNpdMOkw6RuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ1BlcnVzcmFrZW5uZSBlaSBvbGUga2Vsdm9sbGluZW4uIFRvaW1pdGEgaGFzaCwgam9zc2Egb24gdGlldG9qYSBZQU1MLW11b2Rvc3NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1lBTUwtbWVya2tpam9ubyBvbiBhbG9pdGV0dGF2YSBraXJqYWltZWxsYSBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdUYXVsdWtrb2EgY29uZmlnaXRlbV9saW5rIGVpIHZvaXR1IHR5aGplbnTDpMOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTWVya2l0eWtzZWxsaXNpw6QgZHluYWFtaXNpYSBrZW50dGnDpCBlaSBsw7Z5dHlueXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdUYXVsdWtrb29uIGNvbmZpZ2l0ZW1fbGluayBlaSB2b2l0dSBsaXPDpHTDpCB0aWV0b2phLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTGlzw6R0dHkgMCByaXZpw6QgdGF1bHVra29vbiBjb25maWdpdGVtX2xpbmtraSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdZaGRlbiBlbGVtZW50aW4gZW5pbW3DpGlzbcOkw6Ryw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnVHVvL3ZpZSBsaWl0ZXRpZWRvc3RvamEgKHJpdmluIHZpaW1laXNpbsOkIG1lcmtpbnTDtmluw6QpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpbyBtZXJra2lqb25vJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ1ZpcmhlIG3DpMOkcml0ZWxtaWVuIHN5bmtyb25vaW5uaXNzYS4gVGFya2lzdGEgbG9raS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdTaW51bGxhIG9uIElUU01Db25maWdJdGVtLW3DpMOkcml0eWtzacOkLCBqb2l0YSBlaSBvbGUgc3lua3Jvbm9pdHUuIE90YSBrw6R5dHTDtsO2biBJVFNNQ29uZmlnSXRlbS1keW5hYW1pc3RlbiBrZW50dGllbiBtdXV0b2tzZXQuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdWYW5oZW50dW51dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0h1b2x0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90dGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1N1dW5uaXRlbHR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ0tvcmphdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ0Vsw6Rra2VlbGzDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdBcnZvc3RlbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3RpL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdZbGVpc2thdHNhdXMgamEgdmFodmlzdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0x1b2traWVuL3Jvb2xpZW4gamEgbmlpaGluIGxpaXR0eXZpZW4ga2VudHRpZW4gdHVvbWluZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdMdW9rYW4gdHVvbm5pbiBhaWthbmEgdGFwYWh0dWkgdmlyaGUuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBQaWlsb3RldHR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBLdXZhc3NhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdNYWhkb2xsaXN0YWEgbGFhamVubmV0dXQgaGFrdWVoZG90IGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIGtvbmZpZ3Vyb2ludGlrb2hkZWhhdXNzYS4gVMOkbcOkbiBvbWluYWlzdXVkZW4gYXZ1bGxhIHZvaXQgaGFrZWEgZXNpbS4ga29uZmlndXJhYXRpb2VsZW1lbnRpbiBuaW1lw6QgdMOkbGxhaXNpbGxhIGVoZG9pbGxhIGt1dGVuICIoKmtleTEqJiYqa2V5MiopIiB0YWkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdNYWhkb2xsaXN0YWEgbGFhamVubmV0dXQgaGFrdWVoZG90IGFzaWFra2FhbiBrw6R5dHTDtmxpaXR0eW3DpG4ga29uZmlndXJhYXRpb2tvaHRlaWRlbiBoYXVzc2EuIFTDpG3DpG4gb21pbmFpc3V1ZGVuIGF2dWxsYSB2b2l0IGhha2VhIGVzaW0uIGtvbmZpZ3VyYWF0aW9lbGVtZW50aW4gbmltZcOkIHTDpGxsYWlzaWxsYSBlaGRvaWxsYSBrdXRlbiAiKCprZXkxKiYmKmtleTIqKSIgdGFpICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnTXnDtm5uZXR5dCBDSTp0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdBc2lha2FzeXJpdHlrc2VsbGUgb3NvaXRldHV0IENJOnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdBc2lha2Fza8OkeXR0w6Rqw6RsbGUgbcOkw6RyaXRldHl0IENJOnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREItYXNldHVrc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdUYXJraXN0YSwgZXR0w6QgbmltaSBvbiB5a3NpbMO2bGxpbmVuIHZhaW4gc2FtYW4gQ29uZmlnSXRlbS1sdW9rYW4gKFwnY2xhc3NcJykgc2lzw6RsbMOkIHRhaSBnbG9iYWFsaXN0aSAoXCdnbG9iYWxcJyksIG1pa8OkIHRhcmtvaXR0YWEsIGV0dMOkIGpva2FpbmVuIG9sZW1hc3NhIG9sZXZhIENvbmZpZ0l0ZW0gb3RldGFhbiBodW9taW9vbiwga3VuIGV0c2l0w6TDpG4ga2Frc29pc2thcHBhbGVpdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdWYWxpdHNlIG1vZHV1bGkgbmltZcOkbWlzc3V1bm5pdGVsbWFuIGvDpHl0dMO2w7Zub3R0b2EgdmFydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnVmFsaXRzZSBtb2R1dWxpIG51bWVyb2rDpHJqZXN0ZWxtw6RuIGvDpHl0dMO2w7Zub3R0b2EgdmFydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdWYWxpdHNlIG1vZHV1bGksIGpva2Egb3R0YWEga8OkeXR0w7bDtm4gdmVyc2lvam9ub2rDpHJqZXN0ZWxtw6RuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1ZhbGl0c2UgYXR0cmlidXV0aXQsIGpvdGthIGvDpHlubmlzdMOkdsOkdCB1dWRlbiB2ZXJzaW9uIGx1b21pc2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdWYWxpdHNlIGx1b2thdCwgam90a2Egb3NvaXRldGFhbiB0w6RsbGUgbcOkw6RyaXR5c2tvaGRlbHVva2FsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ1NhcmFra2VlbiBDb25maWdJdGVtLWtvaHRlZW4gc3VvZGF0dGltZXQgQ29uZmlnSXRlbSBPdmVydmlldyAta29odGVlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnU2FyYWtrZWV0LCBqb2l0YSB2b2lkYWFuIHN1b2RhdHRhYSBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiBtw6TDpHJpdHlza29odGVpZGVuIHlsZWlza2F0c2F1a3Nlc3NhLiBIdW9tYXV0dXM6IFZhaW4gQ29uZmlnIEl0ZW0gLWF0dHJpYnV1dGl0IGphIGR5bmFhbWlzZXQga2VudMOkdCAoRHluYW1pY0ZpZWxkX05hbWVYKSBvdmF0IHNhbGxpdHR1amEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ03DpMOkcml0eXNrb2h0ZWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdNw6TDpHJpdHlza29odGVlbiBsaXPDpMOkbWluZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnTcOkw6RyaXR5c2tvaHRlZW4gbXVva2thdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyaXTDpCBrb2h0ZWVuIHRhcGFodHVtYW1vZHV1bGksIGpva2EgbWFoZG9sbGlzdGFhIGtpcmphYW1pc2VuIGhpc3RvcmlhYW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ0tvbmZpZy1rb2h0ZWVuIHRhcGFodHVtYW1vZHV1bGksIGpva2EgcMOkaXZpdHTDpMOkIGtvbmZpZy1rb2h0ZWV0IG5paWRlbiBueWt5aXNlZW4gbcOkw6RyaXRlbG3DpMOkbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdNw6TDpHJpdMOkIGtvaHRlZW4gaGlzdG9yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ03DpMOkcml0eXNrb2h0ZWVuIHR1bG9zdHVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ03DpMOkcml0w6Qga29odGVlbiB6b29tYXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0tcHV1bsOka3ltw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ1NldXJhYXZpZW4gbHVva2tpZW4gQ29uZmlnSXRlbXMtZWxlbWVudHRlasOkIGVpIHRhbGxlbm5ldGEgRWxhc3RpY3NlYXJjaC1wYWx2ZWxpbWVsbGUuIEpvdHRhIHTDpHTDpCB2b2lkYWFuIHNvdmVsdGFhIG9sZW1hc3NhIG9sZXZpaW4gQ0k6aGluLCBDSS1zaWlydG8gb24gc3Vvcml0ZXR0YXZhIGtvbnNvbGluIGthdXR0YSB0w6Rtw6RuIHZhaWh0b2VoZG9uIG11dXR0YW1pc2VuIGrDpGxrZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcy1rb2h0ZWl0YSwgam9pbGxhIG9uIHNldXJhYXZhdCBrw6R5dHTDtsO2bm90dG90aWxhdCwgZWkgdGFsbGVubmV0YSBFbGFzdGljc2VhcmNoLXBhbHZlbGltZWxsZS4gSm90dGEgdMOkdMOkIHZvaWRhYW4gc292ZWx0YWEgb2xlbWFzc2Egb2xldmlpbiBDSTpoaW4sIENJLXNpaXJ0byBvbiBzdW9yaXRldHRhdmEga29uc29saW4ga2F1dHRhIHTDpG3DpG4gdmFpaHRvZWhkb24gbXV1dHRhbWlzZW4gasOkbGtlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0tvbmZpZ3Vyb2ludGkgS29odGVlbiByYWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1cm9pbnRpIEtvaHRlZW4gcmFqYSBzaXZ1YSBrb2h0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0tvbmZpZ3VyYWF0aW9uaGFsbGlubmFuIHRpZXRva2FudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdNw6TDpHJpdHlza29odGVlbiBpcnRvdGF2YXJhbW9kdXVsaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyaXR5c2tvaHRlZW4gaGFrdSBhZ2VudHRpbGlpdHR5bcOkbiB0YXVzdGFyZWl0aXR0aW1lZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0x1byBqYSBoYWxsaXRzZSBtw6TDpHJpdHRlbHlqw6QgbcOkw6RyaXR5c2tvaHRlaWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdMdW8gbGlwcHVqYSBDb25maWdJdGVtcy1rb2h0ZWlsbGUgdGlldHR5aW7DpCBhamFua29odGluYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnQXNpYWtrYWF0IHZvaXZhdCBuw6RoZMOkIGhpc3RvcmlhbGxpc2V0IENJLXZlcnNpb3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0FzaWFra2FpbGxhIG9uIG1haGRvbGxpc3V1cyB2YWlodGFhIG1hbnVhYWxpc2VzdGkgaGlzdG9yaWFsbGlzdGVuIENJLXZlcnNpb2lkZW4gdsOkbGlsbMOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ09sZXR1c2Fydm9pc2V0IHRpZWRvdCwgam9pdGEga8OkeXRldMOkw6RuIG3DpMOkcml0dGVlbiBtw6TDpHJpdHRlbHlrb2h0ZWVuIGhha3Vuw6R5dMO2c3PDpC4gRXNpbWVya2tpOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ09sZXR1c2Fydm9pc2V0IHRpZWRvdCwgam9pdGEga8OkeXRldMOkw6RuIG3DpMOkcml0dGVlbiBtw6TDpHJpdHRlbHlrb2h0ZWVuIGhha3Vuw6R5dMO2c3PDpC4gRXNpbWVya2tpOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnTcOkw6RyaXTDpCB0b2ltaW5ub3QsIGpvaXNzYSBhc2V0dXNwYWluaWtlIG9uIGvDpHl0ZXR0w6R2aXNzw6QgbGlua2l0ZXR0eWplbiBvYmpla3RpZW4gd2lkZ2V0aXNzw6QgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gSHVvbWFhLCBldHTDpCBuw6RpbGzDpCB0b2ltaW5ub2lsbGEgb24gb2x0YXZhIHJla2lzdGVyw7ZpZHl0IHNldXJhYXZhdCBKUy0gamEgQ1NTLXRpZWRvc3RvdDogQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBqYSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdNw6TDpHJpdMOkIFRlbXBsYXRlOjpUb29sa2l0LXNrZWVtYSB2ZXJzaW9qb25vamEgdmFydGVuLiBLw6R5dGV0w6TDpG4gdmFpbiwgam9zIFZlcnNpb24gU3RyaW5nIE1vZHVsZSAtbW9kdXVsaW4gYXJ2b2tzaSBvbiBhc2V0ZXR0dSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnTcOkw6RyaXTDpCBqb3Vra28gZWh0b2phLCBqb2lkZW4gbXVrYWlzZXN0aSBhc2lha2FzIHNhYSBuw6RoZMOkIGtvbmZpZ3Vyb2ludGlrb2h0ZWVuLiBFaGRvdCB2b2lkYWFuIHZhbGlubmFpc2VzdGkgcmFqb2l0dGFhIHRpZXR0eWloaW4gYXNpYWthc3J5aG1paW4uIE5pbWkgb24gYWlub2EgcGFrb2xsaW5lbiBtw6TDpHJpdGUuIEpvcyBtdWl0YSB2YWlodG9laHRvamEgZWkgYW5uZXRhLCBrYWlra2kga29uZmlndXJvaW50aWtvaHRlZXQgbsOka3l2w6R0IGt5c2Vpc2Vzc8OkIGx1b2thc3NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCB2YWFkaXR1dCBvaWtldWRldCBJVFNNLWtva29vbnBhbm9rb2h0ZWlkZW4gcG9pc3RhbWlzZWVuIHlsZWlzZW4ga8OkeXR0w7ZsaWl0dHltw6RuIGF2dWxsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgdmFhZGl0dXQgb2lrZXVkZXQgSVRTTS1rb2tvb25wYW5va29odGVpZGVuIGhha2VtaXNlZW4geWxlaXNlbiBrw6R5dHTDtmxpaXR0eW3DpG4gYXZ1bGxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCB2YWFkaXR1dCBvaWtldWRldCBJVFNNLWtva29vbnBhbm9rb2h0ZWlkZW4gaGFrdXVuIHlsZWlzZW4ga8OkeXR0w7ZsaWl0dHltw6RuIGF2dWxsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgdmFhZGl0dXQgb2lrZXVkZXQgSVRTTS1rb2tvb25wYW5va29odGVpZGVuIG3DpMOkcml0dMOkbWlzZWVuIHlsZWlzZW4ga8OkeXR0w7ZsaWl0dHltw6RuIGF2dWxsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCB5bGVpc2thdHNhdXNtb2R1dWxpbiwgam9rYSBuw6R5dHTDpMOkIGtva29vbnBhbm9rb2hkZWx1ZXR0ZWxvbiBwaWVuZW4gbsOka3ltw6RuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkLCBvbmtvIGxpbmtpbiB0eXlwaW4gbWVya2lubsOkdCBuw6R5dGV0dMOkdsOkIHNvbG11amVuIHlodGV5a3Npc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6Qgc8Okw6RubsO2bGxpc2V0IGxhdXNla2tlZXQgZXJpa3NlZW4ga3VsbGVraW4gQ29uZmlnSXRlbS1sdW9rYWxsZSBDb25maWdJdGVtLW5pbWVuIHRhcmtpc3RhbWlzZWtzaSBqYSB2YXN0YWF2aWVuIHZpcmhlaWxtb2l0dXN0ZW4gbsOkeXR0w6RtaXNla3NpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6Qga8OkeXRldHTDpHZpc3PDpCBvbGV2YXQgQ0ktc2FyYWtrZWV0IGtvbmZpZ3Vyb2ludGlrb2h0ZWVuIHlsZWlza2F0c2F1a3Nlc3NhIENJLWx1b2thbiBtdWthYW4uIEpva2Fpc2VuIG1lcmtpbm7DpG4gb24ga29vc3R1dHRhdmEgbHVva2FuIG5pbWVzdMOkIGphIGt5c2Vpc2VuIGx1b2thbiBrw6R5dGV0dMOkdmlzc8OkIG9sZXZpZW4ga2VudHRpZW4gam91a29zdGEuIER5bmFhbWlzdGVuIGtlbnR0aWVuIG1lcmtpbnTDtmplbiBvbiBub3VkYXRldHRhdmEga2FhdmFhIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIG9sZXR1c2Fydm9pc2VuIGtvbmZpZ3Vyb2ludGlrb2hkZXR0YSBrb3NrZXZhbiBhdHRyaWJ1dXRpbiBhZ2VudHRpbGlpdHR5bcOkbiBrb25maWd1cm9pbnRpa29oZGVoYWt1dHVsb2tzZW4gbGFqaXR0ZWx1YSB2YXJ0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIG9sZXR1c2Fydm9pc2VuIGtvbmZpZ3VyYWF0aW9rb2hkZWF0dHJpYnV1dGluIGFzaWFra2FhbiBrw6R5dHTDtmxpaXR0eW3DpG4ga29uZmlndXJhYXRpb2tvaHRlaWRlbiBoYWt1dHVsb2tzZW4gbGFqaXR0ZWx1YSB2YXJ0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBvbGV0dXNhcnZvaXNlbiBrb25maWd1cmFhdGlva29odGVlbiBhdHRyaWJ1dXRpbiBrb25maWd1cmFhdGlva29odGVlbiBsYWppdHRlbHVhIHZhcnRlbiB0w6Rtw6RuIHRvaW1pbm5vbiBrb25maWd1cmFhdGlva29odGVlbiBoYWt1dHVsb2tzZXNzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6Qga29uZmlndXJhYXRpb2tvaHRlaWRlbiBvbGV0dXNqw6RyamVzdHlrc2VuIGFnZW50dGlsaWl0dHltw6RuIGtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gaGFrdXR1bG9rc2lzc2EuIFlsw7ZzOiB2YW5oaW4gcMOkw6RsbGltbcOkaXNlbsOkLiBBbGFzOiB1dXNpbiBvbiBww6TDpGxsaW1tw6Rpc2Vuw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIGtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gb2xldHVzasOkcmplc3R5a3NlbiBhc2lha2thYW4ga8OkeXR0w7ZsaWl0dHltw6RuIGtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gaGFrdXR1bG9rc2lzc2EuIFlsw7ZzOiB2YW5oaW4gcMOkw6RsbGltbcOkaXNlbsOkLiBBbGFzOiB1dXNpbiBvbiB5bGjDpMOkbGzDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBrb25maWd1cmFhdGlva29odGVpZGVuIG9sZXR1c2rDpHJqZXN0eWtzZW4gdMOkbcOkbiB0b2ltaW5ub24ga29uZmlndXJhYXRpb2tvaHRlaWRlbiBoYWt1dHVsb2tzZXNzYS4gWWzDtnM6IFZhbmhpbiBvbiB5bGjDpMOkbGzDpC4gQWxhczogdXVzaW4gb24geWxow6TDpGxsw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIENJOmlkZW4gb2xldHVzc2FyYWtrZWV0LCBqb3RrYSBuw6RreXbDpHQga29uZmlndXJvaW50aWtvaHRlZW4geWxlaXNrYXRzYXVrc2Vzc2EgQ0ktbHVva2FzdGEgcmlpcHB1ZW4uIEpva2Fpc2VuIG1lcmtpbm7DpG4gb24ga29vc3R1dHRhdmEgbHVva2FuIG5pbWVzdMOkIGphIGt5c2Vpc2VuIGx1b2thbiBrw6R5dGV0dMOkdmlzc8OkIG9sZXZpZW4ga2VudHRpZW4gam91a29zdGEuIER5bmFhbWlzdGVuIGtlbnR0aWVuIG1lcmtpbnTDtmplbiBvbiBub3VkYXRldHRhdmEga2FhdmFhIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ03DpMOkcml0dMOkw6QgbsOkeXRldHTDpHZpZW4gc3VodGVpZGVuIG9sZXR1c3N5dnl5ZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIG9sZXR1c2Fydm9pc2VzdGkgbsOkeXRldHTDpHbDpG4ga29uZmlndXJhYXRpb2tvaHRlZW4gaGFrdWF0dHJpYnV1dGluIGtvbmZpZ3VyYWF0aW9rb2h0ZWVuIGhha3Vuw6R5dMO2bGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBvbGV0dXNhcnZvaXNlc3RpIG7DpHl0ZXR0w6R2w6RuIGtvbmZpZ3VyYWF0aW9rb2h0ZWVuIGhha3VhdHRyaWJ1dXRpbiBrb25maWd1cmFhdGlva29odGVlbiBoYWt1bsOkeXTDtmxsZS4gRXNpbWVya2tpOiAiQXZhaW4iIG9uIG9sdGF2YSBkeW5hYW1pc2VuIGtlbnTDpG4gbmltaSB0w6Rzc8OkIHRhcGF1a3Nlc3NhIFwnWFwnLCAiU2lzw6RsdMO2IiBvbiBvbHRhdmEgZHluYWFtaXNlbiBrZW50w6RuIGFydm8gZHluYWFtaXNlbiBrZW50w6RuIHR5eXBpc3TDpCByaWlwcHVlbiwgVGVrc3RpOiBcJ3Rla3N0aVwnLCBQdWRvdHVzdmFsaWtrbzogXCcxXCcsIFDDpGl2w6Rtw6TDpHLDpC9BaWthOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgamEgdGFpIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgbHVva2FuIFwnSVRTTUNvbmZpZ0l0ZW1cJyBvbGV0dXNhcnZvaXNlbiBhbGlvYmpla3Rpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6Qga8OkeXRldHTDpHZpc3PDpCBvbGV2YXQgQ0ktc2FyYWtrZWV0IGtvbmZpZ3Vyb2ludGlrb2h0ZWVuIHlsZWlza2F0c2F1a3Nlc3NhIENJLWx1b2thbiBtdWthYW4uIEpva2Fpc2VuIG1lcmtpbm7DpG4gb24ga29vc3R1dHRhdmEgbHVva2FuIG5pbWVzdMOkIGphIGt5c2Vpc2VuIGx1b2thbiBrw6R5dGV0dMOkdmlzc8OkIG9sZXZpZW4ga2VudHRpZW4gam91a29zdGEuIER5bmFhbWlzdGVuIGtlbnR0aWVuIG1lcmtpbnTDtmplbiBvbiBub3VkYXRldHRhdmEga2FhdmFhIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgdMOkbcOkbiBuw6R5dMO2biB0ZWtzdGllZGl0b3Jpa29tcG9uZW50aW4ga29ya2V1ZGVuLiBTecO2dMOkIG51bWVybyAocGlrc2VsacOkKSB0YWkgcHJvc2VudHRpbHVrdSAoc3VodGVlbGxpbmVuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBoYWxsaW50YWvDpHl0dMO2bGlpdHR5bcOkbiBDSS1tw6TDpHJpdHRlbHllZGl0b3JpbiByaXZpZW4gbcOkw6Ryw6RuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIHRhcGFodHVtYXRpbG9qZW4gasOkcmplc3R5a3NlbiBrb3JrZWFzdGEgKGVzaW0uIHN5ZMOkbmtvaHRhdXMpIG1hdGFsYWFuIChlc2ltLiB0b2ltaW5uYWxsaW5lbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBhc2lhYW5rdXVsdXZhdCBrw6R5dHTDtsO2bm90dG90aWxhdCwgam9pc3NhIGxpbmtpdGV0eXQgbGlwdXQgdm9pdmF0IHZhaWt1dHRhYSBDSTpuIHRpbGFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIEFnZW50SVRTTUNvbmZpZ0l0ZW0tbsOkeXTDtm4gaGFrdXJhamFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC1uw6R5dMO2biBoYWt1cmFqYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBDdXN0b21lcklUU01Db25maWdJdGVtLW7DpHl0w7ZuIGhha3VyYWphbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gtbsOkeXTDtm4gaGFrdXJhamFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6Qga2Fpa2tpZW4gQ0ktbHVva2tpZW4geWh0ZXlzdGlldG90YXVsdWtvbiBtb25pdGFob2lzZXNzYSBuw6RreW3DpHNzw6QgbsOka3l2w6R0IENJLXNhcmFra2VldC4gSm9zIG1lcmtpbnTDpMOkIGVpIG9sZSwgbsOkeXRldMOkw6RuIG9sZXR1c3NhcmFra2VldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgbGlua2tpdGF1bHVrb24gbW9uaXRhaG9pc2Vzc2EgbsOka3ltw6Rzc8OkIG7DpGt5dsOkdCBDSS1zYXJha2tlZXQgQ0ktbHVva2FzdGEgcmlpcHB1ZW4uIEpva2Fpc2VuIG1lcmtpbm7DpG4gZXR1bGlpdHRlZW7DpCBvbiBvbHRhdmEgbHVva2FuIG5pbWkgamEga2Frc29pc3Bpc3RlIChlc2ltLiBDb21wdXRlcjo6KS4gT24gb2xlbWFzc2EgbXV1dGFtaWEgQ0ktYXR0cmlidXV0dGVqYSwgam90a2Egb3ZhdCB5aHRlaXNpw6Qga2Fpa2lsbGUgQ0k6aWxsZSAoZXNpbWVya2tpIGx1b2thbiBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gWWtzaXR0w6Rpc3RlbiBDSS1hdHRyaWJ1dXR0aWVuIG7DpHl0dMOkbWlzZWtzaSBDSS1tw6TDpHJpdHRlbHlzc8OkIG3DpMOkcml0ZWxseWxsw6QgdGF2YWxsYSBvbiBrw6R5dGV0dMOkdsOkIHNldXJhYXZhYSBrYWF2YWEgKGVzaW1lcmtraSBsdW9rYW4gQ29tcHV0ZXIgb3NhbHRhKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIEpvcyBDSS1sdW9rYWxsZSBlaSBvbGUgbWVya2ludMOkw6QsIG7DpHl0ZXTDpMOkbiBvbGV0dXNzYXJha2tlZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCwgbWl0a8OkIGtvaHRlZXQgb3ZhdCBrw6R5dGV0dMOkdmlzc8OkICJBY3Rpb24iIC10b2ltaW50b2EgdmFydGVuIElUU00gQ29uZmlnIEl0ZW0gQUNMIC1yYWtlbnRlZW4ga29sbWFubmVsbGEgdGFzb2xsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkLCBtaXRrw6Qga29odGVldCBvdmF0IGvDpHl0ZXR0w6R2aXNzw6QgSVRTTSBDb25maWcgSXRlbSBBQ0wgLXJha2VudGVlbiBlbnNpbW3DpGlzZWxsw6QgdGFzb2xsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCwgbWl0a8OkIGtvaHRlZXQgb3ZhdCBrw6R5dGV0dMOkdmlzc8OkIElUU00gQ29uZmlnIEl0ZW0gQUNMIC1yYWtlbnRlZW4gdG9pc2VsbGEgdGFzb2xsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCwgbWlua8OkIHR5eXBwaW5lbiBsaW5ra2kgKG5pbWV0dHkgdGlrZXRpbiBuw6Rrw7ZrdWxtYXN0YSkgdm9pIHZhaWt1dHRhYSBsaW5raXRldHluIENJOm4gdGlsYWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QsIG1pbmvDpCB0eXlwcGluZW4gbGlwcHUgdm9pIHZhaWt1dHRhYSBsaW5raXRldHluIENJOm4gdGlsYWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ03DpMOkcml0ZWxtw6RuIHDDpGl2aXR5cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnUG9pc3RhIGtvbmZpZ3VyYWF0aW9lbGVtZW50dGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdLw6R5dHTDtsO2bm90b24gdGlsYSBWw6RyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnS2Frc29pc2thcHBhbGVldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ0R5bmFhbWlzdGVuIGtlbnR0aWVuIHRhcGFodHVtYW1vZHV1bGksIGpva2EgbWVya2l0c2VlIGtvbmZpZ3VyYWF0aW9rb2h0ZWVuIG3DpMOkcml0ZWxtw6R0IGVww6RzeW5rcm9uaXNpa3NpLCBqb3MgZHluYWFtaXNpYSBrZW50dGnDpCBzaXPDpGx0w6R2w6R0IGtlbnTDpHQgbXV1dHR1dmF0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYWFtaXNldCBrZW50w6R0LCBqb3RrYSBuw6RreXbDpHQgYXNpYW1pZWhlbiBrw6R5dHTDtmxpaXR0eW3DpG4gSVRTTS1saXPDpGtlbnR0w6Ruw6R5dMO2c3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYWFtaXNldCBrZW50w6R0LCBqb3RrYSBuw6RreXbDpHQgYXNpYWtrYWFuIGvDpHl0dMO2bGlpdHR5bcOkbiBrb25maWd1cm9pbnRpa29odGVlbiB5bGVpc2thdHNhdXNuw6R5dMO2c3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFhbWlzZXQga2VudMOkdCwgam90a2EgbsOka3l2w6R0IGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIG3DpMOkcml0eXNrb2h0ZWVuIGhha3Vuw6R5dMO2c3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnT3R0YWEga8OkeXR0w7bDtm4ga29uZmlndXJhYXRpb2tvaHRlZW4gbWFzc2F0b2ltaW50by1vbWluYWlzdXVkZW4sIGpvbmthIGF2dWxsYSBhZ2VudGluIGV0dXNpdnUgdm9pIGvDpHNpdGVsbMOkIHVzZWFtcGFhIGt1aW4geWh0w6Qga29uZmlndXJhYXRpb2tvaGRldHRhIGtlcnJhbGxhYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdPdHRhYSBrw6R5dHTDtsO2biBtw6TDpHJpdHlza29odGVpZGVuIG1hc3NhdG9pbWludGF0b2ltaW5ub24gdmFpbiBsdWV0ZWxsdWlsbGUgcnlobWlsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ090dGFhIGvDpHl0dMO2w7ZuIHRhaSBwb2lzdGFhIGvDpHl0w7ZzdMOkIHRvaW1pbm5vbiwgam9sbGEgdGFya2lzdGV0YWFuIElUU00gb25maWd1cmF0aW9uIC1rb2h0ZWlkZW4geWtzaWzDtmxsaXNldCBuaW1ldC4gRW5uZW4gdMOkbcOkbiB2YWlodG9laGRvbiBvdHRhbWlzdGEga8OkeXR0w7bDtm4gc2ludW4gdHVsaXNpIHRhcmtpc3RhYSBqw6RyamVzdGVsbcOkc2kgam8gb2xlbWFzc2Egb2xldmllbiBrb25maWd1cm9pbnRpZWxlbWVudHRpZW4ga2Frc29pc2thcHBhbGVpZGVuIG5pbWV0LiBWb2l0IHRlaGTDpCB0w6Rtw6RuIGtvbnNvbGluIGtvbWVubm9sbGEgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdUYXBhaHR1bWFtb2R1dWxpLCBqb2thIGFzZXR0YWEga29uZmlnaXRlbS10aWxhbiB0aWNrZXQtY29uZmlnaXRlbS1saW5raWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnS29rb3Rla3N0aWhhdXNzYSBrw6R5dGV0dMOkdsOkdCBrb25maWd1cmFhdGlva29odGVlbiBpbmRla3NpbiBrZW50w6R0LiBLZW50w6R0IHRhbGxlbm5ldGFhbiBtecO2cywgbXV0dGEgbmUgZWl2w6R0IG9sZSBwYWtvbGxpc2lhIHlsZWlzZW4gdG9pbWlubmFsbGlzdXVkZW4ga2FubmFsdGEuIExpaXRldGllZG9zdG9qZW4gc2lzw6RsbHl0dMOkbWluZW4gdm9pZGFhbiBlc3TDpMOkIGFzZXR0YW1hbGxhIG1lcmtpbm7DpG4gYXJ2b2tzaSAwIHRhaSBwb2lzdGFtYWxsYSBzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ03DpMOkcml0eXNrb2hkZWluZGVrc2lpbiB0YWxsZW5uZXR1dCBrZW50w6R0LCBqb2l0YSBrw6R5dGV0w6TDpG4gbXV1aHVuIGt1aW4ga29rb3Rla3N0aWhha3V1bi4gVMOkeWRlbGxpc2VuIHRvaW1pbm5hbGxpc3V1ZGVuIGthbm5hbHRhIGthaWtraSBrZW50w6R0IG92YXQgcGFrb2xsaXNpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdKb2thaXNlbGxlIHZlcmtrb3BhbHZlbHVsbGUgKGF2YWluKSB2b2lkYWFuIG3DpMOkcml0ZWxsw6Qgam91a2tvIGx1b2traWEgKGFydm8pLCBqb2loaW4gdHVvbnRpIG9uIHJham9pdGV0dHUuIEthaWtpbGxlIHZhbGl0dWlsbGUgbHVva2lsbGUgdGFpIGthaWtpbGxlIG9sZW1hc3NhIG9sZXZpbGxlIGx1b2tpbGxlIG9uIHZhbGl0dGF2YSB0dW5uaXN0YXZhdCBhdHRyaWJ1dXRpdCBrdXRzdWphbiBrb25maWd1cmFhdGlvc3NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlLW1vZHV1bGluIHJla2lzdGVyw7ZpbnRpIENvbmZpZ0l0ZW1GZXRjaC1rdXRzdWtlcnJvc3RhIHZhcnRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlLW1vZHV1bGluIHJla2lzdGVyw7ZpbnRpIENvbmZpZ0l0ZW1GZXRjaC1rdXRzdWtlcnJvc3RhIHZhcnRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZS1tb2R1dWxpbiByZWtpc3RlcsO2aW50aSBDb25maWdJdGVtRmV0Y2gta3V0c3VrZXJyb3N0YSB2YXJ0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU00tbcOkw6RyaXR5c2tvaHRlZW4geWxlaXNrYXRzYXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2lzw6RsdMOkw6Qga8OkeXR0w7bDtm5vdHRvdGlsYXQgYXNpYWtrYWFuIGvDpHl0dMO2bGlpdHR5bcOkbiBrb25maWd1cm9pbnRpa29oZGVoYXVzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaXPDpGx0w6TDpCB2YWFyYXRpbGFudGVpZGVuIHRpbGF0IGFzaWFra2FhbiBrw6R5dHTDtmxpaXR0eW3DpG4ga29uZmlndXJvaW50aWtvaGRlaGF1c3NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnVMOkbcOkbiB0b2ltaW5ub24gdHVsb2tzZW5hIG7DpHl0ZXR0w6R2aWVuIGtvbmZpZ3Vyb2ludGllbGVtZW50dGllbiBlbmltbcOkaXNtw6TDpHLDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1dWxpIGx1b2thc3RhIHZhc3RhYXZhbiByeWhtw6RuIHRhcmtpc3RhbWlzZWtzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1dWxpLCBqb2xsYSB2b2l0IHRhcmtpc3RhYSBrb25maWd1cmFhdGlvZWxlbWVudGlzdMOkIHZhc3RhYXZhbiByeWhtw6RuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHV1bGkgSVRTTS1rb25maWd1cmFhdGlvdGlsYXN0b2plbiB0dW90dGFtaXNlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmltaSBNb2R1dWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW1lcm9tb2R1dWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6Rzc8OkIGt1bGxha2luIGhha3V0dWxvc3NpdnVsbGEgbsOkeXRldHTDpHZpZW4gbcOkw6RyaXR5c2tvaHRlaWRlbiBtw6TDpHLDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXNpYWtrYWFuIGvDpHl0dMO2bGlpdHR5bcOkc3PDpCBrdWxsYWtpbiBoYWt1dHVsb3NzaXZ1bGxhIG7DpHl0ZXR0w6R2aWVuIG3DpMOkcml0eXNrb2h0ZWlkZW4gbcOkw6Ryw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnRXRzaXR0w6R2w6R0IGtvaHRlZXQsIGt1aW5rYSBtb250YSBtZXJraW50w6TDpCBqYSBtaXRrw6Qgb21pbmFpc3V1ZGV0IG7DpHl0ZXTDpMOkbi4gQ29uZmlnSXRlbS1hdHRyaWJ1dXRpdCBvbiB0YWxsZW5uZXR0YXZhIG5pbWVub21haXNlc3RpIEVsYXN0aWNzZWFyY2hpbiBrYXV0dGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1lsZWlza2F0c2F1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FnZW50dGlrw6R5dHTDtmxpaXR0eW3DpG4gcHJlZmVyZW5jZXMtbsOka3ltw6RuIGtvbmZpZ3Vyb2ludGlrb2hkZWx1b2traWVuIGx1b2traWVuIHBhcmFtZXRyaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpdCBwaWVudGVuIGtvbmZpZ3Vyb2ludGlrb2h0ZWlkZW4geWxlaXNrYXRzYXVrc2VuIHNhcmFrZXN1b2RhdHRpbWlhIHZhcnRlbi4gSHVvbWFhOiBcJ0FrdGlpdmluZW5cJy1hc2V0dWtzZW4gYXNldHRhbWluZW4gYXJ2b29uIDAgZXN0w6TDpCB2YWluIGFnZW50dGVqYSBtdW9ra2FhbWFzdGEgdMOkbcOkbiByeWhtw6RuIGFzZXR1a3NpYSBoZW5raWzDtmtvaHRhaXNpc3NhIGFzZXR1a3Npc3NhYW4sIG11dHRhIHNhbGxpaSBzaWx0aSBqw6RyamVzdGVsbcOkbnZhbHZvamllbiBtdW9rYXRhIHRvaXNlbiBrw6R5dHTDpGrDpG4gYXNldHVrc2lhLiBLw6R5dMOkIFwnUHJlZmVyZW5jZUdyb3VwXCcta29odGFhLCBrdW4gaGFsdWF0IGhhbGxpdGEsIG1pbGzDpCBhbHVlZWxsYSBuw6Rtw6QgYXNldHVrc2V0IG7DpHl0ZXTDpMOkbiBrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLw6R5dHTDtsO2bm90dG90aWxvamVuIHbDpHJpbiBwYXJhbWV0cml0IGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIHByZWZlcmVuY2VzLW7DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLw6R5dHTDtsO2bm90dG90aWxvamVuIHBhcmFtZXRyaXQgYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gcHJlZmVyZW5jZXMtbsOka3ltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdZbGVpc2VuIGx1ZXR0ZWxvbiBhdHRyaWJ1dXR0aWVuIGVzaW1lcmtraW9pa2V1c3J5aG1pZW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiBwcmVmZXJlbmNlcy1uw6RreW3DpHNzw6Qgb2xldmllbiBrb25maWd1cm9pbnRpa29oZGVsdW9ra2llbiBuaW1pbW9kdXVsaW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FnZW50dGlrw6R5dHTDtmxpaXR0eW3DpG4gcHJlZmVyZW5jZXMtbsOka3ltw6Rzc8OkIG9sZXZpZW4ga29uZmlndXJvaW50aWtvaGRlbHVva2tpZW4gbnVtZXJvbW9kdXVsaW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnU2l2dWplbiBwYXJhbWV0cml0IChqb2lzc2EgYXNldHVza29odGVldCBuw6R5dGV0w6TDpG4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiBwcmVmZXJlbmNlcy1uw6RreW3DpHNzw6Qgb2xldmllbiBrb25maWd1cm9pbnRpbHVva2tpZW4gdmVyc2lvbiBtZXJra2lqb25vbW9kdXVsaW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiBwcmVmZXJlbmNlcy1uw6RreW3DpHNzw6Qgb2xldmllbiBrb25maWd1cm9pbnRpa29oZGVsdW9ra2llbiB2ZXJzaW9uIG1lcmtraWpvbm9tYWxsaS10ecO2a2FsdXBha2tpbW9kdXVsaW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkbiBwcmVmZXJlbmNlcy1uw6RreW3DpHNzw6Qgb2xldmllbiBrb25maWd1cm9pbnRpbHVva2tpZW4gdmVyc2lvbGF1a2Fpc2ltZW4gcGFyYW1ldHJpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdTdW9yaXR0YWEgbcOkw6RyaXRldHluIHRvaW1pbm5vbiBrdWxsZWtpbiB0YXBhaHR1bWFsbGUgKGt1dHN1amFuYSkga3Vua2luIG3DpMOkcml0ZXR5biB2ZXJra29wYWx2ZWx1biBvc2FsdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdMdXBhcnlobcOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IGvDpHl0dMO2b2lrZXVkZXQgSVRTTS1rb2tvb25wYW5va29odGVlbiBraWlubml0eXN0b2ltaW5ub24ga8OkeXR0w6RtaXNlZW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYXJ2aXR0YXZhdCBvaWtldWRldCBJVFNNLWtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gbsOkeXTDtm4ga8OkeXR0w6RtaXNlZW4gYWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYXJ2aXR0YXZhdCBrw6R5dHTDtm9pa2V1ZGV0IElUU00ta29uZmlndXJhYXRpb2tvaHRlaWRlbiBoYWt1bsOkeXTDtm4ga8OkeXR0w6RtaXNlZW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBJVFNNLWtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gaGFrdW7DpHl0w7ZuIGvDpHl0dMOkbWlzZWVuIGFzaWFra2FhbiBrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBJVFNNLWtva29vbnBhbm9rb2h0ZWlkZW4gcHV1bsOka3ltw6RuIG7DpHl0dMO2w7ZuIGFnZW50dGlrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IGvDpHl0dMO2b2lrZXVkZXQgSVRTTS1rb25maWd1cmFhdGlva29odGVlbiB6b29tYXVzbsOkeXTDtm4ga8OkeXR0w6RtaXNlZW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBhZ2VudHRpa8OkeXR0w7ZsaWl0dHltw6RuIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSAtbsOkeXTDtm4ga8OkeXR0w6RtaXNlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IGvDpHl0dMO2b2lrZXVkZXQgSVRTTTpuIG3DpMOkcml0eXNrb2h0ZWlkZW4gaXJ0b3RhdmFyYW7DpHl0w7ZuIGvDpHl0dMOkbWlzZWVuIGFnZW50dGlrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IGvDpHl0dMO2b2lrZXVkZXQgSVRTTS1rb2tvb25wYW5va29odGVlbiBtdW9ra2F1c27DpHl0w7ZuIGvDpHl0dMOkbWlzZWVuIGFnZW50dGlrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IGvDpHl0dMO2b2lrZXVkZXQgSVRTTS1rb25maWd1cmFhdGlva29odGVpZGVuIGhpc3RvcmlhLW7DpHl0w7ZuIGvDpHl0dMOkbWlzZWVuIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBJVFNNLWtva29vbnBhbm9rb2h0ZWlkZW4gdHVsb3N0YW1pbmVuIC1uw6R5dMO2biBrw6R5dHTDpG1pc2VlbiBhZ2VudHRpa8OkeXR0w7ZsaWl0dHltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnTcOkw6RyaXR5c2tvaHRlaWRlbiBwb2lzdGFtaXNlZW4gdGFydml0dGF2YXQgb2lrZXVkZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnSGFrdSBrb25maWd1cm9pbnRpZWxlbWVudGl0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQXNldGEgQ0k6biB0YXBhaHR1bWF0aWxhIGF1dG9tYWF0dGlzZXN0aSwga3VuIGxpcHB1IGxpbmtpdGV0w6TDpG4gQ0k6aGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FzZXR0YWEga8OkeXR0w7bDtm5vdG9uIHRpbGFuIGFnZW50dGlsaWl0dHltw6RuIG3DpMOkcml0eXNrb2h0ZWVuIGJ1bGstbsOkeXTDtnNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FzZXR0YWEgdGFwYWh0dW1hdGlsYW4gYWdlbnR0aWxpaXR0eW3DpG4gbcOkw6RyaXR5c2tvaHRlZW4gYnVsay1uw6R5dMO2c3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIHZhbGlrb3NzYSBsaW5raW4sIGpvbmthIGF2dWxsYSBrb25maWd1cm9pbnRpa29oZGUgdm9pZGFhbiB5aGRpc3TDpMOkIHRvaXNlZW4ga29odGVlc2VlbiBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiBrb25maWd1cm9pbnRpa29odGVlbiB6b29tYXVzbsOka3ltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgdmFsaWtvc3NhIGxpbmtpbiwgam9ua2EgYXZ1bGxhIHDDpMOkc2VlIG3DpMOkcml0eXNrb2h0ZWVuIGhpc3RvcmlhYW4gYWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkbiBtw6TDpHJpdHlza29odGVpZGVuIHlsZWlza2F0c2F1a3Nlc3NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIHZhbGlrb3NzYSBsaW5raW4sIGpvbmthIGF2dWxsYSBww6TDpHNlZSBtw6TDpHJpdHlza29odGVlbiBoaXN0b3JpYWFuIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIHpvb21hdXNuw6RreW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkeXR0w6TDpCB2YWxpa29zc2EgbGlua2luLCBqb25rYSBhdnVsbGEgdm9pdCBwb2lzdGFhIG3DpMOkcml0eXNrb2h0ZWVuIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIHpvb21hdXNuw6RreW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIHZhbGlrb3NzYSBsaW5raW4sIGpva2EgbsOkeXR0w6TDpCBtw6TDpHJpdHlza29odGVpZGVuIGxpbmtpdCBwdXVuw6RreW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkeXR0w6TDpCB2YWxpa29zc2EgbGlua2luLCBqb2xsYSB2b2l0IGtvcGlvaWRhIG3DpMOkcml0eXNrb2h0ZWVuIGFnZW50dGlsaWl0dHltw6RuIG3DpMOkcml0eXNrb2h0ZWlkZW4geWxlaXNrYXRzYXVrc2Vzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgdmFsaWtvc3NhIGxpbmtpbiwgam9ua2EgYXZ1bGxhIHZvaXQga29waW9pZGEgbcOkw6RyaXR5c2tvaHRlZW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gem9vbWF1c27DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgbGlua2luIHZhbGlra29vbiwgam9ua2EgYXZ1bGxhIHZvaXQgbXVva2F0YSBtw6TDpHJpdHlza29oZGV0dGEgYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gem9vbWF1c27DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgdmFsaWtvc3NhIGxpbmtpbiwgam9ua2EgYXZ1bGxhIHZvaXQgcGFsYXRhIHRha2Fpc2luIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIG3DpMOkcml0eXNrb2h0ZWVuIHpvb21hdXNuw6RreW3DpMOkbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIHZhbGlrb3NzYSBsaW5raW4sIGpvbmthIGF2dWxsYSB2b2l0IHR1bG9zdGFhIG3DpMOkcml0eXNrb2h0ZWVuIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIHpvb21hdXNuw6RreW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkeXR0w6TDpCB2YWxpa29zc2EgbGlua2luLCBqb25rYSBhdnVsbGEgdm9pdCB6b29tYXRhIG3DpMOkcml0eXNrb2h0ZWVzZWVuIGFnZW50dGlrw6R5dHTDtmxpaXR0eW3DpG4gbcOkw6RyaXR5c2tvaHRlaWRlbiB5bGVpc2thdHNhdWtzZXNzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgbcOkw6RyaXR5c2tvaHRlaWRlbiBoaXN0b3JpYW4gKGvDpMOkbnRlaXNlc3PDpCBqw6RyamVzdHlrc2Vzc8OkKSBhZ2VudHRpbGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnT2xldHVzbHVva2thLCBqb2thIG7DpHl0ZXTDpMOkbiwgam9zIG1pdMOkw6RuIGVpIG9sZSB2YWxpdHR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnS29uZmlndXJhYXRpb2VsZW1lbnRpbiB0dW5uaXN0ZSwgZXNpbS4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIE9sZXR1c2Fydm8gb24gQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnS8OkeW5uaXN0w6TDpCBDb25maWdJdGVtRmV0Y2gta3V0c3VhamFuIGF1dG9tYWF0dGlzZXN0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnNpbyBTdHJpbmcgRXhwcmVzc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaW8gbWVya2tpam9ubyBNb2R1dWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNpbyBMYXVrYWlzaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1ZvaWRhYW5rbyBDb25maWdJdGVtQUNMOm4gc3Vvcml0dGFtaW5lbiB2w6RsdHTDpMOkIHRhcmtpc3RhbWFsbGEgdsOkbGltdWlzdGlpbiB0YWxsZW5uZXR0dWplbiBrZW50dGllbiByaWlwcHV2dXVkZXQuIFTDpG3DpCB2b2kgcGFyYW50YWEgbG9tYWtrZWlkZW4gbGF0YXVzYWlrb2phLCBtdXR0YSBzZSBvbiBwb2lzdGV0dGF2YSBrw6R5dMO2c3TDpCwgam9zIEFDTE1vZHVsZWphIGvDpHl0ZXTDpMOkbiBJVFNNQ29uZmlnSXRlbS0gamEgRm9ybS1SZXR1cm5UeXBlcy10eXlwZWlzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnTWl0a8OkIHlsZWlzZXQgdGllZG90IG7DpGt5dsOkdCBvdHNpa29zc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnbHVva2thJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ21hYWlsbWFubGFhanVpbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1Y3RpdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZXByb2R1Y3RpdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3R1b3R0YXZhJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IHR1dW1hYSAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDUzLDM0IGNtICgyMSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDY2LDY4IGNtICgyNiwyNSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogODAsMDEgY20gKDMxLDUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS10dXVtYWluZW4gdGVsaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogODgsOSBjbSAoMzUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS10dXVtYWluZW4gdGVsaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSB0dXVtYWEgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy10dXVtYWluZW4gdGVsaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiB0dXVtYWEgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIHR1dW1hYSAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgdHV1bWFhICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiA4LDg5IGNtICgzLDUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiAxMzMsMzUgY20gKDUyLDUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgdHV1bWFhICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSB0dXVtYWEgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHR1dW1hYSAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogMTYwLDAyIGNtICg2MyB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgdHV1bWFhICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogMTczLDM1IGNtICg2OCwyNSB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDEzLDM0IGNtICg1LDI1IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogMTg2LDY5IGNtICg3Myw1IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgdHV1bWFhICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDIwMCwwMiBjbSAoNzgsNzUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHR1dW1hYSAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDIxMywzNiBjbSAoODQgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiAxNyw3OCBjbSAoNyB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDIyLDIzIGNtICg4LDc1IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMzEsMTIgY20gKDEyLDI1IHR1dW1hYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDM1LDU2IGNtICgxNCB0dXVtYWEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiA0MCwwMSBjbSAoMTUsNzUgdHV1bWFhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0tpcmphbnBpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdPc29pdHRlZW4gamFrYW1pbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdZbGzDpHBpdMOkasOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZ2luZW4gcHVoZWxpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ0xhaXR0ZWVuIHR5eXBwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0FrdW4ga2FwYXNpdGVldHRpIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnUGFyaXN0b3R5eXBwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ1Jha2VubnVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdWw6R5bMOkbGlpdMOkbnTDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVS1sdW9ra2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0thcGFzaXRlZXR0aSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnS2FwYXNpdGVldHRpIG7DpHl0w7Zub2hqYWludGEga29odGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLb3J0aW4gbnVtZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS29ydGlubHVraWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0tvcnRpbiB0eXlwcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0FzaWFrYXN2YXJtZW50ZWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ0FzaWFrYXNvaGplbG1pc3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0FzaWFrYXNsdW9ra2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnS2VsbG90YWFqdXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdDbG9ja3NwZWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdLb29kaW4gYWxsZWtpcmpvaXR1c3Zhcm1lbnRlZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tva291c3B1aGVsaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdLb25zdWx0dGlzb3BpbXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdPdGEgeWh0ZXl0dMOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdPdGEgeWh0ZXl0dMOkIGpha2VsaWphYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdLb250dGllbiBoYWxsaW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ1NvcGltdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1NvcGltdXN0eXlwcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdTb3BpbXVza2F1c2kgYWxrYWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ1NvcGltdXNrYXVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdMYW5nYXRvbiBwdWhlbGluIChERUNULXB1aGVsaW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ0t1c3Rhbm51c3lrc2lra8O2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnTGlzZW5zc2llbiBsdWt1bcOkw6Ryw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0x1b250aXDDpGl2w6Rtw6TDpHLDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnQ3VzdG9tIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgVmFyYXR0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLXBhbHZlbGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdMYXNrdW4gcMOkaXbDpG3DpMOkcsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdUaWxhdXNww6RpdsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdUYWt1dWFqYW4gcMOkaXbDpG3DpMOkcsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0p1bGthaXN1cMOkaXbDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnVHnDtnDDtnl0w6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0FzaWFraXJqb2plbiBhbGxla2lyam9pdHVzdmFybWVudGVldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0ktaHlsbHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ1PDpGhrw7Zwb3N0aXZhcm1lbnRlZXQgKFMvTUlNRS12YXJtZW50ZWV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdUecO2c29waW11cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0xvcHVuIElQLW9zb2l0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1R1ZW4gcMOkw6R0dHltaW5lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ1ZpaW1laW5lbiB2b2ltYXNzYW9sb3DDpGl2w6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ1Vsa29pbmVuIGtpaW50b2xldnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdQYWxvbXV1cmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ0ZseXdoZWVsLWVuZXJnaWFuIHZhcmFzdG9pbnRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnTXVvZG9uIHRla2lqw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW5jaGlzaW5nLXNvcGltdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdZbGVpc3TDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ07DpHl0w7Zub2hqYWltZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ07DpHl0w7Zub2hqYWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnTGFpdHRlaXN0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ0xhaXR0ZWlzdG9tYWxsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdMYWl0dGVpc3RvbiBwYWlubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnS3V1bG9ra2VldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQLXByb3Rva29sbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnSWRlbnRpdGVldGluLSBqYSBww6TDpHN5bmhhbGxpbnRhIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdWYXJhc3RvbnVtZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnSW52ZXJzdG9pbnRpa3VzdGFubnVrc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnTGFza3VuIG51bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ07DpHBww6RpbWlzdMO2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRC1uw6R5dHTDtiAobmVzdGVraWRlbsOkeXR0w7YpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQtbW9uaXRvcmkgKHZhbG9kaW9kaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnTGFua2FwdWhlbGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0thbm5ldHRhdmEgdGlldG9rb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGV2ZXlzYXN0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0tlcnJvcyAxOiBGeXlzaW5lbiBrZXJyb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnS2Vycm9zIDI6IFRpZWRvbnNpaXJ0b2tlcnJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnS2Vycm9zIDM6IFZlcmtrb2tlcnJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdLZXJyb3MgMzogVmVya2tva2Vycm9zIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnS2Vycm9zIDQ6IEt1bGpldHVza2Vycm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdLZXJyb3MgNTogSXN0dW50b2tlcnJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdLZXJyb3MgNjogRXNpdHlza2Vycm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnS2Vycm9zIDc6IFNvdmVsbHVza2Vycm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ1Z1b2tyYXNvcGltdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaXNlbnNzaXNvcGltdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpc2Vuc3NpYXZhaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGlzZW5zc2luIHR5eXBwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGlzZW5zc2lhaWthIGFsa2Flbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpc2Vuc3NpYWlrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGl0aXVtLXJhdXRhZm9zZmFhdHRpYWtrdSAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0xpdGl1bS1pb25pYWtrdSAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0xhaW5hc29waW11cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnU2lqYWl0c2VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ1BpdHV1c2FzdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdWYWxtaXN0YWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdTdXVyaW4ga3Vvcm1pdHVza2FwYXNpdGVldHRpIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNdWlzdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdNdWlzdGl0eXlwcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTWF0a2FwdWhlbGlubnVtZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlpbGkvc2lzw6TDpG5yYWtlbm5ldHR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTWFsbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdNYWxsaW4ga3V2YXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ07DpHl0w7ZuIHRhcmtrdXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ07DpHl0w7ZuIGtva28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdIaWlyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnVmVya2tvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ1Zlcmtrb3RpZWRvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnVmVya2tvdGllZG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdWZXJra29rZXJyb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWtrZWxpLWthZG1pdW0tYWtrdSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWtrZWxpLW1ldGFsbGloeWRyaWRpIChOaU1IKSAtYWtrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdTYWxhc3NhcGl0b3NvcGltdXMgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdNdWlzdGlraXJqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ1N1b3JpdGlueWtzaWvDtmlkZW4gbcOkw6Ryw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnUkFNLW1vZHV1bGllbiBtw6TDpHLDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdOw6R5dMO2bm9oamFpbnRlbiBtw6TDpHLDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRC1tb25pdG9yaSAob3JnYWFuaW5lbiB2YWxvZGlvZGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ1RvaW1pbnRha3VzdGFubnVrc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ1RpbGF1c251bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ011dXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ0zDpGhkw7Z0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ0t1bXBwYW51dXNzb3BpbXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnUHVoZWxpbm51bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnUHVoZWxpbWVuIHR5eXBwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0Z5eXNpc2V0IHl0aW1ldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1ZpcnJhbmpha2VsdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ09zdGV0dHUgb3NvaXR0ZWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1RlbGluZWVuIHN5dnl5cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1RlbGluZXlrc2lrw7Z0IChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnSHVvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0ta29ydHRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUy1zZXJ0aWZpa2FhdGl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnTXl5bnRpc29waW11cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbGxpaXR0aXB1aGVsaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnU3VsamV0dHUgbHlpanloYXBwb2Fra3UgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTYXJqYW51bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdQYWx2ZWxpbm9oamVsbWlzdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdQYWx2ZWx1c29waW11cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1BhbHZlbHVtZXJra2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnUGlzdG9yYXNpYSB0eXlwcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdPaGplbG1pc3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnUHVodWphdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdWYWtpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnQWxvaXRhIElQLW9zb2l0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnVmFyYXN0b2ludGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdUYWxsZW5udXNvc2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnVHl0w6RyeWh0acO2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdZaHRlZW52ZXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnT2h1dCBhc2lha2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdLaWVydGVldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdOw6R5dMO2bm9oamFpbWVuIFJBTS1tdWlzdGkgeWh0ZWVuc8OkIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdSQU0tbXVpc3RpYSB5aHRlZW5zw6QgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnS29za2V0dXNuw6R5dMO2biBuw6R5dHTDtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1Rvcm5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0Ita2Vza2l0aW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiBIZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAtcHVoZWxpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2Via2FtZXJhJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/fr_CA_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZyX0NBX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEb25uw6llcyBnw6luw6lyYWxlcyBkZSBmb25jdGlvbm5lbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZG9ubsOpZXMgZGUgcmVxdcOqdGUgZW50cmFudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZG9ubsOpZXMgZGUgcsOpcG9uc2Ugc29ydGFudGVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTW9kaWZpZXIgbGEgZMOpZmluaXRpb24gZGUgbGEgY2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdNb2RpZmllciBsYSBkw6lmaW5pdGlvbiBkZXMgcsO0bGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnTGVzIGVuc2VtYmxlcyBkZSBjbGFzc2VzIFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0ljaSwgdm91cyBwb3V2ZXogaW1wb3J0ZXIgZGVzIGNsYXNzZXMgUmVhZHkySW1wb3J0IHF1aSBwcsOpc2VudGVudCBub3Mgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGxlcyBwbHVzIGNvdXJhbnRzLiBWZXVpbGxleiBub3RlciBxdWUgY2VydGFpbmVzIGNvbmZpZ3VyYXRpb25zIHN1cHBsw6ltZW50YWlyZXMgcGV1dmVudCDDqnRyZSBuw6ljZXNzYWlyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ01pc2Ugw6Agam91ciBkZXMgZW50aXTDqXMgZXhpc3RhbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ0ltcG9ydGVyIGxlcyBwYXF1ZXRzIGRlIGNsYXNzZXMgZGUgUmVhZHkyQWRvcHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDbGFzc2UgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ1LDtGxlIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRyZSBwb3VyIGxlcyBjbGFzc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1PDqWxlY3Rpb25uZXogdW5lIGNsYXNzZSBkYW5zIGxhIGxpc3RlIHBvdXIgY3LDqWVyIHVuIG5vdXZlbCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ8OJdGF0IGR1IGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0xpZW4gdmVycyB1biBhdXRyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTnVtw6lybyBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBub24gdmFsaWRlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnTGUgbnVtw6lybyBkXCd1biBhdXRyZSDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhdmVjIGxlcXVlbCDDqXRhYmxpciB1biBsaWVuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1ZvdWxlei12b3VzIHZyYWltZW50IHN1cHByaW1lciBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdMZSBub20gZGUgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdMZSBub20gZXN0IGTDqWrDoCB1dGlsaXPDqSBwYXIgbGVzIENvbmZpZ0l0ZW1zIGF2ZWMgbGUocykgbnVtw6lybyhzKSBzdWl2YW50KHMpIDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIHZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ051bcOpcm8gZGUgdmVyc2lvbiBkZSBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdMZSBudW3DqXJvIGRlIHZlcnNpb24gZXN0IGTDqWrDoCB1dGlsaXPDqSBwYXIgbGVzIENvbmZpZ0l0ZW1zIGF2ZWMgbGUocykgbnVtw6lybyhzKSBzdWl2YW50KHMpIDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ8OJdGF0IGRlIGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpcXVlIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnQ29udGVudSBoaXN0b3JpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDcsOpZXIgdW4gdGVtcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVnVlIGRlIGxhIHN5bnRow6hzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgw4lsw6ltZW50cyBwYXIgcGFnZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnQXVjdW5lIGRvbm7DqWUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gblwnYSDDqXTDqSB0cm91dsOpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTw6lsZWN0aW9ubmVyIGNldCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1JlY2hlcmNoZSBkXCdleMOpY3V0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1JlY2hlcmNoZSDDqWdhbGVtZW50IGRhbnMgbGVzIHZlcnNpb25zIHByw6ljw6lkZW50ZXMgPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHBvdXIgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ05pdmVhdSBkZSBwcm9mb25kZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbSBhdmFudC9hcnJpw6hyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdOaXZlYXUgZGUgbGllbnMgbWF4aW11bSBhdHRlaW50IHBvdXIgQ29uZmlnSXRlbSAhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb25zIHN1ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ8OJdGF0IGFjdHVlbCBkdSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ8OJdGF0IGFjdHVlbCBkZSBsXCdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdEZXJuacOocmUgbW9kaWZpY2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ0Rlcm5pw6hyZSBtb2RpZmljYXRpb24gcGFyJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVm9zIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdSZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICdUeXBlIGRcJ29iamV0JzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmlsdHJlciBwYXIgdHlwZSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0xlcyBjbGFzc2VzIHN1aXZhbnRlcyBzZXJvbnQgaW1wb3J0w6llcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdMZXMgcsO0bGVzIHN1aXZhbnRzIHNlcm9udCBpbXBvcnTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnTm90ZXogcXVlIGxlcyBjaGFtcHMgZHluYW1pcXVlcyBldCBsZXMgY2xhc3NlcyBHZW5lcmFsQ2F0YWxvZyBjb3JyZXNwb25kYW50cyBzZXJvbnQgw6lnYWxlbWVudCBjcsOpw6lzIGV0IHF1XCdpbCBuXCd5IGEgcGFzIGRlIHN1cHByZXNzaW9uIGF1dG9tYXRpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1ZvdWxlei12b3VzIGNvbnRpbnVlciA/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ0Jlc29pbiBkZSBjbGFzc2VzIGRcJ2V4ZW1wbGVzICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnTGEgZMOpZmluaXRpb24gblwnZXN0IHBhcyB1biBoYWNoYWdlIFlBTUwgdmFsaWRlLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1Z1ZSBkXCdlbnNlbWJsZSA6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdBdWN1biBDb25maWdJdGVtSUQgblwnZXN0IGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnVm91cyBhdmV6IGJlc29pbiBkXCdhdSBtb2lucyB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBzw6lsZWN0aW9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdWb3VzIG5cJ2F2ZXogcGFzIGRcJ2FjY8OocyBlbiDDqWNyaXR1cmUgw6AgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0F1Y3VuZSBkw6lmaW5pdGlvbiBuXCdhIMOpdMOpIGTDqWZpbmllIHBvdXIgbGEgY2xhc3NlICVzICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0xcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uICIlcyIgblwnYSBwYXMgw6l0w6kgdHJvdXbDqSBkYW5zIGxhIGJhc2UgZGUgZG9ubsOpZXMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ0lsIG5cJ2EgcGFzIMOpdMOpIHBvc3NpYmxlIGRlIHN1cHByaW1lciBsZSBjb25maWdpdGVtIElEICVzICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ0F1Y3VuZSB2ZXJzaW9uIHRyb3V2w6llIHBvdXIgQ29uZmlnSXRlbUlEICVzICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvdSBDbGFzc0lEIG5cJ2VzdCBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gYWNjw6hzIG5cJ2VzdCBkb25uw6kgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdJbXBvc3NpYmxlIGRcJ2FmZmljaGVyIGxcJ2hpc3RvcmlxdWUsIGF1Y3VuIENvbmZpZ0l0ZW1JRCBuXCdlc3QgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdJbXBvc3NpYmxlIGRcJ2FmZmljaGVyIGxcJ2hpc3RvcmlxdWUsIGF1Y3VuIGRyb2l0IGRcJ2FjY8OocyBuXCdhIMOpdMOpIGFjY29yZMOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vdXZlYXUgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOb3V2ZWxsZSB2ZXJzaW9uIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdNaXNlIMOgIGpvdXIgZGUgbFwnw6l0YXQgZHUgZMOpcGxvaWVtZW50IChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTWlzZSDDoCBqb3VyIGRlIGxcJ8OpdGF0IGRlIGxcJ2luY2lkZW50IChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgc3VwcHJpbcOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnQWpvdXQgZFwndW4gbGllbiB2ZXJzICVzICh0eXBlPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGllbiB2ZXJzICVzICh0eXBlPSVzKSBzdXBwcmltw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ01pc2Ugw6Agam91ciBkZSBsYSBkw6lmaW5pdGlvbiBkZSBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOb20gbWlzIMOgIGpvdXIgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnV0ICVzIG1pcyDDoCBqb3VyIGRlICIlcyIgw6AgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaW9uICVzIHN1cHByaW3DqWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gQ29uZmlnSXRlbUlEIG91IFZlcnNpb25JRCBuXCdlc3QgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiwgYXVjdW4gZHJvaXQgZFwnYWNjw6hzIG5cJ2Egw6l0w6kgYWNjb3Jkw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBpbnRyb3V2YWJsZSBkYW5zIGxhIGJhc2UgZGUgZG9ubsOpZXMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2ltcHJpbcOpIHBhciAlcyDDoCAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUsOpZsOpcmVuY2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdDbGFzc0lEIGludmFsaWRlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdBdWN1biBpZGVudGlmaWFudCBkZSBjbGFzc2UgblwnZXN0IGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnQXVjdW4gZHJvaXQgZFwnYWNjw6hzIMOgIGNldHRlIGNsYXNzZSBuXCdhIMOpdMOpIGFjY29yZMOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1BhcyBkZSByw6lzdWx0YXQgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1LDqXN1bHRhdHMgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCfDqWzDqW1lbnQsIGF1Y3VuIGRyb2l0IGRcJ2FjY8OocyBuXCdlc3QgYWNjb3Jkw6kgcG91ciBDb25maWdJdGVtICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBpbnRyb3V2YWJsZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ0F1Y3VuZSB2ZXJzaW9uIHRyb3V2w6llICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcMOpcmF0aW9ubmVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhdmVydGlzc2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0xcJ8OpdGF0IGRlIGTDqXBsb2llbWVudCBkZSBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdMXCfDqXRhdCBkZSBsXCdpbmNpZGVudCBkZSBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdQYXMgZFwnYXV0b3Jpc2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRyZSBub24gdmFsaWRlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcmFtw6h0cmVzIGRlIHJlY2hlcmNoZSBub24gdmFsaWRlcyAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnw4lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGFmZmljaMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUeXBlIGRcJ8OpdGF0IGRlIGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUeXBlIGRcJ2luY2lkZW50IGFjdHVlbCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdlbnRyZSBsZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY3Rpb25zIGRlIGNsYXNzZSBwb3VyIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTw6lsZWN0aW9ubmVyIHVuZSBvdSBwbHVzaWV1cnMgY2xhc3NlcyBwb3VyIHJlc3RyZWluZHJlIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gc8OpbGVjdGlvbm5hYmxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY3Rpb25zIGRlIGNsYXNzZSBwb3VyIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU8OpbGVjdGlvbm5lciB1bmUgb3UgcGx1c2lldXJzIGNsYXNzZXMgcG91ciByZXN0cmVpbmRyZSBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHPDqWxlY3Rpb25uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWlxdWUgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKFZlcnNpb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1R5cGUgZGUgcsOpZsOpcmVuY2VtZW50IGRlcyBsaWVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdTaSBjZSBsaWVuIHNcJ2FwcGxpcXVlIMOgIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG91IMOgIGxhIHZlcnNpb24gc3RhdGlxdWUgZGUgbFwnb2JqZXQgZGUgcsOpZsOpcmVuY2UuIExlIGNhbGN1bCBkZSBsXCfDqXRhdCBhY3R1ZWwgZGUgbFwnaW5jaWRlbnQgblwnZXN0IGVmZmVjdHXDqSBxdWUgcG91ciBsZXMgbGllbnMgZHluYW1pcXVlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdTw6lsZWN0aW9ubmV6IGxcJ2F0dHJpYnV0IHBhciBsZXF1ZWwgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzZXJvbnQgcmVjaGVyY2jDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnTGEgc3RydWN0dXJlIGRlIGJhc2UgblwnZXN0IHBhcyB2YWxpZGUuIFZldWlsbGV6IGZvdXJuaXIgdW4gaGFjaGFnZSBhdmVjIGRlcyBkb25uw6llcyBhdSBmb3JtYXQgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdJbCBlc3QgbsOpY2Vzc2FpcmUgZGUgY29tbWVuY2VyIGxhIGNoYcOubmUgWUFNTCBwYXIgIi0tLSIuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ0ltcG9zc2libGUgZGUgcHVyZ2VyIGxhIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ0F1Y3VuIGNoYW1wIGR5bmFtaXF1ZSBwZXJ0aW5lbnQgblwnYSDDqXTDqSB0cm91dsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW1wb3NzaWJsZSBkXCdpbnPDqXJlciBkYW5zIGxhIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW5zw6lyw6kgMCBsaWduZXMgZGFucyBsYSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTm9tYnJlIG1heGltYWwgZFwndW4gw6lsw6ltZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9ydGVyL2V4cG9ydGVyIGRlcyBwacOoY2VzIGpvaW50ZXMgKGVuIHRhbnQgcXVlIGRlcm5pw6hyZXMgZW50csOpZXMgcGFyIGxpZ25lKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ0NoYcOubmUgZGUgdmVyc2lvbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdFcnJldXIgZGUgc3luY2hyb25pc2F0aW9uIGRlcyBkw6lmaW5pdGlvbnMuIFZldWlsbGV6IHbDqXJpZmllciBsZSBqb3VybmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1ZvdXMgYXZleiBkZXMgZMOpZmluaXRpb25zIElUU01Db25maWdJdGVtIHF1aSBuZSBzb250IHBhcyBzeW5jaHJvbmlzw6llcy4gVmV1aWxsZXogZMOpcGxveWVyIHZvcyBjaGFuZ2VtZW50cyBkZSBjaGFtcHMgZHluYW1pcXVlcyBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0V4cGlyw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdNYWludGVuYW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUHLDqXZ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1LDqXBhcmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSZXRyYWl0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUsOpdmlzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0L1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdWdWUgZFwnZW5zZW1ibGUgZXQgY29uZmlybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGF0aW9uIGRlIGNsYXNzZXMvcsO0bGVzIGV0IGRlIGxldXJzIGNoYW1wcyBjb25uZXhlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ1VuZSBlcnJldXIgc1wnZXN0IHByb2R1aXRlIGxvcnMgZGUgbFwnaW1wb3J0YXRpb24gZGUgbGEgY2xhc3NlLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gQ2FjaMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBNb250csOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtZXQgZFwnw6l0ZW5kcmUgbGVzIGNvbmRpdGlvbnMgZGUgcmVjaGVyY2hlIGRhbnMgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuIEdyw6JjZSDDoCBjZXR0ZSBmb25jdGlvbm5hbGl0w6ksIHZvdXMgcG91dmV6IHJlY2hlcmNoZXIsIHBhciBleGVtcGxlLCBsZSBub20gZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gYXZlYyBkZXMgY29uZGl0aW9ucyB0ZWxsZXMgcXVlICIoKmtleTEqJiYqa2V5MiopIiBvdSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1ldCBkXCfDqXRlbmRyZSBsZXMgY29uZGl0aW9ucyBkZSByZWNoZXJjaGUgZGFucyBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuIEF2ZWMgY2V0dGUgZm9uY3Rpb25uYWxpdMOpLCB2b3VzIHBvdXZleiByZWNoZXJjaGVyIHBhciBleGVtcGxlIGxlIG5vbSBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhdmVjIGRlcyBjb25kaXRpb25zIHRlbGxlcyBxdWUgIigqa2V5MSomJiprZXkyKikiIG91ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnSUMgYXNzaWduw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSSBhZmZlY3TDqXMgw6AgbFwnZW50cmVwcmlzZSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnQ0kgYXR0cmlidcOpcyDDoCBsXCd1dGlsaXNhdGV1ciBjbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ1BhcmFtw6h0cmVzIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1bDqXJpZmllciBsYSBwcsOpc2VuY2UgZFwndW4gbm9tIHVuaXF1ZSB1bmlxdWVtZW50IGRhbnMgbGEgbcOqbWUgY2xhc3NlIGRlIENvbmZpZ0l0ZW0gKCJjbGFzcyIpIG91IGdsb2JhbGVtZW50ICgiZ2xvYmFsIiksIGNlIHF1aSBzaWduaWZpZSBxdWUgY2hhcXVlIENvbmZpZ0l0ZW0gZXhpc3RhbnQgZXN0IHByaXMgZW4gY29tcHRlIGxvcnMgZGUgbGEgcmVjaGVyY2hlIGRlIGRvdWJsb25zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnQ2hvaXNpc3NleiB1biBtb2R1bGUgcG91ciBhcHBsaXF1ZXIgdW4gc2Now6ltYSBkZSBkw6lub21pbmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnQ2hvaXNpc3NleiB1biBtb2R1bGUgcG91ciBhcHBsaXF1ZXIgdW4gc3lzdMOobWUgZGUgbnVtw6lyb3RhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnQ2hvaXNpc3NleiB1biBtb2R1bGUgcG91ciBhcHBsaXF1ZXIgdW4gc2Now6ltYSBkZSBjaGHDrm5lIGRlIHZlcnNpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnU8OpbGVjdGlvbm5leiBsZXMgYXR0cmlidXRzIHF1aSBkw6ljbGVuY2hlbnQgbGEgY3LDqWF0aW9uIGRcJ3VuZSBub3V2ZWxsZSB2ZXJzaW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdTw6lsZWN0aW9ubmV6IGxlcyBjYXTDqWdvcmllcyDDoCBhZmZlY3RlciDDoCBjZXR0ZSBjbGFzc2UgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cmVzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBlbiBjb2xvbm5lIHBvdXIgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sb25uZXMgcG91dmFudCDDqnRyZSBmaWx0csOpZXMgZGFucyBsYSB2dWUgZFwnZW5zZW1ibGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuIFJlbWFycXVlIDogc2V1bHMgbGVzIGF0dHJpYnV0cyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGV0IGxlcyBjaGFtcHMgZHluYW1pcXVlcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBzb250IGF1dG9yaXPDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ8OJbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQWpvdXQgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnw4lkaXRpb24gZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWxlIGRcJ8OpdsOpbmVtZW50IGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHF1aSBwZXJtZXQgbFwnZW5yZWdpc3RyZW1lbnQgZGFucyBsXCdoaXN0b3JpcXVlIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNb2R1bGUgZFwnw6l2w6luZW1lbnQgcG91ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHF1aSBtZXQgw6Agam91ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGVuIGZvbmN0aW9uIGRlIGxldXIgZMOpZmluaXRpb24gYWN0dWVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSGlzdG9yaXF1ZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdJbXByZXNzaW9uIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnQ29uZmlnIGl0ZW0gem9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdBcmJvcmVzY2VuY2UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnTGVzIENvbmZpZ0l0ZW1zIGRlcyBjbGFzc2VzIHN1aXZhbnRlcyBuZSBzZXJvbnQgcGFzIHN0b2Nrw6lzIHN1ciBsZSBzZXJ2ZXVyIEVsYXN0aWNzZWFyY2guIFBvdXIgYXBwbGlxdWVyIGNlbGEgYXV4IENJIGV4aXN0YW50cywgbGEgbWlncmF0aW9uIGRlcyBDSSBkb2l0IMOqdHJlIGV4w6ljdXTDqWUgdmlhIGxhIGNvbnNvbGUsIGFwcsOocyBhdm9pciBjaGFuZ8OpIGNldHRlIG9wdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnTGVzIENvbmZpZ0l0ZW1zIGF2ZWMgbGVzIMOpdGF0cyBkZSBkw6lwbG9pZW1lbnQgc3VpdmFudHMgbmUgc2Vyb250IHBhcyBzdG9ja8OpcyBzdXIgbGUgc2VydmV1ciBFbGFzdGljc2VhcmNoLiBQb3VyIGFwcGxpcXVlciBjZWxhIGF1eCBDSSBleGlzdGFudHMsIGxhIG1pZ3JhdGlvbiBkZXMgQ0kgZG9pdCDDqnRyZSBleMOpY3V0w6llIHZpYSBsYSBjb25zb2xlLCBhcHLDqHMgYXZvaXIgY2hhbmfDqSBjZXR0ZSBvcHRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0xpbWl0ZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnQ29uZmlndXJhdGlvbiBMaW1pdGUgZFwnw6lsw6ltZW50cyBwYXIgcGFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0Jhc2UgZGUgZG9ubsOpZXMgZGUgZ2VzdGlvbiBkZSBsYSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gbW9kdWxlIGVuIHZyYWMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8OJbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHJlY2hlcmNoZSByb3V0ZXVyIGJhY2tlbmQgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDcsOpZXIgZXQgZ8OpcmVyIGxlcyBkw6lmaW5pdGlvbnMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcsOpZSBkZXMgdGlja2V0cyBwb3VyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gw6AgZGVzIG1vbWVudHMgcHLDqWNpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnTGVzIGNsaWVudHMgcGV1dmVudCBjb25zdWx0ZXIgbFwnaGlzdG9yaXF1ZSBkZXMgdmVyc2lvbnMgZGUgbFwnSUMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0xlcyBjbGllbnRzIG9udCBsYSBwb3NzaWJpbGl0w6kgZGUgcGFzc2VyIG1hbnVlbGxlbWVudCBkXCd1bmUgdmVyc2lvbiBoaXN0b3JpcXVlIGRlIENJIMOgIGxcJ2F1dHJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0Rvbm7DqWVzIHBhciBkw6lmYXV0IMOgIHV0aWxpc2VyIHN1ciBsXCdhdHRyaWJ1dCBkZSBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uIEV4ZW1wbGUgOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MiA7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEb25uw6llcyBwYXIgZMOpZmF1dCDDoCB1dGlsaXNlciBzdXIgbFwnYXR0cmlidXQgZGUgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLiBFeGVtcGxlIDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTMgOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEw6lmaW5pciBsZXMgYWN0aW9ucyBwb3VyIGxlc3F1ZWxsZXMgdW4gYm91dG9uIGRlIGNvbmZpZ3VyYXRpb24gZXN0IGRpc3BvbmlibGUgZGFucyBsZSB3aWRnZXQgZGVzIG9iamV0cyBsacOpcyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBWZXVpbGxleiBub3RlciBxdWUgY2VzIGFjdGlvbnMgZG9pdmVudCBhdm9pciBlbnJlZ2lzdHLDqSBsZXMgZmljaGllcnMgSlMgZXQgQ1NTIHN1aXZhbnRzIDogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgZXQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRMOpZmluaXIgdW4gc2Now6ltYSBUZW1wbGF0ZTo6VG9vbGtpdCBwb3VyIGxlcyBjaGHDrm5lcyBkZSB2ZXJzaW9uLiBVdGlsaXPDqSB1bmlxdWVtZW50IHNpIGxlIG1vZHVsZSBkZSBjaGHDrm5lIGRlIHZlcnNpb24gZXN0IGTDqWZpbmkgc3VyIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEw6lmaW5pciB1biBlbnNlbWJsZSBkZSBjb25kaXRpb25zIHNvdXMgbGVzcXVlbGxlcyB1biBjbGllbnQgZXN0IGF1dG9yaXPDqSDDoCB2b2lyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLiBMZXMgY29uZGl0aW9ucyBwZXV2ZW50IMOpdmVudHVlbGxlbWVudCDDqnRyZSBsaW1pdMOpZXMgw6AgY2VydGFpbnMgZ3JvdXBlcyBkZSBjbGllbnRzLiBMZSBub20gZXN0IGxlIHNldWwgYXR0cmlidXQgb2JsaWdhdG9pcmUuIFNpIGF1Y3VuZSBhdXRyZSBvcHRpb24gblwnZXN0IGRvbm7DqWUsIHRvdXMgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzZXJvbnQgdmlzaWJsZXMgZGFucyBjZXR0ZSBjYXTDqWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGF1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciBzdXBwcmltZXIgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIMOgIGxcJ2FpZGUgZGUgbFwnaW50ZXJmYWNlIGfDqW7DqXJpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGF1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciBvYnRlbmlyIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSDDoCBsXCdhaWRlIGRlIGxcJ2ludGVyZmFjZSBnw6luw6lyaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBhdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgcmVjaGVyY2hlciBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gw6AgbFwnYWlkZSBkZSBsXCdpbnRlcmZhY2UgZ8OpbsOpcmlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgYXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIGTDqWZpbmlyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSDDoCBsXCdhaWRlIGRlIGxcJ2ludGVyZmFjZSBnw6luw6lyaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRMOpZmluaXQgdW4gbW9kdWxlIGRlIHZ1ZSBkXCdlbnNlbWJsZSBwb3VyIGFmZmljaGVyIGxhIHBldGl0ZSB2dWUgZFwndW5lIGxpc3RlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRMOpZmluaXQgc2kgbGVzIMOpdGlxdWV0dGVzIGRlIHR5cGUgZGUgbGllbiBkb2l2ZW50IMOqdHJlIGFmZmljaMOpZXMgZGFucyBsZXMgY29ubmV4aW9ucyBkZSBuxZN1ZHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEw6lmaW5pdCBkZXMgZXhwcmVzc2lvbnMgcsOpZ3VsacOocmVzIGluZGl2aWR1ZWxsZW1lbnQgcG91ciBjaGFxdWUgY2xhc3NlIENvbmZpZ0l0ZW0gYWZpbiBkZSB2w6lyaWZpZXIgbGUgbm9tIGR1IENvbmZpZ0l0ZW0gZXQgZFwnYWZmaWNoZXIgbGVzIG1lc3NhZ2VzIGRcJ2VycmV1ciBjb3JyZXNwb25kYW50cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgY29sb25uZXMgZGlzcG9uaWJsZXMgcG91ciBsZXMgQ0kgZGFucyBsXCdhcGVyw6d1IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZW4gZm9uY3Rpb24gZGUgbGEgY2xhc3NlIGR1IENJLiBDaGFxdWUgZW50csOpZSBkb2l0IMOqdHJlIGNvbnN0aXR1w6llIGRcJ3VuIG5vbSBkZSBjbGFzc2UgZXQgZFwndW4gdGFibGVhdSBkZSBjaGFtcHMgZGlzcG9uaWJsZXMgcG91ciBsYSBjbGFzc2UgY29ycmVzcG9uZGFudGUuIExlcyBlbnRyw6llcyBkZSBjaGFtcHMgZHluYW1pcXVlcyBkb2l2ZW50IHJlc3BlY3RlciBsZSBzY2jDqW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdhdHRyaWJ1dCBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBwYXIgZMOpZmF1dCBwb3VyIGxlIHRyaSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gcGFyIGTDqWZhdXQgcG91ciBsZSB0cmkgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gcGFyIGTDqWZhdXQgcG91ciBsZSB0cmkgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGNldHRlIG9ww6lyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdvcmRyZSBwYXIgZMOpZmF1dCBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50LiBVcCA6IGxlIHBsdXMgYW5jaWVuIGVzdCBlbiBoYXV0LiBFbiBiYXMgOiBsZSBwbHVzIHLDqWNlbnQgZW4gaGF1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ29yZHJlIHBhciBkw6lmYXV0IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsZSByw6lzdWx0YXQgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50LiBFbiBoYXV0IDogbGUgcGx1cyBhbmNpZW4gZXN0IGVuIGhhdXQuIEVuIGJhcyA6IGxlIHBsdXMgcsOpY2VudCBlbiBoYXV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdvcmRyZSBwYXIgZMOpZmF1dCBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgY2V0dGUgb3DDqXJhdGlvbi4gRW4gaGF1dCA6IGxlIHBsdXMgYW5jaWVuIGVuIGhhdXQuIFZlcnMgbGUgYmFzIDogbGUgcGx1cyByw6ljZW50IGVuIGhhdXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgY29sb25uZXMgYWZmaWNow6llcyBwYXIgZMOpZmF1dCBkZXMgQ0kgZGFucyBsYSB2dWUgZFwnZW5zZW1ibGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBlbiBmb25jdGlvbiBkZSBsYSBjbGFzc2UgZHUgQ0kuIENoYXF1ZSBlbnRyw6llIGRvaXQgw6p0cmUgY29uc3RpdHXDqWUgZFwndW4gbm9tIGRlIGNsYXNzZSBldCBkXCd1biB0YWJsZWF1IGRlIGNoYW1wcyBkaXNwb25pYmxlcyBwb3VyIGxhIGNsYXNzZSBjb3JyZXNwb25kYW50ZS4gTGVzIGVudHLDqWVzIGRlIGNoYW1wcyBkeW5hbWlxdWVzIGRvaXZlbnQgcmVzcGVjdGVyIGxlIHNjaMOpbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRMOpZmluaXQgbGEgcHJvZm9uZGV1ciBwYXIgZMOpZmF1dCBkZXMgcmVsYXRpb25zIMOgIGFmZmljaGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdhdHRyaWJ1dCBkZSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGFmZmljaMOpIHBhciBkw6lmYXV0IHBvdXIgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdhdHRyaWJ1dCBkZSByZWNoZXJjaGUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gYWZmaWNow6kgcGFyIGTDqWZhdXQgcG91ciBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLiBFeGVtcGxlIDogIktleSIgZG9pdCBjb250ZW5pciBsZSBub20gZHUgY2hhbXAgZHluYW1pcXVlLCBkYW5zIGNlIGNhcyAiWCIsICJDb250ZW50IiBkb2l0IGNvbnRlbmlyIGxhIHZhbGV1ciBkdSBjaGFtcCBkeW5hbWlxdWUgZW4gZm9uY3Rpb24gZHUgdHlwZSBkZSBjaGFtcCBkeW5hbWlxdWUsIFRleHQgOiAidW4gdGV4dGUiLCBEcm9wZG93biA6ICIxIiwgRGF0ZS9UaW1lIDogIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0IiA6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NCA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMSA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjYgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMCA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDAgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDEgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjYgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5IDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5IDtldCBvdSAiU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWsgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmUgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03IiA7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRMOpZmluaXQgbGUgc291cy1vYmpldCBwYXIgZMOpZmF1dCBkZSBsYSBjbGFzc2UgIklUU01Db25maWdJdGVtIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBjb2xvbm5lcyBkaXNwb25pYmxlcyBwb3VyIGxlcyBDSSBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBlbiBmb25jdGlvbiBkZSBsYSBjbGFzc2UgZHUgQ0kuIENoYXF1ZSBlbnRyw6llIGRvaXQgw6p0cmUgY29uc3RpdHXDqWUgZFwndW4gbm9tIGRlIGNsYXNzZSBldCBkXCd1biB0YWJsZWF1IGRlIGNoYW1wcyBkaXNwb25pYmxlcyBwb3VyIGxhIGNsYXNzZSBjb3JyZXNwb25kYW50ZS4gTGVzIGVudHLDqWVzIGRlIGNoYW1wcyBkeW5hbWlxdWVzIGRvaXZlbnQgcmVzcGVjdGVyIGxlIHNjaMOpbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRMOpZmluaXQgbGEgaGF1dGV1ciBkdSBjb21wb3NhbnQgZGUgbFwnw6lkaXRldXIgZGUgdGV4dGUgZW5yaWNoaSBwb3VyIGNldCDDqWNyYW4uIEVudHJleiB1biBub21icmUgKHBpeGVscykgb3UgdW5lIHZhbGV1ciBlbiBwb3VyY2VudGFnZSAocmVsYXRpdmUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZSBub21icmUgZGUgbGlnbmVzIHBvdXIgbFwnw6lkaXRldXIgZGUgZMOpZmluaXRpb24gZGUgQ0kgZGFucyBsXCdpbnRlcmZhY2UgZFwnYWRtaW5pc3RyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ29yZHJlIGRlcyDDqXRhdHMgaW5jaWRlbnRzLCBkZSBoYXV0IChwYXIgZXhlbXBsZSwgY3JpY2l0YWwpIMOgIGJhcyAocGFyIGV4ZW1wbGUsIGZvbmN0aW9ubmVsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgw6l0YXRzIGRlIGTDqXBsb2llbWVudCBwZXJ0aW5lbnRzIGRhbnMgbGVzcXVlbHMgbGVzIHRpY2tldHMgbGnDqXMgcGV1dmVudCBhZmZlY3RlciBsZSBzdGF0dXQgZFwndW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRMOpZmluaXQgbGEgbGltaXRlIGRlIHJlY2hlcmNoZSBwb3VyIGxcJ8OpY3JhbiBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxhIGxpbWl0ZSBkZSByZWNoZXJjaGUgcG91ciBsXCfDqWNyYW4gQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEw6lmaW5pdCBsYSBsaW1pdGUgZGUgcmVjaGVyY2hlIHBvdXIgbFwnw6ljcmFuIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRMOpZmluaXQgbGEgbGltaXRlIGRlIHJlY2hlcmNoZSBwb3VyIGxcJ8OpY3JhbiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBjb2xvbm5lcyBhZmZpY2jDqWVzIGRlcyBDSSBkYW5zIGxhIHZ1ZSBjb21wbGV4ZSBkZSBsYSB0YWJsZSBkZXMgbGllbnMgcG91ciB0b3V0ZXMgbGVzIGNsYXNzZXMgZGUgQ0kuIFNcJ2lsIG5cJ3kgYSBwYXMgZFwnZW50csOpZSwgbGVzIGNvbG9ubmVzIHBhciBkw6lmYXV0IHNvbnQgYWZmaWNow6llcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBjb2xvbm5lcyBhZmZpY2jDqWVzIGRlcyBDSSBkYW5zIGxhIHZ1ZSBjb21wbGV4ZSBkZSBsYSB0YWJsZSBkZXMgbGllbnMsIGVuIGZvbmN0aW9uIGRlIGxhIGNsYXNzZSBkdSBDSS4gQ2hhcXVlIGVudHLDqWUgZG9pdCDDqnRyZSBwcsOpY8OpZMOpZSBkdSBub20gZGUgbGEgY2xhc3NlIGV0IGRlIGRldXggcG9pbnRzIChwYXIgZXhlbXBsZSA6IE9yZGluYXRldXI6IDopLiBRdWVscXVlcyBhdHRyaWJ1dHMgZGUgQ0kgc29udCBjb21tdW5zIMOgIHRvdXMgbGVzIENJIChleGVtcGxlIHBvdXIgbGEgY2xhc3NlIE9yZGluYXRldXI6Ok5vbSwgT3JkaW5hdGV1cjo6Tm9tLCBPcmRpbmF0ZXVyOjpOb20sIE9yZGluYXRldXI6Ok5vbSwgT3JkaW5hdGV1cjo6Tm9tKSA6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFBvdXIgYWZmaWNoZXIgbGVzIGF0dHJpYnV0cyBkZSBDSSBpbmRpdmlkdWVscyB0ZWxzIHF1ZSBkw6lmaW5pcyBkYW5zIGxhIGTDqWZpbml0aW9uIGRlIENJLCBpbCBjb252aWVudCBkXCd1dGlsaXNlciBsZSBzY2jDqW1hIHN1aXZhbnQgKGV4ZW1wbGUgcG91ciBsYSBjbGFzc2UgT3JkaW5hdGV1cikgOiBPcmRpbmF0ZXVyOjpIYXJkRGlzazo6MSwgT3JkaW5hdGV1cjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBPcmRpbmF0ZXVyOjpIYXJkRGlzazo6MiwgT3JkaW5hdGV1cjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBTXCdpbCBuXCd5IGEgcGFzIGRcJ2VudHLDqWUgcG91ciB1bmUgY2xhc3NlIENJLCBsZXMgY29sb25uZXMgcGFyIGTDqWZhdXQgc29udCBhZmZpY2jDqWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyDDqWzDqW1lbnRzIGRpc3BvbmlibGVzIHBvdXIgIkFjdGlvbiIgYXUgdHJvaXNpw6htZSBuaXZlYXUgZGUgbGEgc3RydWN0dXJlIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyDDqWzDqW1lbnRzIGRpc3BvbmlibGVzIGF1IHByZW1pZXIgbml2ZWF1IGRlIGxhIHN0cnVjdHVyZSBkZSBsXCdBQ0wgZGVzIMOpbMOpbWVudHMgZGUgbGEgQ29uZmlnIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyDDqWzDqW1lbnRzIGRpc3BvbmlibGVzIGF1IGRldXhpw6htZSBuaXZlYXUgZGUgbGEgc3RydWN0dXJlIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEw6lmaW5pdCBxdWVsIHR5cGUgZGUgbGllbiAobm9tbcOpIGR1IHBvaW50IGRlIHZ1ZSBkdSB0aWNrZXQpIHBldXQgYWZmZWN0ZXIgbGUgc3RhdHV0IGRcJ3VuIENJIGxpw6kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRMOpZmluaXQgcXVlbCB0eXBlIGRlIHRpY2tldCBwZXV0IGFmZmVjdGVyIGxlIHN0YXR1dCBkXCd1biBDSSBsacOpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ01pc2Ugw6Agam91ciBkZSBsYSBkw6lmaW5pdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnU3VwcHJpbWVyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQ291bGV1ciBkZSBsXCfDqXRhdCBkZSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnw4l0YXQgZGUgZMOpcGxvaWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2F0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHVsZSBkXCfDqXbDqW5lbWVudCBkZSBjaGFtcCBkeW5hbWlxdWUgcXVpIG1hcnF1ZSBsZXMgZMOpZmluaXRpb25zIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBjb21tZSDDqXRhbnQgZMOpc3luY2hyb25pc8OpZXMsIHNpIGxlcyBjaGFtcHMgZHluYW1pcXVlcyBxdVwnZWxsZXMgY29udGllbm5lbnQgY2hhbmdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDaGFtcHMgZHluYW1pcXVlcyBhZmZpY2jDqXMgZGFucyBsXCfDqWNyYW4gZGVzIGNoYW1wcyBJVFNNIHN1cHBsw6ltZW50YWlyZXMgZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDaGFtcHMgZHluYW1pcXVlcyBhZmZpY2jDqXMgZGFucyBsXCfDqWNyYW4gZGUgc3ludGjDqHNlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NoYW1wcyBkeW5hbWlxdWVzIGFmZmljaMOpcyBkYW5zIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0FjdGl2ZSBsYSBmb25jdGlvbiBkXCdhY3Rpb24gZW4gYmxvYyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHBvdXIgcXVlIGxlIGZyb250ZW5kIGRlIGxcJ2FnZW50IHB1aXNzZSB0cmF2YWlsbGVyIHN1ciBwbHVzIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIMOgIGxhIGZvaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdBY3RpdmUgbGEgZm9uY3Rpb24gZFwnYWN0aW9uIGVuIGJsb2MgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiB1bmlxdWVtZW50IHBvdXIgbGVzIGdyb3VwZXMgcsOpcGVydG9yacOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnQWN0aXZlL2TDqXNhY3RpdmUgbGEgZm9uY3Rpb25uYWxpdMOpIGRlIHbDqXJpZmljYXRpb24gZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIHBvdXIgbGVzIG5vbXMgdW5pcXVlcy4gQXZhbnQgZFwnYWN0aXZlciBjZXR0ZSBvcHRpb24sIHZvdXMgZGV2ZXogdsOpcmlmaWVyIHNpIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZXhpc3RhbnRzIG9udCBkZXMgbm9tcyBlbiBkb3VibGUuIFZvdXMgcG91dmV6IGxlIGZhaXJlIGF2ZWMgbGEgY29tbWFuZGUgZGUgbGEgY29uc29sZSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ01vZHVsZSBkXCfDqXbDqW5lbWVudCBwb3VyIGTDqWZpbmlyIGxlIHN0YXR1dCBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBzdXIgbGUgbGllbiB0aWNrZXQtY29uZmlnaXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQ2hhbXBzIGRlIGxcJ2luZGV4IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24sIHV0aWxpc8OpcyBwb3VyIGxhIHJlY2hlcmNoZSBlbiB0ZXh0ZSBpbnTDqWdyYWwuIExlcyBjaGFtcHMgc29udCDDqWdhbGVtZW50IHN0b2Nrw6lzLCBtYWlzIG5lIHNvbnQgcGFzIG9ibGlnYXRvaXJlcyBwb3VyIGxhIGZvbmN0aW9ubmFsaXTDqSBnbG9iYWxlLiBMXCdpbmNsdXNpb24gZGVzIHBpw6hjZXMgam9pbnRlcyBwZXV0IMOqdHJlIGTDqXNhY3RpdsOpZSBlbiBtZXR0YW50IGxcJ2VudHLDqWUgw6AgMCBvdSBlbiBsYSBzdXBwcmltYW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ2hhbXBzIHN0b2Nrw6lzIGRhbnMgbFwnaW5kZXggZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBxdWkgc29udCB1dGlsaXPDqXMgcG91ciBkXCdhdXRyZXMgY2hvc2VzIHF1ZSBsZXMgcmVjaGVyY2hlcyBlbiB0ZXh0ZSBpbnTDqWdyYWwuIFBvdXIgdW5lIGZvbmN0aW9ubmFsaXTDqSBjb21wbMOodGUsIHRvdXMgbGVzIGNoYW1wcyBzb250IG9ibGlnYXRvaXJlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdQb3VyIGNoYXF1ZSBzZXJ2aWNlIHdlYiAoY2zDqSksIHVuIHRhYmxlYXUgZGUgY2xhc3NlcyAodmFsZXVyKSBwZXV0IMOqdHJlIGTDqWZpbmkgc3VyIGxlcXVlbCBsXCdpbXBvcnRhdGlvbiBlc3QgcmVzdHJlaW50ZS4gUG91ciB0b3V0ZXMgbGVzIGNsYXNzZXMgY2hvaXNpZXMsIG91IHBvdXIgdG91dGVzIGxlcyBjbGFzc2VzIGV4aXN0YW50ZXMsIGxlcyBhdHRyaWJ1dHMgZFwnaWRlbnRpZmljYXRpb24gZGV2cm9udCDDqnRyZSBjaG9pc2lzIGRhbnMgbGEgY29uZmlndXJhdGlvbiBkZSBsXCdpbnZvY2F0ZXVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdFbnJlZ2lzdHJlbWVudCBkdSBtb2R1bGUgR2VuZXJpY0ludGVyZmFjZSBwb3VyIGxhIGNvdWNoZSBkXCdpbnZvY2F0aW9uIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdFbnJlZ2lzdHJlbWVudCBkdSBtb2R1bGUgR2VuZXJpY0ludGVyZmFjZSBwb3VyIGxhIGNvdWNoZSBkXCdpbnZvY2F0aW9uIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnRW5yZWdpc3RyZW1lbnQgZHUgbW9kdWxlIEdlbmVyaWNJbnRlcmZhY2UgcG91ciBsYSBjb3VjaGUgZFwnaW52b2NhdGlvbiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1dCBsZXMgw6l0YXRzIGRlIGTDqXBsb2llbWVudCBkYW5zIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1dCBsZXMgw6l0YXRzIGRcJ2luY2lkZW50cyBkYW5zIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ05vbWJyZSBtYXhpbXVtIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDoCBhZmZpY2hlciBkYW5zIGxlIHLDqXN1bHRhdCBkZSBjZXR0ZSBvcMOpcmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsZSBwZXJtZXR0YW50IGRlIHbDqXJpZmllciBsZSBncm91cGUgcmVzcG9uc2FibGUgZFwndW5lIGNsYXNzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bGUgcGVybWV0dGFudCBkZSB2w6lyaWZpZXIgbGUgZ3JvdXBlIHJlc3BvbnNhYmxlIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsZSBwZXJtZXR0YW50IGRlIGfDqW7DqXJlciBkZXMgc3RhdGlzdGlxdWVzIHN1ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTm9tIGR1IG1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtw6lybyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTm9tYnJlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDoCBhZmZpY2hlciBkYW5zIGNoYXF1ZSBwYWdlIGRcJ3VuIHLDqXN1bHRhdCBkZSByZWNoZXJjaGUgZGFucyBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05vbWJyZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gw6AgYWZmaWNoZXIgZGFucyBjaGFxdWUgcGFnZSBkXCd1biByw6lzdWx0YXQgZGUgcmVjaGVyY2hlIGRhbnMgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdMZXMgb2JqZXRzIMOgIHJlY2hlcmNoZXIsIGxlIG5vbWJyZSBkXCdlbnRyw6llcyBldCBsZXMgYXR0cmlidXRzIMOgIGFmZmljaGVyLiBMZXMgYXR0cmlidXRzIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZG9pdmVudCDDqnRyZSBleHBsaWNpdGVtZW50IHN0b2Nrw6lzIHZpYSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWdWUgZFwnZW5zZW1ibGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlcyBjYXTDqWdvcmllcyBkZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbGVzIGZpbHRyZXMgZGUgY29sb25uZSBkZSBsXCdhcGVyw6d1IGRlcyBwZXRpdHMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLiBSZW1hcnF1ZSA6IHNpIGxhIHZhbGV1ciAiQWN0aWYiIGVzdCBmaXjDqWUgw6AgMCwgbGVzIGFnZW50cyBuZSBwb3Vycm9udCBwYXMgbW9kaWZpZXIgbGVzIHBhcmFtw6h0cmVzIGRlIGNlIGdyb3VwZSBkYW5zIGxldXJzIHByw6lmw6lyZW5jZXMgcGVyc29ubmVsbGVzLCBtYWlzIGxlcyBhZG1pbmlzdHJhdGV1cnMgcG91cnJvbnQgdG91am91cnMgbW9kaWZpZXIgbGVzIHBhcmFtw6h0cmVzIGF1IG5vbSBkXCd1biBhdXRyZSB1dGlsaXNhdGV1ci4gVXRpbGlzZXogXCdQcmVmZXJlbmNlR3JvdXBcJyBwb3VyIGNvbnRyw7RsZXIgZGFucyBxdWVsbGUgem9uZSBjZXMgcGFyYW3DqHRyZXMgZG9pdmVudCDDqnRyZSBhZmZpY2jDqXMgZGFucyBsXCdpbnRlcmZhY2UgdXRpbGlzYXRldXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxhIGNvdWxldXIgZGVzIMOpdGF0cyBkZSBkw6lwbG9pZW1lbnQgZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbGVzIMOpdGF0cyBkZSBkw6lwbG9pZW1lbnQgZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxcJ2V4ZW1wbGUgZGUgZ3JvdXBlcyBkZSBwZXJtaXNzaW9uIGRlcyBhdHRyaWJ1dHMgZ8OpbsOpcmF1eCBkdSBjYXRhbG9ndWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgZHUgbW9kdWxlIGRlIG5vbXMgcG91ciBsZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgZHUgbW9kdWxlIGRlIG51bcOpcm90YXRpb24gZGVzIGNsYXNzZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnQWN0aXZlIGxhIGZvbmN0aW9uIGRcJ2FjdGlvbiBlbiBibG9jIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gdW5pcXVlbWVudCBwb3VyIGxlcyBncm91cGVzIHLDqXBlcnRvcmnDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIGR1IG1vZHVsZSBkZSBjaGHDrm5lIGRlIHZlcnNpb24gcG91ciBsZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIGR1IG1vZHVsZSBkZSBsYSBib8OudGUgw6Agb3V0aWxzIGR1IG1vZMOobGUgZGUgY2hhw65uZSBkZSB2ZXJzaW9uIHBvdXIgbGVzIGNsYXNzZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsZSBkw6ljbGVuY2hldXIgZGUgdmVyc2lvbiBwb3VyIGxlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnRXjDqWN1dGUgbFwnYWN0aW9uIGNvbmZpZ3Vyw6llIHBvdXIgY2hhcXVlIMOpdsOobmVtZW50ICjDoCB0aXRyZSBkZSBkZW1hbmRldXIpIHBvdXIgbGVzIHNlcnZpY2VzIFdlYiBjb25maWd1csOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0dyb3VwZSBkZSBwZXJtaXNzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCdhY3Rpb24gZFwnYXR0YWNoZW1lbnQgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZFwnYXJib3Jlc2NlbmNlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZSB6b29tIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRcJ2Fqb3V0IGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBlbiB2cmFjIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlIG1vZGlmaWNhdGlvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F0dHJpYnV0ICVzIG1pcyDDoCBqb3VyIGRlICIlcyIgw6AgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkXCdpbXByZXNzaW9uIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbMOoZ2VzIHJlcXVpcyBwb3VyIHN1cHByaW1lciBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1JlY2hlcmNoZXIgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIGF1dG9tYXRpcXVlbWVudCBsXCfDqXRhdCBkXCdpbmNpZGVudCBkXCd1biBDSSBsb3JzcXVcJ3VuIHRpY2tldCBlc3QgbGnDqSDDoCB1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCfDqXRhdCBkZSBkw6lwbG9pZW1lbnQgZGFucyBsXCfDqWNyYW4gZFwnZW5zZW1ibGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ8OpdGF0IGRlIGxcJ2luY2lkZW50IGRhbnMgbFwnw6ljcmFuIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcXVpIHBlcm1ldCBkZSBsaWVyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIMOgIHVuIGF1dHJlIG9iamV0IGRhbnMgbGEgdnVlIHpvb20gZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBhY2PDqWRlciDDoCBsXCdoaXN0b3JpcXVlIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIGFjY8OpZGVyIMOgIGxcJ2hpc3RvcmlxdWUgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIHN1cHByaW1lciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIHNhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBhZmZpY2hlciBsZXMgbGllbnMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzb3VzIGZvcm1lIGRcJ2FyYm9yZXNjZW5jZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgZHVwbGlxdWVyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIGR1cGxpcXVlciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBtb2RpZmllciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciByZXZlbmlyIMOgIGxhIHZ1ZSB6b29tIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBpbXByaW1lciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBlcm1ldHRhbnQgZGUgem9vbWVyIHN1ciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIGxcJ2hpc3RvcmlxdWUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiAob3JkcmUgaW52ZXJzZSkgZGFucyBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0xhIGNhdMOpZ29yaWUgcGFyIGTDqWZhdXQgcXVpIGVzdCBhZmZpY2jDqWUgc2kgYXVjdW5lIG5cJ2VzdCBzw6lsZWN0aW9ubsOpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0xcJ2lkZW50aWZpYW50IGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLCBwYXIgZXhlbXBsZSBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gTGEgdmFsZXVyIHBhciBkw6lmYXV0IGVzdCBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdEw6ljbGVuY2hlIGF1dG9tYXRpcXVlbWVudCBsXCdpbnZva2VyIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0V4cHJlc3Npb24gZGUgbGEgY2hhw65uZSBkZSBsYSB2ZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gQ2hhw65uZSBkZSBjYXJhY3TDqHJlcyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnRMOpY2xlbmNoZXVyIGRlIHZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1NpIGxcJ2V4w6ljdXRpb24gZGUgQ29uZmlnSXRlbUFDTCBwZXV0IMOqdHJlIMOpdml0w6llIGVuIHbDqXJpZmlhbnQgbGVzIGTDqXBlbmRhbmNlcyBkZXMgY2hhbXBzIG1pcyBlbiBjYWNoZS4gQ2VsYSBwZXV0IGFtw6lsaW9yZXIgbGVzIHRlbXBzIGRlIGNoYXJnZW1lbnQgZGVzIGZvcm11bGFpcmVzLCBtYWlzIGRvaXQgw6p0cmUgZMOpc2FjdGl2w6kgc2kgbGVzIG1vZHVsZXMgQUNMTSBkb2l2ZW50IMOqdHJlIHV0aWxpc8OpcyBwb3VyIGxlcyB0eXBlcyBJVFNNQ29uZmlnSXRlbSBldCBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnUXVlbGxlcyBzb250IGxlcyBpbmZvcm1hdGlvbnMgZ8OpbsOpcmFsZXMgcXVpIGZpZ3VyZW50IGRhbnMgbFwnZW4tdMOqdGUgPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdtb25kaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1Y3RpZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHLDqXByb2R1Y3RpZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVjdGlmJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVIDogMTcsNSBwb3VjZXMgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVIDogMjEgcG91Y2VzICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VSA6IDI2LDI1IHBvdWNlcyAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VSA6IDMxLDUgcG91Y2VzICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnUmFjayAxOSBwb3VjZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVIDogMSw3NSBwb3VjZXMgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVSA6IDM1IHBvdWNlcyAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnQ3LDqW1haWxsw6hyZSBkZSAyMSBwb3VjZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVIDogMzgsNSBwb3VjZXMgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICdDcsOpbWFpbGzDqHJlIGRlIDIzIHBvdWNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgcG91Y2VzICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVIDogNDIgcG91Y2VzICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVIDogNDcsMjUgcG91Y2VzICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVIDogMyw1IHBvdWNlcyAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVSA6IDUyLjUgcG91Y2VzICgxMzMuMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwb3VjZXMgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1UgOiA1Nyw3NSBwb3VjZXMgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHBvdWNlcyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VSA6IDYzIHBvdWNlcyAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHBvdWNlcyAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVUgOiA2OC4yNSBwb3VjZXMgKDE3My4zNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVSA6IDUsMjUgcG91Y2VzICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVSA6IDczLDUgcG91Y2VzICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHBvdWNlcyAoMTEwMCBtbSkgOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VSA6IDc4Ljc1IHBvdWNlcyAoMjAwLjAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHBvdWNlcyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFUgOiA4NCBwb3VjZXMgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VSA6IDcgcG91Y2VzICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VSA6IDgsNzUgcG91Y2VzICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VSA6IDEwLDUgcG91Y2VzICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1UgOiAxMiwyNSBwb3VjZXMgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VSA6IDE0IHBvdWNlcyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVIDogMTUsNzUgcG91Y2VzICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdDb21wdGFiaWxpdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQXR0cmlidXRpb24gZFwnYWRyZXNzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmF0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ1TDqWzDqXBob25lIGFuYWxvZ2lxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUeXBlIGRcJ2FwcGFyZWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQ2FwYWNpdMOpIGRlIGxhIGJhdHRlcmllIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVHlwZSBkZSBiYXR0ZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0LDonRpbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmYWNlIGRlIGJ1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnVU5JVMOJIENFTlRSQUxFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NsYXNzZSBkXCd1bml0w6kgY2VudHJhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0NhcGFjaXTDqSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnQ2FwYWNpdMOpIHBhciBjYXJ0ZSBncmFwaGlxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIGxhIGNhcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnTGVjdGV1ciBkZSBjYXJ0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVHlwZSBkZSBjYXJ0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdHMgZGUgY2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ0xvZ2ljaWVsIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdDYXTDqWdvcmllIGRlIGNsaWVudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnSG9ybG9nZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVml0ZXNzZSBkXCdob3Jsb2dlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0cyBkZSBzaWduYXR1cmUgZGUgY29kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVMOpbMOpcGhvbmUgZGUgY29uZsOpcmVuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdBY2NvcmQgZGUgY29uc3VsdGF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdDb250YWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdDb250YWN0ZXIgbGUgZGlzdHJpYnV0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBkZXMgY29udGVuZXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0NvbnRyYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1R5cGUgZGUgY29udHJhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0R1csOpZSBkdSBjb250cmF0IGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0R1csOpZSBkdSBjb250cmF0IGp1c3F1XCfDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdUw6lsw6lwaG9uZSBzYW5zIGZpbCAodMOpbMOpcGhvbmUgREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnVW5pdMOpIGRlIGNvw7t0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnTm9tYnJlIGRlIGxpY2VuY2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdEYXRlIGRlIGNyw6lhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnU3VwcG9ydCBzdXIgbWVzdXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFLDqXNlcnbDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnU2VydmV1ciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdGUgZGUgbGEgZmFjdHVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0ZSBkZSBsXCdhcnLDqnTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0ZSBkdSBtYW5kYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRGF0ZSBkZSBwdWJsaWNhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnQnVyZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0cyBkZSBzaWduYXR1cmUgZGUgZG9jdW1lbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnUmFjayBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdDZXJ0aWZpY2F0cyBkZSBjb3VycmllciDDqWxlY3Ryb25pcXVlIChjZXJ0aWZpY2F0cyBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0NvbnRyYXQgZGUgdHJhdmFpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0FkcmVzc2UgSVAgZmluYWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRmluIGRlIGxcJ2FpZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdEYXRlIGRcJ2V4cGlyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0Rpc3F1ZSBkdXIgZXh0ZXJuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ1BhcmUtZmV1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdTdG9ja2FnZSBkXCfDqW5lcmdpZSBwYXIgdm9sYW50IGRcJ2luZXJ0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYWN0ZXVyIGRlIGZvcm1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdBY2NvcmQgZGUgZnJhbmNoaXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnTG9naWNpZWxzIGdyYXR1aXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF0aW9ucyBnw6luw6lyYWxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0NhcnRlcyBncmFwaGlxdWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdDYXJ0ZSBncmFwaGlxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdNYXTDqXJpZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2TDqGxlIGRlIG1hdMOpcmllbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdQb2lkcyBkdSBtYXTDqXJpZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0Nhc3F1ZSBkXCfDqWNvdXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9jb2xlIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0dlc3Rpb24gZGVzIGlkZW50aXTDqXMgZXQgZGVzIGFjY8OocyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTnVtw6lybyBkXCdpbnZlbnRhaXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnQ2/Du3RzIGRcJ2ludmVzdGlzc2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnTnVtw6lybyBkZSBsYSBmYWN0dXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnQ2xhdmllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdNb25pdGV1ciBMQ0QgKMOpY3JhbiDDoCBjcmlzdGF1eCBsaXF1aWRlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0ZXVyIMOgIExFRCAoZGlvZGUgw6lsZWN0cm9sdW1pbmVzY2VudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1TDqWzDqXBob25lIGZpeGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnT3JkaW5hdGV1ciBwb3J0YWJsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnQ291Y2hlIDEgOiBDb3VjaGUgcGh5c2lxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnQ291Y2hlIDIgOiBDb3VjaGUgbGlhaXNvbiBkZSBkb25uw6llcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnQ291Y2hlIDMgOiBDb3VjaGUgcsOpc2VhdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdDb3VjaGUgMyA6IENvdWNoZSByw6lzZWF1IChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnQ291Y2hlIDQgOiBDb3VjaGUgdHJhbnNwb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdDb3VjaGUgNSA6IGNvdWNoZSBzZXNzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0NvdWNoZSA2IDogY291Y2hlIGRlIHByw6lzZW50YXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdDb3VjaGUgNyA6IENvdWNoZSBhcHBsaWNhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0IGRlIGJhaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdBY2NvcmQgZGUgbGljZW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnQ2zDqSBkZSBsaWNlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1R5cGUgZGUgbGljZW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnUMOpcmlvZGUgZGUgbGljZW5jZSBkdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ1DDqXJpb2RlIGRlIGxpY2VuY2UganVzcXVcJ8OgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdCYXR0ZXJpZSBhdSBwaG9zcGhhdGUgZGUgZmVyIGxpdGhpw6kgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdCYXR0ZXJpZSBhdSBsaXRoaXVtLWlvbiAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0NvbnRyYXQgZGUgcHLDqnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ1NpdHXDqSDDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdGYWJyaWNhbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ0NhcGFjaXTDqSBkZSBjaGFyZ2UgbWF4aW1hbGUgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ03DqW1vaXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVHlwZSBkZSBtw6ltb2lyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIHTDqWzDqXBob25lIG1vYmlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbGUvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2TDqGxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpcHRpb24gZHUgbW9kw6hsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSw6lzb2x1dGlvbiBkdSBtb25pdGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdUYWlsbGUgZHUgbW9uaXRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdTb3VyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1LDqXNlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSW5mb3JtYXRpb25zIHN1ciBsZSByw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbnMgc3VyIGxlIHLDqXNlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ0NvdWNoZSByw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWUgbmlja2VsLWNhZG1pdW0gKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWUgbmlja2VsLWh5ZHJ1cmUgbcOpdGFsbGlxdWUgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0FjY29yZCBkZSBub24tZGl2dWxnYXRpb24gKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdDYXJuZXQgZGUgbm90ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdOb21icmUgZGUgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ05vbWJyZSBkZSBtb2R1bGVzIFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdOb21icmUgZGUgY2FydGVzIGdyYXBoaXF1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0ZXVyIE9MRUQgKGRpb2RlIMOpbGVjdHJvbHVtaW5lc2NlbnRlIG9yZ2FuaXF1ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnRnJhaXMgZGUgZm9uY3Rpb25uZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTnVtw6lybyBkZSBjb21tYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0F1dHJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnU29ydGllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdBY2NvcmQgZGUgcGFydGVuYXJpYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIHTDqWzDqXBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUeXBlIGRlIHTDqWzDqXBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnQ8WTdXJzIHBoeXNpcXVlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ0ZvdXJuaXR1cmUgZFwnw6luZXJnaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdBY2hldMOpIMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdQcm9mb25kZXVyIGR1IHJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbml0w6lzIGRlIHJhY2sgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdDaGFtYnJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnQ2FydGUgU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdHMgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0NvbnRyYXQgZGUgdmVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVMOpbMOpcGhvbmUgc2F0ZWxsaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIHBsb21iLWFjaWRlIHNjZWxsw6llIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnTnVtw6lybyBkZSBzw6lyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnTG9naWNpZWwgc2VydmV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0FjY29yZCBkZSBzZXJ2aWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnw4l0aXF1ZXR0ZSBkZSBzZXJ2aWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1R5cGUgZGUgcHJpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdMb2dpY2llbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0ludGVydmVuYW50cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnQWRyZXNzZSBJUCBkZSBkw6lwYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdTdG9ja2FnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1BhcnRpdGlvbiBkZSBzdG9ja2FnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0ZpbGlhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1LDqXN1bcOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnQ2xpZW50IGzDqWdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnRmlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdUb3RhbCBSQU0gZGUgbGEgY2FydGUgZ3JhcGhpcXVlIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdUb3RhbCBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRldXIgw6Agw6ljcmFuIHRhY3RpbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdIdWIgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnQ2FzcXVlIFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1TDqWzDqXBob25lIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/fr_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZyX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEb25uw6llcyBnw6luw6lyYWxlcyBkZSBmb25jdGlvbm5lbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZG9ubsOpZXMgZGUgcmVxdcOqdGUgZW50cmFudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZG9ubsOpZXMgZGUgcsOpcG9uc2Ugc29ydGFudGVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTW9kaWZpZXIgbGEgZMOpZmluaXRpb24gZFwndW5lIGNsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnTW9kaWZpZXIgbGEgZMOpZmluaXRpb24gZGVzIHLDtGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ0xlcyBlbnNlbWJsZXMgZGUgY2xhc3NlcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdJY2ksIHZvdXMgcG91dmV6IGltcG9ydGVyIGRlcyBjbGFzc2VzIFJlYWR5MkltcG9ydCBxdWkgcHLDqXNlbnRlbnQgbm9zIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBsZXMgcGx1cyBjb3VyYW50cy4gVmV1aWxsZXogbm90ZXIgcXVlIGNlcnRhaW5lcyBjb25maWd1cmF0aW9ucyBzdXBwbMOpbWVudGFpcmVzIHBldXZlbnQgw6p0cmUgbsOpY2Vzc2FpcmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdNaXNlIMOgIGpvdXIgZGVzIGVudGl0w6lzIGV4aXN0YW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdJbXBvcnRlciBsZXMgcGFxdWV0cyBkZSBjbGFzc2VzIGRlIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc3NlIGRcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdSw7RsZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cmVzIHBvdXIgbGVzIGNsYXNzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnQ2hvaXNpc3NleiB1bmUgY2xhc3NlIHBvdXIgY3LDqWVyIHVuIG5vdXZlbCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ8OJdGF0IGR1IGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0xpZXIgw6AgdW4gYXV0cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ051bcOpcm8gZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gaW52YWxpZGUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdMZSBudW3DqXJvIGRcJ3VuIGF1dHJlIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIMOgIGxpZXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVm91bGV6LXZvdXMgdnJhaW1lbnQgc3VwcHJpbWVyIGNldCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiA/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0xlIG5vbSBkZSBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0xlIG5vbSBlc3QgZMOpasOgIHV0aWxpc8OpIHBhciBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhdmVjIGxlIG51bcOpcm8gc3VpdmFudCA6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnTnVtw6lybyBkZSB2ZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOdW3DqXJvIGRlIHZlcnNpb24gZGUgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTGUgbnVtw6lybyBkZSB2ZXJzaW9uIGVzdCBkw6lqw6AgdXRpbGlzw6kgcGFyIGxlcyBDb25maWdJdGVtcyBhdmVjIGxlKHMpIG51bcOpcm8ocykgc3VpdmFudChzKSA6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfDiXRhdCBkZSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICfDiXRhdCBkXCdpbmNpZGVudCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yaXF1ZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZW51IGRlIGxcJ2hpc3RvcmlxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0RhdGUgZGUgY3LDqWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Z1ZSBkw6l0YWlsbMOpZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gcGFyIHBhZ2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ0F1Y3VuZSBkb25uw6llIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG5cJ2Egw6l0w6kgdHJvdXbDqWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU8OpbGVjdGlvbm5lciBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdMYW5jZXIgbGEgcmVjaGVyY2hlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0NoZXJjaGVyIMOpZ2FsZW1lbnQgZGFucyBsZXMgdmVyc2lvbnMgcHLDqWPDqWRlbnRlcyA/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcG91ciBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTml2ZWF1IGRlIHByb2ZvbmRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tIGF2YW50L2FycmnDqHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ05pdmVhdSBkZSBsaWVucyBtYXhpbXVtIGF0dGVpbnQgcG91ciBDb25maWdJdGVtICEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbnMgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnw4l0YXQgYWN0dWVsIGRlIGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnw4l0YXQgYWN0dWVsIGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ0Rlcm5pw6hyZXMgbW9kaWZpY2F0aW9ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdEZXJuacOocmVzIG1vZGlmaWNhdGlvbnMgZWZmZWN0dcOpZXMgcGFyJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVm9zIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdSZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICdUeXBlIGRcJ29iamV0JzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmlsdHJlciBwYXIgdHlwZSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0xlcyBjbGFzc2VzIHN1aXZhbnRlcyBzZXJvbnQgaW1wb3J0w6llcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdMZXMgcsO0bGVzIHN1aXZhbnRzIHNlcm9udCBpbXBvcnTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnTm90ZXogcXVlIGxlcyBjaGFtcHMgZHluYW1pcXVlcyBldCBsZXMgY2xhc3NlcyBHZW5lcmFsQ2F0YWxvZyBjb3JyZXNwb25kYW50cyBzZXJvbnQgw6lnYWxlbWVudCBjcsOpw6lzIGV0IHF1XCdpbCBuXCd5IGEgcGFzIGRlIHN1cHByZXNzaW9uIGF1dG9tYXRpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1ZvdWxlei12b3VzIHBvdXJzdWl2cmUgPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdCZXNvaW4gZGUgY2xhc3NlcyBkXCdleGVtcGxlcyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0xhIGTDqWZpbml0aW9uIG5cJ2VzdCBwYXMgdW4gaGFjaGFnZSBZQU1MIHZhbGlkZS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdWdWUgZFwnZW5zZW1ibGU6IMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdBdWN1biBJRCBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnVm91cyBkZXZleiBzw6lsZWN0aW9ubmVyIGF1IG1vaW5zIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdWb3VzIG5cJ2F2ZXogcGFzIGxlIGRyb2l0IGRlIG1vZGlmaWVyIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdBdWN1bmUgZMOpZmluaXRpb24gZMOpZmluaWUgcG91ciBsYSBjbGFzc2UgJXMgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnTFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gIiVzIiBuXCdhIHBhcyDDqXTDqSB0cm91dsOpIGRhbnMgbGEgYmFzZSBkZSBkb25uw6llcyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnSW1wb3NzaWJsZSBkZSBzdXBwcmltZXIgbFwnSUQgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gJXMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnQXVjdW5lIHZlcnNpb24gdHJvdXbDqWUgcG91ciBsXCdJRCBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAlcyAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0F1Y3VuIElEIGRcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLCBkZSBkdXBsaWNhdGlvbiBvdSBkZSBjbGFzc2UgblwnYSDDqXTDqSBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gYWNjw6hzIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCdoaXN0b3JpcXVlLCBhdWN1biBJRCBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCdoaXN0b3JpcXVlLCBhdWN1biBhY2PDqHMgblwnYSDDqXTDqSBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTm91dmVsIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05vdXZlbGxlIHZlcnNpb24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ8OJdGF0IGRlIGTDqXBsb2llbWVudCBtaXMgw6Agam91ciAobm91dmVhdT0lcywgYW5jaWVuPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfDiXRhdCBkZSBsXCdpbmNpZGVudCBtaXMgw6Agam91ciAobm91dmVhdT0lcywgYW5jaWVuPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ8OJbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIChJRD0lcykgc3VwcHJpbcOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGllciDDoCAlcyAodHlwZT0lcykgYWpvdXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGllciDDoCAlcyAodHlwZT0lcykgc3VwcHJpbcOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEw6lmaW5pdGlvbiBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBtaXNlIMOgIGpvdXIgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05vbSBtaXMgw6Agam91ciAobm91dmVhdT0lcywgYW5jaWVuPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnVlICVzIG1pcyDDoCBqb3VyIGRlICIlcyIgw6AgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaW9uICVzIHN1cHByaW3DqWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gSUQgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gb3UgZGUgdmVyc2lvbiBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0ltcG9zc2libGUgZFwnYWZmaWNoZXIgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24sIGF1Y3VuIGFjY8OocyBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnTFwnSUQgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gJXMgblwnYSBwYXMgw6l0w6kgdHJvdXbDqSBkYW5zIGxhIGJhc2UgZGUgZG9ubsOpZXMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ0ltcHJpbcOpIHBhciAlcyDDoCAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUsOpZsOpcmVuY2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdJRCBkZSBjbGFzc2UgaW52YWxpZGUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0F1Y3VuIElEIGRlIGNsYXNzZSBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnQXVjdW5zIGRyb2l0cyBkXCdhY2PDqHMgcG91ciBjZXR0ZSBjbGFzc2UgblwnYSDDqXTDqSBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnQXVjdW5zIHLDqXN1bHRhdHMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1LDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnSW1wb3NzaWJsZSBkXCdhZmZpY2hlciBsXCfDqWzDqW1lbnQsIGF1Y3VucyBkcm9pdHMgZFwnYWNjw6hzIHBvdXIgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBpbnRyb3V2YWJsZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ0F1Y3VuZSB2ZXJzaW9uIHRyb3V2w6llICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcMOpcmF0aW9ubmVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhdmVydGlzc2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0xcJ8OpdGF0IGRlIGTDqXBsb2llbWVudCBkZSBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdMXCfDqXRhdCBkXCdpbmNpZGVudCBkZSBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdQYXMgZGUgcGVybWlzc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0cmUgbm9uIHZhbGlkZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYXJhbcOodHJlcyBkZSByZWNoZXJjaGUgbm9uIHZhbGlkZXMgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ0FmZmljaGVyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwZSBkXCfDqXRhdCBkdSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwZSBkXCfDqXRhdCBhY3R1ZWwgZGUgbFwnaW5jaWRlbnQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWN0aW9ucyBkZSBjbGFzc2UgcG91ciBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU8OpbGVjdGlvbm5lciB1bmUgb3UgcGx1c2lldXJzIGNsYXNzZXMgcG91ciByZXN0cmVpbmRyZSBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHPDqWxlY3Rpb25uYWJsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWN0aW9ucyBkZSBjbGFzc2UgcG91ciBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1PDqWxlY3Rpb25uZXIgdW5lIG91IHBsdXNpZXVycyBjbGFzc2VzIHBvdXIgcmVzdHJlaW5kcmUgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzw6lsZWN0aW9ubmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pcXVlIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGljIChWZXJzaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXBlIGRlIHLDqWbDqXJlbmNlbWVudCBkZXMgbGllbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnU2kgY2UgbGllbiBzXCdhcHBsaXF1ZSDDoCBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBvdSDDoCBsYSB2ZXJzaW9uIHN0YXRpcXVlIGRlIGxcJ29iamV0IGRlIHLDqWbDqXJlbmNlLiBMZSBjYWxjdWwgZGUgbFwnw6l0YXQgYWN0dWVsIGRlIGxcJ2luY2lkZW50IG5cJ2VzdCBlZmZlY3R1w6kgcXVlIHBvdXIgbGVzIGxpZW5zIGR5bmFtaXF1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU8OpbGVjdGlvbm5leiBsXCdhdHRyaWJ1dCBwYXIgbGVxdWVsIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gc2Vyb250IHJlY2hlcmNow6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0xhIHN0cnVjdHVyZSBkZSBiYXNlIG5cJ2VzdCBwYXMgdmFsaWRlLiBWZXVpbGxleiBmb3VybmlyIHVuIGhhY2hhZ2UgYXZlYyBkZXMgZG9ubsOpZXMgYXUgZm9ybWF0IFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnSWwgZXN0IG7DqWNlc3NhaXJlIGRlIGNvbW1lbmNlciBsYSBjaGHDrm5lIFlBTUwgcGFyICItLS0iLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdJbXBvc3NpYmxlIGRlIHB1cmdlciBsYSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdBdWN1biBjaGFtcCBkeW5hbWlxdWUgcGVydGluZW50IG5cJ2Egw6l0w6kgdHJvdXbDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0ltcG9zc2libGUgZFwnaW5zw6lyZXIgZGFucyBsYSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc8OpcsOpIDAgbGlnbmVzIGRhbnMgbGEgdGFibGUgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ1F1YW50aXTDqSBtYXhpbWFsZSBwb3VyIHVuIMOpbMOpbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICdJbXBvcnRlci9leHBvcnRlciBkZXMgcGnDqGNlcyBqb2ludGVzIChlbiB0YW50IHF1ZSBkZXJuacOocmVzIGVudHLDqWVzIHBhciBsaWduZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdDaGHDrm5lIGRlIHZlcnNpb24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJyZXVyIGRlIHN5bmNocm9uaXNhdGlvbiBkZXMgZMOpZmluaXRpb25zLiBWZXVpbGxleiB2w6lyaWZpZXIgbGUgam91cm5hbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdWb3VzIGF2ZXogZGVzIGTDqWZpbml0aW9ucyBJVFNNQ29uZmlnSXRlbSBxdWkgbmUgc29udCBwYXMgc3luY2hyb25pc8OpZXMuIFZldWlsbGV6IGTDqXBsb3llciB2b3MgY2hhbmdlbWVudHMgZGUgY2hhbXBzIGR5bmFtaXF1ZXMgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnTWFpbnRlbmFuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5pZmnDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdFbiByw6lwYXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0aXLDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZ1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnVnVlIGRcJ2Vuc2VtYmxlIGV0IGNvbmZpcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRhdGlvbiBkZSBjbGFzc2VzL3LDtGxlcyBldCBkZSBsZXVycyBjaGFtcHMgY29ubmV4ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdVbmUgZXJyZXVyIHNcJ2VzdCBwcm9kdWl0ZSBsb3JzIGRlIGxcJ2ltcG9ydGF0aW9uIGRlIGxhIGNsYXNzZS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIENhY2jDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gTW9udHLDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWV0IGRcJ8OpdGVuZHJlIGxlcyBjb25kaXRpb25zIGRlIHJlY2hlcmNoZSBkYW5zIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50LiBHcsOiY2Ugw6AgY2V0dGUgZm9uY3Rpb25uYWxpdMOpLCB2b3VzIHBvdXZleiByZWNoZXJjaGVyLCBwYXIgZXhlbXBsZSwgbGUgbm9tIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGF2ZWMgZGVzIGNvbmRpdGlvbnMgdGVsbGVzIHF1ZSAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtZXQgZFwnw6l0ZW5kcmUgbGVzIGNvbmRpdGlvbnMgZGUgcmVjaGVyY2hlIGRhbnMgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50LiBBdmVjIGNldHRlIGZvbmN0aW9ubmFsaXTDqSwgdm91cyBwb3V2ZXogcmVjaGVyY2hlciBwYXIgZXhlbXBsZSBsZSBub20gZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gYXZlYyBkZXMgY29uZGl0aW9ucyB0ZWxsZXMgcXVlICIoKmtleTEqJiYqa2V5MiopIiBvdSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ8OJbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBhdHRyaWJ1w6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidcOpcyDDoCB1biBjbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidcOpcyDDoCB1biB1dGlsaXNhdGV1ciBjbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ1BhcmFtw6h0cmVzIGRlIGxhIENNREIgKGJhc2UgZGUgZG9ubsOpZXMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1bDqXJpZmllciBsYSBwcsOpc2VuY2UgZFwndW4gbm9tIHVuaXF1ZSB1bmlxdWVtZW50IGRhbnMgbGEgbcOqbWUgY2xhc3NlIGRlIENvbmZpZ0l0ZW0gKCJjbGFzcyIpIG91IGdsb2JhbGVtZW50ICgiZ2xvYmFsIiksIGNlIHF1aSBzaWduaWZpZSBxdWUgY2hhcXVlIENvbmZpZ0l0ZW0gZXhpc3RhbnQgZXN0IHByaXMgZW4gY29tcHRlIGxvcnMgZGUgbGEgcmVjaGVyY2hlIGRlIGRvdWJsb25zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnQ2hvaXNpc3NleiB1biBtb2R1bGUgcG91ciBhcHBsaXF1ZXIgdW4gc2Now6ltYSBkZSBkw6lub21pbmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnQ2hvaXNpc3NleiB1biBtb2R1bGUgcG91ciBhcHBsaXF1ZXIgdW4gc3lzdMOobWUgZGUgbnVtw6lyb3RhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnQ2hvaXNpc3NleiB1biBtb2R1bGUgcG91ciBhcHBsaXF1ZXIgdW4gc2Now6ltYSBkZSBjaGHDrm5lIGRlIHZlcnNpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnU8OpbGVjdGlvbm5leiBsZXMgYXR0cmlidXRzIHF1aSBkw6ljbGVuY2hlbnQgbGEgY3LDqWF0aW9uIGRcJ3VuZSBub3V2ZWxsZSB2ZXJzaW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdTw6lsZWN0aW9ubmV6IGxlcyBjYXTDqWdvcmllcyDDoCBhZmZlY3RlciDDoCBjZXR0ZSBjbGFzc2UgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cmVzIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbGEgY29sb25uZSBwb3VyIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0NvbG9ubmVzIHBvdXZhbnQgw6p0cmUgZmlsdHLDqWVzIGRhbnMgbGEgdnVlIGRcJ2Vuc2VtYmxlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50LiBSZW1hcnF1ZSA6IHNldWxzIGxlcyBhdHRyaWJ1dHMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBldCBsZXMgY2hhbXBzIGR5bmFtaXF1ZXMgKER5bmFtaWNGaWVsZF9OYW1lWCkgc29udCBhdXRvcmlzw6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ8OJbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGFqb3V0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gw6lkaXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsZSBkXCfDqXbDqW5lbWVudCBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBxdWkgcGVybWV0IGxcJ2VucmVnaXN0cmVtZW50IGRhbnMgbFwnaGlzdG9yaXF1ZSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTW9kdWxlIGRcJ8OpdsOpbmVtZW50IHBvdXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBxdWkgbWV0IMOgIGpvdXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBlbiBmb25jdGlvbiBkZSBsZXVyIGTDqWZpbml0aW9uIGFjdHVlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0hpc3RvcmlxdWUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0ltcHJlc3Npb24gZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnVnVlIGTDqXRhaWxsw6llIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0FyYm9yZXNjZW5jZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdMZXMgQ29uZmlnSXRlbXMgZGVzIGNsYXNzZXMgc3VpdmFudGVzIG5lIHNlcm9udCBwYXMgc3RvY2vDqXMgc3VyIGxlIHNlcnZldXIgRWxhc3RpY3NlYXJjaC4gUG91ciBhcHBsaXF1ZXIgY2VsYSBhdXggQ0kgZXhpc3RhbnRzLCBsYSBtaWdyYXRpb24gZGVzIENJIGRvaXQgw6p0cmUgZXjDqWN1dMOpZSB2aWEgbGEgY29uc29sZSwgYXByw6hzIGF2b2lyIGNoYW5nw6kgY2V0dGUgb3B0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdMZXMgQ29uZmlnSXRlbXMgYXZlYyBsZXMgw6l0YXRzIGRlIGTDqXBsb2llbWVudCBzdWl2YW50cyBuZSBzZXJvbnQgcGFzIHN0b2Nrw6lzIHN1ciBsZSBzZXJ2ZXVyIEVsYXN0aWNzZWFyY2guIFBvdXIgYXBwbGlxdWVyIGNlbGEgYXV4IENJIGV4aXN0YW50cywgbGEgbWlncmF0aW9uIGRlcyBDSSBkb2l0IMOqdHJlIGV4w6ljdXTDqWUgdmlhIGxhIGNvbnNvbGUsIGFwcsOocyBhdm9pciBjaGFuZ8OpIGNldHRlIG9wdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnTGltaXRlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnTGltaXRlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBwYXIgcGFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0Jhc2UgZGUgZG9ubsOpZXMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ8OJbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG1vZHVsZSBlbiB2cmFjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiByZWNoZXJjaGUgcm91dGV1ciBiYWNrZW5kIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3LDqWVyIGV0IGfDqXJlciBsZXMgZMOpZmluaXRpb25zIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3LDqWUgZGVzIHRpY2tldHMgcG91ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIMOgIGRlcyBtb21lbnRzIHByw6ljaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0xlcyBjbGllbnRzIHBldXZlbnQgY29uc3VsdGVyIGxcJ2hpc3RvcmlxdWUgZGVzIHZlcnNpb25zIGRlIGxcJ0lDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdMZXMgY2xpZW50cyBvbnQgbGEgcG9zc2liaWxpdMOpIGRlIHBhc3NlciBtYW51ZWxsZW1lbnQgZFwndW5lIHZlcnNpb24gaGlzdG9yaXF1ZSBkZSBDSSDDoCBsXCdhdXRyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEb25uw6llcyBwYXIgZMOpZmF1dCDDoCB1dGlsaXNlciBzdXIgbFwnYXR0cmlidXQgZGUgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLiBFeGVtcGxlIDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTIgOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRG9ubsOpZXMgcGFyIGTDqWZhdXQgw6AgdXRpbGlzZXIgc3VyIGxcJ2F0dHJpYnV0IGRlIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4gRXhlbXBsZSA6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zIDsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRMOpZmluaXIgbGVzIGFjdGlvbnMgcG91ciBsZXNxdWVsbGVzIHVuIGJvdXRvbiBkZSBjb25maWd1cmF0aW9uIGVzdCBkaXNwb25pYmxlIGRhbnMgbGUgd2lkZ2V0IGRlcyBvYmpldHMgbGnDqXMgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gVmV1aWxsZXogbm90ZXIgcXVlIGNlcyBhY3Rpb25zIGRvaXZlbnQgYXZvaXIgZW5yZWdpc3Ryw6kgbGVzIGZpY2hpZXJzIEpTIGV0IENTUyBzdWl2YW50cyA6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGV0IENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIHVuIHNjaMOpbWEgVGVtcGxhdGU6OlRvb2xraXQgcG91ciBsZXMgY2hhw65uZXMgZGUgdmVyc2lvbi4gVXRpbGlzw6kgdW5pcXVlbWVudCBzaSBsZSBtb2R1bGUgZGUgY2hhw65uZSBkZSB2ZXJzaW9uIGVzdCBkw6lmaW5pIHN1ciBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRMOpZmluaXIgdW4gZW5zZW1ibGUgZGUgY29uZGl0aW9ucyBzb3VzIGxlc3F1ZWxsZXMgdW4gY2xpZW50IGVzdCBhdXRvcmlzw6kgw6Agdm9pciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4gTGVzIGNvbmRpdGlvbnMgcGV1dmVudCDDqXZlbnR1ZWxsZW1lbnQgw6p0cmUgbGltaXTDqWVzIMOgIGNlcnRhaW5zIGdyb3VwZXMgZGUgY2xpZW50cy4gTGUgbm9tIGVzdCBsZSBzZXVsIGF0dHJpYnV0IG9ibGlnYXRvaXJlLiBTaSBhdWN1bmUgYXV0cmUgb3B0aW9uIG5cJ2VzdCBkb25uw6llLCB0b3VzIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gc2Vyb250IHZpc2libGVzIGRhbnMgY2V0dGUgY2F0w6lnb3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBhdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgc3VwcHJpbWVyIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSDDoCBsXCdhaWRlIGRlIGxcJ2ludGVyZmFjZSBnw6luw6lyaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBhdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgb2J0ZW5pciBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gw6AgbFwnYWlkZSBkZSBsXCdpbnRlcmZhY2UgZ8OpbsOpcmlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgYXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHJlY2hlcmNoZXIgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIMOgIGxcJ2FpZGUgZGUgbFwnaW50ZXJmYWNlIGfDqW7DqXJpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGF1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciBkw6lmaW5pciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gw6AgbFwnYWlkZSBkZSBsXCdpbnRlcmZhY2UgZ8OpbsOpcmlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0TDqWZpbml0IHVuIG1vZHVsZSBkZSB2dWUgZFwnZW5zZW1ibGUgcG91ciBhZmZpY2hlciBsYSBwZXRpdGUgdnVlIGRcJ3VuZSBsaXN0ZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0TDqWZpbml0IHNpIGxlcyDDqXRpcXVldHRlcyBkZSB0eXBlIGRlIGxpZW4gZG9pdmVudCDDqnRyZSBhZmZpY2jDqWVzIGRhbnMgbGVzIGNvbm5leGlvbnMgZGUgbsWTdWRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRMOpZmluaXQgZGVzIGV4cHJlc3Npb25zIHLDqWd1bGnDqHJlcyBpbmRpdmlkdWVsbGVtZW50IHBvdXIgY2hhcXVlIGNsYXNzZSBDb25maWdJdGVtIGFmaW4gZGUgdsOpcmlmaWVyIGxlIG5vbSBkdSBDb25maWdJdGVtIGV0IGRcJ2FmZmljaGVyIGxlcyBtZXNzYWdlcyBkXCdlcnJldXIgY29ycmVzcG9uZGFudHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGNvbG9ubmVzIGRpc3BvbmlibGVzIHBvdXIgbGVzIENJIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGVuIGZvbmN0aW9uIGRlIGxhIGNsYXNzZSBkdSBDSS4gQ2hhcXVlIGVudHLDqWUgZG9pdCDDqnRyZSBjb25zdGl0dcOpZSBkXCd1biBub20gZGUgY2xhc3NlIGV0IGRcJ3VuIHRhYmxlYXUgZGUgY2hhbXBzIGRpc3BvbmlibGVzIHBvdXIgbGEgY2xhc3NlIGNvcnJlc3BvbmRhbnRlLiBMZXMgZW50csOpZXMgZGUgY2hhbXBzIGR5bmFtaXF1ZXMgZG9pdmVudCByZXNwZWN0ZXIgbGUgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gcGFyIGTDqWZhdXQgcG91ciBsZSB0cmkgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ2F0dHJpYnV0IGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHBhciBkw6lmYXV0IHBvdXIgbGUgdHJpIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsZSByw6lzdWx0YXQgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ2F0dHJpYnV0IGRcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHBhciBkw6lmYXV0IHBvdXIgbGUgdHJpIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsZSByw6lzdWx0YXQgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBjZXR0ZSBvcMOpcmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnb3JkcmUgcGFyIGTDqWZhdXQgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4gVXAgOiBsZSBwbHVzIGFuY2llbiBlc3QgZW4gaGF1dC4gRW4gYmFzIDogbGUgcGx1cyByw6ljZW50IGVuIGhhdXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdvcmRyZSBwYXIgZMOpZmF1dCBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4gRW4gaGF1dCA6IGxlIHBsdXMgYW5jaWVuIGVzdCBlbiBoYXV0LiBFbiBiYXMgOiBsZSBwbHVzIHLDqWNlbnQgZW4gaGF1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnb3JkcmUgcGFyIGTDqWZhdXQgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGNldHRlIG9ww6lyYXRpb24uIEVuIGhhdXQgOiBsZSBwbHVzIGFuY2llbiBlbiBoYXV0LiBWZXJzIGxlIGJhcyA6IGxlIHBsdXMgcsOpY2VudCBlbiBoYXV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGNvbG9ubmVzIGFmZmljaMOpZXMgcGFyIGTDqWZhdXQgZGVzIENJIGRhbnMgbGEgdnVlIGRcJ2Vuc2VtYmxlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZW4gZm9uY3Rpb24gZGUgbGEgY2xhc3NlIGR1IENJLiBDaGFxdWUgZW50csOpZSBkb2l0IMOqdHJlIGNvbnN0aXR1w6llIGRcJ3VuIG5vbSBkZSBjbGFzc2UgZXQgZFwndW4gdGFibGVhdSBkZSBjaGFtcHMgZGlzcG9uaWJsZXMgcG91ciBsYSBjbGFzc2UgY29ycmVzcG9uZGFudGUuIExlcyBlbnRyw6llcyBkZSBjaGFtcHMgZHluYW1pcXVlcyBkb2l2ZW50IHJlc3BlY3RlciBsZSBzY2jDqW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0TDqWZpbml0IGxhIHByb2ZvbmRldXIgcGFyIGTDqWZhdXQgZGVzIHJlbGF0aW9ucyDDoCBhZmZpY2hlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZGUgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBhZmZpY2jDqSBwYXIgZMOpZmF1dCBwb3VyIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZGUgcmVjaGVyY2hlIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGFmZmljaMOpIHBhciBkw6lmYXV0IHBvdXIgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4gRXhlbXBsZSA6ICJLZXkiIGRvaXQgY29udGVuaXIgbGUgbm9tIGR1IGNoYW1wIGR5bmFtaXF1ZSwgZGFucyBjZSBjYXMgIlgiLCAiQ29udGVudCIgZG9pdCBjb250ZW5pciBsYSB2YWxldXIgZHUgY2hhbXAgZHluYW1pcXVlIGVuIGZvbmN0aW9uIGR1IHR5cGUgZGUgY2hhbXAgZHluYW1pcXVlLCBUZXh0IDogInVuIHRleHRlIiwgRHJvcGRvd24gOiAiMSIsIERhdGUvVGltZSA6ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0IDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NCIgOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDEgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2IDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDAgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMCA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMyA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2IDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMyA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OSA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OSA7ZXQgb3UgIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9NyIgOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlIHNvdXMtb2JqZXQgcGFyIGTDqWZhdXQgZGUgbGEgY2xhc3NlICJJVFNNQ29uZmlnSXRlbSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgY29sb25uZXMgZGlzcG9uaWJsZXMgcG91ciBsZXMgQ0kgZGFucyBsXCdhcGVyw6d1IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZW4gZm9uY3Rpb24gZGUgbGEgY2xhc3NlIGR1IENJLiBDaGFxdWUgZW50csOpZSBkb2l0IMOqdHJlIGNvbnN0aXR1w6llIGRcJ3VuIG5vbSBkZSBjbGFzc2UgZXQgZFwndW4gdGFibGVhdSBkZSBjaGFtcHMgZGlzcG9uaWJsZXMgcG91ciBsYSBjbGFzc2UgY29ycmVzcG9uZGFudGUuIExlcyBlbnRyw6llcyBkZSBjaGFtcHMgZHluYW1pcXVlcyBkb2l2ZW50IHJlc3BlY3RlciBsZSBzY2jDqW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxhIGhhdXRldXIgZHUgY29tcG9zYW50IGRlIGxcJ8OpZGl0ZXVyIGRlIHRleHRlIGVucmljaGkgcG91ciBjZXQgw6ljcmFuLiBFbnRyZXogdW4gbm9tYnJlIChwaXhlbHMpIG91IHVuZSB2YWxldXIgZW4gcG91cmNlbnRhZ2UgKHJlbGF0aXZlKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGUgbm9tYnJlIGRlIGxpZ25lcyBwb3VyIGxcJ8OpZGl0ZXVyIGRlIGTDqWZpbml0aW9uIGRlIENJIGRhbnMgbFwnaW50ZXJmYWNlIGRcJ2FkbWluaXN0cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdvcmRyZSBkZXMgw6l0YXRzIGluY2lkZW50cywgZGUgaGF1dCAocGFyIGV4ZW1wbGUsIGNyaWNpdGFsKSDDoCBiYXMgKHBhciBleGVtcGxlLCBmb25jdGlvbm5lbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIMOpdGF0cyBkZSBkw6lwbG9pZW1lbnQgcGVydGluZW50cyBkYW5zIGxlc3F1ZWxzIGxlcyB0aWNrZXRzIGxpw6lzIHBldXZlbnQgYWZmZWN0ZXIgbGUgc3RhdHV0IGRcJ3VuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxhIGxpbWl0ZSBkZSByZWNoZXJjaGUgcG91ciBsXCfDqWNyYW4gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEw6lmaW5pdCBsYSBsaW1pdGUgZGUgcmVjaGVyY2hlIHBvdXIgbFwnw6ljcmFuIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRMOpZmluaXQgbGEgbGltaXRlIGRlIHJlY2hlcmNoZSBwb3VyIGxcJ8OpY3JhbiBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxhIGxpbWl0ZSBkZSByZWNoZXJjaGUgcG91ciBsXCfDqWNyYW4gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgY29sb25uZXMgYWZmaWNow6llcyBkZXMgQ0kgZGFucyBsYSB2dWUgY29tcGxleGUgZGUgbGEgdGFibGUgZGVzIGxpZW5zIHBvdXIgdG91dGVzIGxlcyBjbGFzc2VzIGRlIENJLiBTXCdpbCBuXCd5IGEgcGFzIGRcJ2VudHLDqWUsIGxlcyBjb2xvbm5lcyBwYXIgZMOpZmF1dCBzb250IGFmZmljaMOpZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgY29sb25uZXMgYWZmaWNow6llcyBkZXMgQ0kgZGFucyBsYSB2dWUgY29tcGxleGUgZGUgbGEgdGFibGUgZGVzIGxpZW5zLCBlbiBmb25jdGlvbiBkZSBsYSBjbGFzc2UgZHUgQ0kuIENoYXF1ZSBlbnRyw6llIGRvaXQgw6p0cmUgcHLDqWPDqWTDqWUgZHUgbm9tIGRlIGxhIGNsYXNzZSBldCBkZSBkZXV4IHBvaW50cyAocGFyIGV4ZW1wbGUgOiBPcmRpbmF0ZXVyOiA6KS4gUXVlbHF1ZXMgYXR0cmlidXRzIGRlIENJIHNvbnQgY29tbXVucyDDoCB0b3VzIGxlcyBDSSAoZXhlbXBsZSBwb3VyIGxhIGNsYXNzZSBPcmRpbmF0ZXVyOjpOb20sIE9yZGluYXRldXI6Ok5vbSwgT3JkaW5hdGV1cjo6Tm9tLCBPcmRpbmF0ZXVyOjpOb20sIE9yZGluYXRldXI6Ok5vbSkgOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBQb3VyIGFmZmljaGVyIGxlcyBhdHRyaWJ1dHMgZGUgQ0kgaW5kaXZpZHVlbHMgdGVscyBxdWUgZMOpZmluaXMgZGFucyBsYSBkw6lmaW5pdGlvbiBkZSBDSSwgaWwgY29udmllbnQgZFwndXRpbGlzZXIgbGUgc2Now6ltYSBzdWl2YW50IChleGVtcGxlIHBvdXIgbGEgY2xhc3NlIE9yZGluYXRldXIpIDogT3JkaW5hdGV1cjo6SGFyZERpc2s6OjEsIE9yZGluYXRldXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgT3JkaW5hdGV1cjo6SGFyZERpc2s6OjIsIE9yZGluYXRldXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gU1wnaWwgblwneSBhIHBhcyBkXCdlbnRyw6llIHBvdXIgdW5lIGNsYXNzZSBDSSwgbGVzIGNvbG9ubmVzIHBhciBkw6lmYXV0IHNvbnQgYWZmaWNow6llcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgw6lsw6ltZW50cyBkaXNwb25pYmxlcyBwb3VyICJBY3Rpb24iIGF1IHRyb2lzacOobWUgbml2ZWF1IGRlIGxhIHN0cnVjdHVyZSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgw6lsw6ltZW50cyBkaXNwb25pYmxlcyBhdSBwcmVtaWVyIG5pdmVhdSBkZSBsYSBzdHJ1Y3R1cmUgZGUgbFwnQUNMIGRlcyDDqWzDqW1lbnRzIGRlIGxhIENvbmZpZyBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgw6lsw6ltZW50cyBkaXNwb25pYmxlcyBhdSBkZXV4acOobWUgbml2ZWF1IGRlIGxhIHN0cnVjdHVyZSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRMOpZmluaXQgcXVlbCB0eXBlIGRlIGxpZW4gKG5vbW3DqSBkdSBwb2ludCBkZSB2dWUgZHUgdGlja2V0KSBwZXV0IGFmZmVjdGVyIGxlIHN0YXR1dCBkXCd1biBDSSBsacOpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IHF1ZWwgdHlwZSBkZSB0aWNrZXQgcGV1dCBhZmZlY3RlciBsZSBzdGF0dXQgZFwndW4gQ0kgbGnDqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdNaXNlIMOgIGpvdXIgZGUgbGEgZMOpZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1N1cHByaW1lciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0NvdWxldXIgZGUgbFwnw6l0YXQgZGUgZMOpcGxvaWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ8OJdGF0IGRlIGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaXF1ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNb2R1bGUgZFwnw6l2w6luZW1lbnQgZGUgY2hhbXAgZHluYW1pcXVlIHF1aSBtYXJxdWUgbGVzIGTDqWZpbml0aW9ucyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gY29tbWUgw6l0YW50IGTDqXN5bmNocm9uaXPDqWVzLCBzaSBsZXMgY2hhbXBzIGR5bmFtaXF1ZXMgcXVcJ2VsbGVzIGNvbnRpZW5uZW50IGNoYW5nZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2hhbXBzIGR5bmFtaXF1ZXMgYWZmaWNow6lzIGRhbnMgbFwnw6ljcmFuIGRlcyBjaGFtcHMgSVRTTSBzdXBwbMOpbWVudGFpcmVzIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2hhbXBzIGR5bmFtaXF1ZXMgYWZmaWNow6lzIGRhbnMgbFwnw6ljcmFuIGRlIHN5bnRow6hzZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDaGFtcHMgZHluYW1pcXVlcyBhZmZpY2jDqXMgZGFucyBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdBY3RpdmUgbGEgZm9uY3Rpb24gZFwnYWN0aW9uIGVuIGJsb2MgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBwb3VyIHF1ZSBsZSBmcm9udGVuZCBkZSBsXCdhZ2VudCBwdWlzc2UgdHJhdmFpbGxlciBzdXIgcGx1cyBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiDDoCBsYSBmb2lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWN0aXZlIGxhIGZvbmN0aW9uIGRcJ2FjdGlvbiBlbiBibG9jIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gdW5pcXVlbWVudCBwb3VyIGxlcyBncm91cGVzIHLDqXBlcnRvcmnDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0FjdGl2ZS9kw6lzYWN0aXZlIGxhIGZvbmN0aW9ubmFsaXTDqSBkZSB2w6lyaWZpY2F0aW9uIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBwb3VyIGxlcyBub21zIHVuaXF1ZXMuIEF2YW50IGRcJ2FjdGl2ZXIgY2V0dGUgb3B0aW9uLCB2b3VzIGRldmV6IHbDqXJpZmllciBzaSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGV4aXN0YW50cyBvbnQgZGVzIG5vbXMgZW4gZG91YmxlLiBWb3VzIHBvdXZleiBsZSBmYWlyZSBhdmVjIGxhIGNvbW1hbmRlIGRlIGxhIGNvbnNvbGUgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bGUgZFwnw6l2w6luZW1lbnQgcG91ciBkw6lmaW5pciBsZSBzdGF0dXQgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gc3VyIGxlIGxpZW4gdGlja2V0LWNvbmZpZ2l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0NoYW1wcyBkZSBsXCdpbmRleCBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLCB1dGlsaXPDqXMgcG91ciBsYSByZWNoZXJjaGUgZW4gdGV4dGUgaW50w6lncmFsLiBMZXMgY2hhbXBzIHNvbnQgw6lnYWxlbWVudCBzdG9ja8OpcywgbWFpcyBuZSBzb250IHBhcyBvYmxpZ2F0b2lyZXMgcG91ciBsYSBmb25jdGlvbm5hbGl0w6kgZ2xvYmFsZS4gTFwnaW5jbHVzaW9uIGRlcyBwacOoY2VzIGpvaW50ZXMgcGV1dCDDqnRyZSBkw6lzYWN0aXbDqWUgZW4gbWV0dGFudCBsXCdlbnRyw6llIMOgIDAgb3UgZW4gbGEgc3VwcHJpbWFudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0NoYW1wcyBzdG9ja8OpcyBkYW5zIGxcJ2luZGV4IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gcXVpIHNvbnQgdXRpbGlzw6lzIHBvdXIgZFwnYXV0cmVzIGNob3NlcyBxdWUgbGVzIHJlY2hlcmNoZXMgZW4gdGV4dGUgaW50w6lncmFsLiBQb3VyIHVuZSBmb25jdGlvbm5hbGl0w6kgY29tcGzDqHRlLCB0b3VzIGxlcyBjaGFtcHMgc29udCBvYmxpZ2F0b2lyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnUG91ciBjaGFxdWUgc2VydmljZSB3ZWIgKGNsw6kpLCB1biB0YWJsZWF1IGRlIGNsYXNzZXMgKHZhbGV1cikgcGV1dCDDqnRyZSBkw6lmaW5pIHN1ciBsZXF1ZWwgbFwnaW1wb3J0YXRpb24gZXN0IHJlc3RyZWludGUuIFBvdXIgdG91dGVzIGxlcyBjbGFzc2VzIGNob2lzaWVzLCBvdSBwb3VyIHRvdXRlcyBsZXMgY2xhc3NlcyBleGlzdGFudGVzLCBsZXMgYXR0cmlidXRzIGRcJ2lkZW50aWZpY2F0aW9uIGRldnJvbnQgw6p0cmUgY2hvaXNpcyBkYW5zIGxhIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW52b2NhdGV1ci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnRW5yZWdpc3RyZW1lbnQgZHUgbW9kdWxlIEdlbmVyaWNJbnRlcmZhY2UgcG91ciBsYSBjb3VjaGUgZFwnaW52b2NhdGlvbiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnRW5yZWdpc3RyZW1lbnQgZHUgbW9kdWxlIEdlbmVyaWNJbnRlcmZhY2UgcG91ciBsYSBjb3VjaGUgZFwnaW52b2NhdGlvbiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0VucmVnaXN0cmVtZW50IGR1IG1vZHVsZSBHZW5lcmljSW50ZXJmYWNlIHBvdXIgbGEgY291Y2hlIGRcJ2ludm9jYXRpb24gQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdWdWUgZFwnZW5zZW1ibGUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfDiXRhdCBkZSBsXCdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdXQgbGVzIMOpdGF0cyBkZSBkw6lwbG9pZW1lbnQgZGFucyBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdXQgbGVzIMOpdGF0cyBkXCdpbmNpZGVudHMgZGFucyBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOb21icmUgbWF4aW11bSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gw6AgYWZmaWNoZXIgZGFucyBsZSByw6lzdWx0YXQgZGUgY2V0dGUgb3DDqXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bGUgcGVybWV0dGFudCBkZSB2w6lyaWZpZXIgbGUgZ3JvdXBlIHJlc3BvbnNhYmxlIGRcJ3VuZSBjbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxlIHBlcm1ldHRhbnQgZGUgdsOpcmlmaWVyIGxlIGdyb3VwZSByZXNwb25zYWJsZSBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bGUgcGVybWV0dGFudCBkZSBnw6luw6lyZXIgZGVzIHN0YXRpc3RpcXVlcyBzdXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05vbSBkdSBtb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bcOpcm8gTW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05vbWJyZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gw6AgYWZmaWNoZXIgZGFucyBjaGFxdWUgcGFnZSBkXCd1biByw6lzdWx0YXQgZGUgcmVjaGVyY2hlIGRhbnMgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOb21icmUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIMOgIGFmZmljaGVyIGRhbnMgY2hhcXVlIHBhZ2UgZFwndW4gcsOpc3VsdGF0IGRlIHJlY2hlcmNoZSBkYW5zIGxcJ2ludGVyZmFjZSBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnTGVzIG9iamV0cyDDoCByZWNoZXJjaGVyLCBsZSBub21icmUgZFwnZW50csOpZXMgZXQgbGVzIGF0dHJpYnV0cyDDoCBhZmZpY2hlci4gTGVzIGF0dHJpYnV0cyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRvaXZlbnQgw6p0cmUgZXhwbGljaXRlbWVudCBzdG9ja8OpcyB2aWEgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVnVlIGRcJ2Vuc2VtYmxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsZXMgY2F0w6lnb3JpZXMgZGVzIGNsYXNzZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlcyBmaWx0cmVzIGRlIGNvbG9ubmUgZGUgbFwnYXBlcsOndSBkZXMgcGV0aXRzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4gUmVtYXJxdWUgOiBzaSBsYSB2YWxldXIgIkFjdGlmIiBlc3QgZml4w6llIMOgIDAsIGxlcyBhZ2VudHMgbmUgcG91cnJvbnQgcGFzIG1vZGlmaWVyIGxlcyBwYXJhbcOodHJlcyBkZSBjZSBncm91cGUgZGFucyBsZXVycyBwcsOpZsOpcmVuY2VzIHBlcnNvbm5lbGxlcywgbWFpcyBsZXMgYWRtaW5pc3RyYXRldXJzIHBvdXJyb250IHRvdWpvdXJzIG1vZGlmaWVyIGxlcyBwYXJhbcOodHJlcyBhdSBub20gZFwndW4gYXV0cmUgdXRpbGlzYXRldXIuIFV0aWxpc2V6IFwnUHJlZmVyZW5jZUdyb3VwXCcgcG91ciBjb250csO0bGVyIGRhbnMgcXVlbGxlIHpvbmUgY2VzIHBhcmFtw6h0cmVzIGRvaXZlbnQgw6p0cmUgYWZmaWNow6lzIGRhbnMgbFwnaW50ZXJmYWNlIHV0aWxpc2F0ZXVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsYSBjb3VsZXVyIGRlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlcyDDqXRhdHMgZGUgZMOpcGxvaWVtZW50IGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsXCdleGVtcGxlIGRlcyBwZXJtaXNzaW9ucyBkZSBncm91cGVzIGRlcyBhdHRyaWJ1dHMgZHUgY2F0YWxvZ3VlIGfDqW7DqXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBkdSBtb2R1bGUgZGUgbm9tcyBwb3VyIGxlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBkdSBtb2R1bGUgZGUgbnVtw6lyb3RhdGlvbiBkZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdBY3RpdmUgbGEgZm9uY3Rpb24gZFwnYWN0aW9uIGVuIGJsb2MgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiB1bmlxdWVtZW50IHBvdXIgbGVzIGdyb3VwZXMgcsOpcGVydG9yacOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgZHUgbW9kdWxlIGRlIGNoYcOubmUgZGUgdmVyc2lvbiBwb3VyIGxlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgZHUgbW9kdWxlIGRlIGxhIGJvw650ZSDDoCBvdXRpbHMgZHUgbW9kw6hsZSBkZSBjaGHDrm5lIGRlIHZlcnNpb24gcG91ciBsZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlIGTDqWNsZW5jaGV1ciBkZSB2ZXJzaW9uIHBvdXIgbGVzIGNsYXNzZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdFZmZlY3R1ZSBsXCdhY3Rpb24gY29uZmlndXLDqWUgcG91ciBjaGFxdWUgw6l2w6luZW1lbnQgKGVuIHRhbnQgcXVcJ2ludm9jYXRldXIpIHBvdXIgY2hhcXVlIFdlYnNlcnZpY2UgY29uZmlndXLDqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ1Blcm1pc3Npb24gZHUgZ3JvdXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCdhY3Rpb24gZFwnYXR0YWNoZW1lbnQgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZFwnYXJib3Jlc2NlbmNlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZSB6b29tIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRcJ2Fqb3V0IGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBlbiB2cmFjIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlIG1vZGlmaWNhdGlvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F0dHJpYnV0ICVzIG1pcyDDoCBqb3VyIGRlICIlcyIgw6AgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkXCdpbXByZXNzaW9uIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbMOoZ2VzIHJlcXVpcyBwb3VyIHN1cHByaW1lciBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1JlY2hlcmNoZXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIGF1dG9tYXRpcXVlbWVudCBsXCfDqXRhdCBkXCdpbmNpZGVudCBkXCd1biBDSSBsb3JzcXVcJ3VuIHRpY2tldCBlc3QgbGnDqSDDoCB1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCfDqXRhdCBkZSBkw6lwbG9pZW1lbnQgZGFucyBsXCfDqWNyYW4gZFwnZW5zZW1ibGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ8OpdGF0IGRlIGxcJ2luY2lkZW50IGRhbnMgbFwnw6ljcmFuIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcXVpIHBlcm1ldCBkZSBsaWVyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIMOgIHVuIGF1dHJlIG9iamV0IGRhbnMgbGEgdnVlIHpvb20gZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBhY2PDqWRlciDDoCBsXCdoaXN0b3JpcXVlIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIGFjY8OpZGVyIMOgIGxcJ2hpc3RvcmlxdWUgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIHN1cHByaW1lciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIHNhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBhZmZpY2hlciBsZXMgbGllbnMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzb3VzIGZvcm1lIGRcJ2FyYm9yZXNjZW5jZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgZHVwbGlxdWVyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIGR1cGxpcXVlciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBtb2RpZmllciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciByZXZlbmlyIMOgIGxhIHZ1ZSB6b29tIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBpbXByaW1lciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBlcm1ldHRhbnQgZGUgem9vbWVyIHN1ciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIGxcJ2hpc3RvcmlxdWUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiAob3JkcmUgaW52ZXJzZSkgZGFucyBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0xhIGNhdMOpZ29yaWUgcGFyIGTDqWZhdXQgcXVpIGVzdCBhZmZpY2jDqWUgc2kgYXVjdW5lIG5cJ2VzdCBzw6lsZWN0aW9ubsOpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0xcJ2lkZW50aWZpYW50IGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLCBwYXIgZXhlbXBsZSBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gTGEgdmFsZXVyIHBhciBkw6lmYXV0IGVzdCBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdEw6ljbGVuY2hlIGF1dG9tYXRpcXVlbWVudCBsXCdpbnZva2VyIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0V4cHJlc3Npb24gZGUgbGEgY2hhw65uZSBkZSBsYSB2ZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gQ2hhw65uZSBkZSBjYXJhY3TDqHJlcyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnRMOpY2xlbmNoZXVyIGRlIHZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1NpIGxcJ2V4w6ljdXRpb24gZGUgQ29uZmlnSXRlbUFDTCBwZXV0IMOqdHJlIMOpdml0w6llIGVuIHbDqXJpZmlhbnQgbGVzIGTDqXBlbmRhbmNlcyBkZXMgY2hhbXBzIG1pcyBlbiBjYWNoZS4gQ2VsYSBwZXV0IGFtw6lsaW9yZXIgbGVzIHRlbXBzIGRlIGNoYXJnZW1lbnQgZGVzIGZvcm11bGFpcmVzLCBtYWlzIGRvaXQgw6p0cmUgZMOpc2FjdGl2w6kgc2kgbGVzIG1vZHVsZXMgQUNMTSBkb2l2ZW50IMOqdHJlIHV0aWxpc8OpcyBwb3VyIGxlcyB0eXBlcyBJVFNNQ29uZmlnSXRlbSBldCBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnUXVlbGxlcyBzb250IGxlcyBpbmZvcm1hdGlvbnMgZ8OpbsOpcmFsZXMgcXVpIGZpZ3VyZW50IGRhbnMgbFwnZW4tdMOqdGUgPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0LXByb2R1Y3RpZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHLDqS1wcm9kdWN0aWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1Y3RpZic7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVSA6IDE3LDUgcG91Y2VzICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVSA6IDIxIHBvdWNlcyAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVUgOiAyNiwyNSBwb3VjZXMgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFUgOiAzMSw1IHBvdWNlcyAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ1JhY2sgMTkgcG91Y2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVSA6IDEsNzUgcG91Y2VzICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFUgOiAzNSBwb3VjZXMgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJ0Nyw6ltYWlsbMOocmUgZGUgMjEgcG91Y2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVSA6IDM4LDUgcG91Y2VzICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnQ3LDqW1haWxsw6hyZSBkZSAyMyBwb3VjZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHBvdWNlcyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VSA6IDQyIHBvdWNlcyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VSA6IDQ3LDI1IHBvdWNlcyAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVSA6IDMsNSBwb3VjZXMgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFUgOiA1Mi41IHBvdWNlcyAoMTMzLjM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgcG91Y2VzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVIDogNTcsNzUgcG91Y2VzICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBwb3VjZXMgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlUgOiA2MyBwb3VjZXMgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBwb3VjZXMgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVIDogNjguMjUgcG91Y2VzICgxNzMuMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1UgOiA1LDI1IHBvdWNlcyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlUgOiA3Myw1IHBvdWNlcyAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBwb3VjZXMgKDExMDAgbW0pIDonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVUgOiA3OC43NSBwb3VjZXMgKDIwMC4wMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBwb3VjZXMgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVIDogODQgcG91Y2VzICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFUgOiA3IHBvdWNlcyAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVUgOiA4LDc1IHBvdWNlcyAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlUgOiAxMCw1IHBvdWNlcyAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVIDogMTIsMjUgcG91Y2VzICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFUgOiAxNCBwb3VjZXMgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VSA6IDE1LDc1IHBvdWNlcyAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29tcHRhYmlsaXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0F0dHJpYnV0aW9uIGRcJ2FkcmVzc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdUw6lsw6lwaG9uZSBhbmFsb2dpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVHlwZSBkXCdhcHBhcmVpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0NhcGFjaXTDqSBkZSBsYSBiYXR0ZXJpZSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1R5cGUgZGUgYmF0dGVyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCw6J0aW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZmFjZSBkZSBidXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDbGFzc2UgZFwndW5pdMOpIGNlbnRyYWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2l0w6kgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0NhcGFjaXTDqSBwYXIgY2FydGUgZ3JhcGhpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnTnVtw6lybyBkZSBsYSBjYXJ0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0xlY3RldXIgZGUgY2FydGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ1R5cGUgZGUgY2FydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYXRzIGRlIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdMb2dpY2llbCBjbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2F0w6lnb3JpZSBkZSBjbGllbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0hvcmxvZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1ZpdGVzc2UgZFwnaG9ybG9nZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdHMgZGUgc2lnbmF0dXJlIGRlIGNvZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ1TDqWzDqXBob25lIGRlIGNvbmbDqXJlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnQWNjb3JkIGRlIGNvbnN1bHRhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnQ29udGFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnQ29udGFjdGVyIGxlIGRpc3RyaWJ1dGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpb24gZGVzIGNvbnRlbmV1cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdDb250cmF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUeXBlIGRlIGNvbnRyYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdEdXLDqWUgZHUgY29udHJhdCBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdEdXLDqWUgZHUgY29udHJhdCBqdXNxdVwnw6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVMOpbMOpcGhvbmUgc2FucyBmaWwgKHTDqWzDqXBob25lIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ1VuaXTDqSBkZSBjb8O7dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ05vbWJyZSBkZSBsaWNlbmNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRGF0ZSBkZSBjcsOpYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1N1cHBvcnQgc3VyIG1lc3VyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSw6lzZXJ2w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZldXIgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXRlIGRlIGxhIGZhY3R1cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdGUgZGUgbFwnYXJyw6p0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0RhdGUgZHUgbWFuZGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdGUgZGUgcHVibGljYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ09yZGluYXRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYXRzIGRlIHNpZ25hdHVyZSBkZSBkb2N1bWVudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdSYWNrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0NlcnRpZmljYXRzIGRlIGNvdXJyaWVyIMOpbGVjdHJvbmlxdWUgKGNlcnRpZmljYXRzIFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQ29udHJhdCBkZSB0cmF2YWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnQWRyZXNzZSBJUCBmaW5hbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdGaW4gZGUgbFwnYWlkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0RhdGUgZFwnZXhwaXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRGlzcXVlIGR1ciBleHRlcm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnUGFyZS1mZXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ1N0b2NrYWdlIGRcJ8OpbmVyZ2llIHBhciB2b2xhbnQgZFwnaW5lcnRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0ZhY3RldXIgZGUgZm9ybWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0FjY29yZCBkZSBmcmFuY2hpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdMb2dpY2llbCBncmF0dWl0IChmcmVld2FyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb25zIGfDqW7DqXJhbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnQ2FydGVzIGdyYXBoaXF1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0NhcnRlIGdyYXBoaXF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ01hdMOpcmllbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZMOobGUgZGUgbWF0w6lyaWVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1BvaWRzIGR1IG1hdMOpcmllbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQ2FzcXVlIGRcJ8OpY291dGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2NvbGUgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnR2VzdGlvbiBkZXMgaWRlbnRpdMOpcyBldCBkZXMgYWNjw6hzIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdOdW3DqXJvIGRcJ2ludmVudGFpcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdDb8O7dHMgZFwnaW52ZXN0aXNzZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIGxhIGZhY3R1cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdDbGF2aWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0ZXVyIExDRCAow6ljcmFuIMOgIGNyaXN0YXV4IGxpcXVpZGVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRldXIgw6AgTEVEIChkaW9kZSDDqWxlY3Ryb2x1bWluZXNjZW50ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVMOpbMOpcGhvbmUgZml4ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdPcmRpbmF0ZXVyIHBvcnRhYmxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdDb3VjaGUgMSA6IENvdWNoZSBwaHlzaXF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdDb3VjaGUgMiA6IENvdWNoZSBsaWFpc29uIGRlIGRvbm7DqWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdDb3VjaGUgMyA6IENvdWNoZSByw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0NvdWNoZSAzIDogQ291Y2hlIHLDqXNlYXUgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdDb3VjaGUgNCA6IENvdWNoZSB0cmFuc3BvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0NvdWNoZSA1IDogY291Y2hlIHNlc3Npb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnQ291Y2hlIDYgOiBjb3VjaGUgZGUgcHLDqXNlbnRhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0NvdWNoZSA3IDogQ291Y2hlIGFwcGxpY2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXQgZGUgYmFpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0FjY29yZCBkZSBsaWNlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdDbMOpIGRlIGxpY2VuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVHlwZSBkZSBsaWNlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdQw6lyaW9kZSBkZSBsaWNlbmNlIGR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnUMOpcmlvZGUgZGUgbGljZW5jZSBqdXNxdVwnw6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIGF1IHBob3NwaGF0ZSBkZSBmZXIgbGl0aGnDqSAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIGF1IGxpdGhpdW0taW9uIChMaS1pb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnQ29udHJhdCBkZSBwcsOqdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnU2l0dcOpIMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xvbmdpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ0ZhYnJpY2FudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnQ2FwYWNpdMOpIGRlIGNoYXJnZSBtYXhpbWFsZSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTcOpbW9pcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdUeXBlIGRlIG3DqW1vaXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ051bcOpcm8gZGUgdMOpbMOpcGhvbmUgbW9iaWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsZS9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZMOobGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwdGlvbiBkdSBtb2TDqGxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1LDqXNvbHV0aW9uIGR1IG1vbml0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1RhaWxsZSBkdSBtb25pdGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ1NvdXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnUsOpc2VhdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm1hdGlvbnMgc3VyIGxlIHLDqXNlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF0aW9ucyBzdXIgbGUgcsOpc2VhdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnQ291Y2hlIHLDqXNlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdCYXR0ZXJpZSBuaWNrZWwtY2FkbWl1bSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdCYXR0ZXJpZSBuaWNrZWwtaHlkcnVyZSBtw6l0YWxsaXF1ZSAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnQWNjb3JkIGRlIG5vbi1kaXZ1bGdhdGlvbiAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ0Nhcm5ldCBkZSBub3Rlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ05vbWJyZSBkZSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTm9tYnJlIGRlIG1vZHVsZXMgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ05vbWJyZSBkZSBjYXJ0ZXMgZ3JhcGhpcXVlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRldXIgT0xFRCAoZGlvZGUgw6lsZWN0cm9sdW1pbmVzY2VudGUgb3JnYW5pcXVlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdGcmFpcyBkZSBmb25jdGlvbm5lbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIGNvbW1hbmRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnQXV0cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1NvcnRpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnQWNjb3JkIGRlIHBhcnRlbmFyaWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnTnVtw6lybyBkZSB0w6lsw6lwaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVHlwZSBkZSB0w6lsw6lwaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0PFk3VycyBwaHlzaXF1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdGb3Vybml0dXJlIGRcJ8OpbmVyZ2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnQWNoZXTDqSDDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUHJvZm9uZGV1ciBkdSByYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnVW5pdMOpcyBkZSByYWNrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUGnDqGNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnQ2FydGUgU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdHMgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0NvbnRyYXQgZGUgdmVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVMOpbMOpcGhvbmUgc2F0ZWxsaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIHBsb21iLWFjaWRlIHNjZWxsw6llIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnTnVtw6lybyBkZSBzw6lyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnTG9naWNpZWwgc2VydmV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0FjY29yZCBkZSBzZXJ2aWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnw4l0aXF1ZXR0ZSBkZSBzZXJ2aWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1R5cGUgZGUgcHJpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdMb2dpY2llbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0ludGVydmVuYW50cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnQWRyZXNzZSBJUCBkZSBkw6lwYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdTdG9ja2FnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1BhcnRpdGlvbiBkZSBzdG9ja2FnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0ZpbGlhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1LDqXN1bcOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnQ2xpZW50IGzDqWdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnRmlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdUb3RhbCBSQU0gZGUgbGEgY2FydGUgZ3JhcGhpcXVlIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdUb3RhbCBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRldXIgw6Agw6ljcmFuIHRhY3RpbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdIdWIgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnQ2FzcXVlIFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1TDqWzDqXBob25lIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/gl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmdsX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ01hcGVhZG8gcGFyYSBhcyBwZXRpY2nDs25zIGRlIGRhdG9zIGRlIGVudHJhZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnTWFwZWFkbyBwYXJhIG9zIGRhdG9zIGRlIHJlc3Bvc3RhIGRlIHNhw61kYSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cmFyIHBvciBjbGFzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnQ2xhc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ0VzdGFkbyBkbyBpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnUXVlcmUgcmVhbG1lbnRlIGJvcnJhciBlc3RhIEFjdGl2aWRhZGU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnTsO6bWVybyBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdFc3RhZG8gZG8gSW5jaWRlbnRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdDcmVhciB0ZW1wbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdWaXN0YSB6b29tJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnQ29tZXphciBidXNjYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnSW1wb3J0YXIgQ29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSBhY3R1YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnw5psdGltbyBjYW1iaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnw5psdGltbyBjYW1iaW8gZmVpdG8gcG9yJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnVGlwbyBkZSBvYnhlY3RvJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmlsdHJvIHBvciB0aXBvJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdEZXNleGEgcHJvc2VndWlyPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jaWEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdGdW5jaW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ0F2aXNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnSW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdQZXJtaXNvIGRlbmVnYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSBhY3R1YWwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTsO6bWVybyBtw6F4aW1vIGR1biBlbGVtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdDYWR1Y2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnRlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0ltcG9ydGFyIENvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHBvciBkZWZlY3RvIHBhcmEgdXNhciBubyBhdHJpYnV0byBwYXJhIGEgcGFudGFsbGEgYnVzY2EgZGUgdGlja2V0LiBFeGVtcGxvOiAiVGlja2V0Q3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7VGlja2V0Q3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtUaWNrZXRDcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHBvciBkZWZlY3RvIHBhcmEgdXNhciBubyBhdHJpYnV0byBwYXJhIGEgcGFudGFsbGEgYnVzY2EgZGUgdGlja2V0LiBFeGVtcGxvOiAiVGlja2V0Q3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO1RpY2tldENyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO1RpY2tldENyZWF0ZVRpbWVTdGFydERheT00O1RpY2tldENyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO1RpY2tldENyZWF0ZVRpbWVTdG9wTW9udGg9MTE7VGlja2V0Q3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSB1c2FyIGEgcGFudGFsbGEgZGUgZGVjaXNpw7NuIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBkZSBkZWNpc2nDs24gbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSB1c2FyIGEgcGFudGFsbGEgZGUgZGVjaXNpw7NuIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHZpc3RhIHhlcmFsIHBhcmEgbW9zdHJhciBhIHZpc3RhIHBlcXVlbmEgZHVuaGEgbGlzdGEgZGUgZW5xdWlzYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgb3MgYXRyaWJ1dG9zIGRlIHRpY2tldCBwb3IgZGVmZWN0byBwYXJhIGEgb3JkZW5hY2nDs24gZGUgdGlja2V0IGRvIHJlc3VsdGFkbyBkYSBidXNjYSBkZSB0aWNrZXQgZGEgaW50ZXJmYWNlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBhdHJpYnV0b3MgZGUgdGlja2V0IHBvciBkZWZlY3RvIHBhcmEgYSBvcmRlbmFjacOzbiBkZSB0aWNrZXQgZG8gcmVzdWx0YWRvIGRhIGJ1c2NhIGRlIHRpY2tldCBkYSBpbnRlcmZhY2UgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBhdHJpYnV0b3MgZGUgdGlja2V0IHBvciBkZWZlY3RvIHBhcmEgYSBvcmRlbmFjacOzbiBkZSB0aWNrZXQgZG8gcmVzdWx0YWRvIGRhIGJ1c2NhIGRlIHRpY2tldCBkZXN0YSBvcGVyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZSBwb3IgZGVmZWN0byBkZSB0aWNrZXQgbm9zIHJlc3VsdGFkb3MgZGUgYnVzY2EgZGUgdGlja2V0IGRhIGludGVyZmFjZSBkZSBheGVudGUuIEFycmliYTogb3MgbWFpcyBhbnRpZ29zIG5vIGFsdG8uIEFiYWl4bzogb3Mgw7psdGltb3Mgbm8gYWx0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGUgcG9yIGRlZmVjdG8gZGUgdGlja2V0IG5vcyByZXN1bHRhZG9zIGRlIGJ1c2NhIG5hIGludGVyZmFjZSBkZSBheGVudGUuIEFycmliYTogb3MgbWFpcyBhbnRpZ29zIG5vIGFsdG8uIEFiYWl4bzogb3Mgw7psdGltb3Mgbm8gYWx0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZSBwb3IgZGVmZWN0byBkZSB0aWNrZXQgbm9zIHJlc3VsdGFkb3MgZGUgYnVzY2EgZGUgdGlja2V0IGRlc3RhIG9wZXJhY2nDs24uIEFycmliYTogb3MgbWFpcyBhbnRpZ29zIG5vIGFsdG8uIEFiYWl4bzogb3Mgw7psdGltb3Mgbm8gYWx0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG9zIGF0cmlidXRvcyBkZSBidXNjYSBtb3N0cmFkb3Mgbm8gdGlja2V0IHBvciBkZWZlY3RvIHBhcmEgYSBwYW50YWxsYSBidXNjYSBkZSB0aWNrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmUgb3MgYXRyaWJ1dG9zIGRlIGJ1c2NhIG1vc3RyYWRvcyBubyB0aWNrZXQgcG9yIGRlZmVjdG8gcGFyYSBhIHBhbnRhbGxhIGJ1c2NhIGRlIHRpY2tldC4gRXhlbXBsbzogIkNoYXZlIiBkZWJlIHRlciBvIG5vbWUgZG8gQ2FtcG8gRGluw6FtaWNvIG5lc3RlIGNhc28gXCdYXCcsICJDb250aWRvIiBkZWJlIHRlciBvIHZhbG9yIGRvIENhbXBvIERpbsOhbWljbyBkZXBlbmRlbmRvIGRvIHRpcG8gZGUgQ2FtcG8gRGluw6FtaWNvLCBUZXh0bzogXCd1biB0ZXh0b1wnLCBEcm9wZG93bjpcJzFcJywgRGF0YS9UZW1wbzogIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5lIGEgYWx0dXJhIHBhcmEgbyBjb21wb8OxZW50ZSBkZSBlZGl0b3IgZGUgdGV4dG8gcmljbyBwYXJhIGVzdGEgcGFudGFsbGEuIEludHJvZHV6YSBlbiBuw7ptZXJvIChwaXhlaXMpIG91IHZhbG9yIHBvcmNlbnR1YWwgKHJlbGF0aXZvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIGNhbGVzIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG/DsWlibGVzIHBhcmEgXCdBY2Npw7NuXCcgbm8gdGVyY2Vpcm8gbml2ZWwgZGEgZXN0cnVjdHVyYSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIGNhbGVzIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG/DsWlibGVzIG5vIHByaW1laXJvIG5pdmVsIGRhIGVzdHJ1Y3R1cmEgQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgY2FsZXMgZWxlbWVudG9zIGVzdMOhbiBkaXNwb8OxaWJsZXMgbm8gc2VndW5kbyBuaXZlbCBkYSBlc3RydWN0dXJhIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdJbXBvcnRhciBDb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgY2FtcG9zIGRlIHTDrXR1bG8gbmEgcGFudGFsbGEgY2FtcG8gSVRTTSBhZGljaW9uYWwgZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIGNhbXBvcyBkZSB0w610dWxvIG5hIHBhbnRhbGxhIGNhbXBvIElUU00gYWRpY2lvbmFsIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgY2FtcG9zIGRlIHTDrXR1bG8gbmEgcGFudGFsbGEgY2FtcG8gSVRTTSBhZGljaW9uYWwgZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnUGVybWl0ZSBmdW5jacOzbiBkZSBhY2Npw7NuIGVuIG1hc2EgZG8gdGlja2V0IHBhcmEgbyBmcm9udGVuZCBkZSBheGVudGUgcGFyYSB0cmFiYWxsYXIgZW4gbcOhaXMgZHVuIHRpY2tldCDDoSB2ZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdQZXJtaXRlIGZ1bmNpw7NuIGRlIGFjY2nDs24gZW4gbWFzYSBkZSB0aWNrZXQgc29hbWVudGUgcGFyYSBvcyBncnVwb3MgZW51bWVyYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdJbnRlcmZhY2VYZW7DqXJpY2EgbcOzZHVsbyByZXhpc3RybyBwYXJhIGEgY2FwYSBkbyBpbnZvY2Fkb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnSW50ZXJmYWNlWGVuw6lyaWNhIG3Ds2R1bG8gcmV4aXN0cm8gcGFyYSBhIGNhcGEgZG8gaW52b2NhZG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdJbnRlcmZhY2VYZW7DqXJpY2EgbcOzZHVsbyByZXhpc3RybyBwYXJhIGEgY2FwYSBkbyBpbnZvY2Fkb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdFc3RhZG8gZG8gSW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdFc3RhZG8gZG8gSW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgdGlja2V0cyBwYXJhIHNlciBtb3N0cmFkb3Mgbm8gcmVzdWx0YWRvIGRlc3RhIG9wZXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSB0aWNrZXRzIHBhcmEgc2VyIG1vc3RyYWRvcyBlbiBjYWRhIHDDoXhpbmEgZHVuIHJlc3VsdGFkbyBkZSBidXNjYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIHRpY2tldHMgcGFyYSBzZXIgbW9zdHJhZG9zIGVuIGNhZGEgcMOheGluYSBkdW4gcmVzdWx0YWRvIGRlIGJ1c2NhIG5hIGludGVyZmFjZSBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWaXN0YSB4ZXJhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBvcyBncnVwb3MgZGUgcGVybWlzb3MgZGUgZXhlbXBsbyBkb3MgYXRyaWJ1dG9zIGRvIGNhdMOhbG9nbyB4ZXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ0V4ZWN1dGEgYSBhY2Npw7NuIGNvbmZpZ3VyYWRhIHBhcmEgY2FkYSBldmVudG8gKGNvbWEgdW4gSW52b2NhZG9yKSBwYXJhIGNhZGEgU2Vydml6byBXZWIgY29uZmlndXJhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBkZSBkZWNpc2nDs24gbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSB1c2FyIGEgcGFudGFsbGEgZGUgZGVjaXNpw7NuIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBkZSBkZWNpc2nDs24gbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSBlbXByZWdhciBhIHBhbnRhbGxhIGRlIHRleHRvIGxpYnJlIGRlIHTDrWNrZXRzIGRhIGludGVyZmFjZSBkbyBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSB1c2FyIGEgcGFudGFsbGEgZGUgZGVjaXNpw7NuIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBjYW1wbyBJVFNNIGFkaWNpb25hbCBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGNhbXBvIElUU00gYWRpY2lvbmFsIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGNhbXBvIElUU00gYWRpY2lvbmFsIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBvIHRpcG8gZGUgdGlja2V0IG5hIHBhbnRhbGxhIGRlIHRpY2tldCBtYXNpdm8gZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXN0YWJsZWNlIG8gdGlwbyBkZSB0aWNrZXQgbmEgcGFudGFsbGEgZGUgdGlja2V0IG1hc2l2byBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgY2FtYmlhciBhIGRlY2lzacOzbiBkdW4gdGlja2V0IG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBjYW1iaWFyIGEgZGVjaXNpw7NuIGR1biB0aWNrZXQgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgZWRpdGFyIHVuaGEgZW5xdWlzYSBuYSBzw7phIHZpc3RhIHpvb20gZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW5oYSBlbnF1aXNhIG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgdm9sdGFyIGF0csOhcyBuYSB2aXN0YSB6b29tIGRlIGVucXVpc2EgZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW5oYSBlbnF1aXNhIG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgbyBoaXN0b3JpY28gZG8gdGlja2V0IChvcmRlYWRvIG8gcmV2w6kpIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdDbGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29udGFiaWxpemFyIFRlbXBvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0VkaWZpY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0VzY3JpdG9yaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdFbmRlcmV6byBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGVjbGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnUG9ydMOhdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdDaGF2ZSBMaWNlbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1RpcG8gTGljZW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdSYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdPdXRyb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1Nhw61kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnTsO6bWVybyBkZSBzZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdBY29yZG8gZGUgbml2ZWwgZGUgc2Vydml6byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnRXN0w6FuZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/he_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmhlX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAn15TXkNedINeQ16rXnSDXkdeQ157XqiDXqNeV16bXmdedINec157Xl9eV16cg15jXqNeZ15LXqCDXkNeZ16jXldeiINeW15Q/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn15bXntefINeU15nXpteZ16jXlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfXnteR15gg15bXldedJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn15TXqNelINeX15nXpNeV16knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9eU15LXk9eo15XXqiDXmdeZ15HXldeQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAn16HXldeSINeU15DXldeR15nXmden15gnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICfXodeg158g15zXpNeZINeh15XXkic7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn15TXpNeg15nXmdeUJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfXkNeW15TXqNeUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfXkNeZ158g15TXqNep15DXlCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfXkdeZ158nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ9ek15InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ9eU15LXk9eo15XXqiDXmdeZ15HXldeQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn15TXkteT16jXldeqINeZ15nXkdeV15AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn157XkdeYLdei15wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn157Xntep16cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfXpNec15gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfXlNeh15vXnSDXqNee16og16nXmdeo15XXqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn16HXmNeg15PXqNeY15knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/hi_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmhpX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn4KS44KSu4KSvIOCkrOCkqOCkvuCkj+CkgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfgpJzgpLzgpYLgpK4g4KSm4KWD4KS24KWN4KSvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ+CkuOCkguCkpuCksOCljeCkrSDgpK7gpYfgpIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ+CkmuClh+CkpOCkvuCkteCkqOClgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn4KSF4KSo4KWB4KSu4KSk4KS/IOCkqOCkueClgOCkgiDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfgpJXgpYcg4KSs4KWA4KSaJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfgpLjgpK7gpK8g4KS44KWA4KSu4KS+IOCkuOCkruCkvuCkquCljeCkpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSc4KWC4KSuIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkn+Ckv+CkquCljeCkquCko+ClgCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSV4KWHIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSW4KWL4KScIOCkquCksOCkv+Cko+CkvuCkriDgpK7gpYfgpIIg4KSk4KSv4KS24KWB4KSm4KS+IOCkn+Ckv+CkleCknyDgpJXgpYAg4KSb4KSB4KSf4KS+4KSIIOCkleClhyDgpLLgpL/gpI8g4KSf4KS/4KSV4KSfIOCkleClgCDgpLXgpL/gpLbgpYfgpLfgpKTgpL4g4KSV4KWLIOCkquCksOCkv+CkreCkvuCkt+Ckv+CkpCDgpJXgpLDgpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkluCli+CknCDgpKrgpLDgpL/gpKPgpL7gpK4g4KSu4KWH4KSCIOCkpOCkr+CktuClgeCkpuCkviDgpJ/gpL/gpJXgpJ8g4KSV4KWAIOCkm+CkgeCkn+CkvuCkiCDgpJXgpYcg4KSy4KS/4KSPIOCkn+Ckv+CkleCknyDgpJXgpYAg4KS14KS/4KS24KWH4KS34KSk4KS+IOCkleCliyDgpKrgpLDgpL/gpK3gpL7gpLfgpL/gpKQg4KSV4KSw4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSV4KWHIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSW4KWL4KScIOCkquCksOCkv+Cko+CkvuCkriDgpK7gpYfgpIIg4KSk4KSv4KS24KWB4KSm4KS+IOCkn+Ckv+CkleCknyDgpJXgpYAg4KSb4KSB4KSf4KS+4KSIIOCkleClhyDgpLLgpL/gpI8g4KSf4KS/4KSV4KSfIOCkleClgCDgpLXgpL/gpLbgpYfgpLfgpKTgpL4g4KSV4KWLIOCkquCksOCkv+CkreCkvuCkt+Ckv+CkpCDgpJXgpLDgpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkleClgCDgpJbgpYvgpJwg4KSq4KSw4KS/4KSj4KS+4KSuIOCkruClh+CkgiDgpKTgpK/gpLbgpYHgpKbgpL4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJXgpY3gpLDgpK4g4KSV4KWLIOCkquCksOCkv+CkreCkvuCkt+Ckv+CkpCDgpJXgpLDgpKTgpL4g4KS54KWI4KWkIOCkiuCkquCksDrgpLbgpYDgpLDgpY3gpLcg4KSq4KSwIOCkuOCkrOCkuOClhyDgpKrgpYHgpLDgpL7gpKjgpYDgpaQg4KSo4KWA4KSa4KWHOuCktuClgOCksOCljeCktyDgpKrgpLAg4KSo4KS14KWA4KSo4KSk4KSu4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfgpJfgpY3gpLDgpL7gpLngpJUg4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpI/gpJUg4KSW4KWL4KScIOCkquCksOCkv+Cko+CkvuCkriDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkleClhyDgpKTgpK/gpLbgpYHgpKbgpL4g4KSV4KWN4KSw4KSuIOCkleCliyDgpKrgpLDgpL/gpK3gpL7gpLfgpL/gpKQg4KSV4KSw4KSk4KS+IOCkueCliOClpCDgpIrgpKrgpLA64KS24KWA4KSw4KWN4KS3IOCkquCksCDgpLjgpKzgpLjgpYcg4KSq4KWB4KSw4KS+4KSo4KWA4KWkIOCkqOClgOCkmuClhzrgpLbgpYDgpLDgpY3gpLcg4KSq4KSwIOCkqOCkteClgOCkqOCkpOCkruClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkleClgCDgpJbgpYvgpJwg4KSq4KSw4KS/4KSj4KS+4KSuIOCkruClh+CkgiDgpKTgpK/gpLbgpYHgpKbgpL4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJXgpY3gpLDgpK4g4KSV4KWLIOCkquCksOCkv+CkreCkvuCkt+Ckv+CkpCDgpJXgpLDgpKTgpL4g4KS54KWI4KWkIOCkiuCkquCksDrgpLbgpYDgpLDgpY3gpLcg4KSq4KSwIOCkuOCkrOCkuOClhyDgpKrgpYHgpLDgpL7gpKjgpYDgpaQg4KSo4KWA4KSa4KWHOuCktuClgOCksOCljeCktyDgpKrgpLAg4KSo4KS14KWA4KSo4KSk4KSu4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+Ckn+Ckv+CkleCknyDgpJXgpYAg4KSW4KWL4KScIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpYcg4KSy4KS/4KSPIOCkpuCkv+CkluCkvuCkiCDgpJ/gpL/gpJXgpJ8g4KSV4KWAIOCkpOCkr+CktuClgeCkpuCkviDgpJbgpYvgpJwg4KS14KS/4KS24KWH4KS34KSk4KS+IOCkleCliyDgpKrgpLDgpL/gpK3gpL7gpLfgpL/gpKQg4KSV4KSw4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICfgpLjgpK7gpYPgpKbgpY3gpKcg4KSq4KS+4KSgIOCkuOCkguCkquCkvuCkpuCklSDgpJjgpJ/gpJUg4KSV4KWHIOCksuCkv+CkjyDgpJrgpYzgpKHgpLzgpL7gpIgg4KSV4KWLIOCkquCksOCkv+CkreCkvuCkt+Ckv+CkpCDgpJXgpLDgpKTgpL4g4KS54KWI4KWkKOCkquCkv+CkleCljeCkuOClh+Cksikg4KS44KSC4KSW4KWN4KSv4KS+IOCkr+CkviDgpKrgpY3gpLDgpKTgpL/gpLbgpKQg4KSu4KS+4KSoICjgpLjgpL7gpKrgpYfgpJXgpY3gpLcpIOCkleCliyDgpLLgpL/gpJbgpYfgpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn4KSP4KSVIOCkuOCkruCkryDgpK7gpYfgpIIg4KSP4KSVIOCkuOClhyDgpIXgpKfgpL/gpJUg4KSf4KS/4KSV4KSf4KWL4KSCIOCkquCksCDgpJXgpL7gpK4g4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkpuClg+CktuCljeCkr+CkquCkn+CksiDgpJXgpYAg4KSf4KS/4KSV4KSfIOCkpeCli+CklSDgpJXgpL7gpLDgpY3gpLDgpLXgpL7gpIgg4KS44KWB4KS14KS/4KSn4KS+IOCkleCliyDgpLjgpJXgpY3gpLfgpK4g4KSs4KSo4KS+4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn4KSV4KWH4KS14KSyIOCkuOClguCkmuClgOCkrOCkpuCljeCkpyDgpLjgpK7gpYLgpLngpYvgpIIg4KSV4KWHIOCksuCkv+CkjyDgpJ/gpL/gpJXgpJ8g4KSl4KWL4KSVIOCkleCkvuCksOCljeCksOCkteCkvuCkiCDgpLjgpYHgpLXgpL/gpKfgpL4g4KSV4KWLIOCkuOCkleCljeCkt+CkriDgpKzgpKjgpL7gpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCkj+CklSDgpJbgpYvgpJwg4KSq4KSw4KS/4KSj4KS+4KSuIOCkleClhyDgpKrgpY3gpLDgpKTgpY3gpK/gpYfgpJUg4KSq4KWD4KS34KWN4KSgIOCkruClh+CkgiDgpKrgpY3gpLDgpKbgpLDgpY3gpLbgpL/gpKQg4KS54KWL4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSf4KS/4KSV4KSf4KWL4KSCIOCkleClgCDgpLjgpILgpJbgpY3gpK/gpL7gpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSX4KWN4KSw4KS+4KS54KSVIOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSP4KSVIOCkluCli+CknCDgpKrgpLDgpL/gpKPgpL7gpK4g4KSV4KWHIOCkquCljeCksOCkpOCljeCkr+Clh+CklSDgpKrgpYPgpLfgpY3gpKAg4KSu4KWH4KSCIOCkquCljeCksOCkpuCksOCljeCktuCkv+CkpCDgpLngpYvgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpJ/gpL/gpJXgpJ/gpYvgpIIg4KSV4KWAIOCkuOCkguCkluCljeCkr+CkvuClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfgpIXgpLXgpLLgpYvgpJXgpKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSc4KWC4KSuIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkn+Ckv+CkquCljeCkquCko+ClgCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJ/gpL/gpJXgpJ8g4KSu4KWB4KSV4KWN4KSkIOCkquCkvuCkoCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSc4KWC4KSuIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkn+Ckv+CkquCljeCkquCko+ClgCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSc4KWC4KSuIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkn+Ckv+CkquCljeCkquCko+ClgCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpLngpLAg4KSf4KS/4KSV4KSfIOCkleClhyDgpIXgpLXgpLLgpYvgpJXgpKgg4KSu4KWH4KSCIOCkn+Ckv+CkleCknyDgpIfgpKTgpL/gpLngpL7gpLgg4KSm4KWH4KSW4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KS14KS/4KSV4KSy4KWN4KSqIOCkuOClguCkmuClgCDgpK7gpYfgpIIg4KSP4KSVIOCkleCkoeCkvOClgCDgpKbgpL/gpJbgpL7gpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KS54KSwIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSF4KS14KSy4KWL4KSV4KSoIOCkruClh+CkgiDgpJ/gpL/gpJXgpJ8g4KSH4KSk4KS/4KS54KS+4KS4IOCkpuClh+CkluCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkteCkv+CkleCksuCljeCkqiDgpLjgpYLgpJrgpYAg4KSu4KWH4KSCIOCkj+CklSDgpJXgpKHgpLzgpYAg4KSm4KS/4KSW4KS+4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpLngpLAg4KSf4KS/4KSV4KSfIOCkleClhyDgpIXgpLXgpLLgpYvgpJXgpKgg4KSu4KWH4KSCIOCkn+Ckv+CkleCknyDgpIfgpKTgpL/gpLngpL7gpLgg4KSm4KWH4KSW4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KS14KS/4KSV4KSy4KWN4KSqIOCkuOClguCkmuClgCDgpK7gpYfgpIIg4KSP4KSVIOCkleCkoeCkvOClgCDgpKbgpL/gpJbgpL7gpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KS54KSwIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSF4KS14KSy4KWL4KSV4KSoIOCkruClh+CkgiDgpJ/gpL/gpJXgpJ8g4KSH4KSk4KS/4KS54KS+4KS4IOCkpuClh+CkluCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkteCkv+CkleCksuCljeCkqiDgpLjgpYLgpJrgpYAg4KSu4KWH4KSCIOCkj+CklSDgpJXgpKHgpLzgpYAg4KSm4KS/4KSW4KS+4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkheCkteCksuCli+CkleCkqCDgpK7gpYfgpIIg4KSP4KSVIOCkn+Ckv+CkleCknyDgpJzgpLzgpYLgpK4g4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KS14KS/4KSV4KSy4KWN4KSqIOCkuOClguCkmuClgCDgpK7gpYfgpIIg4KSP4KSVIOCkleCkoeCkvOClgCDgpKbgpL/gpJbgpL7gpKTgpL4g4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCkueCksCDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkheCkteCksuCli+CkleCkqCDgpK7gpYfgpIIg4KSf4KS/4KSV4KSfIOCkh+CkpOCkv+CkueCkvuCkuCDgpKbgpYfgpJbgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpLXgpL/gpJXgpLLgpY3gpKog4KS44KWC4KSa4KWAIOCkruClh+CkgiDgpI/gpJUg4KSV4KSh4KS84KWAIOCkpuCkv+CkluCkvuCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCkueCksCDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkheCkteCksuCli+CkleCkqCDgpK7gpYfgpIIg4KSf4KS/4KSV4KSfIOCkh+CkpOCkv+CkueCkvuCkuCDgpKbgpYfgpJbgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpLXgpL/gpJXgpLLgpY3gpKog4KS44KWC4KSa4KWAIOCkruClh+CkgiDgpI/gpJUg4KSV4KSh4KS84KWAIOCkpuCkv+CkluCkvuCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSV4KWHIOCkn+Ckv+CkleCknyDgpIXgpLXgpLLgpYvgpJXgpKgg4KSu4KWH4KSCIOCkj+CklSDgpJ/gpL/gpJXgpJ8g4KSc4KS84KWC4KSuIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkteCkv+CkleCksuCljeCkqiDgpLjgpYLgpJrgpYAg4KSu4KWH4KSCIOCkj+CklSDgpJXgpKHgpLzgpYAg4KSm4KS/4KSW4KS+4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCkueCksCDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkheCkteCksuCli+CkleCkqCDgpK7gpYfgpIIg4KSf4KS/4KSV4KSfIOCkh+CkpOCkv+CkueCkvuCkuCDgpKbgpYfgpJbgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpLXgpL/gpJXgpLLgpY3gpKog4KS44KWC4KSa4KWAIOCkruClh+CkgiDgpI/gpJUg4KSV4KSh4KS84KWAIOCkpuCkv+CkluCkvuCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSF4KS14KSy4KWL4KSV4KSoIOCkruClh+CkgiDgpI/gpJUg4KSf4KS/4KSV4KSfIOCknOCkvOClguCkriDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpLXgpL/gpJXgpLLgpY3gpKog4KS44KWC4KSa4KWAIOCkruClh+CkgiDgpI/gpJUg4KSV4KSh4KS84KWAIOCkpuCkv+CkluCkvuCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCkn+Ckv+CkleCknyDgpIfgpKTgpL/gpLngpL7gpLgo4KS14KS/4KSq4KSw4KWA4KSkIOCkhuCkpuClh+Cktikg4KSm4KS/4KSW4KS+4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfgpIXgpILgpKTgpLDgpKvgpLLgpJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfgpIbgpIngpJ/gpKrgpYHgpJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfgpLjgpYfgpLXgpL4g4KSy4KWH4KS14KSyIOCkuOCkruCkneCljOCkpOCkvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn4KSu4KS+4KSo4KSVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/hr_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmhyX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnU2lndXJubyDFvmVsaXRlIG9icmlzYXRpIG92YWogcHJlZGxvxb5haz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdWcmVtZW5hIG90dmFyYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdEZXRhbGpuaSBwcmVnbGVkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnUG9rcmVuaSBwcmV0cmFndSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnVXZveiBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ1Vwb3pvcmVuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ05lbWF0ZSBkb3p2b2x1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0l6bWXEkXUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0lzdGnEjWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ1V2b3oga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBwcm96b3JhIHphIG5hcG9tZW5lIGthcnRpY2UgdSBzdcSNZWxqdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1V2b3oga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQcmVnbGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnR3J1cGEgZG96dm9sYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSBzbG9ib2Rub2cgdGVrc3RhIGthcnRpY2UgdSBzdcSNZWxqdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBwcm96b3JhIHphIG5hcG9tZW5lIGthcnRpY2UgdSBzdcSNZWxqdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBwcm96b3JhIHphIG5hcG9tZW5lIGthcnRpY2UgdSBzdcSNZWxqdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ1N1xI1lbGplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnUHJlZ2xlZCByZXp1bHRhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTcG9yYXp1bSBvIHJhemluaSB1c2x1Z2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1VvYmnEjWFqZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/hu_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omh1X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfDgWx0YWzDoW5vcyBtxbFrw7Zkw6lzaSBhZGF0b2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0JlasO2dsWRIGvDqXLDqXNpIGFkYXRvayBiZcOhbGzDrXTDoXNhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ0Ega2ltZW7FkSB2w6FsYXN6YWRhdG9rIGJlw6FsbMOtdMOhc2FpJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnS29uZmlndXLDoWNpw7NlbGVtLW1lbmVkenNtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnT3N6dMOhbHktbWVnaGF0w6Fyb3rDoXMgbcOzZG9zw610w6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnU3plcmVwZGVmaW7DrWNpw7MgbcOzZG9zw610w6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1JlYWR5MkltcG9ydCBvc3p0w6FseWNzb21hZ29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnSXR0IGltcG9ydMOhbGhhdGphIGEgUmVhZHkySW1wb3J0IG9zenTDoWx5Y3NvbWFnb2thdCwgYW1lbHllayBhIGxlZ8OhbHRhbMOhbm9zYWJiIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWtldCBtdXRhdGrDoWsgYmUuIEvDqXJqw7xrLCB2ZWd5ZSBmaWd5ZWxlbWJlLCBob2d5IG7DqWjDoW55IHRvdsOhYmJpIGtvbmZpZ3Vyw6FjacOzcmEgbGVoZXQgc3rDvGtzw6lnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdNZWdsw6l2xZEgZW50aXTDoXNvayBmcmlzc8OtdMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdSZWFkeTJBZG9wdCBvc3p0w6FseWNzb21hZ29rIGltcG9ydMOhbMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdLb25maWd1csOhY2nDs2VsZW0tb3N6dMOhbHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ3Vyw6FjacOzcyBlbGVtIHN6ZXJlcGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ1N6xbFyxZEgYXogb3N6dMOhbHlva2hveic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdWw6FsYXNzem9uIGVneSBvc3p0w6FseXQgYSBsaXN0w6Fiw7NsIGVneSDDumoga29uZmlndXLDoWNpw7NlbGVtIGzDqXRyZWhvesOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ09zenTDoWx5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBrb25maWd1csOhY2nDs2VsZW0gdMO2bWVnZXMgbcWxdmVsZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdJbmNpZGVuc8OhbGxhcG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0hpdmF0a296w6FzIGVneSBtw6FzaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ8OJcnbDqW55dGVsZW4ga29uZmlndXLDoWNpw7NlbGVtLXN6w6FtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdFZ3kgbcOhc2lrIGtvbmZpZ3Vyw6FjacOzZWxlbSBzesOhbWEsIGFtZWxseWVsIMO2c3N6ZSBrZWxsIGvDtnRuaS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdWYWzDs2JhbiB0w7Zyw7Zsbmkgc3plcmV0bsOpIGV6dCBhIGtvbmZpZ3Vyw6FjacOzZWxlbWV0Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdBIGtvbmZpZ3Vyw6FjacOzZWxlbSBuZXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdBIG5ldmV0IG3DoXIgaGFzem7DoWxqw6FrIGEga29uZmlndXLDoWNpw7NlbGVtZWsgYSBrw7Z2ZXRrZXrFkSBzesOhbW9ra2FsOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1Zlcnppw7NzesOhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnQSBrb25maWd1csOhY2nDs3MgZWxlbSB2ZXJ6acOzc3rDoW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnQSB2ZXJ6acOzc3rDoW0gbcOhciBoYXN6bsOhbGF0YmFuIHZhbiBhIENvbmZpZ0l0ZW1zIMOhbHRhbCBhIGvDtnZldGtlesWRIHN6w6FtbWFsIChzesOhbW9ra2FsKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVuc8OhbGxhcG90JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdLb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdFbMWRem3DqW55dGFydGFsb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0zDqXRyZWhvesOhcyBpZGVqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdOYWd5w610w6FzaSBuw6l6ZXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtZWsgb2xkYWxhbmvDqW50JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOZW0gdGFsw6FsdHVuayBrb25maWd1csOhY2nDs3MgZWxlbWFkYXRvdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWw6FsYXNzemEga2kgZXp0IGEga29uZmlndXLDoWNpw7NzIGVsZW1ldCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ0tlcmVzw6lzIGZ1dHRhdMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnS2VyZXNzZW4gYXogZWzFkXrFkSB2ZXJ6acOza2JhbiBpcz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBhIENvbmZpZ0l0ZW0gc3rDoW3DoXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTcOpbHlzw6lnaSBzemludCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ05hZ3nDrXTDoXMvIGtpY3NpbnnDrXTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQSBDb25maWdJdGVtIG1heGltw6FsaXMgaGl2YXRrb3rDoXNpIHN6aW50amUgZWzDqXJ0ZSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1csOhY2nDs2VsZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtLWluZm9ybcOhY2nDs2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnSmVsZW5sZWdpIMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0plbGVubGVnaSBpbmNpZGVuc8OhbGxhcG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1V0b2xqw6FyYSBtw7Nkb3PDrXR2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdVdG9sasOhcmEgbcOzZG9zw610b3R0YSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0F6IMOWbiBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtIGtlcmVzw6lzJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICdPYmpla3R1bSB0w61wdXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnTWV6xZEgc3rFsXLDqXNlIG9iamVrdHVtdMOtcHVzIHN6ZXJpbnQnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdBIGvDtnZldGtlesWRIG9zenTDoWx5b2sga2Vyw7xsbmVrIGltcG9ydMOhbMOhc3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0Ega8O2dmV0a2V6xZEgc3plcmVwa8O2csO2ayBrZXLDvGxuZWsgaW1wb3J0w6Fsw6FzcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnVmVneWUgZmlneWVsZW1iZSwgaG9neSBhIG1lZ2ZlbGVsxZEgZGluYW1pa3VzIG1lesWRayDDqXMgR2VuZXJhbENhdGFsb2cgb3N6dMOhbHlvayBpcyBsw6l0cmVqw7ZubmVrLCDDqXMgbmluY3MgYXV0b21hdGlrdXMgZWx0w6F2b2zDrXTDoXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnU3plcmV0bsOpIGZvbHl0YXRuaT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnU3rDvGtzw6lnIHZhbiBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnQSBkZWZpbsOtY2nDsyBuZW0gw6lydsOpbnllcyBZQU1MIGhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnw4F0dGVraW50w6lzOiBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOaW5jcyBrb25maWd1csOhY2nDs2VsZW0tYXpvbm9zw610w7MgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdTesO8a3PDqWdlIHZhbiBsZWdhbMOhYmIgZWd5IGtpdsOhbGFzenRvdHQga29uZmlndXLDoWNpw7NlbGVtcmUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnTmluY3Mgw61yw6FzaSBob3p6w6Fmw6lyw6lzZSBlaGhleiBhIGtvbmZpZ3Vyw6FjacOzZWxlbWhlejogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ05pbmNzIG1lZ2hhdMOhcm96w6FzIG1lZ2hhdMOhcm96dmEgYSh6KSAlcyBvc3p0w6FseWhveiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0Eoeikg4oCeJXPigJ0ga29uZmlndXLDoWNpw7NlbGVtIG5lbSB0YWzDoWxoYXTDsyBheiBhZGF0YsOhemlzYmFuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ05lbSB2b2x0IGxlaGV0c8OpZ2VzIGEoeikgJXMga29uZmlndXLDoWNpw7NlbGVtLWF6b25vc8OtdMOzIHTDtnJsw6lzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ05lbSB0YWzDoWxoYXTDsyB2ZXJ6acOzIGEoeikgJXMga29uZmlndXLDoWNpw7NlbGVtLWF6b25vc8OtdMOzbsOhbCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmluY3Mga29uZmlndXLDoWNpw7NlbGVtLWF6b25vc8OtdMOzLCBrZXR0xZF6w6lzYXpvbm9zw610w7MgdmFneSBvc3p0w6FseWF6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdOaW5jcyBob3p6w6Fmw6lyw6lzIG1lZ2FkdmEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lbSBsZWhldCBtZWdqZWxlbsOtdGVuaSBheiBlbMWRem3DqW55ZWtldCwgbmluY3Mga29uZmlndXLDoWNpw7NlbGVtLWF6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmVtIGxlaGV0IG1lZ2plbGVuw610ZW5pIGF6IGVsxZF6bcOpbnlla2V0LCBuaW5jc2VuZWsgaG96esOhZsOpcsOpc2kgam9nb2sgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ8OaaiBrb25maWd1csOhY2nDs2VsZW0gKGF6b25vc8OtdMOzID0gJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfDmmogdmVyemnDsyAoYXpvbm9zw610w7MgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfDnHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90IGZyaXNzw610dmUgKMO6aiA9ICVzLCByw6lnaSA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdJbmNpZGVuc8OhbGxhcG90IGZyaXNzw610dmUgKMO6aiA9ICVzLCByw6lnaSA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSAoYXpvbm9zw610w7MgPSAlcykgdMO2csO2bHZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnS2FwY3NvbGF0IGVoaGV6OiAlcyAodMOtcHVzID0gJXMpIGhvenrDoWFkdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0thcGNzb2xhdCBlaGhlejogJXMgKHTDrXB1cyA9ICVzKSB0w7Zyw7ZsdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbS1tZWdoYXTDoXJvesOhcyBmcmlzc8OtdHZlIChhem9ub3PDrXTDsyA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ07DqXYgZnJpc3PDrXR2ZSAow7pqID0gJXMsIHLDqWdpID0gJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmliw7p0dW0gKCVzKSBmcmlzc8OtdHZlIGVycsWRbDog4oCeJXPigJ0sIGVycmU6IOKAniVz4oCdJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyVzLiB2ZXJ6acOzIHTDtnLDtmx2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOaW5jcyBrb25maWd1csOhY2nDs2VsZW0tYXpvbm9zw610w7MgdmFneSB2ZXJ6acOzYXpvbm9zw610w7MgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmVtIGxlaGV0IG1lZ2plbGVuw610ZW5pIGEga29uZmlndXLDoWNpw7NlbGVtZXQsIG5pbmNzZW5layBob3p6w6Fmw6lyw6lzaSBqb2dvayBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0EoeikgJXMga29uZmlndXLDoWNpw7NlbGVtLWF6b25vc8OtdMOzIG5lbSB0YWzDoWxoYXTDsyBheiBhZGF0YsOhemlzYmFuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdueW9tdGF0dGE6ICVzIOKAkyAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnSGl2YXRrb3rDoXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfDiXJ2w6lueXRlbGVuIG9zenTDoWx5YXpvbm9zw610w7MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmluY3Mgb3N6dMOhbHlhem9ub3PDrXTDsyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ05pbmNzZW5layBob3p6w6Fmw6lyw6lzaSBqb2dvayBtZWdhZHZhIGVoaGV6IGF6IG9zenTDoWx5aG96ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnTmluY3MgdGFsw6FsYXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIGtlcmVzw6lzaSBlcmVkbcOpbnllayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTmVtIGxlaGV0IG1lZ2plbGVuw610ZW5pIGF6IGVsZW1ldCwgbmluY3NlbmVrIGhvenrDoWbDqXLDqXNpIGpvZ29rIG1lZ2FkdmEgYSBrb25maWd1csOhY2nDs2VsZW1oZXohJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbmVtIHRhbMOhbGhhdMOzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdOZW0gdGFsw6FsdHVuayB2ZXJ6acOzdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfDvHplbWvDqXBlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnZmlneWVsbWV6dGV0w6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0Ega29uZmlndXLDoWNpw7NlbGVtIMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnQSBrb25maWd1csOhY2nDs2VsZW0gaW5jaWRlbnPDoWxsYXBvdGEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdOaW5jcyBqb2dvc3VsdHPDoWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnU3rFsXLFkSDDqXJ2w6lueXRlbGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnU2VhcmNoIHBhcmFtcyDDqXJ2w6lueXRlbGVuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ01lZ2plbGVuw610ZXR0IGtvbmZpZ3Vyw6FjacOzZWxlbWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3R0w61wdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnSmVsZW5sZWdpIGluY2lkZW5zw6FsbGFwb3QgdMOtcHVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0vDtnrDtnR0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdPc3p0w6FseWtvcmzDoXRvesOhc29rIGEga29uZmlndXLDoWNpw7NzIGVsZW1oZXonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ0VneSB2YWd5IHTDtmJiIG9zenTDoWx5IGtpdsOhbGFzenTDoXNhIGEgdsOhbGFzenRoYXTDsyBrb25maWd1csOhY2nDs3MgZWxlbWVrIGtvcmzDoXRvesOhc8OhaG96JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdPc3p0w6FseWtvcmzDoXRvesOhc29rIGEga29uZmlndXLDoWNpw7NzIGVsZW1oZXonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdFZ3kgdmFneSB0w7ZiYiBvc3p0w6FseSBraXbDoWxhc3p0w6FzYSBhIHbDoWxhc3p0aGF0w7Mga29uZmlndXLDoWNpw7NzIGVsZW1layBrb3Jsw6F0b3rDoXPDoWhveic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0RpbmFtaWt1cyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpYyAodsOhbHRvemF0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdMaW5rIGhpdmF0a296w6FzaSB0w61wdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnQSBoaXZhdGtvesOhcyBhIGhpdmF0a296w7Mgb2JqZWt0dW0gQ29uZmlnSXRlbSB2YWd5IHN0YXRpa3VzIHbDoWx0b3phdMOhcmEgdm9uYXRrb3ppay1lLiBBeiBha3R1w6FsaXMgaW5jaWRlbnPDoWxsYXBvdCBzesOhbcOtdMOhc2EgY3NhayBkaW5hbWlrdXMgaGl2YXRrb3rDoXNvayBlc2V0w6luIHTDtnJ0w6luaWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnVsOhbGFzc3phIGtpIGF6dCBheiBhdHRyaWLDunR1bW90LCBhbWVseSBhbGFwasOhbiBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWtldCBrZXJlc25pIGZvZ2rDoWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICdLw7xsc8WRIGZvcnLDoXMga3VsY3NhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnQSBtZWdqZWxlbsOtdMOpcyB0w61wdXPDoW5hayBraXbDoWxhc3p0w6FzYS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQXogYWxhcHN6ZXJrZXpldCBuZW0gw6lydsOpbnllcy4gS8OpcmrDvGssIGFkam9uIG1lZyBlZ3kgaGFzaC10IGF6IGFkYXRva2thbCBZQU1MIGZvcm3DoXR1bWJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdBIFlBTUwga2FyYWt0ZXJsw6FuY290IFwnLS0tXCctdmFsIGtlbGwga2V6ZGVuaS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTmVtIHNpa2Vyw7xsdCB0w7Zyw7ZsbmkgYSBjb25maWdpdGVtX2xpbmsgdMOhYmzDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOZW0gdGFsw6FsdHVuayByZWxldsOhbnMgZGluYW1pa3VzIG1lesWRa2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTmVtIHNpa2Vyw7xsdCBiZXN6w7pybmkgYSBjb25maWdpdGVtX2xpbmsgdMOhYmzDoXphdGJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcwIHNvciBiZXN6w7pyw6FzYSBhIGNvbmZpZ2l0ZW1fbGluayB0w6FibMOhYmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnRWd5IGVsZW0gbGVnbmFneW9iYiBzesOhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnTWVsbMOpa2xldGVrIGltcG9ydMOhbMOhc2EvZXhwb3J0w6Fsw6FzYSAoc29yb25rw6ludCBheiB1dG9sc8OzIGJlamVneXrDqXNrw6ludCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJ6acOzIGthcmFrdGVybMOhbmMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnSGliYSBhIGRlZmluw61jacOzayBzemlua3Jvbml6w6Fsw6Fzw6FiYW4uIEvDqXJqw7xrLCBlbGxlbsWRcml6emUgYSBuYXBsw7N0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ0lUU01Db25maWdJdGVtIGRlZmluw61jacOzaSBuaW5jc2VuZWsgc3ppbmtyb25pesOhbHZhLiBLw6lyasO8aywgdGVsZXDDrXRzZSBheiBJVFNNQ29uZmlnSXRlbSBkaW5hbWlrdXMgbWV6xZFpbmVrIG3Ds2Rvc8OtdMOhc2FpdC4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0xlasOhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdLYXJiYW50YXJ0w6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUHLDs2Jhw7x6ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1RlcnZlemV0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdKYXbDrXTDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1Zpc3N6YXZvbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnVml6c2fDoWxhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzenRlbMOpcy9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnw4F0dGVraW50w6lzIMOpcyBtZWdlcsWRc8OtdMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdPc3p0w6FseW9rL3N6ZXJlcGvDtnLDtmsgw6lzIGthcGNzb2zDs2TDsyBtZXrFkWlrIGltcG9ydMOhbMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdIaWJhIHTDtnJ0w6ludCBheiBvc3p0w6FseSBpbXBvcnTDoWzDoXNhIHNvcsOhbi4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFJlanRldHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIE1lZ2plbGVuw610dmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0xlaGV0xZF2w6kgdGVzemkgYSBraXRlcmplc3p0ZXR0IGtlcmVzw6lzaSBmZWx0w6l0ZWxla2V0IGF6IMO8Z3luw7ZraSBmZWzDvGxldCBrb25maWd1csOhY2nDs3MgZWxlbWtlcmVzw6lzw6liZW4uIEV6emVsIGEgZnVua2Npw7N2YWwga2VyZXNoZXQgcMOpbGTDoXVsIGEga29uZmlndXLDoWNpw7NzIGVsZW0gbmV2w6lyZSBvbHlhbiBmZWx0w6l0ZWxla2tlbCwgbWludCAiKCprZXkxKiYmKmtleTIqKSIgdmFneSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0xlaGV0xZF2w6kgdGVzemkgYSBraXRlcmplc3p0ZXR0IGtlcmVzw6lzaSBmZWx0w6l0ZWxla2V0IGF6IMO8Z3lmw6lsZmVsw7xsZXQga29uZmlndXLDoWNpw7NzIGVsZW1rZXJlc8Opc8OpYmVuLiBFenplbCBhIGZ1bmtjacOzdmFsIGtlcmVzaGV0IHDDqWxkw6F1bCBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtIG5ldsOpcmUgb2x5YW4gZmVsdMOpdGVsZWtrZWwsIG1pbnQgIigqa2V5MSomJiprZXkyKikiIHZhZ3kgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdIb3p6w6FyZW5kZWx0IGtvbmZpZ3Vyw6FjacOzZWxlbWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfDnGd5ZsOpbC12w6FsbGFsYXRob3ogaG96esOhcmVuZGVsdCBrb25maWd1csOhY2nDs2VsZW1layc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ8OcZ3lmw6lsLWZlbGhhc3puw6Fsw7Nob3ogaG96esOhcmVuZGVsdCBrb25maWd1csOhY2nDs2VsZW1layc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQiBiZcOhbGzDrXTDoXNvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnRWd5ZWRpIG7DqXYgZWxsZW7FkXJ6w6lzZSBraXrDoXLDs2xhZyB1Z3lhbmFiYmFuIGEga29uZmlndXLDoWNpw7NlbGVtIG9zenTDoWx5YmFuICjigJ5vc3p0w6FseeKAnSkgdmFneSBnbG9iw6FsaXNhbiAo4oCeZ2xvYsOhbGlz4oCdKSwgYW1lbHkgYXp0IGplbGVudGksIGhvZ3kgbWluZGVuIG1lZ2zDqXbFkSBrb25maWd1csOhY2nDs2VsZW0gZWd5IGZpw7NrYmEgbGVzeiBmZWx2w6l2ZSBhIGtldHTFkXrDqXNlayBrZXJlc8Opc2Vrb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdWw6FsYXNzem9uIGVneSBtb2R1bHQgYSBuw6l2c8OpbWEgw6lydsOpbnllc8OtdMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnVsOhbGFzc3pvbiBlZ3kgbW9kdWx0IGEgc3rDoW1zw6ltYSDDqXJ2w6lueWVzw610w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1bDoWxhc3N6b24ga2kgZWd5IG1vZHVsdCBhIHZlcnppw7NzIGthcmFrdGVybMOhbmMtc8OpbWEgw6lydsOpbnllc8OtdMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1bDoWxhc3N6YSBraSBheiDDumogdmVyemnDsyBsw6l0cmVob3rDoXPDoXQga2l2w6FsdMOzIGF0dHJpYsO6dHVtb2thdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnVsOhbGFzc3phIGtpIGEga29uZmlndXLDoWNpw7NzIGVsZW1vc3p0w6FseWhveiByZW5kZWxlbmTFkSBrYXRlZ8OzcmnDoWthdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnQSBDb25maWdJdGVtIE92ZXJ2aWV3IG9zemxvcCBrb25maWd1csOhY2nDs3MgZWxlbXN6xbFyxZFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQXogw7xneW7DtmtpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWluZWsgw6F0dGVraW50w6lzw6liZW4gc3rFsXJoZXTFkSBvc3psb3Bvay4gTWVnamVneXrDqXM6IENzYWsgYSBrb25maWd1csOhY2nDs3MgZWxlbSBhdHRyaWLDunR1bWFpIMOpcyBhIGRpbmFtaWt1cyBtZXrFkWsgKER5bmFtaWNGaWVsZF9OYW1lWCkgZW5nZWTDqWx5ZXpldHRlay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSBob3p6w6FhZMOhc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIHN6ZXJrZXN6dMOpc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXLDoWNpw7NlbGVtIGVzZW3DqW55IG1vZHVsLCBhbWVseSBlbmdlZMOpbHllemkgYSBuYXBsw7N6w6FzdCBheiBlbMWRem3DqW55ZWtiZSBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ0tvbmZpZ3Vyw6FjacOzcyBlbGVtIGVzZW3DqW55bW9kdWwsIGFtZWx5IGZyaXNzw610aSBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWtldCBheiBha3R1w6FsaXMgZGVmaW7DrWNpw7NqdWtyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdLb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdLb25maWd1csOhY2nDs2VsZW0gbnlvbXRhdMOhc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIG5hZ3nDrXTDoXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0gZmEgbsOpemV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gdmVyemnDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdBIGvDtnZldGtlesWRIG9zenTDoWx5b2sgQ29uZmlnSXRlbXMgbmVtIGtlcsO8bG5layB0w6Fyb2zDoXNyYSBheiBFbGFzdGljc2VhcmNoIGtpc3pvbGfDoWzDs24uIEFoaG96LCBob2d5IGV6dCBhIG1lZ2zDqXbFkSBDSS1rcmUgYWxrYWxtYXp6dWssIGEgQ0kgbWlncsOhY2nDs3QgYSBrb256b2xvbiBrZXJlc3p0w7xsIGtlbGwgZnV0dGF0bmksIG1pdXTDoW4gbWVndsOhbHRvenRhdHR1ayBlenQgYXogb3BjacOzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQSBrw7Z2ZXRrZXrFkSB0ZWxlcMOtdMOpc2kgw6FsbGFwb3Rva2thbCByZW5kZWxrZXrFkSBDb25maWdJdGVtcyBuZW0ga2Vyw7xsIHTDoXJvbMOhc3JhIGF6IEVsYXN0aWNzZWFyY2gta2lzem9sZ8OhbMOzbi4gQSBtZWdsw6l2xZEgQ0kta3JlIHZhbMOzIGFsa2FsbWF6w6FzaG96IGEgQ0ktbWlncsOhY2nDs3QgYSBrb256b2xvbiBrZXJlc3p0w7xsIGtlbGwgZnV0dGF0bmksIG1pdXTDoW4gbWVndsOhbHRvenRhdHR1ayBlenQgYXogb3BjacOzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnS29uZmlndXLDoWNpw7NlbGVtLWtvcmzDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbS1rb3Jsw6F0IG9sZGFsYW5rw6ludC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0tvbmZpZ3Vyw6FjacOzbWVuZWR6c21lbnQtYWRhdGLDoXppcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSB0w7ZtZWdlcyBtb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0ga2VyZXPDqXNpIGjDoXR0w6lycHJvZ3JhbSDDunR2w6FsYXN6dMOzamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ01lZ2hhdMOhcm96w6Fzb2sgbMOpdHJlaG96w6FzYSDDqXMga2V6ZWzDqXNlIGEga29uZmlndXLDoWNpw7NlbGVtZWtuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0Jpem9ueW9zIGlkxZFwb250b2tiYW4gamVneWVrZXQgaG96IGzDqXRyZSBhIENvbmZpZ0l0ZW1zIHN6w6Ftw6FyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnQXogw7xneWZlbGVrIGzDoXRoYXRqw6FrIGEga29yw6FiYmkgQ0ktdmVyemnDs2thdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnQXogw7xneWZlbGVrbmVrIGxlaGV0xZFzw6lnw7xrIHZhbiBtYW51w6FsaXNhbiB2w6FsdGFuaSBhIGtvcsOhYmJpIENJLXZlcnppw7NrIGvDtnrDtnR0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0Ega29uZmlndXLDoWNpw7NzIGVsZW0ga2VyZXPDqXNpIGvDqXBlcm55xZFqw6luZWsgYXR0cmliw7p0dW3DoW4gaGFzem7DoWxhbmTDsyBhbGFww6lydGVsbWV6ZXR0IGFkYXRvay4gUMOpbGRhOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0Ega29uZmlndXLDoWNpw7NzIGVsZW0ga2VyZXPDqXNpIGvDqXBlcm55xZFqw6luZWsgYXR0cmliw7p0dW3DoW4gaGFzem7DoWxhbmTDsyBhbGFww6lydGVsbWV6ZXR0IGFkYXRvay4gUMOpbGRhOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnTcWxdmVsZXRlayBtZWdoYXTDoXJvesOhc2EsIGFob2wgZWd5IGJlw6FsbMOtdMOhc29rIGdvbWIgw6lyaGV0xZEgZWwgYSBrYXBjc29sdCBvYmpla3R1bW9rIGZlbMO8bGV0aSBlbGVtZW4gKExpbmtPYmplY3Q6OlZpZXdNb2RlID0g4oCew7Zzc3pldGV0dOKAnSkuIE5lIGZlbGVkamUsIGhvZ3kgZXpla25layBhIG3FsXZlbGV0ZWtuZWsgcmVuZGVsa2V6bmnDvGsga2VsbCBhIGvDtnZldGtlesWRIEpTIMOpcyBDU1MgZsOhamxvayByZWdpc3p0csOhbMOhc8OhdmFsOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDDqXMgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnVGVtcGxhdGU6OlRvb2xraXQgc8OpbWEgZGVmaW5pw6Fsw6FzYSBhIHZlcnppw7NzenRyaW5nZWtoZXouIENzYWsgYWtrb3IgaGFzem7DoWxhdG9zLCBoYSBhIFZlcnNpb24gU3RyaW5nIE1vZHVsZSDDqXJ0w6lrZSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXpvbiBkaW5hbWlrdXMgbWV6xZEgb2JqZWt0dW10w61wdXNvayBsaXN0w6Fqw6FuYWsgbWVnaGF0w6Fyb3rDoXNhLCBhbWVseWVrIGhvenrDoXJlbmRlbGhldMWRayBhIGNzb21hZyBtxbF2ZWxldGVpaGV6IGEgZGluYW1pa3VzIG1lesWRIGvDqXBlcm55xZFpbmVrIGZlbMO8bGV0w6luIGtlcmVzenTDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnSGF0w6Fyb3p6YSBtZWcgYXpvbiBmZWx0w6l0ZWxlayBrw7Zyw6l0LCBhbWVseWVrIG1lbGxldHQgYXogw7xneWbDqWwgbMOhdGhhdCBlZ3kga29uZmlndXLDoWNpw7NzIGVsZW1ldC4gQSBmZWx0w6l0ZWxlayBvcGNpb27DoWxpc2FuIGtvcmzDoXRvemhhdMOzayBiaXpvbnlvcyDDvGd5ZsOpbGNzb3BvcnRva3JhLiBBIG7DqXYgYXogZWd5ZXRsZW4ga8O2dGVsZXrFkSBhdHRyaWLDunR1bS4gSGEgbmluY3MgbcOhcyBvcGNpw7MgbWVnYWR2YSwgYWtrb3IgYXogw7Zzc3plcyBrb25maWd1csOhY2nDs3MgZWxlbSBsw6F0aGF0w7MgbGVzeiBheiBhZG90dCBrYXRlZ8OzcmlhIGFsYXR0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rYXQgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW1layB0w7ZybMOpc8OpaGV6IGF6IMOhbHRhbMOhbm9zIGZlbMO8bGV0IGhhc3puw6FsYXTDoXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdva2F0IGF6IElUU00ga29uZmlndXLDoWNpw7NlbGVtZWsgbGVrw6lyw6lzw6loZXogYXogw6FsdGFsw6Fub3MgZmVsw7xsZXQgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rYXQgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW1layBrZXJlc8Opc8OpaGV6IGF6IMOhbHRhbMOhbm9zIGZlbMO8bGV0IGhhc3puw6FsYXTDoXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogSVRTTSBrb25maWd1csOhY2nDs3MgZWxlbWVrIGJlw6FsbMOtdMOhc8OhaG96IHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rYXQgYXogw6FsdGFsw6Fub3MgZmVsw7xsZXQgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdFZ3kgw6F0dGVraW50xZEgbW9kdWx0IGhhdMOhcm96IG1lZyBlZ3kga29uZmlndXLDoWNpw7NlbGVtIGxpc3RhIGtpcyBuw6l6ZXTDqW5layBtZWdqZWxlbsOtdMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphLCBob2d5IGEgY3NvbcOzcG9udGthcGNzb2xhdG9rYmFuIG1lZyBrZWxsLWUgamVsZW7DrXRlbmkgYSBrYXBjc29sYXR0w61wdXMgY8OtbWvDqWl0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnUmVndWzDoXJpcyBraWZlamV6w6lzZWtldCBoYXTDoXJveiBtZWcgZWd5w6luaWxlZyBtaW5kZW4gZWd5ZXMga29uZmlndXLDoWNpw7NlbGVtIG9zenTDoWx5bsOhbCBhIGtvbmZpZ3Vyw6FjacOzZWxlbSBuZXbDqW5layBlbGxlbsWRcnrDqXPDqWhleiwgdmFsYW1pbnQgYSBtZWdmZWxlbMWRIGhpYmHDvHplbmV0ZWsgbWVnamVsZW7DrXTDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgQ0ktayBlbMOpcmhldMWRIG9zemxvcGFpdCBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtIMOhdHRla2ludMOpc8OpYmVuIGEgQ0ktb3N6dMOhbHl0w7NsIGbDvGdnxZFlbi4gTWluZGVuIGVneWVzIGJlamVneXrDqXNuZWsgZWd5IG9zenTDoWx5bsOpdmLFkWwgw6lzIGEgbWVnZmVsZWzFkSBvc3p0w6FseWhveiByZW5kZWxrZXrDqXNyZSDDoWxsw7MgbWV6xZFrIHTDtm1iasOpYsWRbCBrZWxsIMOhbGxuaWEuIEEgZGluYW1pa3VzIG1lesWRYmVqZWd5esOpc2VrbmVrIGEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSBzw6ltw6F0IGtlbGwga8O2dmV0bmnDvGsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQga29uZmlndXLDoWNpw7NzIGVsZW0gYXR0cmliw7p0dW1vdCBheiDDvGd5bsO2a2kgZmVsw7xsZXQga29uZmlndXLDoWNpw7NzIGVsZW0ga2VyZXPDqXNpIGVyZWRtw6luecOpbmVrIGtvbmZpZ3Vyw6FjacOzcyBlbGVtIHJlbmRlesOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiDDvGd5ZsOpbGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzcyBlbGVtIGtlcmVzw6lzaSBlcmVkbcOpbnnDqW5layBrb25maWd1csOhY2nDs3MgZWxlbSByZW5kZXrDqXPDqWhleiBoYXN6bsOhbHQgYWxhcMOpcnRlbG1lemV0dCBrb25maWd1csOhY2nDs3MgZWxlbSBhdHRyaWLDunR1bW90Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBrb25maWd1csOhY2nDs3MgZWxlbSBhdHRyaWLDunR1bW90IGEgbcWxdmVsZXQga29uZmlndXLDoWNpw7NzIGVsZW0ga2VyZXPDqXNpIGVyZWRtw6luecOpbmVrIGtvbmZpZ3Vyw6FjacOzcyBlbGVtIHJlbmRlesOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWsgYWxhcMOpcnRlbG1lemV0dCBzb3JyZW5kasOpdCBheiDDvGd5bsO2a2kgZmVsw7xsZXQga29uZmlndXLDoWNpw7NzIGVsZW1rZXJlc8Opc2kgZXJlZG3DqW55w6liZW4uIEZlbGZlbMOpOiBhIGxlZ3LDqWdlYmJpIGEgdGV0ZWrDqW4uIExlZmVsw6k6IGEgbGVnZnJpc3NlYmIgdmFuIGZlbMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrb25maWd1csOhY2nDs3MgZWxlbWVrIGFsYXDDqXJ0ZWxtZXpldHQgc29ycmVuZGrDqXQgYXogw7xneWbDqWxmZWzDvGxldCBrb25maWd1csOhY2nDs3MgZWxlbSBrZXJlc8Opc2kgZXJlZG3DqW55w6liZW4uIEZlbGZlbMOpOiBhIGxlZ3LDqWdlYmJpIGZlbMO8bC4gTGVmZWzDqTogYSBsZWdmcmlzc2ViYiB2YW4gZmVsw7xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga29uZmlndXLDoWNpw7NzIGVsZW1layBhbGFww6lydGVsbWV6ZXR0IHNvcnJlbmRqw6l0IGEga29uZmlndXLDoWNpw7NzIGVsZW1layBrZXJlc8Opc2kgZXJlZG3DqW55w6liZW4uIEZlbGZlbMOpOiBhIGxlZ3LDqWdlYmJpIGZlbMO8bC4gTGVmZWzDqTogYSBsZWdmcmlzc2ViYiBhIHRldGVqw6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIENJLWsgYWxhcMOpcnRlbG1lemV0dCBtZWdqZWxlbsOtdGV0dCBvc3psb3BhaXQgYSBrb25maWd1csOhY2nDs3MgZWxlbSDDoXR0ZWtpbnTDqXPDqWJlbiBhIENJLW9zenTDoWx5dMOzbCBmw7xnZ8WRZW4uIE1pbmRlbiBiZWplZ3l6w6lzbmVrIGVneSBvc3p0w6FseW7DqXZixZFsIMOpcyBhIG1lZ2ZlbGVsxZEgb3N6dMOhbHlob3ogcmVuZGVsa2V6w6lzcmUgw6FsbMOzIG1lesWRayB0w7ZtYmrDqWLFkWwga2VsbCDDoWxsbmlhLiBBIGRpbmFtaWt1cyBtZXrFkWJlamVneXrDqXNla25layBhIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUgc8OpbcOhdCBrZWxsIGvDtnZldG5pw7xrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdNZWdoYXTDoXJvenphIGEgbWVnamVsZW7DrXRlbmTFkSBrYXBjc29sYXRvayBhbGFww6lydGVsbWV6ZXR0IG3DqWx5c8OpZ8OpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IG1lZ2plbGVuw610ZXR0IGtvbmZpZ3Vyw6FjacOzcyBlbGVtIGtlcmVzw6lzaSBhdHRyaWLDunR1bW90IGEga29uZmlndXLDoWNpw7NzIGVsZW0ga2VyZXPDqXNpIGvDqXBlcm55xZFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IG1lZ2plbGVuw610ZXR0IGtvbmZpZ3Vyw6FjacOzcyBlbGVtIGtlcmVzw6lzaSBhdHRyaWLDunR1bW90IGEga29uZmlndXLDoWNpw7NzIGVsZW0ga2VyZXPDqXNpIGvDqXBlcm55xZFuLiBQw6lsZGE6ICJLZXkiIGEgZGluYW1pa3VzIG1lesWRIG5ldmUsIGViYmVuIGF6IGVzZXRiZW4gXCdYXCcsICJDb250ZW50IiBhIGRpbmFtaWt1cyBtZXrFkSDDqXJ0w6lrZSBhIGRpbmFtaWt1cyBtZXrFkSB0w61wdXPDoXTDs2wgZsO8Z2fFkWVuLCBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIMOpcyB2YWd5IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXog4oCeSVRTTUNvbmZpZ0l0ZW3igJ0gb3N6dMOhbHkgYWxhcMOpcnRlbG1lemV0dCBhbG9iamVrdHVtw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIENJLWsgZWzDqXJoZXTFkSBvc3psb3BhaXQgYSBrb25maWd1csOhY2nDs3MgZWxlbSDDoXR0ZWtpbnTDqXPDqWJlbiBhIENJLW9zenTDoWx5dMOzbCBmw7xnZ8WRZW4uIE1pbmRlbiBlZ3llcyBiZWplZ3l6w6lzbmVrIGVneSBvc3p0w6FseW7DqXZixZFsIMOpcyBhIG1lZ2ZlbGVsxZEgb3N6dMOhbHlob3ogcmVuZGVsa2V6w6lzcmUgw6FsbMOzIG1lesWRayB0w7ZtYmrDqWLFkWwga2VsbCDDoWxsbmlhLiBBIGRpbmFtaWt1cyBtZXrFkWJlamVneXrDqXNla25layBhIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUgc8OpbcOhdCBrZWxsIGvDtnZldG5pw7xrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgUmljaCBUZXh0IHN6ZXJrZXN6dMWRLcO2c3N6ZXRldsWRIG1hZ2Fzc8OhZ8OhdCBlbm7DqWwgYSBrw6lwZXJuecWRbsOpbC4gU3rDoW0gKGvDqXBwb250KSB2YWd5IHN6w6F6YWzDqWsgKHJlbGF0w612KSDDqXJ0w6lrZXQgYWRqb24gbWVnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgQ0kgbWVnaGF0w6Fyb3rDoXMtc3plcmtlc3p0xZEgc29yYWluYWsgc3rDoW3DoXQgYXogYWRtaW5pc3p0csOhY2nDs3MgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBpbmNpZGVuc8OhbGxhcG90b2sgc29ycmVuZGrDqXQgYSBsZWdtYWdhc2FiYnTDs2wgKHDDqWxkw6F1bCBrcml0aWt1cykgYSBsZWdhbGFjc29ueWFiYmlnIChww6lsZMOhdWwgZnVua2Npb27DoWxpcykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIGthcGNzb2zDs2TDsyDDvHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90b2thdCwgYWhvbCBhIGthcGNzb2x0IGplZ3llayBiZWZvbHnDoXNvbGhhdGrDoWsgZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSDDoWxsYXBvdMOhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga2VyZXPDqXNpIGtvcmzDoXRvdCBheiBBZ2VudElUU01Db25maWdJdGVtIGvDqXBlcm55xZFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrZXJlc8Opc2kga29ybMOhdG90IGF6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gga8OpcGVybnnFkW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0ga8OpcGVybnnFkSBrZXJlc8Opc2kgaGF0w6Fyw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIGvDqXBlcm55xZEga2VyZXPDqXNpIGtvcmzDoXRqw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrb25maWd1csOhY2nDs2VsZW1layBtZWdqZWxlbsOtdGV0dCBvc3psb3BhaXQgYSBrYXBjc29sYXRpIHTDoWJsYSBrb21wbGV4IG7DqXpldMOpYmVuIGF6IMO2c3N6ZXMga29uZmlndXLDoWNpw7NlbGVtLW9zenTDoWx5bsOhbC4gSGEgbmluY3MgYmVqZWd5esOpcywgYWtrb3IgYXogYWxhcMOpcnRlbG1lemV0dCBvc3psb3BvayBsZXN6bmVrIG1lZ2plbGVuw610dmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgQ0ktayBtZWdqZWxlbsOtdGV0dCBvc3psb3BhaXQgYSBrYXBjc29sYXRpIHTDoWJsYSBrb21wbGV4IG7DqXpldMOpYmVuIGEgQ0kgb3N6dMOhbHl0w7NsIGbDvGdnxZFlbi4gTWluZGVuIGJlamVneXrDqXN0IGF6IG9zemxvcCBuZXZlIMOpcyBkdXBsYSBrZXR0xZFzcG9udCBlbMWRdGFnZ2FsIGtlbGwgZWxsw6F0bmkgKGF6YXogQ29tcHV0ZXI6OikuIFZhbiBuw6low6FueSBvbHlhbiBDSS1hdHRyaWLDunR1bSwgYW1lbHkga8O2esO2cyBtaW5kZW4gQ0ktdmVsIChww6lsZMOhdWwgYSBDb21wdXRlciBvc3p0w6FseW7DoWw6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIEF6IGVnecOpbmkgQ0ktYXR0cmliw7p0dW1vayBtZWdqZWxlbsOtdMOpc8OpaGV6LCBhaG9neSBhem9rIGEgQ0ktbWVnaGF0w6Fyb3rDoXNiYW4gbWVnIHZhbm5hayBhZHZhLCBhIGvDtnZldGtlesWRIHPDqW3DoXQga2VsbCBoYXN6bsOhbG5pIChww6lsZMOhdWwgYSBDb21wdXRlciBvc3p0w6FseW7DoWwpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSGEgZWd5IENJIG9zenTDoWx5aG96IG5pbmNzIGJlamVneXrDqXMsIGFra29yIGF6IGFsYXDDqXJ0ZWxtZXpldHQgb3N6bG9wb2sgbGVzem5layBtZWdqZWxlbsOtdHZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgYXogSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0w7pyYSBoYXJtYWRpayBzemludGrDqW4gbWVseSBlbGVtZWsgw6FsbG5hayByZW5kZWxrZXrDqXNyZSBheiAiQWN0aW9uIiAoTcWxdmVsZXQpIHN6w6Ftw6FyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphLCBob2d5IG1lbHkgZWxlbWVrIMOhbGxuYWsgcmVuZGVsa2V6w6lzcmUgYXogSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0w7pyYSBlbHPFkSBzemludGrDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgbWVseSBlbGVtZWsgw6FsbG5hayByZW5kZWxrZXrDqXNyZSBheiBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1a3TDunJhIG3DoXNvZGlrIHN6aW50asOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSwgaG9neSBtZWx5IGthcGNzb2xhdHTDrXB1c29rIChhIGplZ3kgbsOpesWRcG9udGrDoWLDs2wgZWxuZXZlenZlKSBiZWZvbHnDoXNvbGhhdGrDoWsgZWd5IGthcGNzb2x0IGtvbmZpZ3Vyw6FjacOzZWxlbSDDoWxsYXBvdMOhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphLCBob2d5IG1lbHkgamVneXTDrXB1cyBiZWZvbHnDoXNvbGhhdGphIGVneSBrYXBjc29sdCBrb25maWd1csOhY2nDs2VsZW0gw6FsbGFwb3TDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnTWVnaGF0w6Fyb3rDoXMgZnJpc3PDrXTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1csOhY2nDs2VsZW0gdMO2cmzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnw5x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdCBzesOtbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0tldHTFkXrDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEaW5hbWlrdXMgbWV6xZEgZXNlbcOpbnltb2R1bCwgYW1lbHkgYSBrb25maWd1csOhY2nDs3MgZWxlbSBkZWZpbsOtY2nDs2l0IHN6aW5rcm9uaXrDoWxhdGxhbm5hayBqZWzDtmxpLCBoYSBhIGRpbmFtaWt1cyBtZXrFkWsgbWVndsOhbHRvem5hay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgdG92w6FiYmkgSVRTTSBtZXrFkSBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsOtdGV0dCBkaW5hbWlrdXMgbWV6xZFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5ZsOpbGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzcyBlbGVtIMOhdHRla2ludMWRIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuxZEgZGluYW1pa3VzIG1lesWRay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3luw7ZraSBmZWzDvGxldCBrb25maWd1csOhY2nDs3MgZWxlbWtlcmVzxZEga8OpcGVybnnFkWrDqW4gbWVnamVsZW7FkSBkaW5hbWlrdXMgbWV6xZFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdFbmdlZMOpbHllemkgYSBrb25maWd1csOhY2nDs2VsZW0gdMO2bWVnZXMgbcWxdmVsZXQgZnVua2Npw7N0IGF6IMO8Z3lpbnTDqXrFkWkgZWzFkXTDqXRwcm9ncmFtbsOhbCwgaG9neSBlZ3lzemVycmUgZWd5bsOpbCB0w7ZiYiBrb25maWd1csOhY2nDs2VsZW1tZWwgZG9sZ296aGFzc29uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQ3NhayBhIGZlbHNvcm9sdCBjc29wb3J0b2tuYWsgZW5nZWTDqWx5ZXppIGEga29uZmlndXLDoWNpw7NlbGVtIHTDtm1lZ2VzIG3FsXZlbGV0IGZ1bmtjacOzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnQXogSVRTTSBvbmZpZ3VyYXRpb24gZWxlbWVrIGVneWVkaSBuZXbDqW5layBlbGxlbsWRcnrDqXPDqXJlIHN6b2xnw6Fsw7MgZnVua2Npw7MgZW5nZWTDqWx5ZXrDqXNlL2xldGlsdMOhc2EuIE1pZWzFkXR0IGVuZ2Vkw6lseWV6bsOpIGV6dCBhIGJlw6FsbMOtdMOhc3QsIGVsbGVuxZFyaXp6ZSBhIHJlbmRzemVyw6l0IGEgbcOhciBtZWdsw6l2xZEsIGR1cGxpa8OhbHQgbmV2xbEga29uZmlndXLDoWNpw7NzIGVsZW1layB0ZWtpbnRldMOpYmVuLiBFenQgYXogQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzIGtvbnpvbHBhcmFuY2NzYWwgdGVoZXRpIG1lZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnRXNlbcOpbnltb2R1bCBhIGtvbmZpZ3Vyw6FjacOzZWxlbSDDoWxsYXBvdMOhbmFrIGJlw6FsbMOtdMOhc8OhaG96IGVneSBqZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBoaXZhdGtvesOhc8Ohbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQSBrb25maWd1csOhY2nDs3MgZWxlbWluZGV4IG1lesWRaSwgYW1lbHlla2V0IGEgdGVsamVzIHN6w7Z2ZWdlcyBrZXJlc8Opc2hleiBoYXN6bsOhbG5hay4gQSBtZXrFkWsgc3ppbnTDqW4gdMOhcm9sw6FzcmEga2Vyw7xsbmVrLCBkZSBheiDDoWx0YWzDoW5vcyBmdW5rY2lvbmFsaXTDoXMgc3plbXBvbnRqw6Fiw7NsIG5lbSBrw7Z0ZWxlesWRZWsuIEEgbWVsbMOpa2xldGVrIGJldm9uw6FzYSBsZXRpbHRoYXTDsyBhIGJlamVneXrDqXMgMC1yYSDDoWxsw610w6Fzw6F2YWwgdmFneSB0w7ZybMOpc8OpdmVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQSBrb25maWd1csOhY2nDs3MgZWxlbWluZGV4YmVuIHTDoXJvbHQgbWV6xZFrLCBhbWVseWVrZXQgYSB0ZWxqZXMgc3rDtnZlZ2VzIGtlcmVzw6lzZW4ga8OtdsO8bCBtw6FzcmEgaXMgaGFzem7DoWxuYWsuIEEgdGVsamVzIGZ1bmtjaW9uYWxpdMOhcyDDqXJkZWvDqWJlbiBtaW5kZW4gbWV6xZEga8O2dGVsZXrFkS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdNaW5kZW4gZWd5ZXMgd2Vic3pvbGfDoWx0YXTDoXNob3ogKGt1bGNzKSBtZWdhZGhhdMOzIGVneSBzb3Igb3N6dMOhbHkgKMOpcnTDqWspLCBhbWVseWVrcmUgYXogaW1wb3J0w6Fsw6FzIGtvcmzDoXRvenZhIHZhbi4gQXogw7Zzc3plcyBraXbDoWxhc3p0b3R0IG9zenTDoWx5aG96IHZhZ3kgYXogw7Zzc3plcyBsw6l0ZXrFkSBvc3p0w6FseWhveiBheiBhem9ub3PDrXTDsyBhdHRyaWLDunR1bW9rYXQga2VsbCBraXbDoWxhc3p0YW5pIGF6IGludm9rZXIga29uZmlndXLDoWNpw7NiYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWwgcmVnaXN6dHLDoWNpw7MgYSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciByw6l0ZWdoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bCByZWdpc3p0csOhY2nDsyBhIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIHLDqXRlZ2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bCByZWdpc3p0csOhY2nDsyBhIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIHLDqXRlZ2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTSBrb25maWd1csOhY2nDs2VsZW0gw6F0dGVraW50w6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSB0ZWxlcMOtdMOpc2kgw6FsbGFwb3Rva2F0IHRhcnRhbG1henphIGF6IMO8Z3lmw6lsZmVsw7xsZXQga29uZmlndXLDoWNpw7NzIGVsZW1rZXJlc8WRasOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVsZcOpcnR2ZSBheiBpbmNpZGVuc8OhbGxhcG90b2thdCBheiDDvGd5ZsOpbGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzcyBlbGVta2VyZXPFkWrDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0EgbcWxdmVsZXQgZXJlZG3DqW55w6liZW4gbWVnamVsZW7DrXRlbmTFkSBrb25maWd1csOhY2nDs3MgZWxlbWVrIG1heGltw6FsaXMgc3rDoW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ0VneSBtb2R1bCBlZ3kgb3N6dMOhbHnDqXJ0IGZlbGVsxZFzIGNzb3BvcnQgZWxsZW7FkXJ6w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnRWd5IG1vZHVsIGVneSBrb25maWd1csOhY2nDs2VsZW3DqXJ0IGZlbGVsxZFzIGNzb3BvcnQgZWxsZW7FkXJ6w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnRWd5IG1vZHVsIElUU00ga29uZmlndXLDoWNpw7NlbGVtIHN0YXRpc3p0aWvDoWsgZWzFkcOhbGzDrXTDoXPDoWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOw6l2IG1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdTesOhbSBtb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5bsO2a2kgZmVsw7xsZXRlbiBhIGtlcmVzw6lzaSBlcmVkbcOpbnllayBlZ3llcyBvbGRhbGFpbiBtZWdqZWxlbsOtdGVuZMWRIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWsgc3rDoW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5ZsOpbGZlbMO8bGV0ZW4gYSBrZXJlc8Opc2kgZXJlZG3DqW55ZWsgbWluZGVuIGVneWVzIG9sZGFsw6FuIG1lZ2plbGVuw610ZW5kxZEga29uZmlndXLDoWNpw7NzIGVsZW1layBzesOhbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnQSBrZXJlc2VuZMWRIG9iamVrdHVtb2ssIGjDoW55IGJlamVneXrDqXMgw6lzIG1pbHllbiBhdHRyaWLDunR1bW9rIGplbGVuamVuZWsgbWVnLiBBIENvbmZpZ0l0ZW0gYXR0cmliw7p0dW1va2F0IGtpZmVqZXpldHRlbiBheiBFbGFzdGljc2VhcmNoIHNlZ8OtdHPDqWfDqXZlbCBrZWxsIHTDoXJvbG5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfDgXR0ZWtpbnTDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIGtvbmZpZ3Vyw6FjacOzcyBlbGVtb3N6dMOhbHlvayBrYXRlZ8OzcmnDoWluYWsgcGFyYW3DqXRlcmVpIGF6IMO8Z3luw7ZraSBmZWzDvGxldCBiZcOhbGzDrXTDoXNvayBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIGtpcyBrb25maWd1csOhY2nDs3MgZWxlbWVrIMOhdHRla2ludMOpc8OpbmVrIG9zemxvcHN6xbFyxZFpbmVrIHBhcmFtw6l0ZXJlaS4gTWVnamVneXrDqXM6IGF6ICJBa3TDrXYiIDAtcmEgw6FsbMOtdMOhc2EgY3NhayBhenQgYWthZMOhbHlvenphIG1lZywgaG9neSBheiDDvGd5bsO2a8O2ayBzemVya2Vzc3rDqWsgYSBjc29wb3J0IGJlw6FsbMOtdMOhc2FpdCBhIHN6ZW3DqWx5ZXMgYmXDoWxsw610w6FzYWlrYmFuLCBkZSBhIHJlbmRzemVyZ2F6ZMOha25hayB0b3bDoWJicmEgaXMgbGVoZXTFkXbDqSB0ZXN6aSwgaG9neSBlZ3kgbcOhc2lrIGZlbGhhc3puw6Fsw7MgbmV2w6liZW4gc3plcmtlc3N6w6lrIGEgYmXDoWxsw610w6Fzb2thdC4gQSBcJ1ByZWZlcmVuY2VHcm91cFwnIHNlZ8OtdHPDqWfDqXZlbCBzemFiw6FseW96aGF0amEsIGhvZ3kgZXplayBhIGJlw6FsbMOtdMOhc29rIG1lbHlpayB0ZXLDvGxldGVuIGplbGVuamVuZWsgbWVnIGEgZmVsaGFzem7DoWzDs2kgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBheiDDvHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90b2sgc3rDrW5laWhleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBheiDDvHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90b2tob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldCBiZcOhbGzDrXTDoXNvayBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGF6IMOhbHRhbMOhbm9zIGthdGFsw7NndXMgYXR0cmliw7p0dW1haW5hayBww6lsZGEgam9nb3N1bHRzw6FnIGNzb3BvcnRqYWlob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBrb25maWd1csOhY2nDs3MgZWxlbW9zenTDoWx5b2sgbsOpdm1vZHVsasOhbmFrIHBhcmFtw6l0ZXJlaSBheiDDvGd5bsO2a2ZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBrb25maWd1csOhY2nDs3MgZWxlbW9zenTDoWx5b2sgc3rDoW1tb2R1bGrDoW5hayBwYXJhbcOpdGVyZWkgYXogw7xneW7DtmtmZWzDvGxldCBiZcOhbGzDrXTDoXNvayBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGF6IG9sZGFsYWtob3ogKGFtZWx5ZWtlbiBhIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIG1lZ2plbGVubmVrKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBrb25maWd1csOhY2nDs3MgZWxlbW9zenTDoWx5b2sgdmVyemnDs3N6dHJpbmcgbW9kdWxqw6FuYWsgcGFyYW3DqXRlcmVpIGF6IMO8Z3luw7ZraSBmZWzDvGxldCBiZcOhbGzDrXTDoXNvayBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5bsO2a2kgZmVsw7xsZXQgYmXDoWxsw610w6Fzb2sgbsOpemV0w6liZW4gYSBrb25maWd1csOhY2nDs3MgZWxlbW9zenTDoWx5b2sga29uZmlndXLDoWNpw7NzIGVsZW1vc3p0w6FseWFpaG96IHRhcnRvesOzIHZlcnppw7NzenRyaW5nIHNhYmxvbiBlc3prw7Z6a8Opc3psZXQgbW9kdWxqw6FuYWsgcGFyYW3DqXRlcmVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIGtvbmZpZ3Vyw6FjacOzcyBlbGVtb3N6dMOhbHlvayB2ZXJ6acOzaW5kw610w7Nqw6FuYWsgcGFyYW3DqXRlcmVpIGF6IMO8Z3luw7ZraSBmZWzDvGxldCBiZcOhbGzDrXTDoXNvayBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdWw6lncmVoYWp0amEgYSBiZcOhbGzDrXRvdHQgbcWxdmVsZXRldCBtaW5kZW4gZXNlbcOpbnluw6lsIChtaW50IGVneSBtZWdow612w7MpIG1pbmRlbiBlZ3llcyBiZcOhbGzDrXRvdHQgd2Vic3pvbGfDoWx0YXTDoXNob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdKb2dvc3VsdHPDoWdpIGNzb3BvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogSVRTTSBrb25maWd1csOhY2nDs3MgZWxlbSBjc2F0b2zDoXNpIG3FsXZlbGV0IGhhc3puw6FsYXTDoWhveiBzesO8a3PDqWdlcyBlbmdlZMOpbHllayBheiDDvGd5bsO2a2kgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Egc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW0ga8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Egc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW0ga2VyZXPDqXNpIGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiBJVFNNIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWsga2VyZXPDqXNpIGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGF6IMO8Z3lmw6lsZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiBJVFNNIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZsOhdCBtZWdqZWxlbsOtdMWRIGvDqXBlcm55xZEgaGFzem7DoWxhdMOhaG96IHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGF6IMO8Z3luw7ZraSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGF6IElUU00ga29uZmlndXLDoWNpw7NlbGVtIG5hZ3nDrXTDoXNpIGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGF6IElUU00ga29uZmlndXLDoWNpw7NlbGVtIGhvenrDoWFkw6FzYSBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IElUU00ga29uZmlndXLDoWNpw7NzIGVsZW1layDDtm1sZXN6dGV0dCBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiDDvGd5bsO2a2kgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbSBzemVya2VzenTDqXNlIGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbSBlbMWRem3DqW55ZWsga8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbSBueW9tdGF0w6FzYSBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdBIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGEga29uZmlndXLDoWNpw7NlbGVtZWsgdMO2cmzDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdLb25maWd1csOhY2nDs2VsZW1layBrZXJlc8Opc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdFZ3kga29uZmlndXLDoWNpw7NlbGVtIGluY2lkZW5zw6FsbGFwb3TDoW5hayBhdXRvbWF0aWt1cyBiZcOhbGzDrXTDoXNhLCBhbWlrb3IgZWd5IGplZ3lldCBrYXBjc29sbmFrIGVneSBrb25maWd1csOhY2nDs2VsZW1oZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmXDoWxsw610amEgYXogw7x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdG90IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIHTDtm1lZ2VzIG3FsXZlbGV0IGvDqXBlcm55xZFqw6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZcOhbGzDrXRqYSBheiBpbmNpZGVuc8OhbGxhcG90b3QgYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0gdMO2bWVnZXMgbcWxdmVsZXQga8OpcGVybnnFkWrDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiwgYW1lbHkgbGVoZXTFkXbDqSB0ZXN6aSBlZ3kga29uZmlndXLDoWNpw7NlbGVtIMO2c3N6ZWthcGNzb2zDoXPDoXQgZWd5IG3DoXNpayBvYmpla3R1bW1hbCBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtIGVsxZF6bcOpbnllaW5layBlbMOpcsOpc8OpaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRasOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVpbmVrIGVsw6lyw6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtIHTDtnJsw6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdNZWdqZWxlbsOtdCBlZ3kgbGlua2V0IGEgbWVuw7xiZW4gYSBrb25maWd1csOhY2nDs3MgZWxlbWVrIGhpdmF0a296w6FzYWluYWsgZmEgbsOpemV0YmVuIHTDtnJ0w6luxZEgbWVnamVsZW7DrXTDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrb25maWd1csOhY2nDs2VsZW0ga2V0dMWResOpc8OpaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRasOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrb25maWd1csOhY2nDs2VsZW0ga2V0dMWResOpc8OpaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiBheiBlbGVtIG5hZ3nDrXTDoXNpIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtIHN6ZXJrZXN6dMOpc8OpaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiBheiBlbGVtIG5hZ3nDrXTDoXNpIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbSBuYWd5w610w6FzaSBuw6l6ZXRoZXogdmFsw7Mgdmlzc3phdMOpcsOpc2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrb25maWd1csOhY2nDs2VsZW0gbnlvbXRhdMOhc8OhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiBheiBlbGVtIG5hZ3nDrXTDoXNpIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbWJlIHTDtnJ0w6luxZEgbmFnecOtdMOhc2hveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbSDDoXR0ZWtpbnTFkWrDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2plbGVuw610aSBhIGtvbmZpZ3Vyw6FjacOzZWxlbSBlbMWRem3DqW55ZWl0IChmb3Jkw610b3R0IHNvcnJlbmRiZW4pIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnQXogYWxhcMOpcnRlbG1lemV0dCBrYXRlZ8OzcmlhLCBhbWVseSBtZWdqZWxlbmlrLCBoYSBuaW5jcyBraXbDoWxhc3p0dmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdFZ3kga29uZmlndXLDoWNpw7NlbGVtIGF6b25vc8OtdMOzamEsIHDDqWxkw6F1bDogQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIEF6IGFsYXDDqXJ0ZWxtZXpldHQ6IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0F1dG9tYXRpa3VzYW4ga2l2w6FsdGphIGEgQ29uZmlnSXRlbUZldGNoIGjDrXbDs3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJ6acOzIGthcmFrdGVybMOhbmMga2lmZWplesOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaW9uIFN0cmluZyBtb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJ6acOzIGtpdsOhbHTDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICdBIG1lesWRayBhdXRvbWF0aWt1c2FuIGtpIGxlZ3llbmVrLWUgdMO2bHR2ZSAoMSksIMOpcyBlYmJlbiBheiBlc2V0YmVuIGVsIGxlZ3llbmVrLWUgcmVqdHZlIGEgamVnecWxcmxhcG9rcsOzbCAoMikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ0Vsa2Vyw7xsaGV0xZEtZSBhIENvbmZpZ0l0ZW1BQ0wgdsOpZ3JlaGFqdMOhc2EgYSBneW9yc8OtdMOzdMOhcmJhbiB0w6Fyb2x0IG1lesWRZsO8Z2fFkXPDqWdlayBlbGxlbsWRcnrDqXPDqXZlbC4gRXogamF2w610aGF0amEgYXogxbFybGFwb2sgYmV0w7ZsdMOpc2kgaWRlasOpdCwgZGUga2kga2VsbCBrYXBjc29sbmksIGhhIGF6IEFDTE1vZHVsb2thdCBheiBJVFNNQ29uZmlnSXRlbS0gw6lzIEZvcm0tUmV0dXJuVHlwZSB0w61wdXNvayBlc2V0w6liZW4ga2VsbCBoYXN6bsOhbG5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnTWlseWVuIMOhbHRhbMOhbm9zIGluZm9ybcOhY2nDs2sgamVsZW5uZWsgbWVnIGEgZmVqbMOpY2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdvc3p0w6FseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iw6FsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdiZcO8emVtZWzDqXMgdXTDoW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ2Jlw7x6ZW1lbMOpcyBlbMWRdHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ2Jlw7x6ZW1lbHZlJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiA0NCw0NSBjbSAoMTcsNSBow7x2ZWx5ayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogNTMsMzQgY20gKDIxIGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiA2Niw2OCBjbSAoMjYsMjUgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogODAsMDEgY20gKDMxLDUgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5IGjDvHZlbHlrZXMgw6FsbHbDoW55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSBow7x2ZWx5ayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiA4OCw5IGNtICgzNSBow7x2ZWx5ayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEgaMO8dmVseWtlcyDDoWxsdsOhbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IGjDvHZlbHlrICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMgaMO8dmVseWtlcyDDoWxsdsOhbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IGjDvHZlbHlrICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiAxMDYsNjggY20gKDQyIGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgaMO8dmVseWsgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDgsODkgY20gKDMsNSBow7x2ZWx5ayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogMTMzLDM1IGNtICg1Miw1IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgaMO8dmVseWsgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IGjDvHZlbHlrICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBow7x2ZWx5ayAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogMTYwLDAyIGNtICg2MyBow7x2ZWx5ayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBow7x2ZWx5ayAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IGjDvHZlbHlrICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDEzLDM0IGNtICg1LDI1IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiAxODYsNjkgY20gKDczLDUgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIGjDvHZlbHlrICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDIwMCwwMiBjbSAoNzgsNzUgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgaMO8dmVseWsgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiAyMTMsMzYgY20gKDg0IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiAxNyw3OCBjbSAoNyBow7x2ZWx5ayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogMjIsMjMgY20gKDgsNzUgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDI2LDY3IGNtICgxMCw1IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMzEsMTIgY20gKDEyLDI1IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMzUsNTYgY20gKDE0IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogNDAsMDEgY20gKDE1LDc1IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ1N6w6Ftdml0ZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdDw61ta2lvc3p0w6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzenRyw6F0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbMOzZyB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnS8Opc3rDvGzDqWsgdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0Fra3VtdWzDoXRvciBrYXBhY2l0w6FzIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnQWtrdW11bMOhdG9yIHTDrXB1c2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfDiXDDvGxldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzeiBpbnRlcmbDqXN6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVIG9zenTDoWx5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdLYXBhY2l0w6FzIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaWt1cyBrw6FydHnDoW5rw6ludGkga2FwYWNpdMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0vDoXJ0eWEgc3rDoW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS8OhcnR5YW9sdmFzw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnS8OhcnR5YSB0w61wdXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICfDnGd5ZsOpbHRhbsO6c8OtdHbDoW55b2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnw5xneWbDqWxzem9mdHZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICfDnGd5ZsOpbCBrYXRlZ8OzcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0Nsb2NrcmF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnQ2xvY2tzcGVlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS8OzZGFsw6HDrXLDsyB0YW7DunPDrXR2w6FueW9rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJlbmNpYXRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdUYW7DoWNzYWTDoXNpIG1lZ8OhbGxhcG9kw6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLYXBjc29sYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0thcGNzb2xhdCBhIGZvcmdhbG1hesOzdmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnS29udMOpbmVyIG1lbmVkenNtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnU3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1N6ZXJ6xZFkw6lzIHTDrXB1c2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdBIHN6ZXJ6xZFkw6lzIGlkxZF0YXJ0YW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0Egc3plcnrFkWTDqXMgaWTFkXRhcnRhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVmV6ZXTDqWsgbsOpbGvDvGxpIHRlbGVmb24gKERFQ1QgdGVsZWZvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnS8O2bHRzw6lndmlzZWzFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0F6IGVuZ2Vkw6lseWVrIHN6w6FtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnTMOpdHJlaG96w6FzIGTDoXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0VneWVkaSBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIEZlbm50YXJ0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy1raXN6b2xnw6Fsw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0Egc3rDoW1sYSBkw6F0dW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdBIG1lZ3JlbmRlbMOpcyBkw6F0dW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdBIGdhcmFuY2lhIGTDoXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnQSBraWFkw6FzIGTDoXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0FzenRhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW50dW0gYWzDocOtcsOzIHRhbsO6c8OtdHbDoW55b2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtbWFpbCB0YW7DunPDrXR2w6FueW9rIChTL01JTUUgdGFuw7pzw610dsOhbnlvayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnTXVua2FzemVyesWRZMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ1bDqWcgSVAtY8OtbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0EgdMOhbW9nYXTDoXMgbWVnc3rFsW7DqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnTGVqw6FyYXRpIGTDoXR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnS8O8bHPFkSBtZXJldmxlbWV6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnVMWxemZhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnTGVuZGtlcmVrZXMgZW5lcmdpYXTDoXJvbMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zvcm1hZmFrdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2UgbWVnw6FsbGFwb2TDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICfDgWx0YWzDoW5vcyBpbmZvcm3DoWNpw7NrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlrdXMga8OhcnR5w6FrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaWt1cyBrw6FydHlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ0hhcmR2ZXJlcyBtb2RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnSGFyZHZlciBzw7pseWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0ZlamhhbGxnYXTDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQIHByb3Rva29sbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0w6FzLSDDqXMgaG96esOhZsOpcsOpcy1rZXplbMOpcyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTGVsdMOhcmkgc3rDoW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdJbnZlcnRlcmvDtmx0c8OpZ2VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnU3rDoW1sYSBzesOhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdCaWxsZW50ecWxemV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCBtb25pdG9yIChmb2x5YWTDqWtrcmlzdMOhbHlvcyBraWplbHrFkSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCBtb25pdG9yIChmw6lueWtpYm9jc8OhdMOzIGRpw7NkYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVmV6ZXTDqWtlcyB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ1N6w6lsZXNzw6lnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnMS4gcsOpdGVnOiBGaXppa2FpIHLDqXRlZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcyLiByw6l0ZWc6IGFkYXRrYXBjc29sYXRpIHLDqXRlZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnMy4gcsOpdGVnOiBIw6Fsw7N6YXRpIHLDqXRlZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICczLiByw6l0ZWc6IEjDoWzDs3phdGkgcsOpdGVnIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnNC4gcsOpdGVnOiBTesOhbGzDrXTDoXNpIHLDqXRlZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnNS4gcsOpdGVnOiBNdW5rYW1lbmV0csOpdGVnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJzYuIHLDqXRlZzogQmVtdXRhdMOhc2kgcsOpdGVnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnNy4gcsOpdGVnOiBBbGthbG1hesOhc2kgcsOpdGVnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0LDqXJsZXRpIHN6ZXJ6xZFkw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5jc3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpY2VuYyBrdWxjcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdMaWNlbmMgdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5jaWTFkXN6YWsgYSBrw7Z2ZXRrZXrFkSBpZMWRcG9udHTDs2wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaWNlbmNpZMWRc3phayBhIGvDtnZldGtlesWRIGlkxZFwb250aWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0zDrXRpdW0gdmFzLWZvc3pmw6F0IChMaUZlUE80KSBha2t1bXVsw6F0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0zDrXRpdW0taW9uIChMaS1pb24pIGFra3VtdWzDoXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0hpdGVsc3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0ViYmVuIHRhbMOhbGhhdMOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0hvc3N6w7pzw6FnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnR3nDoXJ0w7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01heGltw6FsaXMgdGVyaGVsaGV0xZFzw6lnIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW3Ds3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ01lbcOzcmlhIHTDrXB1c2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWxzesOhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbC9iZcOhZ3lhem90dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGVsbCBMZcOtcsOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdNb25pdG9yIGZlbGJvbnTDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnTW9uaXRvciBtw6lyZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnRWfDqXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ0jDoWzDs3phdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdIw6Fsw7N6YXRpIGluZm9ybcOhY2nDs2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0jDoWzDs3phdGkgaW5mb3Jtw6FjacOzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnSMOhbMOzemF0aSByw6l0ZWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWtrZWwta2FkbWl1bSAoTmlDZCkgYWtrdW11bMOhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlra2VsLW1ldMOhbGhpZHJpZCAoTmlNSCkgYWtrdW11bMOhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ1RpdG9rdGFydMOhc2kgbWVnw6FsbGFwb2TDoXMgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOb3RlYm9vayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ0NQVS1rIHN6w6FtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdSQU0gbW9kdWxvayBzesOhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnR3JhZmlrdXMga8OhcnR5w6FrIHN6w6FtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCBtb25pdG9yIChzemVydmVzIGbDqW55a2lib2Nzw6F0w7MgZGnDs2RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdNxbFrw7Zkw6lzaSBrw7ZsdHPDqWdlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdSZW5kZWzDqXNpIHN6w6FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnRWd5w6liJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdLaW1lbmV0ZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOLUvDk0QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdQYXJ0bmVyc8OpZ2kgbWVnw6FsbGFwb2TDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdUZWxlZm9uc3rDoW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RlbGVmb24gdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0ZpemlrYWkgbWFnb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdUZWxqZXPDrXRtw6lueXN6b2xnw6FsdGF0w6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnVsOhc8Ohcm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmFjayBtw6lseXPDqWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdSYWNrIGVneXPDqWdlayAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1N6b2JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNLWvDoXJ0eWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIHRhbsO6c8OtdHbDoW55b2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICfDiXJ0w6lrZXPDrXTDqXNpIHN6ZXJ6xZFkw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ03FsWhvbGRhcyB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1rDoXJ0IMOzbG9tYWtrdW11bMOhdG9yIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU29yc3rDoW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU3plcnZlciBzem9mdHZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1N6b2xnw6FsdGF0w6FzaSBtZWfDoWxsYXBvZMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1N6ZXJ2aXpjw61ta2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnQWxqemF0IHTDrXB1c2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTem9mdHZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0hhbmdzesOzcsOzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTemFidsOhbnlvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnSVAtY8OtbSBpbmTDrXTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdUw6Fyb2zDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdUw6Fyb2zDoXNpIHBhcnTDrWNpw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdMZcOhbnl2w6FsbGFsYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ8OWc3N6ZWZvZ2xhbMOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVGhpbiBDbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ1N6w6FsYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnR3JhZmlrdXMga8OhcnR5YSBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RlbGplcyBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnw4lyaW50xZFrw6lwZXJuecWRcyBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9yb255JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0IgaHViJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIgaGVhZHNldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmthbWVyYSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/id_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmlkX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRhIG9wZXJhc2kgdW11bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnUGVuZ2F0dXJhbiB1bnR1ayBkYXRhIHBlcm1pbnRhYW4geWFuZyBtYXN1ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ1BlbmdhdHVyYW4gdW50dWsgZGF0YSByZXNwb25zIGtlbHVhcic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ1BlbmdlbG9sYWFuIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICd1YmFoIGRlZmluaXNpIGtlbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdNZW5ndWJhaCBkZWZpbmlzaSBwZXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ0J1bmRlbCBLZWxhcyBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdEaSBzaW5pIEFuZGEgZGFwYXQgbWVuZ2ltcG9yIGJ1bmRlbCBrZWxhcyBSZWFkeTJJbXBvcnQgeWFuZyBtZW5hbXBpbGthbiBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgcGFsaW5nIHVtdW0uIEhhcmFwIGRpY2F0YXQgYmFod2EgYmViZXJhcGEga29uZmlndXJhc2kgdGFtYmFoYW4gbXVuZ2tpbiBkaXBlcmx1a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdNZW1wZXJiYXJ1aSBlbnRpdGFzIHlhbmcgYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnTWVuZ2ltcG9yIGJ1bmRlbCBrZWxhcyBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0tlbGFzIEl0ZW0gS29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ1BlcmFuIEl0ZW0gS29uZmlndXJhc2knOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnSXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdTYXJpbmdhbiB1bnR1ayBrZWxhcy1rZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdQaWxpaCBzYXR1IGtlbGFzIGRhcmkgZGF0YXIgdW50dWsgbWVtYnVhdCBzZWJ1YWggaXRlbSBrb25maWd1cmFzaSBiYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2VsYXMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdUaW5kYWthbiBtYXNhbCBJdGVtS29uZmlndXJhc2kgSVRTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU3RhdHVzIHBlbnllYmFyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdTdGF0dXMgaW5zaWRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdUYXV0YW4gdW50dWsga2UgbGFpbm55YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTm9tb3IgaXRlbSBrb25maWd1cmFzaSB0aWRhayBzYWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnSnVtbGFoIGl0ZW0ga29uZmlndXJhc2kgbGFpbm55YSB5YW5nIGFrYW4gZGkgaHVidW5na2FuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnQXBha2FoIEFuZGEgYmVuYXItYmVuYXIgaW5naW4gbWVuZ2hhcHVzIGl0ZW0ga29uZmlndXJhc2kgaW5pPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYW1hIGl0ZW0ga29uZmlndXJhc2kgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOYW1hIGluaSB0ZWxhaCBkaSBndW5ha2FuIG9sZWggSXRlbUtvbmZpZ3VyYXNpIGRlbmdhbiBub21vcihub21vci1ub21vcikgYmVyaWt1dDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdOb21vciB2ZXJzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTm9tb3IgdmVyc2kgaXRlbSBrb25maWd1cmFzaSBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOb21vciBWZXJzaSBzdWRhaCBkaWd1bmFrYW4gb2xlaCBDb25maWdJdGVtcyBkZW5nYW4gTm9tb3IgYmVyaWt1dCBpbmk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdTdGF0dXMgcGVueWViYXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0tvbmRpc2kgaW5zaWRlbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnUml3YXlhdCBJdGVtIEtvbmZpZ3VyYXNpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdJc2kgc2VqYXJhaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQnVhdFdha3R1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1BhbmRhbmdhbiBkZWthdCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdJdGVtIGtvbmZpZ3VyYXNpIHBlciBoYWxhbWFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdUaWRhayBkaXRlbXVrYW4gZGF0YSBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1BpbGloIGl0ZW0ga29uZmlndXJhc2kgaW5pJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnTXVsYWkgUGVuY2FyaWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0NhcmkgZGkgdmVyc2kgc2ViZWx1bW55YSBqdWdhID8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyB1bnR1ayBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnVGluZ2thdCBLZWRhbGFtYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdNZW1wZXJiZXNhci9NZW1wZXJrZWNpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdUaW5na2F0IHRhdXRhbiBtYWtzaW11bSB0ZXJjYXBhaSB1bnR1ayBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0l0ZW0gS29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXNpIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhdHVzIHBlbnllYmFyYWFuIHNhYXQgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdLb25kaXNpIGluc2lkZW4gc2FhdCBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnVGVyYWtoaXIgZGl1YmFoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1RlcmFraGlyIGRpcnViYWggb2xlaCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0l0ZW0gS29uZmlndXJhc2kgQW5kYSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdQZW5jYXJpYW4gSXRlbSBLb25maWd1cmFzaSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnSmVuaXMgT2JqZWsnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdQZW55YXJpbmdhbiBtZW51cnV0IGplbmlzJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnS2VsYXMta2VsYXMgYmVyaWt1dCBha2FuIGRpaW1wb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnUGVyYW4tcGVyYW4gYmVyaWt1dCBpbmkgYWthbiBkaWltcG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1BlcmhhdGlrYW4gYmFod2EgYmlkYW5nIGRpbmFtaXMgZGFuIGtlbGFzIEdlbmVyYWxDYXRhbG9nIHlhbmcgc2VzdWFpIGp1Z2EgYWthbiBkaWJ1YXQgZGFuIHRpZGFrIGFkYSBwZW5naGFwdXNhbiBvdG9tYXRpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdBcGFrYWggQW5kYSBpbmdpbiBtZWxhbmp1dGthbj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnQnV0dWggRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0RlZmluaXNpIHRpZGFrIGFkYSBoYXNoIFlBTUwgeWFuZyB2YWxpZC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdHYW1iYXJhbiB1bXVtOiBJdGVtIEtvbmZpZ3VyYXNpIElUU00nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnVGlkYWsgYWRhIENvbmZpZ0l0ZW1JRCB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdBbmRhIG1lbWVybHVrYW4gc2V0aWRha255YSBzYXR1IEl0ZW0gS29uZmlndXJhc2kgeWFuZyBkaXBpbGloISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ0FuZGEgdGlkYWsgbWVtaWxpa2kgYWtzZXMgdHVsaXMga2UgaXRlbSBrb25maWd1cmFzaSBpbmk6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdUaWRhayBhZGEgZGVmaW5pc2kgeWFuZyBkaWRlZmluaXNpa2FuIHVudHVrIGtlbGFzICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnSXRlbSBrb25maWd1cmFzaSAiJXMiIHRpZGFrIGRpdGVtdWthbiBkYWxhbSBkYXRhYmFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdUaWRhayBkYXBhdCBtZW5naGFwdXMgSUQga29uZmlndXJhc2kgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdUaWRhayBkaXRlbXVrYW4gdmVyc2kgdW50dWsgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdUaWRhayBhZGEgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBhdGF1IENsYXNzSUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdUaWRhayBhZGEgYWtzZXMgeWFuZyBkaWJlcmlrYW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ1RpZGFrIGRhcGF0IG1lbmFtcGlsa2FuIHJpd2F5YXQsIHRpZGFrIGFkYSBDb25maWdJdGVtSUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnVGlkYWsgZGFwYXQgbWVuYW1waWxrYW4gcml3YXlhdCwgdGlkYWsgYWRhIGhhayBha3NlcyB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ0l0ZW0gS29uZmlndXJhc2kgQmFydSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdWZXJzaSBiYXJ1IChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGF0dXMgcGVuZXJhcGFuIGRpcGVyYmFydWkgKGJhcnUgPSAlcywgbGFtYSA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGF0dXMgaW5zaWRlbiBkaXBlcmJhcnVpIChiYXJ1ID0gJXMsIGxhbWEgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgZGloYXB1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ1RhdXRhbiBrZSAlcyAodGlwZSA9ICVzKSBkaXRhbWJhaGthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnVGF1dGFuIGtlICVzICh0aXBlID0gJXMpIGRpaGFwdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0RlZmluaXNpIENvbmZpZ0l0ZW0gZGlwZXJiYXJ1aSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTmFtYSBkaXBlcmJhcnVpIChiYXJ1ID0gJXMsIGxhbWEgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0ICVzIGRpcGVyYmFydWkgZGFyaSAiJXMiIG1lbmphZGkgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaSAlcyBkaWhhcHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ1RpZGFrIGFkYSBDb25maWdJdGVtSUQgYXRhdSBWZXJzaW9uSUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ1RpZGFrIGRhcGF0IG1lbmFtcGlsa2FuIGl0ZW0ga29uZmlndXJhc2ksIHRpZGFrIGFkYSBoYWsgYWtzZXMgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEJSB0aWRhayBkaXRlbXVrYW4gZGFsYW0gZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdJdGVtS29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2RpY2V0YWsgb2xlaCVzIHBhZGElcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbnNpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnQ2xhc3NJRCB0aWRhayB2YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdUaWRhayBhZGEgQ2xhc3NJRCB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdUaWRhayBhZGEgaGFrIGFrc2VzIHVudHVrIGtlbGFzIGluaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1RpZGFrIGFkYSBoYXNpbCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdLb25maWd1cmFzaSBwZW5jYXJpYW4gbmlsYWknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ1RpZGFrIGRhcGF0IG1lbmFtcGlsa2FuIGl0ZW0sIHRpZGFrIGFkYSBoYWsgYWtzZXMgdW50dWsgQ29uZmlnSXRlbSB5YW5nIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSB0aWRhayBkaXRlbXVrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ1RpZGFrIGFkYSB2ZXJzaSB5YW5nIGRpdGVtdWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXNpb25hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAncGVyaW5nYXRhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luc2lkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YXR1cyBwZW55ZWJhcmFuIGl0ZW0ga29uZmlndXJhc2kgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhdHVzIGluc2lkZW4gaXRlbSBrb25maWd1cmFzaSBpbmknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdUaWRhayBhZGEgaXppbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIgdGlkYWsgdmFsaWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYXJhbWV0ZXIgcGVuY2FyaWFuIHRpZGFrIHZhbGlkISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ0l0ZW0ga29uZmlndXJhc2kgeWFuZyBkaXRhbXBpbGthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBlIHN0YXR1cyBwZW55ZWJhcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcGUgU3RhdHVzIGluc2lkZW4gc2FhdCBpbmknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRGlhbnRhcmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1BlbWJhdGFzYW4ga2VsYXMgdW50dWsgaXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnUGlsaWggc2F0dSBrZWxhcyBhdGF1IGxlYmloIHVudHVrIG1lbWJhdGFzaSBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgZGFwYXQgZGlwaWxpaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUGVtYmF0YXNhbiBrZWxhcyB1bnR1ayBpdGVtIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnUGlsaWggc2F0dSBrZWxhcyBhdGF1IGxlYmloIHVudHVrIG1lbWJhdGFzaSBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgZGFwYXQgZGlwaWxpaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0RpbmFtaXMgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXMgKFZlcnNpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdKZW5pcyBSZWZlcmVuc2kgVGF1dGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ0FwYWthaCB0YXV0YW4gaW5pIGJlcmxha3UgdW50dWsgQ29uZmlnSXRlbSBhdGF1IHZlcnNpIHN0YXRpcyBkYXJpIG9iamVrIHJlZmVyZW5zaS4gUGVyaGl0dW5nYW4gU3RhdHVzIEluc2lkZW4gc2FhdCBpbmkgaGFueWEgZGlsYWt1a2FuIHBhZGEgdGF1dGFuIGRpbmFtaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnUGlsaWggYXRyaWJ1dCB5YW5nIGFrYW4gZGljYXJpIGJlcmRhc2Fya2FuIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdTdHJ1a3R1ciBkYXNhciB0aWRhayB2YWxpZC4gQmVyaWthbiBoYXNoIGRlbmdhbiBkYXRhIGRhbGFtIGZvcm1hdCBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ01lbXVsYWkgc3RyaW5nIFlBTUwgZGVuZ2FuIFwnLS0tXCcgZGlwZXJsdWthbi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnVGlkYWsgZGFwYXQgbWVtYmVyc2loa2FuIHRhYmVsIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ1RpZGFrIGFkYSBiaWRhbmcgZGluYW1pcyB5YW5nIHJlbGV2YW4geWFuZyBkaXRlbXVrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdUaWRhayBkYXBhdCBtZW55aXNpcGthbiBrZSBkYWxhbSB0YWJlbCBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ01lbnlpc2lwa2FuIDAgYmFyaXMga2UgZGFsYW0gdGFiZWwgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ0p1bWxhaCBtYWtzaW11bSBkYXJpIDEgZWxlbWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0xhbXBpcmFuIEltcG9yL0Vrc3BvciAoc2ViYWdhaSBlbnRyaSB0ZXJha2hpciBwZXIgYmFyaXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnU3RyaW5nIFZlcnNpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0tlc2FsYWhhbiBtZW55aW5rcm9ua2FuIGRlZmluaXNpLiBTaWxha2FuIHBlcmlrc2EgbG9nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ0FuZGEgbWVtaWxpa2kgZGVmaW5pc2kgSVRTTUNvbmZpZ0l0ZW0geWFuZyB0aWRhayB0ZXJzaW5rcm9uaXNhc2kuIFRlcmFwa2FuIHBlcnViYWhhbiBiaWRhbmcgZGluYW1pcyBJVFNNQ29uZmlnSXRlbSBBbmRhLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnVGVsYWgga2FkYWx1YXJzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ1BlbWVsaWhhcmFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdUZWxhaCBkaXJlbmNhbmFrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUGVyYmFpa2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1BlbnNpdW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnVWxhc2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdVamkvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ0lraHRpc2FyIGRhbiBLb25maXJtYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ01lbmdpbXBvciBrZWxhcy9wZXJhbiBkYW4gYmlkYW5nIHRlcmthaXRueWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdUZXJqYWRpIGtlc2FsYWhhbiBzYWF0IG1lbmdpbXBvciBrZWxhcy4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFRlcnNlbWJ1bnlpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBEaXRhbXBpbGthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnTWVtdW5na2lua2FuIGtvbmRpc2kgcGVuY2FyaWFuIHlhbmcgZGlwZXJsdWFzIGRhbGFtIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgYW50YXJtdWthIGFnZW4uIERlbmdhbiBmaXR1ciBpbmksIEFuZGEgZGFwYXQgbWVuY2FyaSwgbWlzYWxueWEgbmFtYSBpdGVtIGtvbmZpZ3VyYXNpIGRlbmdhbiBrb25kaXNpIHNlcGVydGkgaW5pLCBzZXBlcnRpICIoKmtleTEqJiYqa2V5MiopIiBhdGF1ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnTWVtdW5na2lua2FuIGtvbmRpc2kgcGVuY2FyaWFuIHlhbmcgZGlwZXJsdWFzIGRhbGFtIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgYW50YXJtdWthIHBlbGFuZ2dhbi4gRGVuZ2FuIGZpdHVyIGluaSwgQW5kYSBkYXBhdCBtZW5jYXJpLCBtaXNhbG55YSBuYW1hIGl0ZW0ga29uZmlndXJhc2kgZGVuZ2FuIGtvbmRpc2kgc2VwZXJ0aSBpbmkgc2VwZXJ0aSAiKCprZXkxKiYmKmtleTIqKSIgYXRhdSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0NJIHlhbmcgZGl0dWdhc2thbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0kgeWFuZyBkaXR1Z2Fza2FuIGtlIHBlcnVzYWhhYW4gcGVsYW5nZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnQ0kgeWFuZyBkaWJlcmlrYW4ga2VwYWRhIHBlbmdndW5hIHBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnUGVuZ2F0dXJhbiBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdQZXJpa3NhIGhhbnlhIG5hbWEgdW5payBzYWphIGRpIGRhbGFtIGtlbGFzKFwna2VsYXNcJykgaXRlbWtvbmZpZ3VyYXNpIHlhbmcgc2FtYSBhdGF1IHNlY2FyYSBnbG9iYWwgKFwnZ2xvYmFsKSwgeWFuZyBiZXJhcnRpIHNldGlhcCBJdGVtS29uZmlndXJhc2kgeWFuZyBhZGEgYWthbiBkaXBlcmhpdHVuZ2thbiBrZXRpa2EgbWVuY2FyaSBkdXBsaWthdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnUGlsaWggbW9kdWwgdW50dWsgbWVuZXJhcGthbiBza2VtYSBwZW5hbWFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1BpbGloIG1vZHVsIHVudHVrIG1lbmVyYXBrYW4gc2tlbWEgYW5na2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1BpbGloIG1vZHVsIHVudHVrIG1lbmVyYXBrYW4gc2tlbWEgc3RyaW5nIHZlcnNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1BpbGloIGF0cmlidXQgdW50dWsgbWVtaWN1IHBlbWJ1YXRhbiB2ZXJzaSBiYXJ1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdQaWxpaCBrYXRlZ29yaSB5YW5nIGFrYW4gZGl0ZXRhcGthbiBrZSBrZWxhcyBpdGVtIGtvbmZpZ3VyYXNpIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdGVyIGl0ZW0ga29uZmlndXJhc2kga29sb20gdW50dWsgSWtodGlzYXIgSXRlbSBLb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0tvbG9tIHlhbmcgZGFwYXQgZGlmaWx0ZXIgZGFsYW0gaWtodGlzYXIgaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBhZ2VuLiBDYXRhdGFuOiBIYW55YSBhdHJpYnV0IEl0ZW0gS29uZmlndXJhc2kgZGFuIEJpZGFuZyBEaW5hbWlzIChEeW5hbWljRmllbGRfTmFtZVgpIHlhbmcgZGlwZXJib2xlaGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnaXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnVGFtYmFoIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnRWRpdCBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIHBlcmlzdGl3YSBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgbWVuZ2FrdGlma2FuIGxvZ2dpbmcga2Ugcml3YXlhdCBwYWRhIGFudGFybXVrYSBhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ01vZHVsIHBlcmlzdGl3YSBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgbWVtcGVyYmFydWkgaXRlbSBrb25maWd1cmFzaSBrZSBkZWZpbmlzaSBzYWF0IGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdSaXdheWF0IGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NldGFrIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnWm9vbSBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1RhbXBpbGFuIFBvaG9uIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnVmVyc2kgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBkYXJpIGtlbGFzLWtlbGFzIGJlcmlrdXQgaW5pIHRpZGFrIGFrYW4gZGlzaW1wYW4gZGkgc2VydmVyIEVsYXN0aWNzZWFyY2guIFVudHVrIG1lbmVyYXBrYW4gaW5pIHBhZGEgQ0kgeWFuZyBzdWRhaCBhZGEsIG1pZ3Jhc2kgQ0kgaGFydXMgZGlqYWxhbmthbiBtZWxhbHVpIGtvbnNvbCwgc2V0ZWxhaCBtZW5ndWJhaCBvcHNpIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgZGVuZ2FuIHN0YXR1cyBwZW55ZWJhcmFuIGJlcmlrdXQgdGlkYWsgYWthbiBkaXNpbXBhbiBkaSBzZXJ2ZXIgRWxhc3RpY3NlYXJjaC4gVW50dWsgbWVuZXJhcGthbiBpbmkgcGFkYSBDSSB5YW5nIHN1ZGFoIGFkYSwgbWlncmFzaSBDSSBoYXJ1cyBkaWphbGFua2FuIG1lbGFsdWkga29uc29sLCBzZXRlbGFoIG1lbmd1YmFoIG9wc2kgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdCYXRhcyBpdGVtIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1cmFzaSBCYXRhcyBpdGVtIHBlciBoYWxhbWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmFzaXMgRGF0YSBNYW5hamVtZW4gS29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdNb2R1bCBtYXNzYWwgaXRlbSBrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm91dGVyIHBlbmNhcmlhbiBiYWNrZW5kIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBhbnRhcm11a2EgYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdCdWF0IGRhbiBhdHVyIGRlZmluaXNpIC0gZGVmaW5pc2kgdW50dWsgaXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ01lbWJ1YXQgVGlrZXQgdW50dWsgQ29uZmlnSXRlbXMgcGFkYSB0aXRpayB3YWt0dSB0ZXJ0ZW50dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnUGVsYW5nZ2FuIGRhcGF0IG1lbGloYXQgdmVyc2kgQ0kgaGlzdG9yaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ1BlbGFuZ2dhbiBkYXBhdCBiZXJhbGloIHNlY2FyYSBtYW51YWwgZGkgYW50YXJhIHZlcnNpIENJIHRlcmRhaHVsdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEYXRhIGRlZmF1bHQgeWFuZyBha2FuIGRpZ3VuYWthbiBwYWRhIGF0cmlidXQgdW50dWsgbGF5YXIgcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kuIENvbnRvaDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0ID0gdGFodW47IElUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQgPSBUZXJha2hpcjsgSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQgPSAyOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGF0YSBkZWZhdWx0IHlhbmcgYWthbiBkaWd1bmFrYW4gcGFkYSBhdHJpYnV0IHVudHVrIGxheWFyIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpLiBDb250b2g6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXIgPSAyMDEwOyBJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoID0gMTA7IElUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5ID0gNDsgSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXIgPSAyMDEwOyBJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGggPSAxMTsgSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheSA9IDM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIFRpbmRha2FuIGFkYWxhaCB0b21ib2wgcGVuZ2F0dXJhbiB0ZXJzZWRpYSBkaSBvYmplayB3aWRnZXQgdGVya2FpdCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBIYXJhcCBkaWNhdGF0IGJhaHdhIFRpbmRha2FuIGluaSBoYXJ1cyB0ZWxhaCBtZW5kYWZ0YXJrYW4gYmVyaWt1dCBKUyBkYW4gQ1NTIGZpbGU6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gc2tlbWEgVGVtcGxhdGU6OlRvb2xraXQgdW50dWsgc3RyaW5nIHZlcnNpLiBIYW55YSBkaWd1bmFrYW4gamlrYSBNb2R1bCBTdHJpbmcgVmVyc2kgZGlhdHVyIGtlIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdUZW50dWthbiBzZXJhbmdrYWlhbiBrb25kaXNpIGRpIG1hbmEgcGVsYW5nZ2FuIGRpaXppbmthbiB1bnR1ayBtZWxpaGF0IGl0ZW0ga29uZmlndXJhc2kuIEtvbmRpc2kgZGFwYXQgc2VjYXJhIG9wc2lvbmFsIGRpYmF0YXNpIHVudHVrIGdydXAgcGVsYW5nZ2FuIHRlcnRlbnR1LiBOYW1hIGFkYWxhaCBzYXR1LXNhdHVueWEgYXRyaWJ1dCB3YWppYi4gSmlrYSB0aWRhayBhZGEgcGlsaWhhbiBsYWluIHlhbmcgZGliZXJpa2FuLCBzZW11YSBpdGVtIGtvbmZpZ3VyYXNpIGFrYW4gdGVybGloYXQgZGkgYmF3YWgga2F0ZWdvcmkgdGVyc2VidXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5naGFwdXMgaXRlbSBrb25maWd1cmFzaSBJVFNNIG1lbmdndW5ha2FuIEFudGFybXVrYSBHZW5lcmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4gaXppbiB5YW5nIGRpIGJ1dHVoa2FuIHVudHVrIG1lbmRhcGF0a2FuIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkZW5nYW4gbWVuZ2d1bmFrYW4gYW50YXJtdWthIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBpemluIHlhbmcgZGkgYnV0dWhrYW4gdW50dWsgbWVuY2FyaSBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGVuZ2FuIG1lbmdndW5ha2FuIGFudGFybXVrYSB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gaXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2F0dXIgaXRlbSBrb25maWd1cmFzaSBJVFNNIG1lbmdndW5ha2FuIEFudGFybXVrYSBHZW5lcmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBtb2R1bCBnYW1iYXJhbiB1bnR1ayBtZW51bmp1a2FuIHRhbXBpbGFuIGtlY2lsIGRhcmkgc2VidWFoIGRhZnRhciBpdGVtIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gYXBha2FoIGxhYmVsIGplbmlzIHRhdXRhbiBoYXJ1cyBkaXRhbXBpbGthbiBkaSBrb25la3NpIG5vZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBla3NwcmVzaSByZWd1bGFyIHNlY2FyYSBpbmRpdmlkdWFsIHVudHVrIHNldGlhcCBrZWxhcyBJdGVtS29uZmlndXJhc2kgdW50dWsgbWVtZXJpa3NhIG5hbWEgSXRlbUtvbmZpZ3VyYXNpIHVudHVrIG1lbnVuanVrYW4gcGVzYW4gZXJyb3IgeWFuZyBzZXN1YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBrb2xvbSBDSSB5YW5nIHRlcnNlZGlhIGRhbGFtIGlraHRpc2FyIGl0ZW0ga29uZmlndXJhc2kgdGVyZ2FudHVuZyBwYWRhIGtlbGFzIENJLiBTZXRpYXAgZW50cmkgaGFydXMgdGVyZGlyaSBkYXJpIG5hbWEga2VsYXMgZGFuIGxhcmlrIGtvbG9tIHlhbmcgdGVyc2VkaWEgdW50dWsga2VsYXMgeWFuZyBiZXJzYW5na3V0YW4uIEVudHJpIGJpZGFuZyBkaW5hbWlzIGhhcnVzIHNlc3VhaSBkZW5nYW4gc2tlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGF0cmlidXQgaXRlbSBrb25maWd1cmFzaSBkZWZhdWx0IHVudHVrIHBlbmd1cnV0YW4gaXRlbSBrb25maWd1cmFzaSBkYXJpIGhhc2lsIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZW50dWthbiBhdHJpYnV0IGl0ZW0ga29uZmlndXJhc2kgZGVmYXVsdCB1bnR1ayBwZW5ndXJ1dGFuIGl0ZW0ga29uZmlndXJhc2kgZGFyaSBoYXNpbCBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWVuZW50dWthbiBhdHJpYnV0IGl0ZW0ga29uZmlndXJhc2kgZGVmYXVsdCB1bnR1ayBwZW5ndXJ1dGFuIGl0ZW0ga29uZmlndXJhc2kgZGFyaSBoYXNpbCBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBvcGVyYXNpIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gdXJ1dGFuIGl0ZW0ga29uZmlndXJhc2kgZGVmYXVsdCBkYWxhbSBoYXNpbCBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBhZ2VuLiBBdGFzOiB0ZXJ0dWEgZGkgYXRhcy4gVHVydW46IHRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gdXJ1dGFuIGl0ZW0ga29uZmlndXJhc2kgZGVmYXVsdCBkYWxhbSBoYXNpbCBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uIEF0YXM6IHRlcnR1YSBkaSBhdGFzLiBUdXJ1bjogdGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZW5lbnR1a2FuIHVydXRhbiBpdGVtIGtvbmZpZ3VyYXNpIGRlZmF1bHQgZGFsYW0gaGFzaWwgcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgZGFyaSBvcGVyYXNpIGluaS4gQXRhczogdGVydHVhIGRpIGF0YXMuIFR1cnVuOiB0ZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGtvbG9tIENJIHlhbmcgZGl0YW1waWxrYW4gc2VjYXJhIGRlZmF1bHQgZGFsYW0gaWtodGlzYXIgaXRlbSBrb25maWd1cmFzaSB0ZXJnYW50dW5nIHBhZGEga2VsYXMgQ0kuIFNldGlhcCBlbnRyaSBoYXJ1cyB0ZXJkaXJpIGRhcmkgbmFtYSBrZWxhcyBkYW4gbGFyaWsgYmlkYW5nIHlhbmcgdGVyc2VkaWEgdW50dWsga2VsYXMgeWFuZyBzZXN1YWkuIEVudHJpIGJpZGFuZyBkaW5hbWlzIGhhcnVzIHNlc3VhaSBkZW5nYW4gc2tlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnTWVuZW50dWthbiBrZWRhbGFtYW4gcmVsYXNpIGRlZmF1bHQgeWFuZyBha2FuIGRpdGFtcGlsa2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGF0cmlidXQgcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgeWFuZyBkaXRhbXBpbGthbiBzZWNhcmEgZGVmYXVsdCB1bnR1ayBsYXlhciBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gYXRyaWJ1dCBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSB5YW5nIGRpdGFtcGlsa2FuIHNlY2FyYSBkZWZhdWx0IHVudHVrIGxheWFyIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpLiBDb250b2g6ICJLZXkiIGhhcnVzIG1lbWlsaWtpIG5hbWEgQmlkYW5nIERpbmFtaXMgZGFsYW0gaGFsIGluaSBcJ1hcJywgIkNvbnRlbnQiIGhhcnVzIG1lbWlsaWtpIG5pbGFpIEJpZGFuZyBEaW5hbWlzIHRlcmdhbnR1bmcgcGFkYSBqZW5pcyBCaWRhbmcgRGluYW1pcywgVGVrczogXCd0ZWtzXCcsIERyb3Bkb3duOiBcJzFcJywgVGFuZ2dhbC9XYWt0dTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhciA9IDE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aCA9IDAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5ID0gMjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyID0gMDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGUgPSAwMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZCA9IDAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyID0gMjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGggPSAwMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5ID0gMjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXIgPSAyMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlID0gNTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZCA9IDU5O1wnIGRhbiBhdGF1IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0ID0gbWluZ2d1OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydCA9IFNlYmVsdW07IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlID0gN1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIHN1Ym9iamVrIGRlZmF1bHQgZGFyaSBrZWxhcyBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBrb2xvbSBDSSB5YW5nIHRlcnNlZGlhIGRhbGFtIGlraHRpc2FyIGl0ZW0ga29uZmlndXJhc2kgdGVyZ2FudHVuZyBwYWRhIGtlbGFzIENJLiBTZXRpYXAgZW50cmkgaGFydXMgdGVyZGlyaSBkYXJpIG5hbWEga2VsYXMgZGFuIGxhcmlrIGtvbG9tIHlhbmcgdGVyc2VkaWEgdW50dWsga2VsYXMgeWFuZyBiZXJzYW5na3V0YW4uIEVudHJpIGJpZGFuZyBkaW5hbWlzIGhhcnVzIHNlc3VhaSBkZW5nYW4gc2tlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gdGluZ2dpIHVudHVrIGtvbXBvbmVuIGVkaXRvciB0ZWtzIGtheWEgdW50dWsgbGF5YXIgaW5pLiBNYXN1a2thbiBub21vciAocGlrc2VsKSBhdGF1IG5pbGFpIHBlcnNlbiAocmVsYXRpZikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIGp1bWxhaCBiYXJpcyB1bnR1ayBwZW5ndWJhaCBkZWZpbmlzaUNJIHBhZGEgYW50YXJtdWthIEFkbWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gdXJ1dGFuIHN0YXR1cyBpbnNpZGVuIGRhcmkgdGluZ2dpIChtaXMuIGtydXNpYWwpIGtlIHJlbmRhaCAobWlzLiBmdW5nc2lvbmFsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBzdGF0dXMgcGVueWViYXJhbiB5YW5nIHJlbGV2YW4gZGkgbWFuYSB0aWtldCB5YW5nIGRpdGF1dGthbiBkYXBhdCBtZW1lbmdhcnVoaSBzdGF0dXMgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4gYmF0YXMgcGVuY2FyaWFuIHVudHVrIGxheWFyIEFnZW50SVRTTUNvbmZpZ0l0ZW0gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4gYmF0YXMgcGVuY2FyaWFuIHVudHVrIExheWFyIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTWVuZW50dWthbiBiYXRhcyBwZW5jYXJpYW4gdW50dWsgbGF5YXIgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGJhdGFzIHBlbmNhcmlhbiB1bnR1ayBsYXlhciBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4ga29sb20gQ0kgeWFuZyBkaXRhbXBpbGthbiBkYWxhbSB0YW1waWxhbiBrb21wbGVrcyB0YWJlbCB0YXV0YW4gdW50dWsgc2VtdWEga2VsYXMgQ0kuIEppa2EgdGlkYWsgYWRhIGVudHJpLCBtYWthIGtvbG9tIGRlZmF1bHQgYWthbiBkaXRhbXBpbGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGtvbG9tIHlhbmcgZGl0YW1waWxrYW4gZGFyaSBDSSBkaSBsaW5rIHRhYmVsIHRhbXBpbGFuIHlhbmcga29tcGxla3MsIHRlcmdhbnR1bmcgcGFkYSBrZWxhcyBDSS4gU2V0aWFwIGVudHJpIGhhcnVzIGRpYXdhbGkgZGVuZ2FuIG5hbWEga2VsYXMgZGFuIHRpdGlrIGR1YSBnYW5kYSAoaS5lLiBDb21wdXRlcjo6KS4gQWRhIGJlYmVyYXBhIENJLUF0cmlidXQgeWFuZyB1bXVtIHVudHVrIHNlbXVhIENJIChDb250b2ggdW50dWsgS29tcHV0ZXIga2VsYXM6IEtvbXB1dGVyIDo6IE5hbWEsIEtvbXB1dGVyIDo6IEN1ckRlcGxTdGF0ZSwgS29tcHV0ZXIgOjogQ3JlYXRlVGltZSkuIFVudHVrIG1lbnVuanVra2FuIGluZGl2aWR1IENJLUF0cmlidXQgc2ViYWdhaW1hbmEgZGlkZWZpbmlzaWthbiBkYWxhbSBDSS1EZWZpbml0aW9uLCBza2VtYSBiZXJpa3V0IGhhcnVzIGRpZ3VuYWthbiAobWlzYWxueWEgdW50dWsgS29tcHV0ZXIga2VsYXMpOiAgQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIEppa2EgdGlkYWsgYWRhIGVudHJpIHVudHVrIGtlbGFzIENJLCBtYWthIGtvbG9tIHN0YW5kYXIgZGl0YW1waWxrYW4gc2ViYWdhaW1hbmEgZGlkZWZpbmlzaWthbiBkYWxhbSBwZW5nYXR1cmFuIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGl0ZW0gbWFuYSB5YW5nIHRlcnNlZGlhIHVudHVrIFwnVGluZGFrYW5cJyBkaSB0aW5na2F0IGtldGlnYSBkYXJpIHN0cnVrdHVyIEFDTCBJdGVtIEtvbmZpZ3VyYXNpIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gaXRlbSBtYW5hIHlhbmcgdGVyc2VkaWEgZGkgdGluZ2thdCBwZXJ0YW1hIHN0cnVrdHVyIEFDTCBJdGVtIEtvbmZpZ3VyYXNpIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGl0ZW0gbWFuYSB5YW5nIHRlcnNlZGlhIGRpIHRpbmdrYXQga2VkdWEgZGFyaSBzdHJ1a3R1ciBBQ0wgSXRlbSBLb25maWd1cmFzaSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBqZW5pcyB0YXV0YW4gbWFuYSAoZGluYW1haSBkYXJpIHBlcnNwZWt0aWYgdGlrZXQpIHlhbmcgZGFwYXQgbWVtZW5nYXJ1aGkgc3RhdHVzIENJIHlhbmcgZGl0YXV0a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGplbmlzIHRpa2V0IG1hbmEgeWFuZyBkYXBhdCBtZW1lbmdhcnVoaSBzdGF0dXMgQ0kgeWFuZyBkaXRhdXRrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnUGVtYmFydWFuIERlZmluaXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdNZW5naGFwdXMgSXRlbSBLb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ1dhcm5hIFN0YXR1cyBQZW55ZWJhcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWthdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHVsIHBlcmlzdGl3YSBiaWRhbmcgZGluYW1pcyB5YW5nIG1lbmFuZGFpIGRlZmluaXNpIGl0ZW0ga29uZmlndXJhc2kgc2ViYWdhaSB0aWRhayBzaW5rcm9uLCBqaWthIG1lbmdhbmR1bmcgcGVydWJhaGFuIGJpZGFuZyBkaW5hbWlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlkYW5nIGRpbmFtaXMgeWFuZyBkaXRhbXBpbGthbiBkaSBsYXlhciBiaWRhbmcgSVRTTSB0YW1iYWhhbiBwYWRhIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWRhbmcgZGluYW1pcyB5YW5nIGRpdGFtcGlsa2FuIGRpIGxheWFyIGlraHRpc2FyIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlkYW5nIGRpbmFtaXMgeWFuZyBkaXRhbXBpbGthbiBkaSBsYXlhciBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdNZW11bmdraW5rYW4gZml0dXIgaXRlbSBrb25maWd1cmFzaSB0aW5kYWthbiBtYXNzYWwgdW50dWsgYWdlbiBmcm9udGVuZCB1bnR1ayBiZWtlcmphIHBhZGEgbGViaWggZGFyaSBzYXR1IGl0ZW0ga29uZmlndXJhc2kgcGFkYSBzdWF0dSB3YWt0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ01lbXVuZ2tpbmthbiBmaXR1ciB0aW5kYWthbiBtYXNzYWwgaXRlbSBrb25maWd1cmFzaSBoYW55YSB1bnR1ayBrZWxvbXBvayB0ZXJkYWZ0YXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ01lbmdha3RpZmthbi9tZW5vbmFrdGlma2FuIGZ1bmdzaW9uYWxpdGFzIHVudHVrIG1lbWVyaWtzYSBpdGVtIGtvbmZpZ3VyYXNpIElUU00gdW50dWsgbmFtYSB5YW5nIHVuaWsuIFNlYmVsdW0gbWVuZ2FrdGlma2FuIG9wc2kgaW5pLCBBbmRhIGhhcnVzIG1lbWVyaWtzYSBzaXN0ZW0gQW5kYSB1bnR1ayBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgc3VkYWggYWRhIGRlbmdhbiBuYW1hIGdhbmRhLiBBbmRhIGRhcGF0IG1lbGFrdWthbiBpbmkgZGVuZ2FuIHBlcmludGFoIGtvbnNvbCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ01vZHVsIHBlcmlzdGl3YSB1bnR1ayBtZW5nYXR1ciBzdGF0dXMga29uZmlndXJhc2kgcGFkYSB0YXV0YW4ga29uZmlndXJhc2kgdGlrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0JpZGFuZyBpbmRla3MgaXRlbSBrb25maWd1cmFzaSwgZGlndW5ha2FuIHVudHVrIHBlbmNhcmlhbiB0ZWtzIGxlbmdrYXAuIEJpZGFuZyBqdWdhIGRpc2ltcGFuLCB0ZXRhcGkgdGlkYWsgd2FqaWIgdW50dWsgZnVuZ3Npb25hbGl0YXMga2VzZWx1cnVoYW4uIFBlbnllcnRhYW4gbGFtcGlyYW4gZGFwYXQgZGlub25ha3RpZmthbiBkZW5nYW4gbWVuZ2F0dXIgZW50cmkga2UgMCBhdGF1IG1lbmdoYXB1c255YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0JpZGFuZyB5YW5nIGRpc2ltcGFuIGRhbGFtIGluZGVrcyBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgZGlndW5ha2FuIHVudHVrIGhhbC1oYWwgbGFpbiBzZWxhaW4gcGVuY2FyaWFuIHRla3MgbGVuZ2thcC4gVW50dWsgZnVuZ3Npb25hbGl0YXMgeWFuZyBsZW5na2FwLCBzZW11YSBiaWRhbmcgd2FqaWIgZGlpc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnVW50dWsgc2V0aWFwIGxheWFuYW4gd2ViIChrZXkpLCBzZWJ1YWggbGFyaWsga2VsYXMgKHZhbHVlKSBkYXBhdCBkaWRlZmluaXNpa2FuIGRpIG1hbmEgaW1wb3IgZGliYXRhc2kuIFVudHVrIHNlbXVhIGtlbGFzIHlhbmcgZGlwaWxpaCwgYXRhdSBzZW11YSBrZWxhcyB5YW5nIGFkYSwgYXRyaWJ1dCBwZW5nZW5hbCBoYXJ1cyBkaXBpbGloIGRhbGFtIGtvbmZpZ3VyYXNpIHBlbWFuZ2dpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFzaSBtb2R1bCBHZW5lcmljSW50ZXJmYWNlIHVudHVrIGxhcGlzYW4gcGVtYW5nZ2lsIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYXNpIG1vZHVsIEdlbmVyaWNJbnRlcmZhY2UgdW50dWsgbGFwaXNhbiBwZW1hbmdnaWwgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYXNpIG1vZHVsIEdlbmVyaWNJbnRlcmZhY2UgdW50dWsgbGFwaXNhbiBwZW1hbmdnaWwgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJdGVtIEtvbmZpZ3VyYXNpIElUU00nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJa2h0aXNhciBpdGVtIGtvbmZpZ3VyYXNpIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnU3RhdHVzSW5zaWRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZXJtYXN1ayBzdGF0dXMgcGVuZXJhcGFuIGRhbGFtIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgYW50YXJtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rlcm1hc3VrIHN0YXR1cyBpbnNpZGVuIGRhbGFtIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgYW50YXJtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0p1bWxhaCBtYWtzaW11bSBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgYWthbiBkaXRhbXBpbGthbiBkYWxhbSBoYXNpbCBvcGVyYXNpIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCB1bnR1ayBtZW1lcmlrc2Ega2Vsb21wb2sgeWFuZyBiZXJ0YW5nZ3VuZyBqYXdhYiB1bnR1ayBrZWxhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bCB1bnR1ayBtZW1lcmlrc2Ega2Vsb21wb2sgeWFuZyBiZXJ0YW5nZ3VuZyBqYXdhYiB1bnR1ayBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIHVudHVrIG1lbmdoYXNpbGthbiBzdGF0aXN0aWsgY29uZmlnIGJhcmFuZyBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ01vZHVsIE5hbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ01vZHVsIEFuZ2thJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgYWthbiBkaXRhbXBpbGthbiBkaSBzZXRpYXAgaGFsYW1hbiBoYXNpbCBwZW5jYXJpYW4gZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgYWthbiBkaXRhbXBpbGthbiBkaSBzZXRpYXAgaGFsYW1hbiBoYXNpbCBwZW5jYXJpYW4gZGkgYW50YXJtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmplayB5YW5nIGFrYW4gZGljYXJpLCBiZXJhcGEgYmFueWFrIGVudHJpIGRhbiBhdHJpYnV0IG1hbmEgeWFuZyBha2FuIGRpdGFtcGlsa2FuLiBBdHJpYnV0IENvbmZpZ0l0ZW0gaGFydXMgc2VjYXJhIGVrc3BsaXNpdCBkaXNpbXBhbiBtZWxhbHVpIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ0dhbWJhcmFuIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsga2F0ZWdvcmkgdW50dWsga2VsYXMgaXRlbSBrb25maWd1cmFzaSBkaSB0YW1waWxhbiBwcmVmZXJlbnNpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBmaWx0ZXIga29sb20gcGFkYSBpa2h0aXNhciBpdGVtIGtvbmZpZ3VyYXNpIGtlY2lsLiBIYXJhcCBkaXBlcmhhdGlrYW46IG1lbmdhdHVyIFwnQWN0aXZlXCcga2UgMCBoYW55YSBha2FuIG1lbmNlZ2FoIGFnZW4gbWVuZ2VkaXQgcGVuZ2F0dXJhbiBncnVwIGluaSBkYWxhbSBwcmVmZXJlbnNpIHByaWJhZGkgbWVyZWthLCB0ZXRhcGkgbWFzaWggbWVtdW5na2lua2FuIGFkbWluaXN0cmF0b3IgdW50dWsgbWVuZ2VkaXQgcGVuZ2F0dXJhbiBhdGFzIG5hbWEgcGVuZ2d1bmEgbGFpbi4gR3VuYWthbiBcJ1ByZWZlcmVuY2VHcm91cFwnIHVudHVrIG1lbmdvbnRyb2wgZGkgYXJlYSBtYW5hIHBlbmdhdHVyYW4gaW5pIGhhcnVzIGRpdGFtcGlsa2FuIGRpIGFudGFybXVrYSBwZW5nZ3VuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayB3YXJuYSBzdGF0ZSBwZW55ZWJhcmFuIGRhbGFtIHByZWZlcmVuc2kgbWVsaWhhdCBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgc3RhdGUgcGVueWViYXJhbiBkYWxhbSBwcmVmZXJlbnNpIG1lbGloYXQgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBncnVwIGNvbm90aCBwZXJpemluYW4gZGFyaSBhdHJpYnV0IGthdGFsb2cgdW11bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBtb2R1bCBuYW1hIHVudHVrIGtlbGFzIGl0ZW0ga29uZmlndXJhc2kgZGFsYW0gdGFtcGlsYW4gcHJlZmVyZW5zaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBtb2R1bCBub21vciB1bnR1ayBrZWxhcyBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHByZWZlcmVuc2kgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBoYWxhbWFuIChkaSBtYW5hIGl0ZW0ga29uZmlndXJhc2kgYWthbiBkaXRhbXBpbGthbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBtb2R1bCBzdHJpbmcgdmVyc2kgdW50dWsga2VsYXMgaXRlbSBrb25maWd1cmFzaSBkYWxhbSB0YW1waWxhbiBwcmVmZXJlbnNpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBtb2R1bCB0b29sa2l0IHRlbXBsYXRlIHN0cmluZyB2ZXJzaSB1bnR1ayBrZWxhcyBpdGVtIGtvbmZpZ3VyYXNpIGRpIHRhbXBpbGFuIHByZWZlcmVuc2kgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBwZW1pY3UgdmVyc2kgdW50dWsga2VsYXMgaXRlbSBrb25maWd1cmFzaSBkYWxhbSB0YW1waWxhbiBwcmVmZXJlbnNpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ01lbGFrdWthbiB0aW5kYWthbiBkaWtvbmZpZ3VyYXNpIHVudHVrIHNldGlhcCBhY2FyYSAoc2ViYWdhaSBJbnZva2VyKSB1bnR1ayBzZXRpYXAgTGF5YW5hbiBXZWIgZGlrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0dydXAgSXppbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiB0aW5kYWthbiBsYW1waXJhbiBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBsYXlhciBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnaXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4ga29uZmlndXJhc2kgSVRTTSBsYXlhciBwZW5jYXJpYW4gaXRlbSBkYWxhbSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBsYXlhciBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRpIGFudGFybXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4gbGF5YXIgdGFtcGlsYW4gcG9ob24gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBrb25maWd1cmFzaSBJVFNNIGl0ZW0gbGF5YXIgem9vbSBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBhZGQgSVRTTSBsYXlhciBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBsYXlhciBpdGVtIGtvbmZpZ3VyYXNpIElUU00gbWFzc2FsIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBtZW5nZWRpdCBJVFNNIGxheWFyIGl0ZW0ga29uZmlndXJhc2kgZGFsYW0gYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ2l6aW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmdndW5ha2FuIHNlamFyYWggSVRTTSBsYXlhciBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSXppbiBZYW5nIGRpcGVybHVrYW4gdW50dWsgcmV2aWV3IHVzaW5nIFNlamFyYWggSVRTTSBMYXlhciBJdGVtIEtvbmZpZ3VyYXNpIEFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnSGFrIGlzdGltZXdhIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5naGFwdXMgaXRlbSBrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdNZW5jYXJpIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdNZW5nYXR1ciBzdGF0dXMgaW5zaWRlbiBDSSBzZWNhcmEgb3RvbWF0aXMga2V0aWthIFRpa2V0IGRpdGF1dGthbiBrZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdHVyIHN0YXR1cyBwZW55ZWJhcmFuIGRpIGl0ZW0ga29uZmlndXJhc2kgbGF5YXIgdGVyYmVzYXIgZGFyaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXR1ciBzdGF0dXMga2VqYWRpYW4gcGFkYSBpdGVtIGtvbmZpZ3VyYXNpIGxheWFyIHRlcmJlc2FyIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gbGluayBkYWxhbSBtZW51IHlhbmcgbWVtdW5na2lua2FuIG1lbmdodWJ1bmdrYW4gaXRlbSBrb25maWd1cmFzaSBkZW5nYW4gb2JqZWsgbGFpbiBkaSBjb25maWcgYmFyYW5nIHBhbmRhbmdhbiB6b29tIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gbGluayBkYWxhbSBtZW51IHVudHVrIG1lbmdha3NlcyBzZWphcmFoIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBpdGVtIGtvbmZpZ3VyYXNpIGdhbWJhcmFuIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGxpbmsgZGFsYW0gbWVudSB1bnR1ayBtZW5nYWtzZXMgc2VqYXJhaCBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHpvb20tbnlhIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuYW1waWxrYW4gdGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgbWVuZ2hhcHVzIGl0ZW0ga29uZmlndXJhc2kgZGFsYW0gdGFtcGlsYW4gem9vbSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ01lbmFtcGlsa2FuIHRhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbmFtcGlsa2FuIHRhdXRhbiBpdGVtIGtvbmZpZ3VyYXNpIHNlYmFnYWkgVGFtcGlsYW4gUG9ob24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gbGluayBkYWxhbSBtZW51IHVudHVrIG1lbmR1cGxpa2FzaSBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgaXRlbSBrb25maWd1cmFzaSBnYW1iYXJhbiBkYXJpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBsaW5rIGRhbGFtIG1lbnUgdW50dWsgbWVuZHVwbGlrYXNpIGl0ZW0ga29uZmlndXJhc2kgZGFsYW0gdGFtcGlsYW4gem9vbS1ueWEgZGFyaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGxpbmsgZGFsYW0gbWVudSB1bnR1ayBtZW5nZWRpdCBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHpvb20tbnlhIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGxpbmsgZGFsYW0gbWVudSB1bnR1ayBtZW5jZXRhayBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHpvb20tbnlhIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBzZWphcmFoIGNvbmZpZyBpdGVtICh1cnV0YW4gdGVyYmFsaWspIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdLYXRlZ29yaSBkZWZhdWx0IHlhbmcgZGl0YW1waWxrYW4sIGppa2EgdGlkYWsgYWRhIHlhbmcgZGlwaWxpaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ1BlbmdlbmFsIHVudHVrIGl0ZW0ga29uZmlndXJhc2ksIG1pc2FsbnlhIENvbmZpZ0l0ZW0gIywgTXlDb25maWcgSXRlbSAjLiBkZWZhdWx0IGFkYWxhaCBDb25maWdJdGVtICMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnTWVtaWN1IHBlbWFuZ2dpbCBDb25maWdJdGVtRmV0Y2ggc2VjYXJhIG90b21hdGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnRWtzcHJlc2kgU3RyaW5nIFZlcnNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ01vZHVsIFN0cmluZyBWZXJzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdQZW1pY3UgVmVyc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ0FwYWthaCBla3Nla3VzaSBDb25maWdJdGVtQUNMIGRhcGF0IGRpaGluZGFyaSBkZW5nYW4gbWVtZXJpa3NhIGtldGVyZ2FudHVuZ2FuIGJpZGFuZyB5YW5nIGRpLWNhY2hlLiBIYWwgaW5pIGRhcGF0IG1lbmluZ2thdGthbiB3YWt0dSBwZW11YXRhbiBmb3JtdWxhciwgdGV0YXBpIGhhcnVzIGRpbm9uYWt0aWZrYW4sIGppa2EgQUNMTW9kdWxlcyBha2FuIGRpZ3VuYWthbiB1bnR1ayBJVFNNQ29uZmlnSXRlbSBkYW4gRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0luZm9ybWFzaSB1bXVtIG1hbmEgeWFuZyBkaXRhbXBpbGthbiBkaSBoZWFkZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAna2VsYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncGFzY2Fwcm9kdWt0aWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByYXByb2R1a3RpZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVrdGlmJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IGluY2kgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBpbmNpICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgaW5jaSAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBpbmNpICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnUmFrIDE5IGluY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IGluY2kgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgaW5jaSAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnUmFrIDIxIGluY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IGluY2kgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICdSYWsgMjMgaW5jaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgaW5jaSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgaW5jaSAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgaW5jaSAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IGluY2kgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgaW5jaSAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgaW5jaSAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgaW5jaSAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgaW5jaSAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgaW5jaSAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IGluY2kgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBpbmNpICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgaW5jaSAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgaW5jaSAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBpbmNpICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IGluY2kgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBpbmNpICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgaW5jaSAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IGluY2kgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IGluY2kgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IGluY2kgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgaW5jaSAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBpbmNpICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IGluY2kgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0FrdW50YW5zaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0Fsb2thc2kgQWxhbWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ1RlbGVwb24gQW5hbG9nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnSmVuaXMgQWxhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0thcGFzaXRhcyBCYXRlcmFpIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnSmVuaXMgQmF0ZXJhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ01lbWJhbmd1bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQW50YXJtdWthIEJ1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0tlbGFzIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYXNpdGFzIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdLYXBhc2l0YXMgcGVyIGthcnR1IGdyYWZpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ05vbW9yIEthcnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnUGVtYmFjYSBLYXJ0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdKZW5pcyBLYXJ0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnU2VydGlmaWthdCBLbGllbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdQZXJhbmdrYXQgTHVuYWsgS2xpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnS2F0ZWdvcmkga2xpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnQ2xvY2tyYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdLZWNlcGF0YW4gamFtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdTZXJ0aWZpa2F0IFBlbmFuZGF0YW5nYW5hbiBLb2RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdUZWxlcG9uIEtvbmZlcmVuc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdQZXJqYW5qaWFuIEtvbnN1bHRhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0tvbnRhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnSHVidW5naSBEaXN0cmlidXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ01hbmFqZW1lbiBLb250YWluZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdLb250cmFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdKZW5pcyBLb250cmFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnSmFuZ2thIHdha3R1IGtvbnRyYWsgZGFyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdKYW5na2Egd2FrdHUga29udHJhayBzYW1wYWkgZGVuZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1RlbGVwb24gVGFucGEgS2FiZWwgKFRlbGVwb24gREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnVW5pdCBiaWF5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0p1bWxhaCBsaXNlbnNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdUYW5nZ2FsIFBlbWJ1YXRhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnUmFrIEtodXN1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBEaWNhZGFuZ2thbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnU2VydmVyIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnVGFuZ2dhbCBGYWt0dXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ1RhbmdnYWwgUGVtZXNhbmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdUYW5nZ2FsIFdhcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ1RhbmdnYWwgcmlsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ1NlcnRpZmlrYXQgUGVuYW5kYXRhbmdhbmFuIERva3VtZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdSYWsgRVRTSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnU2VydGlmaWthdCBFbWFpbCAoU2VydGlmaWthdCBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0tvbnRyYWsgS2VyamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdBbGFtYXQgSVAgQWtoaXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdBa2hpciBkdWt1bmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ1RhbmdnYWwgS2VkYWx1d2Fyc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0hhcmQgRHJpdmUgRWtzdGVybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnRmlyZXdhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ1BlbnlpbXBhbmFuIEVuZXJnaSBSb2RhIEdpbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYWt0b3IgQmVudHVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdQZXJqYW5qaWFuIFdhcmFsYWJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXNpIFVtdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdLYXJ0dSBHcmFmaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0thcnR1IGdyYWZpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ1BlcmFuZ2thdCBrZXJhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsIFBlcmFuZ2thdCBLZXJhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdCZXJhdCBQZXJhbmdrYXQgS2VyYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0hlYWRzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2tvbCBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdNYW5hamVtZW4gSWRlbnRpdGFzIGRhbiBBa3NlcyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTm9tb3IgUGVyc2VkaWFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0JpYXlhIHBlbWJhbGlrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOb21vciBGYWt0dXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdLZXlib2FyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdNb25pdG9yIExDRCAoTGF5YXIgS3Jpc3RhbCBDYWlyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBMRUQgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdUZWxlcG9uIHJ1bWFoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xpbnRhbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdMYXBpc2FuIDE6IExhcGlzYW4gRmlzaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnTGFwaXNhbiAyOiBMYXBpc2FuIFRhdXRhbiBEYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMYXBpc2FuIDM6IExhcGlzYW4gSmFyaW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnTGFwaXNhbiAzOiBMYXBpc2FuIEphcmluZ2FuIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnTGFwaXNhbiA0OiBMYXBpc2FuIFRyYW5zcG9ydGFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnTGFwaXNhbiA1OiBMYXBpc2FuIFNlc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnTGFwaXNhbiA2OiBMYXBpc2FuIFByZXNlbnRhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdMYXBpc2FuIDc6IExhcGlzYW4gQXBsaWthc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnUGVyamFuamlhbiBTZXdhIE1lbnlld2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdQZXJqYW5qaWFuIExpc2Vuc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0t1bmNpIExpc2Vuc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnSmVuaXMgTGlzZW5zaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnUGVyaW9kZSBsaXNlbnNpIGRhcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdNYXNhIGJlcmxha3UgbGlzZW5zaSBzYW1wYWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdGVyYWkgTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0JhdGVyYWkgTGl0aGl1bS1Jb24gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdQZXJqYW5qaWFuIFBpbmphbWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdCZXJsb2thc2kgZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnQnVqdXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdQcm9kdXNlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnS2FwYXNpdGFzIEJlYmFuIE1ha3NpbXVtIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW1vcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdKZW5pcyBNZW1vcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ1JhayBNaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdOb21vciBwb25zZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnU2VsdWxlciAvIFRlcnRhbmFtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdEZXNrcmlwc2kgTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnUmVzb2x1c2kgTW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdVa3VyYW4gTW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ01vdXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdKYXJpbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvIEphcmluZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hc2kgSmFyaW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ0xhcGlzYW4gSmFyaW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdCYXRlcmFpIE5pa2VsLUthZG1pdW0gKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnQmF0ZXJhaSBOaWtlbC1Mb2dhbSBIaWRyaWRhIChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdQZXJqYW5qaWFuIEtlcmFoYXNpYWFuIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnQnVrdSBjYXRhdGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnSnVtbGFoIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdKdW1sYWggbW9kdWwgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ0p1bWxhaCBrYXJ0dSBncmFmaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAoRGlvZGEgUGVtYW5jYXIgQ2FoYXlhIE9yZ2FuaWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0JpYXlhIG9wZXJhc2lvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ05vbW9yIFBlc2FuYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdMYWluLWxhaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ0tlbHVhcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BlcmphbmppYW4gS2VtaXRyYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnTm9tb3IgVGVsZXBvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnSmVuaXMgVGVsZXBvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0ludGkgRmlzaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdQZW5naXJpbWFuIERheWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdEaWJlbGkgZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ0tlZGFsYW1hbiBSYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbml0IFJhayAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1J1YW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdLYXJ0dSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTZXJ0aWZpa2F0IFNTTCAvIFRMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0tvbnRyYWsgUGVuanVhbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1RlbGVwb24gU2F0ZWxpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdCYXRlcmFpIEFzYW0gVGltYmFsIFRlcnNlZ2VsIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnTm9tb3Igc2VyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdQZXJhbmdrYXQgTHVuYWsgU2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnUGVyamFuamlhbiBMYXlhbmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnVGFnIExheWFuYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnSmVuaXMgU29rZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdQZXJhbmdrYXQgbHVuYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdQZW1iaWNhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnTXVsYWkgQWxhbWF0IElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdQZW55aW1wYW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1BhcnRpc2kgUGVueWltcGFuYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdBbmFrIFBlcnVzYWhhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1JpbmdrYXNhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ0tsaWVuIFRpcGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdCZW5hbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdQZXRpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG90YWwgUkFNIGthcnR1IGdyYWZpcyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnVG90YWwgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0b3IgTGF5YXIgU2VudHVoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnTWVuYXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdIdWIgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnSGVhZHNldCBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdUZWxlcG9uIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ0thbWVyYSB3ZWInOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/it_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Oml0X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRpIGdlbmVyYWxpIGRpIGZ1bnppb25hbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0ltcG9zdGF6aW9uaSBwZXIgaSBkYXRpIGRpIHJpY2hpZXN0YSBpbiBlbnRyYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnSW1wb3N0YXppb25pIHBlciBpIGRhdGkgZGkgcmlzcG9zdGEgaW4gdXNjaXRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbmUgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdNb2RpZmljYSBsYSBkZWZpbml6aW9uZSBkZWxsYSBjbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ01vZGlmaWNhIGRlbGxhIGRlZmluaXppb25lIGRlbCBydW9sbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhY2NoZXR0aSBkaSBjbGFzc2kgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnUXVpIMOoIHBvc3NpYmlsZSBpbXBvcnRhcmUgaSBwYWNjaGV0dGkgZGkgY2xhc3NpIFJlYWR5MkltcG9ydCwgY2hlIHByZXNlbnRhbm8gZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHBpw7kgY29tdW5pLiBTaSBub3RpIGNoZSBwb3RyZWJiZXJvIGVzc2VyZSBuZWNlc3NhcmllIGFsY3VuZSBjb25maWd1cmF6aW9uaSBhZ2dpdW50aXZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdBZ2dpb3JuYXJlIGxlIGVudGl0w6AgZXNpc3RlbnRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXJlIGkgYnVuZGxlIGRlbGxhIGNsYXNzZSBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtIENsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdDb25maWcgVm9jZSBSdW9sbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdFbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cm8gcGVyIGNsYXNzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlemlvbmFyZSB1bmEgY2xhc3NlIGRhbGxcJ2VsZW5jbyBwZXIgY3JlYXJlIHVuIG51b3ZvIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0NsYXNzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0F6aW9uZSBpbiBibG9jY28gZGkgSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdTdGF0byBkaSBkaXN0cmlidXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnU3RhdG8gZGVsbFwnaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0NvbGxlZ2EgYSB1biBhbHRybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTnVtZXJvIGFydGljb2xvIGRpIGNvbmZpZ3VyYXppb25lIG5vbiB2YWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0lsIG51bWVybyBkaSB1biBhbHRybyBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBjb24gY3VpIGNvbGxlZ2Fyc2kuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVnVvaSBkYXZ2ZXJvIGVsaW1pbmFyZSBxdWVzdG8gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0lsIG5vbWUgZGkgcXVlc3RvIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdJbCBub21lIMOoIGdpw6AgaW4gdXNvIGRhIENvbmZpZ0l0ZW1zIGNvbiBpIHNlZ3VlbnRlL2kgbnVtZXIobylpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ051bWVybyBkaSB2ZXJzaW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTnVtZXJvIGRpIHZlcnNpb25lIGRpIHF1ZXN0byBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0lsIG51bWVybyBkaSB2ZXJzaW9uZSDDqCBnacOgIHV0aWxpenphdG8gZGFpIENvbmZpZ0l0ZW0gY29uIGlsIHNlZ3VlbnRlIG51bWVybzogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXRvIGRpIGltcGxlbWVudGF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ1N0YXRvIGRlbGxcJ2luY2lkZW50ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnU3RvcmlhIGRlbGxhIHZvY2UgZGkgY29uZmlndXJhemlvbmU6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0NvbnRlbnV0byBkZWxsbyBzdG9yaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdJc3RhbnRlIGRpIGNyZWF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdWaXN0YSBkaSBEZXR0YWdsaW8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlnLiBhcnRpY29saSBwZXIgcGFnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOZXNzdW4gZGF0byBkaSBjb25maWd1cmF6aW9uZSB0cm92YXRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGV6aW9uYXJlIHF1ZXN0YSB2b2NlIGRpIGNvbmZpZ3VyYXppb25lJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnRXNlZ3VpIHJpY2VyY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnQ2VyY2FyZSBhbmNoZSBpbiB2ZXJzaW9uaSBwcmVjZWRlbnRpPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1Zpc3VhbGl6emF6aW9uZSBhZCBhbGJlcm8gcGVyIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdMaXZlbGxvIGRpIHByb2ZvbmRpdMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbSBhdmFudGkvaW5kaWV0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTGl2ZWxsbyBtYXNzaW1vIGRpIGNvbGxlZ2FtZW50aSByYWdnaXVudG8gcGVyIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnRWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXppb25pIHN1bGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXRvIGF0dHVhbGUgZGkgaW1wbGVtZW50YXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdTdGF0byBhdHR1YWxlIGRlbGxcJ2luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdVbHRpbWEgbW9kaWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnVWx0aW1hIG1vZGlmaWNhIGRpJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnSSB2b3N0cmkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnUmljZXJjYSBkaSBDb25maWdJdGVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICdUaXBvIGRpIG9nZ2V0dG8nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0cmEgY2FtcG8gcGVyIHRpcG8gZGkgb2dnZXR0byc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1ZlcnJhbm5vIGltcG9ydGF0ZSBsZSBzZWd1ZW50aSBjbGFzc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVmVycmFubm8gaW1wb3J0YXRpIGkgc2VndWVudGkgcnVvbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnU2kgbm90aSBjaGUgdmVycmFubm8gY3JlYXRpIGFuY2hlIGkgY2FtcGkgZGluYW1pY2kgZSBsZSBjbGFzc2kgR2VuZXJhbENhdGFsb2cgY29ycmlzcG9uZGVudGkgZSBub24gw6ggcHJldmlzdGEgbGEgcmltb3ppb25lIGF1dG9tYXRpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnVnVvaSBjb250aW51YXJlPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdTZXJ2b25vIGNsYXNzaSBkaSBlc2VtcGlvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdMYSBkZWZpbml6aW9uZSBub24gw6ggdW4gaGFzaCBZQU1MIHZhbGlkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdQYW5vcmFtaWNhOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTm9uIHZpZW5lIGZvcm5pdG8gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ8OIIG5lY2Vzc2FyaW8gYWxtZW5vIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIHNlbGV6aW9uYXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05vbiBoYWkgYWNjZXNzbyBpbiBzY3JpdHR1cmEgYSBxdWVzdG8gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmU6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdOZXNzdW5hIGRlZmluaXppb25lIMOoIHN0YXRhIGRlZmluaXRhIHBlciBsYSBjbGFzc2UgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdWb2NlIGRpIGNvbmZpZ3VyYXppb25lICIlcyIgbm9uIHRyb3ZhdGEgbmVsIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ0ltcG9zc2liaWxlIGVsaW1pbmFyZSBsXCdJRCBkaSBjb25maWd1cmF6aW9uZSAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ05lc3N1bmEgdmVyc2lvbmUgdHJvdmF0YSBwZXIgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOb24gdmllbmUgZm9ybml0byBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG8gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ05lc3N1biBhY2Nlc3NvIMOoIGNvbmNlc3NvISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdJbXBvc3NpYmlsZSBtb3N0cmFyZSBsYSBjcm9ub2xvZ2lhLCBub24gdmllbmUgZm9ybml0byBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJpbGUgbW9zdHJhcmUgbGEgY3Jvbm9sb2dpYSwgbmVzc3VuIGRpcml0dG8gZGkgYWNjZXNzbyBjb25jZXNzbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ051b3ZvIENvbmZpZ0l0ZW0gKElEID0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ051b3ZhIHZlcnNpb25lIChJRCA9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdG8gZGkgZGlzdHJpYnV6aW9uZSBhZ2dpb3JuYXRvIChudW92bz0lcywgdmVjY2hpbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdG8gZGVsbFwnaW5jaWRlbnRlIGFnZ2lvcm5hdG8gKG51b3ZvPSVzLCB2ZWNjaGlvPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgZWxpbWluYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0NvbGxlZ2FtZW50byBhICVzICh0aXBvPSVzKSBhZ2dpdW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnQ29sbGVnYW1lbnRvIGEgJXMgKHRpcG89JXMpIGVsaW1pbmF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnRGVmaW5pemlvbmUgZGkgQ29uZmlnSXRlbSBhZ2dpb3JuYXRhIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOb21lIGFnZ2lvcm5hdG8gKG51b3ZvPSVzLCB2ZWNjaGlvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnV0byAlcyBhZ2dpb3JuYXRvIGRhICIlcyIgYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb25lICVzIGVsaW1pbmF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOb24gdmllbmUgZm9ybml0byBDb25maWdJdGVtSUQgbyBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0ltcG9zc2liaWxlIG1vc3RyYXJlIGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLCBuZXNzdW4gZGlyaXR0byBkaSBhY2Nlc3NvIGNvbmNlc3NvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBub24gdHJvdmF0byBuZWwgZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdzdGFtcGF0byBkYSAlcyBhICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSaWZlcmltZW50byc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0NsYXNzSUQgbm9uIHZhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOZXNzdW4gQ2xhc3NJRCDDqCBkYXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ05lc3N1biBkaXJpdHRvIGRpIGFjY2Vzc28gcGVyIHF1ZXN0YSBjbGFzc2UgZGF0byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05lc3N1biByaXN1bHRhdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnQ29uZmlndXJhIGkgcmlzdWx0YXRpIGRlbGxhIHJpY2VyY2EgZGVnbGkgZWxlbWVudGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0ltcG9zc2liaWxlIG1vc3RyYXJlIGxcJ2VsZW1lbnRvLCBub24gdmllbmUgY29uY2Vzc28gYWxjdW4gZGlyaXR0byBkaSBhY2Nlc3NvIHBlciBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIG5vbiB0cm92YXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdOZXNzdW5hIHZlcnNpb25lIHRyb3ZhdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhdnZlcnRpbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0xvIHN0YXRvIGRpIGltcGxlbWVudGF6aW9uZSBkaSBxdWVzdG8gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdMbyBzdGF0byBkaSBpbmNpZGVudGUgZGkgcXVlc3RvIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTmVzc3VuIHBlcm1lc3NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRybyBub24gdmFsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnUGFyYW1ldHJpIGRpIHJpY2VyY2Egbm9uIHZhbGlkaSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdFbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBtb3N0cmF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRpIHN0YXRvIGRpIGRpc3RyaWJ1emlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVGlwbyBkaSBzdGF0byBkZWxsXCdpbmNpZGVudGUgY29ycmVudGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnZnJhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cml6aW9uaSBkaSBjbGFzc2UgcGVyIGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlemlvbmFyZSB1bmEgbyBwacO5IGNsYXNzaSBwZXIgbGltaXRhcmUgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHNlbGV6aW9uYWJpbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaXppb25pIGRpIGNsYXNzZSBwZXIgbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlemlvbmFyZSB1bmEgbyBwacO5IGNsYXNzaSBwZXIgbGltaXRhcmUgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHNlbGV6aW9uYWJpbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWljbyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpY2EgKHZlcnNpb25lKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXBvIGRpIHJpZmVyaW1lbnRvIGRlbCBjb2xsZWdhbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnU2UgcXVlc3RvIGNvbGxlZ2FtZW50byBzaSBhcHBsaWNhIGFsIENvbmZpZ0l0ZW0gbyBhbGxhIHZlcnNpb25lIHN0YXRpY2EgZGVsbFwnb2dnZXR0byBkaSByaWZlcmltZW50by4gSWwgY2FsY29sbyBkZWxsbyBTdGF0byBjb3JyZW50ZSBkZWxsXCdpbmNpZGVudGUgdmllbmUgZXNlZ3VpdG8gc29sbyBzdWkgY29sbGVnYW1lbnRpIGRpbmFtaWNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGV6aW9uYXJlIGxcJ2F0dHJpYnV0byBpbiBiYXNlIGFsIHF1YWxlIGdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSB2ZXJyYW5ubyByaWNlcmNhdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdMYSBzdHJ1dHR1cmEgZGkgYmFzZSBub24gw6ggdmFsaWRhLiBGb3JuaXJlIHVuIGhhc2ggY29uIGkgZGF0aSBpbiBmb3JtYXRvIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnw4ggbmVjZXNzYXJpbyBpbml6aWFyZSBsYSBzdHJpbmdhIFlBTUwgY29uIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ0ltcG9zc2liaWxlIGVsaW1pbmFyZSBsYSB0YWJlbGxhIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ05vbiBzb25vIHN0YXRpIHRyb3ZhdGkgY2FtcGkgZGluYW1pY2kgcmlsZXZhbnRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW1wb3NzaWJpbGUgaW5zZXJpcmUgbmVsbGEgdGFiZWxsYSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VyaXRlIDAgcmlnaGUgbmVsbGEgdGFiZWxsYSBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTnVtZXJvIG1hc3NpbW8gZGkgdW4gZWxlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnSW1wb3J0YXppb25lL2VzcG9ydGF6aW9uZSBkaSBhbGxlZ2F0aSAoY29tZSB1bHRpbWUgdm9jaSBwZXIgcmlnYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaW9uZSBTdHJpbmdhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0Vycm9yZSBuZWxsYSBzaW5jcm9uaXp6YXppb25lIGRlbGxlIGRlZmluaXppb25pLiBDb250cm9sbGFyZSBpbCByZWdpc3Ryby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdMZSBkZWZpbml6aW9uaSBkaSBJVFNNQ29uZmlnSXRlbSBub24gc29ubyBzaW5jcm9uaXp6YXRlLiBEaXN0cmlidWlyZSBsZSBtb2RpZmljaGUgYWkgY2FtcGkgZGluYW1pY2kgZGkgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdTY2FkdXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnTWFudXRlbnppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BpYW5pZmljYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JpcGFyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSaXRpcmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZpc2lvbmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdCc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnUGFub3JhbWljYSBlIGNvbmZlcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGF6aW9uZSBkaSBjbGFzc2kvcnVvbGkgZSBkZWkgcmVsYXRpdmkgY2FtcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdTaSDDqCB2ZXJpZmljYXRvIHVuIGVycm9yZSBkdXJhbnRlIGxcJ2ltcG9ydGF6aW9uZSBkZWxsYSBjbGFzc2UuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBOYXNjb3N0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gTW9zdHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0NvbnNlbnRlIGNvbmRpemlvbmkgZGkgcmljZXJjYSBlc3Rlc2UgbmVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBkZWxsXCdhZ2VudGUuIENvbiBxdWVzdGEgZnVuemlvbmUgw6ggcG9zc2liaWxlIGNlcmNhcmUsIGFkIGVzZW1waW8sIGlsIG5vbWUgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgY29uIGNvbmRpemlvbmkgZGVsIHRpcG8gIigqa2V5MSomJiprZXkyKikiIG8gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdDb25zZW50ZSBjb25kaXppb25pIGRpIHJpY2VyY2EgZXN0ZXNlIG5lbGxhIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgY2xpZW50ZS4gQ29uIHF1ZXN0YSBmdW56aW9uZSDDqCBwb3NzaWJpbGUgY2VyY2FyZSwgYWQgZXNlbXBpbywgaWwgbm9tZSBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBjb24gY29uZGl6aW9uaSBkZWwgdGlwbyAiKCprZXkxKiYmKmtleTIqKSIgbyAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0NJcyBhc3NlZ25hdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJcyBhc3NlZ25hdGkgYWxsYSBzb2NpZXTDoCBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnQ0lzIGFzc2VnbmF0aSBhbGxcJ3V0ZW56YSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdJbXBvc3RhemlvbmkgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnQ2VyY2EgdW4gbm9tZSB1bml2b2NvIHNvbG8gYWxsXCdpbnRlcm5vIGRlbGxhIHN0ZXNzYSBjbGFzc2UgQ29uZmlnSXRlbSAoXCdjbGFzc1wnKSBvIGdsb2JhbG1lbnRlIChcJ2dsb2JhbFwnKSwgaWwgY2hlIHNpZ25pZmljYSBjaGUgb2duaSBDb25maWdJdGVtIGVzaXN0ZW50ZSB2aWVuZSBwcmVzbyBpbiBjb25zaWRlcmF6aW9uZSBxdWFuZG8gc2kgY2VyY2FubyBkdXBsaWNhdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdTY2VnbGllcmUgdW4gbW9kdWxvIHBlciBhcHBsaWNhcmUgdW5vIHNjaGVtYSBkaSBkZW5vbWluYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnU2NlZ2xpZXJlIHVuIG1vZHVsbyBwZXIgYXBwbGljYXJlIHVubyBzY2hlbWEgbnVtZXJpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1NjZWdsaWVyZSB1biBtb2R1bG8gcGVyIGFwcGxpY2FyZSB1bm8gc2NoZW1hIGRpIHN0cmluZ2hlIGRpIHZlcnNpb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1NjZWdsaWVyZSBnbGkgYXR0cmlidXRpIHBlciBhdHRpdmFyZSBsYSBjcmVhemlvbmUgZGkgdW5hIG51b3ZhIHZlcnNpb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdTY2VnbGllcmUgbGUgY2F0ZWdvcmllIGRhIGFzc2VnbmFyZSBhIHF1ZXN0YSBjbGFzc2UgZGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyaSBwZXIgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxhIGNvbG9ubmEgcGVyIGxhIHBhbm9yYW1pY2EgZGkgQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0NvbG9ubmUgY2hlIHBvc3Nvbm8gZXNzZXJlIGZpbHRyYXRlIG5lbGxhIHBhbm9yYW1pY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRlLiBOb3RhOiBTb25vIGFtbWVzc2kgc29sbyBnbGkgYXR0cmlidXRpIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGUgaSBjYW1waSBkaW5hbWljaSAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnRWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0FnZ2l1bmdpIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ01vZGlmaWNhIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsbyBldmVudGkgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgY2hlIGNvbnNlbnRlIGxhIHJlZ2lzdHJhemlvbmUgbmVsbGEgY3Jvbm9sb2dpYSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ01vZHVsbyBldmVudG8gcGVyIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBjaGUgYWdnaW9ybmEgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGFsbGEgbG9ybyBkZWZpbml6aW9uZSBjb3JyZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdDb25maWd1cmEgY3Jvbm9sb2dpYSBhcnRpY29saS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnU3RhbXBhIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZ3VyYSBsbyB6b29tIGRlbGxcJ29nZ2V0dG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnVmlzdGEgYWQgYWxiZXJvIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdJIENvbmZpZ0l0ZW0gZGVsbGUgc2VndWVudGkgY2xhc3NpIG5vbiBzYXJhbm5vIG1lbW9yaXp6YXRpIHN1bCBzZXJ2ZXIgRWxhc3RpY3NlYXJjaC4gUGVyIGFwcGxpY2FyZSBxdWVzdG8gYWkgQ0kgZXNpc3RlbnRpLCDDqCBuZWNlc3NhcmlvIGVzZWd1aXJlIGxhIG1pZ3JhemlvbmUgZGVsIENJIHRyYW1pdGUgbGEgY29uc29sZSwgZG9wbyBhdmVyIG1vZGlmaWNhdG8gcXVlc3RhIG9wemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0kgQ29uZmlnSXRlbSBjb24gaSBzZWd1ZW50aSBzdGF0aSBkaSBkaXN0cmlidXppb25lIG5vbiBzYXJhbm5vIG1lbW9yaXp6YXRpIHN1bCBzZXJ2ZXIgRWxhc3RpY3NlYXJjaC4gUGVyIGFwcGxpY2FyZSBxdWVzdG8gYWkgQ0kgZXNpc3RlbnRpLCDDqCBuZWNlc3NhcmlvIGVzZWd1aXJlIGxhIG1pZ3JhemlvbmUgZGVsIENJIHRyYW1pdGUgbGEgY29uc29sZSwgZG9wbyBhdmVyIG1vZGlmaWNhdG8gcXVlc3RhIG9wemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0xpbWl0ZSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnTGltaXRlIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIHBlciBwYWdpbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdEYXRhYmFzZSBkaSBnZXN0aW9uZSBkZWxsYSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ01vZHVsbyBkaSBtYXNzYSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVm9jZSBkaSBjb25maWd1cmF6aW9uZSByaWNlcmNhIHJvdXRlciBiYWNrZW5kIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JlYSBlIGdlc3Rpc2NpIGxlIGRlZmluaXppb25pIHBlciBnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3JlYSBiaWdsaWV0dGkgcGVyIGkgQ29uZmlnSXRlbSBpbiBtb21lbnRpIHNwZWNpZmljaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnSSBjbGllbnRpIHBvc3Nvbm8gdmVkZXJlIGxlIHZlcnNpb25pIHN0b3JpY2hlIGRlaSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnSSBjbGllbnRpIGhhbm5vIGxhIHBvc3NpYmlsaXTDoCBkaSBwYXNzYXJlIG1hbnVhbG1lbnRlIHRyYSBsZSB2ZXJzaW9uaSBzdG9yaWNoZSBkaSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEYXRpIHByZWRlZmluaXRpIGRhIHVzYXJlIG5lbGxcJ2F0dHJpYnV0byBwZXIgbGEgc2NoZXJtYXRhIGRpIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUuIEVzZW1waW86ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD1hbm5vO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9dWx0aW1vO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEYXRpIHByZWRlZmluaXRpIGRhIHVzYXJlIG5lbGxcJ2F0dHJpYnV0byBwZXIgbGEgc2NoZXJtYXRhIGRpIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUuIEVzZW1waW86ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmlyZSBsZSBhemlvbmkgaW4gY3VpIMOoIGRpc3BvbmliaWxlIHVuIHB1bHNhbnRlIGRpIGltcG9zdGF6aW9uZSBuZWwgd2lkZ2V0IGRlZ2xpIG9nZ2V0dGkgY29sbGVnYXRpIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFNpIG5vdGkgY2hlIHF1ZXN0ZSBhemlvbmkgZGV2b25vIGF2ZXIgcmVnaXN0cmF0byBpIHNlZ3VlbnRpIGZpbGUgSlMgZSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGUgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5pc2NlIHVubyBzY2hlbWEgVGVtcGxhdGU6OlRvb2xraXQgcGVyIGxlIHN0cmluZ2hlIGRpIHZlcnNpb25lLiBVdGlsaXp6YXRvIHNvbG8gc2UgaWwgbW9kdWxvIFN0cmluZ2EgZGkgdmVyc2lvbmUgw6ggaW1wb3N0YXRvIHN1IFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmlyZSB1biBpbnNpZW1lIGRpIGNvbmRpemlvbmkgaW4gYmFzZSBhbGxlIHF1YWxpIHVuIGNsaWVudGUgcHXDsiB2ZWRlcmUgdW4gZWxlbWVudG8gZGVsbGEgY29uZmlndXJhemlvbmUuIExlIGNvbmRpemlvbmkgcG9zc29ubyBlc3NlcmUgZmFjb2x0YXRpdmFtZW50ZSBsaW1pdGF0ZSBhIGRldGVybWluYXRpIGdydXBwaSBkaSBjbGllbnRpLiBJbCBub21lIMOoIGxcJ3VuaWNvIGF0dHJpYnV0byBvYmJsaWdhdG9yaW8uIFNlIG5vbiB2ZW5nb25vIGZvcm5pdGUgYWx0cmUgb3B6aW9uaSwgdHV0dGkgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHNhcmFubm8gdmlzaWJpbGkgc290dG8gcXVlbGxhIGNhdGVnb3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpIHBlcm1lc3NpIG5lY2Vzc2FyaSBwZXIgZWxpbWluYXJlIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBJVFNNIHV0aWxpenphbmRvIGxcJ2ludGVyZmFjY2lhIGdlbmVyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGkgcGVybWVzc2kgbmVjZXNzYXJpIHBlciBvdHRlbmVyZSBnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgSVRTTSB1dGlsaXp6YW5kbyBsXCdpbnRlcmZhY2NpYSBnZW5lcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpIHBlcm1lc3NpIG5lY2Vzc2FyaSBwZXIgbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBJVFNNIHV0aWxpenphbmRvIGxcJ2ludGVyZmFjY2lhIGdlbmVyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxlIGF1dG9yaXp6YXppb25pIG5lY2Vzc2FyaWUgcGVyIGltcG9zdGFyZSBnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgSVRTTSB1dGlsaXp6YW5kbyBsXCdpbnRlcmZhY2NpYSBnZW5lcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pc2NlIHVuIG1vZHVsbyBkaSBwYW5vcmFtaWNhIHBlciBtb3N0cmFyZSBsYSB2aXN0YSByaWRvdHRhIGRpIHVuIGVsZW5jbyBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5pc2NlIHNlIGxlIGV0aWNoZXR0ZSBkZWwgdGlwbyBkaSBjb2xsZWdhbWVudG8gZGV2b25vIGVzc2VyZSBtb3N0cmF0ZSBuZWxsZSBjb25uZXNzaW9uaSBkZWkgbm9kaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBlc3ByZXNzaW9uaSByZWdvbGFyaSBzaW5nb2xhcm1lbnRlIHBlciBjaWFzY3VuYSBjbGFzc2UgQ29uZmlnSXRlbSBwZXIgY29udHJvbGxhcmUgaWwgbm9tZSBDb25maWdJdGVtIGUgbW9zdHJhcmUgaSBtZXNzYWdnaSBkaSBlcnJvcmUgY29ycmlzcG9uZGVudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxlIGNvbG9ubmUgZGlzcG9uaWJpbGkgZGVpIENJIG5lbGxhIHBhbm9yYW1pY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUsIGEgc2Vjb25kYSBkZWxsYSBjbGFzc2UgZGVsIENJLiBPZ25pIHZvY2UgZGV2ZSBlc3NlcmUgY29tcG9zdGEgZGEgdW4gbm9tZSBkaSBjbGFzc2UgZSBkYSB1biBhcnJheSBkaSBjYW1waSBkaXNwb25pYmlsaSBwZXIgbGEgY2xhc3NlIGNvcnJpc3BvbmRlbnRlLiBMZSB2b2NpIGRlaSBjYW1waSBkaW5hbWljaSBkZXZvbm8gcmlzcGV0dGFyZSBsbyBzY2hlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdhdHRyaWJ1dG8gcHJlZGVmaW5pdG8gZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgcGVyIGxcJ29yZGluYW1lbnRvIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbCByaXN1bHRhdG8gZGVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnYXR0cmlidXRvIHByZWRlZmluaXRvIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIHBlciBsXCdvcmRpbmFtZW50byBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBuZWwgcmlzdWx0YXRvIGRlbGxhIHJpY2VyY2EgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnYXR0cmlidXRvIHByZWRlZmluaXRvIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIHBlciBsXCdvcmRpbmFtZW50byBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBkZWwgcmlzdWx0YXRvIGRlbGxhIHJpY2VyY2EgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgZGkgcXVlc3RhIG9wZXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnb3JkaW5lIHByZWRlZmluaXRvIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG5lbCByaXN1bHRhdG8gZGVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGUuIFN1OiBpbCBwacO5IHZlY2NoaW8gaW4gY2ltYS4gR2nDuTogbFwndWx0aW1vIGluIGNpbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnb3JkaW5lIHByZWRlZmluaXRvIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG5lbCByaXN1bHRhdG8gZGVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBjbGllbnRlLiBTdTogaWwgcGnDuSB2ZWNjaGlvIGluIGNpbWEuIEdpw7k6IGlsIHBpw7kgcmVjZW50ZSBpbiBjaW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnb3JkaW5lIHByZWRlZmluaXRvIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG5lbCByaXN1bHRhdG8gZGVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkaSBxdWVzdGEgb3BlcmF6aW9uZS4gU3U6IGlsIHBpw7kgdmVjY2hpbyBpbiBjaW1hLiBHacO5OiBsXCd1bHRpbW8gaW4gY2ltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBjb2xvbm5lIHByZWRlZmluaXRlIGRlaSBDSSBuZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLCBhIHNlY29uZGEgZGVsbGEgY2xhc3NlIGRlbCBDSS4gT2duaSB2b2NlIGRldmUgZXNzZXJlIGNvbXBvc3RhIGRhIHVuIG5vbWUgZGkgY2xhc3NlIGUgZGEgdW4gYXJyYXkgZGkgY2FtcGkgZGlzcG9uaWJpbGkgcGVyIGxhIGNsYXNzZSBjb3JyaXNwb25kZW50ZS4gTGUgdm9jaSBkZWkgY2FtcGkgZGluYW1pY2kgZGV2b25vIHJpc3BldHRhcmUgbG8gc2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluaXNjZSBsYSBwcm9mb25kaXTDoCBwcmVkZWZpbml0YSBkZWxsZSByZWxhemlvbmkgZGEgbW9zdHJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdhdHRyaWJ1dG8gcHJlZGVmaW5pdG8gZGkgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBwZXIgbGEgc2NoZXJtYXRhIGRpIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnYXR0cmlidXRvIGRpIHJpY2VyY2EgcHJlZGVmaW5pdG8gZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgcGVyIGxhIHNjaGVybWF0YSBkaSByaWNlcmNhIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLiBFc2VtcGlvOiAiS2V5IiBkZXZlIGF2ZXJlIGlsIG5vbWUgZGVsIGNhbXBvIGRpbmFtaWNvLCBpbiBxdWVzdG8gY2FzbyBcJ1hcJywgIkNvbnRlbnQiIGRldmUgYXZlcmUgaWwgdmFsb3JlIGRlbCBjYW1wbyBkaW5hbWljbywgYSBzZWNvbmRhIGRlbCB0aXBvIGRpIGNhbXBvIGRpbmFtaWNvLCBUZXh0OiBcJ3VuIHRlc3RvXCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgZSBvIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBzb3R0by1vZ2dldHRvIHByZWRlZmluaXRvIGRlbGxhIGNsYXNzZSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbGUgY29sb25uZSBkaXNwb25pYmlsaSBkZWkgQ0kgbmVsbGEgcGFub3JhbWljYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSwgYSBzZWNvbmRhIGRlbGxhIGNsYXNzZSBkZWwgQ0kuIE9nbmkgdm9jZSBkZXZlIGVzc2VyZSBjb21wb3N0YSBkYSB1biBub21lIGRpIGNsYXNzZSBlIGRhIHVuIGFycmF5IGRpIGNhbXBpIGRpc3BvbmliaWxpIHBlciBsYSBjbGFzc2UgY29ycmlzcG9uZGVudGUuIExlIHZvY2kgZGVpIGNhbXBpIGRpbmFtaWNpIGRldm9ubyByaXNwZXR0YXJlIGxvIHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnYWx0ZXp6YSBkZWwgY29tcG9uZW50ZSBkZWxsXCdlZGl0b3IgZGkgdGVzdG8gcmljY28gcGVyIHF1ZXN0YSBzY2hlcm1hdGEuIEluc2VyaXJlIHVuIG51bWVybyAocGl4ZWwpIG8gdW4gdmFsb3JlIHBlcmNlbnR1YWxlIChyZWxhdGl2bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBudW1lcm8gZGkgcmlnaGUgcGVyIENJIGxcJ2VkaXRvciBkZWxsZSBkZWZpbml6aW9uaSBkZWdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSBuZWxsXCdpbnRlcmZhY2NpYSBkaSBhbW1pbmlzdHJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdvcmRpbmUgZGVnbGkgc3RhdGkgZGVnbGkgaW5jaWRlbnRpIGRhIGFsdG8gKGVzLiBjcml0aWNvKSBhIGJhc3NvIChlcy4gZnVuemlvbmFsZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGdsaSBzdGF0aSBkaSBkaXN0cmlidXppb25lIHBlcnRpbmVudGkgaW4gY3VpIGkgdGlja2V0IGNvbGxlZ2F0aSBwb3Nzb25vIGluZmx1aXJlIHN1bGxvIHN0YXRvIGRpIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBsaW1pdGUgZGkgcmljZXJjYSBwZXIgbGEgc2NoZXJtYXRhIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGlsIGxpbWl0ZSBkaSByaWNlcmNhIHBlciBsYSBzY2hlcm1hdGEgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmlzY2UgaWwgbGltaXRlIGRpIHJpY2VyY2EgcGVyIGxhIHNjaGVybWF0YSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBsaW1pdGUgZGkgcmljZXJjYSBwZXIgbGEgc2NoZXJtYXRhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxlIGNvbG9ubmUgZGkgdmlzdWFsaXp6YXRlIGRlZ2xpIGVsZW1lbnRpIGRlbGxhIGNvbmZpZ3VyYXppb25lIGRpIENJcyBuZWxsYSB2aXN0YSBjb21wbGVzc2EgZGVsbGEgdGFiZWxsYSBkZWkgY29sbGVnYW1lbnRpIHBlciB0dXR0ZSBsZSBjbGFzc2kgQ0kuIFNlIG5vbiDDqCBwcmVzZW50ZSBhbGN1bmEgdm9jZSwgdmVuZ29ubyB2aXN1YWxpenphdGUgbGUgY29sb25uZSBwcmVkZWZpbml0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBjb2xvbm5lIHZpc3VhbGl6emF0ZSBkZWdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSBuZWxsYSB2aXN0YSBjb21wbGVzc2EgZGVsbGEgdGFiZWxsYSBkZWkgY29sbGVnYW1lbnRpLCBhIHNlY29uZGEgZGVsbGEgY2xhc3NlIENJLiBPZ25pIHZvY2UgZGV2ZSBlc3NlcmUgcHJlY2VkdXRhIGRhIHVuIG5vbWUgZGkgY2xhc3NlIGUgZHVlIHB1bnRpIChhZCBlc2VtcGlvIENvbXB1dGVyOjopLiBFc2lzdG9ubyBhbGN1bmkgYXR0cmlidXRpIENJIGNvbXVuaSBhIHR1dHRpIGdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSAoZXNlbXBpbyBwZXIgbGEgY2xhc3NlIENvbXB1dGVyOiBDb21wdXRlcjo6Tm9tZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBQZXIgbW9zdHJhcmUgc2luZ29saSBhdHRyaWJ1dGkgQ0kgY29tZSBkZWZpbml0aSBuZWxsYSBkZWZpbml6aW9uZSBDSSwgw6ggbmVjZXNzYXJpbyB1dGlsaXp6YXJlIGlsIHNlZ3VlbnRlIHNjaGVtYSAoZXNlbXBpbyBwZXIgbGEgY2xhc3NlIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIFNlIG5vbiDDqCBwcmVzZW50ZSBhbGN1bmEgdm9jZSBwZXIgdW5hIGNsYXNzZSBDSSwgdmVuZ29ubyB2aXN1YWxpenphdGUgbGUgY29sb25uZSBwcmVkZWZpbml0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmlzY2UgcXVhbGkgdm9jaSBzb25vIGRpc3BvbmliaWxpIHBlciBsXCciQXppb25lIiBuZWwgdGVyem8gbGl2ZWxsbyBkZWxsYSBzdHJ1dHR1cmEgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pc2NlIHF1YWxpIHZvY2kgc29ubyBkaXNwb25pYmlsaSBuZWwgcHJpbW8gbGl2ZWxsbyBkZWxsYSBzdHJ1dHR1cmEgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBxdWFsaSB2b2NpIHNvbm8gZGlzcG9uaWJpbGkgbmVsIHNlY29uZG8gbGl2ZWxsbyBkZWxsYSBzdHJ1dHR1cmEgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBxdWFsZSB0aXBvIGRpIGNvbGxlZ2FtZW50byAoZGVub21pbmF0byBkYWxsYSBwcm9zcGV0dGl2YSBkZWwgdGlja2V0KSBwdcOyIGluZmx1aXJlIHN1bGxvIHN0YXRvIGRpIHVuIGVsZW1lbnRvIGRlbGxhIGNvbmZpZ3VyYXppb25lIGNvbGxlZ2F0byBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmlzY2UgcXVhbGUgdGlwbyBkaSB0aWNrZXQgcHXDsiBpbmZsdWlyZSBzdWxsbyBzdGF0byBkaSB1biBlbGVtZW50byBkZWxsYSBjb25maWd1cmF6aW9uZSBjb2xsZWdhdG8gQ0kuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0FnZ2lvcm5hbWVudG8gZGVsbGEgZGVmaW5pemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsaW1pbmEgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnU3RhdG8gZGkgZGVwbG9yYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDb2xvcmUgZGVsbG8gc3RhdG8gZGkgZGlzdHJpYnV6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdTdGF0byBkaSBkaXN0cmlidXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2F0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHVsbyBldmVudG8gcGVyIGNhbXBpIGRpbmFtaWNpIGNoZSBjb250cmFzc2VnbmEgbGUgZGVmaW5pemlvbmkgZGVnbGkgZWxlbWVudGkgZGVsbGEgY29uZmlndXJhemlvbmUgY29tZSBub24gc2luY3Jvbml6emF0ZSwgc2UgaSBjYW1waSBkaW5hbWljaSBjaGUgbGUgY29udGVuZ29ubyBjYW1iaWFuby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBpIGRpbmFtaWNpIHZpc3VhbGl6emF0aSBuZWxsYSBzY2hlcm1hdGEgZGVsIGNhbXBvIElUU00gYWdnaXVudGl2YSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBpIGRpbmFtaWNpIHZpc3VhbGl6emF0aSBuZWxsYSBzY2hlcm1hdGEgZGkgcGFub3JhbWljYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcGkgZGluYW1pY2kgdmlzdWFsaXp6YXRpIG5lbGxhIHNjaGVybWF0YSBkaSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWJpbGl0YSBsYSBmdW56aW9uZSBkaSBhemlvbmUgaW4gYmxvY2NvIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGFmZmluY2jDqSBpbCBmcm9udGVuZCBkZWxsXCdhZ2VudGUgZnVuemlvbmkgc3UgcGnDuSBkaSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBhbGxhIHZvbHRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWJpbGl0YSBsYSBmdW56aW9uZSBkaSBhemlvbmUgaW4gYmxvY2NvIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIHNvbG8gcGVyIGkgZ3J1cHBpIGVsZW5jYXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdBYmlsaXRhL2Rpc2FiaWxpdGEgbGEgZnVuemlvbmFsaXTDoCBkaSBjb250cm9sbG8gZGVsbGUgdm9jaSBkaSBjb25maWd1cmF6aW9uZSBJVFNNIHBlciBpIG5vbWkgdW5pdm9jaS4gUHJpbWEgZGkgYWJpbGl0YXJlIHF1ZXN0YSBvcHppb25lLCDDqCBuZWNlc3NhcmlvIGNvbnRyb2xsYXJlIGlsIHNpc3RlbWEgcGVyIHZlcmlmaWNhcmUgY2hlIG5vbiB2aSBzaWFubyBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBnacOgIGVzaXN0ZW50aSBjb24gbm9taSBkdXBsaWNhdGkuIMOIIHBvc3NpYmlsZSBmYXJsbyBjb24gaWwgY29tYW5kbyBkZWxsYSBjb25zb2xlIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTW9kdWxvIGV2ZW50byBwZXIgaW1wb3N0YXJlIGxvIHN0YXRvIGRpIGNvbmZpZ3VyYXppb25lIHN1IHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0NhbXBpIGRlbGxcJ2luZGljZSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSwgdXRpbGl6emF0aSBwZXIgbGEgcmljZXJjYSBmdWxsLXRleHQuIEkgY2FtcGkgc29ubyBhbmNoZSBtZW1vcml6emF0aSwgbWEgbm9uIHNvbm8gb2JibGlnYXRvcmkgcGVyIGxhIGZ1bnppb25hbGl0w6AgY29tcGxlc3NpdmEuIExcJ2luY2x1c2lvbmUgZGVnbGkgYWxsZWdhdGkgcHXDsiBlc3NlcmUgZGlzYXR0aXZhdGEgaW1wb3N0YW5kbyBsYSB2b2NlIHN1IDAgbyBjYW5jZWxsYW5kb2xhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ2FtcGkgbWVtb3JpenphdGkgbmVsbFwnaW5kaWNlIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLCB1dGlsaXp6YXRpIHBlciBhbHRyaSBzY29waSBvbHRyZSBhbGxhIHJpY2VyY2EgZnVsbC10ZXh0LiBQZXIgbGEgZnVuemlvbmFsaXTDoCBjb21wbGV0YSwgdHV0dGkgaSBjYW1waSBzb25vIG9iYmxpZ2F0b3JpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ1BlciBvZ25pIHdlYnNlcnZpY2UgKGNoaWF2ZSkgw6ggcG9zc2liaWxlIGRlZmluaXJlIHVuIGFycmF5IGRpIGNsYXNzaSAodmFsb3JlKSBzdSBjdWkgbGltaXRhcmUgbFwnaW1wb3J0YXppb25lLiBQZXIgdHV0dGUgbGUgY2xhc3NpIHNjZWx0ZSwgbyBwZXIgdHV0dGUgbGUgY2xhc3NpIGVzaXN0ZW50aSwgZ2xpIGF0dHJpYnV0aSBpZGVudGlmaWNhdGl2aSBkb3ZyYW5ubyBlc3NlcmUgc2NlbHRpIG5lbGxhIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludm9jYXRvcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhemlvbmUgZGVsIG1vZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBlciBpbCBsaXZlbGxvIGRpIGludm9jYXppb25lIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYXppb25lIGRlbCBtb2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwZXIgaWwgbGl2ZWxsbyBkaSBpbnZvY2F6aW9uZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhemlvbmUgZGVsIG1vZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBlciBpbCBsaXZlbGxvIGRpIGludm9jYXppb25lIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnUGFub3JhbWljYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdTdGF0byBJbmNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdTdGF0byBkZWxsXCdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVkZSBnbGkgc3RhdGkgZGkgZGlzdHJpYnV6aW9uZSBuZWxsYSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWRlIGdsaSBzdGF0aSBkZWdsaSBpbmNpZGVudGkgbmVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTnVtZXJvIG1hc3NpbW8gZGkgdm9jaSBkaSBjb25maWd1cmF6aW9uZSBkYSB2aXN1YWxpenphcmUgbmVsIHJpc3VsdGF0byBkaSBxdWVzdGEgb3BlcmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bG8gcGVyIGNvbnRyb2xsYXJlIGlsIGdydXBwbyByZXNwb25zYWJpbGUgcGVyIHVuYSBjbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxvIHBlciB2ZXJpZmljYXJlIGlsIGdydXBwbyByZXNwb25zYWJpbGUgZGkgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWxvIHBlciBnZW5lcmFyZSBsZSBzdGF0aXN0aWNoZSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ01vZHVsbyBOb21lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW1lcm8gTW9kdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ051bWVybyBkaSB2b2NpIGRpIGNvbmZpZ3VyYXppb25lIGRhIHZpc3VhbGl6emFyZSBpbiBvZ25pIHBhZ2luYSBkaSB1biByaXN1bHRhdG8gZGkgcmljZXJjYSBuZWxsXCdpbnRlcmZhY2NpYSBkZWxsXCdhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ051bWVybyBkaSB2b2NpIGRpIGNvbmZpZ3VyYXppb25lIGRhIHZpc3VhbGl6emFyZSBpbiBvZ25pIHBhZ2luYSBkaSB1biByaXN1bHRhdG8gZGkgcmljZXJjYSBuZWxsXCdpbnRlcmZhY2NpYSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09nZ2V0dGkgZGEgY2VyY2FyZSwgcXVhbnRlIHZvY2kgZSBxdWFsaSBhdHRyaWJ1dGkgbW9zdHJhcmUuIEdsaSBhdHRyaWJ1dGkgZGkgQ29uZmlnSXRlbSBkZXZvbm8gZXNzZXJlIG1lbW9yaXp6YXRpIGVzcGxpY2l0YW1lbnRlIHRyYW1pdGUgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzdGEgR2xvYmFsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgbGUgY2F0ZWdvcmllIGRlbGxlIGNsYXNzaSBkaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSBuZWxsYSB2aXN0YSBwcmVmZXJlbnplIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgcGVyIGkgZmlsdHJpIGRlbGxlIGNvbG9ubmUgZGVsbGEgcGFub3JhbWljYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBwaWNjb2xpLiBOb3RhIGJlbmU6IGltcG9zdGFuZG8gXCdBdHRpdm9cJyBzdSAwLCBzaSBpbXBlZGlyw6AgYWdsaSBhZ2VudGkgZGkgbW9kaWZpY2FyZSBsZSBpbXBvc3RhemlvbmkgZGkgcXVlc3RvIGdydXBwbyBuZWxsZSBsb3JvIHByZWZlcmVuemUgcGVyc29uYWxpLCBtYSBzaSBwZXJtZXR0ZXLDoCBhZ2xpIGFtbWluaXN0cmF0b3JpIGRpIG1vZGlmaWNhcmUgbGUgaW1wb3N0YXppb25pIGRpIHVuIGFsdHJvIHV0ZW50ZS4gVXNhcmUgXCdHcnVwcG8gZGkgcHJlZmVyZW56ZVwnIHBlciBjb250cm9sbGFyZSBpbiBxdWFsZSBhcmVhIHF1ZXN0ZSBpbXBvc3RhemlvbmkgZGV2b25vIGVzc2VyZSB2aXN1YWxpenphdGUgbmVsbFwnaW50ZXJmYWNjaWEgdXRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSSBwYXJhbWV0cmkgcGVyIGdsaSBzdGF0aSBkaSBkaXN0cmlidXppb25lIGNvbG9yYW5vIG5lbGxhIHZpc3RhIGRlbGxlIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgZ2xpIHN0YXRpIGRpIGRpc3RyaWJ1emlvbmUgbmVsbGEgdmlzdGEgZGVsbGUgcHJlZmVyZW56ZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaSBncnVwcGkgZGkgcGVybWVzc2kgZGkgZXNlbXBpbyBkZWdsaSBhdHRyaWJ1dGkgZGVsIGNhdGFsb2dvIGdlbmVyYWxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaWwgbW9kdWxvIGRlaSBub21pIGRlbGxlIGNsYXNzaSBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSB2aXN0YSBwcmVmZXJlbnplIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaWwgbW9kdWxvIG51bWVyaWNvIGRlbGxlIGNsYXNzaSBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSB2aXN0YSBwcmVmZXJlbnplIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBsZSBwYWdpbmUgKG5lbGxlIHF1YWxpIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBzb25vIG1vc3RyYXRpKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBpbCBtb2R1bG8gc3RyaW5nYSBkaSB2ZXJzaW9uZSBwZXIgbGUgY2xhc3NpIGRpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHZpc3RhIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgZGVsbFwnYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaWwgbW9kdWxvIGRlbCB0b29sa2l0IGRpIG1vZGVsbGkgZGkgc3RyaW5naGUgZGkgdmVyc2lvbmUgcGVyIGxlIGNsYXNzaSBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSB2aXN0YSBwcmVmZXJlbnplIGRlbGxcJ2ludGVyZmFjY2lhIGRlbGxcJ2FnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBsXCdhdHRpdmF6aW9uZSBkZWxsYSB2ZXJzaW9uZSBwZXIgbGUgY2xhc3NpIGRpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHZpc3RhIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgZGVsbFwnYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ0VzZWd1ZSBsXCdhemlvbmUgY29uZmlndXJhdGEgcGVyIG9nbmkgZXZlbnRvIChjb21lIEludm9rZXIpIHBlciBvZ25pIFdlYnNlcnZpY2UgY29uZmlndXJhdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcnVwcG8gZGkgYXV0b3JpenphemlvbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3JpenphemlvbmkgbmVjZXNzYXJpZSBwZXIgdXRpbGl6emFyZSBsXCdhemlvbmUgZGkgY29sbGVnYW1lbnRvIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIElUU00gbmVsbFwnaW50ZXJmYWNjaWEgZGVsbFwnYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWVzc2kgbmVjZXNzYXJpIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBJVFNNIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtZXNzaSBuZWNlc3NhcmkgcGVyIHV0aWxpenphcmUgbGEgc2NoZXJtYXRhIGRpIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGVsbGEgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3JpenphemlvbmkgbmVjZXNzYXJpZSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGkgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBJVFNNIG5lbGxcJ2ludGVyZmFjY2lhIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3JpenphemlvbmkgbmVjZXNzYXJpZSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGkgdmlzdWFsaXp6YXppb25lIGFkIGFsYmVybyBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBJVFNNIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWVzc2kgbmVjZXNzYXJpIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBkaSB6b29tIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIElUU00gbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1lc3NpIG5lY2Vzc2FyaSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgQWdnaXVuZ2kgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXp6YXppb25pIG5lY2Vzc2FyaWUgcGVyIHV0aWxpenphcmUgbGEgc2NoZXJtYXRhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00gZGkgbWFzc2EgbmVsbFwnaW50ZXJmYWNjaWEgZGVsbFwnYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtZXNzaSBuZWNlc3NhcmkgcGVyIHV0aWxpenphcmUgbGEgc2NoZXJtYXRhIGRpIG1vZGlmaWNhIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIElUU00gbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtZXNzaSBuZWNlc3NhcmkgcGVyIHV0aWxpenphcmUgbGEgc2NoZXJtYXRhIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIElUU00gZGVsbGEgY3Jvbm9sb2dpYSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtZXNzaSBuZWNlc3NhcmkgcGVyIHV0aWxpenphcmUgbGEgc2NoZXJtYXRhIGRpIHN0YW1wYSBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBJVFNNIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbGVnaSByaWNoaWVzdGkgcGVyIGVsaW1pbmFyZSBnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnQ2VyY2EgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdJbXBvc3RhIGF1dG9tYXRpY2FtZW50ZSBsbyBzdGF0byBkZWxsXCdpbmNpZGVudGUgZGkgdW4gZWxlbWVudG8gZGVsbGEgY29uZmlndXJhemlvbmUgcXVhbmRvIHVuIHRpY2tldCDDqCBjb2xsZWdhdG8gYSB1biBlbGVtZW50byBkZWxsYSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbXBvc3RhIGxvIHN0YXRvIGRpIGRpc3RyaWJ1emlvbmUgbmVsbGEgc2NoZXJtYXRhIGRpIG1hc3NhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW1wb3N0YSBsbyBzdGF0byBkZWxsXCdpbmNpZGVudGUgbmVsbGEgc2NoZXJtYXRhIGluIGJsb2NjbyBkZWxsXCdhcnRpY29sbyBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBjaGUgY29uc2VudGUgZGkgY29sbGVnYXJlIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIGNvbiB1biBhbHRybyBvZ2dldHRvIG5lbGxhIHZpc3RhIHpvb20gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIGFjY2VkZXJlIGFsbGEgY3Jvbm9sb2dpYSBkaSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgYWNjZWRlcmUgYWxsYSBjcm9ub2xvZ2lhIGRpIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHZpc3RhIHpvb20gZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIGVsaW1pbmFyZSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSBzdWEgdmlzdGEgem9vbSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciB2aXN1YWxpenphcmUgaSBjb2xsZWdhbWVudGkgYWxsZSB2b2NpIGRpIGNvbmZpZ3VyYXppb25lIGNvbWUgdW5hIHN0cnV0dHVyYSBhZCBhbGJlcm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgZHVwbGljYXJlIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHBhbm9yYW1pY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciBkdXBsaWNhcmUgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgbmVsbGEgc3VhIHZpc3RhIHpvb20gZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgbW9kaWZpY2FyZSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSBzdWEgdmlzdGEgem9vbSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciB0b3JuYXJlIGluZGlldHJvIG5lbGxhIHZpc3RhIHpvb20gZGVsbGEgdm9jZSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgc3RhbXBhcmUgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgbmVsbGEgc3VhIHZpc3RhIHpvb20gZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIGluZ3JhbmRpcmUgdW5hIHZvY2UgZGkgY29uZmlndXJhemlvbmUgbmVsbGEgcGFub3JhbWljYSBkZWxsZSB2b2NpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSBsYSBjcm9ub2xvZ2lhIGRlZ2xpIGFydGljb2xpIGRpIGNvbmZpZ3VyYXppb25lIChvcmRpbmUgaW52ZXJzbykgbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdMYSBjYXRlZ29yaWEgcHJlZGVmaW5pdGEgY2hlIHZpZW5lIG1vc3RyYXRhIHNlIG5vbiDDqCBzZWxlemlvbmF0YSBuZXNzdW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnTFwnaWRlbnRpZmljYXRvcmUgcGVyIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLCBhZCBlcy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIExcJ2ltcG9zdGF6aW9uZSBwcmVkZWZpbml0YSDDqCBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBdHRpdmEgYXV0b21hdGljYW1lbnRlIGxcJ2ludm9jYXRvcmUgZGkgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2lvbmUgRXNwcmVzc2lvbmUgc3RyaW5nYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaW9uZSBNb2R1bG8gU3RyaW5nYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaW9uZSBUcmlnZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdTZSBsXCdlc2VjdXppb25lIGRpIENvbmZpZ0l0ZW1BQ0wgcHXDsiBlc3NlcmUgZXZpdGF0YSBjb250cm9sbGFuZG8gbGUgZGlwZW5kZW56ZSBkZWkgY2FtcGkgbmVsbGEgY2FjaGUuIFF1ZXN0byBwdcOyIG1pZ2xpb3JhcmUgaSB0ZW1waSBkaSBjYXJpY2FtZW50byBkZWkgbW9kdWxpLCBtYSBkZXZlIGVzc2VyZSBkaXNhYmlsaXRhdG8gc2Ugc2kgdm9nbGlvbm8gdXNhcmUgaSBtb2R1bGkgQUNMTSBwZXIgaSB0aXBpIElUU01Db25maWdJdGVtIGUgRm9ybS1SZXR1cm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdMZSBpbmZvcm1hemlvbmkgZ2VuZXJhbGkgc29ubyByaXBvcnRhdGUgbmVsbFwnaW50ZXN0YXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1Y3RpdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZXByb2R1Y3RpdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1dHRpdmEnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgcG9sbGljaSAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHBvbGxpY2kgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBwb2xsaWNpICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IHBvbGxpY2kgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICdSYWNrIGRhIDE5IHBvbGxpY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IHBvbGxpY2kgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgcG9sbGljaSAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnQ3JlbWFnbGllcmEgZGEgMjEgcG9sbGljaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgcG9sbGljaSAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJ0NyZW1hZ2xpZXJhIGRhIDIzIHBvbGxpY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHBvbGxpY2kgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIHBvbGxpY2kgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHBvbGxpY2kgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSBwb2xsaWNpICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IHBvbGxpY2kgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHBvbGxpY2kgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IHBvbGxpY2kgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHBvbGxpY2kgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIHBvbGxpY2kgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBwb2xsaWNpICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcG9sbGljaSAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1IHBvbGxpY2kgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IHBvbGxpY2kgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcG9sbGljaSAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSBwb2xsaWNpICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgcG9sbGljaSAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IHBvbGxpY2kgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBwb2xsaWNpICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSBwb2xsaWNpICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBwb2xsaWNpICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IHBvbGxpY2kgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgcG9sbGljaSAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBwb2xsaWNpICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdDb250YWJpbGl0w6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBc3NlZ25hemlvbmUgZGVnbGkgaW5kaXJpenppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBbW1pbmlzdHJhdG9yZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdUZWxlZm9ubyBhbmFsb2dpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUaXBvIGRpIGFwcGFyZWNjaGlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQ2FwYWNpdMOgIGRlbGxhIGJhdHRlcmlhIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVGlwbyBkaSBiYXR0ZXJpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0VkaWZpY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZhY2NpYSBidXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDbGFzc2UgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2l0w6AgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0NhcGFjaXTDoCBwZXIgc2NoZWRhIGdyYWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOdW1lcm8gZGkgY2FydGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdMZXR0b3JlIGRpIHNjaGVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUaXBvIGRpIGNhcnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0aSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdDYXRlZ29yaWEgZGkgY2xpZW50aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdGcmVxdWVuemEgZGVsbFwnb3JvbG9naW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1ZlbG9jaXTDoCBkZWxsXCdvcm9sb2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdGkgZGkgZmlybWEgZGVsIGNvZGljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVGVsZWZvbm8gZGkgY29uZmVyZW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0NvbnRyYXR0byBkaSBjb25zdWxlbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdDb250YXR0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnQ29udGF0dG8gY29uIGlsIGRpc3RyaWJ1dG9yZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0dlc3Rpb25lIGRlaSBjb250ZW5pdG9yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0NvbnRyYXR0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVGlwbyBkaSBjb250cmF0dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdEdXJhdGEgZGVsIGNvbnRyYXR0byBkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdEdXJhdGEgZGVsIGNvbnRyYXR0byBmaW5vIGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVGVsZWZvbm8gY29yZGxlc3MgKHRlbGVmb25vIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ1VuaXTDoCBkaSBjb3N0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ051bWVybyBkaSBsaWNlbnplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdEYXRhIGRpIGNyZWF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnQ3JlbWFnbGllcmEgcGVyc29uYWxpenphdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmlzZXJ2YXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTZXJ2ZXIgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXRhIGRlbGxhIGZhdHR1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdGEgZGVsbFwnb3JkaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXRhIGRlbGxhIGdhcmFuemlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdGEgZGkgcmlsYXNjaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYXRpIGRpIGZpcm1hIGRlaSBkb2N1bWVudGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdSYWNrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0NlcnRpZmljYXRpIGUtbWFpbCAoY2VydGlmaWNhdGkgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdDb250cmF0dG8gZGkgbGF2b3JvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnSW5kaXJpenpvIElQIGZpbmFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0ZpbmUgZGVsIHN1cHBvcnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRGF0YSBkaSBzY2FkZW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRGlzY28gcmlnaWRvIGVzdGVybm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdGaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnQWNjdW11bG8gZGkgZW5lcmdpYSBhIHZvbGFubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0ZhdHRvcmUgZGkgZm9ybWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXR0byBkaSBmcmFuY2hpc2luZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF6aW9uaSBnZW5lcmFsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ1NjaGVkZSBncmFmaWNoZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnU2NoZWRhIGdyYWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsbG8gaGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnUGVzbyBkZWxsXCdoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQ3VmZmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9jb2xsbyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdHZXN0aW9uZSBkZWxsXCdpZGVudGl0w6AgZSBkZWxsXCdhY2Nlc3NvIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdOdW1lcm8gZGkgaW52ZW50YXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0Nvc3RpIGRpIGludmVzdGltZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ051bWVybyBkaSBmYXR0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFzdGllcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRvciBMQ0QgKGRpc3BsYXkgYSBjcmlzdGFsbGkgbGlxdWlkaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChkaW9kbyBhIGVtaXNzaW9uZSBsdW1pbm9zYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVGVsZWZvbm8gZmlzc28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnUG9ydGF0aWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZGluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0xpdmVsbG8gMTogbGl2ZWxsbyBmaXNpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnTGl2ZWxsbyAyOiBMaXZlbGxvIGRpIGNvbGxlZ2FtZW50byBkYXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMaXZlbGxvIDM6IGxpdmVsbG8gZGkgcmV0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdMaXZlbGxvIDM6IExpdmVsbG8gZGkgcmV0ZSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0xpdmVsbG8gNDogbGl2ZWxsbyBkaSB0cmFzcG9ydG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0xpdmVsbG8gNTogbGl2ZWxsbyBkaSBzZXNzaW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdMaXZlbGxvIDY6IExpdmVsbG8gZGkgcHJlc2VudGF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0xpdmVsbG8gNzogTGl2ZWxsbyBhcHBsaWNhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdHRvIGRpIGxvY2F6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXR0byBkaSBsaWNlbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdDaGlhdmUgZGkgbGljZW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdUaXBvIGRpIGxpY2VuemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1BlcmlvZG8gZGkgbGljZW56YSBkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ1BlcmlvZG8gZGkgbGljZW56YSBmaW5vIGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdHRlcmlhIGFsIGxpdGlvIGZlcnJvIGZvc2ZhdG8gKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdCYXR0ZXJpYSBhZ2xpIGlvbmkgZGkgbGl0aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdDb250cmF0dG8gZGkgcHJlc3RpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ1NpdHVhdG8gaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTG9uZ2l0dWRpbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdQcm9kdXR0b3JlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdDYXBhY2l0w6AgZGkgY2FyaWNvIG1hc3NpbWEgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01lbW9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdUaXBvIGRpIG1lbW9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTnVtZXJvIGRpIGNlbGx1bGFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbGUvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbGxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpemlvbmUgZGVsIG1vZGVsbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnUmlzb2x1emlvbmUgZGVsIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnRGltZW5zaW9uaSBkZWwgbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ01vdXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdSZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybWF6aW9uaSBzdWxsYSByZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hemlvbmkgc3VsbGEgcmV0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnTGl2ZWxsbyBkaSByZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWEgYWwgbmljaGVsLWNhZG1pbyAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdCYXR0ZXJpYSBhbCBuaWNoZWwtbWV0YWxsbyBpZHJ1cm8gKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0FjY29yZG8gZGkgbm9uIGRpdnVsZ2F6aW9uZSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ1RhY2N1aW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnTnVtZXJvIGRpIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdOdW1lcm8gZGkgbW9kdWxpIFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdOdW1lcm8gZGkgc2NoZWRlIGdyYWZpY2hlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIE9MRUQgKGRpb2RvIG9yZ2FuaWNvIGEgZW1pc3Npb25lIGRpIGx1Y2UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0Nvc3RpIG9wZXJhdGl2aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdOdW1lcm8gZFwnb3JkaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnQWx0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1VzY2l0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdBY2NvcmRvIGRpIHBhcnRlbmFyaWF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ051bWVybyBkaSB0ZWxlZm9ubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGlwbyBkaSB0ZWxlZm9ubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ051Y2xlaSBmaXNpY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdFcm9nYXppb25lIGRpIGVuZXJnaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdBY3F1aXN0YXRvIHByZXNzbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUHJvZm9uZGl0w6AgZGVsIHJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbml0w6AgcmFjayAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1N0YW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NjaGVkYSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2F0aSBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnQ29udHJhdHRvIGRpIHZlbmRpdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVGVsZWZvbm8gc2F0ZWxsaXRhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWEgYWwgcGlvbWJvIHNpZ2lsbGF0YSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ051bWVybyBkaSBzZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBwZXIgc2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnQ29udHJhdHRvIGRpIHNlcnZpemlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnRXRpY2hldHRhIGRpIHNlcnZpemlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1RpcG8gZGkgcHJlc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0FsdG9wYXJsYW50aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnSW5kaXJpenpvIElQIGRpIHBhcnRlbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdJbW1hZ2F6emluYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGl6aW9uZSBkaSBhcmNoaXZpYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRmlsaWFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnU2ludGVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1RoaW4gQ2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdGaWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnRm9sZ29yZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsZSBkZWxsYSBzY2hlZGEgZ3JhZmljYSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsZSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdNb25pdG9yIHRvdWNoc2NyZWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ycmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ0h1YiBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdDdWZmaWUgVlInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVGVsZWZvbm8gVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/ja_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmphX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfkuIDoiKzpgYvou6Ljg4fjg7zjgr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ+WPl+S/oeODquOCr+OCqOOCueODiOODh+ODvOOCv+OBruioreWumic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ+mAgeS/oeODrOOCueODneODs+OCueODu+ODh+ODvOOCv+OBruioreWumic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ+ani+aIkOOCouOCpOODhuODoOeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+OCr+ODqeOCueWumue+qeOCkuWkieabtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn5b255Ymy5a6a576p44Gu5aSJ5pu0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0IOOCr+ODqeOCueODkOODs+ODieODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+OBk+OBk+OBp+OBr+OAgVJlYWR5MkltcG9ydOOCr+ODqeOCueODkOODs+ODieODq+OCkuOCpOODs+ODneODvOODiOOBmeOCi+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAgui/veWKoOioreWumuOBjOW/heimgeOBquWgtOWQiOOCguOBguOCiuOBvuOBmeOBruOBp+OBlOazqOaEj+OBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICfml6LlrZjjga7jgqjjg7Pjg4bjgqPjg4bjgqPjga7mm7TmlrAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdSZWFkeTJBZG9wdOOCr+ODqeOCueOBruODkOODs+ODieODq+OCkuOCpOODs+ODneODvOODiOOBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruOCr+ODqeOCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn6Kit5a6a6aCF55uuIOW9ueWJsic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn44Kv44Op44K544Gn44OV44Kj44Or44K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+aWsOimj+OBruani+aIkOOCouOCpOODhuODoOOCkuS9nOaIkOOBmeOCi+OBq+OBr+OAgeODquOCueODiOOBi+OCieOCr+ODqeOCueOCkumBuOaKnuOBl+OBpuOBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ+OCr+ODqeOCuSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ+ani+aIkOOCouOCpOODhuODoOS4gOaLrOOCouOCr+OCt+ODp+ODsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn44OH44OX44Ot44Kk44O744K544OG44O844K/44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn44Kk44Oz44K344OH44Oz44OI54q25rOBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ+S7luOBqOODquODs+OCr+OBmeOCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5YCk44GM5LiN5q2j44Gn44GZISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfku5bjga7mp4vmiJDjgqLjgqTjg4bjg6Djgbjjga7jg6rjg7Pjgq/mlbAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICfmnKzlvZPjgavjgZPjga7mp4vmiJDjgqLjgqTjg4bjg6DjgpLliYrpmaTjgZfjgb7jgZnjgYvvvJ8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn44GT44GuIOani+aIkOOCouOCpOODhuODoCDjga7lkI3np7AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+OBk+OBruWQjeensOOBr+OBmeOBp+OBqyBOdW1iZXIocyk6ICVzIOOBruani+aIkOOCouOCpOODhuODoOOBp+S9v+eUqOS4reOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ+ODkOODvOOCuOODp+ODs+ODiuODs+ODkOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn44GT44Gu6Kit5a6a6aCF55uu44Gu44OQ44O844K444On44Oz55Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn44OQ44O844K444On44Oz55Wq5Y+344Gv44CB5Lul5LiL44Gu55Wq5Y+344GuIENvbmZpZ0l0ZW1zIOOBq+OCiOOBo+OBpuaXouOBq+S9v+eUqOOBleOCjOOBpuOBhOOBvuOBmTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ+ODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ+OCpOODs+OCt+ODh+ODs+ODiOOBruOCueODhuODvOOCv+OCuSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5bGl5q20OiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfjgrPjg6Hjg7Pjg4jlsaXmrbQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+S9nOaIkOaZgumWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfjgrrjg7zjg6Djg7vjg5Pjg6Xjg7wnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnMeODmuODvOOCuOavjuOBruioreWumumgheebric7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAn6Kit5a6a6aCF55uu44Gu44OH44O844K/44GM6KaL44Gk44GL44KK44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn44GT44Gu6Kit5a6a6aCF55uu44KS6YG45oqe44GZ44KLJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn5qSc57Si44KS5a6f6KGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ+ODl+ODrOODk+ODpeODvOaZguOAgeS7peWJjeOBruODkOODvOOCuOODp+ODs+OCguaknOe0ouWvvuixoeOBqOOBl+OBvuOBmeOBi++8nyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ+OCs+ODs+ODleOCo+OCsOmgheebruOBruODhOODquODvOODk+ODpeODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ+ODh+ODl+OCueODrOODmeODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ+OCuuODvOODoOOCpOODsy/jgrrjg7zjg6DjgqLjgqbjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQ29uZmlnSXRlbeOBruacgOWkp+ODquODs+OCr+ODrOODmeODq+OBq+mBlOOBl+OBn++8gSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+ani+aIkOOCouOCpOODhuODoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6Dmg4XloLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn54++5Zyo44Gu44OH44OX44Ot44Kk44O744K544OG44O844K/44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfnj77lnKjjga7jgqTjg7Pjgrfjg4fjg7Pjg4jjga7jgrnjg4bjg7zjgr/jgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn5pyA57WC5pu05paw5pel5pmCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ+acgOe1guabtOaWsOiAhSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ+ioreWumumgheebric7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICfoqK3lrprpoIXnm67mpJzntKInOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ+OCquODluOCuOOCp+OCr+ODiOOBrueorumhnic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJ+OCv+OCpOODl+OBp+ODleOCo+ODq+OCvyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ+S7peS4i+OBruOCr+ODqeOCueOBjOOCpOODs+ODneODvOODiOOBleOCjOOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfku6XkuIvjga7lvbnlibLjgYzjgqTjg7Pjg53jg7zjg4jjgZXjgozjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAn5a++5b+c44GZ44KL44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJ44GoR2VuZXJhbENhdGFsb2fjgq/jg6njgrnjgoLkvZzmiJDjgZXjgozjgIHoh6rli5XnmoTjgavliYrpmaTjgZXjgozjgarjgYTjgZPjgajjgavms6jmhI/jgZfjgabjgY/jgaDjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfntprooYzjgZfjgb7jgZnjgYvvvJ8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnRXhhbXBsZUNsYXNzZXPjgYzlv4XopoHvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn5a6a576p44Gv5pyJ5Yq544GqIFlBTUwg44OP44OD44K344Ol44Gn44Gv44GC44KK44G+44Gb44KT44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAn5LiA6KanOiDmp4vmiJDjgqLjgqTjg4bjg6AnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlE44GM5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAn5bCR44Gq44GP44Go44KCMeOBpOOBrumBuOaKnuOBleOCjOOBn+ani+aIkOOCouOCpOODhuODoOOBjOW/heimgeOBp+OBme+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ+OBk+OBruani+aIkOOCouOCpOODhuODoOOBuOOBruabuOOBjei+vOOBv+OCouOCr+OCu+OCueaoqeOBjOOBguOCiuOBvuOBm+OCkzogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn44Kv44Op44K5JXPjga7lrprnvqnjgYzlrprnvqnjgZXjgozjgabjgYTjgb7jgZvjgpPvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ+ani+aIkOOCouOCpOODhuODoCAiJXMi44GM44OH44O844K/44OZ44O844K544Gr6KaL44Gk44GL44KK44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn5qeL5oiQ44Ki44Kk44OG44OgSUQlc+OCkuWJiumZpOOBp+OBjeOBvuOBm+OCk+OBp+OBl+OBn++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnQ29uZmlnSXRlbUlEJXPjga7jg5Djg7zjgrjjg6fjg7PjgYzopovjgaTjgYvjgorjgb7jgZvjgpPvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlE44CBRHVwbGljYXRlSUTjgIFDbGFzc0lE44Gv5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfjgqLjgq/jgrvjgrnmqKnjga/jgYLjgorjgb7jgZvjgpPvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn5bGl5q2044KS6KGo56S644GZ44KL44GT44Go44Gv44Gn44GN44G+44Gb44KT44GM44CBQ29uZmlnSXRlbUlE44Gv5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn5bGl5q2044KS6KGo56S644GZ44KL44GT44Go44Gv44Gn44GN44G+44Gb44KT44CC44Ki44Kv44K744K55qip44Gv5LiO44GI44KJ44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfmlrDjgZfjgYTmp4vmiJDjgqLjgqTjg4bjg6AoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfmlrDjgZfjgYTjg5Djg7zjgrjjg6fjg7PvvIhJRCA9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfjg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrnjgYzmm7TmlrDjgZXjgozjgb7jgZfjgZ/jgILvvIjmlrDopo89JXPjgIHliY09JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn44Kk44Oz44K344OH44Oz44OI54q25oWL44GM5pu05paw44GV44KM44G+44GX44Gf77yI5paw6KaPPSVz44CB5Y+k44GEPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS5YmK6ZmkIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICclc++8iOOCv+OCpOODlz0lc++8ieOBuOOBruODquODs+OCr+OBjOi/veWKoOOBleOCjOOBvuOBl+OBnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJXPvvIjjgr/jgqTjg5c9JXPvvInjgbjjga7jg6rjg7Pjgq/jgYzliYrpmaTjgZXjgozjgb7jgZfjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW3lrprnvqnjgYzmm7TmlrDjgZXjgozjgb7jgZfjgZ/vvIhJRCA9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICflkI3liY3jgYzmm7TmlrDjgZXjgozjgb7jgZfjgZ/vvIjmlrDopo89JXPjgIHlj6TjgYQ9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICflsZ7mgKclc+OBjCAiJXMi44GL44KJICIlcyLjgavmm7TmlrDjgZXjgozjgb7jgZfjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAn44OQ44O844K444On44OzJXPjgYzliYrpmaTjgZXjgozjgb7jgZfjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlE44G+44Gf44GvVmVyc2lvbklE44Gv5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOCkuihqOekuuOBp+OBjeOBvuOBm+OCk+OAguOCouOCr+OCu+OCueaoqeOBr+OBguOCiuOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCVz44Gv44OH44O844K/44OZ44O844K544Gr6KaL44Gk44GL44KK44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyVz44GnJXPjgafljbDliLfjgZXjgozjgb7jgZfjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ+eUqOS+iyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0NsYXNzSUTjgYznhKHlirnjgafjgZnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDbGFzc0lE44Gv5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAn44GT44Gu44Kv44Op44K544Gu44Ki44Kv44K744K55qip44Gv44GC44KK44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfntZDmnpzjgarjgZchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5qSc57Si57WQ5p6cJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLooajnpLrjgafjgY3jgb7jgZvjgpPjgILmp4vmiJDjgqLjgqTjg4bjg6Djga7jgqLjgq/jgrvjgrnmqKnjga/kuI7jgYjjgonjgozjgabjgYTjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbeOBjOimi+OBpOOBi+OCiuOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICfjg5Djg7zjgrjjg6fjg7Pjga/opovjgaTjgYvjgorjgb7jgZvjgpPjgafjgZfjgZ/vvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfpgJrluLjpgYvnlKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ+itpuWRiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ+OCpOODs+OCt+ODh+ODs+ODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn44GT44Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu44OH44OX44Ot44Kk44O744K544OG44O844K/44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn44GT44Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu44Kk44Oz44K344OH44Oz44OI54q25oWLJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn5qip6ZmQ44GM44GC44KK44G+44Gb44KTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ+ODleOCo+ODq+OCv+ODvOeEoeWKue+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAn5qSc57Si44OR44Op44Oh44O844K/44GM54Sh5Yq544Gn44GZ77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAn6KGo56S644GV44KM44KL5qeL5oiQ44Ki44Kk44OG44OgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ+ODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOBruOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICfnj77lnKjjga7jgqTjg7Pjgrfjg4fjg7Pjg4jjg7vjgrnjg4bjg7zjgr/jgrnjga7jgr/jgqTjg5cnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn44GT44Gu6ZaTJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfoqK3lrprpoIXnm67jga7jgq/jg6njgrnliLbpmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ+mBuOaKnuWPr+iDveOBquioreWumumgheebruOCkuWItumZkOOBmeOCi+OBn+OCgeOBq+OAgTHjgaTku6XkuIrjga7jgq/jg6njgrnjgpLpgbjmip7jgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ+ioreWumumgheebruOBruOCr+ODqeOCueWItumZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ+mBuOaKnuWPr+iDveOBquioreWumumgheebruOCkuWItumZkOOBmeOCi+OBn+OCgeOBq+OAgTHjgaTku6XkuIrjga7jgq/jg6njgrnjgpLpgbjmip7jgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICfli5XnmoQgKOOCs+ODs+ODleOCo+OCsOmgheebriknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ+OCueOCv+ODhuOCo+ODg+OCr++8iOODtOOCoeODvOOCuOODp+ODs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICfjg6rjg7Pjgq/lj4Lnhafjgr/jgqTjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAn44GT44Gu44Oq44Oz44Kv44GM5Y+C54Wn44Kq44OW44K444Kn44Kv44OI44GuIENvbmZpZ0l0ZW0g44Go6Z2Z55qE44OQ44O844K444On44Oz44Gu44Gp44Gh44KJ44Gr6YGp55So44GV44KM44KL44GL44CC54++5Zyo44Gu44Kk44Oz44K344OH44Oz44OI44O744K544OG44O844OI44Gu6KiI566X44Gv44CB44OA44Kk44OK44Of44OD44Kv44O744Oq44Oz44Kv44Gr5a++44GX44Gm44Gu44G/5a6f6KGM44GV44KM44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAn6Kit5a6a6aCF55uu44KS5qSc57Si44GZ44KL5bGe5oCn44KS6YG45oqe44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAn44OZ44O844K55qeL6YCg44GM54Sh5Yq544Gn44GZ44CCWUFNTOW9ouW8j+OBruODh+ODvOOCv+OCkuWQq+OCgOODj+ODg+OCt+ODpeOCkuaMh+WumuOBl+OBpuOBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1lBTUzmloflrZfliJfjgpJcJy0tLVwn44Gn5aeL44KB44KL44GT44Go44GM5b+F6KaB44Gn44GZ44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ2NvbmZpZ2l0ZW1fbGluayDjg4bjg7zjg5bjg6vjgpLjg5Hjg7zjgrjjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ+mWoumAo+OBmeOCi+WLleeahOODleOCo+ODvOODq+ODieOBr+imi+OBpOOBi+OCiuOBvuOBm+OCk+OBp+OBl+OBnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ2NvbmZpZ2l0ZW1fbGlua+ODhuODvOODluODq+OBq+aMv+WFpeOBp+OBjeOBvuOBm+OCk+OBp+OBl+OBn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnY29uZmlnaXRlbV9saW5r44OG44O844OW44Or44GrMOihjOOCkuaMv+WFpeOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfkuIDjgqjjg6zjg6Hjg7Pjg4jjgYLjgZ/jgorjga7mnIDlpKfmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAn5re75LuY44OV44Kh44Kk44Or44Gu44Kk44Oz44Od44O844OIL+OCqOOCr+OCueODneODvOODiO+8iOihjOOBlOOBqOOBruacgOW+jOOBruOCqOODs+ODiOODquOBqOOBl+OBpu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ+ODkOODvOOCuOODp+ODs+aWh+Wtl+WIlyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICflrprnvqnjga7lkIzmnJ/jgavjgqjjg6njg7zjgYznmbrnlJ/jgZfjgb7jgZfjgZ/jgILjg63jgrDjgpLnorroqo3jgZfjgabjgY/jgaDjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdJVFNNQ29uZmlnSXRlbeOBruWumue+qeOBjOWQjOacn+OBleOCjOOBpuOBhOOBvuOBm+OCk+OAgklUU01Db25maWdJdGVt44Gu5YuV55qE44OV44Kj44O844Or44OJ44Gu5aSJ5pu044KS5bGV6ZaL44GX44Gm44GP44Gg44GV44GE44CCJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfmnJ/pmZDliIfjgownOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfjg6Hjg7Pjg4bjg4rjg7PjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICfjg5HjgqTjg63jg4Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ+ioiOeUuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfkv67nkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ+W8lemAgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfjg6zjg5Pjg6Xjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ+ODhuOCueODiCAvIFFBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICfmpoLopoHjgajnorroqo0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAn44Kv44Op44K5L+W9ueWJsuOBqOOBneOBrumWoumAo+ODleOCo+ODvOODq+ODieOBruOCpOODs+ODneODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ+OCr+ODqeOCueOBruOCpOODs+ODneODvOODiOS4reOBq+OCqOODqeODvOOBjOeZuueUn+OBl+OBvuOBl+OBn+OAgic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0g6Z2e6KGo56S6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSDooajnpLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODleOCp+ODvOOCueOBruioreWumumgheebruaknOe0ouOBq+OBiuOBhOOBpuOAgeaLoeW8teaknOe0ouadoeS7tuOCkuioseWPr+OBl+OBvuOBmeOAguOBk+OBruapn+iDveOBq+OCiOOCiuOAgSIoKmtleTEqJiprZXkyKikgIuOChCIoKmtleTEqfCprZXkyKikgIuOBruOCiOOBhuOBquadoeS7tuOBp+ioreWumumgheebruWQjeOCkuaknOe0ouOBmeOCi+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfjgqvjgrnjgr/jg57jg7zjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7oqK3lrprpoIXnm67mpJzntKLjgavjgYrjgYTjgabjgIHmpJzntKLmnaHku7bjgpLmi6HlvLXjgZnjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgILjgZPjga7mqZ/og73jgpLkvb/nlKjjgZnjgovjgajjgIEiKCprZXkxKiYqa2V5MiopICLjgb7jgZ/jga8iKCprZXkxKnwqa2V5MiopICLjga7jgojjgYbjgarmnaHku7bjgafoqK3lrprpoIXnm67lkI3jgpLmpJzntKLjgafjgY3jgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAn5Ymy44KK5b2T44Gm44KJ44KM44GfQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ+mhp+WuouS8gealreOBq+WJsuOCiuW9k+OBpuOCieOCjOOBn0NJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAn6aGn5a6i44Om44O844K244O844Gr5Ymy44KK5b2T44Gm44KJ44KM44GfQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNRELjga7oqK3lrponOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ+WQjOOBmENvbmZpZ0l0ZW3jgq/jg6njgrnvvIggXCdjbGFzc1wn77yJ5YaF44G+44Gf44Gv44Kw44Ot44O844OQ44Or77yIIFwnZ2xvYmFsXCfvvInlhoXjgafjga7jgb/kuIDmhI/jga7lkI3liY3jgpLnorroqo3jgZfjgb7jgZnjgILjgZPjgozjga/jgIHph43opIfjgpLmpJzntKLjgZnjgovjgajjgY3jgavml6LlrZjjga5Db25maWdJdGVt44GM44GZ44G544Gm6ICD5oWu44GV44KM44KL44GT44Go44KS5oSP5ZGz44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICflkb3lkI3jgrnjgq3jg7zjg6DjgpLlvLfliLbjgZnjgovjg6Ljgrjjg6Xjg7zjg6vjgpLpgbjmip7jgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ+eVquWPt+OCueOCreODvOODoOOCkuW8t+WItuOBmeOCi+ODouOCuOODpeODvOODq+OCkumBuOaKnuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICfjg5Djg7zjgrjjg6fjg7PmloflrZfliJfjgrnjgq3jg7zjg6DjgpLlvLfliLbjgZnjgovjg6Ljgrjjg6Xjg7zjg6vjgpLpgbjmip7jgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfmlrDjgZfjgYTjg5Djg7zjgrjjg6fjg7PjgpLkvZzmiJDjgZnjgovjg4jjg6rjgqzjg7zjgajjgarjgovlsZ7mgKfjgpLpgbjmip7jgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAn44GT44Gu6Kit5a6a6aCF55uu44Kv44Op44K544Gr5Ymy44KK5b2T44Gm44KL44Kr44OG44K044Oq44KS6YG45oqe44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0NvbmZpZ0l0ZW3mpoLopoHjga7jgqvjg6njg6DoqK3lrprpoIXnm67jg5XjgqPjg6vjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODleOCp+ODvOOCueOBruioreWumumgheebruamguimgeOBp+ODleOCo+ODq+OCv+ODquODs+OCsOOBp+OBjeOCi+WIl+OAguazqOaEjzog44Kz44Oz44OV44Kj44Kw6aCF55uu5bGe5oCn44Go5YuV55qE44OV44Kj44O844Or44OJIChEeW5hbWljRmllbGRfTmFtZVgpIOOBruOBv+ioseWPr+OBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ+ani+aIkOOCouOCpOODhuODoOOCkui/veWKoOOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ+ani+aIkOOCouOCpOODhuODoOOCkuS/ruato+OBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAhVdlYuOCpOODs+OCv+ODleOCp+ODvOOCueOBruWxpeattOOCkuiomOmMsuOBmeOCi+ani+aIkOOCouOCpOODhuODoOOBruOCpOODmeODs+ODiOODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICfjgrPjg7Pjg5XjgqPjgrDpoIXnm67jgpLnj77lnKjjga7lrprnvqnjgavmm7TmlrDjgZnjgovjgrPjg7Pjg5XjgqPjgrDpoIXnm67jgqTjg5njg7Pjg4jjg6Ljgrjjg6Xjg7zjg6vjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6Djga7lsaXmrbQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS5Y2w5Yi3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu44K644O844OgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAn6Kit5a6a6aCF55uu44OE44Oq44O844OT44Ol44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ+ioreWumumgheebruODkOODvOOCuOODp+ODsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfku6XkuIvjga7jgq/jg6njgrnjga5Db25maWdJdGVtc+OBr0VsYXN0aWNzZWFyY2jjgrXjg7zjg5Djgavkv53lrZjjgZXjgozjgb7jgZvjgpPjgILml6LlrZjjga5DSeOBq+mBqeeUqOOBmeOCi+OBq+OBr+OAgeOBk+OBruOCquODl+OCt+ODp+ODs+OCkuWkieabtOOBl+OBn+W+jOOBq+OAgeOCs+ODs+OCveODvOODq+e1jOeUseOBp0NJ44Oe44Kk44Kw44Os44O844K344On44Oz44KS5a6f6KGM44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ+S7peS4i+OBruODh+ODl+ODreOCpOeKtuaFi+OBrkNvbmZpZ0l0ZW1z44Gv44CBRWxhc3RpY3NlYXJjaOOCteODvOODkOOBq+S/neWtmOOBleOCjOOBvuOBm+OCk+OAguaXouWtmOOBrkNJ44Gr6YGp55So44GZ44KL44Gr44Gv44CB44GT44Gu44Kq44OX44K344On44Oz44KS5aSJ5pu044GX44Gf5b6M44Gr44CB44Kz44Oz44K944O844Or57WM55Sx44GnQ0njg57jgqTjgrDjg6zjg7zjgrfjg6fjg7PjgpLlrp/ooYzjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5Yi26ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfjg5rjg7zjgrjjgYLjgZ/jgorjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7ooajnpLrliLbpmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ+ani+aIkOeuoeeQhuODh+ODvOOCv+ODmeODvOOCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5LiA5ous44Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOOBruaknOe0ouODkOODg+OCr+OCqOODs+ODieODq+ODvOOCv+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6Djga7kvZzmiJDjgajnrqHnkIbjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICfnibnlrprjga7mmYLngrnjgadDb25maWdJdGVtc+OBruODgeOCseODg+ODiOOCkuS9nOaIkOOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICfpoaflrqLjga/pgY7ljrvjga5DSeODkOODvOOCuOODp+ODs+OCkuimi+OCi+OBk+OBqOOBjOOBp+OBjeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICfpoaflrqLjga/jgIHpgY7ljrvjga5DSeODkOODvOOCuOODp+ODs+OCkuaJi+WLleOBp+WIh+OCiuabv+OBiOOCi+OBk+OBqOOBjOOBp+OBjeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ+ioreWumumgheebruaknOe0oueUu+mdouOBruWxnuaAp+OBp+S9v+eUqOOBmeOCi+ODh+ODleOCqeODq+ODiOODh+ODvOOCv+OAguS+i++8miJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfjgrPjg7Pjg5XjgqPjgrDpoIXnm67mpJzntKLnlLvpnaLjga7lsZ7mgKfjgafkvb/nlKjjgZnjgovjg4fjg5Xjgqnjg6vjg4jjg4fjg7zjgr/jgILkvovvvJoiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9Mzsi44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICfjg6rjg7Pjgq/jgZXjgozjgZ/jgqrjg5bjgrjjgqfjgq/jg4gg44Km44Kj44K444Kn44OD44OIIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4Iikg44Gn6Kit5a6a44Oc44K/44Oz44GM5L2/55So44Gn44GN44KL44Ki44Kv44K344On44Oz44KS5a6a576p44GX44G+44GZ44CC44GT44KM44KJ44Gu44Ki44Kv44K344On44Oz44Gr44Gv44CBQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3PjgIFDb3JlLlVJLkFsbG9jYXRpb25MaXN0Lmpz44CBQ29yZS5VSS5UYWJsZS5Tb3J0Lmpz44CBQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanPjgIHjgYrjgojjgbMgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzIOOBriBKUyDjgYrjgojjgbMgQ1NTIOODleOCoeOCpOODq+OBjOeZu+mMsuOBleOCjOOBpuOBhOOCi+W/heimgeOBjOOBguOCi+OBk+OBqOOBq+azqOaEj+OBl+OBpuOBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAn44OQ44O844K444On44Oz5paH5a2X5YiX55So44GuIFRlbXBsYXRlOjpUb29sa2l0IOOCueOCreODvOODoOOCkuWumue+qeOBl+OBvuOBmeOAguODkOODvOOCuOODp+ODs+aWh+Wtl+WIl+ODouOCuOODpeODvOODq+OBjCBUZW1wbGF0ZVRvb2xraXQg44Gr6Kit5a6a44GV44KM44Gm44GE44KL5aC05ZCI44Gr44Gu44G/5L2/55So44GV44KM44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAn6aGn5a6i44GM6Kit5a6a6aCF55uu44KS6KaL44KL44GT44Go44KS6Kix5Y+v44GV44KM44KL5LiA6YCj44Gu5p2h5Lu244KS5a6a576p44GX44G+44GZ44CC5p2h5Lu244Gv44CB44Kq44OX44K344On44Oz44Gn54m55a6a44Gu6aGn5a6i44Kw44Or44O844OX44Gr5Yi26ZmQ44GZ44KL44GT44Go44GM44Gn44GN44G+44GZ44CC5ZCN5YmN44Gv5ZSv5LiA44Gu5b+F6aCI5bGe5oCn44Gn44GZ44CC5LuW44Gu44Kq44OX44K344On44Oz44GM5oyH5a6a44GV44KM44Gm44GE44Gq44GE5aC05ZCI44CB44GZ44G544Gm44Gu6Kit5a6a6aCF55uu44GM44Gd44Gu44Kr44OG44K044Oq44Gu5LiL44Gr6KGo56S644GV44KM44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfjgrjjgqfjg43jg6rjg4Pjgq/jg7vjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjgpLmtLvnlKjjgZfjgabmp4vmiJDjgqLjgqTjg4bjg6DjgpLliYrpmaTjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCuOOCp+ODjeODquODg+OCr+OCpOODs+OCv+ODvOODleOCp+OCpOOCueOCkua0u+eUqOOBl+OBpuani+aIkOOCouOCpOODhuODoOOCkuWPluW+l+OBmeOCi+aoqemZkOOCkuWumue+qeOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn44K444Kn44ON44Oq44OD44Kv44Kk44Oz44K/44O844OV44Kn44Kk44K544KS5rS755So44GX44Gm5qeL5oiQ44Ki44Kk44OG44Og44KS5qSc57Si44GZ44KL5qip6ZmQ44KS5a6a576p44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdHZW5lcmljIEludGVyZmFjZeOCkuS9v+eUqOOBl+OBpklUU03mp4vmiJDpoIXnm67jgpLoqK3lrprjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAn5qeL5oiQ44Ki44Kk44OG44Og44KS5a6a576p44GX44Gm44CB5qeL5oiQ44Ki44Kk44OG44Og44Gu44Oq44K544OI44Gu5bCP44GV44Gq44OT44Ol44O844KS6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ+ODjuODvOODieOBruaOpee2muOBq+ODquODs+OCr+OCv+OCpOODl+OBruODqeODmeODq+OCkuihqOekuuOBmeOCi+OBi+OBqeOBhuOBi+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn5ZCEQ29uZmlnSXRlbeOCr+ODqeOCueOBruato+imj+ihqOePvuOCkuWAi+WIpeOBq+Wumue+qeOBl+OBpuOAgUNvbmZpZ0l0ZW3lkI3jgpLnorroqo3jgZfjgIHlr77lv5zjgZnjgovjgqjjg6njg7zjg6Hjg4Pjgrvjg7zjgrjjgpLooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSeOCr+ODqeOCueOBq+W/nOOBmOOBpuOAgeioreWumumgheebruOBruamguimgeOBp+WIqeeUqOWPr+iDveOBqkNJ44Gu5YiX44KS5a6a576p44GX44G+44GZ44CC5ZCE6aCF55uu44Gv44CB44Kv44Op44K55ZCN44Go44CB5a++5b+c44GZ44KL44Kv44Op44K544Gn5Yip55So5Y+v6IO944Gq44OV44Kj44O844Or44OJ44Gu6YWN5YiX44GL44KJ5qeL5oiQ44GV44KM44Gq44GR44KM44Gw44Gq44KK44G+44Gb44KT44CC5YuV55qE44OV44Kj44O844Or44OJ44Gu44Ko44Oz44OI44Oq44Gv44CBRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDjgrnjgq3jg7zjg6DjgavlvpPjgo/jgarjgZHjgozjgbDjgarjgorjgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODleOCp+ODvOOCueOBruioreWumumgheebruaknOe0oue1kOaenOOBruioreWumumgheebruOCveODvOODiOOBruODh+ODleOCqeODq+ODiOOBruioreWumumgheebruWxnuaAp+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i44Kk44Oz44K/44OV44Kn44O844K544Gu6Kit5a6a6aCF55uu5qSc57Si57WQ5p6c44Gu6Kit5a6a6aCF55uu44K944O844OI44Gu44OH44OV44Kp44Or44OI44Gu6Kit5a6a6aCF55uu5bGe5oCn44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn44GT44Gu5pON5L2c44Gu44Kz44Oz44OV44Kj44Kw6aCF55uu5qSc57Si57WQ5p6c44Gu44Kz44Oz44OV44Kj44Kw6aCF55uu44K944O844OI44Gu44OH44OV44Kp44Or44OI44Gu44Kz44Oz44OV44Kj44Kw6aCF55uu5bGe5oCn44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7oqK3lrprpoIXnm67mpJzntKLntZDmnpzjga7jg4fjg5Xjgqnjg6vjg4jjga7oqK3lrprpoIXnm67poIbluo/jgpLlrprnvqnjgZfjgb7jgZnjgILkuIo6IOacgOOCguWPpOOBhOOCguOBruOBjOS4iuOAgkRvd246IOacgOaWsOOBjOS4iuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn44Kr44K544K/44Oe44Kk44Oz44K/44OV44Kn44O844K544Gu6Kit5a6a6aCF55uu5qSc57Si57WQ5p6c44Gu44OH44OV44Kp44Or44OI44Gu6Kit5a6a6aCF55uu6aCG5bqP44KS5a6a576p44GX44G+44GZ44CC5LiKOiDlj6TjgYTpoIbjgavooajnpLrjgZXjgozjgb7jgZnjgILkuIvvvJrmnIDmlrDjgYzkuIrjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn44GT44Gu5pON5L2c44Gu44Kz44Oz44OV44Kj44Kw6aCF55uu5qSc57Si57WQ5p6c44Gu44OH44OV44Kp44Or44OI44Gu44Kz44Oz44OV44Kj44Kw6aCF55uu6aCG5bqP44KS5a6a576p44GX44G+44GZ44CCVXA65Y+k44GE6aCG44CCRG93bu+8muacgOaWsOOBjOS4iuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnQ0njgq/jg6njgrnjgavlv5zjgZjjgabjgIHoqK3lrprpoIXnm67jga7mpoLopoHjgavooajnpLrjgZXjgozjgotDSeOBruODh+ODleOCqeODq+ODiOOBruWIl+OCkuWumue+qeOBl+OBvuOBmeOAguWQhOmgheebruOBr+OAgeOCr+ODqeOCueWQjeOBqOOAgeWvvuW/nOOBmeOCi+OCr+ODqeOCueOBp+WIqeeUqOWPr+iDveOBquODleOCo+ODvOODq+ODieOBrumFjeWIl+OBi+OCieani+aIkOOBleOCjOOBquOBkeOCjOOBsOOBquOCiuOBvuOBm+OCk+OAguWLleeahOODleOCo+ODvOODq+ODieOBruOCqOODs+ODiOODquOBr+OAgUR5bmFtaWNGaWVsZF9GaWVsZE5hbWXjgrnjgq3jg7zjg6DjgavlvpPjgo/jgarjgZHjgozjgbDjgarjgorjgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAn6KGo56S644GV44KM44KL44OH44OV44Kp44Or44OI44Gu6Zai5L+C44Gu5rex44GV44KS5a6a576p44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+ioreWumumgheebruaknOe0oueUu+mdouOBruODh+ODleOCqeODq+ODiOOBruihqOekuuioreWumumgheebruaknOe0ouWxnuaAp+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn44Kz44Oz44OV44Kj44Kw6aCF55uu5qSc57Si55S76Z2i44Gr44OH44OV44Kp44Or44OI44Gn6KGo56S644GV44KM44KL44Kz44Oz44OV44Kj44Kw6aCF55uu5qSc57Si5bGe5oCn44KS5a6a576p44GX44G+44GZ44CC5L6LOiAiS2V5ICLjgavjga/jg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4njga7lkI3liY0gKOOBk+OBruWgtOWQiOOBryBcJ1hcJynjgIEiQ29udGVudCIg44Gr44Gv44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJ44Gu44K/44Kk44OX44Gr5b+c44GY44Gm44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJ44Gu5YCk44CBVGV4dDogXCdhIHRleHRcJ+OAgURyb3Bkb3duOiBcJzFcJ+OAgURhdGUvVGltZe+8mlwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMO+8m1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDHvvJtTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU577ybXCfjgIHjgb7jgZ/jga8gXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn5qeL5oiQ44Ki44Kk44OG44Og44Gu44Kv44Op44K544Gu44OH44OV44Kp44Or44OI44Gu44K144OW44Kq44OW44K444Kn44Kv44OI44KS5a6a576p44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSeOCr+ODqeOCueOBq+W/nOOBmOOBpuOAgeioreWumumgheebruOBruamguimgeOBp+WIqeeUqOWPr+iDveOBqkNJ44Gu5YiX44KS5a6a576p44GX44G+44GZ44CC5ZCE6aCF55uu44Gv44CB44Kv44Op44K55ZCN44Go44CB5a++5b+c44GZ44KL44Kv44Op44K544Gn5Yip55So5Y+v6IO944Gq44OV44Kj44O844Or44OJ44Gu6YWN5YiX44GL44KJ5qeL5oiQ44GV44KM44Gq44GR44KM44Gw44Gq44KK44G+44Gb44KT44CC5YuV55qE44OV44Kj44O844Or44OJ44Gu44Ko44Oz44OI44Oq44Gv44CBRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDjgrnjgq3jg7zjg6DjgavlvpPjgo/jgarjgZHjgozjgbDjgarjgorjgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn44GT44Gu55S76Z2i44Gu44Oq44OD44OBIOODhuOCreOCueODiCDjgqjjg4fjgqPjgr/jg7wg44Kz44Oz44Od44O844ON44Oz44OI44Gu6auY44GV44KS5a6a576p44GX44G+44GZ44CC5pWw5YCkICjjg5Tjgq/jgrvjg6spIOOBvuOBn+OBr+ODkeODvOOCu+ODs+ODiOWApCAo55u45a++KSDjgpLlhaXlipvjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn566h55CG44Kk44Oz44K/44O844OV44Kn44Kk44K5IENsIOWumue+qeOCqOODh+OCo+OCv+OBruihjOaVsOOCkuWumue+qeOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICfjgqTjg7Pjgrfjg4fjg7Pjg4jnirbmhYvjga7pq5jvvIjkvos6IOWNsemZuu+8ieOBi+OCieS9ju+8iOS+izog5oOF5aCx77yJ44G444Gu44Kk44Oz44K344OH44Oz44OI54q25oWL44Gu6aCG5bqP44KS5a6a576p44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAn44Oq44Oz44Kv44GV44KM44Gf44OB44Kx44OD44OI44GMQ0njga7jgrnjg4bjg7zjgr/jgrnjgavlvbHpn7/jgpLkuI7jgYjjgovlj6/og73mgKfjgYzjgYLjgovjgIHplqLpgKPjgZnjgovjg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrnjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6Djga7nlLvpnaLjga7mpJzntKLliLbpmZDjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6Djga7mpJzntKLnlLvpnaLjga7mpJzntKLliLbpmZDjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdDdXN0b21lcklUU01Db25maWdJdGVtIOeUu+mdouOBruaknOe0ouWItumZkOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gg55S76Z2i44Gu5qSc57Si5Yi26ZmQ44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn5YWo44Gm44GuIENJIOOCr+ODqeOCueOBruODquODs+OCryDjg4bjg7zjg5bjg6vopIflkIjjg5Pjg6Xjg7zjgavooajnpLrjgZXjgozjgosgQ0kg44Gu5YiX44KS5a6a576p44GX44G+44GZ44CCIOOCqOODs+ODiOODquOBjOOBquOBhOWgtOWQiOOBr+OAgeODh+ODleOCqeODq+ODiOOBruWIl+OBjOihqOekuuOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnQ0kg44Kv44Op44K544Gr5b+c44GY44Gm44CB44Oq44Oz44KvIOODhuODvOODluODq+ikh+WQiOODk+ODpeODvOOBq+ihqOekuuOBleOCjOOCiyBDSSDjga7liJfjgpLlrprnvqnjgZfjgb7jgZnjgIIg5ZCE44Ko44Oz44OI44Oq44Gr44Gv44CB44Kv44Op44K55ZCN44Go5LqM6YeN44Kz44Ot44Oz44KS5o6l6aCt6L6e44Go44GX44Gm5LuY44GR44KL5b+F6KaB44GM44GC44KK44G+44GZICjkvos6IENvbXB1dGVyOjop44CC5YWo44Gm44GuIENJIOOBq+WFsemAmuOBmeOCiyBDSSDlsZ7mgKfjgYzjgYTjgY/jgaTjgYvjgYLjgorjgb7jgZnjgIIgKOOCr+ODqeOCuSBDb21wdXRlciDjga7kvos6IENvbXB1dGVyOjpOYW1l44CBQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZeOAgUNvbXB1dGVyOjpDcmVhdGVUaW1lKeOAgCBDSSDlrprnvqnjgaflrprnvqnjgZXjgozjgabjgYTjgovlgIvjgIXjga4gQ0kg5bGe5oCn44KS6KGo56S644GZ44KL44Gr44Gv44CB5qyh44Gu44K544Kt44O844Og44KS5L2/55So44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZICjjgq/jg6njgrkgQ29tcHV0ZXIg44Gu5L6LKTogQ29tcHV0ZXI6OkhhcmREaXNrOjox44CBQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MeOAgCBDSSDjgq/jg6njgrnjga7jgqjjg7Pjg4jjg6rjgYzjgarjgYTloLTlkIjjga/jgIHjg4fjg5Xjgqnjg6vjg4jjga7liJfjgYzooajnpLrjgZXjgozjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdJVFNNIOani+aIkOmgheebriBBQ0wg5qeL6YCg44Gu56ysIDMg44Os44OZ44Or44Gn44CB44CM44Ki44Kv44K344On44Oz44CN44Gr5L2/55So44Gn44GN44KL6aCF55uu44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSVRTTSDmp4vmiJDpoIXnm64gQUNMIOani+mAoOOBruesrCAxIOODrOODmeODq+OBp+WIqeeUqOWPr+iDveOBqumgheebruOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdJVFNNIOani+aIkOmgheebriBBQ0wg5qeL6YCg44Gu56ysIDIg44Os44OZ44Or44Gn5Yip55So5Y+v6IO944Gq6aCF55uu44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ+ODquODs+OCr+OBleOCjOOBn0NJ44Gu44K544OG44O844K/44K544Gr5b2x6Z+/44GZ44KL44Oq44Oz44Kv44Gu44K/44Kk44OX77yI44OB44Kx44OD44OI44Gu6Kaz54K544GL44KJ5ZCN5YmN44GM5LuY44GR44KJ44KM44G+44GZ77yJ44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn44Oq44Oz44Kv44GV44KM44GfQ0njga7jgrnjg4bjg7zjgr/jgrnjgavlvbHpn7/jgZnjgovjg4HjgrHjg4Pjg4jjga7jgr/jgqTjg5fjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICflrprnvqnjga7mm7TmlrAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOCkuWJiumZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICfjg4fjg5fjg6vjgrnjg4bjg7zjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ+ODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOBruOCq+ODqeODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICflsZXplovnirbmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn44Kz44OU44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAn44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJ44O744Kk44OZ44Oz44OI44O744Oi44K444Ol44O844Or44Gv44CB44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJ44GM5aSJ5pu044GV44KM44Gf5aC05ZCI44CB44Kz44Oz44OV44Kj44Kw44O744Ki44Kk44OG44Og44Gu5a6a576p44GM5ZCM5pyf44GV44KM44Gm44GE44Gq44GE44Go44Oe44O844Kv44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga4gSVRTTeODleOCo+ODvOODq+ODieeUu+mdouOBq+ihqOekuuOBmeOCi+ODgOOCpOODiuODn+ODg+OCr+ODu+ODleOCo+ODvOODq+ODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfpoaflrqLjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjga7oqK3lrprpoIXnm67mpoLopoHnlLvpnaLjgavooajnpLrjgZXjgozjgovli5XnmoTjg5XjgqPjg7zjg6vjg4njgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODvOODleOCp+ODvOOCueOBruioreWumumgheebruaknOe0oueUu+mdouOBq+ihqOekuuOBleOCjOOCi+WLleeahOODleOCo+ODvOODq+ODieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfmi4XlvZPogIXjg5Xjg63jg7Pjg4jjgqjjg7Pjg4njgYzkuIDluqbjgavopIfmlbDjga7oqK3lrprpoIXnm67jgafmqZ/og73jgZnjgovjgojjgYbjgavoqK3lrprpoIXnm67kuIDmi6zmk43kvZzmqZ/og73jgpLmnInlirnjgavjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ+ODquOCueODiOOBleOCjOOBn+OCsOODq+ODvOODl+OBruani+aIkOOCouOCpOODhuODoOS4gOaLrOWHpueQhuapn+iDveOBruOBv+OCkuacieWKueOBq+OBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdJVFNN44Gu6Kit5a6a6aCF55uu44GM5LiA5oSP44Gq5ZCN5YmN44Gn44GC44KL44GL44Gp44GG44GL44KS44OB44Kn44OD44Kv44GZ44KL5qmf6IO944Gu5pyJ5Yq5L+eEoeWKueOCkuioreWumuOBl+OBvuOBmeOAguOBk+OBruOCquODl+OCt+ODp+ODs+OCkuacieWKueOBq+OBmeOCi+WJjeOBq+OAgemHjeikh+OBl+OBn+WQjeWJjeOCkuaMgeOBpOaXouWtmOOBruioreWumumgheebruOBjOOBquOBhOOBi+OCt+OCueODhuODoOOCkuODgeOCp+ODg+OCr+OBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAguOBk+OCjOOBr+OAgeOCs+ODs+OCveODvOODq+OCs+ODnuODs+ODiSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMg44Gn5a6f6KGM44Gn44GN44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ+ODgeOCseODg+ODiOani+aIkOOCouOCpOODhuODoOOBruODquODs+OCr+OBq+ani+aIkOOCouOCpOODhuODoOOBruOCueODhuODvOOCv+OCueOCkuioreWumuOBmeOCi+OCpOODmeODs+ODiOODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICflhajmlofmpJzntKLjgavkvb/nlKjjgZXjgozjgovoqK3lrprpoIXnm67jgqTjg7Pjg4fjg4Pjgq/jgrnjga7jg5XjgqPjg7zjg6vjg4njgILjg5XjgqPjg7zjg6vjg4njgoLkv53lrZjjgZXjgozjgb7jgZnjgYzjgIHlhajkvZPnmoTjgarmqZ/og73jgavjga/lv4XpoIjjgafjga/jgYLjgorjgb7jgZvjgpPjgILjgqjjg7Pjg4jjg6rjgpIgMCDjgavoqK3lrprjgZnjgovjgYvjgIHliYrpmaTjgZnjgovjgZPjgajjgafjgIHmt7vku5jjg5XjgqHjgqTjg6vjga7jgqTjg7Pjgq/jg6vjg7zjg4njgpLnhKHlirnjgavjgZnjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ+ioreWumumgheebruOCpOODs+ODh+ODg+OCr+OCueOBq+agvOe0jeOBleOCjOOCi+ODleOCo+ODvOODq+ODieOBp+OAgeWFqOaWh+aknOe0ouS7peWkluOBq+S9v+eUqOOBleOCjOOCi+OAguWujOWFqOOBquapn+iDveOBruOBn+OCgeOBq+OAgeOBmeOBueOBpuOBruODleOCo+ODvOODq+ODieOBr+W/hemgiOOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ+WQhFdlYuOCteODvOODk+OCuSjjgq3jg7wp44Gr5a++44GX44Gm44CB44Kk44Oz44Od44O844OI44KS5Yi26ZmQ44GZ44KL44Kv44Op44K544Gu6YWN5YiXKOWApCnjgpLlrprnvqnjgZnjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgILpgbjmip7jgZXjgozjgZ/jgZnjgbnjgabjga7jgq/jg6njgrnjgIHjgYLjgovjgYTjga/ml6LlrZjjga7jgZnjgbnjgabjga7jgq/jg6njgrnjgavjgaTjgYTjgabjgIHjgqTjg7Pjg5zjg7zjgqvjga7oqK3lrprjgaforZjliKXlsZ7mgKfjgpLpgbjmip7jgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIGludm9rZXLjg6zjgqTjg6Tjg7zjga5HZW5lcmljSW50ZXJmYWNl44Oi44K444Ol44O844Or55m76Yyy44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIGludm9rZXLjg6zjgqTjg6Tjg7zjga5HZW5lcmljSW50ZXJmYWNl44Oi44K444Ol44O844Or55m76Yyy44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1GZXRjaCBpbnZva2Vy44Os44Kk44Ok44O844GuR2VuZXJpY0ludGVyZmFjZeODouOCuOODpeODvOODq+eZu+mMsuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIOioreWumumgheebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruS4gOimpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICfjgqTjg7Pjgrfjgrnjg4bjg7zjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ+OCpOODs+OCt+ODh+ODs+ODiOOCueODhuODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfjgqvjgrnjgr/jg57jg7zjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjga7oqK3lrprpoIXnm67mpJzntKLjgavjg4fjg5fjg63jgqTjg6Hjg7Pjg4jjgrnjg4bjg7zjg4jjgYzlkKvjgb7jgozjgovjgojjgYbjgavjgarjgorjgb7jgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCq+OCueOCv+ODnuODvOOCpOODs+OCv+ODvOODleOCp+ODvOOCueOBruioreWumumgheebruaknOe0ouOBq+OCpOODs+OCt+ODh+ODs+ODiOeKtuaFi+OCkuWQq+OCgeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn44GT44Gu5pON5L2c44Gu57WQ5p6c44Gr6KGo56S644GV44KM44KL44Kz44Oz44OV44Kj44Kw6aCF55uu44Gu5pyA5aSn5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAn44Kv44Op44K544KS5ouF5b2T44GZ44KL44Kw44Or44O844OX44KS44OB44Kn44OD44Kv44GZ44KL44Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAn5qeL5oiQ44Ki44Kk44OG44Og44KS5ouF5b2T44GZ44KL44Kw44Or44O844OX44KS44OB44Kn44OD44Kv44GZ44KL44Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn5qeL5oiQ44K/44Kk44OG44Og44Gu44Os44Od44O844OI44KS55Sf5oiQ44GZ44KL44Gf44KB44Gu44Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAn5ZCN5YmN44Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICfjg4rjg7Pjg5Djg7zjg7vjg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI44Kk44Oz44K/44O844OV44Kn44O844K544Gu5qSc57Si57WQ5p6c44Gu5ZCE44Oa44O844K444Gr6KGo56S644GV44KM44KL6Kit5a6a6aCF55uu44Gu5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCq+OCueOCv+ODnuODvOOCpOODs+OCv+ODvOODleOCp+ODvOOCueOBruaknOe0oue1kOaenOOBruWQhOODmuODvOOCuOOBq+ihqOekuuOBleOCjOOCi+ioreWumumgheebruOBruaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ+aknOe0ouOBmeOCi+OCquODluOCuOOCp+OCr+ODiOOAgeOCqOODs+ODiOODquaVsOOAgeihqOekuuOBmeOCi+WxnuaAp+OAgkNvbmZpZ0l0ZW0g44Gu5bGe5oCn44Gv44CB5piO56S655qE44GrIEVsYXN0aWNzZWFyY2gg57WM55Sx44Gn5L+d5a2Y44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ+amguimgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI44Kk44Oz44K/44OV44Kn44O844K544Gu55Kw5aKD6Kit5a6a44OT44Ol44O844Gu6Kit5a6a6aCF55uu44Kv44Op44K544Gu44Kr44OG44K044Oq44Gu44OR44Op44Oh44O844K/44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5bCP6Kit5a6a6aCF55uu5qaC6KaB44Gu5YiX44OV44Kj44Or44K/55So44Gu44OR44Op44Oh44O844K/44Gn44GZ44CC5rOo5oSPOiBcJ0FjdGl2ZVwnIOOCkiAwIOOBq+ioreWumuOBmeOCi+OBqOOAgeOCqOODvOOCuOOCp+ODs+ODiOOBr+WAi+S6uuioreWumuOBp+OBk+OBruOCsOODq+ODvOODl+OBruioreWumuOCkue3qOmbhuOBp+OBjeOBquOBj+OBquOCiuOBvuOBmeOBjOOAgeeuoeeQhuiAheOBr+S7luOBruODpuODvOOCtuOBruioreWumuOCkue3qOmbhuOBmeOCi+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAglByZWZlcmVuY2VHcm91cFwnIOOCkuS9v+eUqOOBl+OBpuOAgeOBk+OCjOOCieOBruioreWumuOCkuODpuODvOOCtuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruOBqeOBruOCqOODquOCouOBq+ihqOekuuOBmeOCi+OBi+OCkuWItuW+oeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44OH44OX44Ot44Kk44Oh44Oz44OI44Gu44OR44Op44Oh44O844K/44Gv44CB5ouF5b2T6ICFV2Vi44Kk44Oz44K/44OV44Kn44O844K544Gu55Kw5aKD6Kit5a6a44OT44Ol44O844Gn6Imy44KS56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44OV44Kn44O844K544Gu55Kw5aKD6Kit5a6a44OT44Ol44O844Gn44OH44OX44Ot44Kk54q25oWL44Gu44OR44Op44Oh44O844K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ+OCuOOCp+ODjeODqeODq+ODu+OCq+OCv+ODreOCsOOBruWxnuaAp+OBruaoqemZkOOCsOODq+ODvOODl+OBruioreWumuWApOS+i+OBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODleOCp+ODvOOCueOBrueSsOWig+ioreWumuODk+ODpeODvOOBruioreWumumgheebruOCr+ODqeOCueOBruWQjeWJjeODouOCuOODpeODvOODq+OBruODkeODqeODoeODvOOCv+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI44Kk44Oz44K/44OV44Kn44O844K544Gu55Kw5aKD6Kit5a6a44OT44Ol44O844Gu6Kit5a6a6aCF55uu44Kv44Op44K544Gu55Wq5Y+344Oi44K444Ol44O844Or44Gu44OR44Op44Oh44O844K/44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ+ODmuODvOOCuOOBruODkeODqeODoeODvOOCv++8iOani+aIkOOCouOCpOODhuODoOOBjOihqOekuuOBleOCjOOBvuOBme+8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7nkrDlooPoqK3lrprjg5Pjg6Xjg7zjga7oqK3lrprpoIXnm67jgq/jg6njgrnjga7jg5Djg7zjgrjjg6fjg7PmloflrZfliJfjg6Ljgrjjg6Xjg7zjg6vjga7jg5Hjg6njg6Hjg7zjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7nkrDlooPoqK3lrprjg5Pjg6Xjg7zjga7oqK3lrprpoIXnm67jgq/jg6njgrnnlKjjga7jg5Djg7zjgrjjg6fjg7PmloflrZfliJfjg4bjg7Pjg5fjg6zjg7zjg4jjg4Tjg7zjg6vjgq3jg4Pjg4jjg6Ljgrjjg6Xjg7zjg6vjga7jg5Hjg6njg6Hjg7zjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI44Kk44Oz44K/44OV44Kn44O844K544Gu55Kw5aKD6Kit5a6a44OT44Ol44O844Gu6Kit5a6a6aCF55uu44Kv44Op44K544Gu44OQ44O844K444On44Oz44OI44Oq44Ks44O844Gu44OR44Op44Oh44O844K/44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAn6Kit5a6a44GV44KM44Gf5ZCEV2Vi44K144O844OT44K544Gu5ZCE44Kk44OZ44Oz44OI44Gr5a++44GX44Gm77yISW52b2tlcuOBqOOBl+OBpu+8ieioreWumuOBleOCjOOBn+OCouOCr+OCt+ODp+ODs+OCkuWun+ihjOOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAn5qip6ZmQ44Kw44Or44O844OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBp0lUU03mp4vmiJDpoIXnm67mt7vku5jjgqLjgq/jgrfjg6fjg7PjgpLkvb/nlKjjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAhVdlYuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBp+ani+aIkOOCouOCpOODhuODoOeUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAhVdlYuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruani+aIkOOCouOCpOODhuODoOOBruaknOe0oueUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCq+OCueOCv+ODnuODvOOCpOODs+OCv+ODvOODleOCp+ODvOOCueOBrklUU03mp4vmiJDpoIXnm67mpJzntKLnlLvpnaLjgpLkvb/nlKjjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjgadJVFNN5qeL5oiQ6aCF55uu44OE44Oq44O844OT44Ol44O855S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAhVdlYuOCpOODs+OCv+ODvOODleOCp+OCpOOCueani+aIkOOCouOCpOODhuODoOOBruOCuuODvOODoOeUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAhVdlYuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBp+ani+aIkOOCouOCpOODhuODoOOBrui/veWKoOeUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7kuIDmi6xJVFNN6Kit5a6a6aCF55uu55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAhVdlYuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBp+ani+aIkOOCouOCpOODhuODoOOBrue3qOmbhueUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIVXZWLjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjgafmp4vmiJDjgqLjgqTjg4bjg6Djga7lsaXmrbTnlLvpnaLjgpLkvb/nlKjjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAhVdlYuOCpOODs+OCv+ODleOCp+ODvOOCueOBp+ani+aIkOOCouOCpOODhuODoOOBruWNsOWIt+eUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS5YmK6Zmk44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq54m55qipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS5qSc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICfjg4HjgrHjg4Pjg4jjgYxDSeOBq+ODquODs+OCr+OBleOCjOOBpuOBhOOCi+WgtOWQiOOAgUNJ44Gu44Kk44Oz44K344OH44Oz44OI44Gu44K544OG44O844K/44K544KS6Ieq5YuV55qE44Gr6Kit5a6a44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu5LiA5ous55S76Z2i44Gn44OH44OX44Ot44Kk54q25oWL44KS6Kit5a6a44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruani+aIkOOCouOCpOODhuODoOOBruS4gOaLrOeUu+mdouOBp+OCpOODs+OCt+ODh+ODs+ODiOOBruOCueODhuODvOOCv+OCueOCkuioreWumuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruani+aIkOOCouOCpOODhuODoOOBruOCuuODvOODoCDjg5Pjg6Xjg7zjgafjgIHmp4vmiJDjgqLjgqTjg4bjg6DjgpLliKXjga7jgqrjg5bjgrjjgqfjgq/jg4jjgavjg6rjg7Pjgq/jgafjgY3jgovjgojjgYbjgavjgZnjgovjg6Hjg4vjg6Xjg7zlhoXjga7jg6rjg7Pjgq/jgpLooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7mpoLopoHjgavjgYLjgovmp4vmiJDjgqLjgqTjg4bjg6Djga7lsaXmrbTjgavjgqLjgq/jgrvjgrnjgZnjgovjgZ/jgoHjga7jg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgavooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu44K644O844OgIOODk+ODpeODvOOBp+ani+aIkOOCouOCpOODhuODoOOBruWxpeattOOBq+OCouOCr+OCu+OCueOBmeOCi+OBn+OCgeOBruODquODs+OCr+OCkuODoeODi+ODpeODvOOBq+ihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+ODoeODi+ODpeODvOOBq+ODquODs+OCr+OCkuihqOekuuOBl+OBpuOAgeaLheW9k+iAhVdlYuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruOCuuODvOODoOihqOekuuOBp+ioreWumumgheebruOCkuWJiumZpOOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn6Kit5a6a6aCF55uu44Gu44Oq44Oz44Kv44KS44OE44Oq44O86KGo56S644GZ44KL44Gf44KB44Gu44Oq44Oz44Kv44KS44Oh44OL44Ol44O844Gr6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu5qaC6KaB44Gn5qeL5oiQ44Ki44Kk44OG44Og44KS6KSH6KO944GZ44KL44Gf44KB44Gu44Oh44OL44Ol44O844Gu44Oq44Oz44Kv44KS6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruOCuuODvOODoCDjg5Pjg6Xjg7zjgafmp4vmiJDjgqLjgqTjg4bjg6DjgpLopIfoo73jgZnjgovjgZ/jgoHjga7jg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgavooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruOCuuODvOODoCDjg5Pjg6Xjg7zjgafmp4vmiJDjgqLjgqTjg4bjg6DjgpLnt6jpm4bjgZnjgovjgZ/jgoHjga7jg6Hjg4vjg6Xjg7zjga7jg6rjg7Pjgq/jgpLooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruani+aIkOOCouOCpOODhuODoOOBruOCuuODvOODoCDjg5Pjg6Xjg7zjgavmiLvjgovjgZ/jgoHjga7jg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgavooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7jgrrjg7zjg6Ag44OT44Ol44O844Gn5qeL5oiQ44Ki44Kk44OG44Og44KS5Y2w5Yi344GZ44KL44Gf44KB44Gu44Oh44OL44Ol44O844Gu44Oq44Oz44Kv44KS6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu5qaC6KaB44Gn5qeL5oiQ44Ki44Kk44OG44Og44KS5ouh5aSn44GZ44KL44Gf44KB44Gu44Oh44OL44Ol44O844Gu44Oq44Oz44Kv44KS6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIVXZWLjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjgafmp4vmiJDjgqLjgqTjg4bjg6Djga7lsaXmrbTvvIjpgIbpoIbvvInjgpLooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAn5L2V44KC6YG45oqe44GV44KM44Gm44GE44Gq44GE5aC05ZCI44Gr6KGo56S644GV44KM44KL44OH44OV44Kp44Or44OI44Gu44Kr44OG44K044Oq44O844CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6Djga7orZjliKXlrZDjgIIgQ29uZmlnSXRlbe+8g+OAgU15Q29uZmlnSXRlbe+8g+OAgSDjg4fjg5Xjgqnjg6vjg4jjga9Db25maWdJdGVt77yD44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnQ29uZmlnSXRlbUZldGNoIGludm9rZXLjgpLoh6rli5XnmoTjgavotbfli5XjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ+ODkOODvOOCuOODp+ODs+aWh+Wtl+WIl+W8jyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICfjg5Djg7zjgrjjg6fjg7PmloflrZfliJfjg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAn44OQ44O844K444On44Oz44O744OI44Oq44Ks44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICfjgq3jg6Pjg4Pjgrfjg6XjgZXjgozjgZ/jg5XjgqPjg7zjg6vjg4njga7kvp3lrZjplqLkv4LjgpLjg4Hjgqfjg4Pjgq/jgZnjgovjgZPjgajjgafjgIFDb25maWdJdGVtQUNM44Gu5a6f6KGM44KS5Zue6YG/44Gn44GN44KL44GL44Gp44GG44GL44CC44GT44KM44Gv44OV44Kp44O844Og44Gu44Ot44O844OJ5pmC6ZaT44KS5pS55ZaE44GZ44KL44GT44Go44GM44Gn44GN44KL44GM44CBQUNMTW9kdWxlIOOCkiBJVFNNQ29uZmlnSXRlbS0g44GoIEZvcm0tUmV0dXJuVHlwZSDjgafkvb/nlKjjgZnjgovloLTlkIjjga/nhKHlirnjgavjgZfjgarjgZHjgozjgbDjgarjgonjgarjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ+OBqeOBruS4gOiIrOeahOOBquaDheWgseOBjOODmOODg+ODgOODvOOBq+ihqOekuuOBleOCjOOBpuOBhOOCi+OBi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ+OCr+ODqeOCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfjgrDjg63jg7zjg5Djg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICfmrKHjga7nlJ/nlKMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ+WGjeeUn+eUoyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn55Sf55SjJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBV77yaMTcuNeOCpOODs+ODge+8iDQ0LjQ1Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVe+8mjIx44Kk44Oz44OB77yINTMuMzRjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVV77yaMjYuMjXjgqTjg7Pjg4HvvIg2Ni42OGNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4Ve+8mjMxLjXjgqTjg7Pjg4HvvIg4MC4wMWNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE544Kk44Oz44OB44Op44OD44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVe+8mjEuNzXjgqTjg7Pjg4HvvIg0LjQ1Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBV77yaMzXjgqTjg7Pjg4HvvIg4OC45Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjHjgqTjg7Pjg4Hjg6njg4Pjgq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJV77yaMzguNeOCpOODs+ODge+8iDk3Ljc5Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjPjgqTjg7Pjg4Hjg6njg4Pjgq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMy4244Kk44Oz44OB77yINjAwbW3vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFXvvJo0MuOCpOODs+ODge+8iDEwNi42OGNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdV77yaNDcuMjXjgqTjg7Pjg4HvvIgxMjAuMDJjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVe+8mjMuNeOCpOODs+ODge+8iDguODljbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBV77yaNTIuNeOCpOODs+ODge+8iDEzMy4zNWNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEuNeOCpOODs+ODge+8iDgwMG1t77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNV77yaNTcuNzXjgqTjg7Pjg4HvvIgxNDYuNjhjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LjTjgqTjg7Pjg4HvvIg5MDBtbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2Ve+8mjYz44Kk44Oz44OB77yIMTYwLjAyY23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzkuNOOCpOODs+ODge+8iDEwMDBtbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5Ve+8mjY4LjI144Kk44Oz44OB77yIMTczLjM1Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVe+8mjUuMjXjgqTjg7Pjg4HvvIgxMy4zNGNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlXvvJo3My4144Kk44Oz44OB77yIMTg2LjY5Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLjPjgqTjg7Pjg4HvvIgxMTAwbW3vvInvvJonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVXvvJo3OC43NeOCpOODs+ODge+8iDIwMC4wMmNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LjLjgqTjg7Pjg4HvvIgxMjAwbW3vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFXvvJo4NOOCpOODs+ODge+8iDIxMy4zNmNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFXvvJo344Kk44Oz44OB77yIMTcuNzhjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVV77yaOC43NeOCpOODs+ODge+8iDIyLjIzY23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2Ve+8mjEwLjXjgqTjg7Pjg4HvvIgyNi42N2Nt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdV77yaMTIuMjXjgqTjg7Pjg4HvvIgzMS4xMmNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhV77yaMTTjgqTjg7Pjg4HvvIgzNS41NmNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlV77yaMTUuNzXjgqTjg7Pjg4HvvIg0MC4wMWNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAn5Lya6KiIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAn44Ki44OJ44Os44K55Ymy44KK5b2T44GmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfnrqHnkIbogIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAn44Ki44OK44Ot44Kw6Zu76KmxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAn44Ki44OX44Op44Kk44Ki44Oz44K544O744K/44Kk44OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAn44OQ44OD44OG44Oq44O85a656YeP77yIQWjvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAn44OQ44OD44OG44Oq44O844K/44Kk44OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAn5qeL56+JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfjg5Djgrnjg7vjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFXjgq/jg6njgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ+WuuemHjyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn44Kw44Op44OV44Kj44OD44Kv44K544Kr44O844OJMeaemuOBguOBn+OCiuOBruWuuemHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ+OCq+ODvOODieeVquWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ+OCq+ODvOODieODquODvOODgOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICfjgqvjg7zjg4njga7nqK7poZ4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ+OCr+ODqeOCpOOCouODs+ODiOiovOaYjuabuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICfjgq/jg6njgqTjgqLjg7Pjg4jjg7vjgr3jg5Xjg4jjgqbjgqfjgqInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAn6aGn5a6i44Kr44OG44K044Oq44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ+OCr+ODreODg+OCr+ODrOODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAn44Kv44Ot44OD44Kv44K544OU44O844OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfjgrPjg7zjg4nnvbLlkI3oqLzmmI7mm7gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ+mbu+ipseS8muitsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ+OCs+ODs+OCteODq+ODhuOCo+ODs+OCsOWlkee0hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAn6YCj57Wh5YWIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfosqnlo7Lku6PnkIblupcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICfjgrPjg7Pjg4bjg4rnrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICflpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ+Wlkee0hOOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ+Wlkee0hOacn+mWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICflpZHntITmnJ/plpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAn44Kz44O844OJ44Os44K56Zu76Kmx77yIREVDVOmbu+ipse+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfjgrPjgrnjg4jljZjkvY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICfjg6njgqTjgrvjg7PjgrnmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ+S9nOaIkOaXpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn44Kr44K544K/44Og44Op44OD44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICfjg4fjgqPjg7zjgqjjgqTjg4Hjgrfjg7zjg5Tjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1DkuojntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROU+OCteODvOODkOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICfjg4fjgqPjg7TjgqMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn6KuL5rGC5pu444Gu5pel5LuYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICfms6jmlofml6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ+ODr+ODqeODs+ODiOWPluW+l+aXpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICfjg6rjg6rjg7zjgrnml6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ+ODh+OCueOCr+ODiOODg+ODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ+ODh+OCo+OCueODl+ODrOOCpOODneODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ+aWh+abuOe9suWQjeiovOaYjuabuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0njg6njg4Pjgq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ+mbu+WtkOODoeODvOODq+iovOaYjuabuO+8iFMvTUlNRSDoqLzmmI7mm7jvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn6ZuH55So5aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAn57WC5LqGSVDjgqLjg4njg6zjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICfjgrXjg53jg7zjg4jntYLkuoYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICfmnInlirnmnJ/pmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ+WkluS7mOOBkeODj+ODvOODieODieODqeOCpOODlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ+ODleOCoeOCpOOCouOCpuOCqeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ+ODleOCoeODvOODoOOCpuOCp+OCoic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ+ODleODqeOCpOODm+OCpOODvOODq+ODu+OCqOODjeODq+OCruODvOiyr+iUtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ+ODleOCqeODvOODoOODleOCoeOCr+OCv+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAn44OV44Op44Oz44OB44Oj44Kk44K65aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn44OV44Oq44O844Km44Kn44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ+S4gOiIrOaDheWgsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ+OCsOODqeODleOCo+ODg+OCr+OCueOCq+ODvOODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAn44Kw44Op44OV44Kj44OD44Kv44K544Kr44O844OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAn44OP44O844OJ44Km44Kn44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAn44OP44O844OJ44Km44Kn44Ki44O744Oi44OH44OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ+ODj+ODvOODieOCpuOCp+OCoumHjemHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAn44OY44OD44OJ44K744OD44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVDjg5fjg63jg4jjgrPjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAn44Ki44Kk44OH44Oz44OG44Kj44OG44Kj44Go44Ki44Kv44K744K5566h55CG77yISUFN77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICflnKjluqvnlarlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICfmipXos4fjgrPjgrnjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfjgqTjg7Pjg5zjgqTjgrnnlarlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfjgq3jg7zjg5zjg7zjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENE44Oi44OL44K/44O877yI5ray5pm244OH44Kj44K544OX44Os44Kk77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUTjg6Ljg4vjgr/jg7zvvIjnmbrlhYnjg4DjgqTjgqrjg7zjg4nvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAn5Zu65a6a6Zu76KmxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ+ODjuODvOODiFBDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAn57ev5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAn44Os44Kk44Ok44O8Me+8mueJqeeQhuODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICfjg6zjgqTjg6Tjg7wy77ya44OH44O844K/44Oq44Oz44Kv44O744Os44Kk44Ok44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfjg6zjgqTjg6Tjg7wz77ya44ON44OD44OI44Ov44O844Kv44O744Os44Kk44Ok44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ+ODrOOCpOODpOODvDPvvJrjg43jg4Pjg4jjg6/jg7zjgq/jg7vjg6zjgqTjg6Tjg7zvvIjjgrnjg7zjg5Hjg7zjg43jg4Pjg4jvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAn44Os44Kk44Ok44O8NO+8muODiOODqeODs+OCueODneODvOODiOODu+ODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAn44Os44Kk44Ok44O8Ne+8muOCu+ODg+OCt+ODp+ODs+ODu+ODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICfjg6zjgqTjg6Tjg7w277ya44OX44Os44K844Oz44OG44O844K344On44Oz44O744Os44Kk44Ok44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAn44Os44Kk44Ok44O8N++8muOCouODl+ODquOCseODvOOCt+ODp+ODs+ODu+ODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICfjg6rjg7zjgrnlpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICfjg6njgqTjgrvjg7PjgrnlpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ+ODqeOCpOOCu+ODs+OCueOCreODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICfjg6njgqTjgrvjg7Pjgrnjga7nqK7poZ4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ+ODqeOCpOOCu+ODs+OCueacn+mWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ+ODqeOCpOOCu+ODs+OCueacn+mWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn44Oq44Oz6YW46YmE44Oq44OB44Km44Og77yITGlGZVBPNO+8iembu+axoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn44Oq44OB44Km44Og44Kk44Kq44Oz77yITGktaW9u77yJ44OQ44OD44OG44Oq44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAn44Ot44O844Oz5aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICfmiYDlnKjlnLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAn57WM5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn44Oh44O844Kr44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfmnIDlpKfosqDojbflrrnph48gKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ+ODoeODouODquODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ+ODoeODouODquODvOOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAn44Of44OL44Op44OD44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICfmkLrluK/pm7voqbHnlarlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAn44Oi44OQ44Kk44OrL+e1hOOBv+i+vOOBvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ+ODouODh+ODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ+ODouODh+ODq+iqrOaYjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICfjg6Ljg4vjgr/jg7zop6Plg4/luqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAn44Oi44OL44K/44O844K144Kk44K6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAn44Oe44Km44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICfjg43jg4Pjg4jjg6/jg7zjgq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAn44ON44OD44OI44Ov44O844Kv5oOF5aCxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICfjg43jg4Pjg4jjg6/jg7zjgq/mg4XloLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ+ODjeODg+ODiOODr+ODvOOCr+WxpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ+ODi+ODg+OCseODq+OCq+ODieODn+OCpuODoO+8iE5pQ2TvvInpm7vmsaAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICfjg4vjg4PjgrHjg6vmsLTntKDpm7vmsaAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAn56eY5a+G5L+d5oyB5aWR57SE77yITkRB77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAn44OO44O844OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQ1BV5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ1JBTeODouOCuOODpeODvOODq+aVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICfjgrDjg6njg5XjgqPjg4Pjgq/jgqvjg7zjg4njga7mnprmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUTjg6Ljg4vjgr/jg7zvvIjmnInmqZ/nmbrlhYnjg4DjgqTjgqrjg7zjg4nvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAn5Za25qWt6LK755SoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ+azqOaWh+eVquWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ+S7lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAn5Ye65YqbJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ+aal+iovOeVquWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ+aal+iovOeVquWPtzInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAn44OR44O844OI44OK44O844K344OD44OX5aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn6Zu76Kmx55Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICfpm7voqbHjgr/jgqTjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfjg5XjgqPjgrjjgqvjg6vjg7vjgrPjgqInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICfjg5Hjg6/jg7zjg7vjg4fjg6rjg5Djg6rjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICfjgafos7zlhaXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ+ODqeODg+OCr+OBruWlpeihjOOBjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ+ODqeODg+OCr+ODpuODi+ODg+ODiCAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ+WupOWGhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTeOCq+ODvOODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFPoqLzmmI7mm7gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICflo7LosrflpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAn6KGb5pif6Zu76KmxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ+WvhumWieWei+mJm+iThOmbu+axoCAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ+OCt+ODquOCouODq+eVquWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICfjgrXjg7zjg5Djg7zjg7vjgr3jg5Xjg4jjgqbjgqfjgqInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfjgrXjg7zjg5PjgrnlpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfjgrXjg7zjg5Pjgrnjgr/jgrAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAn44K944Kx44OD44OI44K/44Kk44OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn44K944OV44OI44Km44Kn44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAn44K544OU44O844Kr44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ+OCueOCv+ODs+ODgOODvOODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAn6ZaL5aeLSVDjgqLjg4njg6zjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ+OCueODiOODrOODvOOCuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ+OCueODiOODrOODvOOCuOODu+ODkeODvOODhuOCo+OCt+ODp+ODsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ+WtkOS8muekvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAn5qaC6KaBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAn44K344Oz44Kv44Op44Kk44Ki44Oz44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICfjgrnjg6zjg4Pjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICfjgrXjg7Pjg4Djg7zjg5zjg6vjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ+OCsOODqeODleOCo+ODg+OCr+OCueOCq+ODvOODiVJBTeWQiOioiO+8iEdC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAn5ZCI6KiIUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ+OCv+ODg+ODgeOCueOCr+ODquODvOODs+ODouODi+OCv+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ+OCv+ODr+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNC44OP44OWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAn44OW44Kk44K444O844Ko44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ+OBi+OBneOBhuOBuOOBhOOBhOOBjeOCguOBhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlLjg5jjg4Pjg4njgrvjg4Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICfjg5Djg7zjg4Hjg6Pjg6vjg6rjg7Pjgq8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVDjg5Xjgqnjg7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ+OCpuOCp+ODluOCq+ODoeODqSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/ko_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmtvX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfsnbzrsJgg7Jq07JiBIOuNsOydtO2EsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAn7IiY7IugIOyalOyyrSDrjbDsnbTthLAg7ISk7KCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAn67Cc7IugIOydkeuLtSDrjbDsnbTthLAg7ISk7KCVJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn6rWs7ISxIO2VreuqqSDqtIDrpqwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICftgbTrnpjsiqQg7KCV7J2YIOuzgOqyvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn7Jet7ZWgIOygleydmCDrs4Dqsr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQg7YG0656Y7IqkIOuyiOuTpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+yXrOq4sOyXkOyEnCDqsIDsnqUg7J2867CY7KCB7J24IOq1rOyEsSDtla3rqqnsnYQg67O07Jes7KO864qUIFJlYWR5MkltcG9ydCDtgbTrnpjsiqQg67KI65Ok7J2EIOqwgOyguOyYrCDsiJgg7J6I7Iq164uI64ukLiDrqocg6rCA7KeAIOy2lOqwgCDqtazshLHsnbQg7ZWE7JqU7ZWgIOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ+q4sOyhtCDsl5TthLDti7Ag7JeF642w7J207Yq4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnUmVhZHkyQWRvcHQg7YG0656Y7IqkIOuyiOuTpCDqsIDsoLjsmKTquLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfqtazshLEg7ZWt66qpIO2BtOuemOyKpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn6rWs7ISxIO2VreuqqSDsl63tlaAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAn6rWs7ISxIO2VreuqqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICfsiJjsl4Ug7ZWE7YSw66eBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+uqqeuhneyXkOyEnCDtgbTrnpjsiqTrpbwg7ISg7YOd7ZWY7JesIOyDiCDqtazshLEg7ZWt66qp7J2EIOunjOuTreuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICftgbTrnpjsiqQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIOq1rOyEsSDtla3rqqkg7J286rSEIOyekeyXhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn67Cw7Y+sIOyDge2DnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ+yduOyLnOuNmO2KuCDsg4Htg5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn64uk66W4IOunge2BrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn6rWs7ISxIO2VreuqqSDrsojtmLjqsIAg7J6Y66q765CY7JeI7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfsl7DqsrDtlaAg64uk66W4IOq1rOyEsSDtla3rqqnsnZgg67KI7Zi47J6F64uI64ukLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ+ydtCDqtazshLEg7ZWt66qp7J2EIOygleunkCDsgq3soJztlZjsi5zqsqDsirXri4jquYw/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+ydtCDqtazshLEg7ZWt66qp7J2YIOydtOumhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn7J2066aE7J20IOydtOuvuCDri6TsnYwg67KI7Zi47J2YIOq1rOyEsSDtla3rqqnsl5DshJwg7IKs7JqpIOykkeyeheuLiOuLpDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn67KE7KCEIOuyiO2YuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn7J20IOq1rOyEsSDtla3rqqnsnZgg67KE7KCEIOuyiO2YuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+uyhOyghCDrsojtmLjqsIAg64uk7J2MIOuyiO2YuOydmCBDb25maWdJdGVtc+yXkOyEnCDsnbTrr7gg7IKs7JqpIOykkeyeheuLiOuLpDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfrsLDtj6wg7IOB7YOcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn7J247Iuc642Y7Yq4IOyDge2DnCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn6rWs7ISxIO2VreuqqSDquLDroZ06ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ+q4sOuhnSDsvZjthZDsuKAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+2BrOumrOyXkOydtO2DgOyehCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICftmZXrjIAg67O06riwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ+2OmOydtOyngOuLuSDqtazshLEg7ZWt66qpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfqtazshLEg7ZWt66qpIOuNsOydtO2EsOulvCDssL7snYQg7IiYIOyXhuyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfsnbQg6rWs7ISxIO2VreuqqeydhCDshKDtg53tlanri4jri6QuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn6rKA7IOJIOyLpO2WiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfsnbTsoIQg67KE7KCE7JeQ7ISc64+EIOqygOyDie2VmOyLnOuCmOyalD8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICfqtazshLEg7ZWt66qp7JqpIO2KuOumrOu3sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ+q5iuydtCDroIjrsqgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICftmZXrjIAv7LaV7IaMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ+q1rOyEsSDtla3rqqnsnZgg7LWc64yAIOunge2BrCDroIjrsqjsl5Ag64+E64us7ZaI7Iq164uI64ukISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+q1rOyEsSDtla3rqqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAn6rWs7ISxIO2VreuqqSDsoJXrs7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn7ZiE7J6sIOuwsO2PrCDsg4Htg5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ+2YhOyerCDsnbjsi5zrjZjtirgg7IOB7YOcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ+uniOyngOuniSDrs4Dqsr3rkKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn66eI7KeA66eJIOuzgOqyveyekCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ+q1rOyEsSDtla3rqqknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAn6rWs7ISxIO2VreuqqSDqsoDsg4knOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ+qwnOyytCDsnKDtmJUnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICfsnKDtmJXrs4Qg7ZWE7YSw66eBJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn64uk7J2MIO2BtOuemOyKpOulvCDqsIDsoLjsmLXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ+uLpOydjCDsl63tlaDsnYQg6rCA7KC47Ji164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICftlbTri7kg64+Z7KCBIO2VhOuTnOyZgCDsnbzrsJgg7Lm07YOI66Gc6re4IO2BtOuemOyKpOuPhCDsg53shLHrkJjrqbAg7J6Q64+Z7Jy866GcIOygnOqxsOuQmOyngCDslYrripTri6TripQg7KCQ7JeQIOycoOydmO2VmOyEuOyalC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfqs4Tsho0g7KeE7ZaJ7ZWY7Iuc6rKg7Iq164uI6rmMPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfsmIjsoJwg7YG0656Y7Iqk6rCAIO2VhOyalO2VqeuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn7KCV7J2Y7JeQIOycoO2aqO2VnCBZQU1MIO2VtOyLnOqwgCDsl4bsirXri4jri6QuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAn6rCc7JqUOiBJVFNNIOq1rOyEsSDtla3rqqknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlE6rCAIOyngOygleuQmOyngCDslYrslZjsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAn7ISg7YOd7ZWcIOq1rOyEsSDtla3rqqnsnbQg7ZWY64KYIOydtOyDgSDtlYTsmpTtlanri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAn7J20IOq1rOyEsSDtla3rqqnsl5Ag64yA7ZWcIOyTsOq4sCDqtoztlZzsnbQg7JeG7Iq164uI64ukOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn7YG0656Y7Iqk7JeQIOuMgO2VnCDsoJXsnZjqsIAg7KCV7J2Y65CY7KeAIOyViuyVmOyKteuLiOuLpCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ+uNsOydtO2EsOuyoOydtOyKpOyXkOyEnCDqtazshLEg7ZWt66qpICIlcyLrpbwg7LC+7J2EIOyImCDsl4bsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn6rWs7ISxIO2VreuqqSBJRCAlc+ulvCDsgq3soJztlaAg7IiYIOyXhuyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlc+yXkCDrjIDtlZwg67KE7KCE7J2EIOywvuydhCDsiJgg7JeG7Iq164uI64ukISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfqtazshLEg7ZWt66qpIElELCDspJHrs7UgSUQg65iQ64qUIO2BtOuemOyKpCBJROqwgCDsp4DsoJXrkJjsp4Ag7JWK7JWY7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAn7JWh7IS47IqkIOq2jO2VnOydtCDsl4bsirXri4jri6QhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ+2eiOyKpO2GoOumrOulvCDtkZzsi5ztlaAg7IiYIOyXhuqzoCwgQ29uZmlnSXRlbUlE6rCAIOyngOygleuQmOyngCDslYrslZjsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn6riw66Gd7J2EIO2RnOyLnO2VoCDsiJgg7JeG7Jy866mwIOyVoeyEuOyKpCDqtoztlZzsnbQg67aA7Jes65CY7KeAIOyViuyVmOyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ+yDiCDqtazshLEg7ZWt66qpKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAn7IOIIOuyhOyghCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn67Cw7Y+sIOyDge2DnCDsl4XrjbDsnbTtirjrkKgo7IOIPSVzLCDsnbTsoIQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ+yduOyLnOuNmO2KuCDsg4Htg5wg7JeF642w7J207Yq4KOyDiD0lcywg7J207KCEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ+q1rOyEsSDtla3rqqkoSUQ9JXMpIOyCreygnOuQqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ3Mo7Jyg7ZiVPSVzKeyXkCDrjIDtlZwg66eB7YGs6rCAIOy2lOqwgOuQmOyXiOyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ3Mo7Jyg7ZiVPSVzKeyXkCDrjIDtlZwg66eB7YGsIOyCreygnOuQqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAn6rWs7ISxIO2VreuqqSDsoJXsnZgg7JeF642w7J207Yq465CoKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ+ydtOumhCDsl4XrjbDsnbTtirgo7IOIPSVzLCDsnbTsoIQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAn7IaN7ISxICVz6rCAICIlcyLsl5DshJwgIiVzIuuhnCDsl4XrjbDsnbTtirjrkJjsl4jsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ+uyhOyghCAlcyDsgq3soJzrkKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAn6rWs7ISxIO2VreuqqSBJRCDrmJDripQg67KE7KCEIElE6rCAIOyngOygleuQmOyngCDslYrslZjsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+yEpOyglSDtla3rqqnsnYQg7ZGc7Iuc7ZWgIOyImCDsl4bsnLzrqbAg7JWh7IS47IqkIOq2jO2VnOydtCDsl4bsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVz66W8IOuNsOydtO2EsOuyoOydtOyKpOyXkOyEnCDssL7snYQg7IiYIOyXhuyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ+q1rOyEsSDtla3rqqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ+yXkOyEnCAlc+qwgCDsnbjsh4TtlojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfssLjqs6AnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfsnpjrqrvrkJwgQ2xhc3NJROyeheuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDbGFzc0lE6rCAIOygnOqzteuQmOyngCDslYrsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAn7J20IO2BtOuemOyKpOyXkCDrjIDtlZwg7JWh7IS47IqkIOq2jO2VnOydtCDrtoDsl6zrkJjsp4Ag7JWK7JWY7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn6rKw6rO8IOyXhuydjCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfqtazshLEg7ZWt66qpIOqygOyDiSDqsrDqs7wnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ+2VreuqqeydhCDtkZzsi5ztlaAg7IiYIOyXhuyKteuLiOuLpC4g6rWs7ISxIO2VreuqqeyXkCDrjIDtlZwg7JWh7IS47IqkIOq2jO2VnOydtCDrtoDsl6zrkJjsp4Ag7JWK7JWY7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICfqtazshLEg7ZWt66qp7J2EIOywvuydhCDsiJgg7JeG7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICfrsoTsoITsnYQg7LC+7J2EIOyImCDsl4bsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn7Jq07JiBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfqsr3qs6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfsnbjsi5zrjZjtirgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+ydtCDqtazshLEg7ZWt66qp7J2YIOuwsO2PrCDsg4Htg5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfsnbQg6rWs7ISxIO2VreuqqeydmCDsnbjsi5zrjZjtirgg7IOB7YOcJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn67mE7ZeI6rCAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ+2VhO2EsOqwgCDsnKDtmqjtlZjsp4Ag7JWK7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAn6rKA7IOJIOunpOqwnOuzgOyImOqwgCDsnpjrqrvrkJjsl4jsirXri4jri6QhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAn7ZGc7Iuc65CcIOq1rOyEsSDtla3rqqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn67Cw7Y+sIOyDge2DnCDsnKDtmJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn7ZiE7J6sIOyduOyLnOuNmO2KuCDsg4Htg5wg7Jyg7ZiVJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ+yCrOydtCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn6rWs7ISxIO2VreuqqeydmCDtgbTrnpjsiqQg7KCc7ZWcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICftlZjrgpgg7J207IOB7J2YIO2BtOuemOyKpOulvCDshKDtg53tlZjsl6wg7ISg7YOdIOqwgOuKpe2VnCDqtazshLEg7ZWt66qp7J2EIOygnO2VnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ+q1rOyEsSDtla3rqqnsnZgg7YG0656Y7IqkIOygnO2VnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ+2VmOuCmCDsnbTsg4HsnZgg7YG0656Y7Iqk66W8IOyEoO2Dne2VmOyXrCDshKDtg50g6rCA64ql7ZWcIOq1rOyEsSDtla3rqqnsnYQg7KCc7ZWc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ+uPmeyggSjqtazshLEg7ZWt66qpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAn7KCV7KCBKOuyhOyghCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAn66eB7YGsIOywuOyhsCDsnKDtmJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAn7J20IOunge2BrOqwgCDqtazshLEg7ZWt66qp7JeQIOyggeyaqeuQmOuKlOyngCDrmJDripQg7LC47KGwIOqwnOyytOydmCDsoJXsoIEg67KE7KCE7JeQIOyggeyaqeuQmOuKlOyngCDsl6zrtoDsnoXri4jri6QuIO2YhOyerCDsnbjsi5zrjZjtirgg7IOB7YOcIOqzhOyCsOydgCDrj5nsoIEg66eB7YGs7JeQ7ISc66eMIOyImO2WieuQqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICfqtazshLEg7ZWt66qp7J2EIOqygOyDie2VoCDsho3shLHsnYQg7ISg7YOd7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ+q4sOuzuCDqtazsobDqsIAg7Jyg7Zqo7ZWY7KeAIOyViuyKteuLiOuLpC4gWUFNTCDtmJXsi53snZgg642w7J207YSwIO2VtOyLnOulvCDsnoXroKXtlZjshLjsmpQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnWUFNTCDrrLjsnpDsl7TsnYAgXCctLS1cJ+uhnCDsi5zsnpHtlbTslbwg7ZWp64uI64ukLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdjb25maWdpdGVtX2xpbmsg7YWM7J2067iU7J2EIOygnOqxsO2VoCDsiJgg7JeG7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAn6rSA66CoIOuPmeyggSDtlYTrk5zrpbwg7LC+7J2EIOyImCDsl4bsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnY29uZmlnaXRlbV9saW5rIO2FjOydtOu4lOyXkCDsgr3snoXtlaAg7IiYIOyXhuyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ2NvbmZpZ2l0ZW1fbGluayDthYzsnbTruJTsl5Ag7ZaJIDDqsJzrpbwg7IK97J6F7ZaI7Iq164uI64ukLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICftlZjrgpjsnZgg7JqU7IaM7J2YIOy1nOuMgCDqsJzsiJgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAn7LKo67aA7YyM7J28IOqwgOyguOyYpOq4sC/rgrTrs7TrgrTquLAo7ZWcIOykhOydmCDrp4jsp4Drp4kg7ZWt66qp7Jy866GcKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ+uyhOyghCDrrLjsnpDsl7QnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAn7KCV7J2YIOuPmeq4sO2ZlCDspJEg7Jik66WY6rCAIOuwnOyDne2WiOyKteuLiOuLpC4g66Gc6re466W8IO2ZleyduO2VtCDso7zshLjsmpQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAn64+Z6riw7ZmU65CY7KeAIOyViuydgCBJVFNNQ29uZmlnSXRlbSDsoJXsnZjqsIAg7J6I7Iq164uI64ukLiBJVFNNQ29uZmlnSXRlbSDrj5nsoIEg7ZWE65OcIOuzgOqyvSDsgqztla3snYQg67Cw7Y+s7ZWY7IS47JqULic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn66eM66OM65CoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn7Jyg7KeAIOq0gOumrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ+2MjOydvOufvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn6rOE7ZqN65CcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ+yImOumrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn7J2A7Ye0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ+qygO2GoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn7YWM7Iqk7Yq4L1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICfqsJzsmpQg67CPIO2ZleyduCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICftgbTrnpjsiqQv7Jet7ZWgIOuwjyDqtIDroKgg7ZWE65OcIOqwgOyguOyYpOq4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ+2BtOuemOyKpCDqsIDsoLjsmKTquLAg7KSR7JeQIOyYpOulmOqwgCDrsJzsg53tlojsirXri4jri6QuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSDsiKjquYAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIO2RnOyLnOuQqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqygOyDieyXkOyEnCDtmZXsnqUg6rKA7IOJIOyhsOqxtOydhCDtl4jsmqntlanri4jri6QuIOydtCDquLDriqXsnYQg7IKs7Jqp7ZWY66m0IOyYiOulvCDrk6TslrQgIigqa2V5MSomJiprZXkyKikiIOuYkOuKlCAiKCprZXkxKnx8KmtleTIqKSLsmYAg6rCZ7J2AIOyhsOqxtOycvOuhnCDqtazshLEg7ZWt66qpIOydtOumhOydhCDqsoDsg4ntlaAg7IiYIOyeiOyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn6rOg6rCdIOyduO2EsO2OmOydtOyKpOydmCDshKTsoJUg7ZWt66qpIOqygOyDieyXkOyEnCDtmZXsnqUg6rKA7IOJIOyhsOqxtOydhCDtl4jsmqntlanri4jri6QuIOydtCDquLDriqXsnYQg7IKs7Jqp7ZWY66m0IOyYiOulvCDrk6TslrQgIigqa2V5MSomJiprZXkyKikiIOuYkOuKlCAiKCprZXkxKnx8KmtleTIqKSLsmYAg6rCZ7J2AIOyhsOqxtOycvOuhnCDqtazshLEg7ZWt66qpIOydtOumhOydhCDqsoDsg4ntlaAg7IiYIOyeiOyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAn7ZWg64u565CcIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfqs6DqsJ3sgqzsl5Ag7ZWg64u565CcIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAn6rOg6rCdIOyCrOyaqeyekOyXkOqyjCDtlaDri7nrkJwgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIg7ISk7KCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICfrj5nsnbztlZwg6rWs7ISx7ZWt66qpIO2BtOuemOyKpChcJ2NsYXNzXCcpIOuYkOuKlCDsoITsl60oXCdnbG9iYWxcJykg64K07JeQ7ISc66eMIOqzoOycoO2VnCDsnbTrpoTsnYQg7ZmV7J247ZWY66+A66GcIOykkeuzteydhCDssL7snYQg65WMIOq4sOyhtOydmCDrqqjrk6Ag6rWs7ISx7ZWt66qp7J20IOqzoOugpOuQqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ+uqheuqhSDssrTqs4Trpbwg7KCB7Jqp7ZWgIOuqqOuTiOydhCDshKDtg53tlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICfrsojtmLgg7LK06rOE66W8IOyggeyaqe2VoCDrqqjrk4jsnYQg7ISg7YOd7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICfrsoTsoIQg66y47J6Q7Je0IOyytOqzhOulvCDsoIHsmqntlaAg66qo65OI7J2EIOyEoO2Dne2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfsg4gg67KE7KCEIOyDneyEseydhCDtirjrpqzqsbDtlaAg7IaN7ISx7J2EIOyEoO2Dne2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAn7J20IOq1rOyEsSDtla3rqqkg7YG0656Y7Iqk7JeQIO2VoOuLue2VoCDsubTthYzqs6Drpqzrpbwg7ISg7YOd7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICfqtazshLEg7ZWt66qpIOqwnOyalOyXkCDrjIDtlZwg7Je0IOq1rOyEsSDtla3rqqkg7ZWE7YSwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqwnOyalOyXkOyEnCDtlYTthLDrp4HtlaAg7IiYIOyeiOuKlCDsl7TsnoXri4jri6QuIOywuOqzoDog6rWs7ISxIO2VreuqqSDsho3shLHqs7wg64+Z7KCBIO2VhOuTnChEeW5hbWljRmllbGRfTmFtZVgpIOunjCDtl4jsmqnrkKnri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ+q1rOyEsSDtla3rqqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ+q1rOyEsSDtla3rqqkg7LaU6rCALic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ+q1rOyEsSDtla3rqqkg7Y647KeRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwg6riw66Gd7JeQIOuhnOq5he2VoCDsiJgg7J6I64qUIOq1rOyEsSDtla3rqqkg7J2067Kk7Yq4IOuqqOuTiOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAn6rWs7ISxIO2VreuqqeydhCDtmITsnqwg7KCV7J2Y66GcIOyXheuNsOydtO2KuO2VmOuKlCDqtazshLEg7ZWt66qpIOydtOuypO2KuCDrqqjrk4jsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAn6rWs7ISxIO2VreuqqSDquLDroZ0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ+q1rOyEsSDtla3rqqkg7J247IeELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ+q1rOyEsSDtla3rqqkg7ZmV64yAL+y2leyGjC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfqtazshLEg7ZWt66qpIO2KuOumrCDrs7TquLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAn6rWs7ISxIO2VreuqqSDrsoTsoIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAn64uk7J2MIO2BtOuemOyKpOydmCDqtazshLEg7ZWt66qp7J2AIEVsYXN0aWNzZWFyY2gg7ISc67KE7JeQIOyggOyepeuQmOyngCDslYrsirXri4jri6QuIOydtOulvCDquLDsobQgQ0nsl5Ag7KCB7Jqp7ZWY66Ck66m0IOydtCDsmLXshZjsnYQg67OA6rK97ZWcIO2bhCDsvZjshpTsnYQg7Ya17ZW0IENJIOuniOydtOq3uOugiOydtOyFmOydhCDsi6TtlontlbTslbwg7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfri6TsnYwg67Cw7Y+sIOyDge2DnOydmCDqtazshLEg7ZWt66qp7J2AIEVsYXN0aWNzZWFyY2gg7ISc67KE7JeQIOyggOyepeuQmOyngCDslYrsirXri4jri6QuIOydtOulvCDquLDsobQgQ0nsl5Ag7KCB7Jqp7ZWY66Ck66m0IOydtCDsmLXshZjsnYQg67OA6rK97ZWcIO2bhCDsvZjshpTsnYQg7Ya17ZW0IENJIOuniOydtOq3uOugiOydtOyFmOydhCDsi6TtlontlbTslbwg7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfqtazshLEg7ZWt66qpIOygnO2VnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAn7Y6Y7J207KeA64u5IOq1rOyEsSDtla3rqqkg7KCc7ZWcLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAn6rWs7ISxIOq0gOumrCDrjbDsnbTthLDrsqDsnbTsiqQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfqtazshLEg7ZWt66qpIOydvOq0hCDrqqjrk4guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsoDsg4kg67Cx7JeU65OcIOudvOyasO2EsOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn6rWs7ISxIO2VreuqqeyXkCDrjIDtlZwg7KCV7J2Y66W8IOunjOuTpOqzoCDqtIDrpqztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAn7Yq57KCVIOyLnOygkOyXkCDqtazshLEg7ZWt66qp7JeQIOuMgO2VnCDti7DsvJPsnYQg66eM65Ot64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICfqs6DqsJ3snYAg6rO86rGwIENJIOuyhOyghOydhCDrs7wg7IiYIOyeiOyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAn6rOg6rCd7J2AIOydtOyghCBDSSDrsoTsoIQg6rCE7JeQIOyImOuPmeycvOuhnCDsoITtmZjtlaAg7IiYIOyeiOyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICfqtazshLEg7ZWt66qpIOqygOyDiSDtmZTrqbTsnZgg7IaN7ISx7JeQIOyCrOyaqe2VoCDquLDrs7gg642w7J207YSw7J6F64uI64ukLiDsmIg6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAn6rWs7ISxIO2VreuqqSDqsoDsg4kg7ZmU66m07J2YIOyGjeyEseyXkCDsgqzsmqntlaAg6riw67O4IOuNsOydtO2EsOyeheuLiOuLpC4g7JiIOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn66eB7YGsIOqwneyytCDsnITsoK/sl5DshJwg7ISk7KCVIOuyhO2KvOydhCDsgqzsmqntlaAg7IiY7J6I64qUIOyVoeyFmCDsoJXsnZggKExpbmtPYmplY3QgOjogVmlld01vZGUgPSAiY29tcGxleCIpLiDsnbTrn6ztlZwg7J6R7JeF7J2AIOuLpOydjCBKUyDrsI8gQ1NTIO2MjOydvOydhCDrk7HroZ3tlbTslbztlanri4jri6QuIENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAn67KE7KCEIOusuOyekOyXtOyXkCDrjIDtlZwg7YWc7ZSM66a/OjrtiLTtgrcg7LK06rOE66W8IOygleydmO2VqeuLiOuLpC4g67KE7KCEIOusuOyekOyXtCDrqqjrk4jsnbQgVGVtcGxhdGVUb29sa2l07Jy866GcIOyEpOygleuQnCDqsr3smrDsl5Drp4wg7IKs7Jqp65Cp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ+qzoOqwneydtCDqtazshLEg7ZWt66qp7J2EIOuzvCDsiJgg7J6I64+E66GdIO2XiOyaqeuQmOuKlCDsobDqsbQg7KeR7ZWp7J2EIOygleydmO2VqeuLiOuLpC4g7KGw6rG07J2AIOyEoO2DneyggeycvOuhnCDtirnsoJUg6rOg6rCdIOq3uOujueycvOuhnCDsoJztlZztlaAg7IiYIOyeiOyKteuLiOuLpC4g7J2066aE7J2AIOycoOydvO2VnCDtlYTsiJgg7IaN7ISx7J6F64uI64ukLiDri6Trpbgg7Ji17IWY7J2EIOyngOygle2VmOyngCDslYrsnLzrqbQg66qo65OgIOq1rOyEsSDtla3rqqnsnbQg7ZW064u5IOy5tO2FjOqzoOumrCDslYTrnpjsl5Ag7ZGc7Iuc65Cp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn7J2867CYIOyduO2EsO2OmOydtOyKpOulvCDsgqzsmqntlZjsl6wgSVRTTSDqtazshLEg7ZWt66qp7J2EIOyCreygnO2VmOuKlCDrjbAg7ZWE7JqU7ZWcIOq2jO2VnOydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfsnbzrsJgg7J247YSw7Y6Y7J207Iqk66W8IOyCrOyaqe2VmOyXrCBJVFNNIOq1rOyEsSDtla3rqqnsnYQg6rCA7KC47Jik64qUIOuNsCDtlYTsmpTtlZwg6raM7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+ydvOuwmCDsnbjthLDtjpjsnbTsiqTrpbwg7IKs7Jqp7ZWY7JesIElUU00g6rWs7ISxIO2VreuqqeydhCDqsoDsg4ntlZjripQg642wIO2VhOyalO2VnCDqtoztlZzsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn7J2867CYIOyduO2EsO2OmOydtOyKpOulvCDsgqzsmqntlZjsl6wgSVRTTSDqtazshLEg7ZWt66qp7J2EIOyEpOygle2VmOuKlCDrjbAg7ZWE7JqU7ZWcIOq2jO2VnOydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ+q1rOyEsSDtla3rqqkg66qp66Gd7J2YIOyekeydgCDrs7TquLDrpbwg7ZGc7Iuc7ZWY64qUIOqwnOyalCDrqqjrk4jsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICfrhbjrk5wg7Jew6rKw7JeQIOunge2BrCDsnKDtmJUg66CI7J2067iU7J2EIO2RnOyLnO2VoOyngCDsl6zrtoDrpbwg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn6rCBIOq1rOyEsSDtla3rqqkg7YG0656Y7Iqk7JeQIOuMgO2VtCDqsJzrs4TsoIHsnLzroZwg7KCV6rec7Iud7J2EIOygleydmO2VmOyXrCDqtazshLEg7ZWt66qpIOydtOumhOydhCDtmZXsnbjtlZjqs6Ag7ZW064u5IOyYpOulmCDrqZTsi5zsp4Drpbwg7ZGc7Iuc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0NJIO2BtOuemOyKpOyXkCDrlLDrnbwg6rWs7ISxIO2VreuqqSDqsJzsmpTsl5DshJwg7IKs7JqpIOqwgOuKpe2VnCBDSSDsl7TsnYQg7KCV7J2Y7ZWp64uI64ukLiDqsIEg7ZWt66qp7J2AIO2BtOuemOyKpCDsnbTrpoTqs7wg7ZW064u5IO2BtOuemOyKpOyXkOyEnCDsgqzsmqkg6rCA64ql7ZWcIO2VhOuTnCDrsLDsl7TroZwg6rWs7ISx65CY7Ja07JW8IO2VqeuLiOuLpC4g64+Z7KCBIO2VhOuTnCDtla3rqqnsnYAgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDsiqTtgqTrp4jrpbwg65Sw65287JW8IO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsoDsg4kg6rKw6rO87J2YIOq1rOyEsSDtla3rqqkg7KCV66Cs7J2EIOychO2VnCDquLDrs7gg6rWs7ISxIO2VreuqqSDsho3shLHsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6rOg6rCdIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqygOyDiSDqsrDqs7zsnZgg6rWs7ISxIO2VreuqqSDsoJXroKzsnYQg7JyE7ZWcIOq4sOuzuCDqtazshLEg7ZWt66qpIOyGjeyEseydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn7J20IOyekeyXheydmCDqtazshLEg7ZWt66qpIOqygOyDiSDqsrDqs7zsnZgg6rWs7ISxIO2VreuqqSDsoJXroKzsl5Ag64yA7ZWcIOq4sOuzuCDqtazshLEg7ZWt66qpIOyGjeyEseydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJIOqysOqzvOyXkOyEnCDquLDrs7gg6rWs7ISxIO2VreuqqSDsiJzshJzrpbwg7KCV7J2Y7ZWp64uI64ukLiDsnITsqr06IOqwgOyepSDsmKTrnpjrkJwg7ZWt66qp7J2EIOunqCDsnITsl5Ag67Cw7LmY7ZWp64uI64ukLiDslYTrnpjroZw6IOy1nOyLoCDtla3rqqnsnbQg66eoIOychOyXkCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfqs6DqsJ0g7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJIOqysOqzvOyXkOyEnCDquLDrs7gg6rWs7ISxIO2VreuqqSDsiJzshJzrpbwg7KCV7J2Y7ZWp64uI64ukLiDsnITsqr06IOqwgOyepSDsmKTrnpjrkJwg7ZWt66qp7J2EIOunqCDsnITsl5Ag7ZGc7Iuc7ZWp64uI64ukLiDslYTrnpjroZw6IOy1nOyLoCDtla3rqqnsnYQg66eoIOychOyXkCDrsLDsuZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+ydtCDsnpHsl4XsnZgg6rWs7ISxIO2VreuqqSDqsoDsg4kg6rKw6rO87JeQ7IScIOq4sOuzuCDqtazshLEg7ZWt66qpIOyInOyEnOulvCDsoJXsnZjtlanri4jri6QuIOychOuhnDog6rCA7J6lIOyYpOuemOuQnCDtla3rqqnsnYQg7JyE7JeQIO2RnOyLnO2VqeuLiOuLpC4g7JWE656Y66GcOiDstZzsi6Ag7ZWt66qp7J2EIOunqCDsnITsl5Ag67Cw7LmY7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnQ0kg7YG0656Y7Iqk7JeQIOuUsOudvCDqtazshLEg7ZWt66qpIOqwnOyalOyXkCDtkZzsi5zrkJjripQgQ0nsnZgg6riw67O4IOyXtOydhCDsoJXsnZjtlanri4jri6QuIOqwgSDtla3rqqnsnYAg7YG0656Y7IqkIOydtOumhOqzvCDtlbTri7kg7YG0656Y7Iqk7JeQIOyCrOyaqSDqsIDriqXtlZwg7ZWE65OcIOuwsOyXtOuhnCDqtazshLHrkJjslrTslbwg7ZWp64uI64ukLiDrj5nsoIEg7ZWE65OcIO2VreuqqeydgCBEeW5hbWljRmllbGRfRmllbGROYW1lIOyKpO2CpOuniOulvCDrlLDrnbzslbwg7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICftkZzsi5ztlaAg6riw67O4IOq0gOqzhCDquYrsnbTrpbwg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfqtazshLEg7ZWt66qpIOqygOyDiSDtmZTrqbTsl5Ag6riw67O47KCB7Jy866GcIO2RnOyLnOuQmOuKlCDqtazshLEg7ZWt66qpIOqygOyDiSDsho3shLHsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn6rWs7ISxIO2VreuqqSDqsoDsg4kg7ZmU66m07JeQIOq4sOuzuOyggeycvOuhnCDtkZzsi5zrkJjripQg6rWs7ISxIO2VreuqqSDqsoDsg4kg7IaN7ISx7J2EIOygleydmO2VqeuLiOuLpC4g7JiIOiAi7YKkIuuKlCDrj5nsoIEg7ZWE65Oc7J2YIOydtOumhCjsnbQg6rK97JqwIFwnWFwnKSwgIuy9mO2FkOy4oCLripQg64+Z7KCBIO2VhOuTnCDsnKDtmJXsl5Ag65Sw6528IOuPmeyggSDtlYTrk5zsnZgg6rCSKO2FjeyKpO2KuDogXCfthY3siqTtirhcJywg65Oc66Gt64uk7Jq0OiBcJzFcJywg64Kg7KecL+yLnOqwhCnsnbTslrTslbwg7ZWp64uI64ukOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDBcJzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyDrsI8g65iQ64qUIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ1wnSVRTTUNvbmZpZ0l0ZW1cJyDtgbTrnpjsiqTsnZgg6riw67O4IO2VmOychCDqsJ3ssrTrpbwg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnQ0kg7YG0656Y7Iqk7JeQIOuUsOudvCDqtazshLEg7ZWt66qpIOqwnOyalOyXkOyEnCDsgqzsmqkg6rCA64ql7ZWcIENJIOyXtOydhCDsoJXsnZjtlanri4jri6QuIOqwgSDtla3rqqnsnYAg7YG0656Y7IqkIOydtOumhOqzvCDtlbTri7kg7YG0656Y7Iqk7JeQ7IScIOyCrOyaqSDqsIDriqXtlZwg7ZWE65OcIOuwsOyXtOuhnCDqtazshLHrkJjslrTslbwg7ZWp64uI64ukLiDrj5nsoIEg7ZWE65OcIO2VreuqqeydgCBEeW5hbWljRmllbGRfRmllbGROYW1lIOyKpO2CpOuniOulvCDrlLDrnbzslbwg7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICfsnbQg7ZmU66m07J2YIOyEnOyLneyeiOuKlCDthY3siqTtirgg7Y647KeR6riwIOq1rOyEsSDsmpTshozsnZgg64aS7J2066W8IOygleydmO2VqeuLiOuLpC4g7Iir7J6QICjtlL3shYApIOuYkOuKlCDtjbzshLztirgg6rCSICjsg4HrjIAp7J2EIOyeheugpe2VmOyLreyLnOyYpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn6rSA66as7J6QIOyduO2EsO2OmOydtOyKpOyXkOyEnCBDSSDsoJXsnZgg7Y647KeR6riw7J2YIO2WiSDsiJjrpbwg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICfsnbjsi5zrjZjtirgg7IOB7YOc7J2YIOyInOyEnOulvCDrhpLsnYwo7JiIOiDtgazrpqzsi5ztg4gp7JeQ7IScIOuCruydjCjsmIg6IOq4sOuKpSnsnLzroZwg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ+yXsOqysOuQnCDti7DsvJPsnbQgQ0nsnZgg7IOB7YOc7JeQIOyYge2WpeydhCDspIQg7IiYIOyeiOuKlCDqtIDroKgg67Cw7Y+sIOyDge2DnOulvCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbSDtmZTrqbTsnZgg6rKA7IOJIOygnO2VnOydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCDtmZTrqbTsnZgg6rKA7IOJIOygnO2VnOydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSDtmZTrqbTsnZgg6rKA7IOJIOygnO2VnOydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCDtmZTrqbTsnZgg6rKA7IOJIOygnO2VnOydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn66qo65OgIENJIO2BtOuemOyKpOyXkCDrjIDtlbQg66eB7YGsIO2FjOydtOu4lCDrs7Xtlakg67O06riw7JeQIO2RnOyLnOuQmOuKlCBDSSDsl7TsnYQg7KCV7J2Y7ZWp64uI64ukLiDtla3rqqnsnbQg7JeG7Jy866m0IOq4sOuzuCDsl7TsnbQg7ZGc7Iuc65Cp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnQ0kg7YG0656Y7Iqk7JeQIOuUsOudvCDrp4Htgawg7YWM7J2067iUIOuzte2VqSDrs7TquLDsl5Ag7ZGc7Iuc65CY64qUIENJIOyXtOydhCDsoJXsnZjtlanri4jri6QuIOqwgSDtla3rqqkg7JWe7JeQ64qUIO2BtOuemOyKpCDsnbTrpoTqs7wg7J207KSRIOy9nOuhoCjsmIg6IOy7tO2TqO2EsDo6KeydtCDsmYDslbwg7ZWp64uI64ukLiDrqqjrk6AgQ0nsl5Ag6rO17Ya17Jy866GcIOyggeyaqeuQmOuKlCDrqocg6rCA7KeAIENJIOyGjeyEseydtCDsnojsirXri4jri6Qo7JiIOiBDb21wdXRlciDtgbTrnpjsiqTsnZgg6rK97JqwOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBDSSDsoJXsnZjsl5Ag7KCV7J2Y65CcIOuMgOuhnCDqsJzrs4QgQ0kg7IaN7ISx7J2EIO2RnOyLnO2VmOugpOuptCDri6TsnYwg7Iqk7YKk66eI66W8IOyCrOyaqe2VtOyVvCDtlanri4jri6Qo7JiIOiBDb21wdXRlciDtgbTrnpjsiqTsnZgg6rK97JqwKTog7Lu07ZOo7YSwOjrtlZjrk5zrlJTsiqTtgaw6OjEsIOy7tO2TqO2EsDo67ZWY65Oc65SU7Iqk7YGsOjoxOjrsmqnrn4k6OjEsIOy7tO2TqO2EsDo67ZWY65Oc65SU7Iqk7YGsOjoyLCDsu7Ttk6jthLA6Ou2VmOuTnOuUlOyKpO2BrDo6Mjo67Jqp65+JOjoxLiBDSSDtgbTrnpjsiqTsl5Ag64yA7ZWcIO2VreuqqeydtCDsl4bripQg6rK97JqwIOq4sOuzuCDsl7TsnbQg7ZGc7Iuc65Cp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00g6rWs7ISxIO2VreuqqSBBQ0wg6rWs7KGw7J2YIOyEuCDrsojsp7gg7IiY7KSA7JeQ7IScIFwn64+Z7J6RXCfsl5Ag7IKs7Jqp7ZWgIOyImCDsnojripQg7ZWt66qp7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdJVFNNIOq1rOyEsSDtla3rqqkgQUNMIOq1rOyhsOydmCDssqsg67KI7Ke4IOyImOykgOyXkOyEnCDsgqzsmqntlaAg7IiYIOyeiOuKlCDtla3rqqnsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdJVFNNIOq1rOyEsSDtla3rqqkgQUNMIOq1rOyhsOydmCDrkZAg67KI7Ke4IOyImOykgOyXkOyEnCDsgqzsmqntlaAg7IiYIOyeiOuKlCDtla3rqqnsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfsl7DqsrDrkJwgQ0nsnZgg7IOB7YOc7JeQIOyYge2WpeydhCDrr7jsuaAg7IiYIOyeiOuKlCDrp4Htgawg7Jyg7ZiVKO2LsOy8kyDqtIDsoJDsl5DshJwg66qF66qF65CoKeydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn7Jew6rKw65CcIENJ7J2YIOyDge2DnOyXkCDsmIHtlqXsnYQg7KSEIOyImCDsnojripQg7Yuw7LyTIOycoO2YleydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAn7KCV7J2YIOyXheuNsOydtO2KuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn6rWs7ISxIO2VreuqqSDsgq3soJwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfrsLDtj6wg7IOB7YOcIOyDieyDgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfrsLDtj6wg7IOB7YOcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ+ykkeuztSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ+uPmeyggSDtlYTrk5wg67OA6rK9IOyCrO2VreydtCDtj6ztlajrkJwg6rK97JqwIOq1rOyEsSDtla3rqqkg7KCV7J2Y6rCAIOuPmeq4sO2ZlOuQmOyngCDslYrsnYAg6rKD7Jy866GcIO2RnOyLnO2VmOuKlCDrj5nsoIEg7ZWE65OcIOydtOuypO2KuCDrqqjrk4jsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOy2lOqwgCBJVFNNIO2VhOuTnCDtmZTrqbTsl5Ag7ZGc7Iuc65CY64qUIOuPmeyggSDtlYTrk5zsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+qzoOqwnSDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsJzsmpQg7ZmU66m07JeQIO2RnOyLnOuQmOuKlCDrj5nsoIEg7ZWE65Oc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqygOyDiSDtmZTrqbTsl5Ag7ZGc7Iuc65CY64qUIOuPmeyggSDtlYTrk5zsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDtlITrn7Dtirjsl5Trk5zsl5DshJwg7ZWcIOuyiOyXkCDrkZAg6rCcIOydtOyDgeydmCDqtazshLEg7ZWt66qp7JeQIOuMgO2VtCDsnpHsl4XtlaAg7IiYIOyeiOuPhOuhnSDqtazshLEg7ZWt66qpIOydvOq0hCDsnpHsl4Ug6riw64ql7J2EIOyCrOyaqSDshKTsoJXtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfrgpjsl7TrkJwg6re466O57JeQIOuMgO2VtOyEnOunjCDqtazshLEg7ZWt66qpIOydvOq0hCDsnpHsl4Ug6riw64ql7J2EIO2ZnOyEse2ZlO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAn6rOg7Jyg7ZWcIOydtOumhOydtCDsnojripTsp4AgSVRTTSDqtazshLEg7ZWt66qp7J2EIO2ZleyduO2VmOuKlCDquLDriqXsnYQg7IKs7JqpL+yCrOyaqSDslYgg7ZWo7Jy866GcIOyEpOygle2VqeuLiOuLpC4g7J20IOyYteyFmOydhCDsgqzsmqkg7ISk7KCV7ZWY6riwIOyghOyXkCDsi5zsiqTthZzsl5Ag7J2066+4IOyhtOyerO2VmOuKlCDqtazshLEg7ZWt66qp7JeQIOykkeuzteuQnCDsnbTrpoTsnbQg7J6I64qU7KeAIO2ZleyduO2VtOyVvCDtlanri4jri6QuIOydtCDsnpHsl4XsnYAg7L2Y7IaUIOuqheugueyduCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXPrpbwg7IKs7Jqp7ZWY7JesIOyImO2Wie2VoCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICfsnbTrsqTtirgg66qo65OI7J2EIOyCrOyaqe2VmOyXrCDti7DsvJMtY29uZmlnaXRlbS1saW5r7JeQ7IScIGNvbmZpZ2l0ZW0tc3RhdHVz66W8IOyEpOygle2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAn7KCE7LK0IO2FjeyKpO2KuCDqsoDsg4nsl5Ag7IKs7Jqp65CY64qUIOq1rOyEsSDtla3rqqkg7J24642x7Iqk7J2YIO2VhOuTnOyeheuLiOuLpC4g7ZWE65Oc64+EIOyggOyepeuQmOyngOunjCDsoITssrQg6riw64ql7JeQIO2VhOyImOyggeyduCDqsoPsnYAg7JWE64uZ64uI64ukLiDssqjrtoAg7YyM7J28IO2PrO2VqOydgCDtla3rqqnsnYQgMOycvOuhnCDshKTsoJXtlZjqsbDrgpgg7IKt7KCc7ZWY7JesIOu5hO2ZnOyEse2ZlO2VoCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAn7KCE7LK0IO2FjeyKpO2KuCDqsoDsg4kg7Jm47JeQIOuLpOuluCDsmqnrj4TroZwg7IKs7Jqp65CY64qUIOq1rOyEsSDtla3rqqkg7J24642x7Iqk7JeQIOyggOyepeuQnCDtlYTrk5zsnoXri4jri6QuIOyghOyytCDquLDriqXsnYQg7IKs7Jqp7ZWY66Ck66m0IOuqqOuToCDtlYTrk5zqsIAg7ZWE7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ+uqqOuToCDsm7nshJzruYTsiqQo7YKkKeyXkCDrjIDtlbQg6rCA7KC47Jik6riw6rCAIOygnO2VnOuQmOuKlCDtgbTrnpjsiqQo6rCSKeydmCDrsLDsl7TsnYQg7KCV7J2Y7ZWgIOyImCDsnojsirXri4jri6QuIOyEoO2Dne2VnCDrqqjrk6Ag7YG0656Y7IqkIOuYkOuKlCDrqqjrk6Ag6riw7KG0IO2BtOuemOyKpOyXkCDrjIDtlbQg7Iud67OEIOyGjeyEseydhCDsnbjrs7Tsu6Qg6rWs7ISx7JeQ7IScIOyEoO2Dne2VtOyVvCDtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1GZXRjaCDsnbjrs7Tsu6Qg66CI7J207Ja07JeQIOuMgO2VnCBHZW5lcmljSW50ZXJmYWNlIOuqqOuTiCDrk7HroZ0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIOyduOuztOy7pCDroIjsnbTslrTsl5Ag64yA7ZWcIEdlbmVyaWNJbnRlcmZhY2Ug66qo65OIIOuTseuhnS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIOyduOuztOy7pCDroIjsnbTslrTsl5Ag64yA7ZWcIEdlbmVyaWNJbnRlcmZhY2Ug66qo65OIIOuTseuhnS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSDqtazshLEg7ZWt66qpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTSDqtazshLEg7ZWt66qpIOqwnOyalC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfsnbjsi5zrjZjtirgg7IOB7YOcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+qzoOqwnSDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsoDsg4nsl5Ag67Cw7Y+sIOyDge2DnOulvCDtj6ztlajtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfqs6DqsJ0g7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJ7JeQIOyduOyLnOuNmO2KuCDsg4Htg5zrpbwg7Y+s7ZWo7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn7J20IOyekeyXheydmCDqsrDqs7zsl5Ag7ZGc7Iuc7ZWgIOy1nOuMgCDqtazshLEg7ZWt66qpIOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfrqqjrk4jsnYQg7IKs7Jqp7ZWY7JesIO2BtOuemOyKpOulvCDri7Tri7ntlZjripQg6re466O57J2EIO2ZleyduO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfrqqjrk4jsnYQg7YG066at7ZWY7JesIOq1rOyEsSDtla3rqqnsnYQg64u064u57ZWY64qUIOq3uOujueydhCDtmZXsnbjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn66qo65OI7J2EIOyCrOyaqe2VmOyXrCBJVFNNIOq1rOyEsSDtla3rqqkg7Ya16rOE66W8IOyDneyEse2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICfsnbTrpoQg66qo65OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICfsiKvsnpAg66qo65OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwg6rKA7IOJIOqysOqzvOydmCDqsIEg7Y6Y7J207KeA7JeQIO2RnOyLnO2VoCDqtazshLEg7ZWt66qp7J2YIOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6rOg6rCdIOyduO2EsO2OmOydtOyKpOyXkOyEnCDqsoDsg4kg6rKw6rO87J2YIOqwgSDtjpjsnbTsp4Dsl5Ag7ZGc7Iuc7ZWgIOq1rOyEsSDtla3rqqkg7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ+qygOyDie2VoCDqsJzssrQsIO2RnOyLnO2VoCDtla3rqqkg7IiYLCDtkZzsi5ztlaAg7IaN7ISxLiDqtazshLEg7ZWt66qpIOyGjeyEseydgCBFbGFzdGljc2VhcmNo66W8IO2Gte2VtCDrqoXsi5zsoIHsnLzroZwg7KCA7J6l7ZW07JW8IO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn6rCc7JqULic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDquLDrs7gg7ISk7KCVIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qpIO2BtOuemOyKpOydmCDsubTthYzqs6Drpqzsl5Ag64yA7ZWcIOunpOqwnCDrs4DsiJjsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7J6R7J2AIOq1rOyEsSDtla3rqqkg6rCc7JqU7J2YIOyXtCDtlYTthLDsl5Ag64yA7ZWcIOunpOqwnCDrs4DsiJjsnoXri4jri6QuIOywuOqzoDogXCftmZzshLFcJ+ydhCAw7Jy866GcIOyEpOygle2VmOuptCDsg4Hri7Tsm5DsnbQg6rCc7J24IOq4sOuzuCDshKTsoJXsl5DshJwg7J20IOq3uOujueydmCDshKTsoJXsnYQg7Y647KeR7ZWgIOyImCDsl4bsp4Drp4wg6rSA66as7J6Q6rCAIOuLpOuluCDsgqzsmqnsnpDsnZgg7ISk7KCV7J2EIOuMgOyLoCDtjrjsp5HtlaAg7IiYIOyeiOyKteuLiOuLpC4g7IKs7Jqp7J6QIOyduO2EsO2OmOydtOyKpOyXkOyEnCDsnbTrn6ztlZwg7ISk7KCV7J20IO2RnOyLnOuQoCDsmIHsl63snYQg7KCc7Ja07ZWY66Ck66m0IFwnUHJlZmVyZW5jZUdyb3VwXCfsnYQg7IKs7Jqp7ZWY7IS47JqULic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDquLDrs7gg7ISk7KCVIOuztOq4sOyXkOyEnCDrsLDtj6wg7IOB7YOc7J2YIOunpOqwnOuzgOyImCDsg4nsg4HsnYQg7KeA7KCV7ZWgIOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDquLDrs7gg7ISk7KCVIOuztOq4sOyXkOyEnCDrsLDtj6wg7IOB7YOc7JeQIOuMgO2VnCDrp6TqsJzrs4DsiJjsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ+ydvOuwmCDsubTtg4jroZzqt7gg7IaN7ISx7J2YIOyYiOyLnCDqtoztlZwg6re466O57JeQIOuMgO2VnCDrp6TqsJzrs4DsiJjsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDquLDrs7gg7ISk7KCVIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qpIO2BtOuemOyKpOydmCDsnbTrpoQg66qo65OI7JeQIOuMgO2VnCDrp6TqsJwg67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDquLDrs7gg7ISk7KCVIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qpIO2BtOuemOyKpOydmCDrsojtmLgg66qo65OI7JeQIOuMgO2VnCDrp6TqsJwg67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICftjpjsnbTsp4DsnZgg66ek6rCc67OA7IiYKOq1rOyEsSDtla3rqqnsnbQg7ZGc7Iuc65CY64qUIO2OmOydtOyngCnsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqSDtgbTrnpjsiqTsl5Ag64yA7ZWcIOuyhOyghCDrrLjsnpDsl7Qg66qo65OI7J2YIOunpOqwnCDrs4DsiJjsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDquLDrs7gg7ISk7KCVIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qpIO2BtOuemOyKpOyXkCDrjIDtlZwg67KE7KCEIOusuOyekOyXtCDthZztlIzrpr8g7Yi07YK3IOuqqOuTiOydmCDrp6TqsJwg67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq4sOuzuCDshKTsoJUg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqkg7YG0656Y7Iqk7JeQIOuMgO2VnCDrsoTsoIQg7Yq466as6rGw7J2YIOunpOqwnCDrs4DsiJjsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAn6rWs7ISx65CcIOqwgSDsm7nshJzruYTsiqTsnZgg6rCBIOydtOuypO2KuOyXkCDrjIDtlbQg6rWs7ISx65CcIOyekeyXheydhCAo7J2467O07Luk66Gc7IScKSDsiJjtlontlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfqtoztlZwg6re466O5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwgSVRTTSDqtazshLEg7ZWt66qpIOyyqOu2gCDsnpHsl4XsnYQg7IKs7Jqp7ZWY6riwIOychO2VtCDtlYTsmpTtlZwg6raM7ZWc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCBJVFNNIOq1rOyEsSDtla3rqqkg7ZmU66m07J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIElUU00g6rWs7ISxIO2VreuqqSDqsoDsg4kg7ZmU66m07J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfqs6DqsJ0g7J247YSw7Y6Y7J207Iqk7JeQ7IScIElUU00g6rWs7ISxIO2VreuqqSDqsoDsg4kg7ZmU66m07J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIElUU00g6rWs7ISxIO2VreuqqSDtirjrpqwg67O06riwIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwgSVRTTSDqtazshLEg7ZWt66qpIO2ZleuMgCDtmZTrqbTsnYQg7IKs7Jqp7ZWY6riwIOychO2VtCDtlYTsmpTtlZwg6raM7ZWc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwgSVRTTSDqtazshLEg7ZWt66qpIOy2lOqwgCDtmZTrqbTsnYQg7IKs7Jqp7ZWY6riwIOychO2VtCDtlYTsmpTtlZwg6raM7ZWc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIOydvOq0hCBJVFNNIOq1rOyEsSDtla3rqqkg7ZmU66m07J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCBJVFNNIOq1rOyEsSDtla3rqqkg7Y647KeRIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwg6riw66GdIElUU00g6rWs7ISxIO2VreuqqSDtmZTrqbTsnYQg7IKs7Jqp7ZWY6riwIOychO2VtCDtlYTsmpTtlZwg6raM7ZWc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCBJVFNNIOq1rOyEsSDtla3rqqkg7J247IeEIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfqtazshLEg7ZWt66qp7J2EIOyCreygnO2VmOugpOuptCDtlYTsmpTtlZwg6raM7ZWc7J20IO2VhOyalO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfqtazshLEg7ZWt66qp7J2EIOqygOyDie2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ+2LsOy8k+ydtCBDSeyXkCDsl7DqsrDrkJjrqbQg7J6Q64+Z7Jy866GcIENJ7J2YIOyduOyLnOuNmO2KuCDsg4Htg5zrpbwg7ISk7KCV7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDsnbzqtIQg7ZmU66m07JeQ7IScIOuwsO2PrCDsg4Htg5zrpbwg7ISk7KCV7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg7J286rSEIO2ZlOuptOyXkOyEnCDsnbjsi5zrjZjtirgg7IOB7YOc66W8IOyEpOygle2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg7ZmV64yAL+y2leyGjCDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqeydhCDri6Trpbgg6rCc7LK07JmAIOyXsOqysO2VoCDsiJgg7J6I64qUIOunge2BrOulvCDrqZTribTsl5Ag7ZGc7Iuc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsJzsmpTsl5Ag7J6I64qUIOq1rOyEsSDtla3rqqnsnZgg6riw66Gd7JeQIOyVoeyEuOyKpO2VoCDsiJgg7J6I64qUIOunge2BrOulvCDrqZTribTsl5Ag7ZGc7Iuc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfrqZTribTsl5Ag7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDtmZXrjIAg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqnsnZgg6riw66Gd7JeQIOyVoeyEuOyKpO2VoCDsiJgg7J6I64qUIOunge2BrOulvCDtkZzsi5ztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn66mU64m07JeQIOyDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg7ZmV64yAIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qp7J2EIOyCreygnO2VoCDsiJgg7J6I64qUIOunge2BrOulvCDtkZzsi5ztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICfrqZTribTsl5Ag6rWs7ISxIO2VreuqqSDrp4Htgazrpbwg7Yq466asIOuztOq4sOuhnCDtkZzsi5ztlZjripQg66eB7YGs66W8IO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rCc7JqU7JeQIOyeiOuKlCDqtazshLEg7ZWt66qp7J2EIOuzteygnO2VoCDsiJgg7J6I64qUIOunge2BrOulvCDrqZTribTsl5Ag7ZGc7Iuc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfrqZTribTsl5Ag66eB7YGs66W8IO2RnOyLnO2VmOyXrCDsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIO2ZleuMgC/stpXshowg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqnsnYQg67O17KCc7ZWgIOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIO2ZleuMgCDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqeydhCDtjrjsp5HtlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg66mU64m07JeQIO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+uplOuJtOyXkCDsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg7ZmV64yAL+y2leyGjCDrs7TquLDroZwg64+M7JWE6rCIIOyImCDsnojripQg66eB7YGs66W8IO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfrqZTribTsl5Ag66eB7YGs66W8IO2RnOyLnO2VmOyXrCDsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIO2ZleuMgCDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqeydhCDsnbjsh4TtlaAg7IiYIOyeiOyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rCc7JqU7JeQIOyeiOuKlCDqtazshLEg7ZWt66qp7J2EIO2ZleuMgO2VoCDsiJgg7J6I64qUIOunge2BrOulvCDrqZTribTsl5Ag7ZGc7Iuc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkCDqtazshLEg7ZWt66qpIOq4sOuhneydhCDtkZzsi5ztlanri4jri6Qo7Jet7IicKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAn7ISg7YOd65CY7KeAIOyViuydgCDqsr3smrAg7ZGc7Iuc65CY64qUIOq4sOuzuCDsubTthYzqs6DrpqzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfqtazshLEg7ZWt66qp7J2YIOyLneuzhOyekCjsmIg6IENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jKeyeheuLiOuLpC4g6riw67O46rCS7J2AIENvbmZpZ0l0ZW0j7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0NvbmZpZ0l0ZW1GZXRjaCDsnbjrs7Tsu6Trpbwg7J6Q64+Z7Jy866GcIO2KuOumrOqxsO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ+uyhOyghCDrrLjsnpDsl7Qg7ZGc7ZiE7IudJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ+uyhOyghCDrrLjsnpDsl7Qg66qo65OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ+uyhOyghCDtirjrpqzqsbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ+y6kOyLnOuQnCDtlYTrk5wg7KKF7IaN7ISx7J2EIO2ZleyduO2VmOyXrCBDb25maWdJdGVtQUNM7J2YIOyLpO2WieydhCDtlLztlaAg7IiYIOyeiOuKlOyngCDsl6zrtoAuIOydtCDsmLXshZjsnYAg7IiY7Iud7J2YIOuhnOuUqSDsi5zqsITsnYQg6rCc7ISg7ZWgIOyImCDsnojsp4Drp4wsIEFDTE1vZHVsZeydhCBJVFNNQ29uZmlnSXRlbSDrsI8gRm9ybS1SZXR1cm5UeXBlc+yXkCDsgqzsmqntlZjroKTripQg6rK97JqwIOu5hO2ZnOyEse2ZlO2VtOyVvCDtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICftl6TrjZTsl5Ag7ZGc7Iuc65CY64qUIOydvOuwmCDsoJXrs7TsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn7YG0656Y7IqkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ+q4gOuhnOuyjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ+2PrOyKpO2KuCDtlITroZzrjZXshZgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ+yCrOyghCDsg53sgrDshLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ+yDneyCsOyEsSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcuNeyduOy5mCg0NC40NWNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMeyduOy5mCg1My4zNGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNi4yNeyduOy5mCg2Ni42OGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLjXsnbjsuZgoODAuMDFjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTnsnbjsuZgg656ZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMS43NeyduOy5mCg0LjQ1Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzXsnbjsuZgoODguOWNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMeyduOy5mCDrnpknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOC417J247LmYKDk3Ljc5Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIz7J247LmYIOuemSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLjbsnbjsuZgoNjAwbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MuyduOy5mCgxMDYuNjhjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LjI17J247LmYKDEyMC4wMmNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMy417J247LmYKDguODljbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIuNeyduOy5mCgxMzMuMzVjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMS417J247LmYKDgwMG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcuNzXsnbjsuZgoMTQ2LjY4Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUuNOyduOy5mCg5MDBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYz7J247LmYKDE2MC4wMmNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOS407J247LmYKDEwMDBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LjI17J247LmYKDE3My4zNWNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LjI17J247LmYKDEzLjM0Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLjXsnbjsuZgoMTg2LjY5Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0My4z7J247LmYKDExMDBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OC43NeyduOy5mCgyMDAuMDJjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcuMuyduOy5mCgxMjAwbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NOyduOy5mCgyMTMuMzZjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogN+yduOy5mCgxNy43OGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4Ljc17J247LmYKDIyLjIzY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLjXsnbjsuZgoMjYuNjdjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLjI17J247LmYKDMxLjEyY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNOyduOy5mCgzNS41NmNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUuNzXsnbjsuZgoNDAuMDFjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICftmozqs4QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICfso7zshowg7ZWg64u5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfqtIDrpqzsnpAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAn7JWE64Kg66Gc6re4IOyghO2ZlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ+yWtO2UjOudvOydtOyWuOyKpCDsnKDtmJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICfrsLDthLDrpqwg7Jqp65+JKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICfrsLDthLDrpqwg7Jyg7ZiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAn67mM65SpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfrsoTsiqQg7J247YSw7Y6Y7J207IqkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVIO2BtOuemOyKpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAn7Jqp65+JKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ+q3uOuemO2UvSDsubTrk5zri7kg7Jqp65+JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAn7Lm065OcIOuyiO2YuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ+y5tOuTnCDrpqzrjZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAn7Lm065OcIOycoO2YlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn7YG065287J207Ja47Yq4IOyduOymneyEnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICftgbTrnbzsnbTslrjtirgg7IaM7ZSE7Yq47Juo7Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ+qzoOqwnSDsubTthYzqs6DrpqwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAn7Iuc6rOEIOyGjeuPhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAn7Iuc6rOEIOyGjeuPhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn7L2U65OcIOyEnOuqhSDsnbjspp3shJwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ+2ajOydmOyaqSDsoITtmZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICfsu6jshKTtjIUg6rOE7JW9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICfsl7Drnb3sspgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ+y0ne2MkCDsl7Drnb3sspgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICfsu6jthYzsnbTrhIgg6rSA66asJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAn6rOE7JW9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICfqs4Tslb0g7Jyg7ZiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAn6rOE7JW9IOq4sOqwhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICfqs4Tslb0g6riw6rCEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ+ustOyEoCDsoITtmZTquLAoREVDVCDsoITtmZTquLApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ+u5hOyaqSDri6jsnIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICfrnbzsnbTshKDsiqQg7IiYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICfsg53shLEg64Kg7KecJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICfrp57stqTtmJUg656ZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIOyYiOyVvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TIOyEnOuyhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn7Iah7J6lIOuCoOynnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAn7KO866y4IOuCoOynnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAn67O07KadIOq4sOqwhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICfstpzsi5wg64Kg7KecJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfrjbDsiqTtgazthrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICfrlJTsiqTtlIzroIjsnbQg7Y+s7Yq4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn66y47IScIOyEnOuqhSDsnbjspp3shJwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIOuemSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAn7J2066mU7J28IOyduOymneyEnChTL01JTUUg7J247Kad7IScKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICfqs6Dsmqkg6rOE7JW9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAn7LWc7KKFIElQIOyjvOyGjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ+yngOybkCDsooXro4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICfrp4zro4wg64Kg7KecJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICfsmbjsnqUg7ZWY65OcIOuTnOudvOydtOu4jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ+uwqe2ZlOuyvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ+2OjOybqOyWtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ+2UjOudvOydtO2coCDsl5DrhIjsp4Ag7KCA7J6lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAn7Y+8IO2Mqe2EsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAn7ZSE656c7LCo7J207KaIIOqzhOyVvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ+2UhOumrOybqOyWtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICfsnbzrsJgg7KCV67O0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAn6re4656Y7ZS9IOy5tOuTnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAn6re4656Y7ZS9IOy5tOuTnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ+2VmOuTnOybqOyWtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ+2VmOuTnOybqOyWtCDrqqjrjbgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAn7ZWY65Oc7Juo7Ja0IOustOqyjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAn7Zek65Oc7IWLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAg7ZSE66Gc7Yag7L2cJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lEIOuwjyDslaHshLjsiqQg6rSA66asKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ+yerOqzoCDrsojtmLgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICftiKzsnpAg67mE7JqpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAn7Iah7J6lIOuyiO2YuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ+2CpOuztOuTnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0Qg66qo64uI7YSwKOyVoeyglSDrlJTsiqTtlIzroIjsnbQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQg66qo64uI7YSwKOuwnOq0kSDri6TsnbTsmKTrk5wpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ+ycoOyEoCDsoITtmZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn64W47Yq467aBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAn7JyE64+EJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAn66CI7J207Ja0IDE6IOusvOumrOyggSDroIjsnbTslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAn66CI7J207Ja0IDI6IOuNsOydtO2EsCDrp4Htgawg66CI7J207Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfroIjsnbTslrQgMzog64Sk7Yq47JuM7YGsIOugiOydtOyWtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICfroIjsnbTslrQgMzog64Sk7Yq47JuM7YGsIOugiOydtOyWtCjsiojtjbzrhLcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ+ugiOydtOyWtCA0OiDsoITshqEg66CI7J207Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICfroIjsnbTslrQgNTog7IS47IWYIOugiOydtOyWtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICfroIjsnbTslrQgNjog7ZSE66CI7KCg7YWM7J207IWYIOugiOydtOyWtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ+ugiOydtOyWtCA3OiDslaDtlIzrpqzsvIDsnbTshZgg66CI7J207Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ+yehOuMgCDqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICfrnbzsnbTshKDsiqQg6rOE7JW9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICfrnbzsnbTshKDsiqQg7YKkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ+udvOydtOyEoOyKpCDsnKDtmJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ+udvOydtOyEoOyKpCDquLDqsIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICfrnbzsnbTshKDsiqQg6riw6rCEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICfrpqztiqwg7J247IKw7LKgKExpRmVQTzQpIOuwsO2EsOumrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn66as7YqsIOydtOyYqCjrpqztiqwg7J207JioKSDrsLDthLDrpqwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICfrjIDstpwg6rOE7JW9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICfsnITsuZgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAn6rK964+EJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn7KCc7KGw7JeF7LK0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICfstZzrjIAg67aA7ZWYIOyaqeufiShXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICfrqZTrqqjrpqwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICfrqZTrqqjrpqwg7Jyg7ZiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICfrr7jri4gg656ZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICftnLTrjIDtj7Ag67KI7Zi4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ+uqqOuwlOydvC/snoTrsqDrlJTrk5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICfrqqjrjbgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICfrqqjrjbgg7ISk66qFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ+uqqOuLiO2EsCDtlbTsg4Hrj4QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAn66qo64uI7YSwIO2BrOq4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ+uniOyasOyKpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAn64Sk7Yq47JuM7YGsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ+uEpO2KuOybjO2BrCDsoJXrs7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ+uEpO2KuOybjO2BrCDsoJXrs7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ+uEpO2KuOybjO2BrCDqs4TsuLUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICfri4jsvIgg7Lm065Oc6660KE5pQ2QpIOuwsO2EsOumrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ+uLiOy8iC3quIjsho0g7IiY7IaMIOuwsO2EsOumrChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICfquLDrsIAg7Jyg7KeAIOqzhOyVvShOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAn64W47Yq467aBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQ1BVIOyImCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdSQU0g66qo65OIIOyImCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICfqt7jrnpjtlL0g7Lm065OcIOyImCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCDrqqjri4jthLAo7Jyg6riwIOuwnOq0kSDri6TsnbTsmKTrk5wpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ+yatOyYgSDruYTsmqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn7KO866y4IOuyiO2YuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ+q4sO2DgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAn7Lac66ClJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ+2MjO2KuOuEiOyLrSDqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICfsoITtmZTrsojtmLgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ+yghO2ZlCDsnKDtmJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICfrrLzrpqzsoIEg7L2U7Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAn7KCE66ClIOqzteq4iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ+uLpOydjOyXkOyEnCDqtazrp6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ+uemSDquYrsnbQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICfrnpkg7Jyg64ubKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfrsKknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0g7Lm065OcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUyDsnbjspp3shJwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICftjJDrp6Qg6rOE7JW9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ+ychOyEsSDsoITtmZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAn67CA7Y+Q7ZiVIOuCqey2lShTTEEpIOuwsO2EsOumrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ+ydvOugqOuyiO2YuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICfshJzrsoQg7IaM7ZSE7Yq47Juo7Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAn7ISc67mE7IqkIOqzhOyVvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ+yEnOu5hOyKpCDtg5zqt7gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAn7IaM7LyTIOycoO2YlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ+yGjO2UhO2KuOybqOyWtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ+yKpO2UvOy7pCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICftkZzspIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ0lQIOyjvOyGjCDsi5zsnpEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ+yKpO2GoOumrOyngCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ+yKpO2GoOumrOyngCDtjIzti7DshZgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICfsnpDtmozsgqwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ+yalOyVvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ+yUrCDtgbTrnbzsnbTslrjtirgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ+yKpOugiOuTnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ+yNrOuNlOuzvO2KuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAn7LSdIOq3uOuemO2UvSDsubTrk5wgUkFNKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ+y0nSBSQU0oR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICfthLDsuZjsiqTtgazrprAg66qo64uI7YSwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAn7YOA7JuMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0Ig7ZeI67iMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIg7Zek65Oc7IWLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAg7KCE7ZmUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICfsm7nsuqAnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/lt_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omx0X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdCZW5kcmllamkgdmVpa2ltbyBkdW9tZW55cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnxK5laW5hbsSNacWzIHXFvmtsYXVzxbMgZHVvbWVuxbMgbnVzdGF0eW1haSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ0nFoWVpbmFuxI1pxbMgYXRzYWt5bW8gZHVvbWVuxbMgbnVzdGF0eW1haSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgdmFsZHltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdLZWlzdGkga2xhc8SXcyBhcGlicsSXxb50xK8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ0tlaXN0aSB2YWlkbWVucyBhcGlicsSXxb50xK8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICciUmVhZHkySW1wb3J0IiBrbGFzacWzIHBha2V0YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICfEjGlhIGdhbGl0ZSBpbXBvcnR1b3RpICJSZWFkeTJJbXBvcnQiIGtsYXNpxbMgcGFrZXR1cywga3VyaXVvc2UgZGVtb25zdHJ1b2phbWkgxK9wcmFzdGluaWFpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWkuIEF0a3JlaXBraXRlIGTEl21lc8SvLCBrYWQgZ2FsaSBwcmlyZWlrdGkgdGFtIHRpa3JvcyBwYXBpbGRvbW9zIGtvbmZpZ8WrcmFjaWpvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQXRuYXVqaW50aSBlc2FtdXMgc3ViamVrdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0dW90aSAiUmVhZHkyQWRvcHQiIGtsYXPEl3MgcGFrZXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBrbGFzxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byB2YWlkbXVvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnS2xhc2nFsyBmaWx0cmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ05vcsSXZGFtaSBzdWt1cnRpIG5hdWrEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFLCBzxIVyYcWhZSBwYXNpcmlua2l0ZSBrbGFzxJkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc8SXJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdEaWVnaW1vIGLFq3NlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdJbmNpZGVudG8gYsWrc2VuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdOdW9yb2RhIMSvIGtpdMSFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOZXRlaXNpbmdhcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gbnVtZXJpcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnS2l0byBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8sIHN1IGt1cml1byBub3JpdGUgc3VzaWV0aSwgbnVtZXJpcy4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdBciB0aWtyYWkgbm9yaXRlIGnFoXRyaW50aSDFocSvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgaW8ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHBhdmFkaW5pbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdQYXZhZGluaW1hcyBqYXUgbmF1ZG9qYW1hcyBDb25maWdJdGVtcyBzdSDFoWl1byAoLWlhaXMpIG51bWVyaXUgKC1pYWlzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzaWpvcyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfFoGlvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byB2ZXJzaWpvcyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnVmVyc2lqb3MgbnVtZXJpcyBqYXUgbmF1ZG9qYW1hcyAiQ29uZmlnSXRlbXMiIHN1IMWhaXVvICgtaWFpcykgbnVtZXJpdSAoLWlhaXMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRGllZ2ltbyBixatzZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnSW5jaWRlbnRvIGLFq2tsxJcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBpc3RvcmlqYTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSXN0b3Jpam9zIHR1cmlueXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnUHJpdHJhdWt0aSBhcMW+dmFsZ8SFJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWkgdmllbmFtZSBwdXNsYXB5amUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBkdW9tZW7FsyBuZXJhc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1Bhc2lyaW5raXRlIMWhxK8ga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1Z5a2R5dGkgcGFpZcWha8SFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1RhaXAgcGF0IGllxaFrb3RpIGFua3N0ZXNuxJdzZSB2ZXJzaWpvc2U/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnIkNvbmZpZ0l0ZW0iIG1lZMW+aW8gcm9kaW55cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0d5bGlvIGx5Z2lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnUGFkaWRpbnRpIC8gc3VtYcW+aW50aSBtYXN0ZWzEryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdQYXNpZWt0YXMgbWFrc2ltYWx1cyBDb25maWdJdGVtIG51b3JvZMWzIGx5Z2lzISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnS29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGluZm9ybWFjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0RhYmFydGluxJcgZGllZ2ltbyBixatzZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdEYWJhcnRpbsSXIGluY2lkZW50byBixatzZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1Bhc2t1dGluxK8ga2FydMSFIHBha2Vpc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1Bhc2t1dGluxK8ga2FydMSFIHBha2VpdMSXJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnSsWrc8WzIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0gUGFpZcWha2EnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ09iamVrdG8gdGlwYXMnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdJbXBvcnR1b2phbW9zIMWhaW9zIGtsYXPEl3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnQnVzIGltcG9ydHVvamFtaSDFoWllIHZhaWRtZW55cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdBdGtyZWlwa2l0ZSBkxJdtZXPErywga2FkIHRhaXAgcGF0IGJ1cyBzdWt1cnRpIGF0aXRpbmthbWkgZGluYW1pbmlhaSBsYXVrYWkgaXIgIkdlbmVyYWxDYXRhbG9nIiBrbGFzxJdzLCBvIGF1dG9tYXRpbmlvIHBhxaFhbGluaW1vIG5lYnVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ0FyIG5vcml0ZSB0xJlzdGk/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ1JlaWtpYSBwYXZ5emTFvmnFsyBrbGFzacWzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdBcGlicsSXxb50aXMgbsSXcmEgZ2FsaW9qYW50aXMgWUFNTCBoYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ0Fwxb52YWxnYTogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lbnVyb2R5dGFzIGpva3MgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1JlaWtpYSBiZW50IHZpZW5vIHBhc2lyaW5rdG8ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ0rFq3MgbmV0dXJpdGUgcHJpZWlnb3MgcHJpZSDFoWlvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byByYcWheXRpOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnS2xhc2VpICVzIG5lYXBpYnLEl8W+dGFzIGpva3MgYXBpYnLEl8W+aW1hcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YXMgIiVzIiBuZXJhc3RhcyBkdW9tZW7FsyBiYXrEl2plISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ05lcGF2eWtvIGnFoXRyaW50aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdDb25maWdJdGVtSUQgJXMgdmVyc2lqYSBuZXJhc3RhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOZW51cm9keXRhcyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIGFyYmEgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1ByaWVpZ2EgbmVzdXRlaWtpYW1hISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZWdhbGltYSByb2R5dGkgaXN0b3Jpam9zLCBuZXBhdGVpa3RhcyBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmVnYWxpbWEgcm9keXRpIGlzdG9yaWpvcywgbmVzIG5lc3V0ZWlrdG9zIHByaWVpZ29zIHRlaXPEl3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOYXVqYXMga29uZmlnxatyYWNpam9zIGVsZW1lbnRhcyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOYXVqYSB2ZXJzaWphIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdBdG5hdWppbnRhIGRpZWdpbW8gYsWrc2VuYSAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0F0bmF1amludGEgaW5jaWRlbnRvIGLFq3NlbmEgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YXMgKElEPSVzKSBpxaF0cmludGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnUHJpZMSXdGEgbnVvcm9kYSDEryAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ051b3JvZGEgxK8gJXMgKHR5cGU9JXMpIHBhxaFhbGludGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0F0bmF1amludGEgQ29uZmlnSXRlbSBhcGlicsSXxb50aXMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1BhdmFkaW5pbWFzIGF0bmF1amludGFzIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0YXMgJXMgYXRuYXVqaW50YXMgacWhICIlcyIgxK8gIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaWphICVzIGnFoXRyaW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOZW51cm9keXRhcyBDb25maWdJdGVtSUQgYXJiYSBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lZ2FsaW1hIHBhcm9keXRpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50bywgbmVzIG5lc3V0ZWlrdG9zIHByaWVpZ29zIHRlaXPEl3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnRHVvbWVuxbMgYmF6xJdqZSBuZXJhc3RhIENvbmZpZ0l0ZW1JRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyVzIHNwYXVzZGluYSAlcyBhZHJlc3UgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ051b3JvZGEgKFJlZmVyZW5jZSknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdOZXRlaXNpbmdhcyBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05lbnVyb2R5dGFzIGpva3MgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfFoGlhaSBrbGFzZWkgcHJpZWlnb3MgdGVpc8SXcyBuZXN1dGVpa3RvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0pva2lvIHJlenVsdGF0byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcGFpZcWha29zIHJlenVsdGF0YWknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ05lZ2FsaW1hIHBhcm9keXRpIGVsZW1lbnRvLCBuZXMgbmVzdXRlaWt0b3MgcHJpZWlnb3MgdGVpc8SXcyBwcmllIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbmVyYXN0YXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ1ZlcnNpasWzIG5lcmFzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAndmVpa2xvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnxK9zcMSXamltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfFoGlvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBkaWVnaW1vIGLFq3NlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfFoGlvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBpbmNpZGVudG8gYsWrc2VuYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0xlaWRpbW8gbsSXcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdHJhcyBuZWdhbGlvamEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYWllxaFrb3MgcGFyYW1ldHJhaSBuZWdhbGlvamEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnUm9kb21pIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnRGllZ2ltbyBixatzZW5vcyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdEYWJhcnRpbmlzIGluY2lkZW50byBixatzZW5vcyB0aXBhcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdUYXJwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8ga2xhc8SXcyBhcHJpYm9qaW1haSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnUGFzaXJpbmtpdGUgdmllbsSFIGFyIGRhdWdpYXUga2xhc2nFsywga2FkIGFwcmlib3R1bcSXdGUgcGFzaXJlbmthbXVzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBrbGFzxJdzIGFwcmlib2ppbWFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnUGFzaXJpbmtpdGUgdmllbsSFIGFyIGRhdWdpYXUga2xhc2nFsywga2FkIGFwcmlib3R1bcSXdGUgcGFzaXJlbmthbXVzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWluaXMgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aW5pcyAodmVyc2lqYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnTnVvcm9kb3MgdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnQXIgxaFpIHPEhXNhamEgdGFpa29tYSBDb25maWdJdGVtLCBhciBzdGF0aW5laSBudW9yb2TEhSBwYXRlaWtpYW7EjWlvIG9iamVrdG8gdmVyc2lqYWkuIERhYmFydGluxJdzIGluY2lkZW50byBixatzZW5vcyBza2FpxI1pYXZpbWFzIGF0bGlla2FtYXMgdGlrIGRpbmFtaW7El21zIG51b3JvZG9tcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdQYXNpcmlua2l0ZSBhdHJpYnV0xIUsIHBhZ2FsIGt1csSvIGJ1cyBpZcWha29tYSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQmF6aW7ElyBzdHJ1a3TFq3JhIG5lZ2FsaW9qYS4gUGF0ZWlraXRlIGhhc2ggc3UgZHVvbWVuaW1pcyBZQU1MIGZvcm1hdHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnWUFNTCBlaWx1dMSZIHJlaWtpYSBwcmFkxJd0aSBudW8gXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTmVwYXZ5a28gacWhdmFseXRpIGxlbnRlbMSXcyBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOZXJhc3RhcyBuxJcgdmllbmFzIHN2YXJidXMgZGluYW1pbmlzIGxhdWthcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ05lcGF2eWtvIMSvdGVycHRpIMSvIGxlbnRlbMSZIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnxK4gbGVudGVsxJkgY29uZmlnaXRlbV9saW5rIMSvdGVycHRhIDAgZWlsdcSNacWzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ0RpZMW+aWF1c2lhcyB2aWVubyBlbGVtZW50byBza2FpxI1pdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnSW1wb3J0dW90aSBpciAoYXJiYSkgZWtzcG9ydHVvdGkgcHJpZWR1cyAoa2FpcCBwYXNrdXRpbml1cyDEr3JhxaF1cyBlaWx1dMSXamUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2lqb3MgZWlsdXTElyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdLbGFpZGEgc2luY2hyb25penVvamFudCBhcGlicsSXxb50aXMuIFBhdGlrcmlua2l0ZSDFvnVybmFsxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVHVyaXRlIElUU01Db25maWdJdGVtIGFwaWJyxJfFvnRpcywga3VyaW9zIG7El3JhIHNpbmNocm9uaXp1b3Rvcy4gxK5kaWVraXRlIHNhdm8gSVRTTUNvbmZpZ0l0ZW0gZGluYW1pbmnFsyBsYXVrxbMgcGFrZWl0aW11cy4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1Bhc2liYWlnxJlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnVGVjaG5pbsSXIHByaWXFvmnFq3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnQmFuZG9tYXNpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbnVvamFtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZW1vbnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnScWhxJdqxJlzIMSvIHBlbnNpasSFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1BlcsW+acWrcsSXa2l0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdGF2aW1hcyAvIGtva3lixJdzIHXFvnRpa3JpbmltYXMnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ0Fwxb52YWxnYSBpciBwYXR2aXJ0aW5pbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0tsYXNpxbMgaXIgKGFyYmEpIHZhaWRtZW7FsyBiZWkgc3UgamFpcyBzdXNpanVzacWzIGxhdWvFsyBpbXBvcnRhdmltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdJbXBvcnR1b2phbnQga2xhc8SZIMSvdnlrbyBrbGFpZGEuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBQYXNsxJdwdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIHBhcm9keXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdMZWlkxb5pYSB0YWlreXRpIGnFoXBsxJdzdGluZXMgcGFpZcWha29zIHPEhWx5Z2FzIGFnZW50byBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWthaS4gTmF1ZG9kYW1pIMWhacSFIGZ1bmtjaWrEhSBnYWxpdGUgaWXFoWtvdGksIHB2ei4sIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwYXZhZGluaW1vIHN1IHRva2lvbWlzIHPEhWx5Z29taXMsIGthaXAgIigqa2V5MSomJiprZXkyKikiIGFyYmEgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdMZWlkxb5pYSB0YWlreXRpIGnFoXBsxJdzdGluZXMgcGFpZcWha29zIHPEhWx5Z2FzIGtsaWVudMWzIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29qZS4gTmF1ZG9kYW1pIMWhacSFIGZ1bmtjaWrEhSBnYWxpdGUgaWXFoWtvdGksIHB2ei4sIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwYXZhZGluaW1vIHN1IHRva2lvbWlzIHPEhWx5Z29taXMsIGthaXAgIigqa2V5MSomJiprZXkyKikiIGFyYmEgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdQcmlza2lydGkgS0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0tsaWVudG8gxK9tb25laSBwcmlza2lydGkgS0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdLbGllbnRvIG5hdWRvdG9qdWkgcHJpc2tpcnRpIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIG51c3RhdHltYWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1VuaWthbGF1cyBwYXZhZGluaW1vIHRpa3JpbmFtYSB0aWsgdG9qZSBwYcSNaW9qZSBDb25maWdJdGVtIGtsYXPEl2plICgiY2xhc3MiKSBhcmJhIHBhc2F1bGluaXUgbWFzdHUgKCJnbG9iYWwiKSwgdG9kxJdsIGllxaFrYW50IHBhc2lrYXJ0b2ppbcWzIGF0c2nFvnZlbGdpYW1hIMSvIGtpZWt2aWVuxIUgZXNhbcSFIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdQYXNpcmlua2l0ZSBtb2R1bMSvLCBrdXJpcyB1xb50aWtyaW5zIHBhdmFkaW5pbcWzIHNjaGVtxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdQYXNpcmlua2l0ZSBtb2R1bMSvLCBrdXJpcyB1xb50aWtyaW5zIG51bWVyacWzIHNjaGVtxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1Bhc2lyaW5raXRlIG1vZHVsxK8sIGt1cmlzIHXFvnRpa3JpbnMgdmVyc2lqxbMgZWlsdcSNacWzIHNjaGVtxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnUGFzaXJpbmtpdGUgYXRyaWJ1dHVzLCBrYWQgYsWrdMWzIHN1a3VydGEgbmF1amEgdmVyc2lqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnUGFzaXJpbmtpdGUga2F0ZWdvcmlqYXMsIGt1cmlhcyBub3JpdGUgcHJpc2tpcnRpIMWhaWFpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMga2xhc2VpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdTdHVscGVsaW8ga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBmaWx0cmFpIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdTdHVscGVsaWFpLCBrdXJpdW9zIGdhbGltYSBmaWx0cnVvdGkgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgYXDFvnZhbGdvamUuIFBhc3RhYmE6IExlaWTFvmlhbWkgdGlrIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBhdHJpYnV0YWkgaXIgZGluYW1pbmlhaSBsYXVrYWkgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwcmlkxJdqaW1hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcmVkYWdhdmltYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlnxatydW9raXRlIGVsZW1lbnRvIMSvdnlracWzIG1vZHVsxK8sIGt1cmlzIGxlaWTFvmlhIHJlZ2lzdHJ1b3RpIGlzdG9yaWrEhSBhZ2VudG8gc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdLb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIMSvdnlracWzIG1vZHVsaXMsIGt1cmlzIGF0bmF1amluYSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGRhYmFydGluxJkgYXBpYnLEl8W+dMSvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgaXN0b3JpamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBzcGF1c2RpbmltYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnS29uZmlnxatydW90aSBlbGVtZW50byBwcmlhcnRpbmltxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnS29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBtZWTFvmlvIHZhaXpkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ8WgacWzIGtsYXNpxbMgQ29uZmlnSXRlbXMgbmVidXMgc2F1Z29taSAiRWxhc3RpY3NlYXJjaCIgc2VydmVyeWplLiBOb3JpbnQgdGFpIHByaXRhaWt5dGkgZXNhbWllbXMgQ0ksIENJIG1pZ3JhY2lqxIUgcmVpa2lhIHBhbGVpc3RpIHBlciBrb25zb2zEmSwgcGFrZWl0dXMgxaFpxIUgcGFyaW5rdMSvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICciRWxhc3RpY3NlYXJjaCIgc2VydmVyeWplIG5lYnVzIHNhdWdvbWkgIkNvbmZpZ0l0ZW1zIiBzdSDFoWlvbWlzIGRpZWdpbW8gYsWrc2Vub21pcy4gTm9yaW50IHRhaSBwcml0YWlreXRpIGVzYW1pZW1zIENJLCBDSSBwZXJrxJdsaW3EhSByZWlraWEgcGFsZWlzdGkgcGVyIGtvbnNvbMSZLCBwYWtlaXR1cyDFoWnEhSBwYXJpbmt0xK8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byByaWJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGxpbWl0YXMgdmllbmFtZSBwdXNsYXB5amUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdLb25maWfFq3JhY2lqb3MgdmFsZHltbyBkdW9tZW7FsyBiYXrEly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBtYXNpbmlzIG1vZHVsaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwYWllxaFrYSBhZ2VudG8gc8SFc2Fqb3MgZ2FsaW5pYW1lIG1hcsWhcnV0aXphdG9yaXVqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnU3VrdXJraXRlIGlyIHR2YXJreWtpdGUga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBhcGlicsSXxb50aXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnU3VrdXJpYSAiQ29uZmlnSXRlbXMiIGJpbGlldHVzIHRhbSB0aWtyYWlzIGxhaWtvIG1vbWVudGFpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS2xpZW50YWkgZ2FsaSBtYXR5dGkgaXN0b3JpbmVzIENJIHZlcnNpamFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLbGllbnRhaSB0dXJpIGdhbGlteWLEmSByYW5raW5pdSBixatkdSBwZXJqdW5ndGkgaXN0b3JpbmVzIENJIHZlcnNpamFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ051bWF0eXRpZWppIGR1b21lbnlzLCBrdXJpdW9zIHJlaWtpYSBuYXVkb3RpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwYWllxaFrb3MgZWtyYW5vIGF0cmlidXR1aS4gUGF2eXpkeXM6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnTnVtYXR5dGllamkgZHVvbWVueXMsIGt1cml1b3MgcmVpa2lhIG5hdWRvdGkga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHBhaWXFoWtvcyBla3Jhbm8gYXRyaWJ1dHVpLiBQYXZ5emR5czogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvnRpIHZlaWtzbXVzLCBrYWkgc3VzaWV0xbMgb2JqZWt0xbMgdmFsZGlrbHlqZSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpIHlyYSBudXN0YXR5bcWzIG15Z3R1a2FzLiBBdGtyZWlwa2l0ZSBkxJdtZXPErywga2FkIMWhaXVvc2UgdmVpa3NtdW9zZSB0dXJpIGLFq3RpIHXFvnJlZ2lzdHJ1b3RpIMWhaWUgSlMgaXIgQ1NTIGZhaWxhaTogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgaXIgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnQXBpYnLEl8W+a2l0ZSAiVGVtcGxhdGU6OlRvb2xraXQiIHNjaGVtxIUsIHNraXJ0xIUgdmVyc2lqxbMgZWlsdXTEl21zLiBOYXVkb2phbWEgdGlrIHRhZGEsIGplaSB2ZXJzaWrFsyBlaWx1xI1pxbMgbW9kdWxpcyBudXN0YXR5dGFzIMSvIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdBcGlicsSXxb5raXRlIHPEhWx5Z8WzLCBrdXJpb21pcyBrbGllbnR1aSBsZWlkxb5pYW1hIG1hdHl0aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFLCByaW5raW7Ery4gU8SFbHlnYXMgZ2FsaW1hIGFwcmlib3RpIHRhbSB0aWtyb21zIGtsaWVudMWzIGdydXDEl21zLiBQYXZhZGluaW1hcyB5cmEgdmllbmludGVsaXMgcHJpdmFsb21hcyBhdHJpYnV0YXMuIEplaSBraXTFsyBwYXJpbmvEjWnFsyBuZW51cm9keXRhLCB2aXNpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWkgYnVzIG1hdG9taSB0b2plIGthdGVnb3Jpam9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhbWkgcmVpa2FsaW5naSBsZWlkaW1haSBpxaF0cmludGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudHVzIG5hdWRvamFudCBiZW5kcsSFasSFIHPEhXNhasSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnQXBpYnLEl8W+aWFtaSByZWlrYWxpbmdpIGxlaWRpbWFpIGdhdXRpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnR1cyBuYXVkb2phbnQgYmVuZHLEhWrEhSBzxIVzYWrEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhbWkgcmVpa2FsaW5naSBsZWlkaW1haSBpZcWha290aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgbmF1ZG9qYW50IGJlbmRyxIVqxIUgc8SFc2FqxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdBcGlicsSXxb5pYSBSZWlrYWxpbmdpIGxlaWRpbWFpIG51c3RhdHl0aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50dXMgbmF1ZG9qYW50IGJlbmRyxIVqxIUgc8SFc2FqxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhIGFwxb52YWxnb3MgbW9kdWzErywgc2tpcnTEhSBtYcW+YWphbSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHPEhXJhxaFvIHZhaXpkdWkgcm9keXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdOdXN0YXRvLCBhciBtYXpnxbMganVuZ3R5c2UgdHVyaSBixat0aSByb2RvbW9zIG51b3JvZG9zIHRpcG8gZXRpa2V0xJdzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnQXBpYnLEl8W+aWEgcmVndWxpYXJpYXMgacWhcmFpxaFrYXMgYXRza2lyYWkga2lla3ZpZW5haSAiQ29uZmlnSXRlbSIga2xhc2VpLCBrYWQgYsWrdMWzIGdhbGltYSBwYXRpa3JpbnRpICJDb25maWdJdGVtIiBwYXZhZGluaW3EhSBpciByb2R5dGkgYXRpdGlua2FtdXMga2xhaWTFsyBwcmFuZcWhaW11cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdOdXN0YXRvIGdhbGltdXMgS0kgc3R1bHBlbGl1cyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb2plLCBwcmlrbGF1c29tYWkgbnVvIEtJIGtsYXPEl3MuIEtpZWt2aWVuxIUgxK9yYcWhxIUgdHVyaSBzdWRhcnl0aSBrbGFzxJdzIHBhdmFkaW5pbWFzIGlyIGF0aXRpbmthbW9zIGtsYXPEl3MgZ2FsaW3FsyBsYXVrxbMgbWFzeXZhcy4gRGluYW1pbmnFsyBsYXVrxbMgxK9yYcWhYWkgdHVyaSBhdGl0aWt0aSBzY2hlbcSFIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdXN0YXRvIG51bWF0eXRvam8ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGF0cmlidXTEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHLFq8WhaWF2aW11aSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrb3MgcmV6dWx0YXR1b3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVzdGF0byBudW1hdHl0xIVqxK8ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGF0cmlidXTEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHLFq8WhaWF2aW11aSBrbGllbnTFsyBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyByZXp1bHRhdHVvc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTnVzdGF0byBudW1hdHl0b2pvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBhdHJpYnV0xIUsIHNraXJ0xIUgxaFpb3Mgb3BlcmFjaWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyByZXp1bHRhdHVpIHLFq8WhaXVvdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdOdXN0YXRvIG51bWF0eXTEhWrEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHR2YXJrxIUgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIHJlenVsdGF0dW9zZS4gQXVrxaF0eW46IHNlbmlhdXNpYXMgdmlyxaF1amUuIMW9ZW15bjogbmF1amF1c2lhcyB2aXLFoXVqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ051c3RhdG8gbnVtYXR5dG9qaSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHR2YXJrYSBrbGllbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIHJlenVsdGF0dW9zZS4gQXVrxaF0eW46IHNlbmlhdXNpYXMgdmlyxaF1amUuIMW9ZW15bjogbmF1amF1c2lhcyB2aXLFoXVqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTnVzdGF0byBudW1hdHl0b2ppIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgdHZhcmthIMWhaW9zIG9wZXJhY2lqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrb3MgcmV6dWx0YXRlLiDEriB2aXLFocWzOiBzZW5pYXVzaWEgdmlyxaF1amUuIMW9ZW15bjogbmF1amF1c2lhcyB2aXLFoXVqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ051c3RhdG8gcGFnYWwgbnV0eWzEl2ppbcSFIHJvZG9tdXMgS0kgc3R1bHBlbGl1cyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb2plLCBwcmlrbGF1c29tYWkgbnVvIEtJIGtsYXPEl3MuIEtpZWt2aWVuxIUgxK9yYcWhxIUgdHVyaSBzdWRhcnl0aSBrbGFzxJdzIHBhdmFkaW5pbWFzIGlyIGF0aXRpbmthbW9zIGtsYXPEl3MgZ2FsaW3FsyBsYXVrxbMgbWFzeXZhcy4gRGluYW1pbmnFsyBsYXVrxbMgxK9yYcWhYWkgdHVyaSBhdGl0aWt0aSBzY2hlbcSFIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0FwaWJyxJfFvmlhbWFzIG51bWF0eXRhc2lzIHJvZG9txbMgc2FudHlracWzIGd5bGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdOdXN0YXRvIHBhZ2FsIG51dHlsxJdqaW3EhSByb2RvbcSFIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIGF0cmlidXTEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBla3JhbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdOdXN0YXRvIHBhZ2FsIG51dHlsxJdqaW3EhSByb2RvbcSFIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIGF0cmlidXTEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBla3JhbmUuIFBhdnl6ZHlzOiAiS2V5IiAocmFrdGFzKSB0dXJpIHR1csSXdGkgZGluYW1pbmlvIGxhdWtvIHBhdmFkaW5pbcSFLCDFoWl1byBhdHZlanUgIlgiLCAiQ29udGVudCIgKHR1cmlueXMpIHR1cmkgdHVyxJd0aSBkaW5hbWluaW8gbGF1a28gcmVpa8WhbcSZLCBwcmlrbGF1c2FuxI1pxIUgbnVvIGRpbmFtaW5pbyBsYXVrbyB0aXBvLCAiVGV4dCIgKHRla3N0YXMpOiAiYSB0ZXh0IiAodGVrc3RhcyksICJEcm9wZG93biIgKGnFoXNrbGVpZMW+aWFtYSk6ICIxIiAoacWhc2tsZWlkxb5pYW1hKSwgIkRhdGUvVGltZSIgKGRhdGEgaXIgbGFpa2FzKTogUGFpZcWha2FfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGlyIGFyYmEgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9c2F2YWl0xJc7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhIG51bWF0eXTEhWrEryBrbGFzxJdzICJJVFNNQ29uZmlnSXRlbSIgc3Vib2JqZWt0xIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdOdXN0YXRvIGdhbGltdXMgS0kgc3R1bHBlbGl1cyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb2plLCBwcmlrbGF1c29tYWkgbnVvIEtJIGtsYXPEl3MuIEtpZWt2aWVuxIUgxK9yYcWhxIUgdHVyaSBzdWRhcnl0aSBrbGFzxJdzIHBhdmFkaW5pbWFzIGlyIGF0aXRpbmthbW9zIGtsYXPEl3MgZ2FsaW3FsyBsYXVrxbMgbWFzeXZhcy4gRGluYW1pbmnFsyBsYXVrxbMgxK9yYcWhYWkgdHVyaSBhdGl0aWt0aSBzY2hlbcSFIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ051c3RhdG8gxaFpbyBla3Jhbm8gdGVrc3RvIHJlZGFrdG9yaWF1cyBrb21wb25lbnRvIGF1a8WhdMSvLiDErnZlc2tpdGUgc2thacSNacWzIChwaWtzZWxpYWkpIGFyYmEgcHJvY2VudGluxJkgdmVydMSZIChzYW50eWtpbsSXKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVzdGF0byBDSSBhcGlicsSXxb5pbW8gcmVkYWt0b3JpYXVzIGVpbHXEjWnFsyBza2FpxI1pxbMgYWRtaW5pc3RyYXRvcmlhdXMgc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdOdXN0YXRvIMSvdnlraW8gYsWrc2VuxbMgZWlsacWha3VtxIUgbnVvIGF1a8WhdMWzIChwdnouLCBrcml0acWha8WzKSBpa2kgxb5lbcWzIChwdnouLCBmdW5rY2luacWzKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdBcGlicsSXxb5pYW1vcyBhdGl0aW5rYW1vcyBkaWVnaW1vIGLFq3Nlbm9zLCBrdXJpb3NlIHN1c2lldGkgYmlsaWV0YWkgZ2FsaSB0dXLEl3RpIMSvdGFrb3MgQ0kgYsWrc2VuYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTnVzdGF0byBBZ2VudElUU01Db25maWdJdGVtIGVrcmFubyBwYWllxaFrb3MgcmlixIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTnVzdGF0byBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIGVrcmFubyBwYWllxaFrb3MgcmlixIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTnVzdGF0byBDdXN0b21lcklUU01Db25maWdJdGVtIGVrcmFubyBwYWllxaFrb3MgcmlixIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTnVzdGF0byBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIGVrcmFubyBwYWllxaFrb3MgcmlixIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTnVzdGF0byBudW9yb2TFsyBsZW50ZWzEl3Mgc3VkxJd0aW5nYW1lIHJvZGlueWplIHJvZG9tdXMgdmlzxbMga2xhc2nFsyBLSSBzdHVscGVsaXVzLiBKZWkgxK9yYcWhbyBuxJdyYSwgcm9kb21pIG51bWF0eXRpZWppIHN0dWxwZWxpYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdOdXN0YXRvIG51b3JvZMWzIGxlbnRlbMSXcyBzdWTEl3RpbmdhbWUgcm9kaW55amUgcm9kb211cyBLSSBzdHVscGVsaXVzLCBwcmlrbGF1c29tYWkgbnVvIEtJIGtsYXPEl3MuIFByaWXFoSBraWVrdmllbsSFIMSvcmHFocSFIHR1cmkgYsWrdGkgxK9yYcWheXRhcyBrbGFzxJdzIHBhdmFkaW5pbWFzIGlyIGR2aWd1YmkgZHZpdGHFoWtpYWkgKHQuIHkuIENvbXB1dGVyOjopLiBZcmEga2VsZXRhcyBDSSBhdHJpYnV0xbMsIGt1cmllIGJlbmRyaSB2aXNpZW1zIENJIChwYXZ5emR5cyBrbGFzxJdzIENvbXB1dGVyIChLb21waXV0ZXJpcyk6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIE5vcmludCBwYXJvZHl0aSBhdHNraXJ1cyBDSSBhdHJpYnV0dXMsIGFwaWJyxJfFvnR1cyBDSSBhcGlicsSXxb50eWplLCByZWlraWEgbmF1ZG90aSB0b2tpxIUgc2NoZW3EhSAoa2xhc8SXcyBDb21wdXRlciBwYXZ5emR5cyk6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBKZWkgbsSXcmEgQ0kga2xhc8SXcyDEr3JhxaFvLCByb2RvbWkgbnVtYXR5dHVvc2l1cyBudXN0YXR5bXVzIGF0aXRpbmthbnR5cyBzdHVscGVsaWFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhLCBrdXJpdW9zIGVsZW1lbnR1cyBnYWxpbWEgbmF1ZG90aSAiQWN0aW9uIiB0cmXEjWlhamFtZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1a3TFq3JvcyBseWd5amUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTnVzdGF0bywga3VyaWUgZWxlbWVudGFpIHlyYSBwcmllaW5hbWkgcGlybW9qbyBseWdpbyBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1a3TFq3JvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ051c3RhdG8sIGt1cmllIGVsZW1lbnRhaSB5cmEgcHJpZWluYW1pIGFudHJhamFtZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1a3TFq3JvcyBseWd5amUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhLCBrb2tpbyB0aXBvIG51b3JvZGEgKMSvdmFyZHl0YSBpxaEgYmlsaWV0byBwZXJzcGVrdHl2b3MpIGdhbGkgdHVyxJd0aSDEr3Rha29zIHN1c2lldG9zIENJIGLFq2tsZWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTnVzdGF0bywga29raW8gdGlwbyBiaWxpZXRhcyBnYWxpIHR1csSXdGkgxK90YWtvcyBzdXNpZXRvcyBDSSBixatrbGVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0FwaWJyxJfFvmltbyBhdG5hdWppbmltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0nFoXRyaW50aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnRGllZ2ltbyBixatzZW5vcyBzcGFsdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGllZ2ltbyBixatzZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1Ymxpa2F0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEaW5hbWluacWzIGxhdWvFsyDEr3Z5a2nFsyBtb2R1bGlzLCBrdXJpcyDFvnltaSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwaWJyxJfFvnRpcyBrYWlwIG5lc2luY2hyb25penVvdGFzLCBqZWkgcGFzaWtlacSNaWEgZGluYW1pbmlhaSBsYXVrYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWluaWFpIGxhdWthaSwgcm9kb21pIGFnZW50byBzxIVzYWpvcyBwYXBpbGRvbW8gSVRTTSBsYXVrbyBla3JhbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtaW5pYWkgbGF1a2FpLCByb2RvbWkga2xpZW50byBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gYXDFvnZhbGdvcyBla3JhbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWluaWFpIGxhdWthaSwgcm9kb21pIGFnZW50byBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBla3JhbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ8SuanVuZ2lhbWEga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIG1hc2luaW8gdmVpa3NtbyBmdW5rY2lqYSwga2FkIGFnZW50byBwcmlla2luxJdqZSBkYWx5amUgdmllbnUgbWV0dSBixat0xbMgZ2FsaW1hIGRpcmJ0aSBzdSBkYXVnaWF1IG5laSB2aWVudSBrb25maWfFq3JhY2lqb3MgZWxlbWVudHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfErmp1bmdpYW1hIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBtYXNpbmlvIHZlaWtzbW8gZnVua2NpamEgdGlrIGnFoXZhcmR5dG9tcyBncnVwxJdtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnxK5qdW5naWFtYSAvIGnFoWp1bmdpYW1hIGZ1bmtjaWphLCBza2lydGEgcGF0aWtyaW50aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgdW5pa2FsaXVzIHBhdmFkaW5pbXVzLiBQcmllxaEgxK9qdW5nZGFtaSDFoWnEhSBwYXJpbmt0xK8sIHR1csSXdHVtxJd0ZSBwYXRpa3JpbnRpLCBhciBqxatzxbMgc2lzdGVtb2plIG7El3JhIGphdSBlc2FtxbMga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBzdSBwYXNpa2FydG9qYW7EjWlhaXMgcGF2YWRpbmltYWlzLiBUYWkgZ2FsaXRlIHBhZGFyeXRpIG5hdWRvZGFtaSBrb25zb2zEl3Mga29tYW5kxIUgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICfErnZ5a2nFsyBtb2R1bGlzLCBza2lydGFzIG51c3RhdHl0aSAidGlja2V0LWNvbmZpZ2l0ZW0tbGluayIga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGLFq3NlbsSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gaW5kZWtzbyBsYXVrYWksIG5hdWRvamFtaSB2aXNvIHRla3N0byBwYWllxaFrYWkuIExhdWthaSB0YWlwIHBhdCBzYXVnb21pLCB0YcSNaWF1IG7El3JhIHByaXZhbG9taSBiZW5kcmFpIGZ1bmtjaWphaS4gUHJpZWTFsyDEr3RyYXVraW3EhSBnYWxpbWEgacWhanVuZ3RpIG51c3RhdGFudCDEr3JhxaFvIHJlaWvFoW3EmSAwIGFyYmEgasSvIGnFoXRyaW5hbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gaW5kZWtzZSBzYXVnb21pIGxhdWthaSwga3VyaWUgbmF1ZG9qYW1pIG5lIHRpayB2aXNvIHRla3N0byBwYWllxaFrYWksIGJldCBpciBraXRpZW1zIGRhbHlrYW1zLiBLYWQgZnVua2Npam9zIGLFq3TFsyBwaWxuYWkgacWhbmF1ZG90b3MsIHZpc2kgbGF1a2FpIHlyYSBwcml2YWxvbWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnS2lla3ZpZW5haSDFvmluaWF0aW5rbGlvIHBhc2xhdWdhaSAocmFrdGFzKSBnYWxpbWEgYXBpYnLEl8W+dGkga2xhc2nFsyBtYXN5dsSFIChyZWlrxaFtxJcpLCBrdXJpbyBpbXBvcnRhcyB5cmEgcmlib2phbWFzLiBWaXNvbXMgcGFzaXJpbmt0b21zIGtsYXPEl21zIGFyYmEgdmlzb21zIGVzYW1vbXMga2xhc8SXbXMgaWRlbnRpZmlrdW9qYW50eXMgYXRyaWJ1dGFpIHR1csSXcyBixat0aSBwYXNpcmlua3RpIGludm9rZXJpbyBrb25maWfFq3JhY2lqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICciR2VuZXJpY0ludGVyZmFjZSIgbW9kdWxpbyByZWdpc3RyYWNpamEgIkNvbmZpZ0l0ZW1GZXRjaCIgacWha3ZpZXTEl2pvIHNsdW9rc25pdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnIkdlbmVyaWNJbnRlcmZhY2UiIG1vZHVsaW8gcmVnaXN0cmFjaWphICJDb25maWdJdGVtRmV0Y2giIGnFoWt2aWV0xJdqbyBzbHVva3NuaXVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICciR2VuZXJpY0ludGVyZmFjZSIgbW9kdWxpbyByZWdpc3RyYWNpamEgIkNvbmZpZ0l0ZW1GZXRjaCIgacWha3ZpZXTEl2pvIHNsdW9rc25pdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBhcMW+dmFsZ2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfErnRyYXVrdGkgZGllZ2ltbyBixatzZW5hcyDEryBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWvEhSBrbGllbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8SudHJhdWt0aSBpbmNpZGVudG8gYsWrc2VuYXMgxK8ga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrxIUga2xpZW50xbMgc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGlkxb5pYXVzaWFzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMsIGt1cmllIGJ1cyByb2RvbWkgxaFpb3Mgb3BlcmFjaWpvcyByZXp1bHRhdGUsIHNrYWnEjWl1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bGlzLCBza2lydGFzIHXFviBrbGFzxJkgYXRzYWtpbmdhaSBncnVwZWkgcGF0aWtyaW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bGlzLCBza2lydGFzIHBhdGlrcmludGkgZ3J1cMSZLCBhdHNha2luZ8SFIHXFviBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ0lUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBzdGF0aXN0aWtvcyBnZW5lcmF2aW1vIG1vZHVsaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnUGF2YWRpbmltbyBtb2R1bGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW1lcmlvIG1vZHVsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlnxatyYWNpam9zIGVsZW1lbnTFsywgcm9kb23FsyBraWVrdmllbmFtZSBwYWllxaFrb3MgcmV6dWx0YXTFsyBwdXNsYXB5amUgYWdlbnRvIHPEhXNham9qZSwgc2thacSNaXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWfFq3JhY2lqb3MgZWxlbWVudMWzLCBrdXJpZSBidXMgcm9kb21pIGtpZWt2aWVuYW1lIHBhaWXFoWtvcyByZXp1bHRhdMWzIHB1c2xhcHlqZSBrbGllbnRvIHPEhXNham9qZSwgc2thacSNaXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrdMWzLCBrdXJpxbMgcmVpa2lhIGllxaFrb3RpLCBraWVrIMSvcmHFocWzIGlyIGtva2l1cyBhdHJpYnV0dXMgcm9keXRpLiBDb25maWdJdGVtIGF0cmlidXRhaSB0dXJpIGLFq3RpIGFpxaFraWFpIHNhdWdvbWkgcGVyICJFbGFzdGljc2VhcmNoIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnQXDFvnZhbGdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJhaSwgc2tpcnRpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMga2xhc2nFsyBrYXRlZ29yaWpvbXMgYWdlbnRvIHPEhXNham9zIG51b3N0YXTFsyByb2RpbnlqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYcW+b3Npb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBhcMW+dmFsZ29zIHN0dWxwZWxpxbMgZmlsdHLFsyBwYXJhbWV0cmFpLiBBdGtyZWlwa2l0ZSBkxJdtZXPErzogbnVzdGHEjWl1cyAiQWN0aXZlIiB2ZXJ0xJkgMCwgYWdlbnRhaSBuZWdhbMSXcyByZWRhZ3VvdGkgdGlrIMWhaW9zIGdydXDEl3MgbnVzdGF0eW3FsyBzYXZvIGFzbWVuaW7El3NlIHBhcmlua3R5c2UsIHRhxI1pYXUgYWRtaW5pc3RyYXRvcmlhbXMgdmlzIHRpZWsgYnVzIGxlaWTFvmlhbWEgcmVkYWd1b3RpIGtpdG8gbmF1ZG90b2pvIG51c3RhdHltdXMuIE5hdWRva2l0ZSAiUHJlZmVyZW5jZUdyb3VwIiwgbm9yxJdkYW1pIHZhbGR5dGksIGt1cmlvamUgc3JpdHlqZSDFoWllIG51c3RhdHltYWkgdHVyxJd0xbMgYsWrdGkgcm9kb21pIG5hdWRvdG9qbyBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfErmRpZWdpbW8gYsWrc2VuxbMgcGFyYW1ldHJhaSBudXNwYWx2aW50aSBhZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ2RpZWdpbW8gYsWrc2VuxbMgcGFyYW1ldHJhaSBhZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdCZW5kcsWzasWzIGthdGFsb2dvIGF0cmlidXTFsyBsZWlkaW3FsyBncnVwacWzIHBhdnl6ZMW+acWzIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnRvIHPEhXNham9zIG51b3N0YXTFsyByb2RpbnlqZSBlc2FuxI1pxbMga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBrbGFzacWzIHZhcmTFsyBtb2R1bGlvIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplIGVzYW7EjWnFsyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGtsYXNpxbMgbnVtZXJpbyBtb2R1bGlvIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1B1c2xhcGnFsyAoa3VyaXVvc2Ugcm9kb21pIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWkpIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FnZW50byBzxIVzYWpvcyBudW9zdGF0xbMgcm9kaW55amUgZXNhbsSNacWzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMga2xhc2nFsyB2ZXJzaWpvcyBlaWx1dMSXcyBtb2R1bGlvIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnRvIHPEhXNham9zIG51b3N0YXTFsyByb2RpbnlqZSBlc2FuxI1pxbMga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBrbGFzacWzIGtvbmZpZ8WrcmFjaWpvcyBlaWx1dMSXcyDFoWFibG9ubyDEr3JhbmtpxbMgcmlua2luaW8gbW9kdWxpbyBwYXJhbWV0cmFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplIGVzYW7EjWnFsyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGtsYXNpxbMgdmVyc2lqb3MgdHJpZ2VyaW8gcGFyYW1ldHJhaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdBdGxpZWthIHN1a29uZmlnxatydW90xIUgdmVpa3NtxIUga2lla3ZpZW5hbSDEr3Z5a2l1aSAoa2FpcCBJbnZva2VyKSBraWVrdmllbmFpIHN1a29uZmlnxatydW90YWkgxb5pbmlhdGlua2xpbyBwYXNsYXVnYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdMZWlkaW3FsyBncnVwxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVpa2FsaW5naSBsZWlkaW1haSBuYXVkb3RpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHByaWp1bmdpbW8gdmVpa3NtxIUgYWdlbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWkgbmF1ZG90aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBla3JhbsSFIGFnZW50byBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVpa2FsaW5naSBsZWlkaW1haSBuYXVkb3RpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrb3MgbGFuZ8SFIGFnZW50byBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVpa2FsaW5naSBsZWlkaW1haSBuYXVkb3RpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrb3MgZWtyYW7EhSBrbGllbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpIG5hdWRvdGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIG1lZMW+aW8gcGVyxb5pxatyb3MgZWtyYW7EhSBhZ2VudG8gc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpIG5hdWRvdGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcHJpYXJ0aW5pbW8gZWtyYW7EhSBhZ2VudG8gc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWkgbmF1ZG90aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwcmlkxJdqaW1vIGxhbmfEhSBhZ2VudG8gc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpLCBrYWQgYsWrdMWzIGdhbGltYSBuYXVkb3RpIGFnZW50byBzxIVzYWpvcyBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBla3JhbsSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpIG5hdWRvdGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcmVkYWdhdmltbyBla3JhbsSFIGFnZW50byBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWksIGthZCBixat0xbMgZ2FsaW1hIG5hdWRvdGkgYWdlbnRvIHPEhXNham9zIGlzdG9yaWpvcyBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBla3JhbsSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVpa2FsaW5naSBsZWlkaW1haSwga2FkIGLFq3TFsyBnYWxpbWEgbmF1ZG90aSBhZ2VudG8gc8SFc2Fqb3MgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gc3BhdXNkaW5pbW8gZWtyYW7EhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1JlaWthbGluZ29zIHByaXZpbGVnaWpvcyBub3JpbnQgacWhdHJpbnRpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50dXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnSWXFoWtvdGkga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0F1dG9tYXRpxaFrYWkgbnVzdGF0eWtpdGUgS0kgaW5jaWRlbnRvIGLFq3NlbsSFLCBrYWkgYmlsaWV0YXMgc3VzaWVqYW1hcyBzdSBLSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdXN0YXRvIGRpZWdpbW8gYsWrc2VuxIUgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBkaWRtZW5pbmlhbWUgZWtyYW5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdXN0YXRvIGluY2lkZW50byBixatzZW7EhSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGRpZG1lbmluxJdzIGtvbmZpZ8WrcmFjaWpvcyBla3JhbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuaXUgcm9kb21hIG51b3JvZGEsIGxlaWTFvmlhbnRpIHN1c2lldGkga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSBzdSBraXR1IG9iamVrdHUgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwcmlhcnRpbmltbyByb2RpbnlqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb2RvIG1lbml1IG51b3JvZMSFLCBza2lydMSFIHBhc2lla3RpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBpc3RvcmlqxIUgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgYXDFvnZhbGdvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbml1IHJvZG9tYSBudW9yb2RhLCBrdXJpYSBnYWxpbWEgcGFzaWVrdGkga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGlzdG9yaWrEhSBhZ2VudG8gc8SFc2Fqb3MgcHJpYXJ0aW5pbW8gcm9kaW55amUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm9kb21hIG1lbml1IG51b3JvZGEsIHNraXJ0YSBpxaF0cmludGkga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSBqbyBwcmlhcnRpbnRhbWUgYWdlbnRvIHPEhXNham9zIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnUm9kbyBtZW5pdSBudW9yb2TEhSwga2FkIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgbnVvcm9kb3MgYsWrdMWzIHJvZG9tb3MgbWVkxb5pbyByb2RpbnlqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb2RvbWEgbWVuaXUgbnVvcm9kYSwgc2tpcnRhIGR1YmxpdW90aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFIGFnZW50byBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5pdSByb2RvbWEgbnVvcm9kYSwgc2tpcnRhIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50dWkgZHVibGl1b3RpIGFnZW50byBzxIVzYWpvcyBwcmlhcnRpbmltbyByb2RpbnlqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JvZG9tYSBtZW5pdSBudW9yb2RhLCBza2lydGEgcmVkYWd1b3RpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIUgYWdlbnRvIHPEhXNham9zIHByaWFydGludGFtZSByb2RpbnlqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbml1IHJvZG9tYSBudW9yb2RhLCBrdXJpYSBnYWxpbWEgZ3LEr8W+dGkgxK8gYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwcmlhcnRpbmltbyByb2RpbsSvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JvZG9tYSBtZW5pdSBudW9yb2RhLCBza2lydGEgc3BhdXNkaW50aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFIGFnZW50byBzxIVzYWpvcyBwcmlhcnRpbnRhbWUgcm9kaW55amUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm9kb21hIG1lbml1IG51b3JvZGEsIHNraXJ0YSBwcmlhcnRpbnRpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIUgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgYXDFvnZhbGdvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb2RvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgaXN0b3JpasSFIChhdHZpcmvFoXRpbmUgdHZhcmthKSBhZ2VudG8gc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdOdW1hdHl0b2ppIGthdGVnb3JpamEsIGt1cmkgcm9kb21hLCBqZWkgbmVwYXNpcmlua3RhIG7ElyB2aWVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBpZGVudGlmaWthdG9yaXVzLCBwdnouLCBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gTnVtYXR5dG9qaSByZWlrxaFtxJcgeXJhIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0F1dG9tYXRpxaFrYWkgcGFsZWlkxb5pYSBDb25maWdJdGVtRmV0Y2ggaW52b2thdG9yacWzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2lqYSBTdHlnaW5pxbMgZWlsdXTElyBJxaFyYWnFoWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpam9zIGVpbHV0xJdzIG1vZHVsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2lqYSBUcmlnZ2VyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ0FyIGdhbGltYSBpxaF2ZW5ndGkgIkNvbmZpZ0l0ZW1BQ0wiIHZ5a2R5bW8gdGlrcmluYW50IHRhbHB5a2xvamUgZXNhbsSNacWzIGxhdWvFsyBwcmlrbGF1c29teWJlcy4gVGFpIGdhbGkgcGFnZXJpbnRpIGZvcm11bGlhcsWzIMSva8SXbGltbyBsYWlrxIUsIHRhxI1pYXUgdHVyaSBixat0aSBpxaFqdW5ndGEsIGplaSBBQ0xNb2R1bGVzIHR1cmkgYsWrdGkgbmF1ZG9qYW1pIElUU01Db25maWdJdGVtLSBpciBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnS29raWEgYmVuZHJhIGluZm9ybWFjaWphIHBhdGVpa2lhbWEgYW50cmHFoXTEl2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tsYXPElyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdwYXNhdWxpbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1a2NpbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmllxaFwcm9kdWtjaW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVrdHl2dXMnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgY29saW8gKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBjb2xpcyAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IGNvbGlvICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IGNvbGlvICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkgY29sacWzIHN0b3Zhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEsNzUgY29saW8gKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgY29saWFpICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMSBjb2xpbyBzdG92YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IGNvbGlvICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMgY29sacWzIHN0b3Zhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgY29saW8gKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIGNvbGlhaSAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgY29saW8gKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSBjb2xpbyAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSBjb2xpbyAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgY29saW8gKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IGNvbGlvICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBjb2xpbyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgY29saWFpICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgY29saW8gKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBjb2xpbyAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1IGNvbGlvICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSBjb2xpbyAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBjb2xpbyAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSBjb2xpbyAoMjAwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIGNvbGlvICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgY29saWFpICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgY29saWFpICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSBjb2xpbyAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLDUgY29saW8gKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgY29saW8gKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgY29sacWzICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IGNvbGlvICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdBcHNrYWl0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0FkcmVzxbMgcHJpc2t5cmltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmF0b3JpdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9naW5pcyB0ZWxlZm9uYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdQcmlldGFpc28gdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdBa3VtdWxpYXRvcmlhdXMgdGFscGEgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdBa3VtdWxpYXRvcmlhdXMgdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdQYXN0YXRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnTWFnaXN0cmFsxJdzIHPEhXNhamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFUga2xhc8SXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdUYWxwYSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnVmllbm9zIHZhaXpkbyBwbG9rxaF0xJdzIHRhbHBhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnS29ydGVsxJdzIG51bWVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLb3J0ZWxpxbMgc2thaXR5dHV2YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnS29ydGVsxJdzIHRpcGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdLbGllbnTFsyBzZXJ0aWZpa2F0YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnS2xpZW50byBwcm9ncmFtaW7ElyDEr3JhbmdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0tsaWVudG8ga2F0ZWdvcmlqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdMYWlrcm9kxb5pbyByb2R5a2zElyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnTGFpa3JvZMW+acWzIGdyZWl0aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0tvZG8gcGFzaXJhxaF5bW8gc2VydGlmaWthdGFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJlbmNpbmlzIHRlbGVmb25hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0tvbnN1bHRhdmltbyBzdXRhcnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnU3VzaXNpZWtpdGUgc3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ1N1c2lzaWVraXRlIHN1IHBsYXRpbnRvanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdLb250ZWluZXJpxbMgdmFsZHltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdTdXRhcnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnU3V0YXJ0aWVzIHRpcGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnU3V0YXJ0aWVzIGxhaWtvdGFycGlzIG51byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdTdXRhcnRpZXMgbGFpa290YXJwaXMgaWtpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ0JlbGFpZGlzIHRlbGVmb25hcyAoREVDVCB0ZWxlZm9uYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ0nFoWxhaWTFsyB2aWVuZXRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0xpY2VuY2lqxbMgc2thacSNaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdTdWvFq3JpbW8gZGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnUGFzaXJpbmt0aW5pcyBzdG92YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgcmV6ZXJ2dW90YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TIHNlcnZlcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdTxIVza2FpdG9zIGZha3TFq3JvcyBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdVxb5zYWt5bW8gZGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnR2FyYW50aWpvcyBpxaFkYXZpbW8gZGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdJxaFsZWlkaW1vIGRhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ1N0YWxpbmlzIGtvbXBpdXRlcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdEb2t1bWVudMWzIHBhc2lyYcWheW1vIHNlcnRpZmlrYXRhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kgc3RlbGHFvmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFbC4gcGHFoXRvIHNlcnRpZmlrYXRhaSAoUy9NSU1FIHNlcnRpZmlrYXRhaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnRGFyYm8gc3V0YXJ0aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdHYWxpbmlzIElQIGFkcmVzYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdQYXJhbW9zIHBhYmFpZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdHYWxpb2ppbW8gZGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnScWhb3JpbmlzIGtpZXRhc2lzIGRpc2thcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ1Vnbmlhc2llbsSXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnUHJvZ3JhbWluxJcgxK9yYW5nYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ0VuZXJnaWpvcyBrYXVwaW1hcyBzbWFncmHEjWl1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRm9ybW9zIGZha3Rvcml1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbsWhaXrEl3Mgc3V0YXJ0aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdOZW1va2FtYSBwcm9ncmFtaW7ElyDEr3JhbmdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0JlbmRyYSBpbmZvcm1hY2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ1ZhaXpkbyBwbG9rxaF0xJdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdWYWl6ZG8gcGxva8WhdMSXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnVGVjaG5pbsSXIMSvcmFuZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdUZWNobmluxJdzIMSvcmFuZ29zIG1vZGVsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnVGVjaG5pbsSXcyDEr3JhbmdvcyBzdm9yaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0F1c2luxJdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAgcHJvdG9rb2xhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdUYXBhdHlixJdzIGlyIHByaWVpZ29zIHZhbGR5bWFzIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdJbnZlbnRvcmluaXMgbnVtZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0ludmVyc3RyYXZpbW8gacWhbGFpZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnU8SFc2thaXRvcyBmYWt0xatyb3MgbnVtZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ0tsYXZpYXTFq3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCBtb25pdG9yaXVzIChza3lzdMWzasWzIGtyaXN0YWzFsyBla3JhbmFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVEIG1vbml0b3JpdXMgKMWhdmllc29zIGRpb2RhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnU3RhY2lvbmFydXNpcyB0ZWxlZm9uYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTmXFoWlvamFtYXNpcyBrb21waXV0ZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ1BsYXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICcxIHNsdW9rc25pczogZml6aW5pcyBzbHVva3NuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnMiBzbHVva3NuaXM6IGR1b21lbsWzIHJ5xaFpbyBzbHVva3NuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJzMgc2x1b2tzbmlzOiB0aW5rbG8gc2x1b2tzbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJzMgc2x1b2tzbmlzOiB0aW5rbG8gc2x1b2tzbmlzIChzdXBlcm5ldGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICc0IHNsdW9rc25pczogdHJhbnNwb3J0byBzbHVva3NuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJzUgc2x1b2tzbmlzOiBzZXNpam9zIHNsdW9rc25pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICc2IHNsdW9rc25pczogcGF0ZWlraW1vIHNsdW9rc25pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJzcgc2x1b2tzbmlzOiB0YWlrb23Fs2rFsyBwcm9ncmFtxbMgc2x1b2tzbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ051b21vcyBzdXRhcnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpY2VuY2lqb3Mgc3V0YXJ0aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpY2VuY2lqb3MgcmFrdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpY2VuY2lqb3MgdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0xpY2VuY2lqb3MgbGFpa290YXJwaXMgbnVvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnTGljZW5jaWpvcyBsYWlrb3RhcnBpcyBpa2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpxI1pbyBnZWxlxb5pZXMgZm9zZmF0byAoTGlGZVBPNCkgYWt1bXVsaWF0b3JpdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0xpxI1pbyBqb27FsyAobGnEjWlvIGpvbsWzKSBha3VtdWxpYXRvcml1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ1Bhc2tvbG9zIHN1dGFydGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICfErnNpa8WrcsSZcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdJbGd1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdHYW1pbnRvamFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdEaWTFvmlhdXNpYSBhcGtyb3ZvcyBnYWxpYSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnQXRtaW50aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdBdG1pbnRpZXMgdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmkgc3RlbGHFvmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpbGlvam8gdGVsZWZvbm8gbnVtZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbHVzaXMgLyDEr3RlcnB0YXNpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdNb2RlbGlzIEFwcmHFoXltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnTW9uaXRvcmlhdXMgc2tpcmlhbW9qaSBnZWJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ01vbml0b3JpYXVzIGR5ZGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnUGVsxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1RpbmtsYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnVGlua2xvIGluZm9ybWFjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdUaW5rbG8gaW5mb3JtYWNpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ1RpbmtsbyBseWdtdW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWtlbGlvLWthZG1pbyAoTmlDZCkgYWt1bXVsaWF0b3JpdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWtlbGlvLW1ldGFsbyBoaWRyaWRvIChOaU1IKSBha3VtdWxpYXRvcml1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdTdXNpdGFyaW1hcyBkxJdsIGluZm9ybWFjaWpvcyBuZWF0c2tsZWlkaW1vIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTmXFoWlvamFtYXNpcyBrb21waXV0ZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ1Byb2Nlc29yacWzIHNrYWnEjWl1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdPcGVyYXR5dmlvc2lvcyBhdG1pbnRpZXMgbW9kdWxpxbMgc2thacSNaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ1ZhaXpkbyBwbG9rxaHEjWnFsyBza2FpxI1pdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQgbW9uaXRvcml1cyAob3JnYW5pbmlzIMWhdmllc29zIGRpb2RhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnVmVpa2xvcyBzxIVuYXVkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnVcW+c2FreW1vIG51bWVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdLaXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdJxaHEl2ppbWFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTiBLT0RBUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXJ5c3TEl3Mgc3VzaXRhcmltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdUZWxlZm9ubyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUZWxlZm9ubyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0ZpemluaWFpIGJyYW5kdW9saWFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnTWFpdGluaW1vIHRpZWtpbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnxK5zaWd5dGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1N0b3ZvIGd5bGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnU3Rvdm8gdmllbmV0YWkgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdLYW1iYXJ5cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTSBrb3J0ZWzElyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMgc2VydGlmaWthdGFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnUGFyZGF2aW1vIHN1dGFydGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1BhbHlkb3ZpbmlzIHRlbGVmb25hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdTYW5kYXJ1cyDFoXZpbm8gcsWrZ8WhdGluaXMgKFNMQSkgYWt1bXVsaWF0b3JpdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpam9zIG51bWVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyaW8gcHJvZ3JhbWluxJcgxK9yYW5nYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1Bhc2xhdWfFsyBzdXRhcnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1Bhc2xhdWdvcyDFvnltYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdMaXpkbyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1Byb2dyYW1pbsSXIMSvcmFuZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdHYXJzaWFrYWxiaWFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJ0aW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnUHJhZGluaXMgSVAgYWRyZXNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnU2F1Z3lrbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdTYXVneWtsb3Mgc2tpcnNuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdEdWt0ZXJpbsSXIMSvbW9uxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1NhbnRyYXVrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1Bsb25hc2lzIGtsaWVudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdTacWrbGFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnIlRodW5kZXJib2x0Iic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnScWhIHZpc28gZ3JhZmluxJdzIHBsb2vFoXTEl3Mgb3BlcmF0eXZpb3Npb3MgYXRtaW50aWVzIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdJxaEgdmlzbyBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnSnV0aWtsaW5pbyBla3Jhbm8gbW9uaXRvcml1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ0Jva8WhdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0IgxaFha290dXZhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSIGF1c2luxJdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAgdGVsZWZvbmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdJbnRlcm5ldG8ga2FtZXJhJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/lv_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omx2X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdWaXNwxIFyxKtnaSBkYXJixKtiYXMgZGF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnSWVuxIFrb8WhbyBwaWVwcmFzxKtqdW11IGRhdHUgaWVzdGF0xKtqdW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnSXplam/FoW8gYXRiaWxkZXMgZGF0dSBpZXN0YXTEq2p1bWknOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnZhbGTEq2JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTWFpbsSrdCBrbGFzZXMgZGVmaW7Eq2NpanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ01haW7Eq3QgbG9tYXMgZGVmaW7Eq2NpanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQga2xhxaF1IGtvbXBsZWt0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ8WgZWl0IHZhcmF0IGltcG9ydMSTdCBSZWFkeTJJbXBvcnQga2xhxaF1IGtvbXBsZWt0dXMsIGt1cm9zIHBhcsSBZMSrdGkgbcWrc3UgdmlzYmllxb7EgWsgaXptYW50b3RpZSBrb25maWd1csSBY2lqYXMgZWxlbWVudGkuIEzFq2R6dSwgxYZlbWlldCB2xJNyxIEsIGthIHZhciBixat0IG5lcGllY2llxaFhbWEgcGFwaWxkdSBrb25maWd1csSBY2lqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQXRqYXVuaW7EgXQgZXNvxaHEgXMgdmllbsSrYmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0xJN0IFJlYWR5MkFkb3B0IGtsYXNlcyBrb21wbGVrdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnS29uZmlndXLEgWNpamFzIHZpZW51bWEga2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ3VyxIFjaWphcyB2aWVudW1hIGxvbWEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnS29uZmlndXLEgWNpamFzIHZpZW51bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnS2xhxaF1IGZpbHRycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdMYWkgaXp2ZWlkb3R1IGphdW51IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSwgc2FyYWtzdMSBIGF0bGFzaWV0IGtsYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0tsYXNlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgZGFyYsSrYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0l6dmlldG/FoWFuYXMgc3TEgXZva2xpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ0luY2lkZW50YSBzdMSBdm9rbGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ1NhaXRlIHV6IGNpdHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ05lZGVyxKtncyBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgbnVtdXJzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdDaXRhIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBudW11cnMsIGFyIGt1cnUgdGFzIGrEgXNhc2Fpc3RhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1ZhaSB0aWXFocSBbSB2xJNsYXRpZXMgZHrEk3N0IMWhbyBrb25maWd1csSBY2lqYXMgZWxlbWVudHU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgxKsga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIG5vc2F1a3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTm9zYXVrdW1zIGphdSB0aWVrIGl6bWFudG90cyBDb25maWdJdGVtcyBhciDFocSBZHUoLWllbSkgbnVtdXJ1KC1pZW0pOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1ZlcnNpamFzIG51bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnxaDEqyBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgdmVyc2lqYXMgbnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnVmVyc2lqYXMgbnVtdXJ1IGphdSBpem1hbnRvIENvbmZpZ0l0ZW1zIGFyIMWhxIFkdSgtaWVtKSBudW11cnUoLWllbSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdJenZpZXRvxaFhbmFzIHN0xIF2b2tsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVudGEgdmFsc3RzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgdsSTc3R1cmU6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ1bEk3N0dXJlcyBzYXR1cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnUGFsaWVsaW7EgXQgc2thdHMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlnIFZpZW7Eq2JhcyB1eiBsYXB1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgZGF0aSBuYXYgYXRyYXN0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdJenbEk2xpZXRpZXMgxaFvIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1BhbGFpc3QgbWVrbMSTxaFhbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnTWVrbMSTdCBhcsSrIGllcHJpZWvFocSTasSBcyB2ZXJzaWrEgXM/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSBUcmVlVmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0R6acS8dW1hIGzEq21lbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnUGFsaWVsaW7EgXQvaXpzbMSTZ3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQ29uZmlnSXRlbSBzYXNuaWVndHMgbWFrc2ltxIFsYWlzIHNhacWhdSBsxKttZW5pcyEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1csSBY2lqYXMgdmllbnVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm3EgWNpamEgcGFyIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdQYcWhcmVpesSTamFpcyBpenZpZXRvxaFhbmFzIHN0xIF2b2tsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ1BhxaFyZWl6xJNqYWlzIGluY2lkZW50YSBzdMSBdm9rbGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1DEk2TEk2rEgXMgaXptYWnFhmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1DEk2TEk2pvIHJlaXppIG1haW7Eq3RzIGFyJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnSsWrc3UgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQ29uZmlnSXRlbSBtZWtsxJPFoWFuYSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnT2JqZWt0YSB0aXBzJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVGlrcyBpbXBvcnTEk3RhcyDFocSBZGFzIGtsYXNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdUaWtzIGltcG9ydMSTdGFzIMWhxIFkYXMgbG9tYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnxYVlbWlldCB2xJNyxIEsIGthIHRpa3MgaXp2ZWlkb3RpIGFyxKsgYXR0aWVjxKtnaWUgZGluYW1pc2tpZSBsYXVraSB1biBHZW5lcmFsQ2F0YWxvZyBrbGFzZXMsIHVuIGF1dG9txIF0aXNrYSBub8WGZW3FoWFuYSBuZW5vdGlrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWYWkgdsSTbGF0aWVzIHR1cnBpbsSBdD8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnTmVwaWVjaWXFoWFtYXMgcGllbcSTcnUga2xhc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbsSrY2lqYSBuYXYgZGVyxKtncyBZQU1MIGhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnUMSBcnNrYXRzOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmF2IG5vcsSBZMSrdHMgQ29uZmlnSXRlbXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0p1bXMgaXIgbmVwaWVjaWXFoWFtcyB2aXNtYXogdmllbnMgaXp2xJNsxJN0cyBrb25maWd1csSBY2lqYXMgdmllbnVtcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdKdW1zIG5hdiByYWtzdMSrxaFhbmFzIHBpZWvEvHV2ZXMgxaFpbSBrb25maWd1csSBY2lqYXMgZWxlbWVudGFtOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnS2xhc2VpICVzIG5hdiBkZWZpbsSTdGEgZGVmaW7Eq2NpamEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdLb25maWd1csSBY2lqYXMgdmllbsSrYmEgIiVzIiBuYXYgYXRyYXN0YSBkYXR1IGLEgXrEkyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdOZXZhcsSTamEgaXpkesSTc3Qga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTmF2IGF0cmFzdGEgdmVyc2lqYSBDb25maWdJdGVtRU1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmF2IG5vcsSBZMSrdHMgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCB2YWkgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1BpZWvEvHV2ZSBuYXYgZG90YSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmV2YXIgcGFyxIFkxKt0IHbEk3N0dXJpLCBuYXYgbm9yxIFkxKt0cyBuZXZpZW5zIENvbmZpZ0l0ZW10ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOZXZhciBwYXLEgWTEq3QgdsSTc3R1cmksIG5hdiBwaWXFocS3aXJ0YXMgcGlla8S8dXZlcyB0aWVzxKtiYXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdKYXVucyBrb25maWd1csSBY2lqYXMgZWxlbWVudHMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnSmF1bmEgdmVyc2lqYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnQXRqYXVuaW7EgXRzIGl6dmlldG/FoWFuYXMgc3TEgXZva2xpcyAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0F0amF1bmluxIF0cyBpbmNpZGVudGEgc3TEgXZva2xpcyAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRzIChJRD0lcykgZHrEk3N0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ1BpZXZpZW5vdGEgc2FpdGUgdXogJXMgKHRpcHM9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdTYWl0ZSB1eiAlcyAodGlwcz0lcykgZHrEk3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQXRqYXVuaW7EgXRhIENvbmZpZ0l0ZW0gZGVmaW7Eq2NpamEgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0F0amF1bmluxIF0cyBub3NhdWt1bXMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0cmlixat0cyAlcyBhdGphdW5pbsSBdHMgbm8gIiVzIiB1eiAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpamEgJXMgZHrEk3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOYXYgbm9yxIFkxKt0cyBDb25maWdJdGVtSUQgdmFpIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmV2YXIgcGFyxIFkxKt0IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSwgbmF2IHBpZcWhxLdpcnRhcyBwaWVrxLx1dmVzIHRpZXPEq2JhcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtRU1JRCAlcyBuYXYgYXRyYXN0cyBkYXR1IGLEgXrEkyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2l6ZHJ1a8SBdHMgJXMgcGllICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdBdHNhdWNlIChlbiknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdOZWRlcsSrZ3Mga2xhc2VzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmF2IG5vcsSBZMSrdHMga2xhc2VzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnxaBhaSBrbGFzZWkgbmF2IHBpZcWhxLdpcnRhcyBwaWVrxLx1dmVzIHRpZXPEq2JhcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05hdiByZXp1bHTEgXRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0tvbmZpZ3VyxJPFoWFuYXMgdmllbnVtYSBtZWtsxJPFoWFuYXMgcmV6dWx0xIF0aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTmV2YXIgcGFyxIFkxKt0IGVsZW1lbnR1LCBuYXYgcGllxaHEt2lydGFzIHBpZWvEvHV2ZXMgdGllc8SrYmFzIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbmF2IGF0cmFzdHMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ1ZlcnNpamFzIG5hdiBhdHJhc3RhcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdkYXJixKtiYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2JyxKtkaW7EgWp1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgxKsga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIGl6dmlldG/FoWFuYXMgc3TEgXZva2xpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgxKsga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIGluY2lkZW50YSBzdMSBdm9rbGlzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTmF2IGF0xLxhdWphcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0cnMgbmVkZXLEq2dzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnTWVrbMSTxaFhbmFzIHBhcmFtcyBuZWRlcsSrZ3MhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnUGFyxIFkxKt0aWUga29uZmlndXLEgWNpamFzIGVsZW1lbnRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ0l6dmlldG/FoWFuYXMgdmFsc3RzIHRpcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnUGHFoXJlaXrEk2phaXMgaW5jaWRlbnRhIHZhbHN0cyB0aXBzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ1N0YXJwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEga2xhc2VzIGllcm9iZcW+b2p1bWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ0l6dsSTbGlldGllcyB2aWVudSB2YWkgdmFpcsSBa2FzIGtsYXNlcywgbGFpIGllcm9iZcW+b3R1IGF0bGFzxIFtb3Mga29uZmlndXLEgWNpamFzIGVsZW1lbnR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBrbGFzZXMgaWVyb2Jlxb5vanVtaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ0l6dsSTbGlldGllcyB2aWVudSB2YWkgdmFpcsSBa2FzIGtsYXNlcywgbGFpIGllcm9iZcW+b3R1IGF0bGFzxIFtb3Mga29uZmlndXLEgWNpamFzIGVsZW1lbnR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWlza3MgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXNrcyAodmVyc2lqYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnU2FpdGUgQXRzYXVjZXMgdmVpZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnVmFpIMWhxKsgc2FpdGUgYXR0aWVjYXMgdXogYXRzYXVjZXMgb2JqZWt0YSBDb25maWdJdGVtIHZhaSBzdGF0aXNrbyB2ZXJzaWp1LiBQYcWhcmVpesSTasSBIGluY2lkZW50YSBzdMSBdm9rxLxhIGFwcsSTxLdpbnMgdGllayB2ZWlrdHMgdGlrYWkgZGluYW1pc2thasSBbSBzYWl0xJNtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ0F0bGFzaWV0IGF0cmlixat0dSwgcMSTYyBrdXJhIHRpa3MgbWVrbMSTdGkga29uZmlndXLEgWNpamFzIGVsZW1lbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0LEgXplcyBzdHJ1a3TFq3JhIG5hdiBkZXLEq2dhLiBMxatkenUsIG5vcsSBZGlldCBoYXNoIGFyIGRhdGllbSBZQU1MIGZvcm3EgXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdZQU1MIHZpcmtuZSBqxIFzxIFrIGFyIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ05laXpkZXbEgXMgYXR0xKtyxKt0IHRhYnVsdSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOZXRpa2EgYXRyYXN0aSBhdHRpZWPEq2dpZSBkaW5hbWlza2llIGxhdWtpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTmV2YXIgaWV2aWV0b3QgdGFidWzEgSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ1RhYnVsxIEgY29uZmlnaXRlbV9saW5rIGlldmlldG90YXMgMCByaW5kYXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWFrc2ltxIFsYWlzIHZpZW5hIGVsZW1lbnRhIHNrYWl0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICdJbXBvcnTEk3QvZWtzcG9ydMSTdCBwaWVsaWt1bXVzIChrxIEgcMSTZMSTamllIGllcmFrc3RpIGthdHLEgSByaW5kxIEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2lqYXMgdmlya25lJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0vEvMWrZGEsIHNpbmhyb25pesSTam90IGRlZmluxKtjaWphcy4gTMWrZHp1LCBwxIFyYmF1ZGlldCDFvnVybsSBbHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnSnVtcyBpciBJVFNNQ29uZmlnSXRlbSBkZWZpbsSrY2lqYXMsIGthcyBuYXYgc2luaHJvbml6xJN0YXMuIEzFq2R6dSwgaWV2aWV0b2ppZXQgSVRTTUNvbmZpZ0l0ZW0gZGluYW1pc2tvIGxhdWt1IGl6bWFpxYZhcy4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0RhcmLEq2JhcyB0ZXJtacWGxaEgYmVpZHppZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdVenR1csSTxaFhbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGzEgW5vdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVtb250cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUGVuc2lvbsSTdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUMSBcnNrYXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0xJPFoWFuYSAvIGt2YWxpdMSBdGVzIG5vZHJvxaFpbsSBxaFhbmEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1DEgXJza2F0cyB1biBhcHN0aXByaW7EgWp1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnS2xhxaF1LyBsb211IHVuIGFyIHTEgW0gc2Fpc3TEq3RvIGxhdWt1IGltcG9ydMSTxaFhbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdLbGFzZXMgaW1wb3J0xJPFoWFuYXMgbGFpa8SBIG5vdGlrYSBrxLzFq2RhLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gU2zEk3B0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIGF0dMSTbG90cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnxLthdWogcGFwbGHFoWluxIF0IG1la2zEk8WhYW5hcyBub3NhY8SranVtdXMgYcSjZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW7EgS4gSXptYW50b2pvdCDFoW8gZnVua2NpanUsIGrFq3MgdmFyYXQgbWVrbMSTdCwgcGllbcSTcmFtLCBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgbm9zYXVrdW11IGFyIMWhxIFkaWVtIG5vc2FjxKtqdW1pZW0sIHBpZW3Ek3JhbSwgIigqa2V5MSomJiprZXkyKikiIHZhaSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ8S7YXVqIHBhcGxhxaFpbsSBdCBtZWtsxJPFoWFuYXMgbm9zYWPEq2p1bXVzIGtsaWVudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtZWtsxJPFoWFuxIEuIEl6bWFudG9qb3QgxaFvIGZ1bmtjaWp1LCBqxatzIHZhcmF0IG1la2zEk3QsIHBpZW3Ek3JhbSwga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIG5vc2F1a3VtdSBhciDFocSBZGllbSBub3NhY8SranVtaWVtLCBwaWVtxJNyYW0sICIoKmtleTEqJiYmKmtleTIqKSIgdmFpICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnUGllxaHEt2lydGllIEtJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdLbGllbnRhIHV6xYbEk211bWFtIHBpZcWhxLdpcnRpZSBLSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0tsaWVudGEgbGlldG90xIFqYW0gcGllxaHEt2lydGllIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIGllc3RhdMSranVtaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnUMSBcmJhdWTEq3QgdW5pa8SBbHUgbm9zYXVrdW11IHRpa2FpIHRhasSBIHBhxaHEgSBDb25maWdJdGVtIGtsYXPEkyAoXCdjbGFzc1wnKSB2YWkgZ2xvYsSBbGkgKFwnZ2xvYmFsXCcpLCBrYXMgbm96xKttxJMsIGthLCBtZWtsxJNqb3QgZHVibGlrxIF0dXMsIHRpZWsgxYZlbXRzIHbEk3LEgSBrYXRycyBlc2/FoWFpcyBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnSXp2xJNsaWV0aWVzIG1vZHVsaSwgbGFpIGlldmllc3R1IG5vc2F1a3VtdSBzaMSTbXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdJenbEk2xpZXRpZXMgbW9kdWxpLCBsYWkgaWV2aWVzdHUgbnVtdXJ1IHNoxJNtdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnSXp2xJNsaWV0aWVzIG1vZHVsaSwgbGFpIGlldmllc3R1IHZlcnNpanUgdmlya25lcyBzaMSTbXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnSXp2xJNsaWV0aWVzIGF0cmlixat0dXMsIGthcyBpenJhaXNhIGphdW5hcyB2ZXJzaWphcyBpenZlaWRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdJenbEk2xpZXRpZXMga2F0ZWdvcmlqYXMsIGtvIHBpZcWhxLdpcnQgxaFhaSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUga2xhc2VpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdLb2xvbm51IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBmaWx0cmkgQ29uZmlnSXRlbSBQxIFyc2thdHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdLb2xvbm5hcywga3VyYXMgdmFyIGZpbHRyxJN0IGHEo2VudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdMSBLiBQaWV6xKttZTogSXIgYXTEvGF1dGkgdGlrYWkga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGF0cmlixat0aSB1biBkaW5hbWlza2llIGxhdWtpIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBwaWV2aWVub8WhYW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSByZWRpxKPEk8WhYW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyxJNqaWV0IGVsZW1lbnR1IG5vdGlrdW11IG1vZHVsaSwga2FzIGHEo2VudGEgc2Fza2FybsSTIMS8YXVqIHJlxKNpc3RyxJN0IHbEk3N0dXJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdLb25maWd1csSBY2lqYXMgZWxlbWVudHUgbm90aWt1bXUgbW9kdWxpcywga2FzIGF0amF1bmluYSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcGHFoXJlaXrEk2pvIGRlZmluxKtjaWp1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0tvbmZpZ3VyxJPFoWFuYXMgZWxlbWVudHUgdsSTc3R1cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBkcnVrxIHFoWFuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdLb25maWd1csSTamlldCB2aWVudW1hIHTEgWx1bW1hacWGdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdDb25maWdJdGVtIFRyZWUgc2thdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ8WgxIFkdSBrbGHFoXUgQ29uZmlnSXRlbXMgbmV0aWtzIHNhZ2xhYsSBdGkgRWxhc3RpY3NlYXJjaCBzZXJ2ZXLEqy4gTGFpIHRvIHBpZW3Ek3JvdHUgZXNvxaFhamllbSBDSSwgcMSTYyDFocSrcyBvcGNpamFzIG1hacWGYXMgQ0kgbWlncsSBY2lqYSBpciBqxIF2ZWljLCBpem1hbnRvam90IGtvbnNvbGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIGFyIMWhxIFkaWVtIGl6dmlldG/FoWFuYXMgc3TEgXZva8S8aWVtIG5ldGlrcyBzYWdsYWLEgXRpIEVsYXN0aWNzZWFyY2ggc2VydmVyxKsuIExhaSB0byBwaWVtxJNyb3R1IGVzb8WhYWppZW0gQ0ksIHDEk2MgxaHEq3Mgb3BjaWphcyBtYWnFhmFzIENJIG1pZ3LEgWNpamEgaXIgasSBdmVpYywgaXptYW50b2pvdCBrb25zb2xpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdLb25maWd1csSBY2lqYXMgdmllbnVtYSBpZXJvYmXFvm9qdW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1csSBY2lqYXMgdmllbnVtYSBpZXJvYmXFvm9qdW1zIHZpZW7EgSBsYXDEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0tvbmZpZ3VyxIFjaWphcyBwxIFydmFsZMSrYmFzIGRhdHVixIF6ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBsaWVsYSBhcGpvbWEgbW9kdWxpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRhIG1la2zEk8WhYW5hIGHEo2VudGEgaW50ZXJmZWlzYSBhaXptdWd1csSTasSBIG1hcsWhcnV0xJN0xIFqxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0l6dmVpZG90IHVuIHDEgXJ2YWxkxKt0IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBkZWZpbsSrY2lqYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnSXp2ZWlkbyBDb25maWdJdGVtcyBiacS8ZXRlcyBrb25rcsSTdG9zIGxhaWthIHB1bmt0b3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0tsaWVudGkgdmFyIHNrYXTEq3QgdsSTc3R1cmlza8SBcyBDSSB2ZXJzaWphcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnS2xpZW50aWVtIGlyIGllc3DEk2phIG1hbnXEgWxpIHDEgXJzbMSTZ3RpZXMgc3RhcnAgdsSTc3R1cmlza2FqxIFtIENJIHZlcnNpasSBbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdOb2tsdXPEk2p1bWEgZGF0aSwga2FzIGl6bWFudG9qYW1pIGF0cmlixat0YSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbsSBLiBQaWVtxJNyczogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdOb2tsdXPEk2p1bWEgZGF0aSwga2FzIGl6bWFudG9qYW1pIGF0cmlixat0YSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbsSBLiBQaWVtxJNyczogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluxJN0IERhcmLEq2Jhcywga3VyxIFzIHBpZXNhaXN0xKt0byBvYmpla3R1IGxvZ3LEq2vEgSBpciBwaWVlamFtYSBpZXN0YXTEq2p1bXUgcG9nYSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBMxatkenUsIMWGZW1pZXQgdsSTcsSBLCBrYSDFocSrbSBkYXJixKtixIFtIGlyIGrEgWLFq3QgcmXEo2lzdHLEk3RpZW0gxaHEgWRpZW0gSlMgdW4gQ1NTIGZhaWxpZW06IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIHVuIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluxJN0IFRlbXBsYXRlOjpUb29sa2l0IHNoxJNtdSB2ZXJzaWp1IHZpcmtuxJNtLiBJem1hbnRvIHRpa2FpIHRhZCwgamEgdmVyc2lqYXMgdmlya25lcyBtb2R1bGlzIGlyIGllc3RhdMSrdHMgdXogVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ05vc2FraWV0IG5vc2FjxKtqdW11IGtvcHVtdSwgc2Fza2HFhsSBIGFyIGt1cmllbSBrbGllbnRhbSBpciBhdMS8YXV0cyBza2F0xKt0IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dS4gTm9zYWPEq2p1bXVzIHDEk2MgaXp2xJNsZXMgdmFyIGllcm9iZcW+b3QgbMSrZHogbm90ZWlrdMSBbSBrbGllbnR1IGdydXDEgW0uIE5vc2F1a3VtcyBpciB2aWVuxKtnYWlzIG9ibGlnxIF0YWlzIGF0cmlixat0cy4gSmEgbmF2IG5vcsSBZMSrdGFzIGNpdGFzIG9wY2lqYXMsIMWhYWrEgSBrYXRlZ29yaWrEgSBixatzIHJlZHphbWkgdmlzaSBrb25maWd1csSBY2lqYXMgZWxlbWVudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbsSTIE5lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgZHrEk8WhYW5haSwgaXptYW50b2pvdCB2aXNwxIFyxJNqbyBzYXNrYXJuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluxJMgTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGllZ8WrdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHVzLCBpem1hbnRvam90IHZpc3DEgXLEk2pvIHNhc2thcm5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW7EkyBOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzIElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5haSwgaXptYW50b2pvdCB2aXNwxIFyxJNqbyBzYXNrYXJuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluxJMgTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcyBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBpZXN0YXTEq8WhYW5haSwgaXptYW50b2pvdCB2aXNwxIFyxJNqbyBzYXNrYXJuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW7EkyBwxIFyc2thdGEgbW9kdWxpLCBsYWkgcGFyxIFkxKt0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2FyYWtzdGEgbWF6byBza2F0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnTm9zYWthLCB2YWkgbWV6Z2x1IHNhdmllbm9qdW1vcyBpciBqxIFub3LEgWRhIHNhaXRlcyB0aXBhIGV0acS3ZXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluxJMgcmVndWzEgXLEgXMgaXp0ZWlrc21lcyBrYXRyYWkgQ29uZmlnSXRlbSBrbGFzZWkgYXRzZXZpxaHEt2ksIGxhaSBwxIFyYmF1ZMSrdHUgQ29uZmlnSXRlbSBub3NhdWt1bXUgdW4gcGFyxIFkxKt0dSBhdGJpbHN0b8Whb3Mga8S8xatkYXMgemnFhm9qdW11cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdOb3Nha2EgcGllZWphbcSBcyBDSSBrb2xvbm5hcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnNrYXTEgSBhdGthcsSrYsSBIG5vIENJIGtsYXNlcy4gS2F0cmFtIGllcmFrc3RhbSBqxIFzYXN0xIF2IG5vIGtsYXNlcyBub3NhdWt1bWEgdW4gYXR0aWVjxKtnxIFzIGtsYXNlcyBwaWVlamFtbyBsYXVrdSBtYXPEq3ZhLiBEaW5hbWlza28gbGF1a3UgaWVyYWtzdG9zIGrEgWlldsSTcm8gc2jEk21hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOb3Nha2Egbm9rbHVzxJNqdW1hIGtvbmZpZ3VyxIFjaWphcyB2aWVudW1hIGF0cmlixat0dSBrb25maWd1csSBY2lqYXMgdmllbnVtdSDFocS3aXJvxaFhbmFpIGHEo2VudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyB2aWVudW11IG1la2zEk8WhYW5hcyByZXp1bHTEgXRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05vc2FrYSBub2tsdXPEk2p1bWEga29uZmlndXLEgWNpamFzIHZpZW51bWEgYXRyaWLFq3R1IGtsaWVudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyB2aWVudW11IG1la2zEk8WhYW5hcyByZXp1bHTEgXR1IMWhxLdpcm/FoWFuYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSBrb25maWd1csSBY2lqYXMgdmllbnVtYSBhdHJpYsWrdHUgxaHEq3Mgb3BlcsSBY2lqYXMga29uZmlndXLEgWNpamFzIHZpZW51bWEgbWVrbMSTxaFhbmFzIHJlenVsdMSBdGEga29uZmlndXLEgWNpamFzIHZpZW51bWEgxaHEt2lyb8WhYW5haS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ05vc2FrYSBub2tsdXPEk2p1bWEga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHNlY8SrYnUgYcSjZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyByZXp1bHTEgXRvcy4gQXVnxaF1cDogdmVjxIFrYWlzIGlyIGF1Z8WhcHVzxJMuIFV6IGxlanU6IGphdW7EgWthaXMgYXVnxaFwdXPEky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ05vc2FrYSBub2tsdXPEk2p1bWEga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHNlY8SrYnUga2xpZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyByZXp1bHTEgXRvcy4gVXogYXVnxaF1OiB2ZWPEgWthaXMgaXIgYXVnxaFwdXPEky4gVXogbGVqdTogamF1bsSBa2FpcyBhdWfFoXB1c8STLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdOb3Nha2Egbm9rbHVzxJNqdW1hIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBzZWPEq2J1IMWhxKtzIG9wZXLEgWNpamFzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtZWtsxJPFoWFuYXMgcmV6dWx0xIF0xIEuIFV6IGF1Z8WhdTogdmVjxIFrYWlzIHV6IGF1Z8WhdS4gVXogbGVqdTogamF1bsSBa2FpcyBhdWfFoXB1c8STLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSByxIFkxKt0xIFzIENJIGtvbG9ubmFzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdMSBIGF0a2FyxKtixIEgbm8gQ0kga2xhc2VzLiBLYXRyYW0gaWVyYWtzdGFtIGrEgXNhc3TEgXYgbm8ga2xhc2VzIG5vc2F1a3VtYSB1biBhdHRpZWPEq2fEgXMga2xhc2VzIHBpZWVqYW1vIGxhdWt1IG1hc8SrdmEuIERpbmFtaXNrbyBsYXVrdSBpZXJha3N0b3MgasSBaWV2xJNybyBzaMSTbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnTm9zYWthIHDEk2Mgbm9rbHVzxJNqdW1hIHLEgWTEgW1vIGF0dGllY8SrYnUgZHppxLx1bXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ05vc2FrYSBub2tsdXPEk2p1bWEgcsSBZMSrdG8ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyBhdHJpYsWrdHUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyBla3LEgW5hbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ05vc2FrYSBub2tsdXPEk2p1bWEgcsSBZMSrdG8ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyBhdHJpYsWrdHUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyBla3LEgW5hbS4gUGllbcSTcnM6ICJLZXkiIGrEgWLFq3QgZGluYW1pc2vEgSBsYXVrYSBub3NhdWt1bWFtLCDFoWFqxIEgZ2FkxKtqdW3EgSAiWCIsICJDb250ZW50IiBqxIFixat0IGRpbmFtaXNrxIEgbGF1a2EgdsSTcnTEq2JhaSBhdGthcsSrYsSBIG5vIGRpbmFtaXNrxIEgbGF1a2EgdGlwYSwgVGV4dDogImEgdGV4dCIsIERyb3Bkb3duOiAiMSIsIERhdGUvVGltZTogIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgdW4gdmFpIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluxJMga2xhc2VzICJJVFNNQ29uZmlnSXRlbSIgbm9rbHVzxJNqdW1hIGFwYWvFoW9iamVrdHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdOb3Nha2EgcGllZWphbcSBcyBDSSBrb2xvbm5hcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnNrYXTEgSBhdGthcsSrYsSBIG5vIENJIGtsYXNlcy4gS2F0cmFtIGllcmFrc3RhbSBqxIFzYXN0xIF2IG5vIGtsYXNlcyBub3NhdWt1bWEgdW4gYXR0aWVjxKtnxIFzIGtsYXNlcyBwaWVlamFtbyBsYXVrdSBtYXPEq3ZhLiBEaW5hbWlza28gbGF1a3UgaWVyYWtzdG9zIGrEgWlldsSTcm8gc2jEk21hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ05vc2FrYSB0ZWtzdGEgcmVkYWt0b3JhIGtvbXBvbmVudGEgYXVnc3R1bXUgxaFhasSBIGVrcsSBbsSBLiBJZXZhZGlldCBza2FpdGxpIChwaWtzZcS8aSkgdmFpIHByb2NlbnR1xIFsbyB2xJNydMSrYnUgKHJlbGF0xKt2aSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05vc2FrYSByaW5kdSBza2FpdHUgQ0kgZGVmaW7Eq2NpanUgcmVkYWt0b3JhbSBhZG1pbmlzdHJhdG9yYSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ05vc2FrYSBpbmNpZGVudHUgc3TEgXZva8S8dSBzZWPEq2J1IG5vIGF1Z3N0YSAocGllbcSTcmFtLCBjcmljaXRhbCkgbMSrZHogemVtYW0gKHBpZW3Ek3JhbSwgZnVua2Npb27EgWxzKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbsSTIGF0dGllY8SrZ29zIGl6dmlldG/FoWFuYXMgc3TEgXZva8S8dXMsIGt1cm9zIHNhaXN0xKt0xIFzIGJpxLxldGVzIHZhciBpZXRla23Ek3QgS0kgc3RhdHVzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdOb3Nha2EgbWVrbMSTxaFhbmFzIGllcm9iZcW+b2p1bXUgZWtyxIFuYW0gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdOb3Nha2EgbWVrbMSTxaFhbmFzIGllcm9iZcW+b2p1bXUgZWtyxIFuYW0gQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdOb3Nha2EgbWVrbMSTxaFhbmFzIGllcm9iZcW+b2p1bXUgZWtyxIFuYW0gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdOb3Nha2EgbWVrbMSTxaFhbmFzIGllcm9iZcW+b2p1bXUgZWtyxIFuYW0gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbsSTIHBhcsSBZMSrdMSBcyBDSSBrb2xvbm5hcyBzYWnFoXUgdGFidWxhcyBzYXJlxb7Eo8SrdGFqxIEgc2thdMSBIHZpc8SBbSBDSSBrbGFzxJNtLiBKYSBuYXYgaWVyYWtzdGEsIHRpZWsgcGFyxIFkxKt0YXMgbm9rbHVzxJNqdW1hIGtvbG9ubmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW7EkyBwYXLEgWTEq3TEgXMgQ0kga29sb25uYXMgc2FpxaF1IHRhYnVsYXMgc2FyZcW+xKPEq3RhasSBIHNrYXTEgSBhdGthcsSrYsSBIG5vIENJIGtsYXNlcy4gS2F0cmFtIGllcmFrc3RhbSBqxIFixat0IGFyIHByZWZpa3N1IGtsYXNlcyBub3NhdWt1bWFtIHVuIGR1YnVsdGllbSBkaXZwdW5rdHUga29tdXRhdG9yaWVtICh0LiBpLiwgQ29tcHV0ZXI6OikuIElyIGRhxb5pIENJIGF0cmlixat0aSwga2FzIGlyIGtvcMSrZ2kgdmlzaWVtIENJIChwaWVtxJNycyBrbGFzZWkgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIExhaSBwYXLEgWTEq3R1IGF0c2V2acWhxLd1cyBDSSBhdHJpYsWrdHVzLCBrYXMgZGVmaW7Ek3RpIENJIGRlZmluxKtjaWrEgSwgasSBaXptYW50byDFocSBZGEgc2jEk21hIChwaWVtxJNycyBrbGFzZWkgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSmEgbmF2IGllcmFrc3RhIHBhciBDSSBrbGFzaSwgdGllayBwYXLEgWTEq3RhcyBub2tsdXPEk2p1bWEga29sb25uYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTm9zYWthLCBrdXJpIGVsZW1lbnRpIGlyIHBpZWVqYW1pICJBY3Rpb24iIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVrdMWrcmFzIHRyZcWhYWrEgSBsxKttZW7Eqy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdOb3Nha2EsIGt1cmkgZWxlbWVudGkgaXIgcGllZWphbWkgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0xatyYXMgcGlybWFqxIEgbMSrbWVuxKsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ05vc2FrYSwga3VyaSBlbGVtZW50aSBpciBwaWVlamFtaSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1a3TFq3JhcyBvdHJhasSBIGzEq21lbsSrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdOb3Nha2EsIGvEgWRhIHZlaWRhIHNhaXRlIChub3NhdWt0YSBubyBiacS8ZXRlcyBwZXJzcGVrdMSrdmFzKSB2YXIgaWV0ZWttxJN0IHNhaXN0xKt0xIFzIENJIHN0YXR1c3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTm9zYWthLCBrxIFkYSB2ZWlkYSBiacS8ZXRlIHZhciBpZXRla23Ek3Qgc2Fpc3TEq3TEgXMgQ0kgc3RhdHVzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdEZWZpbsSrY2lqYXMgYXRqYXVuaW7EgcWhYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgZHrEk8WhYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnSXp2aWV0b8WhYW5hcyB2YWxzdHMga3LEgXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdWJsaWvEgXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRGluYW1pc2tvIGxhdWt1IG5vdGlrdW11IG1vZHVsaXMsIGthcyBhdHrEq23EkyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgZGVmaW7Eq2NpamFzIGvEgSBuZXNpbmhyb25pesSTdGFzLCBqYSBtYWluxIFzIGRpbmFtaXNraWUgbGF1a2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWlza2llIGxhdWtpLCBrYXMgcmVkemFtaSBhxKNlbnRhIHNhc2thcm5lcyBwYXBpbGR1IElUU00gbGF1a2EgZWtyxIFuxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtaXNraWUgbGF1a2ksIGthcyByZWR6YW1pIGtsaWVudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdGEgZWtyxIFuxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWlza2llIGxhdWtpLCBrYXMgcmVkemFtaSBhxKNlbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbsSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdJZXNwxJNqbyBrb25maWd1csSBY2lqYXMgdmllbnVtYSBtYXN2ZWlkYSBkYXJixKtidSBmdW5rY2lqdSwgbGFpIGHEo2VudGEgZnJvbnRlbmTEgSB2YXLEk3R1IHN0csSBZMSBdCBhciB2YWlyxIFrIG5la8SBIHZpZW51IGtvbmZpZ3VyxIFjaWphcyB2aWVudW11IHZpZW5sYWlrdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdJZXNsxJNkeiBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWFzdmVpZGEgZGFyYsSrYnUgZnVua2NpanUgdGlrYWkgdXpza2FpdMSrdGFqxIFtIGdydXDEgW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0llc2zEk2R6L2l6c2zEk2R6IGZ1bmtjaW9uYWxpdMSBdGksIGxhaSBwxIFyYmF1ZMSrdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgdW5pa8SBbG9zIG5vc2F1a3VtdXMuIFBpcm1zIMWhxKtzIG9wY2lqYXMgaWVzbMSTZ8WhYW5hcyBqxIFwxIFyYmF1ZGEsIHZhaSBqxatzdSBzaXN0xJNtxIEgbmF2IGphdSBlc2/FoXUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGFyIGR1YmzEk2pvxaFpZW0gbm9zYXVrdW1pZW0uIFRvIHZhciBpemRhcsSrdCBhciBrb25zb2xlcyBrb21hbmR1IEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTm90aWt1bXUgbW9kdWxpcywgbGFpIGllc3RhdMSrdHUgY29uZmlnaXRlbS1zdGF0dXMgdXogdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnS29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGluZGVrc2EgbGF1a2ksIGthcyB0aWVrIGl6bWFudG90aSBwaWxudGVrc3RhIG1la2zEk8WhYW5haS4gTGF1a2kgYXLEqyB0aWVrIHNhZ2xhYsSBdGksIGJldCB0aWUgbmF2IG9ibGlnxIF0aSBrb3DEk2phaSBmdW5rY2lvbmFsaXTEgXRlaS4gUGllbGlrdW11IGlla8S8YXXFoWFudSB2YXIgYXRzcMSTam90LCBpZXN0YXRvdCBpZXJha3N0YW0gdsSTcnTEq2J1IDAgdmFpIGR6xJPFoW90IHRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnS29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGluZGVrc8SBIHNhZ2xhYsSBdGllIGxhdWtpLCBrYXMgdGllayBpem1hbnRvdGkgbmUgdGlrYWkgcGlsbnRla3N0YSBtZWtsxJPFoWFuYWksIGJldCBhcsSrIGNpdMSBbSBsaWV0xIFtLiBQaWxuxKtnYWkgZnVua2Npb25hbGl0xIF0ZWkgdmlzaSBsYXVraSBpciBvYmxpZ8SBdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnS2F0cmFpIHTEq21la8S8YSBwYWthbHBvanVtYW0gKGF0c2zEk2dhKSB2YXIgZGVmaW7Ek3Qga2xhxaF1IG1hc8SrdnUgKHbEk3J0xKtiYSksIHV6IGt1cnUgaW1wb3J0cyBpciBpZXJvYmXFvm90cy4gVmlzxIFtIGl6dsSTbMSTdGFqxIFtIGtsYXPEk20gdmFpIHZpc8SBbSBlc2/FoWFqxIFtIGtsYXPEk20gaW52b2tlcmEga29uZmlndXLEgWNpasSBIGLFq3MgasSBaXp2xJNsYXMgaWRlbnRpZmljxJNqb8WhaWUgYXRyaWLFq3RpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHXEvGEgcmXEo2lzdHLEgWNpamEgQ29uZmlnSXRlbUZldGNoIGludm9rYXRvcmEgc2zEgW5pbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHXEvGEgcmXEo2lzdHLEgWNpamEgQ29uZmlnSXRlbUZldGNoIGludm9rYXRvcmEgc2zEgW5pbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1xLxhIHJlxKNpc3RyxIFjaWphIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2F0b3JhIHNsxIFuaW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHDEgXJza2F0cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0lla8S8YXVqIGl6dmlldG/FoWFuYXMgc3TEgXZva8S8dXMga2xpZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW7EgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0lldHZlciBpbmNpZGVudHUgc3TEgXZva8S8dXMga2xpZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW7EgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01ha3NpbcSBbGFpcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2thaXRzLCBrYXMgdGlrcyBwYXLEgWTEq3RzIMWhxKtzIG9wZXLEgWNpamFzIHJlenVsdMSBdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsaXMsIGxhaSBwxIFyYmF1ZMSrdHUgcGFyIGtsYXNpIGF0YmlsZMSrZ28gZ3J1cHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxpcywgbGFpIHDEgXJiYXVkxKt0dSBncnVwdSwga2FzIGlyIGF0YmlsZMSrZ2EgcGFyIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bGlzLCBsYWkgxKNlbmVyxJN0dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBzdGF0aXN0aWt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05vc2F1a3VtcyBNb2R1bGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW11cnUgbW9kdWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2thaXRzLCBrYXMgdGlrcyBwYXLEgWTEq3RzIGthdHLEgSBtZWtsxJPFoWFuYXMgcmV6dWx0xIF0dSBsYXDEgSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHNrYWl0cywga2FzIHRpa3MgcGFyxIFkxKt0cyBrYXRyxIEgbWVrbMSTxaFhbmFzIHJlenVsdMSBdHUgbGFwxIEga2xpZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0aSwga3VydXMgbWVrbMSTdCwgY2lrIGllcmFrc3R1IHVuIGvEgWR1cyBhdHJpYsWrdHVzIHBhcsSBZMSrdC4gQ29uZmlnSXRlbSBhdHJpYsWrdGkgaXIgc2thaWRyaSBqxIF1emdsYWLEgSwgaXptYW50b2pvdCBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQxIFyc2thdHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGtsYcWhdSBrYXRlZ29yaWp1IGthdGVnb3JpasSBbSBhxKNlbnRhIHNhc2thcm5lcyBwcmVmZXJlbsSNdSBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIG1hesSBIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdGEga29sb25udSBmaWx0cmllbS4gTMWrZHp1LCDFhmVtaWV0IHbEk3LEgTogaWVzdGF0b3QgIkFrdMSrdnMiIHV6IDAsIGHEo2VudGkgbmV2YXLEk3MgcmVkacSjxJN0IHRpa2FpIMWhxKtzIGdydXBhcyBpZXN0YXTEq2p1bXVzIHNhdsSBcyBwZXJzb27Eq2dhasSBcyBwcmVmZXJlbmPEk3MsIGJldCBhZG1pbmlzdHJhdG9yaSBqb3Byb2rEgW0gdmFyxJNzIHJlZGnEo8STdCBjaXRhIGxpZXRvdMSBamEgaWVzdGF0xKtqdW11cyBzYXbEgSB2xIFyZMSBLiBJem1hbnRvamlldCAiUHJlZmVyZW5jZUdyb3VwIiwgbGFpIGtvbnRyb2zEk3R1LCBrdXLEgSBhcGdhYmFsxIEgxaFpZSBpZXN0YXTEq2p1bWkgYsWrdHUgcmVkemFtaSBsaWV0b3TEgWphIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBpenZpZXRvxaFhbmFzIHN0xIF2b2vEvHUga3LEgXNhaSBhxKNlbnRhIHNhc2thcm5lcyBwcmVmZXJlbsSNdSBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSXp2aWV0b8WhYW5hcyBzdMSBdm9rxLx1IHBhcmFtZXRyaSBhxKNlbnRhIHNhc2thcm5lcyBwcmVmZXJlbsSNdSBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1Zpc3DEgXLEq2dvIGthdGFsb2dhIGF0cmlixat0dSBhdMS8YXVqdSBncnVwdSBwaWVtxJNydSBwYXJhbWV0cmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIG5vc2F1a3VtYSBtb2R1xLxhIHBhcmFtZXRyaWVtIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrbGFzxJNtIGHEo2VudGEgc2Fza2FybmVzIHByZWZlcmVuxI11IHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUga2xhxaF1IG51bXVydSBtb2R1xLxhIHBhcmFtZXRyaWVtIGHEo2VudGEgc2Fza2FybmVzIHByZWZlcmVuxI11IHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnTGFwdSAoa3VyxIFzIHRpZWsgcGFyxIFkxKt0aSBrb25maWd1csSBY2lqYXMgZWxlbWVudGkpIHBhcmFtZXRyaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHZlcnNpamFzIHZpcmtuZXMgbW9kdcS8YSBwYXJhbWV0cmllbSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUga2xhc8STbSBhxKNlbnRhIGludGVyZmVpc2EgcHJlZmVyZW7EjXUgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB2ZXJzaWphcyB2aXJrbmVzIMWhYWJsb25hIHLEq2t1IGtvcHVtYSBtb2R1xLxhIHBhcmFtZXRyaWVtIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrbGFzxJNtIGHEo2VudGEgc2Fza2FybmVzIHByZWZlcmVuxI11IHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHZlcnNpamFzIHRyaWdlcmltIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrbGHFoXUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGtsYXPEk20gYcSjZW50YSBpbnRlcmZlaXNhIHByZWZlcmVuxI11IHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdWZWljIGtvbmZpZ3VyxJN0byBkYXJixKtidSBrYXRyYW0gbm90aWt1bWFtIChrxIEgSW52b2tlcikga2F0cmFpIGtvbmZpZ3VyxJN0YWphaSB0xKttZWvEvGEgcGFrYWxwb2p1bWFtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnQXTEvGF1anUgZ3J1cGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGl6bWFudG90dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBwaWV2aWVub8WhYW5hcyBkYXJixKtidSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMsIGxhaSBpem1hbnRvdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgZWtyxIFudSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgaXptYW50b3R1IElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyBla3LEgW51IGHEo2VudGEgc2Fza2FybsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMsIGxhaSBpem1hbnRvdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbnUga2xpZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGl6bWFudG90dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrb2thIHNrYXTEq2p1bWEgZWtyxIFudSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGl6bWFudG90dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSB0xIFsdW1tYWnFhmFzIGVrcsSBbnUgYcSjZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGl6bWFudG90dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwaWV2aWVub8WhYW5hcyBla3LEgW51IGHEo2VudGEgc2Fza2FybsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgYcSjZW50YSBzYXNrYXJuxJMgaXptYW50b3R1IG1hc3ZlaWRhIElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGVrcsSBbnUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMsIGxhaSBpem1hbnRvdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcmVkacSjxJPFoWFuYXMgZWtyxIFudSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGHEo2VudGEgc2Fza2FybsSTIGl6bWFudG90dSBla3LEgW51IEhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgYcSjZW50YSBzYXNrYXJuxJMgaXptYW50b3R1IGVrcsSBbnUgZHJ1a8SBdCBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ05lcGllY2llxaFhbcSBcyBwcml2aWzEk8SjaWphcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgZHrEk8WhYW5haS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdNZWtsxJN0IGtvbmZpZ3VyxIFjaWphcyB2aWVudW11cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0F1dG9txIF0aXNraSBpZXN0YXRpZXQgS0kgaW5jaWRlbnRhIHN0xIF2b2tsaSwga2FkIGJpxLxldGUgaXIgc2Fpc3TEq3RhIGFyIEtJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0llc3RhdGEgaXp2aWV0b8WhYW5hcyBzdMSBdm9rbGkgYcSjZW50YSBpbnRlcmZlaXNhIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrb3B1bWEgZWtyxIFuxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0llc3RhdGEgaW5jaWRlbnRhIHN0xIF2b2tsaSBhxKNlbnRhIGludGVyZmVpc2Ega29uZmlndXLEgWNpamFzIHZpZW51bWEga29wdW1hIGVrcsSBbsSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RpZWsgcGFyxIFkxKt0YSBzYWl0ZSBpenbEk2xuxJMsIGthcyDEvGF1aiBzYXZpZW5vdCBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgYXIgY2l0dSBvYmpla3R1IGHEo2VudGEgaW50ZXJmZWlzYSBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgdMSBbHVtbWFpxYZhcyBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUsSBZGEgc2FpdGkgaXp2xJNsbsSTLCBsYWkgcGlla8S8xat0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgdsSTc3R1cmVpIGHEo2VudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSxIFkYSBzYWl0aSBpenbEk2xuxJMsIGxhaSBwaWVrxLzFq3R1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSB2xJNzdHVyZWkgYcSjZW50YSBzYXNrYXJuZXMgdMSBbHVtbWFpxYZhcyBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUsSBZGEgc2FpdGkgaXp2xJNsbsSTLCBsYWkgZHrEk3N0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgYcSjZW50YSBzYXNrYXJuZXMgdMSBbHVtbWFpxYZhcyBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdSxIFkYSBzYWl0aSBpenbEk2xuxJMsIGxhaSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2FpdGVzIHRpa3R1IHBhcsSBZMSrdGFzIGvEgSBLb2t1IHNrYXRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1LEgWRhIHNhaXRpIGl6dsSTbG7EkywgbGFpIGR1YmzEk3R1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBhxKNlbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGllayBwYXLEgWTEq3RhIHNhaXRlIGl6dsSTbG7EkywgbGFpIGR1YmzEk3R1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBhxKNlbnRhIHNhc2thcm5lcyB0xIFsdW1tYWnFhmFzIHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1LEgWRhIHNhaXRpIGl6dsSTbG7EkywgbGFpIHJlZGnEo8STdHUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGHEo2VudGEgc2Fza2FybmVzIHTEgWx1bW1hacWGYXMgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGllayBwYXLEgWTEq3RhIHNhaXRlIGl6dsSTbG7EkywgbGFpIGF0Z3JpZXp0b3MgYXRwYWthxLwgYcSjZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHTEgWx1bW1hacWGYXMgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1LEgWRhIHNhaXRpIGl6dsSTbG7EkywgbGFpIGl6ZHJ1a8SBdHUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGHEo2VudGEgc2Fza2FybmVzIHTEgWx1bW1hacWGYXMgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1LEgWRhIHNhaXRpIGl6dsSTbG7EkywgbGFpIHBhbGllbGluxIF0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgYcSjZW50YSBpbnRlcmZlaXNhIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUsSBZGEga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHbEk3N0dXJpIChzYWvEgXJ0b3R1IGFwZ3JpZXp0xIEgc2VjxKtixIEpIGHEo2VudGEgc2Fza2FybsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdOb2tsdXPEk2p1bWEga2F0ZWdvcmlqYSwga2FzIHRpZWsgcsSBZMSrdGEsIGphIG5hdiBpenbEk2zEk3RhIG5ldmllbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgaWRlbnRpZmlrYXRvcnMsIHBpZW3Ek3JhbSwgQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFDEk2Mgbm9rbHVzxJNqdW1hIGlyIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0F1dG9txIF0aXNraSBpZWRhcmJpbmEgQ29uZmlnSXRlbUZldGNoIGludm9rYXRvcnUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaWphIFZpcmtuZXMgdmlya25lcyBpenRlaWtzbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2lqYXMgdmlya25lcyBtb2R1bGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNpamEgVHJpZ2dlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnVmFpIENvbmZpZ0l0ZW1BQ0wgaXpwaWxkaSB2YXIgbm92xJNyc3QsIHDEgXJiYXVkb3Qga2XFoWF0bWnFhsSBIGVzb8WhbyBsYXVrdSBhdGthcsSrYmFzLiBUYXMgdmFyIHV6bGFib3QgdmVpZGxhcHUgaWVsxIFkZXMgbGFpa3UsIGJldCB0YXMgaXIgasSBYXRzbMSTZHosIGphIEFDTE1vZHVsZXMgaXIgasSBaXptYW50byBJVFNNQ29uZmlnSXRlbS0gdW4gRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0vEgWRhIHZpc3DEgXLEq2dhIGluZm9ybcSBY2lqYSBpciBub3LEgWTEq3RhIGdhbHZlbsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2LEgWzEgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWt0xKt2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncGlybXMgcmVwcm9kdWt0xKt2xIEgcGVyaW9kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVrdMSrdnMnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgY29sbGFzICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgY29sbGEgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBjb2xsYXMgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgY29sbGFzICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkgY29sbHUgc3RhdMSrdnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IGNvbGxhcyAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBjb2xsYXMgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxIGNvbGx1IHN0YXTEq3ZzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBjb2xsYXMgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMyBjb2xsdSBwbGF1a3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBjb2xsYXMgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIGNvbGxhcyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgY29sbGFzICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgY29sbGFzICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IGNvbGxhcyAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgY29sbGFzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBjb2xsYXMgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IGNvbGxhcyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgY29sbGFzICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgY29sbGFzICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgY29sbGFzICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgY29sbGFzICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSBjb2xsYXMgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgY29sbGFzICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IGNvbGxhcyAoMjAwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIGNvbGxhcyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IGNvbGxhcyAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IGNvbGxhcyAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgY29sbGFzICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBjb2xsYXMgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgY29sbGFzICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IGNvbGxhcyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBjb2xsYXMgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0dyxIFtYXR2ZWTEq2JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRyZcWhdSBwaWXFocS3aXLFoWFuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9nYWlzIHTEgWxydW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ0llcsSrY2VzIHRpcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdBa3VtdWxhdG9yYSBpZXRpbHDEq2JhIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnQWt1bXVsYXRvcmEgdGlwcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ8SSa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0F1dG9idXNzIHNhc2thcm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnUHJvY2Vzb3JhIGtsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdKYXVkYSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnS2F0cmFzIGdyYWZpc2vEgXMga2FydGVzIGphdWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnS2FydGVzIG51bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0thcsWhdSBsYXPEq3TEgWpzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0thcnRlcyB2ZWlkcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS2xpZW50dSBzZXJ0aWZpa8SBdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnS2xpZW50YSBwcm9ncmFtbWF0xatyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLbGllbnR1IGthdGVnb3JpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnQ2xvY2tyYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdDbG9ja3NwZWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdLb2RhIHBhcmFrc3TEq8WhYW5hcyBzZXJ0aWZpa8SBdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmVuxI11IHTEgWxydW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0tvbnN1bHTEgWNpanUgbMSrZ3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnU2F6aW5pZXRpZXMgYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ1NhemluaWV0aWVzIGFyIGl6cGxhdMSrdMSBanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdLb250ZWluZXJ1IHDEgXJ2YWxkxKtiYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0zEq2d1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ0zEq2d1bWEgdmVpZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdMxKtndW1hIHBlcmlvZHMgbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnTMSrZ3VtYSB0ZXJtacWGxaEgbMSrZHonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnQmV6dmFkdSB0xIFscnVuaXMgKERFQ1QgdMSBbHJ1bmlzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdJem1ha3N1IHZpZW7Eq2JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnTGljZW7EjXUgc2thaXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdJenZlaWRlcyBkYXR1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1BpZWzEgWdvdGFpcyBwbGF1a3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIHJlemVydsSTdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUyBzZXJ2ZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnUsSTxLdpbmEgaXpyYWtzdMSrxaFhbmFzIGRhdHVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnUGFzxat0xKtqdW1hIGRhdHVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnR2FyYW50aWphcyBkYXR1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnSXpkb8WhYW5hcyBkYXR1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0RhcmJ2aXJzbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdEb2t1bWVudHUgcGFyYWtzdMSrxaFhbmFzIHNlcnRpZmlrxIF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kgcGxhdWt0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRS1wYXN0YSBzZXJ0aWZpa8SBdGkgKFMvTUlNRSBzZXJ0aWZpa8SBdGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0RhcmJhIGzEq2d1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdHYWxhIElQIGFkcmVzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0F0YmFsc3RhIGJlaWdhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0RlcsSrZ3VtYSB0ZXJtacWGxaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ8SAcsSTamFpcyBjaWV0YWlzIGRpc2tzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnVWd1bnNtxatyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ1NwYXJhcmFyYXR1IGVuZXLEo2lqYXMgdXpnbGFixIHFoWFuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zvcm1hcyBmYWt0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuxaHEq3plcyBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnQmV6bWFrc2FzIHByb2dyYW1tYXTFq3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ1Zpc3DEgXLEq2dhIGluZm9ybcSBY2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpc2vEgXMga2FydGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaXNrxIEga2FydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdBcGFyYXTFq3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnQXBhcmF0xatyYXMgbW9kZWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdBcGFyYXTFq3JhcyBzdmFycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnQXVzdGnFhmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAgcHJvdG9rb2xzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lkZW50aXTEgXRlcyB1biBwaWVrxLx1dmVzIHDEgXJ2YWxkxKtiYSAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50xIFyYSBudW11cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdJbnZlcnN0bWVudGEgaXptYWtzYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdSxJPEt2luYSBudW11cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUYXN0YXTFq3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCBtb25pdG9ycyAoxaHEt2lkcm8ga3Jpc3TEgWx1IGRpc3BsZWpzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVEIG1vbml0b3JzIChnYWlzbWFzIGRpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdTdGFjaW9uxIFyYWlzIHTEgWxydW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdQb3J0YXTEq3ZhaXMgZGF0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnUGxhdHVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJzEuIHNsxIFuaXM6IGZpemlza2FpcyBzbMSBbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJzIuIHNsxIFuaXM6IGRhdHUgc2FpdGVzIHNsxIFuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJzMuIHNsxIFuaXM6IHTEq2tsYSBzbMSBbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJzMuIHNsxIFuaXM6IHTEq2tsYSBzbMSBbmlzIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnNC4gc2zEgW5pczogdHJhbnNwb3J0YSBzbMSBbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICc1LiBzbMSBbmlzOiBzZXNpamFzIHNsxIFuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnNi4gc2zEgW5pczogUHJlemVudMSBY2lqYXMgc2zEgW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJzcuIHNsxIFuaXM6IGxpZXRvanVtcHJvZ3JhbW11IHNsxIFuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnTm9tYXMgbMSrZ3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpY2VuY2VzIGzEq2d1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpY2VuY2VzIGF0c2zEk2dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpY2VuY2VzIHRpcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0xpY2VuY2VzIHBlcmlvZHMgbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaWNlbmNlcyBkZXLEq2d1bWEgdGVybWnFhsWhIGzEq2R6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXRpamEgZHplbHpzIGZvc2bEgXRhIChMaUZlUE80KSBha3VtdWxhdG9ycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGl0aWphIGpvbnUgKExpLWlvbikgYWt1bXVsYXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdBaXpkZXZ1bWEgbMSrZ3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnQXRyb2Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICfEomVvZ3LEgWZpc2thaXMgZ2FydW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnUmHFvm90xIFqcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTWFrc2ltxIFsxIEgc2xvZHplcyBqYXVkYSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnQXRtacWGYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ0F0bWnFhmFzIHRpcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmkgc3RhdMSrdnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ01vYmlsxIEgdMSBbHJ1xYZhIG51bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbGFpcy9pZXN0csSBZMSBdGFpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdNb2RlxLxhIGFwcmFrc3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ01vbml0b3JhIGl6xaHEt2lydHNwxJNqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdNb25pdG9yYSBpem3Ek3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnUGVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnVMSra2xzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybcSBY2lqYSBwYXIgdMSra2x1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdUxKtrbGEgaW5mb3JtxIFjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdUxKtrbGEgc2zEgW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pxLdlxLxhLWthZG1pamEgKE5pQ2QpIGFrdW11bGF0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmnEt2XEvGEtbWV0xIFsYSBoaWRyxKtkYSAoTmlNSCkgYWt1bXVsYXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnTMSrZ3VtcyBwYXIgaW5mb3JtxIFjaWphcyBuZWl6cGF1xaFhbnUgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdQaWV6xKttamRhdG9ycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ1Byb2Nlc29ydSBza2FpdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnT3BlcmF0xKt2xIFzIGF0bWnFhmFzIG1vZHXEvHUgc2thaXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ0dyYWZpc2tvIGthcsWhdSBza2FpdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQgbW9uaXRvcnMgKG9yZ2FuaXNrxIEgZ2Fpc21hcyBkaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnRGFyYsSrYmFzIGl6bWFrc2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ1Bhc8WrdMSranVtYSBudW11cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdDaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdJemVqYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOIEtPRFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdQYXJ0bmVyxKtiYXMgbMSrZ3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1TEgWxydcWGYSBudW11cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1TEgWxydcWGYSB0aXBzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRml6aXNraWUga29kb2xpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnRW5lcsSjaWphcyBwaWVnxIFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0llZ8SBZMSBdHMgdmlldG7Ekyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnU3RhdMSrdmEgZHppxLx1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdTdGF0xYZ1IHZpZW7Eq2JhcyAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ051bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTSBrYXJ0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMgc2VydGlmaWvEgXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnUMSBcmRvxaFhbmFzIGzEq2d1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWzEq3RhIHTEgWxydW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdIZXJtxJN0aXNraSBub3NsxJNndHMgc3ZpbmEtc2vEgWJlcyAoU0xBKSBha3VtdWxhdG9ycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ1PEk3JpamFzIG51bXVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTZXJ2ZXJhIHByb2dyYW1tYXTFq3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnUGFrYWxwb2p1bXUgbMSrZ3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1Bha2FscG9qdW1hIGJpcmthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ0tvbnRha3RsaWd6ZGFzIHRpcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdQcm9ncmFtbWF0xatyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1NrYcS8cnXFhmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdTxIFrdW1hIElQIGFkcmVzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnVXpnbGFixIHFoWFuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1V6Z2xhYsSBxaFhbmFzIG5vZGFsxKtqdW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnTWVpdGFzdXrFhsSTbXVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnS29wc2F2aWxrdW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnUGzEgW5zIGtsaWVudHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0RpZWdpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ0dyYWZpc2vEgXMga2FydGVzIFJBTSBrb3DEk2phaXMgYXBqb21zIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdLb3DEk2phaXMgb3BlcmF0xKt2xIFzIGF0bWnFhmFzIGFwam9tcyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdTa8SBcmllbmVrcsSBbmEgbW9uaXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3JuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiBrb25jZW50cmF0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIgYXVzdGnFhmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAgdMSBbHJ1bmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJjYW0nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/mk_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om1rX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ9Cc0LDQv9C40YDQsNGa0LUg0LfQsCDQtNC+0LHQuNCy0LDRmtC1INC90LAg0LHQsNGA0LDQvdC40YLQtSDQv9C+0LTQsNGC0L7RhtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAn0JzQsNC/0LjRgNCw0ZrQtSDQt9CwINC/0L7RmNC00L7QstC90Lgg0L7QtNCz0L7QstC+0YAg0L3QsCDQv9C+0LTQsNGC0L7RhtC4JzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0JrQvtC90YTQuNCzINCn0LvQtdC9INCc0LXQvdCw0Z/QvNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ9Cf0YDQvtC80LXQvdC4INC00LXRhNC40L3QuNGG0LjRmNCwINC90LAg0LrQu9Cw0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn0J/RgNC+0LzQtdC90Lgg0LTQtdGE0LjQvdC40YbQuNGY0LAg0L3QsCDQutC70LDRgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ9Ca0L7QvdGE0LjQsyDQp9C70LXQvdC+0LLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn0JrQvtC90YTQuNCzINCn0LvQtdC9JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQsyDQp9C70LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICfQpNC40LvRgtC10YAg0LfQsCDQmtC70LDRgdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9Ce0LTQsdC10YDQuCDQmtC70LDRgdCwINC+0LQg0LvQuNGB0YLQsNGC0LAg0LfQsCDQtNCwINC60YDQtdC40YDQsNGC0LUg0L3QvtCyINCa0L7QvdGE0LjQsyDQp9C70LXQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfQmtC70LDRgdCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSDQmtC+0L3RhNC40LPQp9C70LXQvSBCdWxrIEFjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KDQsNGB0L/QvtGA0LXQtNGD0LLQsNGH0LrQsCDRgdC+0YHRgtC+0ZjQsdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn0KHQvtGB0L7RgtGY0LHQsCDQvdCwINCY0L3RhtC40LTQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn0J/QvtCy0YDQt9C4INGB0L4g0LTRgNGD0LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ9Cd0LXQstCw0LvQuNC00LXQvSDQmtC+0YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDQsdGA0L7RmCDQvdCwINCn0LvQtdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfQkdGA0L7RmNC+0YIg0L3QsCDQtNGA0YPQsyDQmtC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INCn0LvQtdC9INGB0L4g0LvQuNC90Log0YjQuNGA0LjQvdCwLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9CU0LDQu9C4INGB0YLQtSDRgdC40LPRg9GA0L3QuCDQtNC10LrQsCDRgdCw0LrQsNGC0LUg0LTQsCDRmNCwINC40LfQsdGA0LjRiNC10YLQtSDQvtCy0LDQsCDQkNC60YLQuNCy0L3QvtGB0YI/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CY0LzQtdGC0L4g0L3QsCDQvtCy0L7RmCDQutC+0L3RhNC40LMg0YfQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9CY0LzQtdGC0L4g0LUg0LLQtdGc0LUg0LLQviDRg9C/0L7RgtGA0LXQsdCwINC+0LQg0YHRgtGA0LDQvdCwINC90LAg0JrQvtC90YTQuNCz0KfQu9C10L3QvtCy0LjRgtC1INGB0L4g0YHQu9C10LTQvdC+0LIv0YLQtSDQkdGA0L7RmCjQtdCy0LgpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ9CR0YDQvtGYINC90LAg0JLQtdGA0LfQuNGY0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CY0LzQtdGC0L4g0L3QsCDQvtCy0L7RmCDQutC+0L3RhNC40LMg0YfQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfQmNC80LXRgtC+INC1INCy0LXRnNC1INCy0L4g0YPQv9C+0YLRgNC10LHQsCDQvtC0INGB0YLRgNCw0L3QsCDQvdCwINCa0L7QvdGE0LjQs9Cn0LvQtdC90L7QstC40YLQtSDRgdC+INGB0LvQtdC00L3QvtCyL9GC0LUg0JHRgNC+0Zgo0LXQstC4KTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9Ch0L7RgdGC0L7RmNCx0LAg0L3QsCDQoNCw0YHQv9C+0YDQtdC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCY0L3RhtC40LTQtdC90YInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ9Ca0YDQtdC40YDQsNGY0JLRgNC10LzQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfQl9GD0LzQuNGA0LDRmCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICfQmtC+0L3RhNC40LMg0KfQu9C10L3QvtCy0Lgg0L/QviDRgdGC0YDQsNC90LjRhtCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfQn9GA0LXQstCw0YDRg9Cy0LDRmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfQmNGB0YLQviDRgtCw0LrQsCDQsdCw0YDQsNGYINCy0L4g0L/RgNC10YLRhdC+0LTQvdC40YLQtSDQstC10YDQt9C4Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INCn0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0KfQu9C10L0g0JjQvdGE0L7RgNC80LDRhtC40ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfQodC10LPQsNGI0L3QsCDQodC+0YHRgtC+0ZjQsdCwINC90LAg0KDQsNGB0L/QvtGA0LXQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn0KHQtdCz0LDRiNC90LAg0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCY0L3RhtC40LTQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn0J/QvtGB0LvQtdC00L3QviDQv9GA0L7QvNC10L3QtdGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn0J/QvtGB0LvQtdC00L3QviDQv9GA0L7QvNC10L3QtdGC0L4nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICfQotC40L8g0L3QsCDQvtCx0ZjQtdC60YInOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICfQpNC40LvRgtC10YAg0L/QviDRgtC40L8nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn0JrQvtC90YTQuNCz0KfQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn0KDQtdGE0LXRgNC10L3RhtCwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn0J7Qv9C10YDQsNGG0LjRgdC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ9Cf0YDQtdC00YPQv9GA0LXQtNGD0LLQsNGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfQmNC90YbQuNC00LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQoNCw0YHQv9C+0YDQtdC00YPQstCw0YfQutCw0YLQsCDRgdC+0YHRgtC+0ZjQsdCwINC90LAg0L7QstC+0Zgg0LrQvtC90YTQuNCzINGH0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0JjQvdC40LTQtdC90YIg0YHQvtGB0YLQvtGY0LHQsCDQvdCwINC+0LLQvtGYINC60L7QvdGE0LjQsyDRh9C70LXQvSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ9Cd0LXQvNCw0YLQtSDQlNC+0LfQstC+0LvQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn0KLQuNC/INC90LAg0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCg0LDRgdC/0L7RgNC10LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn0KHQtdCz0LDRiNC10L0g0KLQuNC/INC90LAg0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCY0L3RhtC40LTQtdC90YInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn0JjQt9C80LXRk9GDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvQtdC9INCx0YDQvtGYINC90LAg0LXQtNC10L0g0LXQu9C10LzQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn0JjRgdGC0LXRh9C10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ9Ce0LTRgNC20YPQstCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9Cf0LjQu9C+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9Cf0LvQsNC90LjRgNCw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfQn9C+0L/RgNCw0LLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn0J/RgNC10LrQuNC90LDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ9Cf0YDQtdCz0LvQtdC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfQotC10YHRgi9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9Cf0YDQvtCy0LXRgNC4INC30LAg0YPQvdC40LrQsNGC0L3QviDQuNC80LUg0YHQsNC80L4g0LLQviDRgNCw0LzQutC40YLQtSDQvdCwINC40YHRgtCwINCa0L7QvdGE0LjQs9Cn0LvQtdC9INC60LvQsNGB0LAgKFwnY2xhc3NcJykg0LjQu9C4INCz0LvQvtCx0LDQu9C90L4gKFwnZ2xvYmFsXCcpLCDRiNGC0L4g0LfQvdCw0YfQuCDQtNC10LrQsCDRgdC10LrQvtGYINC/0L7RgdGC0L7RmNCw0YfQutC4INCa0L7QvdGE0LjQs9Cn0LvQtdC9INC1INC30LXQvNC10L0g0LLQviDQv9GA0L7RhNC40LvQvtGCINC60L7Qs9CwINGB0LUg0LHQsNGA0LDQsNGCINC00YPQv9C70LjQutCw0YLQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn0JrQvtC90YTQuNCzINCn0LvQtdC90L7QstC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQmtC+0L3RhNC40LMg0YfQu9C10L0g0L3QsNGB0YLQsNC9INC80L7QtNGD0LvQuCDQutC+0Lgg0L7QstC+0LfQvNC+0LbRg9Cy0LDQsNGCINC30LDQv9C40YjRg9Cy0LDQsNGCINC70L7Qs9C+0LLQuCDQstC+INC40YHRgtC+0YDQuNGY0LAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0KfQu9C10L0g0JvQuNC80LjRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn0JrRgNC10LjRgNCw0Zgg0Lgg0LzQtdC90LDRn9C40YDQsNGYINC00LXRhNC40L3QuNGG0LjQuCDQt9CwINCa0L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0KfQu9C10L3QvtCy0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINCR0LDRgNCw0L3QuCDQv9C10YDQvNC40YHQuNC4INC30LAgINC00LAg0LfQtdC80LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC90L7QstC4INC60L7RgNC40YHRgtC10ZjRnNC4INCT0LXQvdC10YDQuNGH0LrQuCDQmNC90YLQtdGA0YTQtdGY0YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINCR0LDRgNCw0L3QuCDQv9C10YDQvNC40YHQuNC4INC30LAgINC00LAg0LfQtdC80LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC90L7QstC4INC60L7RgNC40YHRgtC10ZjRnNC4INCT0LXQvdC10YDQuNGH0LrQuCDQmNC90YLQtdGA0YTQtdGY0YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINCR0LDRgNCw0L3QuCDQv9C10YDQvNC40YHQuNC4INC30LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC90L7QstC4INC60L7RgNC40YHRgtC10ZjRnNC4INCT0LXQvdC10YDQuNGH0LrQuCDQmNC90YLQtdGA0YTQtdGY0YHQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0JHQsNGA0LDQvdC4INC/0LXRgNC80LjRgdC40Lgg0LfQsCAg0LTQsCDQt9C10LzQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L3QvtCy0Lgg0LrQvtGA0LjRgdGC0LXRmNGc0Lgg0JPQtdC90LXRgNC40YfQutC4INCY0L3RgtC10YDRhNC10ZjRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9GA0LXQs9C70LXQtCDQvNC+0LTRg9C7INC30LAg0L/RgNC40LrQsNC3INC90LAg0LzQsNC7INC/0YDQtdCz0LvQtdC0INC90LAg0LrQvtGE0LjQs9GD0YDQsNGG0LjRgdC60LAg0LvRh9C10L0g0LvQuNGB0YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINGA0LXQs9GD0LvQsNGA0L3QuCDQuNC30YDQsNC30Lgg0LjQvdC00LjQstC40LTRg9Cw0LvQvdC+INC30LAg0YHQtdC60L7RmNCwINCa0L7QvdGE0LjQs9Cn0LvQtdC9INC60LvQsNGB0LAg0LfQsCDQtNCwINC/0YDQvtCy0LXRgNC4INCa0L7QvdGE0LjQs9Cn0LvQtdC9INC40LzQtSDQuCDQtNCwINCz0Lgg0L/RgNC40LrQsNC20LUg0LPRgNC10YjQvdC40YLQtSDQutC+0YDQtdGB0L/QvtC90LTQuNGA0LDRh9C60LjRgtC1INC/0L7RgNCw0LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0YHRgtCw0L3QtNCw0YDQtNC10L0g0YHRg9Cx0L7QsdGY0LXQutGCINC30LAg0LrQu9Cw0YHQsNGC0LAgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINCx0YDQvtGYINC90LAg0YDQtdC00LjRhtC4INC30LAgQ0kg0LTQtdGE0LjQvdC40YbQuNGB0LrQuNC+0YIg0YPRgNC10LTQvdC40Log0LLQviDQsNC00LzQuNC9INC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0LvQuNC80LjRgiDQt9CwINCx0LDRgNCw0ZrQsCDQt9CwIEFnZW50SVRTTUNvbmZpZ0l0ZW0g0LXQutGA0LDQvdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQu9C40LzQuNGCINC30LAg0LHQsNGA0LDRmtCwINC30LAgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCDQtdC60YDQsNC90L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC70LjQvNC40YIg0LfQsCDQsdCw0YDQsNGa0LAg0LfQsCBBZ2VudElUU01Db25maWdJdGVtINC10LrRgNCw0L3QvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0LvQuNC80LjRgiDQt9CwINCx0LDRgNCw0ZrQsCDQt9CwIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gg0LXQutGA0LDQvdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC/0YDQuNC60LDQtyDQvdCwINC60L7Qu9C+0L3QuCDQvtC0IENJcyDQstC+INC60L7QvdGE0LjQsyDRh9C70LXQvdC+0YIg0L/RgNC10LPQu9C10LTQvtGCINCy0L4g0LfQsNCy0LjRgdC90L7RgdGCINC+0LQgQ0kg0LrQu9Cw0YHQsNGC0LAuINCh0LXQutC+0Zgg0LLQu9C10Lcg0LzQvtGA0LAg0LTQsCDQuNC80LAg0L/RgNC10YTQuNC60YEg0YHQviDQutC70LDRgdC90L4g0LjQvNC1INC4INC00LLQvtGY0L3QuCDQutC+0LvQvtC90LggKGkuZS4gQ29tcHV0ZXI6OikuINCY0LzQsCDQvdC10LrQvtC70LrRgyBDSS3QkNGC0YDQuNCx0YPRgtC4INC60L7QuCDRgdC1INGH0LXRgdGC0Lgg0YHQviDRgdC40YLQtSBDSXMgKNC/0YDQuNC80LXRgCDQt9CwINC60LvQsNGB0YLQsCBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4g0JfQsCDQv9GA0LjQutCw0Lcg0L3QsCDQuNC00LjQstC40LTRg9Cw0LvQvdC4IENJLUF0dHJpYnV0ZXMg0LrQsNC60L4g0YjRgtC+INGB0LUg0LTQtdGE0LjQvdC40YDQsNC90Lgg0LLQviAgQ0kt0JTQtdGE0LjQvdC40YbQuNGY0LDRgtCwLCDRgdC70LXQtNC90LDQstCwINGI0LXQvNCwINC80L7RgNCwINC00LAg0LHQuNC00LUg0LjRgdC60L7RgNC40YHRgtC10L3QsCAo0L/RgNC40LzQtdGAINC30LAg0LrQu9Cw0YHQsNGC0LAgIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuINCQ0LrQviDQvdC10LzQsCDQstC70LXQtyDQt9CwIENJINC60LvQsNGB0LAsINGC0L7Qs9Cw0Ygg0YHRgtCw0L3QtNCw0YDQtNC90LjRgtC1INC60L7Qu9C+0L3QuCDRgdC1INC/0YDQuNC60LDQttCw0L3QuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDQp9C70LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ9Ch0L7RgdGC0L7RmNCx0LAg0L3QsCDQoNCw0YHQv9C+0YDQtdC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ9Ch0L7RgdGC0L7RmNCx0LAg0L3QsCDQoNCw0YHQv9C+0YDQtdC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ9CU0YPQv9C70LjQutCw0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfQntCy0L7Qt9C80L7QttGD0LLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9IGJ1bGsgYWN0aW9uINC60LDRgNCw0LrRgtC10YDQuNGB0YLQuNC60Lgg0LfQsCDQsNCz0LXQvdGCINC/0YDQtdC00LXQvdC00LXQuyDQt9CwINC00LAg0YDQsNCx0L7RgtC4INGB0L4g0L/QvtCy0LXRmtC1INC+0LQg0LXRhNC10L0g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQstC+INC40YHRgtC+INCy0YDQvNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn0J7QstC+0LfQvNC+0LbRg9Cy0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSBidWxrIGFjdGlvbiDQutCw0YDQsNC60YLQtdGA0LjRgdGC0LjQutC4INGB0LDQvNC+INC30LAg0LPRgNGD0L/QvdC40YLQtSDQu9C40YHRgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAn0JrQvtC90YTQuNCz0KfQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAn0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCY0L3RhtC40LTQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ9Ch0L7RgdGC0L7RmNCx0LAg0L3QsCDQmNC90YbQuNC00LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfQnNC+0LTRg9C7INC30LAg0L/RgNC+0LLQtdGA0LrQsCDQvdCwINC+0LTQs9C+0LLQvtGA0L3QvtGB0YIg0L3QsCDQs9GA0YPQv9CwINC30LAg0LrQu9Cw0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0L/RgNC+0LLQtdGA0LrQsCDQvdCwINC+0LTQvtCz0L7QstGA0L3QvtGB0YIg0L3QsCDQs9GA0YPQv9CwINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfQnNC+0LTRg9C7INC30LAg0LPQtdC90LXRgNC40YDQsNGa0LUgSVRTTSDQutC+0L3RhNC40LMg0YfQu9C10L0g0YHRgtCw0YLQuNGB0YLQuNC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfQn9GA0LXQs9C70LXQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YDQsNGB0L/QvtGA0LXQtCDRgdC+0YHRgtC+0ZjQsdC40YLQtSDQstC+INC/0YDQtdCz0LvQtdC00L7RgiDRgdC+INC+0L/RhtC40LjRgtC1ICDQvdCwINCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINCx0L7RmNCwINC90LAg0YDQsNGB0L/QvtGA0LXQtCDRgdC+0YHRgtC+0ZjQsdC40YLQtSDQstC+INC/0YDQtdCz0LvQtdC00L7RgiDRgdC+INC+0L/RhtC40LjRgtC1ICDQvdCwINCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgNCw0YHQv9C+0YDQtdC0INGB0L7RgdGC0L7RmNCx0LjRgtC1INCy0L4g0L/RgNC10LPQu9C10LTQvtGCINGB0L4g0L7Qv9GG0LjQuNGC0LUgINC90LAg0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDQv9GA0LjQvNC10YAg0LTQvtC30LLQvtC70LjRgtC1INC30LAg0LPRgNGD0L/QuCDQvtC0INCz0LXQvdC10YDQsNC70L3QuCDQutCw0YLQsNC70L7QsyDQsNGC0YDQuNCx0YPRgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQuNGC0LUg0LLQviDQv9GA0LXQs9C70LXQtNC+0YIg0YHQviDQvtC/0YbQuNC40YLQtSAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgNCw0YHQv9C+0YDQtdC0INGB0L7RgdGC0L7RmNCx0LjRgtC1INCy0L4g0L/RgNC10LPQu9C10LTQvtGCINGB0L4g0L7Qv9GG0LjQuNGC0LUgINC90LAg0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGC0YDQsNC90LjQstC4KNCy0L4g0LrQvtC4INC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60LjRgtC1INGH0LvQtdC90L7QstC4INGB0LUg0L/RgNC40LrQsNC20LDQvdC4KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YDQsNGB0L/QvtGA0LXQtCDRgdC+0YHRgtC+0ZjQsdC40YLQtSDQstC+INC/0YDQtdCz0LvQtdC00L7RgiDRgdC+INC+0L/RhtC40LjRgtC1ICDQvdCwINCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgNCw0YHQv9C+0YDQtdC0INGB0L7RgdGC0L7RmNCx0LjRgtC1INCy0L4g0L/RgNC10LPQu9C10LTQvtGCINGB0L4g0L7Qv9GG0LjQuNGC0LUgINC90LAg0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgNCw0YHQv9C+0YDQtdC0INGB0L7RgdGC0L7RmNCx0LjRgtC1INCy0L4g0L/RgNC10LPQu9C10LTQvtGCINGB0L4g0L7Qv9GG0LjQuNGC0LUgINC90LAg0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQv9GA0LXQsdCw0YDRg9Cy0LDRmtC1INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQv9GA0LXQsdCw0YDRg9Cy0LDRmtC1INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQv9GA0LXQsdCw0YDRg9Cy0LDRmtC1INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQt9Cz0L7Qu9C10LzRg9Cy0LDRh9C60Lgg0LXQutGA0LDQvSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCDQtNC+0LTQsNCy0LDRmtC1INC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC10LrRgNCw0L0g0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwINGD0YDQtdC00LggSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCDQuNGB0YLQvtGA0LjRmNCwINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAg0L/RgNC40L3RgiDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KHQtdGC0LjRgNCwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0gYnVsayDQtdC60YDQsNC90L7RgiDQvtC0INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KHQtdGC0LjRgNCwINC40L3RhtC40LTQtdC90YIg0YHQvtGB0YLQvtGY0LHQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0gYnVsayDQtdC60YDQsNC90L7RgiDQvtC0INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0LrQvtC1INC+0LLQvtC30LzQvtC20YPQstCwINC/0L7QstGA0LfRg9Cy0LDRmtC1INGB0L4g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDRgdC+INC00YDRg9CzINC+0LHRmNC10LrRgiDQstC+INC60L7QvdGE0LjQsyDRh9C70LXQvSAg0LfQs9C+0LvQtdC80LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0LrQvtC1INC/0YDQuNGB0YLQsNC/0YPQstCwINCy0L4g0LjRgdGC0L7RgNC40ZjQsNGC0LAg0L3QsCAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQstC+INC60L7QvdGE0LjQsyDRh9C70LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINC70LjQvdC6INCy0L4g0LzQtdC90LjRgtC+INC60L7QtSDQvtCy0L7Qt9C80L7QttGD0LLQsCDQv9GA0LjRgdGC0LDQvyDQtNC+INC40YHRgtC+0YDQuNGY0LDRgtCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQstC+INC60L7QvdGE0LjQsyDRh9C70LXQvSAg0LfQs9C+0LvQtdC80LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0LfQsCDRg9GA0LXQtNGD0LLQsNGa0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INCy0L4g0LfQs9C+0LvQtdC80LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDRgdC+INC00YPQv9C70LjQutCw0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQstC+INC60L7QvdGE0LjQsyDRh9C70LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINC70LjQvdC6INCy0L4g0LzQtdC90LjRgtC+INGB0L4g0LTRg9C/0LvQuNC60LDRgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INCy0L4g0LfQs9C+0LvQtdC80LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDQt9CwINGD0YDQtdC00YPQstCw0ZrQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LLQviDQt9Cz0L7Qu9C10LzQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINCy0L4g0LzQtdC90LjRgtC+INC70LjQvdC60L7RgiDQt9CwINCy0YDQsNGc0LDRmtC1INCy0L4g0LTQtdGC0LDQu9C10L0g0L/QvtCz0LvQtdC0INCy0L4g0LjQvdGC0LXRgNGE0LXRmNGB0L7RgiDQvdCwINCw0LPQtdC90YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINC70LjQvdC6INCy0L4g0LzQtdC90LjRgtC+INC30LAg0L/QtdGH0LDRgtC10ZrQtSDQstC+INC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LfQs9C+0LvQtdC80LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0YHQviDQt9Cz0L7Qu9C10LzRg9Cy0LDRmtC1INC90LAg0LrQvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LLQviAg0LrQvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0L/RgNC10LPQu9C10LQg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAgINC60L7QvdGE0LjQsyDRh9C70LXQvSDQuNGB0YLQvtGA0LjRmNCwICjQstC+INC+0LHRgNCw0YLQtdC9INGA0LXQtNC+0YHQu9C10LQpINCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ9CY0LTQvdC10YLQuNGE0LjQutGD0LLQsNGH0L7RgiDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0sINC/LtGALiAgQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuINCh0YLQsNC90LTQsNGA0LTQvtGCINC1IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn0JrQu9Cw0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAn0JzQtdC90LDRn9C80LXQvdGCINC90LAg0JLRgNC10LzQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfQk9GA0LDQtNC10ZjRnNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfQmNC90YLQtdGA0YTQtdGY0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAn0J/RgNC+0YbQtdGB0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfQoNCw0LHQvtGC0L3QsCDQv9C+0LLRgNGI0LjQvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ9CR0LXRgdC/0LvQsNGC0LXQvSDRgdC+0YTRgtCy0LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn0KLQsNGB0YLQsNGC0YPRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfQm9Cw0L/RgtC+0L8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ9Cc0L7QtNC10LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ9CT0LvRg9GI0LXRhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn0JTRgNGD0LPQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAn0JjQt9C70LXQtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ9Ch0L7QsdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAn0JTQvtCz0L7QstC+0YAg0LfQsCDQndC40LLQviDQvdCwINCj0YHQu9GD0LPQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn0KHRgtCw0L3QtNCw0YDQtNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/ms_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om1zX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ1BlbWV0YWFuIHVudHVrIHBlcm1pbnRhYW4gbWFzdWsgZGF0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdQZW1ldGFhbiB1bnR1ayB0aW5kYWsgYmFsYXMgZGF0YSB5YW5nIGtlbHVhci4nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdQZW5ndXJ1c2FuIENvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnVWJhaCBkZWZpbmlzaSBrZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnVWJhaCBkZWZpbmlzaSBrZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdCYXJhbmdhbiBLb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnQ29uZmlnIEl0ZW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnTWVuYXBpcyBLZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdQaWxpaCBLZWxhcyBkYXJpIHNlbmFyYWkgdW50dWsgbWV3dWp1ZGthbiBQZXJrYXJhIENvbmZpZyBiYXJ1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0tlbGFzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSXRlbUtvbmZpZyBJVFNNIFRpbmRha2FuIFB1a2FsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdLZWFkYWFuIHBlcnR1a2FyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdLZWFkYWFuIGluc2lkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnUGF1dCBrZSBsYWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOb21ib3IgQmFyYW5nYW4gS29uZmlndXJhc2kgVGlkYWsgU2FoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdOb21ib3IgQmFyYW5nYW4gS29uZmlndXJhc2kgbGFpbiB1bnR1ayBkaXBhdXRrYW4gZGVuZ2FuLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ0FuZGEgYmVuYXIgaW5naW4gbWVtYnVhbmcgaXRlbSBjb25maWcgaW5pPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYW1hIGNvbmZpZyBpdGVtIGluaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFtYSBzdWRhaCBkaWd1bmFrYW4gb2xlaCBDb25maWdJdGVtcyBkZW5nYW4gTm9tYm9yKG5vbWJvci1ub21ib3IpIGJlcmlrdXQ6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnQmlsYW5nYW4gdmVyc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ05hbWEgY29uZmlnIGl0ZW0gaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFtYSBzdWRhaCBkaWd1bmFrYW4gb2xlaCBDb25maWdJdGVtcyBkZW5nYW4gTm9tYm9yKG5vbWJvci1ub21ib3IpIGJlcmlrdXQ6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdLZWFkYWFuIFBlcnR1a2FyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdpbnNpZGVuIGtlYWRhYW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdLYW5kdW5nYW4gc2VqYXJhaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ2lwdGEgbWFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdQYW5kYW5nYW4gZGliZXNhcmthbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdJdGVtIGNvbmZpZyBwZXIgaGFsYW1hbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnSmFsYW5rYW4gQ2FyaWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0p1Z2EgbWVuY2FyaSBkYWxhbSB2ZXJzaSBzZWJlbHVtbnlhPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdQZXJrYXJhIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ01ha2x1bWF0IEJhcmFuZ2FuIEtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1BlcnR1a2FyYW4ga2VhZGFhbiBzZW1hc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0luc2lkZW4ga2VhZGFhbiBzZW1hc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnVGVya2luaSBiZXJ1YmFoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1RlcmFraGlyIGRpdWJhaCBvbGVoJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnSmVuaXMgb2JqZWsnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdUYXBpcyBtZW5naWt1dCBqZW5pcyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnQWRha2FoIGFuZGEgaW5naW4gbWVuZXJ1c2thbj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdUaWFkYSBJdGVtSUQgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ1RpZGFrIG1hbXB1IHVudHVrIG1lbWJ1YW5nIGJhaGFzYSAlcyBpdHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdUaWFkYSAlcyBkaWJlcmlrYW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ1RpZGFrIGJvbGVoIG1lbnVuanVra2FuIHNlamFyYWgsIHNlYmFnYWkgdGlhZGEgSXRlbUlEIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ1RpZGFrIGJvbGVoIG1lbnVuanVra2FuIHNlamFyYWgsIHNlYmFnYWkgdGlhZGEgSXRlbUlEIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ1RpZGFrIGJvbGVoIG1lbnVuanVra2FuIHNlamFyYWgsIHNlYmFnYWkgdGlhZGEgSXRlbUlEIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSdWp1a2FuKGVuKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ1RpYWRhICVzIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1RpYWRhIEtlcHV0dXNhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdIYXNpbCBjYXJpYW4gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdBbWFyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbnNpZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdLZWFkYWFuIHBlbmVtcGF0YW4gaXRlbSBpbmkgY29uZmlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnS2VhZGFhbiBpbnNpZGVuIGJhZ2kgY29uZmlnIGl0ZW0gaW5pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnVGlhZGEga2ViZW5hcmFuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdKZW5pcyBQZXJ0dWthcmFuIEtlYWRhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnTnlhdGFrYW4gSmVuaXMgSW5zaWRlbiBTZW1hc2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnQmV0d2Vlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdCaWxhbmdhbiBtYWtzaW11bSBzYXR1IGVsZW1lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdUYW1hdCBUZW1wb2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdwZW55ZWxlbmdnYXJhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnRGlyYW5jYW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ01lbWJhaWtpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdiZXJzYXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ21lbmdrYWppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdVamlhbi9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1NlbWFrIG5hbWEgeWFuZyB1bmlrIHNhaGFqYSBkaSBkYWxhbSBrZWxhcyBDb25maWdJdGVtIHlhbmcgc2FtYSAoXCdrZWxhc1wnKSBhdGF1IGRpIHBlcmluZ2thdCBnbG9iYWwgKFwnZ2xvYmFsXCcpLCB5YW5nIGJlcm1ha3N1ZCBzZXRpYXAgQ29uZmlnSXRlbSBzZWRpYSBhZGEgZGlhbWJpbCBraXJhIGtldGlrYSBtZW5jYXJpIHBlbmR1YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnQmFyYW5nYW4gS29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ1RhbWJhaCBpdGVtIGNvbmZpZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZGl0IGl0ZW0gY29uZmlnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIGFjYXJhIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIHlhbmcgbWVtYmVuYXJrYW4gdW50dWsgbG9nIGtlIHNlamFyYWggZGFsYW0gYW50YXJhIG11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnU2VqYXJhaCBpdGVtIGNvbmZpZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnQ2V0YWsgaXRlbSBjb25maWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnWnVtIGl0ZW0gY29uZmlnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdIYWQgQmFyYW5nYW4gS29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnS29uZmlndXJhc2kgUGVuZ3VydXNhbiBQYW5na2FsYW4gRGF0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0tvbmZpZ3VyYXNpIGl0ZW0gbW9kdWwgcHVrYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyBSb3V0ZXIgY2FyaWFuIGJlbGFrYW5nIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NpcHRhIGRhbiB1cnVzIHRha3JpZmFuIHVudHVrIEJhcmFuZ2FuIEtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGF0YSBhc2FsIGRpZ3VuYWthbiB1bnR1ayBzaWZhdCBiYWdpIHNrcmluIGNhcmlhbiB0aWtldC4gQ29udG9oOiBUaWNrZXRDcmVhdGVUaW1lUG9pbnRGb3JtYXQ9dGFodW47VGlja2V0Q3JlYXRlVGltZVBvaW50U3RhcnQ9VGVyYWtoaXI7VGlja2V0Q3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEYXRhIGFzYWwgZGlndW5ha2FuIHVudHVrIHNpZmF0IGJhZ2kgc2tyaW4gY2FyaWFuIHRpa2V0LiBDb250b2g6IFRpY2tldENyYXRlVGltZVN0YXJ0WWVhcj0yMDEwO1RpY2tldENyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO1RpY2tldENyZWF0ZVRpbWVTdGFydERheT00O1RpY2tldENyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO1RpY2tldENyZWF0ZVRpbWVTdG9wTW9udGg9MTE7VGlja2V0Q3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnVGFrcmlma2FuIFRpbmRha2FuIGRpbWFuYSBidXRhbmcgdGV0YXBhbiBpdHUgYWRhIGRhbGFtIHdpZGdldCBvYmplayBiZXJzYW1idW5nIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFNpbGEgcGFzdGlrYW4geWFuZyBUaW5kYWthbiBpbmkgcGVybHUgZGlkYWZ0YXJrYW4geWFuZyBiZXJpa3V0IGZhaWwtZmFpbCBKUyBkYW4gQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdUYWtyaWZrYW4ga2VpemluYW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbWJ1YW5nIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBtZW5nZ3VuYWthbiBBbnRhcmFtdWthIFVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4ga2ViZW5hcmFuIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5kYXBhdGthbiBiYXJhbmdhbiBrb25maWd1cmFzaSBJVFNNIG1lbmdndW5ha2FuIEFudGFyYSBNdWthIEdlbmVyaWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4ga2ViZW5hcmFuIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5jYXJpIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIElUU00gbWVuZ2d1bmFrYW4gQW50YXJhIE11a2EgR2VuZXJpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZWJlbmFyYW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmRhcGF0a2FuIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIElUU00gbWVuZ2d1bmFrYW4gQW50YXJhIE11a2EgR2VuZXJpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIG1vZHVsIGdhbWJhcmFuIHVudHVrIG1lbnVuanVra2FuIHBhbmRhbmdhbiB5YW5nIGtlY2lsIHNlbmFyYWkgaXRlbSBrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gdW5na2FwYW4gYmlhc2Egc2VjYXJhIGluZGl2aWR1IHVudHVrIHNldGlhcCBrZWxhcyBJdGVtS29uZmlnIHVudHVrIG1lbWVyaWtzYSBuYW1hIEl0ZW1Lb25maWcgZGFuIHVudHVrIG1lbnVuanVra2FuIG1lc2VqIHJhbGF0IHNlcGFkYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gc2lmYXQgdGlrZXQgYXNhbCB1bnR1ayBhdHVyYW4gdGlrZXQgZGFsYW0gaGFzaWwgcGVuY2FyaWFuIHRpa2V0IGRhcmkgcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHNpZmF0IHRpa2V0IGFzYWwgdW50dWsgYXR1cmFuIHRpa2V0IGRhbGFtIGhhc2lsIHBlbmNhcmlhbiB0aWtldCBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gc2lmYXQgdGlrZXQgZGVmYXVsdCB1bnR1ayBwZW5na2VsYXNhbiB0aWtldCBkYWxhbSBoYXNpbCBjYXJpYW4gdGlrZXQgb3BlcmFzaSBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gdHVydXRhbiB0aWtldCBhc2FsIGRhbGFtIGhhc2lsIGNhcmlhbiB0aWtldCBkYXJpIHBhcGFyYW4gZWplbi4gQXRhczogeWFuZyBsYW1hIGRpIGF0YXMuIEJhd2FoOiB5YW5nIHRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiB0dXJ1dGFuIHRpa2V0IGFzYWwgZGFsYW0gaGFzaWwgY2FyaWFuIGRhcmkgcGFwYXJhbiBwZWxhbmdnYW4uIEF0YXM6IHlhbmcgbGFtYSBkaSBhdGFzLiBCYXdhaDogeWFuZyB0ZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBhcmFoYW4gdGlrZXQgZGVmYXVsdCB1bnR1ayBwZW5na2VsYXNhbiB0aWtldCBkYWxhbSBoYXNpbCBjYXJpYW4gdGlrZXQgb3BlcmFzaSBpbmkuIEF0YXM6IFRlcnR1YSBkaSBhdGFzLiBCYXdhaDogVGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gc2lmYXQgcGVuY2FyaWFuIHRpa2V0IHlhbmcgZGl0dW5qdWsgeWFuZyBhc2FsIHVudHVrIHNrcmluIGNhcmlhbiB0aWtldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBkZWZhdWx0IHlhbmcgZGl0dW5qdWtrYW4gdGlrZXQgc2lmYXQgcGVuY2FyaWFuIHNrcmluIGNhcmlhbiB0aWtldC4gQ29udG9oOiAiVXRhbWEiIG1lc3RpIG1lbXB1bnlhaSBuYW1hIG1lZGFuIGRpbmFtaWsgZGFsYW0ga2VzIGluaSBcJ1hcJywgIkthbmR1bmdhbiIgbWVzdGkgbWVtcHVueWFpIG5pbGFpIG1lZGFuIGRpbmFtaWsgYmVyZ2FudHVuZyBrZXBhZGEgamVuaXMgTWVkYW4gRGluYW1paywgVGVrczogXCd0ZWtzXCcsIGphdHVoIHR1cnVuOiBcJzFcJywgVGFyaWtoL01hc2E6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXIgPSAxOTc0OwpTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLVN1Ym9iamVjdCBkZXIgS2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHRpbmdnaSB1bnR1ayBrb21wb25lbiBlZGl0b3IgdGVrcyBrYXlhIHVudHVrIHNrcmluIGluaS4gTWFzdWtrYW4gbm9tYm9yIChwaWtzZWwpIGF0YXUgbmlsYWkgcGVyYXR1cyAocmVsYXRpZikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gYmlsYW5nYW4gYmFyaXMgdW50dWsgZWRpdG9yIGRlZmluaXNpIENJIGRhbGFtIGFudGFyYSBtdWthIGFkbWluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdUYWtyaWZrYW4gc3VzdW5hbiBrZWFkYWFuIGluc2lkZW4gZGFyaXBhZGEgdGluZ2dpIChjdGguIGtyaXRpa2FsKSBrZSByZW5kYWggKGN0aC4gZnVuZ3NpYW4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ1Rha3JpZmthbiBrZWFkYWFuIHBlbmVtcGF0YW4geWFuZyByZWxldmVuIGRpbWFuYSB0aWtldCBiZXJzYW1idW5nIGJvbGVoIG1lbmplamFza2FuIHN0YXR1cyBiYWdpIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBoYWQgY2FyaWFuIHVudHVrIHNrcmluIEl0ZW1Lb25maWdJVFNNQWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gaGFkIGNhcmlhbiB1bnR1ayBza3JpbiBDYXJpYW5JdGVtS29uZmlnSVRTTUFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGhhZCBjYXJpYW4gdW50dWsgc2tyaW4gSXRlbUtvbmZpZ0lUU01BZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBoYWQgY2FyaWFuIHVudHVrIHNrcmluIENhcmlhbkl0ZW1Lb25maWdJVFNNQWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBydWFuZ2FuIGRpdHVuanVra2FuIENJcyBkYWxhbSBwYW5kYW5nYW4gcGF1dGFuIGphZHVhbCBrb21wbGVrcywgYmVyZ2FudHVuZyBrZXBhZGEga2VsYXMgQ0kgLiBTZXRpYXAgcGVueWVydGFhbiBoZW5kYWtsYWggZGltdWxha2FuIGRlbmdhbiBuYW1hIGtlbGFzIGRhbiB0aXRpayBiZXJ0aW5kaWggZHVhIChpYWl0dSBLb21wdXRlcjo6KS4gVGVyZGFwYXQgYmViZXJhcGEgU2lmYXQtc2lmYXQtQ0kgeWFuZyBzYW1hIGtlcGFkYSBzZW11YSBDSXMgKGNvbnRvaCB1bnR1ayBrZWxhcyBLb21wdXRlcjpLb21wdXRlcjo6TmFtYSwgS29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgS29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBVbnR1ayBtZW51bmp1a2thbiBzaWZhdCBpbmRpdmlkdSBDSSBzZWJhZ2FpbWFuYSB5YW5nIGRpdGFrcmlma2FuIGRhbGFtIERlZmluaXNpLUNJLCBza2ltIGJlcmlrdXQgbWVzdGkgZGlndW5ha2FuIChjb250b2ggdW50dWsga2VsYXMgS29tcHV0ZXIpOiBLb21wdXRlcjo6aGFyZGRpc2s6OjEsIEtvbXB1dGVyOjpoYXJkZGlzazo6MTo6S2FwYXNpdGk6OjEsIGtvbXB1dGVyOjpoYXJkZGlzazo6MiwgS29tcHV0ZXI6OmhhcmRkaXNrOjoyOjpLYXBhc2l0aTo6MS4gSmlrYSB0aWFkYSBwZW55ZXJ0YWFuIHVudHVrIGtlbGFzIENJLCBtYWthIHJ1YW5nYW4gZGVmYXVsdCBkaXBhcGFya2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZiBiYXJhbmdhbiBtYW5hIGJvbGVoIGRpZGFwYXRpIHVudHVrIFwnVGluZGFrYW5cJyBkaSBwZXJpbmdrYXQga2V0aWdhIHN0cnVrdHVyIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gYmFyYW5nYW4gbWFuYSB5YW5nIHRlcmRhcGF0IHBhZGEgdGFoYXAgcGVydGFtYSBzdHJ1a3R1ciBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBiYXJhbmdhbiBtYW5hIHlhbmcgdGVyZGFwYXQgcGFkYSB0YWhhcCBrZWR1YSBzdHJ1a3R1ciBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ1Rha3JpZmthbiBqZW5pcyBzYW1idW5nYW4geWFuZyBtYW5hIChkaW5hbWFrYW4gZGFyaXBhZGEgcGVyc3Bla3RpZiB0aWtldCkgYm9sZWggbWVuamVqYXNrYW4gc3RhdHVzIGJhZ2kgc2F0dSBzYW1idW5nYW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnVGFrcmlma2FuIGplbmlzIHRpa2V0IHlhbmcgbWFuYSBib2xlaCBtZW5qZWphc2thbiBzdGF0dXMgYmFnaSBzYXR1IHNhbWJ1bmdhbiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1BlcmthcmEga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdQZW5lbXBhdGFuIEtlYWRhYW4gV2FybmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0tlYWRhYW4gUGVydHVrYXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdHYW5kYWthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gYmlkYW5nIHRhanVrIGRhbGFtIHNrcmluIGJpZGFuZyBJVFNNIHRhbWJhaGFuIGJhZ2kgYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gYmlkYW5nIHRhanVrIGRhbGFtIHNrcmluIGJpZGFuZyBJVFNNIHRhbWJhaGFuIGJhZ2kgYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGJpZGFuZyB0YWp1ayBkYWxhbSBza3JpbiBiaWRhbmcgSVRTTSB0YW1iYWhhbiBiYWdpIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ01lbWJvbGVoa2FuIGNpcmkgdGluZGFrYW4gcHVrYWwgaXRlbSBrb25maWd1cmFzaSB1bnR1ayBmcm9udGVuZCBlamVuIHVudHVrIGJla2VyamEgcGFkYSBsZWJpaCBkYXJpcGFkYSBzYXR1IGl0ZW0ga29uZmlndXJhc2kgcGFkYSBzYXR1IG1hc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdNZW1ib2xlaGthbiBjaXJpIGl0ZW0ga29uZmlndXJhc2kgdGluZGFrYW4gcHVrYWwgaGFueWEgdW50dWsga3VtcHVsYW4geWFuZyBkaXNlbmFyYWlrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2RlbCBhY2FyYSB1bnR1ayBtZW55ZWRpYWthbiBzdGF0dXMtaXRlbWNvbmZpZyBhdGFzIHNhbWJ1bmdhbi1pdGVtY29uZmlnLXRpa2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdQZW5kYWZ0YXJhbiBtb2R1bCBHZW5lcmljSW50ZXJmYWNlIHVudHVrIGxhcGlzYW4gcGVuY2V0dXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUGVuZGFmdGFyYW4gbW9kdWwgR2VuZXJpY0ludGVyZmFjZSB1bnR1ayBsYXBpc2FuIHBlbmNldHVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdQZW5kYWZ0YXJhbiBtb2R1bCBHZW5lcmljSW50ZXJmYWNlIHVudHVrIGxhcGlzYW4gcGVuY2V0dXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdwYW5kYW5nYW4gaXRlbSBjb25maWcgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnaW5zaWRlbiBrZWFkYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdpbnNpZGVuIGtlYWRhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0p1bWxhaCB0aWtldCBtYWtzaW11bSB1bnR1ayBkaXBhbWVya2FuIGRpIGtlcHV0dXNhbiBvcGVyYXNpIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCB1bnR1ayBtZW55ZW1hayBrdW1wdWxhbiBiZXJ0YW5nZ3VuZ2phd2FiIHVudHVrIGtlbGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsIHVudHVrIG1lbnllbWFrIGt1bXB1bGFuIGJlcnRhbmdndW5namF3YWIgdW50dWsgaXRlbSBrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bCB1bnR1ayBtZW5qYW5hIHN0YXRpc3RpayBrb25maWcgaXRlbSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCB0aWtldCB5YW5nIGFrYW4gZGlwYW1lcmthbiBkYWxhbSBzZXRpYXAgaGFsYW1hbiBkYXJpIGhhc2lsIGNhcmlhbiBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0p1bWxhaCB0aWtldCB5YW5nIGFrYW4gZGlwYW1lcmthbiBkYWxhbSBzZXRpYXAgaGFsYW1hbiBkYXJpIGhhc2lsIGNhcmlhbiBkYWxhbSBwYXBhcmFuIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnUGFuZGFuZ2FuIGtlc2VsdXJ1aGFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayB3YXJuYSBrZWFkYWFuIG1lbmdhdHVyIGtlZHVkdWthbiBkYWxhbSBwYXBhcmFuIHBpbGloYW4gZGFyaSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGNvbnRvaCBrdW1wdWxhbiB5YW5nIGRpYmVuYXJrYW4gcGFkYSBjaXJpLWNpcmkga2F0YWxvZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsga2VhZGFhbiBtZW5nYXR1ciBrZWR1ZHVrYW4gZGFsYW0gcGFwYXJhbiBwaWxpaGFuIGRhcmkgcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG11a2Egc3VyYXQgKGRpIG1hbmEgaXRlbSBrb25maWd1cmFzaSBkaXR1bmp1a2thbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBrZWFkYWFuIG1lbmdhdHVyIGtlZHVkdWthbiBkYWxhbSBwYXBhcmFuIHBpbGloYW4gZGFyaSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdNZWxha3VrYW4gdGluZGFrYW4geWFuZyB0ZWxhaCBkaWtvbmZpZ3VyYXNpIHVudHVrIHNldGlhcCBhY2FyYSAoc2ViYWdhaSBwZW5jZXR1cykgdW50dWsgc2V0aWFwIFdlYnNlcnZpY2UgeWFuZyB0ZWxhaCBkaWtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIGNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBjYXJpYW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBjYXJpYW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiB6dW0gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiB0YW1iYWggaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gZWRpdCBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBzZWphcmFoIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBjZXRhayBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnS2Vpc3RpbWV3YWFuLWtlaXN0aW1ld2FhbiBkaWtlaGVuZGFraSB1bnR1ayBtZW1hZGFta2FuIGJhcmFuZy1iYXJhbmcgY29uZmlnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0NhcmkgYmFyYW5nLWJhcmFuZyBjb25maWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGtlYWRhYW4gaW5zaWRlbiBiYWdpIENJIHNlY2FyYSBhdXRvbWF0aWsgYXBhYmlsYSBzdWF0dSBUaWtldCBkaXNhbWJ1bmdrYW4ga2VwYWRhIHN1YXR1IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldCBrZWFkYWFuIHBlbmVtcGF0YW4gZGFsYW0gc2tyaW4gcHVrYWwgaXRlbSBrb25maWd1cmFzaSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZXQga2VhZGFhbiBpbnNpZGVuIGRhbGFtIHNrcmluIHB1a2FsIGl0ZW0ga29uZmlndXJhc2kgYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB5YW5nIG1lbWJvbGVoa2FuIG1lbmdodWJ1bmdrYW4gaXRlbSBrb25maWd1cmFzaSBkZW5nYW4gb2JqZWsgbGFpbiBkYWxhbSBwYW5kYW5nYW4genVtIGl0ZW0ga29uZmlnIGJhZ2kgYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUdW5qdWsgcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgbWVuZ2Frc2VzIHNlamFyYWggaXRlbSBrb25maWd1cmFzaSBkaSBkYWxhbSBnYW1iYXJhbiBrZXNlbHVydWhhbiBpdGVtIGtvbmZpZ3VyYXNpIGFudGFyYSBtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbmdha3NlcyBzZWphcmFoIGl0ZW0ga29uZmlndXJhc2kgZGFsYW0gcGFuZGFuZ2FuIHp1bSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHNhdHUgc2FtYnVuZ2FuIGtlcGFkYSBtZW51IHVudHVrIG1lbWFkYW0gc2F0dSBiYXJhbmcga29uZmlndXJhc2kgIGRhbGFtIHBhbmRhbmdhbiB6dW1ueWEgZGFyaXBhZGEgYW50YXJhbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVHVuanVrIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbnlhbGluIGl0ZW0ga29uZmlndXJhc2kgZGkgZGFsYW0gZ2FtYmFyYW4ga2VzZWx1cnVoYW4gaXRlbSBrb25maWd1cmFzaSBhbnRhcmEgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBtZW55YWxpbiBiYXJhbmdhbiBrb25maWd1cmFzaSBkYWxhbSBwYW5kYW5nYW4genVtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBlZGl0IGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIGRhbGFtIHBhbmRhbmdhbiB6dW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ21lbnVuanVra2FuIHN1YXR1IHNhbWJ1bmdhbiBwYWRhIG1lbnUgdW50dWsga2VtYmFsaSBkYWxhbSB6b29tIGl0ZW0ga29uZmlndXJhc2kgZGFyaXBhZGEgYW50YXJhIG11a2EgYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbmNldGFrIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIGRhbGFtIHBhbmRhbmdhbiB6dW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUdW5qdWsgcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgenVtIGtlIGRhbGFtIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIGRpIGRhbGFtIGdhbWJhcmFuIGtlc2VsdXJ1aGFuIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIGFudGFyYSBtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUdW5qdWsgc2VqYXJhaCBiYXJhbmdhbiBrb25maWcgKHVydXRhbiB0ZXJiYWxpaykgZGFsYW0gYW50YXJhIG11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdQZW5nZWNhbSB1bnR1ayBpdGVtIGtvbmZpZ3VyYXNpLCBjb250b2g6IENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBEZWZhdWx0IGlhbGFoIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAna2VsYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ01hc2EgUGVyYWthdW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnUGVudGFkYmlyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0Jhbmd1bmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdQYXBhcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdKdXJ1dGVrbmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICd0ZXRpa3VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdsYWluLWxhaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ091dHB1dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0JpbGlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnVGFoYXAgUGVyc2V0dWp1YW4gUGVya2hpZG1hdGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdQaWF3YWlhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/nb_NO_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5iX05PX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lcmVsbGUgZHJpZnRzZGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnSW5uc3RpbGxpbmdlciBmb3IgaW5ua29tbWVuZGUgZm9yZXNww7hyc2Vsc2RhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdJbm5zdGlsbGluZ2VyIGZvciB1dGfDpWVuZGUgc3ZhcmRhdGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdBZG1pbmlzdHJhc2pvbiBhdiBrb25maWd1cmFzam9uc2VuaGV0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdFbmRyZSBrbGFzc2VkZWZpbmlzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdFbmRyZSByb2xsZWRlZmluaXNqb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQta2xhc3NlcGFra2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnSGVyIGthbiBkdSBpbXBvcnRlcmUgUmVhZHkySW1wb3J0LWtsYXNzZXBha2tlciBzb20gdmlzZXIgZGUgdmFubGlnc3RlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVuZSB2w6VyZS4gVsOmciBvcHBtZXJrc29tIHDDpSBhdCBkZXQga2FuIHbDpnJlIG7DuGR2ZW5kaWcgbWVkIHl0dGVybGlnZXJlIGtvbmZpZ3VyYXNqb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ09wcGRhdGVyIGVrc2lzdGVyZW5kZSBlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0ZXIgUmVhZHkyQWRvcHQta2xhc3NlcGFra2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnS29uZmlndXJhc2pvbnNlbmhldHNrbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ3VyZXJpbmdzZWxlbWVudGV0cyByb2xsZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWd1cmFzam9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciBmb3Iga2xhc3Nlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdWZWxnIGVuIGtsYXNzZSBmcmEgbGlzdGVuIGZvciDDpSBvcHByZXR0ZSBlbiBueSBrb25maWd1cmFzam9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc3NlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnTWFzc2VyZWRpZ2VyaW5nIGF2IGtvbmZpZ3VyYXNqb25zZW5oZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnUHJvZHVrc2pvbnNzZXR0aW5nc3RpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnSGVuZGVsc2VzdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnS29ibGUgdGlsIGVuIGFubmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdVZ3lsZGlnIGtvbmZpZ3VyYXNqb25zZWxlbWVudG51bW1lciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnTnVtbWVyZXQgcMOlIGV0IGFubmV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBzb20gc2thbCBrb2JsZXMgdGlsLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ1ZpbCBkdSB2aXJrZWxpZyBmamVybmUgZGVubmUga29uZmlndXJhc2pvbnNlbmhldGVuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYXZuZXQgdGlsIGRlbm5lIGtvbmZpZ3VyYXNqb25zZW5oZXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmF2bmV0IGVyIGFsbGVyZWRlIGkgYnJ1ayBhdiBDb25maWdJdGVtcyBtZWQgZsO4bGdlbmRlIG51bW1lcjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWZXJzam9uc251bW1lciBmb3IgZGV0dGUga29uZmlndXJhc2pvbnNlbGVtZW50ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdWZXJzam9uc251bW1lcmV0IGVyIGFsbGVyZWRlIGkgYnJ1ayBhdiBDb25maWdJdGVtcyBtZWQgZsO4bGdlbmRlIG51bW1lcjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1Byb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0hlbmRlbHNlc3RpbHN0YW5kJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpZW4gdGlsIGtvbmZpZ3VyYXNqb25zZW5oZXRlbjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yaWtrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdPcHByZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnWm9vbSB2aXNuaW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ3VyYXNqb25zZW5oZXRlciBwZXIgc2lkZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnSW5nZW4gZGF0YSBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXQgZnVubmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlbGcgZGV0dGUga29uZmlndXJhc2pvbnNlbGVtZW50ZXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdVdGbDuHIgc8O4a2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ09nc8OlIHPDuGtlIGkgdGlkbGlnZXJlIHZlcnNqb25lcj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0R5YmRlbml2w6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tIGlubi91dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdNYWtzIGxlbmtlbml2w6UgbsOlZGQgZm9yIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS29uZmlndXJhc2pvbnNlbmhldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdPcHBseXNuaW5nZXIgb20ga29uZmlndXJhc2pvbnNlbmhldGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ07DpXbDpnJlbmRlIHByb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnTsOldsOmcmVuZGUgaGVuZGVsc2VzdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnU2lzdCBlbmRyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnU2lzdCBlbmRyZXQgYXYnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdEaW5lIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0tc8O4ayc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnT2JqZWt0dHlwZSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJ0ZpbHRyZXIgdXQgZnJhIHR5cGUnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdGw7hsZ2VuZGUga2xhc3NlciB2aWwgYmxpIGltcG9ydGVydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdGw7hsZ2VuZGUgcm9sbGVyIHZpbCBibGkgaW1wb3J0ZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1bDpnIgb3BwbWVya3NvbSBww6UgYXQgb2dzw6UgdGlsc3ZhcmVuZGUgZHluYW1pc2tlIGZlbHQgb2cgR2VuZXJhbENhdGFsb2cta2xhc3NlciBibGlyIG9wcHJldHRldCwgb2cgYXQgZGUgaWtrZSBmamVybmVzIGF1dG9tYXRpc2suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnw5huc2tlciBkdSDDpSBmb3J0c2V0dGU/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ1RyZW5nZXIgZWtzZW1wZWxrbGFzc2VyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbmlzam9uZW4gZXIgaW5nZW4gZ3lsZGlnIFlBTUwtaGFzaC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdPdmVyc2lrdDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0luZ2VuIENvbmZpZ0l0ZW1JRCBlciBvcHBnaXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0R1IHRyZW5nZXIgbWluc3QgZXR0IHZhbGd0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdEdSBoYXIgaWtrZSBza3JpdmV0aWxnYW5nIHRpbCBkZXR0ZSBrb25maWd1cmFzam9uc2VsZW1lbnRldDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0luZ2VuIGRlZmluaXNqb24gYmxlIGRlZmluZXJ0IGZvciBrbGFzc2VuICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnS29uZmlndXJlcmluZ3NlbGVtZW50ZXQgIiVzIiBibGUgaWtrZSBmdW5uZXQgaSBkYXRhYmFzZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnS3VubmUgaWtrZSBzbGV0dGUga29uZmlndXJhc2pvbnNlbGVtZW50LUlEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnSW5nZW4gdmVyc2pvbiBmdW5uZXQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZW4gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBlbGxlciBDbGFzc0lEIGVyIG9wcGdpdHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdJbmdlbiB0aWxnYW5nIGVyIGdpdHQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0thbiBpa2tlIHZpc2UgaGlzdG9yaWtrLCBpbmdlbiBDb25maWdJdGVtSUQgZXIgb3BwZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gaWtrZSB2aXNlIGhpc3RvcmlraywgaW5nZW4gdGlsZ2FuZ3NyZXR0aWdoZXRlciBnaXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTnl0dCBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ055IHZlcnNqb24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ09wcGRhdGVyaW5nIGF2IGRpc3RyaWJ1c2pvbnNzdGF0dXMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdIZW5kZWxzZXNzdGF0dXMgb3BwZGF0ZXJ0IChueT0lcywgZ2FtbWVsPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBzbGV0dGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGVua2UgdGlsICVzICh0eXBlPSVzKSBsYWd0IHRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnS29ibGluZyB0aWwgJXMgKHR5cGU9JXMpIHNsZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW0tZGVmaW5pc2pvbiBvcHBkYXRlcnQgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hdm4gb3BwZGF0ZXJ0IChueT0lcywgZ2FtbWVsPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnV0dCAlcyBvcHBkYXRlcnQgZnJhICIlcyIgdGlsICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2pvbiAlcyBzbGV0dGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0luZ2VuIENvbmZpZ0l0ZW1JRCBlbGxlciBWZXJzaW9uSUQgZXIgb3BwZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnS2FuIGlra2UgdmlzZSBrb25maWd1cmFzam9uc2VsZW1lbnRldCwgaW5nZW4gdGlsZ2FuZ3NyZXR0aWdoZXRlciBnaXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBibGUgaWtrZSBmdW5uZXQgaSBkYXRhYmFzZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdLb25maWd1cmFzam9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdza3JldmV0IHV0IGF2ICVzIHDDpSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJhbnNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnVWd5bGRpZyBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0luZ2VuIENsYXNzSUQgZXIgb3BwZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdJbmdlbiB0aWxnYW5nc3JldHRpZ2hldGVyIGZvciBkZW5uZSBrbGFzc2VuIGdpdHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdJbmdlbiByZXN1bHRhdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnU8O4a2VyZXN1bHRhdGVyIGZvciBrb25maWd1cmVyaW5nc2VsZW1lbnRlcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnS2FuIGlra2UgdmlzZSBlbGVtZW50ZXQsIGluZ2VuIHRpbGdhbmdzcmV0dGlnaGV0ZXIgZm9yIENvbmZpZ0l0ZW0gZXIgZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBibGUgaWtrZSBmdW5uZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ0luZ2VuIHZlcnNqb25lciBmdW5uZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2FkdmFyc2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaGVuZGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1Byb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCBmb3IgZGVubmUga29uZmlndXJhc2pvbnNlbmhldGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSGVuZGVsc2VzdGlsc3RhbmRlbiBmb3IgZGVubmUga29uZmlndXJhc2pvbnNlbmhldGVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnSW5nZW4gdGlsbGF0ZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIgdWd5bGRpZyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1PDuGtlcGFyYW1ldGVyZSB1Z3lsZGlnZSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdWaXN0ZSBrb25maWd1cmFzam9uc2VsZW1lbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUeXBlIHByb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdOw6V2w6ZyZW5kZSB0eXBlIGhlbmRlbHNlc3RpbHN0YW5kJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ01lbGxvbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS2xhc3NlYmVncmVuc25pbmdlciBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZlbGcgw6luIGVsbGVyIGZsZXJlIGtsYXNzZXIgZm9yIMOlIGJlZ3JlbnNlIHZhbGdiYXJlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2ViZWdyZW5zbmluZ2VyIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1ZlbGcgw6luIGVsbGVyIGZsZXJlIGtsYXNzZXIgZm9yIMOlIGJlZ3JlbnNlIHZhbGdiYXJlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pc2sgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXNrICh2ZXJzam9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXBlIGxlbmtlaGVudmlzbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdPbSBkZW5uZSBrb2JsaW5nZW4gZ2plbGRlciBDb25maWdJdGVtIGVsbGVyIGRlbiBzdGF0aXNrZSB2ZXJzam9uZW4gYXYgcmVmZXJhbnNlb2JqZWt0ZXQuIEJlcmVnbmluZyBhdiBnamVsZGVuZGUgaGVuZGVsc2Vzc3RhdHVzIHV0ZsO4cmVzIGJhcmUgcMOlIGR5bmFtaXNrZSBrb2JsaW5nZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnVmVsZyBhdHRyaWJ1dHRldCBzb20ga29uZmlndXJhc2pvbnNlbGVtZW50ZW5lIHNrYWwgc8O4a2VzIGV0dGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQmFzaXNzdHJ1a3R1cmVuIGVyIGlra2UgZ3lsZGlnLiBPcHBnaSBlbiBoYXNoIG1lZCBkYXRhIGkgWUFNTC1mb3JtYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnRGV0IGVyIG7DuGR2ZW5kaWcgw6Ugc3RhcnRlIFlBTUwtc3RyZW5nZW4gbWVkIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ0t1bm5lIGlra2UgcmVuc2UgdGFiZWxsZW4gY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnSW5nZW4gcmVsZXZhbnRlIGR5bmFtaXNrZSBmZWx0IGJsZSBmdW5uZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdLdW5uZSBpa2tlIHNldHRlIGlubiBpIHRhYmVsbGVuIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnU2F0dGUgaW5uIDAgcmFkZXIgaSB0YWJlbGxlbiBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWFrcy4gYW50YWxsIGF2IGV0dCBlbGVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9ydC9la3Nwb3J0IGF2IHZlZGxlZ2cgKHNvbSBzaXN0ZSBvcHBmw7hyaW5nIHBlciBsaW5qZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzam9uc3N0cmVuZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdGZWlsIHZlZCBzeW5rcm9uaXNlcmluZyBhdiBkZWZpbmlzam9uZW5lLiBWZW5ubGlnc3Qgc2pla2sgbG9nZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ0R1IGhhciBJVFNNQ29uZmlnSXRlbS1kZWZpbmlzam9uZXIgc29tIGlra2UgZXIgc3lua3JvbmlzZXJ0LiBWZW5ubGlnc3QgZGlzdHJpYnVlciBlbmRyaW5nZW5lIGkgZGUgZHluYW1pc2tlIGZlbHRlbmUgaSBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1V0Z8OldHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdWZWRsaWtlaG9sZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFubGFndCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBhcmFzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdVdGZhc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ0V2YWx1ZXJpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvS3ZhbGl0ZXRza29udHJvbGwnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ092ZXJzaWt0IG9nIGJla3JlZnRlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGVyZSBrbGFzc2VyL3JvbGxlciBvZyB0aWxow7hyZW5kZSBmZWx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnRGV0IG9wcHN0b2QgZW4gZmVpbCB1bmRlciBrbGFzc2VpbXBvcnRlbi4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFNranVsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gVmlzdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVGlsbGF0ZXIgdXR2aWRlZGUgc8O4a2ViZXRpbmdlbHNlciBpIGtvbmZpZ3VyYXNqb25zb2JqZWt0c8O4ayBpIGFnZW50Z3JlbnNlc25pdHRldC4gTWVkIGRlbm5lIGZ1bmtzam9uZW4ga2FuIGR1IGYuZWtzLiBzw7hrZSBldHRlciBuYXZuIHDDpSBrb25maWd1cmFzam9uc2VsZW1lbnRlciBtZWQgZGVubmUgdHlwZW4gYmV0aW5nZWxzZXIgc29tICIoKm7DuGtrZWwxKiYmKm7DuGtrZWwyKikiIGVsbGVyICIoKm7DuGtrZWwxKnx8Km7DuGtrZWwyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdUaWxsYXRlciB1dHZpZGVkZSBzw7hrZWJldGluZ2Vsc2VyIGkga29uZmlndXJlcmluZ3NlbGVtZW50LXPDuGsgaSBrdW5kZWdyZW5zZXNuaXR0ZXQuIE1lZCBkZW5uZSBmdW5rc2pvbmVuIGthbiBkdSBmLmVrcy4gc8O4a2UgZXR0ZXIga29uZmlndXJhc2pvbnNlbGVtZW50bmF2biBtZWQgZGVubmUgdHlwZW4gYmV0aW5nZWxzZXIgc29tICIoKm7DuGtrZWwxKiYmKm7DuGtrZWwyKikiIGVsbGVyICIoKm7DuGtrZWwxKnx8Km7DuGtrZWwyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdUaWxkZWx0ZSBLSS1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0ktZXIgc29tIGVyIHRpbGRlbHQga3VuZGVzZWxza2FwZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSS1lciB0aWxvcmRuZXQga3VuZGVicnVrZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREItaW5uc3RpbGxpbmdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnU2UgZXR0ZXIgZXQgdW5pa3QgbmF2biBiYXJlIGlubmVuZm9yIHNhbW1lIENvbmZpZ0l0ZW0ta2xhc3NlIChcJ2NsYXNzXCcpIGVsbGVyIGdsb2JhbHQgKFwnZ2xvYmFsXCcpLCBub2Ugc29tIGJldHlyIGF0IGFsbGUgZWtzaXN0ZXJlbmRlIENvbmZpZ0l0ZW1zIHRhcyBtZWQgaSBiZXRyYWt0bmluZ2VuIG7DpXIgbWFuIGxldGVyIGV0dGVyIGR1cGxpa2F0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdWZWxnIGVuIG1vZHVsIGZvciDDpSBow6VuZGhldmUgZXQgbmF2bmVza2plbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdWZWxnIGVuIG1vZHVsIGZvciDDpSBow6VuZGhldmUgZXQgdGFsbHNramVtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnVmVsZyBlbiBtb2R1bCBmb3Igw6UgaMOlbmRoZXZlIGV0IHZlcnNqb25zc3RyZW5nc2tqZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1ZlbGcgYXR0cmlidXR0ZXIgc29tIHNrYWwgdXRsw7hzZSBvcHByZXR0ZWxzZW4gYXYgZW4gbnkgdmVyc2pvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnVmVsZyBrYXRlZ29yaWVyIHNvbSBza2FsIHRpbG9yZG5lcyBkZW5uZSBrb25maWd1cmFzam9uc2VsZW1lbnRrbGFzc2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdLb2xvbm5la29uZmlndXJhc2pvbnNlbGVtZW50ZmlsdHJlIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnS29sb25uZXIgc29tIGthbiBmaWx0cmVyZXMgaSBvdmVyc2lrdGVuIG92ZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuIE1lcms6IEJhcmUgYXR0cmlidXR0ZXIgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIG9nIGR5bmFtaXNrZSBmZWx0IChEeW5hbWljRmllbGRfTmFtZVgpIGVyIHRpbGxhdHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0tvbmZpZ3VyYXNqb25zZW5oZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnTGVnZyB0aWwga29uZmlndXJlcmluZ3NlbGVtZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ1JlZGlnZXIga29uZmlndXJlcmluZ3NlbGVtZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyZXIgaGVuZGVsc2VzbW9kdWwgZm9yIGtvbmZpZ3VyZXJpbmdzZWxlbWVudGV0IHNvbSBtdWxpZ2dqw7hyIGxvZ2dpbmcgdGlsIGhpc3RvcmlrayBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnSGVuZGVsc2VzbW9kdWwgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIHNvbSBvcHBkYXRlcmVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVuZSB0aWwgZGVyZXMgZ2plbGRlbmRlIGRlZmluaXNqb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnS29uZmlndXJlciBlbGVtZW50aGlzdG9yaWtrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdLb25maWd1cmVyIGVsZW1lbnR1dHNrcmlmdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdLb25maWd1cmVyIGVsZW1lbnR6b29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0tvbmZpZ0l0ZW0tdHJldmlzbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNqb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgYXYgZsO4bGdlbmRlIGtsYXNzZXIgdmlsIGlra2UgYmxpIGxhZ3JldCBww6UgRWxhc3RpY3NlYXJjaC1zZXJ2ZXJlbi4gSHZpcyBkdSB2aWwgYnJ1a2UgZGV0dGUgcMOlIGVrc2lzdGVyZW5kZSBDSS1lciwgbcOlIENJLW1pZ3JlcmluZ2VuIGtqw7hyZXMgdmlhIGtvbnNvbGxlbiBldHRlciBhdCBkdSBoYXIgZW5kcmV0IGRldHRlIGFsdGVybmF0aXZldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgbWVkIGbDuGxnZW5kZSBkaXN0cmlidXNqb25zc3RhdHVzIHZpbCBpa2tlIGJsaSBsYWdyZXQgcMOlIEVsYXN0aWNzZWFyY2gtc2VydmVyZW4uIEZvciDDpSBicnVrZSBkZXR0ZSBww6UgZWtzaXN0ZXJlbmRlIENJLWVyIG3DpSBDSS1taWdyZXJpbmdlbiBrasO4cmVzIHZpYSBrb25zb2xsZW4gZXR0ZXIgYXQgZHUgaGFyIGVuZHJldCBkZXR0ZSBhbHRlcm5hdGl2ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0tvbmZpZ3VyYXNqb24gRWxlbWVudGdyZW5zZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlndXJhc2pvbiBFbGVtZW50YmVncmVuc25pbmcgcGVyIHNpZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdEYXRhYmFzZSBmb3Iga29uZmlndXJhc2pvbnNzdHlyaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnS29uZmlndXJhc2pvbnNlbGVtZW50ZXRzIGJ1bGttb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXJhc2pvbnNlbGVtZW50IGZvciBzw7hrIGkgYmFja2VuZC1ydXRlcmVuIHRpbCBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ09wcHJldHQgb2cgYWRtaW5pc3RyZXIgZGVmaW5pc2pvbmVuZSBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnT3BwcmV0dGVyIGJpbGxldHRlciBmb3IgQ29uZmlnSXRlbXMgcMOlIGJlc3RlbXRlIHRpZHNwdW5rdGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdLdW5kZXIga2FuIHNlIGhpc3Rvcmlza2UgQ0ktdmVyc2pvbmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLdW5kZW5lIGhhciBtdWxpZ2hldCB0aWwgw6UgYnl0dGUgbWFudWVsdCBtZWxsb20gaGlzdG9yaXNrZSBDSS12ZXJzam9uZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnU3RhbmRhcmRkYXRhIHNvbSBza2FsIGJydWtlcyBww6UgYXR0cmlidXR0ZXQgZm9yIHPDuGtlc2tqZXJtZW4gZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyLiBFa3NlbXBlbDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGEgc29tIHNrYWwgYnJ1a2VzIHDDpSBhdHRyaWJ1dHRldCBmb3Igc8O4a2Vza2plcm1lbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIuIEVrc2VtcGVsOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5lciBoYW5kbGluZ2VyIGRlciBlbiBpbm5zdGlsbGluZ3NrbmFwcCBlciB0aWxnamVuZ2VsaWcgaSB3aWRnZXRlbiBmb3Iga29ibGVkZSBvYmpla3RlciAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBWw6ZyIG9wcG1lcmtzb20gcMOlIGF0IGRpc3NlIGhhbmRsaW5nZW5lIG3DpSBoYSByZWdpc3RyZXJ0IGbDuGxnZW5kZSBKUy0gb2cgQ1NTLWZpbGVyOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluZXIgZXQgVGVtcGxhdGU6OlRvb2xraXQtc2tqZW1hIGZvciB2ZXJzam9uc3N0cmVuZ2VyLiBCcnVrZXMgYmFyZSBodmlzIFZlcnNqb25zc3RyZW5nbW9kdWwgZXIgc2F0dCB0aWwgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluZXIgZXQgc2V0dCBtZWQgYmV0aW5nZWxzZXIgZm9yIGF0IGVuIGt1bmRlIHNrYWwga3VubmUgc2UgZXQga29uZmlndXJhc2pvbnNlbGVtZW50LiBCZXRpbmdlbHNlbmUga2FuIGV2ZW50dWVsdCBiZWdyZW5zZXMgdGlsIGJlc3RlbXRlIGt1bmRlZ3J1cHBlci4gTmF2biBlciBkZXQgZW5lc3RlIG9ibGlnYXRvcmlza2UgYXR0cmlidXR0ZXQuIEh2aXMgaW5nZW4gYW5kcmUgYWx0ZXJuYXRpdmVyIGVyIGFuZ2l0dCwgdmlsIGFsbGUga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgdsOmcmUgc3lubGlnZSB1bmRlciBkZW4gYWt0dWVsbGUga2F0ZWdvcmllbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBuw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6Ugc2xldHRlIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgdmVkIGhqZWxwIGF2IGRldCBnZW5lcmlza2UgZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBuw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgaGVudGUgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciB2ZWQgaGplbHAgYXYgZGV0IGdlbmVyaXNrZSBncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBzw7hrZSBpIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgdmVkIGhqZWxwIGF2IGRldCBnZW5lcmlza2UgZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBuw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYW5naSBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIHZlZCBoamVscCBhdiBkZXQgZ2VuZXJpc2tlIGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBlbiBvdmVyc2lrdHNtb2R1bCBzb20gdmlzZXIgZGVuIGxpbGxlIHZpc25pbmdlbiBhdiBlbiBsaXN0ZSBtZWQga29uZmlndXJhc2pvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0FuZ2lyIG9tIGxlbmtldHlwZWV0aWtldHRlbmUgc2thbCB2aXNlcyBpIG5vZGVmb3JiaW5kZWxzZW5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHJlZ3Vsw6ZyZSB1dHRyeWtrIGluZGl2aWR1ZWx0IGZvciBodmVyIENvbmZpZ0l0ZW0ta2xhc3NlIGZvciDDpSBrb250cm9sbGVyZSBDb25maWdJdGVtLW5hdm5ldCBvZyB2aXNlIHRpbHN2YXJlbmRlIGZlaWxtZWxkaW5nZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHRpbGdqZW5nZWxpZ2Uga29sb25uZXIgbWVkIENJLWVyIGkgb3ZlcnNpa3RlbiBvdmVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGF2aGVuZ2lnIGF2IENJLWtsYXNzZW4uIEh2ZXIgb3BwZsO4cmluZyBtw6UgYmVzdMOlIGF2IGV0IGtsYXNzZW5hdm4gb2cgZW4gbWF0cmlzZSBtZWQgdGlsZ2plbmdlbGlnZSBmZWx0IGZvciBkZW4gdGlsc3ZhcmVuZGUga2xhc3Nlbi4gRHluYW1pc2tlIGZlbHRvcHBmw7hyaW5nZXIgbcOlIGbDuGxnZSBza2plbWFldCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkIGtvbmZpZy1lbGVtZW50YXR0cmlidXR0IGZvciBzb3J0ZXJpbmcgYXYga29uZmlnLWVsZW1lbnRlciBpIHPDuGtlcmVzdWx0YXRldCBmb3Iga29uZmlnLWVsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZCBrb25maWd1cmFzam9uc2VsZW1lbnRhdHRyaWJ1dHQgZm9yIHNvcnRlcmluZyBhdiBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIHPDuGtlcmVzdWx0YXRldCBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBrdW5kZWdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkIGtvbmZpZy1lbGVtZW50YXR0cmlidXR0IGZvciBzb3J0ZXJpbmcgYXYga29uZmlnLWVsZW1lbnRldCBpIHPDuGtlcmVzdWx0YXRldCBmb3IgZGVubmUgb3BlcmFzam9uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRyZWtrZWbDuGxnZW4gZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgc8O4a2VyZXN1bHRhdGV0IGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4gT3BwOiBlbGRzdCBww6UgdG9wcGVuLiBOZWQ6IG55ZXN0ZSDDuHZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkcmVra2Vmw7hsZ2VuIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIHPDuGtlcmVzdWx0YXRldCBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBrdW5kZWdyZW5zZXNuaXR0ZXQuIE9wcDogZWxkc3QgcMOlIHRvcHBlbi4gTmVkOiBueWVzdGUgw7h2ZXJzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkcmVra2Vmw7hsZ2VuIHDDpSBrb25maWd1cmFzam9uc2VsZW1lbnRlbmUgaSBzw7hrZXJlc3VsdGF0ZXQgZm9yIGRlbm5lIG9wZXJhc2pvbmVuLiBPcHA6IGVsZHN0ZSDDuHZlcnN0LiBOZWQ6IG55ZXN0ZSDDuHZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJka29sb25uZW5lIHNvbSB2aXNlcyBmb3IgQ0ktZXIgaSBvdmVyc2lrdGVuIG92ZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZXIsIGF2aGVuZ2lnIGF2IENJLWtsYXNzZW4uIEh2ZXIgb3BwZsO4cmluZyBtw6UgYmVzdMOlIGF2IGV0IGtsYXNzZW5hdm4gb2cgZW4gbWF0cmlzZSBtZWQgdGlsZ2plbmdlbGlnZSBmZWx0IGZvciBkZW4gdGlsc3ZhcmVuZGUga2xhc3Nlbi4gRHluYW1pc2tlIGZlbHRvcHBmw7hyaW5nZXIgbcOlIGbDuGxnZSBza2plbWFldCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmVyZXIgc3RhbmRhcmQgcmVsYXNqb25zZHliZGUgc29tIHNrYWwgdmlzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZGF0dHJpYnV0dGV0IGZvciBzw7hrZWF0dHJpYnV0dGV0IHNvbSB2aXNlcyBmb3Igc2tqZXJtYmlsZGV0IGZvciBrb25maWd1cmFzam9uc29iamVrdHPDuGsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRhdHRyaWJ1dHRldCBzb20gdmlzZXMgZm9yIHPDuGtlYXR0cmlidXR0ZXQgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGV0IHDDpSBzw7hrZXNramVybWVuLiBFa3NlbXBlbDogIktleSIgbcOlIGhhIG5hdm5ldCBww6UgZGV0IGR5bmFtaXNrZSBmZWx0ZXQsIGkgZGV0dGUgdGlsZmVsbGV0ICJYIiwgIkNvbnRlbnQiIG3DpSBoYSB2ZXJkaWVuIHRpbCBkZXQgZHluYW1pc2tlIGZlbHRldCwgYXZoZW5naWcgYXYgZGVuIGR5bmFtaXNrZSBmZWx0dHlwZW4sIFRleHQ6ICJlbiB0ZWtzdCIsIERyb3Bkb3duOiAiMSIsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIG9nIGVsbGVyIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZHVuZGVyb2JqZWt0ZXQgZm9yIGtsYXNzZW4gXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHRpbGdqZW5nZWxpZ2Uga29sb25uZXIgbWVkIENJLWVyIGkgb3ZlcnNpa3RlbiBvdmVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGF2aGVuZ2lnIGF2IENJLWtsYXNzZW4uIEh2ZXIgb3BwZsO4cmluZyBtw6UgYmVzdMOlIGF2IGV0IGtsYXNzZW5hdm4gb2cgZW4gbWF0cmlzZSBtZWQgdGlsZ2plbmdlbGlnZSBmZWx0IGZvciBkZW4gdGlsc3ZhcmVuZGUga2xhc3Nlbi4gRHluYW1pc2tlIGZlbHRvcHBmw7hyaW5nZXIgbcOlIGbDuGxnZSBza2plbWFldCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmVyZXIgaMO4eWRlbiBmb3IgcmVkaWdlcmluZ3Nrb21wb25lbnRlbiBmb3IgcmlrIHRla3N0IGZvciBkZW5uZSBza2plcm1lbi4gU2tyaXYgaW5uIHRhbGwgKHBpa3NsZXIpIGVsbGVyIHByb3NlbnR2ZXJkaSAocmVsYXRpdikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBhbnRhbGwgcmFkZXIgZm9yIENJLWRlZmluaXNqb25zcmVkaWdlcmluZ3Nwcm9ncmFtbWV0IGkgYWRtaW5pc3RyYXRvcmdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciByZWtrZWbDuGxnZW4gYXYgaGVuZGVsc2VzdGlsc3RhbmRlciBmcmEgaMO4eSAoZi5la3MuIGtyaXRpc2spIHRpbCBsYXYgKGYuZWtzLiBmdW5rc2pvbmVsbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIHJlbGV2YW50ZSBkaXN0cmlidXNqb25zc3RhdHVzZW5lIGRlciB0aWxrbnl0dGVkZSB0aWNrZXRzIGthbiBww6V2aXJrZSBzdGF0dXNlbiB0aWwgZW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHPDuGtlZ3JlbnNlbiBmb3Igc2tqZXJtYmlsZGV0IEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHPDuGtlZ3JlbnNlbiBmb3Igc2tqZXJtYmlsZGV0IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHPDuGtlZ3JlbnNlbiBmb3Igc2tqZXJtYmlsZGV0IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHPDuGtlZ3JlbnNlbiBmb3Igc2tqZXJtYmlsZGV0IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGh2aWxrZSBrb2xvbm5lciBzb20gc2thbCB2aXNlcyBmb3IgQ0ktZXIgaSBkZW4ga29tcGxla3NlIHZpc25pbmdlbiBhdiBrb2JsaW5nc3RhYmVsbGVuIGZvciBhbGxlIENJLWtsYXNzZXIuIEh2aXMgZGV0IGlra2UgZmlubmVzIG5vZW4gb3BwZsO4cmluZywgdmlzZXMgc3RhbmRhcmRrb2xvbm5lbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGUgdmlzdGUga29sb25uZW5lIG1lZCBDSS1lciBpIGRlbiBrb21wbGVrc2UgdmlzbmluZ2VuIGF2IGtvYmxpbmdzdGFiZWxsZW4sIGF2aGVuZ2lnIGF2IENJLWtsYXNzZW4uIEh2ZXIgb3BwZsO4cmluZyBtw6UgaW5ubGVkZXMgbWVkIGtsYXNzZW5hdm5ldCBvZyB0byBrb2xvbiAoZi5la3MuIENvbXB1dGVyOjopLiBEZXQgZmlubmVzIG5vZW4gZsOlIENJLWF0dHJpYnV0dGVyIHNvbSBlciBmZWxsZXMgZm9yIGFsbGUgQ0ktZXIgKGVrc2VtcGVsIGZvciBrbGFzc2VuIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBGb3Igw6UgdmlzZSBpbmRpdmlkdWVsbGUgQ0ktYXR0cmlidXR0ZXIgc29tIGRlZmluZXJ0IGkgQ0ktZGVmaW5pc2pvbmVuLCBtw6UgZsO4bGdlbmRlIHNramVtYSBicnVrZXMgKGVrc2VtcGVsIGZvciBrbGFzc2VuIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIEh2aXMgZGV0IGlra2UgZmlubmVzIG5vZW4gb3BwZsO4cmluZyBmb3IgZW4gQ0kta2xhc3NlLCB2aXNlcyBzdGFuZGFyZGtvbG9ubmVuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVyZXIgaHZpbGtlIGVsZW1lbnRlciBzb20gZXIgdGlsZ2plbmdlbGlnZSBmb3IgIkhhbmRsaW5nIiBww6UgdHJlZGplIG5pdsOlIGkgSVRTTSBDb25maWcgSXRlbSBBQ0wtc3RydWt0dXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVyZXIgaHZpbGtlIGVsZW1lbnRlciBzb20gZXIgdGlsZ2plbmdlbGlnZSBww6UgZsO4cnN0ZSBuaXbDpSBpIElUU00gQ29uZmlnIEl0ZW0gQUNMLXN0cnVrdHVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBodmlsa2UgZWxlbWVudGVyIHNvbSBlciB0aWxnamVuZ2VsaWdlIHDDpSBhbmRyZSBuaXbDpSBpIElUU00gQ29uZmlnIEl0ZW0gQUNMLXN0cnVrdHVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBodmlsa2VuIHR5cGUga29ibGluZyAobmF2bmdpdHQgZnJhIHRpY2tldC1wZXJzcGVrdGl2ZXQpIHNvbSBrYW4gcMOldmlya2Ugc3RhdHVzZW4gdGlsIGV0IGtvYmxldCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmVyZXIgaHZpbGtlbiB0eXBlIGJpbGxldHQgc29tIGthbiBww6V2aXJrZSBzdGF0dXNlbiB0aWwgZW4ga29ibGV0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ09wcGRhdGVyaW5nIGF2IGRlZmluaXNqb25lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnU2xldHQga29uZmlndXJhc2pvbnNlbGVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnRmFyZ2UgZm9yIHByb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGlzw6lyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdWwgZm9yIGR5bmFtaXNrZSBmZWx0aGVuZGVsc2VyIHNvbSBtYXJrZXJlciBrb25maWd1cmFzam9uc2VsZW1lbnRkZWZpbmlzam9uZXIgc29tIHVzeW5rcm9uaXNlcnRlIGh2aXMgZGUgZHluYW1pc2tlIGZlbHRlbmUgZW5kcmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2tlIGZlbHQgc29tIHZpc2VzIGkgc2tqZXJtYmlsZGV0IGZvciBJVFNNLXRpbGxlZ2dzZmVsdCBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2tlIGZlbHQgc29tIHZpc2VzIGkgc2tqZXJtYmlsZGV0IGZvciBvdmVyc2lrdCBvdmVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkga3VuZGVncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2tlIGZlbHQgc29tIHZpc2VzIGkgc2tqZXJtYmlsZGV0IGZvciBzw7hrIGV0dGVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdBa3RpdmVyZXIgZnVua3Nqb25lbiBmb3IgbWFzc2VoYW5kbGluZ2VyIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlciwgc2xpayBhdCBhZ2VudGVucyBmcm9udGVuZCBrYW4gYXJiZWlkZSBtZWQgbWVyIGVubiBldHQga29uZmlndXJhc2pvbnNlbGVtZW50IG9tIGdhbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0FrdGl2ZXJlciBmdW5rc2pvbmVuIGZvciBtYXNzZWhhbmRsaW5nIGF2IGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGJhcmUgZm9yIGRlIG9wcGbDuHJ0ZSBncnVwcGVuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnQWt0aXZlcmVyL2RlYWt0aXZlcmVyIGZ1bmtzam9uYWxpdGV0ZW4gZm9yIMOlIHNqZWtrZSBvbSBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGhhciB1bmlrZSBuYXZuLiBGw7hyIGR1IGFrdGl2ZXJlciBkZXR0ZSBhbHRlcm5hdGl2ZXQsIGLDuHIgZHUgc2pla2tlIHN5c3RlbWV0IGZvciBhbGxlcmVkZSBla3Npc3RlcmVuZGUga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgbWVkIGR1cGxpc2VydGUgbmF2bi4gRHUga2FuIGdqw7hyZSBkZXR0ZSBtZWQga29uc29sbGtvbW1hbmRvZW4gQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdIZW5kZWxzZXNtb2R1bCBmb3Igw6UgYW5naSBjb25maWdpdGVtLXN0YXR1cyBww6UgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnRmVsdCBpIGtvbmZpZ3VyYXNqb25zZWxlbWVudGluZGVrc2VuLCBzb20gYnJ1a2VzIHRpbCBmdWxsdGVrc3Rzw7hrLiBGZWx0ZW5lIGxhZ3JlcyBvZ3PDpSwgbWVuIGVyIGlra2Ugb2JsaWdhdG9yaXNrZSBmb3IgZGVuIGdlbmVyZWxsZSBmdW5rc2pvbmFsaXRldGVuLiBJbmtsdWRlcmluZyBhdiB2ZWRsZWdnIGthbiBkZWFrdGl2ZXJlcyB2ZWQgw6Ugc2V0dGUgb3BwZsO4cmluZ2VuIHRpbCAwIGVsbGVyIHNsZXR0ZSBkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdGZWx0IHNvbSBlciBsYWdyZXQgaSBrb25maWd1cmFzam9uc2VsZW1lbnRpbmRla3Nlbiwgb2cgc29tIGJydWtlcyB0aWwgYW5kcmUgdGluZyBlbm4gZnVsbHRla3N0c8O4ay4gQWxsZSBmZWx0ZW5lIGVyIG9ibGlnYXRvcmlza2UgZm9yIMOlIGbDpSBmdWxsIGZ1bmtzam9uYWxpdGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ0ZvciBodmVyIHdlYnRqZW5lc3RlIChuw7hra2VsKSBrYW4gZGV0IGRlZmluZXJlcyBlbiByZWtrZSBrbGFzc2VyICh2ZXJkaSkgc29tIGltcG9ydGVuIGVyIGJlZ3JlbnNldCB0aWwuIEZvciBhbGxlIHZhbGd0ZSBrbGFzc2VyLCBlbGxlciBhbGxlIGVrc2lzdGVyZW5kZSBrbGFzc2VyLCBtw6UgZGUgaWRlbnRpZmlzZXJlbmRlIGF0dHJpYnV0dGVuZSB2ZWxnZXMgaSBrb25maWd1cmFzam9uZW4gYXYgcMOla2FsbGVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJlcmluZyBhdiBHZW5lcmljSW50ZXJmYWNlLW1vZHVsZW4gZm9yIENvbmZpZ0l0ZW1GZXRjaC1pbnZva2VyaW5nc2xhZ2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJlcmluZyBhdiBHZW5lcmljSW50ZXJmYWNlLW1vZHVsZW4gZm9yIENvbmZpZ0l0ZW1GZXRjaC1pbnZva2VyaW5nc2xhZ2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYXYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bGVuIGZvciBDb25maWdJdGVtRmV0Y2gtaW52b2tlcmluZ3NsYWdldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnT3ZlcnNpa3Qgb3ZlciBJVFNNIGtvbmZpZ3VyYXNqb25zZW5oZXRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0lua2x1ZGVyZXIgZGlzdHJpYnVzam9uc3N0YXR1cyBpIHPDuGtldCBldHRlciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGt1bmRlZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0lua2x1ZGVyZXIgaGVuZGVsc2VzdGlsc3RhbmRlciBpIGtvbmZpZ3VyYXNqb25zc8O4a2V0IGkga3VuZGVncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWFrc2ltYWx0IGFudGFsbCBrb25maWd1cmFzam9uc2VsZW1lbnRlciBzb20gc2thbCB2aXNlcyBpIHJlc3VsdGF0ZXQgYXYgZGVubmUgb3BlcmFzam9uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgZm9yIMOlIHNqZWtrZSBodmlsa2VuIGdydXBwZSBzb20gZXIgYW5zdmFybGlnIGZvciBlbiBrbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgZm9yIMOlIHNqZWtrZSBodmlsa2VuIGdydXBwZSBzb20gZXIgYW5zdmFybGlnIGZvciBldCBrb25maWd1cmFzam9uc2VsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgZm9yIMOlIGdlbmVyZXJlIHN0YXRpc3Rpa2sgb3ZlciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05hdm4gTW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bW1lcm1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FudGFsbCBrb25maWd1cmFzam9uc2VsZW1lbnRlciBzb20gc2thbCB2aXNlcyBww6UgaHZlciBzaWRlIGF2IGV0IHPDuGtlcmVzdWx0YXQgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FudGFsbCBrb25maWd1cmFzam9uc2VsZW1lbnRlciBzb20gc2thbCB2aXNlcyBww6UgaHZlciBzaWRlIGF2IGV0IHPDuGtlcmVzdWx0YXQgaSBrdW5kZWdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0ZXIgZGV0IHNrYWwgc8O4a2VzIGV0dGVyLCBodm9yIG1hbmdlIG9wcGbDuHJpbmdlciBvZyBodmlsa2UgYXR0cmlidXR0ZXIgc29tIHNrYWwgdmlzZXMuIENvbmZpZ0l0ZW0tYXR0cmlidXR0ZXIgbcOlIGxhZ3JlcyBla3NwbGlzaXR0IHZpYSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdPdmVyc2lrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIGthdGVnb3JpZW5lIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRrbGFzc2VyIGkgcHJlZmVyYW5zZXZpc25pbmdlbiBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciBrb2xvbm5lZmlsdHJlbmUgaSBvdmVyc2lrdGVuIG92ZXIgc23DpSBrb25maWd1cmFzam9uc2VsZW1lbnRlci4gTWVyazogSHZpcyBkdSBzZXR0ZXIgIkFjdGl2ZSIgdGlsIDAsIHZpbCBkZXQgYmFyZSBoaW5kcmUgYWdlbnRlciBpIMOlIHJlZGlnZXJlIGlubnN0aWxsaW5nZW5lIGZvciBkZW5uZSBncnVwcGVuIGkgc2luZSBwZXJzb25saWdlIHByZWZlcmFuc2VyLCBtZW4gZGV0IHZpbCBmb3J0c2F0dCB2w6ZyZSBtdWxpZyBmb3IgYWRtaW5pc3RyYXRvcmVyIMOlIHJlZGlnZXJlIGlubnN0aWxsaW5nZW5lIHDDpSB2ZWduZSBhdiBlbiBhbm5lbiBicnVrZXIuIEJydWsgIlByZWZlcmVuY2VHcm91cCIgdGlsIMOlIGtvbnRyb2xsZXJlIGkgaHZpbGtldCBvbXLDpWRlIGRpc3NlIGlubnN0aWxsaW5nZW5lIHNrYWwgdmlzZXMgaSBicnVrZXJncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3IgZmFyZ2VuZSBmb3IgZGlzdHJpYnVzam9uc3N0YXR1c2VuZSBpIHByZWZlcmFuc2V2aXNuaW5nZW4gaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3IgZGlzdHJpYnVzam9uc3N0YXR1c2VuZSBpIHByZWZlcmFuc2V2aXNuaW5nZW4gaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIHRpbGdhbmdzZ3J1cHBlLWVrc2VtcGVsIGkgYXR0cmlidXR0ZW5lIGZvciBnZW5lcmVsbCBrYXRhbG9nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIG5hdm5lbW9kdWxlbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50a2xhc3NlciBpIHByZWZlcmFuc2V2aXNuaW5nZW4gaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciBudW1tZXJtb2R1bGVuIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRrbGFzc2VyIGkgcHJlZmVyYW5zZXZpc25pbmdlbiBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3Igc2lkZW5lIChkZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZW5lIHZpc2VzKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3IgdmVyc2pvbnNzdHJlbmdtb2R1bGVuIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRrbGFzc2VyIGkgcHJlZmVyYW5zZXZpc25pbmdlbiBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciB2ZXJzam9uc3N0cmVuZ21hbHZlcmt0w7h5bW9kdWxlbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50a2xhc3NlciBpIHByZWZlcmFuc2V2aXNuaW5nZW4gaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIHZlcnNqb25zdXRsw7hzZXJlbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50a2xhc3NlciBpIHByZWZlcmFuc2V2aXNuaW5nZW4gaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnVXRmw7hyZXIgZGVuIGtvbmZpZ3VyZXJ0ZSBoYW5kbGluZ2VuIGZvciBodmVyIGhlbmRlbHNlIChzb20gZW4gSW52b2tlcikgZm9yIGh2ZXIga29uZmlndXJlcnRlIHdlYnRqZW5lc3RlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnVGlsbGF0ZWxzZXNncnVwcGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIGJydWtlIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXRzIHZlZGxlZ2dzaGFuZGxpbmcgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugc2tqZXJtYmlsZGV0IGZvciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBza2plcm1iaWxkZXQgZm9yIHPDuGsgZXR0ZXIgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugc8O4a2Vza2plcm1lbiBmb3IgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGt1bmRlZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugc2tqZXJtYmlsZGV0IGZvciB0cmV2aXNuaW5nIGF2IElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSB6b29tc2tqZXJtYmlsZGV0IGZvciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBza2plcm1iaWxkZXQgTGVnZyB0aWwgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnQgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBza2plcm1iaWxkZXQgZm9yIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBza2plcm1iaWxkZXQgUmVkaWdlciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIGJydWtlIHNramVybWJpbGRldCBmb3IgaGlzdG9yaWtrIGZvciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIGJydWtlIHNramVybWJpbGRldCBmb3IgdXRza3JpZnQgYXYgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ07DuGR2ZW5kaWdlIHJldHRpZ2hldGVyIGZvciDDpSBzbGV0dGUga29uZmlndXJhc2pvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnU8O4ayBldHRlciBrb25maWd1cmFzam9uc2VuaGV0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdBbmdpIGhlbmRlbHNlc3N0YXR1cyBmb3IgZW4gQ0kgYXV0b21hdGlzayBuw6VyIGVuIFRpY2tldCBrb2JsZXMgdGlsIGVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuZ2lyIGRpc3RyaWJ1c2pvbnNzdGF0dXMgaSBza2plcm1iaWxkZXQgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbmdpciBoZW5kZWxzZXNzdGF0dXMgaSBza2plcm1iaWxkZXQgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGV0IGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGVuIGxlbmtlIGkgbWVueWVuIHNvbSBnasO4ciBkZXQgbXVsaWcgw6Uga29ibGUgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IHRpbCBldCBhbm5ldCBvYmpla3QgaSB6b29tdmlzbmluZ2VuIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6UgZsOlIHRpbGdhbmcgdGlsIGhpc3Rvcmlra2VuIGZvciBldCBrb25maWd1cmFzam9uc2VsZW1lbnQgaSBvdmVyc2lrdGVuIG92ZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGVuIGxlbmtlIGkgbWVueWVuIGZvciDDpSBmw6UgdGlsZ2FuZyB0aWwgaGlzdG9yaWtrZW4gdGlsIGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIHpvb212aXNuaW5nZW4gYXYgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGVuIGxlbmtlIGkgbWVueWVuIGZvciDDpSBzbGV0dGUgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgem9vbXZpc25pbmdlbiBhdiBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6UgdmlzZSBrb25maWd1cmFzam9uc2VsZW1lbnRsZW5rZW5lIHNvbSBlbiB0cmV2aXNuaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGVuIGxlbmtlIGkgbWVueWVuIGZvciDDpSBkdXBsaXNlcmUgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgb3ZlcnNpa3RlbiBvdmVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBrb2JsaW5nIGkgbWVueWVuIGZvciDDpSBkdXBsaXNlcmUgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgem9vbXZpc25pbmdlbiBhdiBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6UgcmVkaWdlcmUgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgem9vbXZpc25pbmdlbiBhdiBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6UgZ8OlIHRpbGJha2UgaSB6b29tdmlzbmluZ2VuIGF2IGtvbmZpZ3VyYXNqb25zZWxlbWVudGV0IGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGVuIGxlbmtlIGkgbWVueWVuIGZvciDDpSBza3JpdmUgdXQgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgem9vbXZpc25pbmdlbiBhdiBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZW4gbGVua2UgaSBtZW55ZW4gZm9yIMOlIHpvb21lIGlubiBww6UgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgb3ZlcnNpa3RlbiBvdmVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIga29uZmlndXJlcmluZ3NlbGVtZW50ZXRzIGhpc3RvcmlrayAoaSBvbXZlbmR0IHJla2tlZsO4bGdlKSBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnU3RhbmRhcmRrYXRlZ29yaWVuIHNvbSB2aXNlcyBodmlzIGluZ2VuIGVyIHZhbGd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnSWRlbnRpZmlrYXRvcmVuIGZvciBldCBrb25maWd1cmFzam9uc2VsZW1lbnQsIGYuZWtzLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gU3RhbmRhcmRpbm5zdGlsbGluZ2VuIGVyIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ1V0bMO4c2VyIENvbmZpZ0l0ZW1GZXRjaC1pbnZva2F0b3JlbiBhdXRvbWF0aXNrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2pvbnNzdHJlbmd1dHRyeWtrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNqb25zc3RyZW5nbW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2pvbnN1dGzDuHNlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICdPbSBmZWx0IHNrYWwgZnlsbGVzIHV0IGF1dG9tYXRpc2sgKDEpLCBvZyBpIHPDpSBmYWxsIG9nc8OlIHNranVsZXMgZm9yIHNha3Nmb3JtbGVuZSAoMikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ09tIGtqw7hyaW5nZW4gYXYgQ29uZmlnSXRlbUFDTCBrYW4gdW5uZ8OlcyB2ZWQgw6Ugc2pla2tlIGJ1ZnJlZGUgZmVsdGF2aGVuZ2lnaGV0ZXIuIERldHRlIGthbiBmb3JiZWRyZSBpbm5sYXN0aW5nc3RpZGVuIGZvciBmb3JtdWxhcmVyLCBtZW4gbcOlIGRlYWt0aXZlcmVzIGh2aXMgQUNMTW9kdWxlcyBza2FsIGJydWtlcyBmb3IgSVRTTUNvbmZpZ0l0ZW0tIG9nIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdIdmlsa2VuIGdlbmVyZWxsIGluZm9ybWFzam9uIHNvbSB2aXNlcyBpIHRvcHB0ZWtzdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVwcm9kdWt0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3Rpdic7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogNDQsNDUgY20gKDE3LDUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiA1MywzNCBjbSAoMjEgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiA2Niw2OCBjbSAoMjYsMjUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDgwLDAxIGNtICgzMSw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktdG9tbWVycyBzdGF0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiA0LDQ1IGNtICgxLDc1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiA4OCw5IGNtICgzNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLXRvbW1lcnMgc3RhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSB0b21tZXIgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy10b21tZXJzIHN0YXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgdG9tbWVyICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiAxMDYsNjggY20gKDQyIHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHRvbW1lciAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogOCw4OSBjbSAoMyw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogMTMzLDM1IGNtICg1Miw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHRvbW1lciAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogMTQ2LDY4IGNtICg1Nyw3NSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCB0b21tZXIgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDE2MCwwMiBjbSAoNjMgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHRvbW1lciAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDE3MywzNSBjbSAoNjgsMjUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiAxMywzNCBjbSAoNSwyNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgdG9tbWVyICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHRvbW1lciAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiAyMDAsMDIgY20gKDc4LDc1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiB0b21tZXIgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiAyMTMsMzYgY20gKDg0IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogMTcsNzggY20gKDcgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiAyMiwyMyBjbSAoOCw3NSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDI2LDY3IGNtICgxMCw1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDMxLDEyIGNtICgxMiwyNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAzNSw1NiBjbSAoMTQgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogNDAsMDEgY20gKDE1LDc1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdSZWduc2thcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0FkcmVzc2V0aWxkZWxpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmF0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9nIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUeXBlIGFwcGFyYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdCYXR0ZXJpa2FwYXNpdGV0IChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnQmF0dGVyaXR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCeWduaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdCdXNzZ3JlbnNlc25pdHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ1Byb3Nlc3Nvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFUta2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdLYXBhc2l0ZXQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0thcGFzaXRldCBwZXIgZ3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0tvcnRudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLb3J0bGVzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnS29ydHR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0tsaWVudHNlcnRpZmlrYXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdLbGllbnRwcm9ncmFtdmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLdW5kZWthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0tsb2trZWZyZWt2ZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdDbG9ja3NwZWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdLb2Rlc2lnbmVyaW5nc3NlcnRpZmlrYXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnS29uZmVyYW5zZXRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdLb25zdWxlbnRhdnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0tvbnRha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0tvbnRha3QgZGlzdHJpYnV0w7hyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnQ29udGFpbmVyaMOlbmR0ZXJpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdLb250cmFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnS29udHJha3RzdHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ0tvbnRyYWt0c3BlcmlvZGUgZnJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0tvbnRyYWt0c3BlcmlvZGUgZnJlbSB0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVHLDpWRsw7hzIHRlbGVmb24gKERFQ1QtdGVsZWZvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnS29zdG5hZHNlbmhldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0FudGFsbCBsaXNlbnNlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnT3BwcmV0dGVsc2VzZGF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnVGlscGFzc2V0IHN0YXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZlcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy1zZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0Zha3R1cmFkYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXRvIGZvciBiZXN0aWxsaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXRvIGZvciBnYXJhbnRpc3RpbGxlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdG8gZm9yIHV0Z2l2ZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnU3Rhc2pvbsOmcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnRG9rdW1lbnRzaWduZXJpbmdzc2VydGlmaWthdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSS1zdGF0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtcG9zdHNlcnRpZmlrYXRlciAoUy9NSU1FLXNlcnRpZmlrYXRlciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnQXJiZWlkc2F2dGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ1NsdXR0IElQLWFkcmVzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdTbHV0dCBww6Ugc3TDuHR0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdVdGzDuHBzZGF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRWtzdGVybiBoYXJkZGlzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0JyYW5ubXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmFzdHZhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdFbmVyZ2lsYWdyaW5nIG1lZCBzdmluZ2hqdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGb3JtZmFrdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2VhdnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdHcmF0aXMgcHJvZ3JhbXZhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnR2VuZXJlbGwgaW5mb3JtYXNqb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdHcmFmaWtrb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaWtrb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnTWFza2ludmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01hc2tpbnZhcmVtb2RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnTWFza2ludmFyZSBWZWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdIb2RldGVsZWZvbmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAtcHJvdG9rb2xsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lkZW50aXRldHMtIG9nIHRpbGdhbmdzc3R5cmluZyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50YXJudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdJbnZlcnN0ZXJpbmdza29zdG5hZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnRmFrdHVyYW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1Rhc3RhdHVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRC1za2plcm0gKGZseXRlbmRlIGtyeXN0YWxsc2tqZXJtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVELXNramVybSAobHlzZGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ0Zhc3R0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0LDpnJiYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdCcmVkZGVncmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnTGFnIDE6IEZ5c2lzayBsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnTGFnIDI6IERhdGFsaW5rLWxhZ2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMYWcgMzogTmV0dHZlcmtzbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0xhZyAzOiBOZXR0dmVya3NsYWcgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdMYWcgNDogVHJhbnNwb3J0bGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdMYWcgNTogU2Vzam9uc2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdMYWcgNjogUHJlc2VudGFzam9uc2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0xhZyA3OiBBcHBsaWthc2pvbnNsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnTGVpZWF2dGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpc2Vuc2F2dGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGlzZW5zbsO4a2tlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdMaXNlbnMgdHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGlzZW5zcGVyaW9kZSBmcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaXNlbnNwZXJpb2RlIGZyZW0gdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXRpdW0tamVybmZvc2ZhdGJhdHRlcmkgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRpdW0taW9uLWJhdHRlcmkgKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdMw6VuZWF2dGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnTGlnZ2VyIGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTGVuZ2RlZ3JhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1Byb2R1c2VudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTWFrc2ltYWwgYmVsYXN0bmluZ3NrYXBhc2l0ZXQgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ0h1a29tbWVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdNaW5uZXR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWxudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWwvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdNb2RlbGxiZXNrcml2ZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdTa2plcm1vcHBsw7hzbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdTa2plcm1zdMO4cnJlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdOZXR0dmVyayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdOZXR0dmVya3NpbmZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdOZXR0dmVya3NpbmZvcm1hc2pvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnTmV0dHZlcmtzbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlra2VsLWthZG1pdW0tYmF0dGVyaSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWtrZWwtbWV0YWxsaHlkcmlkLWJhdHRlcmkgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0F2dGFsZSBvbSB0YXVzaGV0c3BsaWt0IChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTm90YXRib2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdBbnRhbGwgcHJvc2Vzc29yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnQW50YWxsIFJBTS1tb2R1bGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ0FudGFsbCBncmFmaWtrb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVELXNramVybSAob3JnYW5pc2sgbHlzZGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0RyaWZ0c2tvc3RuYWRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdCZXN0aWxsaW5nc251bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0FubmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdVdGdhbmdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4tS09ERSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXJza2Fwc2F2dGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb25udW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RlbGVmb250eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRnlzaXNrZSBramVybmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnU3Ryw7htZm9yc3luaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnS2rDuHB0IHDDpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnU3RhdGl2ZHliZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdSYWNrLWVuaGV0ZXIgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdSb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0ta29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMtc2VydGlmaWthdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnU2FsZ3Nrb250cmFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbGxpdHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnRm9yc2VnbGV0IGJseXN5cmViYXR0ZXJpIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VyaWVudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVycHJvZ3JhbXZhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTZXJ2aWNlYXZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnU2VydmljZSBUYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVHlwZSBzdGlra29udGFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1Byb2dyYW12YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnSMO4eXR0YWxlcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1N0YXJ0IElQLWFkcmVzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ0xhZ3JpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdMYWdyaW5nc3BhcnRpc2pvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0RhdHRlcnNlbHNrYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1NhbW1lbmRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUeW5uIGtsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnVHLDpWRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RvcmRlbmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1RvdGFsdCBncmFmaWtrb3J0LVJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnVG90YWx0IFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdCZXLDuHJpbmdzc2tqZXJtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVMOlcm4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQi1odWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUi1ob2Rlc2V0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQLXRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmthbWVyYSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/nl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5sX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdBbGdlbWVuZSBiZWRyaWpmc2dlZ2V2ZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdJbnN0ZWxsaW5nZW4gdm9vciBpbmtvbWVuZGUgYWFudnJhYWdnZWdldmVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ0luc3RlbGxpbmdlbiB2b29yIHVpdGdhYW5kZSByZXNwb25zZ2VnZXZlbnMnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWd1cmF0aWUtaXRlbSBiZWhlZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdXaWp6aWcgZGVmaW5pdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdSb2xkZWZpbml0aWUgd2lqemlnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQga2xhc3NlbmJ1bmRlbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdIaWVyIGt1bnQgdSBSZWFkeTJJbXBvcnQga2xhc3NlYnVuZGVscyBpbXBvcnRlcmVuIGRpZSBvbnplIG1lZXN0IGdlYnJ1aWtlbGlqa2UgY29uZmlndXJhdGllLWl0ZW1zIHRvbmVuLiBIb3VkIGVyIHJla2VuaW5nIG1lZSBkYXQgc29tbWlnZSBhYW52dWxsZW5kZSBjb25maWd1cmF0aWVzIG5vZGlnIGt1bm5lbiB6aWpuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdCZXN0YWFuZGUgZW50aXRlaXRlbiBiaWp3ZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdSZWFkeTJBZG9wdCBrbGFzc2VidW5kZWxzIGltcG9ydGVyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDb25maWd1cmF0aWUgSXRlbSBLbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIFJvbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWd1cmF0aWUtaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0ZXIgb3Aga2xhc3Nlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY3RlZXIgZWVuIGtsYXNzZSB1aXQgZGUgbGlqc3Qgb20gZWVuIG5pZXV3IGNvbmZpZ3VyYXRpZS1pdGVtIGFhbiB0ZSBtYWtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdLbGFzc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNLWNvbmZpZ0l0ZW0gYnVsa2FjdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdTdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdJbmNpZGVudHN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdMaW5rIG5hYXIgZWVuIGFuZGVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnT25nZWxkaWcgQ29uZmlndXJhdGllIEl0ZW0gbnVtbWVyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdIZXQgbnVtbWVyIHZhbiBlZW4gYW5kZXIgY29uZmlndXJhdGllLWl0ZW0gb20gbWVlIHRlIGxpbmtlbi4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdXaWx0IHUgZGl0IGNvbmZpZ3VyYXRpZS1pdGVtIGVjaHQgdmVyd2lqZGVyZW4/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0RlIG5hYW0gdmFuIGRpdCBjb25maWd1cmF0aWUtaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFhbSBpcyBhbCBpbiBnZWJydWlrIGRvb3IgZGUgQ29uZmlnSXRlbXMgbWV0IGRlIHZvbGdlbmRlIE51bW1lcihzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJzaWVudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlcnNpZW51bW1lciB2YW4gZGl0IGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnVmVyc2llbnVtbWVyIGlzIGFsIGluIGdlYnJ1aWsgZG9vciBkZSBDb25maWdJdGVtcyBtZXQgaGV0IHZvbGdlbmRlIG51bW1lcjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0luY2lkZW50c3RhdHVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdHZXNjaGllZGVuaXMgdmFuIENvbmZpZ3VyYXRpZS1pdGVtOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdJbmhvdWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0FhbmdlbWFha3Qgb3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnRGV0YWlsb3ZlcnppY2h0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0FhbnRhbCBjb25maWd1cmF0aWUtaXRlbXMgcGVyIHBhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnR2VlbiBjb25maWcgaXRlbSBnZWdldmVucyBnZXZvbmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTZWxlY3RlZXIgZGl0IGNvbmZpZ3VyYXRpZS1pdGVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnWm9la2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ09vayBpbiBlZXJkZXJlIHZlcnNpZXMgem9la2VuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHZvb3IgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0RpZXB0ZSBOaXZlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdJbi0vdWl0em9vbWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ01heC4ga29wcGVsaW5nc25pdmVhdSBiZXJlaWt0IHZvb3IgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdDb25maWd1cmF0aWUtaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdDb25maWd1cmF0aWUtaXRlbSBpbmZvcm1hdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0FjdHVlbGUgc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdBY3R1ZWxlIGluY2lkZW50c3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ0xhYXN0ZSB3aWp6aWdpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTGFhc3RlIHdpanppZ2luZyBkb29yJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVXcgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQ29uZmlnSXRlbSB6b2VrZW4nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ1R5cGUgb2JqZWN0JzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmlsdGVyIG9wIHR5cGUnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdEZSB2b2xnZW5kZSBrbGFzc2VuIHdvcmRlbiBnZcOvbXBvcnRlZXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0RlIHZvbGdlbmRlIHJvbGxlbiB3b3JkZW4gZ2XDr21wb3J0ZWVyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdNZXJrIG9wIGRhdCBvb2sgb3ZlcmVlbmtvbXN0aWdlIGR5bmFtaXNjaGUgdmVsZGVuIGVuIEdlbmVyYWxDYXRhbG9nIGtsYXNzZW4gd29yZGVuIGFhbmdlbWFha3QgZW4gZGF0IGRlemUgbmlldCBhdXRvbWF0aXNjaCB3b3JkZW4gdmVyd2lqZGVyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdXaWwgamUgZG9vcmdhYW4/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ1Zvb3JiZWVsZGtsYXNzZW4gbm9kaWchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0RlZmluaXRpZSBpcyBnZWVuIGdlbGRpZ2UgWUFNTCBoYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ092ZXJ6aWNodDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0VyIGlzIGdlZW4gQ29uZmlnSXRlbUlEIG9wZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdKZSBoZWJ0IHRlbiBtaW5zdGUgw6nDqW4gZ2VzZWxlY3RlZXJkIGNvbmZpZ3VyYXRpZS1pdGVtIG5vZGlnISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ0plIGhlYnQgZ2VlbiBzY2hyaWpmdG9lZ2FuZyB0b3QgZGl0IGNvbmZpZ3VyYXRpZS1pdGVtOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnRXIgaXMgZ2VlbiBkZWZpbml0aWUgZ2VkZWZpbmllZXJkIHZvb3Iga2xhc3NlICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnIGl0ZW0gIiVzIiBuaWV0IGdldm9uZGVuIGluIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ0RlZmluaWVlcnQgaGV0IGFhbnRhbCByaWplbiB2b29yIGRlIENJLWRlZmluaXRpZS1lZGl0b3IgaW4gZGUgYmVoZWVyaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnR2VlbiB2ZXJzaWUgZ2V2b25kZW4gdm9vciBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0VyIGlzIGdlZW4gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvZiBDbGFzc0lEIG9wZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0VyIHdvcmR0IGdlZW4gdG9lZ2FuZyBnZWdldmVuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdLYW4gZ2VzY2hpZWRlbmlzIG5pZXQgd2VlcmdldmVuLCBlciBpcyBnZWVuIENvbmZpZ0l0ZW1JRCBvcGdlZ2V2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnS2FuIGdlc2NoaWVkZW5pcyBuaWV0IHdlZXJnZXZlbiwgZ2VlbiB0b2VnYW5nc3JlY2h0ZW4gZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05pZXV3IENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTmlldXdlIHZlcnNpZSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdGlvbnN0YXR1cyBiaWpnZXdlcmt0IChuaWV1dz0lcywgb3VkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdJbmNpZGVudCBzdGF0dXMgYmlqZ2V3ZXJrdCAobmlldXc9JXMsIG91ZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgdmVyd2lqZGVyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0xpbmsgbmFhciAlcyAodHlwZT0lcykgdG9lZ2V2b2VnZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGluayBuYWFyICVzICh0eXBlPSVzKSB2ZXJ3aWpkZXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdDb25maWdJdGVtIGRlZmluaXRpZSBiaWpnZXdlcmt0IChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOYWFtIGJpamdld2Vya3QgKG5pZXV3PSVzLCBvdWQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidXV0ICVzIGJpamdld2Vya3QgdmFuICIlcyIgbmFhciAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpZSAlcyB2ZXJ3aWpkZXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0VyIGlzIGdlZW4gQ29uZmlnSXRlbUlEIG9mIFZlcnNpb25JRCBvcGdlZ2V2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0thbiBjb25maWcgaXRlbSBuaWV0IHRvbmVuLCBnZWVuIHRvZWdhbmdzcmVjaHRlbiBnZWdldmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBuaWV0IGdldm9uZGVuIGluIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnYWZnZWRydWt0IGRvb3IgJXMgb3AgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW50aWUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdPbmdlbGRpZ2UgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdFciBpcyBnZWVuIENsYXNzSUQgZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdHZWVuIHRvZWdhbmdzcmVjaHRlbiB2b29yIGRlemUga2xhc3NlIGdlZ2V2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdHZWVuIHJlc3VsdGFhdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWcgaXRlbSB6b2VrcmVzdWx0YXRlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnS2FuIGl0ZW0gbmlldCB3ZWVyZ2V2ZW4sIGVyIHppam4gZ2VlbiB0b2VnYW5nc3JlY2h0ZW4gdm9vciBDb25maWdJdGVtIGdlZ2V2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbmlldCBnZXZvbmRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnR2VlbiB2ZXJzaWVzIGdldm9uZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhdGlvbmVlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnd2FhcnNjaHV3aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0RlIHN0YXR1cyB2YW4gZGl0IGNvbmZpZ3VyYXRpZS1pdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRGUgaW5jaWRlbnRzdGF0dXMgdmFuIGRpdCBjb25maWd1cmF0aWUtaXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0dlZW4gdG9lc3RlbW1pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdGVyIG9uZ2VsZGlnISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnWm9la3BhcmFtZXRlcnMgb25nZWxkaWchJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnV2VlcmdlZ2V2ZW4gY29uZmlndXJhdGllLWl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1R5cGUgaW56ZXRzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwZSBodWlkaWcgaW5jaWRlbnQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnVHVzc2VuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2ViZXBlcmtpbmdlbiB2b29yIGhldCBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWN0ZWVyIGVlbiBvZiBtZWVyIGtsYXNzZW4gb20gc2VsZWN0ZWVyYmFyZSBjb25maWd1cmF0aWUtaXRlbXMgdGUgYmVwZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tsYXNzZWJlcGVya2luZ2VuIHZvb3IgaGV0IGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWN0ZWVyIGVlbiBvZiBtZWVyIGtsYXNzZW4gb20gc2VsZWN0ZWVyYmFyZSBjb25maWd1cmF0aWUtaXRlbXMgdGUgYmVwZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWlzY2ggKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXNjaCAodmVyc2llKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXBlIHZlcndpanppbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnT2YgZGV6ZSBsaW5rIHZhbiB0b2VwYXNzaW5nIGlzIG9wIGhldCBDb25maWdJdGVtIG9mIGRlIHN0YXRpc2NoZSB2ZXJzaWUgdmFuIGhldCBvYmplY3Qgd2Fhcm5hYXIgdmVyd2V6ZW4gd29yZHQuIERlIGJlcmVrZW5pbmcgdmFuIGRlIGh1aWRpZ2UgaW5jaWRlbnR0b2VzdGFuZCB3b3JkdCBhbGxlZW4gdWl0Z2V2b2VyZCBvcCBkeW5hbWlzY2hlIGxpbmtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjdGVlciBoZXQgYXR0cmlidXV0IHdhYXJvcCBkZSBjb25maWd1cmF0aWUtaXRlbXMgbW9ldGVuIHdvcmRlbiBkb29yem9jaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCYXNpc3N0cnVjdHV1ciBpcyBvbmdlbGRpZy4gR2VlZiBlZW4gaGFzaCBtZXQgZ2VnZXZlbnMgaW4gWUFNTC1pbmRlbGluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdEZSBZQU1MLXN0cmluZyBiZWdpbm5lbiBtZXQgXCctLS1cJyBpcyB2ZXJlaXN0Lic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdLb24gZGUgdGFiZWwgY29uZmlnaXRlbV9saW5rIG5pZXQgdmVyd2lqZGVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdFciB6aWpuIGdlZW4gcmVsZXZhbnRlIGR5bmFtaXNjaGUgdmVsZGVuIGdldm9uZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnS29uIG5pZXQgaW52b2VnZW4gaW4gZGUgdGFiZWwgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcwIHJpamVuIGluZ2V2b2VnZCBpbiBkZSB0YWJlbCBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWF4aW1hbGUgaG9ldmVlbGhlaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnQmlqbGFnZW4gaW1wb3J0ZXJlbi9leHBvcnRlcmVuIChhbHMgbGFhdHN0ZSBpbnZvZXIgcGVyIHJlZ2VsKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpZSBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRm91dCBiaWogaGV0IHN5bmNocm9uaXNlcmVuIHZhbiBkZSBkZWZpbml0aWVzLiBDb250cm9sZWVyIGhldCBsb2dib2VrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ0plIGhlYnQgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGllcyBkaWUgbmlldCBnZXN5bmNocm9uaXNlZXJkIHppam4uIEltcGxlbWVudGVlciBqZSBJVFNNQ29uZmlnSXRlbSBkeW5hbWlzY2hlIHZlbGR3aWp6aWdpbmdlbi4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1ZlcmxvcGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnSW4gb25kZXJob3VkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ0dlcGxhbm5lZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdJbiByZXBhcmF0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1VpdGdlZmFzZWVyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ092ZXJ6aWNodCBlbiBiZXZlc3RpZ2luZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdLbGFzc2VuL3JvbGxlbiBlbiBodW4gZ2VyZWxhdGVlcmRlIHZlbGRlbiBpbXBvcnRlcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnRXIgaXMgZWVuIGZvdXQgb3BnZXRyZWRlbiB0aWpkZW5zIGhldCBpbXBvcnRlcmVuIHZhbiBkZSBrbGFzc2UuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBWZXJib3JnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIEFmZ2ViZWVsZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnTWFha3QgdWl0Z2VicmVpZGUgem9la3Zvb3J3YWFyZGVuIG1vZ2VsaWprIGJpaiBoZXQgem9la2VuIG5hYXIgY29uZmlnIGl0ZW1zIGluIGRlIGFnZW50IGludGVyZmFjZS4gTWV0IGRlemUgZnVuY3RpZSBrdW4gamUgYmlqdm9vcmJlZWxkIHpvZWtlbiBvcCBjb25maWcgaXRlbSBuYWFtIG1ldCBkaXQgc29vcnQgY29uZGl0aWVzIHpvYWxzICIoKmtleTEqJiYqa2V5MiopIiBvZiAiKCprZXkxKnwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnTWFha3QgdWl0Z2VicmVpZGUgem9la3Zvb3J3YWFyZGVuIG1vZ2VsaWprIGJpaiBoZXQgem9la2VuIG5hYXIgY29uZmlndXJhdGllcyBpbiBkZSBrbGFudGVuaW50ZXJmYWNlLiBNZXQgZGV6ZSBmdW5jdGllIGt1biBqZSBiaWp2b29yYmVlbGQgem9la2VuIG9wIGNvbmZpZyBpdGVtIG5hYW0gbWV0IGRpdCBzb29ydCBjb25kaXRpZXMgem9hbHMgIigqa2V5MSomJiprZXkyKikiIG9mICIoKmtleTEqfCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdUb2VnZXdlemVuIENJXCdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSVwncyB0b2VnZXdlemVuIGFhbiBrbGFudGJlZHJpamYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSVwncyB0b2VnZXdlemVuIGFhbiBrbGFudGdlYnJ1aWtlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQi1pbnN0ZWxsaW5nZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0NvbnRyb2xlZXIgYWxsZWVuIG9wIGVlbiB1bmlla2UgbmFhbSBiaW5uZW4gZGV6ZWxmZGUgQ29uZmlnSXRlbS1rbGFzc2UgKFwnY2xhc3NcJykgb2YgZ2xvYmFhbCAoXCdnbG9iYWxcJyksIHdhdCBiZXRla2VudCBkYXQgZWxrIGJlc3RhYW5kIENvbmZpZ0l0ZW0gaW4gYWFubWVya2luZyB3b3JkdCBnZW5vbWVuIGJpaiBoZXQgem9la2VuIG5hYXIgZHVwbGljYXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ0tpZXMgZWVuIG1vZHVsZSBvbSBlZW4gbmFhbWdldmluZ3NzY2hlbWEgYWYgdGUgZHdpbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ0tpZXMgZWVuIG1vZHVsZSBvbSBlZW4gY2lqZmVyc2NoZW1hIGFmIHRlIGR3aW5nZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0tpZXMgZWVuIG1vZHVsZSBvbSBlZW4gdmVyc2llc2NoZW1hIGFmIHRlIGR3aW5nZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnS2llcyBrZW5tZXJrZW4gb20gaGV0IGFhbm1ha2VuIHZhbiBlZW4gbmlldXdlIHZlcnNpZSB0ZSBhY3RpdmVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0tpZXMgY2F0ZWdvcmllw6tuIG9tIHRvZSB0ZSB3aWp6ZW4gYWFuIGRlemUgY29uZmlnIGl0ZW0ga2xhc3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdLb2xvbSBjb25maWcgaXRlbSBmaWx0ZXJzIHZvb3IgQ29uZmlnSXRlbSBPdmVyemljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdLb2xvbW1lbiBkaWUga3VubmVuIHdvcmRlbiBnZWZpbHRlcmQgaW4gaGV0IGNvbmZpZyBpdGVtIG92ZXJ6aWNodCB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLiBPcG1lcmtpbmc6IEFsbGVlbiBDb25maWcgSXRlbSBhdHRyaWJ1dGVuIGVuIER5bmFtaXNjaGUgdmVsZGVuIChEeW5hbWljRmllbGRfTmFtZVgpIHppam4gdG9lZ2VzdGFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnQ29uZmlndXJhdGllLWl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdDb25maWd1cmF0aWUtaXRlbSB0b2V2b2VnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnQ29uZmlndXJhdGllLWl0ZW0gYmV3ZXJrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlndXJhdGllLWl0ZW0gZ2ViZXVydGVuaXNtb2R1bGUgZGllIGhldCBsb2dnZW4gbmFhciBnZXNjaGllZGVuaXMgaW4gZGUgYWdlbnRpbnRlcmZhY2UgbW9nZWxpamsgbWFha3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSBkaWUgY29uZmlnIGl0ZW1zIGJpandlcmt0IG5hYXIgaHVuIGh1aWRpZ2UgZGVmaW5pdGllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIGdlc2NoaWVkZW5pcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnQ29uZmlndXJhdGllLWl0ZW0gYWZkcnVra2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIHpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbSBib29tc3RydWN0dXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIHZhbiBkZSB2b2xnZW5kZSBrbGFzc2VuIHdvcmRlbiBuaWV0IG9wZ2VzbGFnZW4gb3AgZGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIE9tIGRpdCB0b2UgdGUgcGFzc2VuIG9wIGJlc3RhYW5kZSBDSXMsIG1vZXQgZGUgQ0ktbWlncmF0aWUgd29yZGVuIHVpdGdldm9lcmQgdmlhIGRlIGNvbnNvbGUsIG5hIGhldCB3aWp6aWdlbiB2YW4gZGV6ZSBvcHRpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgbWV0IGRlIHZvbGdlbmRlIGRlcGxveW1lbnQgc3RhdGVzIHdvcmRlbiBuaWV0IG9wZ2VzbGFnZW4gb3AgZGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIE9tIGRpdCB0b2UgdGUgcGFzc2VuIG9wIGJlc3RhYW5kZSBDSXMsIG1vZXQgZGUgQ0ktbWlncmF0aWUgd29yZGVuIHVpdGdldm9lcmQgdmlhIGRlIGNvbnNvbGUsIG5hIGhldCB3aWp6aWdlbiB2YW4gZGV6ZSBvcHRpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnQ29uZmlndXJhdGllIEl0ZW0gTGltaWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdDb25maWd1cmF0aWUgSXRlbSBsaW1pZXQgcGVyIHBhZ2luYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0RhdGFiYXNlIHZvb3IgY29uZmlndXJhdGllYmVoZWVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnQ29uZmlndXJhdGllLWl0ZW0gYnVsa21vZHVsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlndXJhdGllLWl0ZW0gem9layBiYWNrZW5kIHJvdXRlciB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0Fhbm1ha2VuIGVuIGJlaGVyZW4gdmFuIGRlZmluaXRpZXMgdm9vciBjb25maWd1cmF0aWUtaXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3Jlw6tlcnQgdGlja2V0cyB2b29yIENvbmZpZ0l0ZW1zIG9wIHNwZWNpZmlla2UgdGlqZHN0aXBwZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0tsYW50ZW4ga3VubmVuIGhpc3RvcmlzY2hlIENJLXZlcnNpZXMgemllbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnS2xhbnRlbiBoZWJiZW4gZGUgbW9nZWxpamtoZWlkIG9tIGhhbmRtYXRpZyB0ZSB3aXNzZWxlbiB0dXNzZW4gaGlzdG9yaXNjaGUgQ0ktdmVyc2llcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdTdGFuZGFhcmQgZ2VnZXZlbnMgb20gdGUgZ2VicnVpa2VuIG9wIGF0dHJpYnV1dCB2b29yIGNvbmZpZyBpdGVtIHpvZWtzY2hlcm0uIFZvb3JiZWVsZDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdTdGFuZGFhcmQgZ2VnZXZlbnMgb20gdGUgZ2VicnVpa2VuIG9wIGF0dHJpYnV1dCB2b29yIGNvbmZpZyBpdGVtIHpvZWtzY2hlcm0uIFZvb3JiZWVsZDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaWVlciBhY3RpZXMgd2FhcmJpaiBlZW4gaW5zdGVsbGluZ2Vua25vcCBiZXNjaGlrYmFhciBpcyBpbiBkZSB3aWRnZXQgdmFuIGdla29wcGVsZGUgb2JqZWN0ZW4gKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gSG91ZCBlciByZWtlbmluZyBtZWUgZGF0IGRlemUgYWN0aWVzIGRlIHZvbGdlbmRlIEpTLSBlbiBDU1MtYmVzdGFuZGVuIG1vZXRlbiBoZWJiZW4gZ2VyZWdpc3RyZWVyZDogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgZW4gQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5pZWVyIGVlbiBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWEgdm9vciB2ZXJzaWVzdHJpbmdzLiBBbGxlZW4gZ2VicnVpa3QgYWxzIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBpbmdlc3RlbGQgb3AgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluaWVlciBlZW4gc2V0IHZvb3J3YWFyZGVuIHdhYXJvbmRlciBlZW4ga2xhbnQgZWVuIGNvbmZpZ3VyYXRpZS1pdGVtIG1hZyB6aWVuLiBWb29yd2FhcmRlbiBrdW5uZW4gb3B0aW9uZWVsIHdvcmRlbiBiZXBlcmt0IHRvdCBiZXBhYWxkZSBrbGFudGdyb2VwZW4uIE5hYW0gaXMgaGV0IGVuaWdlIHZlcnBsaWNodGUgYXR0cmlidXV0LiBBbHMgZXIgZ2VlbiBhbmRlcmUgb3B0aWVzIHdvcmRlbiBnZWdldmVuLCB6dWxsZW4gYWxsZSBjb25maWd1cmF0aWUtaXRlbXMgemljaHRiYWFyIHppam4gb25kZXIgZGllIGNhdGVnb3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgdmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIElUU00tY29uZmlndXJhdGllLWl0ZW1zIHRlIHZlcndpamRlcmVuIG1ldCBiZWh1bHAgdmFuIGRlIEdlbmVyaWVrZSBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBJVFNNLWNvbmZpZ3VyYXRpZS1pdGVtcyBvcCB0ZSBoYWxlbiBtZXQgZGUgR2VuZXJpZWtlIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgdmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIElUU00tY29uZmlndXJhdGllLWl0ZW1zIHRlIGRvb3J6b2VrZW4gbWV0IGJlaHVscCB2YW4gZGUgR2VuZXJpZWtlIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgdmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIElUU00tY29uZmlndXJhdGllLWl0ZW1zIGluIHRlIHN0ZWxsZW4gbWV0IGJlaHVscCB2YW4gZGUgR2VuZXJpZWtlIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pZWVydCBlZW4gb3ZlcnppY2h0c21vZHVsZSBvbSBkZSBrbGVpbmUgd2VlcmdhdmUgdmFuIGVlbiBsaWpzdCBtZXQgY29uZmlndXJhdGllLWl0ZW1zIHdlZXIgdGUgZ2V2ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgb2YgZGUgbGFiZWxzIHZhbiBoZXQgbGlua3R5cGUgbW9ldGVuIHdvcmRlbiB3ZWVyZ2VnZXZlbiBpbiBkZSBrbm9vcHB1bnR2ZXJiaW5kaW5nZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IHJlZ3VsaWVyZSBleHByZXNzaWVzIGFmem9uZGVybGlqayB2b29yIGVsa2UgQ29uZmlnSXRlbS1rbGFzc2Ugb20gZGUgQ29uZmlnSXRlbS1uYWFtIHRlIGNvbnRyb2xlcmVuIGVuIG92ZXJlZW5rb21zdGlnZSBmb3V0bWVsZGluZ2VuIHdlZXIgdGUgZ2V2ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSBiZXNjaGlrYmFyZSBrb2xvbW1lbiB2YW4gQ0lzIGluIGhldCBjb25maWcgaXRlbSBvdmVyemljaHQgYWZoYW5rZWxpamsgdmFuIGRlIENJIGtsYXNzZS4gRWxrZSBlbnRyeSBtb2V0IGJlc3RhYW4gdWl0IGVlbiBjbGFzc25hYW0gZW4gZWVuIGFycmF5IHZhbiBiZXNjaGlrYmFyZSB2ZWxkZW4gdm9vciBkZSBvdmVyZWVuc3RlbW1lbmRlIGNsYXNzLiBEeW5hbWlzY2hlIHZlbGRyZWdlbHMgbW9ldGVuIGhldCBzY2hlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSByZXNwZWN0ZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgaGV0IHN0YW5kYWFyZCBjb25maWcgaXRlbSBhdHRyaWJ1dXQgdm9vciBoZXQgc29ydGVyZW4gdmFuIGhldCBjb25maWcgaXRlbSB2YW4gaGV0IHpvZWtyZXN1bHRhYXQgdmFuIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgaGV0IHN0YW5kYWFyZCBjb25maWcgaXRlbSBhdHRyaWJ1dXQgdm9vciBjb25maWcgaXRlbSBzb3J0ZXJpbmcgdmFuIGhldCBjb25maWcgaXRlbSB6b2VrcmVzdWx0YWF0IHZhbiBkZSBrbGFudGVuaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgaGV0IHN0YW5kYWFyZCBjb25maWcgaXRlbSBhdHRyaWJ1dXQgdm9vciBoZXQgc29ydGVyZW4gdmFuIGhldCBjb25maWcgaXRlbSB6b2VrcmVzdWx0YWF0IHZhbiBkZXplIGJld2Vya2luZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgc3RhbmRhYXJkIHZvbGdvcmRlIHZhbiBjb25maWcgaXRlbXMgaW4gaGV0IHpvZWtyZXN1bHRhYXQgdmFuIGRlIGFnZW50IGludGVyZmFjZS4gT21ob29nOiBvdWRzdGUgYm92ZW5hYW4uIE9tbGFhZzogbmlldXdzdGUgYm92ZW5hYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHN0YW5kYWFyZCB2b2xnb3JkZSB2YW4gY29uZmlnIGl0ZW1zIGluIGhldCB6b2VrcmVzdWx0YWF0IHZhbiBkZSBrbGFudGVuaW50ZXJmYWNlLiBPbWhvb2c6IG91ZHN0ZSBib3ZlbmFhbi4gT21sYWFnOiBuaWV1d3N0ZSBib3ZlbmFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSBzdGFuZGFhcmQgdm9sZ29yZGUgdmFuIGNvbmZpZ3VyYXRpZS1pdGVtcyBpbiBoZXQgem9la3Jlc3VsdGFhdCB2YW4gZGV6ZSBiZXdlcmtpbmcuIE9taG9vZzogb3Vkc3RlIGJvdmVuYWFuLiBPbWxhYWc6IG5pZXV3c3RlIGJvdmVuYWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSBzdGFuZGFhcmQgZ2V0b29uZGUga29sb21tZW4gdmFuIENJcyBpbiBoZXQgY29uZmlndXJhdGllLWl0ZW0gb3ZlcnppY2h0LCBhZmhhbmtlbGlqayB2YW4gZGUgQ0kga2xhc3NlLiBFbGsgaXRlbSBtb2V0IGJlc3RhYW4gdWl0IGVlbiBjbGFzc25hYW0gZW4gZWVuIGFycmF5IHZhbiBiZXNjaGlrYmFyZSB2ZWxkZW4gdm9vciBkZSBvdmVyZWVuc3RlbW1lbmRlIGNsYXNzLiBEeW5hbWlzY2hlIHZlbGRyZWdlbHMgbW9ldGVuIHZvbGRvZW4gYWFuIGhldCBzY2hlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnQmVwYWFsdCBkZSBzdGFuZGFhcmQgdGUgdG9uZW4gcmVsYXRpZWRpZXB0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBoZXQgc3RhbmRhYXJkIGdldG9vbmRlIGNvbmZpZyBpdGVtIHpvZWtrZW5tZXJrIHZvb3IgaGV0IGNvbmZpZyBpdGVtIHpvZWtzY2hlcm0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGhldCBzdGFuZGFhcmQgZ2V0b29uZGUgY29uZmlnIGl0ZW0gem9la2tlbm1lcmsgdm9vciBoZXQgY29uZmlnIGl0ZW0gem9la3NjaGVybS4gVm9vcmJlZWxkOiAiS2V5IiBtb2V0IGRlIG5hYW0gaGViYmVuIHZhbiBoZXQgZHluYW1pc2NoZSB2ZWxkIGluIGRpdCBnZXZhbCBcJ1hcJywgIkNvbnRlbnQiIG1vZXQgZGUgd2FhcmRlIGhlYmJlbiB2YW4gaGV0IGR5bmFtaXNjaGUgdmVsZCBhZmhhbmtlbGlqayB2YW4gaGV0IGR5bmFtaXNjaGUgdmVsZHR5cGUsIFRleHQ6ICJlZW4gdGVrc3QiLCBEcm9wZG93bjogIjEiLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBlbiBvZiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGhldCBzdGFuZGFhcmQgc3Vib2JqZWN0IHZhbiBkZSBrbGFzc2UgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSBiZXNjaGlrYmFyZSBrb2xvbW1lbiB2YW4gQ0lzIGluIGhldCBjb25maWcgaXRlbSBvdmVyemljaHQgYWZoYW5rZWxpamsgdmFuIGRlIENJIGtsYXNzZS4gRWxrZSBlbnRyeSBtb2V0IGJlc3RhYW4gdWl0IGVlbiBjbGFzc25hYW0gZW4gZWVuIGFycmF5IHZhbiBiZXNjaGlrYmFyZSB2ZWxkZW4gdm9vciBkZSBvdmVyZWVuc3RlbW1lbmRlIGNsYXNzLiBEeW5hbWlzY2hlIHZlbGRyZWdlbHMgbW9ldGVuIGhldCBzY2hlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSByZXNwZWN0ZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnQmVwYWFsdCBkZSBob29ndGUgdm9vciBkZSByaWNoIHRleHQgZWRpdG9yY29tcG9uZW50IHZvb3IgZGl0IHNjaGVybS4gVm9lciBlZW4gZ2V0YWwgKHBpeGVscykgb2YgZWVuIHByb2NlbnR1ZWxlIHdhYXJkZSAocmVsYXRpZWYpIGluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGhldCBhYW50YWwgcmlqZW4gdm9vciBkZSBDSS1kZWZpbml0aWUtZWRpdG9yIGluIGRlIGJlaGVlcmludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSB2b2xnb3JkZSB2YW4gZGUgaW5jaWRlbnR0b2VzdGFuZGVuIHZhbiBob29nIChiaWp2LiBjcmljaXRhYWwpIG5hYXIgbGFhZyAoYmlqdi4gZnVuY3Rpb25lZWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgcmVsZXZhbnRlIGRlcGxveW1lbnQgc3RhdGVzIHdhYXIgZ2Vrb3BwZWxkZSB0aWNrZXRzIGRlIHN0YXR1cyB2YW4gZWVuIENJIGt1bm5lbiBiZcOvbnZsb2VkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSB6b2VrbGltaWV0IHZvb3IgaGV0IHNjaGVybSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgem9la2xpbWlldCB2b29yIGhldCBzY2hlcm0gQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHpvZWtsaW1pZXQgdm9vciBoZXQgc2NoZXJtIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSB6b2VrbGltaWV0IHZvb3IgaGV0IHNjaGVybSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgZ2V0b29uZGUga29sb21tZW4gdmFuIENJXCdzIGluIGRlIGtvcHBlbHRhYmVsIGNvbXBsZXhlIHdlZXJnYXZlIHZvb3IgYWxsZSBDSS1rbGFzc2VuLiBBbHMgZXIgZ2VlbiBpbnZvZXIgaXMsIGRhbiB3b3JkZW4gZGUgc3RhbmRhYXJkIGtvbG9tbWVuIGdldG9vbmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIGdldG9vbmRlIGtvbG9tbWVuIHZhbiBDSXMgaW4gZGUgbGlua3RhYmVsIGNvbXBsZXhlIHdlZXJnYXZlLCBhZmhhbmtlbGlqayB2YW4gZGUgQ0kta2xhc3NlLiBFbGsgaXRlbSBtb2V0IHZvb3JhZmdlZ2FhbiB3b3JkZW4gZG9vciBkZSBuYWFtIHZhbiBkZSBrbGFzc2UgZW4gZHViYmVsZSBkdWJiZWxlIHB1bnRlbiAoYnYuIENvbXB1dGVyOjopLiBFciB6aWpuIGVlbiBwYWFyIENJLWF0dHJpYnV0ZW4gZGllIGdlbWVlbnNjaGFwcGVsaWprIHppam4gdm9vciBhbGxlIENJXCdzICh2b29yYmVlbGQgdm9vciBkZSBrbGFzc2UgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIE9tIGluZGl2aWR1ZWxlIENJLUF0dHJpYnV0ZW4gdGUgdG9uZW4gem9hbHMgZ2VkZWZpbmllZXJkIGluIGRlIENJLWRlZmluaXRpZSwgbW9ldCBoZXQgdm9sZ2VuZGUgc2NoZW1hIGdlYnJ1aWt0IHdvcmRlbiAodm9vcmJlZWxkIHZvb3IgZGUga2xhc3NlIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXRlaXQ6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0ZWl0OjoxLiBBbHMgZXIgZ2VlbiBpbnZvZXIgaXMgdm9vciBlZW4gQ0kta2xhc3NlLCBkYW4gd29yZGVuIGRlIHN0YW5kYWFyZGtvbG9tbWVuIHdlZXJnZWdldmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgd2Vsa2UgaXRlbXMgYmVzY2hpa2JhYXIgemlqbiB2b29yIFwnQWN0aWVcJyBvcCBoZXQgZGVyZGUgbml2ZWF1IHZhbiBkZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1dXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCB3ZWxrZSBpdGVtcyBiZXNjaGlrYmFhciB6aWpuIGluIGhldCBlZXJzdGUgbml2ZWF1IHZhbiBkZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1dXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgd2Vsa2UgaXRlbXMgYmVzY2hpa2JhYXIgemlqbiBpbiBoZXQgdHdlZWRlIG5pdmVhdSB2YW4gZGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IHdlbGsgdHlwZSBsaW5rIChnZW5vZW1kIHZhbnVpdCBoZXQgdGlja2V0cGVyc3BlY3RpZWYpIGRlIHN0YXR1cyB2YW4gZWVuIGdla29wcGVsZGUgQ0kga2FuIGJlw69udmxvZWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IHdlbGsgdHlwZSB0aWNrZXQgZGUgc3RhdHVzIHZhbiBlZW4gZ2Vrb3BwZWxkZSBDSSBrYW4gYmXDr252bG9lZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0RlZmluaXRpZSBiaWp3ZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIHZlcndpamRlcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnS2xldXIgdmFuIGRlIGluemV0c3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNlcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRHluYW1pc2NoZSB2ZWxkIGV2ZW50IG1vZHVsZSBkaWUgY29uZmlnIGl0ZW0gZGVmaW5pdGllcyBtYXJrZWVydCBhbHMgbmlldCBnZXN5bmNocm9uaXNlZXJkLCBhbHMgZGUgZHluYW1pc2NoZSB2ZWxkZW4gZGllIGhldCBiZXZhdCB2ZXJhbmRlcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2NoZSB2ZWxkZW4gZGllIHdvcmRlbiB3ZWVyZ2VnZXZlbiBpbiBoZXQgZXh0cmEgSVRTTS12ZWxkc2NoZXJtIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2NoZSB2ZWxkZW4gZGllIHdvcmRlbiB3ZWVyZ2VnZXZlbiBpbiBoZXQgc2NoZXJtIENvbmZpZyBpdGVtb3ZlcnppY2h0IHZhbiBkZSBrbGFudGVuaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2NoZSB2ZWxkZW4gZGllIHdvcmRlbiB3ZWVyZ2VnZXZlbiBpbiBoZXQgem9la3NjaGVybSB2b29yIGNvbmZpZyBpdGVtcyB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ01hYWt0IGJ1bGthY3RpZSB2b29yIGNvbmZpZ3VyYXRpZS1pdGVtcyBtb2dlbGlqaywgem9kYXQgZGUgYWdlbnQgZnJvbnRlbmQgYWFuIG1lZXIgZGFuIMOpw6luIGNvbmZpZ3VyYXRpZS1pdGVtIHRlZ2VsaWprIGthbiB3ZXJrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdTY2hha2VsdCBkZSBmdW5jdGllIGJ1bGthY3RpZSB2b29yIGNvbmZpZ3VyYXRpZS1pdGVtcyBhbGxlZW4gaW4gdm9vciBkZSB2ZXJtZWxkZSBncm9lcGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdTY2hha2VsdCBkZSBmdW5jdGlvbmFsaXRlaXQgaW4gb2YgdWl0IG9tIElUU00gb25maWd1cmF0aWUgaXRlbXMgdGUgY29udHJvbGVyZW4gb3AgdW5pZWtlIG5hbWVuLiBWb29yZGF0IGplIGRlemUgb3B0aWUgaW5zY2hha2VsdCwgbW9ldCBqZSBqZSBzeXN0ZWVtIGNvbnRyb2xlcmVuIG9wIGJlc3RhYW5kZSBjb25maWd1cmF0aWUtaXRlbXMgbWV0IGR1YmJlbGUgbmFtZW4uIEplIGt1bnQgZGl0IGRvZW4gbWV0IGhldCBjb25zb2xlIGNvbW1hbmRvIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnR2ViZXVydGVuaXNtb2R1bGUgb20gY29uZmlnaXRlbS1zdGF0dXMgaW4gdGUgc3RlbGxlbiBvcCB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdWZWxkZW4gdmFuIGRlIGNvbmZpZ3VyYXRpZS1pdGVtaW5kZXgsIGdlYnJ1aWt0IHZvb3IgaGV0IHpvZWtlbiBpbiBkZSB2b2xsZWRpZ2UgdGVrc3QuIFZlbGRlbiB3b3JkZW4gb29rIG9wZ2VzbGFnZW4sIG1hYXIgemlqbiBuaWV0IHZlcnBsaWNodCB2b29yIGRlIGFsZ2VtZW5lIGZ1bmN0aW9uYWxpdGVpdC4gSGV0IG9wbmVtZW4gdmFuIGJpamxhZ2VuIGthbiB3b3JkZW4gdWl0Z2VzY2hha2VsZCBkb29yIGhldCBpdGVtIG9wIDAgdGUgemV0dGVuIG9mIHRlIHZlcndpamRlcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnVmVsZGVuIGRpZSB6aWpuIG9wZ2VzbGFnZW4gaW4gZGUgaW5kZXggdmFuIGhldCBjb25maWd1cmF0aWUtaXRlbSBlbiBkaWUgd29yZGVuIGdlYnJ1aWt0IHZvb3IgYW5kZXJlIGRpbmdlbiBkYW4gem9la2VuIGluIGRlIHZvbGxlZGlnZSB0ZWtzdC4gVm9vciBkZSB2b2xsZWRpZ2UgZnVuY3Rpb25hbGl0ZWl0IHppam4gYWxsZSB2ZWxkZW4gdmVycGxpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ1Zvb3IgZWxrZSB3ZWJzZXJ2aWNlIChrZXkpIGthbiBlZW4gYXJyYXkgdmFuIGtsYXNzZW4gKHZhbHVlKSB3b3JkZW4gZ2VkZWZpbmllZXJkIHdhYXJvcCBkZSBpbXBvcnQgd29yZHQgYmVwZXJrdC4gVm9vciBhbGxlIGdla296ZW4ga2xhc3Nlbiwgb2YgYWxsZSBiZXN0YWFuZGUga2xhc3NlbiBtb2V0ZW4gZGUgaWRlbnRpZmljZXJlbmRlIGF0dHJpYnV0ZW4gd29yZGVuIGdla296ZW4gaW4gZGUgY29uZmlnIHZhbiBkZSBpbnZva2VyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsZXJlZ2lzdHJhdGllIHZvb3IgZGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGFhZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsZXJlZ2lzdHJhdGllIHZvb3IgZGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGFhZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGVyZWdpc3RyYXRpZSB2b29yIGRlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxhYWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ092ZXJ6aWNodCB2YW4gSVRTTS1jb25maWd1cmF0aWUtaXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPbXZhdCBkZXBsb3ltZW50IHN0YXRlcyBpbiBoZXQgem9la2VuIG5hYXIgY29uZmlndXJhdGllLWl0ZW1zIGluIGRlIGtsYW50ZW5pbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdXNpZWYgaW5jaWRlbnR0b2VzdGFuZGVuIGluIGhldCB6b2VrZW4gbmFhciBjb25maWd1cmF0aWVzIGluIGRlIGtsYW50ZW5pbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNYXhpbXVtYWFudGFsIGNvbmZpZ3VyYXRpZS1pdGVtcyBkYXQgbW9ldCB3b3JkZW4gd2VlcmdlZ2V2ZW4gaW4gaGV0IHJlc3VsdGFhdCB2YW4gZGV6ZSBiZXdlcmtpbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWxlIG9tIGRlIGdyb2VwIHRlIGNvbnRyb2xlcmVuIGRpZSB2ZXJhbnR3b29yZGVsaWprIGlzIHZvb3IgZWVuIGtsYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxlIG9tIGRlIGdyb2VwIHRlIGNvbnRyb2xlcmVuIGRpZSB2ZXJhbnR3b29yZGVsaWprIGlzIHZvb3IgZWVuIGNvbmZpZ3VyYXRpZS1pdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsZSB2b29yIGhldCBnZW5lcmVyZW4gdmFuIElUU00tY29uZmlndXJhdGllc3RhdGlzdGlla2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05hYW0gTW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW1tZXIgTW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FhbnRhbCBjb25maWd1cmF0aWUtaXRlbXMgZGF0IG1vZXQgd29yZGVuIHdlZXJnZWdldmVuIG9wIGVsa2UgcGFnaW5hIHZhbiBlZW4gem9la3Jlc3VsdGFhdCBpbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWFudGFsIGNvbmZpZ3VyYXRpZS1pdGVtcyBkYXQgbW9ldCB3b3JkZW4gd2VlcmdlZ2V2ZW4gb3AgZWxrZSBwYWdpbmEgdmFuIGVlbiB6b2VrcmVzdWx0YWF0IGluIGRlIGtsYW50ZW5pbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWN0ZW4gd2Fhcm5hYXIgZ2V6b2NodCBtb2V0IHdvcmRlbiwgaG9ldmVlbCBpdGVtcyBlbiB3ZWxrZSBhdHRyaWJ1dGVuIGdldG9vbmQgbW9ldGVuIHdvcmRlbi4gQ29uZmlnSXRlbS1hdHRyaWJ1dGVuIG1vZXRlbiBleHBsaWNpZXQgd29yZGVuIG9wZ2VzbGFnZW4gdmlhIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ092ZXJ6aWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSBjYXRlZ29yaWXDq24gdm9vciBjb25maWcgaXRlbSBrbGFzc2VuIGluIGRlIHZvb3JrZXVyZW4gd2VlcmdhdmUgdmFuIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUga29sb21maWx0ZXJzIHZhbiBoZXQga2xlaW5lIGNvbmZpZ3VyYXRpZS1pdGVtb3ZlcnppY2h0LiBMZXQgb3A6IGFscyBqZSBcJ0FjdGllZlwnIG9wIDAgemV0LCBrdW5uZW4gYWdlbnRzIGFsbGVlbiBkZSBpbnN0ZWxsaW5nZW4gdmFuIGRlemUgZ3JvZXAgbmlldCBiZXdlcmtlbiBpbiBodW4gcGVyc29vbmxpamtlIHZvb3JrZXVyZW4sIG1hYXIga3VubmVuIGJlaGVlcmRlcnMgd2VsIGRlIGluc3RlbGxpbmdlbiB2YW4gZWVuIGFuZGVyZSBnZWJydWlrZXIgYmV3ZXJrZW4uIEdlYnJ1aWsgXCdQcmVmZXJlbmNlR3JvdXBcJyBvbSB0ZSBiZXBhbGVuIGluIHdlbGsgZ2ViaWVkIGRlemUgaW5zdGVsbGluZ2VuIG1vZXRlbiB3b3JkZW4gd2VlcmdlZ2V2ZW4gaW4gZGUgZ2VicnVpa2Vyc2ludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSBpbnpldHN0YXR1c3NlbiBrbGV1cmVuIGluIGRlIHZvb3JrZXVyZW53ZWVyZ2F2ZSB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyB2b29yIGRlIGluemV0c3RhdHVzc2VuIGluIGRlIHZvb3JrZXVyZW53ZWVyZ2F2ZSB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSB2b29yYmVlbGQgcGVyaW1zc2llZ3JvZXBlbiB2YW4gZGUgYWxnZW1lbmUgY2F0YWxvZyBhdHRyaWJ1dGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSBuYWFtbW9kdWxlIHZvb3IgY29uZmlnIGl0ZW0ga2xhc3NlbiBpbiBkZSB2b29ya2V1cmVud2VlcmdhdmUgdmFuIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSBudW1tZXJtb2R1bGUgdm9vciBjb25maWcgaXRlbWtsYXNzZW4gaW4gZGUgdm9vcmtldXJlbndlZXJnYXZlIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldGVycyB2b29yIGRlIHBhZ2luYVwncyAod2Fhcm9wIGRlIGNvbmZpZ3VyYXRpZS1pdGVtcyB3b3JkZW4gd2VlcmdlZ2V2ZW4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUgdmVyc2llIHN0cmluZyBtb2R1bGUgdm9vciBjb25maWcgaXRlbSBrbGFzc2VuIGluIGRlIHZvb3JrZXVyZW4gd2VlcmdhdmUgdmFuIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUgdmVyc2llIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSB2b29yIGNvbmZpZyBpdGVtIGtsYXNzZW4gaW4gZGUgdm9vcmtldXJlbiB3ZWVyZ2F2ZSB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUgdmVyc2llYWN0aXZlcmluZyB2b29yIGNvbmZpZyBpdGVta2xhc3NlbiBpbiBkZSB2b29ya2V1cmVud2VlcmdhdmUgdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ1ZvZXJ0IGRlIGdlY29uZmlndXJlZXJkZSBhY3RpZSB1aXQgdm9vciBlbGtlIGdlYmV1cnRlbmlzIChhbHMgSW52b2tlcikgdm9vciBlbGtlIGdlY29uZmlndXJlZXJkZSB3ZWJzZXJ2aWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnUGVybWlzc2llIGdyb2VwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBkZSBJVFNNIGNvbmZpZ3VyYXRpZSBpdGVtIGF0dGFjaG1lbnQgYWN0aWUgdGUgZ2VicnVpa2VuIGluIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBoZXQgSVRTTS1jb25maWd1cmF0aWUtaXRlbSBzY2hlcm0gaW4gZGUgYWdlbnQgaW50ZXJmYWNlIHRlIGdlYnJ1aWtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gaGV0IHpvZWtzY2hlcm0gdm9vciBJVFNNLWNvbmZpZ3VyYXRpZS1pdGVtcyBpbiBkZSBhZ2VudGludGVyZmFjZSB0ZSBnZWJydWlrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIGhldCB6b2Vrc2NoZXJtIHZvb3IgSVRTTS1jb25maWd1cmF0aWUtaXRlbXMgaW4gZGUga2xhbnRlbmludGVyZmFjZSB0ZSBnZWJydWlrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIGhldCBJVFNNLWNvbmZpZ3VyYXRpZSBpdGVtIGJvb21zdHJ1Y3R1dXIgc2NoZXJtIHRlIGdlYnJ1aWtlbiBpbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBoZXQgSVRTTS1jb25maWd1cmF0aWUgaXRlbSB6b29tc2NoZXJtIHRlIGdlYnJ1aWtlbiBpbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIGhldCBzY2hlcm0gSVRTTS1jb25maWd1cmF0aWUtaXRlbSB0b2V2b2VnZW4gaW4gZGUgYWdlbnRpbnRlcmZhY2UgdGUgZ2VicnVpa2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gaGV0IGJ1bGsgSVRTTS1jb25maWd1cmF0aWUtaXRlbSBzY2hlcm0gaW4gZGUgYWdlbnQgaW50ZXJmYWNlIHRlIGdlYnJ1aWtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIGhldCBzY2hlcm0gSVRTTS1jb25maWd1cmF0aWUtaXRlbSBiZXdlcmtlbiBpbiBkZSBhZ2VudGludGVyZmFjZSB0ZSBnZWJydWlrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcmVpc3RlIG1hY2h0aWdpbmdlbiBvbSBoZXQgSVRTTS1jb25maWd1cmF0aWUtaXRlbSBnZXNjaGllZGVuaXMgc2NoZXJtIGluIGRlIGFnZW50IGludGVyZmFjZSB0ZSBnZWJydWlrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gaGV0IHNjaGVybSBtZXQgSVRTTS1jb25maWd1cmF0aWUtaXRlbXMgYWZkcnVra2VuIHRlIGdlYnJ1aWtlbiBpbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ZlcmVpc3RlIHByaXZpbGVnZXMgb20gY29uZmlnIGl0ZW1zIHRlIHZlcndpamRlcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtcyB6b2VrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdTdGVsIGRlIGluY2lkZW50c3RhdHVzIHZhbiBlZW4gQ0kgYXV0b21hdGlzY2ggaW4gd2FubmVlciBlZW4gdGlja2V0IGlzIGdla29wcGVsZCBhYW4gZWVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1N0ZWx0IGRlIHVpdHJvbHN0YXR1cyBpbiBoZXQgYnVsa3NjaGVybSB2b29yIGNvbmZpZ3VyYXRpZS1pdGVtcyB2YW4gZGUgYWdlbnRpbnRlcmZhY2UgaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1N0ZWx0IGRlIGluY2lkZW50c3RhdHVzIGluIGluIGhldCBidWxrc2NoZXJtIHZvb3IgY29uZmlndXJhdGllLWl0ZW1zIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb29udCBlZW4gbGluayBpbiBoZXQgbWVudSB3YWFybWVlIGVlbiBjb25maWd1cmF0aWUtaXRlbSBrYW4gd29yZGVuIGdla29wcGVsZCBhYW4gZWVuIGFuZGVyIG9iamVjdCBpbiBkZSB6b29td2VlcmdhdmUgdmFuIGhldCBjb25maWd1cmF0aWUtaXRlbSBpbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb29udCBlZW4gbGluayBpbiBoZXQgbWVudSB2b29yIHRvZWdhbmcgdG90IGRlIGdlc2NoaWVkZW5pcyB2YW4gZWVuIGNvbmZpZ3VyYXRpZS1pdGVtIGluIGhldCBjb25maWd1cmF0aWUtaXRlbW92ZXJ6aWNodCB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb29udCBlZW4gbGluayBpbiBoZXQgbWVudSB2b29yIHRvZWdhbmcgdG90IGRlIGdlc2NoaWVkZW5pcyB2YW4gZWVuIGNvbmZpZ3VyYXRpZS1pdGVtIGluIGRlIHpvb213ZWVyZ2F2ZSB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgb20gZWVuIGNvbmZpZ3VyYXRpZS1pdGVtIHRlIHZlcndpamRlcmVuIGluIGRlIHpvb213ZWVyZ2F2ZSB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdUb29udCBlZW4gbGluayBpbiBoZXQgbWVudSBvbSBkZSBsaW5rcyBuYWFyIGNvbmZpZ3VyYXRpZS1pdGVtcyB3ZWVyIHRlIGdldmVuIGFscyBlZW4gYm9vbXN0cnVjdHV1ci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb29udCBlZW4gbGluayBpbiBoZXQgbWVudSBvbSBlZW4gY29uZmlndXJhdGllIGl0ZW0gdGUgZHVwbGljZXJlbiBpbiBoZXQgY29uZmlndXJhdGllIGl0ZW0gb3ZlcnppY2h0IHZhbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rvb250IGVlbiBsaW5rIGluIGhldCBtZW51IG9tIGVlbiBjb25maWd1cmF0aWUgaXRlbSB0ZSBkdXBsaWNlcmVuIGluIGRlIHpvb20gd2VlcmdhdmUgdmFuIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rvb250IGVlbiBsaW5rIGluIGhldCBtZW51IG9tIGVlbiBjb25maWd1cmF0aWUtaXRlbSB0ZSBiZXdlcmtlbiBpbiBkZSB6b29td2VlcmdhdmUgdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgb20gdGVydWcgdGUgZ2FhbiBpbiBkZSBjb25maWd1cmF0aWUgaXRlbSB6b29tIHdlZXJnYXZlIHZhbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgb20gZWVuIGNvbmZpZ3VyYXRpZS1pdGVtIGFmIHRlIGRydWtrZW4gaW4gZGUgem9vbXdlZXJnYXZlIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb29udCBlZW4gbGluayBpbiBoZXQgbWVudSBvbSBpbiB0ZSB6b29tZW4gb3AgZWVuIGNvbmZpZ3VyYXRpZS1pdGVtIGluIGhldCBjb25maWd1cmF0aWUtaXRlbW92ZXJ6aWNodCB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZGUgY29uZmlnIGl0ZW0gZ2VzY2hpZWRlbmlzIChvbWdla2VlcmQgZ2VvcmRlbmQpIGluIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnRGUgc3RhbmRhYXJkY2F0ZWdvcmllIGRpZSB3b3JkdCB3ZWVyZ2VnZXZlbiBhbHMgZXIgZ2VlbiBpcyBnZXNlbGVjdGVlcmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdEZSBpZGVudGlmaWVyIHZvb3IgZWVuIGNvbmZpZ3VyYXRpZS1pdGVtLCBiaWp2LiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gRGUgc3RhbmRhYXJkd2FhcmRlIGlzIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ1RyaWdnZXJ0IGF1dG9tYXRpc2NoIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2llIFN0cmluZyBVaXRkcnVra2luZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaWUgU3RyaW5nIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaWUgdHJla2tlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnT2YgaGV0IHVpdHZvZXJlbiB2YW4gQ29uZmlnSXRlbUFDTCB2ZXJtZWRlbiBrYW4gd29yZGVuIGRvb3IgdmVsZGFmaGFua2VsaWpraGVkZW4gaW4gZGUgY2FjaGUgdGUgY29udHJvbGVyZW4uIERpdCBrYW4gZGUgbGFhZHRpamQgdmFuIGZvcm11bGllcmVuIHZlcmJldGVyZW4sIG1hYXIgbW9ldCB1aXRnZXNjaGFrZWxkIHdvcmRlbiBhbHMgQUNMTW9kdWxlcyBnZWJydWlrdCBtb2V0ZW4gd29yZGVuIHZvb3IgSVRTTUNvbmZpZ0l0ZW0tIGVuIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdXZWxrZSBhbGdlbWVuZSBpbmZvcm1hdGllIHdvcmR0IHdlZXJnZWdldmVuIGluIGRlIGtvcHRla3N0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICd3ZXJlbGR3aWpkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1Y3RpZWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZXByb2R1Y3RpZWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1Y3RpZWYnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgaW5jaCAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDUzLDM0IGNtICgyMSBpbmNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBpbmNoICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IGluY2ggKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS1pbmNoIHJlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgaW5jaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiA4OCw5IGNtICgzNSBpbmNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS1pbmNoIHJlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgaW5jaCAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLWluY2ggcmVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBpbmNoICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBpbmNoICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBpbmNoICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgaW5jaCAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSBpbmNoICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBpbmNoICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBpbmNoICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBpbmNoICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBpbmNoICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgaW5jaCAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDE3MywzNSBjbSAoNjgsMjUgaW5jaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogMTMsMzQgY20gKDUsMjUgaW5jaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSBpbmNoICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIGluY2ggKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogMjAwLDAyIGNtICg3OCw3NSBpbmNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIGluY2ggKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiAyMTMsMzYgY20gKDg0IGluY2gpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgaW5jaCAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgaW5jaCAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLDUgaW5jaCAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBpbmNoICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IGluY2ggKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgaW5jaCAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQm9la2hvdWRpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBZHJlc3RvZXdpanppbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0JlaGVlcmRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb2dlIHRlbGVmb29uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVHlwZSBhcHBhcmFhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0FjY3VjYXBhY2l0ZWl0IChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnQmF0dGVyaWp0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnR2Vib3V3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdCdXNpbnRlcmZhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFUta2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2l0ZWl0IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdDYXBhY2l0ZWl0IHBlciBncmFmaXNjaGUga2FhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLYWFydG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0thYXJ0bGV6ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnS2FhcnR0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdLbGFudGNlcnRpZmljYXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSB2b29yIGtsYW50ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2F0ZWdvcmllIGtsYW50ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnS2xva3NuZWxoZWlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdLbG9rc25lbGhlaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NvZGUgb25kZXJ0ZWtlbmVuZGUgY2VydGlmaWNhdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdDb25mZXJlbnRpZXRlbGVmb29uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnQWR2aWVzb3ZlcmVlbmtvbXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdOZWVtIGNvbnRhY3Qgb3AgbWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdOZWVtIGNvbnRhY3Qgb3AgbWV0IGRpc3RyaWJ1dGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0JlaGVlciB2YW4gY29udGFpbmVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0NvbnRyYWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUeXBlIGNvbnRyYWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnQ29udHJhY3RwZXJpb2RlIHZhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdDb250cmFjdHBlcmlvZGUgdG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ0RyYWFkbG96ZSB0ZWxlZm9vbiAoREVDVC10ZWxlZm9vbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnS29zdGVuZWVuaGVpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0FhbnRhbCBsaWNlbnRpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0Fhbm1hYWtkYXR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnUmVrIG9wIG1hYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgR2VyZXNlcnZlZXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtc2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXR1bSBmYWN0dXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXR1bSBiZXN0ZWxsaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXR1bSB2YW4gZ2FyYW50aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRGF0dW0gdmFuIHVpdGdhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYXRlbiB2b29yIGRvY3VtZW50b25kZXJ0ZWtlbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0ktcmVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFLW1haWxjZXJ0aWZpY2F0ZW4gKFMvTUlNRS1jZXJ0aWZpY2F0ZW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0FyYmVpZHNvdmVyZWVua29tc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdJUC1hZHJlcyBlaW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0VpbmRlIG9uZGVyc3RldW5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdWZXJ2YWxkYXR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRXh0ZXJuZSBoYXJkZSBzY2hpamYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdGaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnVmxpZWd3aWVsIEVuZXJnaWVvcHNsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdWb3JtZmFjdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2VvdmVyZWVua29tc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdBbGdlbWVuZSBpbmZvcm1hdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlzY2hlIGthYXJ0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0dyYWZpc2NoZSBrYWFydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnSGFyZHdhcmVtb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdHZXdpY2h0IGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdIb29mZHRlbGVmb29uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAtcHJvdG9jb2wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnSWRlbnRpdGVpdHMtIGVuIHRvZWdhbmdzYmVoZWVyIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdJbnZlbnRhcmlzbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnSW52ZXJzdGVyaW5nc2tvc3Rlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0ZhY3R1dXJudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUb2V0c2VuYm9yZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QtbW9uaXRvciAodmxvZWliYWFyLWtyaXN0YWxzY2hlcm0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQtbW9uaXRvciAobGljaHRlbWl0dGVyZW5kZSBkaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVmFzdGUgdGVsZWZvb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnQnJlZWR0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0xhYWcgMTogRnlzaWVrZSBsYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0xhYWcgMjogRGF0YWxpbmtsYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMYWFnIDM6IG5ldHdlcmtsYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0xhYWcgMzogbmV0d2Vya2xhYWcgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdMYWFnIDQ6IFRyYW5zcG9ydGxhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0xhYWcgNTogU2Vzc2llbGFhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdMYWFnIDY6IFByZXNlbnRhdGllbGFhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0xhYWcgNzogVG9lcGFzc2luZ3NsYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0h1dXJvdmVyZWVua29tc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaWNlbnRpZW92ZXJlZW5rb21zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW50aWVzbGV1dGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpY2VudGllIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0xpY2VudGllcGVyaW9kZSB2YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaWNlbnRpZXBlcmlvZGUgdG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXRoaXVtLWlqemVyZm9zZmFhdGJhdHRlcmlqIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGl0aGl1bS1Jb24gKExpLWlvbikgYmF0dGVyaWonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdMZW5pbmdzb3ZlcmVlbmtvbXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdHZXZlc3RpZ2QgaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTGVuZ3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnRmFicmlrYW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYXhpbWFhbCBkcmFhZ3Zlcm1vZ2VuIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdHZWhldWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ1R5cGUgZ2VoZXVnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWVsIG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpZWwgaW5nZWJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTW9kZWwgQmVzY2hyaWp2aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ01vbml0b3JyZXNvbHV0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnQWZtZXRpbmcgbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ011aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ05ldHdlcmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnTmV0d2VyayBpbmZvcm1hdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdOZXR3ZXJraW5mb3JtYXRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnTmV0d2Vya2xhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWtrZWwtY2FkbWl1bWJhdHRlcmlqIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2tlbG1ldGFhbGh5ZHJpZGUgKE5pTUgpIGJhdHRlcmlqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0dlaGVpbWhvdWRpbmdzb3ZlcmVlbmtvbXN0IChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTm90ZWJvb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdBYW50YWwgQ1BVXCdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ0FhbnRhbCBSQU0tbW9kdWxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdBYW50YWwgZ3JhZmlzY2hlIGthYXJ0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQtbW9uaXRvciAob3JnYW5pc2NoZSBsaWNodGVtaXR0ZXJlbmRlIGRpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdCZWRyaWpmc2tvc3Rlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdCZXN0ZWxudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdPdmVyaWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdVaXRnYW5nZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcnNjaGFwc292ZXJlZW5rb21zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb29ubnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUZWxlZm9vbiBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRnlzaWVrZSBrZXJuZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdTdHJvb212b29yemllbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0dla29jaHQgYmlqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdEaWVwdGUgcmVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnRWVuaGVkZW4gcmVrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnS2FtZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0ta2FhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTLWNlcnRpZmljYXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1Zlcmtvb3Bjb250cmFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbGxpZXQgdGVsZWZvb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnVmVyemVnZWxkZSBsb29kenV1cmJhdHRlcmlqIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VyaWVudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyIFNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnU2VydmljZW92ZXJlZW5rb21zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpY2V0YWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVHlwZSBzdG9wY29udGFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnTHVpZHNwcmVrZXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYWFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnU3RhcnQgSVAtYWRyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ09wc2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ09wc2xhZ3BhcnRpdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRG9jaHRlcm9uZGVybmVtaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdTYW1lbnZhdHRpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUaGluIENsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnRHJhZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1RvdGFhbCBSQU0tZ2VoZXVnZW4gZ3JhZmlzY2hlIGthYXJ0IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdUb3RhYWwgUkFNLWdlaGV1Z2VuIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ1RvdWNoc2NyZWVuIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3Jlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLWh1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSLWtvcHRlbGVmb29uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAtdGVsZWZvb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/pl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnBsX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdPZ8OzbG5lIGRhbmUgb3BlcmFjeWpuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnVXN0YXdpZW5pYSBkbGEgcHJ6eWNob2R6xIVjeWNoIGRhbnljaCDFvMSFZGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdVc3Rhd2llbmlhIHd5Y2hvZHrEhWN5Y2ggZGFueWNoIG9kcG93aWVkemknOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdaYXJ6xIVkemFuaWUgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdabWllxYQgZGVmaW5pY2rEmSBrbGFzeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnWm1pYW5hIGRlZmluaWNqaSByb2xpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUGFraWV0eSBrbGFzIFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ1R1dGFqIG1vxbxuYSBpbXBvcnRvd2HEhyBwYWtpZXR5IGtsYXMgUmVhZHkySW1wb3J0IHByZXplbnR1asSFY2UgbmFzemUgbmFqYmFyZHppZWogdHlwb3dlIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaS4gTmFsZcW8eSBwYW1pxJl0YcSHLCDFvGUgbW/FvGUgYnnEhyB3eW1hZ2FuYSBkb2RhdGtvd2Ega29uZmlndXJhY2phLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdBa3R1YWxpemFjamEgaXN0bmllasSFY3ljaCBwb2RtaW90w7N3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0dWogcGFraWV0eSBrbGFzIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnS2xhc2EgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ1JvbGEgZWxlbWVudHUga29uZmlndXJhY2ppJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRyIGRsYSBrbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1phem5hY3oga2xhc8SZIG5hIGxpxZtjaWUgYWJ5IHV0d29yennEhyBub3dlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0tsYXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnQWtjamEgZ3J1cG93YSBuYSBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU3RhbiB3ZHJvxbxlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnU3RhbiB6ZGFyemVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnUG/FgsSFY3ogeiBpbm55bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTmllcHJhd2lkxYJvd3kgbnVtZXIgQ0khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ051bWVyIGlubmVnbyBlbGVtZW50dSBrb25maWd1cmFjamksIHoga3TDs3J5bSBuYWxlxbx5IHNpxJkgcG/FgsSFY3p5xIcuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnQ3p5IG5hcHJhd2TEmSBjaGNlc3ogdXN1bsSFxIcgdGVuIGVsZW1lbnQga29uZmlndXJhY2ppPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYXp3YSB0ZWdvIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOYXp3YSBqZXN0IGp1xbwgdcW8eXdhbmEgcHJ6ZXogQ0kgbyBuYXN0xJlwdWrEhWN5Y2ggbnVtZXJhY2g6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnV2Vyc2phJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOdW1lciB3ZXJzamkgdGVnbyBlbGVtZW50dSBrb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOdW1lciB3ZXJzamkgamVzdCBqdcW8IHXFvHl3YW55IHByemV6IENvbmZpZ0l0ZW1zIHogbmFzdMSZcHVqxIVjeW0gbnVtZXJlbSAobnVtZXJhbWkpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhbiB3ZHJvxbxlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnU3RhbiB6ZGFyemVuaWEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0hpc3RvcmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnWmF3YXJ0b8WbxIcgaGlzdG9yaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ1V0d29yem9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdXaWRvayBzemN6ZWfDs8WCb3d5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0xpY3piYSBDSSBuYSBzdHJvbmllJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOaWUgem5hbGV6aW9ubyBkYW55Y2ggZWxlbWVudHUga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1d5YmllcnogdGVuIGVsZW1lbnQga29uZmlndXJhY2ppJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnVXJ1Y2hvbSB3eXN6dWtpd2FuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnVXd6Z2zEmWRuacSHIHBvcHJ6ZWRuaWUgd2Vyc2plPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IGRsYSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnUG96aW9tIGfFgsSZYm9rb8WbY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdQb3dpxJlrc3phbmllL3VzdXdhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ09zacSFZ25pxJl0byBtYWtzeW1hbG55IHBvemlvbSBsaW5rw7N3IGRsYSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0NJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjamUgbyBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdBa3R1YWxueSBzdGFuIHdkcm/FvGVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0FrdHVhbG55IHN0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnT3N0YXRuaW8gem1pZW5pb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ09zdGF0bmlvIHptaWVuaW9uZSBwcnpleic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0VsZW1lbnR5IGtvbmZpZ3VyYWNqaSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdXeXN6dWtpd2FuaWUgQ29uZmlnSXRlbSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnVHlwIG9iaWVrdHUnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0cnVqIHBvIHR5cGllJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnWmFpbXBvcnRvd2FuZSB6b3N0YW7EhSBuYXN0xJlwdWrEhWNlIGtsYXN5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1phaW1wb3J0b3dhbmUgem9zdGFuxIUgbmFzdMSZcHVqxIVjZSByb2xlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ05hbGXFvHkgcGFtacSZdGHEhywgxbxlIHpvc3RhbsSFIHLDs3duaWXFvCB1dHdvcnpvbmUgb2Rwb3dpZWRuaWUgcG9sYSBkeW5hbWljem5lIGkga2xhc3kgR2VuZXJhbENhdGFsb2csIGt0w7NyZSBuaWUgem9zdGFuxIUgYXV0b21hdHljem5pZSB1c3VuacSZdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnQ3p5IGNoY2VzeiBrb250eW51b3dhxIc/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ05lZWQgRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0RlZmluaWNqYSBuaWUgamVzdCBwcmF3aWTFgm93eW0gaGFzaGVtIFlBTUwuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnUHJ6ZWdsxIVkOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmllIHBvZGFubyBpZGVudHlmaWthdG9yYSBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnUG90cnplYm55IGplc3QgY28gbmFqbW5pZWogamVkZW4gd3licmFueSBlbGVtZW50IGtvbmZpZ3VyYWNqaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdOaWUgbWFzeiBkb3N0xJlwdSBkbyB6YXBpc3UgdGVnbyBlbGVtZW50dSBrb25maWd1cmFjamk6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdOaWUgemRlZmluaW93YW5vIGRlZmluaWNqaSBkbGEga2xhc3kgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdFbGVtZW50IGtvbmZpZ3VyYWNqaSAiJXMiIG5pZSB6b3N0YcWCIHpuYWxlemlvbnkgdyBiYXppZSBkYW55Y2ghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnTmllIHVkYcWCbyBzacSZIHVzdW7EhcSHIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ05pZSB6bmFsZXppb25vIHdlcnNqaSBkbGEgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOaWUgcG9kYW5vIGlkZW50eWZpa2F0b3JhIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgYW5pIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdCcmFrIGRvc3TEmXB1ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOaWUgbW/FvG5hIHd5xZt3aWV0bGnEhyBoaXN0b3JpaSwgbmllIHBvZGFubyBpZGVudHlmaWthdG9yYSBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmllIG1vxbxuYSB3ecWbd2lldGxpxIcgaGlzdG9yaWksIG5pZSBwb2Rhbm8gcHJhdyBkb3N0xJlwdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vd3kgZWxlbWVudCBrb25maWd1cmFjamkgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTm93YSB3ZXJzamEgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1pha3R1YWxpem93YW5vIHN0YW4gd2Ryb8W8ZW5pYSAobm93eT0lcywgc3Rhcnk9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1pha3R1YWxpem93YW5vIHN0YW4gaW5jeWRlbnR1IChub3d5PSVzLCBzdGFyeT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdVc3VuacSZdG8gQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnRG9kYW5vIGxpbmsgZG8gJXMgKHR5cGU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdMaW5rIGRvICVzICh0eXBlPSVzKSB1c3VuacSZdHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ1pha3R1YWxpem93YW5vIGRlZmluaWNqxJkgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTmF6d2EgemFrdHVhbGl6b3dhbmEgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0cnlidXQgJXMgemFrdHVhbGl6b3dhbnkgeiAiJXMiIGRvICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnV2Vyc2phICVzIHVzdW5pxJl0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOaWUgcG9kYW5vIGlkZW50eWZpa2F0b3JhIENvbmZpZ0l0ZW1JRCBsdWIgVmVyc2lvbklEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOaWUgbW/FvG5hIHd5xZt3aWV0bGnEhyBlbGVtZW50dSBrb25maWd1cmFjamksIG5pZSBwb2Rhbm8gcHJhdyBkb3N0xJlwdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbmllIHpvc3RhxYIgem5hbGV6aW9ueSB3IGJhemllIGRhbnljaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICd3eWRydWtvd2FueSBwcnpleiAlcyB3ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdQb2Rwb3dpZWR6aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ05pZXByYXdpZMWCb3d5IGlkZW50eWZpa2F0b3IgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOaWUgcG9kYW5vIGlkZW50eWZpa2F0b3JhIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnTmllIHByenl6bmFubyBwcmF3IGRvc3TEmXB1IGRsYSB0ZWoga2xhc3khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdCcmFrIFd5bmlrw7N3ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1d5bmlraSB3eXN6dWtpd2FuaWEgcG96eWNqaSBrb25maWd1cmFjamknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ05pZSBtb8W8bmEgd3nFm3dpZXRsacSHIGVsZW1lbnR1LCBuaWUgcG9kYW5vIHByYXcgZG9zdMSZcHUgZG8gQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnTmllIHpuYWxlemlvbm8gZWxlbWVudHUgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTmllIHpuYWxlemlvbm8gxbxhZG55Y2ggd2Vyc2ppISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhY3lqbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ29zdHJ6ZcW8ZW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY3lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGFuIHdkcm/FvGVuaWEgdGVnbyBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YW4gemRhcnplbmlhIHRlZ28gQ0knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdCcmFrIHVwcmF3bmllxYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdHIgbmllcHJhd2lkxYJvd3khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYXJhbWV0cnkgd3lzenVraXdhbmlhIHPEhSBuaWVwcmF3aWTFgm93ZSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdXecWbd2lldGxhbmUgZWxlbWVudHkga29uZmlndXJhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1R5cCBzdGFudSB3ZHJvxbxlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0FrdHVhbG55IHR5cCBzdGFudSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdQb21pxJlkenknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ09ncmFuaWN6ZW5pYSBrbGFzeSBkbGEgZWxlbWVudHUga29uZmlndXJhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdXeWJpZXJ6IGplZG7EhSBsdWIgd2nEmWNlaiBrbGFzLCBhYnkgb2dyYW5pY3p5xIcgd3liaWVyYW5lIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnT2dyYW5pY3plbmlhIGtsYXN5IGRsYSBlbGVtZW50dSBrb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdXeWJpZXJ6IGplZG7EhSBsdWIgd2nEmWNlaiBrbGFzLCBhYnkgb2dyYW5pY3p5xIcgd3liaWVyYW5lIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFtaWN6bnkgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKHdlcnNqYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVHlwIG9kbm/Fm25pa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnT2tyZcWbbGEsIGN6eSBwb3dpxIV6YW5pZSBkb3R5Y3p5IENvbmZpZ0l0ZW0sIGN6eSBzdGF0eWN6bmVqIHdlcnNqaSBvYmlla3R1IG9kbmllc2llbmlhLiBPYmxpY3phbmllIGJpZcW8xIVjZWdvIHN0YW51IGluY3lkZW50dSBqZXN0IHd5a29ueXdhbmUgdHlsa28gdyBwcnp5cGFka3UgxYLEhWN6eSBkeW5hbWljem55Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnV3liaWVyeiBhdHJ5YnV0LCB3ZWTFgnVnIGt0w7NyZWdvIGLEmWTEhSB3eXN6dWtpd2FuZSBlbGVtZW50eSBrb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdTdHJ1a3R1cmEgYmF6b3dhIGplc3QgbmllcHJhd2lkxYJvd2EuIFBvZGFqIGhhc2ggeiBkYW55bWkgdyBmb3JtYWNpZSBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1d5bWFnYW5lIGplc3Qgcm96cG9jesSZY2llIGNpxIVndSBZQU1MIG9kICItLS0iLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOaWUgbW/FvG5hIHd5Y3p5xZtjacSHIHRhYmVsaSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOaWUgem5hbGV6aW9ubyBvZHBvd2llZG5pY2ggcMOzbCBkeW5hbWljem55Y2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdOaWUgbW/FvG5hIHdzdGF3acSHIGRvIHRhYmVsaSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ1dzdGF3aW9ubyAwIHdpZXJzenkgZG8gdGFiZWxpIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYWtzeW1hbG5hIGxpY3piYSB3eXN0xIVwaWXFhCBwb2plZG55Y3plZ28gZWxlbWV0bnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9ydC9la3Nwb3J0IHphxYLEhWN6bmlrw7N3IChqYWtvIG9zdGF0bmllIHdwaXN5IHcgd2llcnN6dSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdDacSFZyB6bmFrw7N3IHdlcnNqaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdCxYLEhWQgc3luY2hyb25pemFjamkgZGVmaW5pY2ppLiBTcHJhd2TFuiBkemllbm5pay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdNYXN6IGRlZmluaWNqZSBJVFNNQ29uZmlnSXRlbSwga3TDs3JlIG5pZSBzxIUgenN5bmNocm9uaXpvd2FuZS4gTmFsZcW8eSB3ZHJvxbx5xIcgem1pYW55IHBvbGEgZHluYW1pY3puZWdvIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnV3lnYXPFgm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdVdHJ6eW1hbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3RhxbwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5vd2FueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdOYXByYXdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdXeWNvZmFueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdQcnplZ2zEhWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1ByemVnbMSFZCBpIHBvdHdpZXJkemVuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0b3dhbmllIGtsYXMvcsOzbCBpIHBvd2nEhXphbnljaCB6IG5pbWkgcMOzbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ1d5c3TEhXBpxYIgYsWCxIVkIHBvZGN6YXMgaW1wb3J0b3dhbmlhIGtsYXN5Lic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gVWtyeXR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBwb2themFubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVW1vxbxsaXdpYSByb3pzemVyem9uZSB3YXJ1bmtpIHd5c3p1a2l3YW5pYSB3IGludGVyZmVqc2llIGFnZW50YS4gRHppxJlraSB0ZWogZnVua2NqaSBtb8W8bmEgd3lzenVraXdhxIcgbnAuIG5henfEmSBlbGVtZW50dSBrb25maWd1cmFjamkgemEgcG9tb2PEhSB0ZWdvIHJvZHphanUgd2FydW5rw7N3LCB0YWtpY2ggamFrICIoKmtleTEqJiYqa2V5MiopIiBsdWIgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdVbW/FvGxpd2lhIHJvenN6ZXJ6b25lIHdhcnVua2kgd3lzenVraXdhbmlhIHcgaW50ZXJmZWpzaWUga2xpZW50YS4gRHppxJlraSB0ZWogZnVua2NqaSBtb8W8bmEgd3lzenVraXdhxIcgbnAuIG5henfEmSBlbGVtZW50dSBrb25maWd1cmFjamkgemEgcG9tb2PEhSB0ZWdvIHJvZHphanUgd2FydW5rw7N3LCB0YWtpY2ggamFrICIoKmtleTEqJiYqa2V5MiopIiBsdWIgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdQcnp5cGlzYW5lIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSSBwcnp5cGlzYW5pIGRvIGZpcm15IGtsaWVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSSBwcnp5cGlzYW5lIGRvIHXFvHl0a293bmlrYSBrbGllbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdVc3Rhd2llbmlhIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1NwcmF3ZHphbmllIHVuaWthbG5laiBuYXp3eSB0eWxrbyB3IG9icsSZYmllIHRlaiBzYW1laiBrbGFzeSBDb25maWdJdGVtICgiY2xhc3MiKSBsdWIgZ2xvYmFsbmllICgiZ2xvYmFsIiksIGNvIG96bmFjemEsIMW8ZSBrYcW8ZHkgaXN0bmllasSFY3kgQ29uZmlnSXRlbSBqZXN0IGJyYW55IHBvZCB1d2FnxJkgcG9kY3phcyB3eXN6dWtpd2FuaWEgZHVwbGlrYXTDs3cuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdXeWJpZXJ6IG1vZHXFgiwgYWJ5IHd5bXVzacSHIHNjaGVtYXQgbmF6ZXduaWN0d2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdXeWJpZXJ6IG1vZHXFgiwgYWJ5IHd5bXVzacSHIHNjaGVtYXQgbGljemJvd3kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1d5YmllcnogbW9kdcWCLCBhYnkgd3ltdXNpxIcgc2NoZW1hdCBjacSFZ8OzdyB3ZXJzamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnV3liaWVyeiBhdHJ5YnV0eSwgYWJ5IHVydWNob21pxIcgdHdvcnplbmllIG5vd2VqIHdlcnNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnV3liaWVyeiBrYXRlZ29yaWUsIGt0w7NyZSBjaGNlc3ogcHJ6eXBpc2HEhyBkbyB0ZWoga2xhc3kgZWxlbWVudMOzdyBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyeSBrb2x1bW4gZWxlbWVudMOzdyBrb25maWd1cmFjamkgZGxhIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdLb2x1bW55LCBrdMOzcmUgbW/FvG5hIGZpbHRyb3dhxIcgdyBwcnplZ2zEhWR6aWUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgaW50ZXJmZWpzdSBhZ2VudGEuIFV3YWdhOiBEb3p3b2xvbmUgc8SFIHR5bGtvIGF0cnlidXR5IHBvenljamkga29uZmlndXJhY2ppIGkgcG9sYSBkeW5hbWljem5lIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdFbGVtZW50eSBrb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0RvZGFuaWUgZWxlbWVudHUga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0VkeWNqYSBlbGVtZW50dSBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdcWCIHpkYXJ6ZcWEIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSwga3TDs3J5IHVtb8W8bGl3aWEgcmVqZXN0cm93YW5pZSBkbyBoaXN0b3JpaSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTW9kdcWCIHpkYXJ6ZcWEIGVsZW1lbnTDs3cga29uZmlndXJhY2ppLCBrdMOzcnkgYWt0dWFsaXp1amUgZWxlbWVudHkga29uZmlndXJhY2ppIGRvIGljaCBiaWXFvMSFY2VqIGRlZmluaWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0b3JpYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnV3lkcnVrIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdQb3dpxJlrc3plbmllIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdXaWRvayBkcnpld2EgZWxlbWVudMOzdyBrb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIG5hc3TEmXB1asSFY3ljaCBrbGFzIG5pZSBixJlkxIUgcHJ6ZWNob3d5d2FuZSBuYSBzZXJ3ZXJ6ZSBFbGFzdGljc2VhcmNoLiBBYnkgemFzdG9zb3dhxIcgdG8gZG8gaXN0bmllasSFY3ljaCBDSSwgbWlncmFjamEgQ0kgbXVzaSB6b3N0YcSHIHVydWNob21pb25hIHphIHBvxZtyZWRuaWN0d2VtIGtvbnNvbGksIHBvIHptaWFuaWUgdGVqIG9wY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdFbGVtZW50eSBDb25maWdJdGVtcyB6IG5hc3TEmXB1asSFY3ltaSBzdGFuYW1pIHdkcm/FvGVuaWEgbmllIGLEmWTEhSBwcnplY2hvd3l3YW5lIG5hIHNlcndlcnplIEVsYXN0aWNzZWFyY2guIEFieSB6YXN0b3Nvd2HEhyB0byBkbyBpc3RuaWVqxIVjeWNoIENJLCBtaWdyYWNqYSBDSSBtdXNpIHpvc3RhxIcgdXJ1Y2hvbWlvbmEgemEgcG/Fm3JlZG5pY3R3ZW0ga29uc29saSwgcG8gem1pYW5pZSB0ZWogb3BjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0xpbWl0IGxpY3pieSBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnTGltaXQgcG96eWNqaSBrb25maWd1cmFjamkgbmEgc3Ryb27EmS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0JhemEgZGFueWNoIHphcnrEhWR6YW5pYSBrb25maWd1cmFjasSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnTW9kdcWCIHpiaW9yY3p5IGVsZW1lbnR1IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWxlbWVudCBrb25maWd1cmFjamkgd3lzenVraXdhbmlhIHJvdXRlcmEgemFwbGVjemEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ1R3b3J6ZW5pZSBpIHphcnrEhWR6YW5pZSBkZWZpbmljamFtaSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdUd29yenkgYmlsZXR5IGRsYSBDb25maWdJdGVtcyB3IG9rcmXFm2xvbnljaCBwdW5rdGFjaCBjemFzb3d5Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0tsaWVuY2kgbW9nxIUgem9iYWN6ecSHIGhpc3Rvcnljem5lIHdlcnNqZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnS2xpZW5jaSBtYWrEhSBtb8W8bGl3b8WbxIcgcsSZY3puZWdvIHByemXFgsSFY3phbmlhIHNpxJkgbWnEmWR6eSBoaXN0b3J5Y3pueW1pIHdlcnNqYW1pIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RvbXnFm2xuZSBkYW5lIGRvIHXFvHljaWEgdyBhdHJ5YnVjaWUgZGxhIGVrcmFudSB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkuIFByenlrxYJhZDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEb215xZtsbmUgZGFuZSBkbyB1xbx5Y2lhIHcgYXRyeWJ1Y2llIGRsYSBla3JhbnUgd3lzenVraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppLiBQcnp5a8WCYWQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbml1amUgYWtjamUsIHcga3TDs3J5Y2ggcHJ6eWNpc2sgdXN0YXdpZcWEIGplc3QgZG9zdMSZcG55IHcgd2lkxbxlY2llIHBvxYLEhWN6b255Y2ggb2JpZWt0w7N3IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE5hbGXFvHkgcGFtacSZdGHEhywgxbxlIHRlIGFrY2plIG11c3rEhSBtaWXEhyB6YXJlamVzdHJvd2FuZSBuYXN0xJlwdWrEhWNlIHBsaWtpIEpTIGkgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBpIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBzY2hlbWF0IFRlbXBsYXRlOjpUb29sa2l0IGRsYSBjacSFZ8OzdyB3ZXJzamkuIFXFvHl3YW5lIHR5bGtvIGplxZtsaSBWZXJzaW9uIFN0cmluZyBNb2R1bGUgamVzdCB1c3Rhd2lvbnkgbmEgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSB6ZXN0YXcgd2FydW5rw7N3LCBuYSBwb2RzdGF3aWUga3TDs3J5Y2gga2xpZW50IG1vxbxlIHpvYmFjennEhyBlbGVtZW50IGtvbmZpZ3VyYWNqaS4gV2FydW5raSBtb2fEhSBiecSHIG9wY2pvbmFsbmllIG9ncmFuaWN6b25lIGRvIG9rcmXFm2xvbnljaCBncnVwIGtsaWVudMOzdy4gTmF6d2EgamVzdCBqZWR5bnltIG9ib3dpxIV6a293eW0gYXRyeWJ1dGVtLiBKZcWbbGkgbmllIHBvZGFubyDFvGFkbnljaCBpbm55Y2ggb3BjamksIHdzenlzdGtpZSBlbGVtZW50eSBrb25maWd1cmFjamkgYsSZZMSFIHdpZG9jem5lIHcgdGVqIGthdGVnb3JpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ09rcmXFm2xhIHd5bWFnYW5lIHVwcmF3bmllbmlhIGRvIHVzdXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIElUU00gcHJ6eSB1xbx5Y2l1IGludGVyZmVqc3Ugb2fDs2xuZWdvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pdWplIHd5bWFnYW5lIHVwcmF3bmllbmlhIGRvIHV6eXNraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIElUU00gcHJ6eSB1xbx5Y2l1IGludGVyZmVqc3Ugb2fDs2xuZWdvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pdWplIHd5bWFnYW5lIHVwcmF3bmllbmlhIGRvIHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNIHByenkgdcW8eWNpdSBpbnRlcmZlanN1IG9nw7NsbmVnby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSB3eW1hZ2FuZSB1cHJhd25pZW5pYSBkbyB1c3Rhd2lhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIElUU00gcHJ6eSB1xbx5Y2l1IGludGVyZmVqc3Ugb2fDs2xuZWdvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbml1amUgbW9kdcWCIHByemVnbMSFZHUgZG8gd3nFm3dpZXRsYW5pYSBtYcWCZWdvIHdpZG9rdSBsaXN0eSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnT2tyZcWbbGEsIGN6eSBldHlraWV0eSB0eXB1IMWCxIVjemEgbXVzesSFIGJ5xIcgd3nFm3dpZXRsYW5lIHcgcG/FgsSFY3plbmlhY2ggd8SZesWCw7N3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5pdWplIHd5cmHFvGVuaWEgcmVndWxhcm5lIGluZHl3aWR1YWxuaWUgZGxhIGthxbxkZWoga2xhc3kgQ29uZmlnSXRlbSB3IGNlbHUgc3ByYXdkemVuaWEgbmF6d3kgQ29uZmlnSXRlbSBpIHd5xZt3aWV0bGVuaWEgb2Rwb3dpZWRuaWNoIGtvbXVuaWthdMOzdyBvIGLFgsSZZGFjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbml1amUgZG9zdMSZcG5lIGtvbHVtbnkgQ0kgdyBwcnplZ2zEhWR6aWUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB6YWxlxbxub8WbY2kgb2Qga2xhc3kgQ0kuIEthxbxkeSB3cGlzIG11c2kgc2vFgmFkYcSHIHNpxJkgeiBuYXp3eSBrbGFzeSBpIHRhYmxpY3kgZG9zdMSZcG55Y2ggcMOzbCBkbGEgb2Rwb3dpZWRuaWVqIGtsYXN5LiBXcGlzeSBww7NsIGR5bmFtaWN6bnljaCBtdXN6xIUgYnnEhyB6Z29kbmUgemUgc2NoZW1hdGVtIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbml1amUgZG9tecWbbG55IGF0cnlidXQgZWxlbWVudHUga29uZmlndXJhY2ppIGRsYSBzb3J0b3dhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd3luaWthY2ggd3lzenVraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pdWplIGRvbXnFm2xueSBhdHJ5YnV0IHBvenljamkga29uZmlndXJhY2ppIGRsYSBzb3J0b3dhbmlhIHBvenljamkga29uZmlndXJhY2ppIHcgd3luaWthY2ggd3lzenVraXdhbmlhIHBvenljamkga29uZmlndXJhY2ppIGludGVyZmVqc3Uga2xpZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdPa3JlxZtsYSBkb215xZtsbnkgYXRyeWJ1dCBlbGVtZW50dSBrb25maWd1cmFjamkgZGxhIHNvcnRvd2FuaWEgd3luaWvDs3cgd3lzenVraXdhbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB0ZWogb3BlcmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdPa3JlxZtsYSBkb215xZtsbsSFIGtvbGVqbm/Fm8SHIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd3luaWthY2ggd3lzenVraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgaW50ZXJmZWpzaWUgYWdlbnRhLiBXIGfDs3LEmTogbmFqc3RhcnN6eSBuYSBnw7NyemUuIFcgZMOzxYI6IG5ham5vd3N6ZSBuYSBnw7NyemUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdPa3JlxZtsYSBkb215xZtsbsSFIGtvbGVqbm/Fm8SHIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd3luaWthY2ggd3lzenVraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgaW50ZXJmZWpzaWUga2xpZW50YS4gVyBnw7NyxJk6IG5hanN0YXJzemUgbmEgZ8OzcnplLiBXIGTDs8WCOiBuYWpub3dzemUgbmEgZ8OzcnplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdPa3JlxZtsYSBkb215xZtsbsSFIGtvbGVqbm/Fm8SHIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd3luaWthY2ggd3lzenVraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHRlaiBvcGVyYWNqaS4gVyBnw7NyxJk6IG5hanN0YXJzemUgbmEgZ8OzcnplLiBXIGTDs8WCOiBuYWpub3dzemUgbmEgZ8OzcnplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pdWplIGRvbXnFm2xuaWUgd3nFm3dpZXRsYW5lIGtvbHVtbnkgQ0kgdyBwcnplZ2zEhWR6aWUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB6YWxlxbxub8WbY2kgb2Qga2xhc3kgQ0kuIEthxbxkeSB3cGlzIG11c2kgc2vFgmFkYcSHIHNpxJkgeiBuYXp3eSBrbGFzeSBpIHRhYmxpY3kgZG9zdMSZcG55Y2ggcMOzbCBkbGEgb2Rwb3dpZWRuaWVqIGtsYXN5LiBXcGlzeSBww7NsIGR5bmFtaWN6bnljaCBtdXN6xIUgYnnEhyB6Z29kbmUgemUgc2NoZW1hdGVtIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ09rcmXFm2xhIGRvbXnFm2xuxIUgZ8WCxJlib2tvxZvEhyB3ecWbd2lldGxhbnljaCByZWxhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdPa3JlxZtsYSBkb215xZtsbmllIHd5xZt3aWV0bGFueSBhdHJ5YnV0IHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBkbGEgZWtyYW51IHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGRvbXnFm2xuaWUgd3nFm3dpZXRsYW55IGF0cnlidXQgd3lzenVraXdhbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBkbGEgZWtyYW51IHd5c3p1a2l3YW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkuIFByenlrxYJhZDogIktsdWN6IiBtdXNpIG1pZcSHIG5henfEmSBwb2xhIGR5bmFtaWN6bmVnbywgdyB0eW0gcHJ6eXBhZGt1ICJYIiwgIlphd2FydG/Fm8SHIiBtdXNpIG1pZcSHIHdhcnRvxZvEhyBwb2xhIGR5bmFtaWN6bmVnbyB3IHphbGXFvG5vxZtjaSBvZCB0eXB1IHBvbGEgZHluYW1pY3puZWdvLCBUZWtzdDogInRla3N0IiwgTGlzdGEgcm96d2lqYW5hOiAiMSIsIERhdGEvZ29kemluYTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGkgbHViIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBkb215xZtsbnkgcG9kb2JpZWt0IGtsYXN5ICJJVFNNQ29uZmlnSXRlbSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbml1amUgZG9zdMSZcG5lIGtvbHVtbnkgQ0kgdyBwcnplZ2zEhWR6aWUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB6YWxlxbxub8WbY2kgb2Qga2xhc3kgQ0kuIEthxbxkeSB3cGlzIG11c2kgc2vFgmFkYcSHIHNpxJkgeiBuYXp3eSBrbGFzeSBpIHRhYmxpY3kgZG9zdMSZcG55Y2ggcMOzbCBkbGEgb2Rwb3dpZWRuaWVqIGtsYXN5LiBXcGlzeSBww7NsIGR5bmFtaWN6bnljaCBtdXN6xIUgYnnEhyB6Z29kbmUgemUgc2NoZW1hdGVtIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ09rcmXFm2xhIHd5c29rb8WbxIcgZWxlbWVudHUgZWR5dG9yYSB0ZWtzdHUgc2Zvcm1hdG93YW5lZ28gZGxhIHRlZ28gZWtyYW51LiBXcHJvd2FkxbogbGljemLEmSAocGlrc2VsZSkgbHViIHdhcnRvxZvEhyBwcm9jZW50b3fEhSAod3pnbMSZZG7EhSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGxpY3pixJkgd2llcnN6eSBlZHl0b3JhIGRlZmluaWNqaSBDSSB3IGludGVyZmVqc2llIGFkbWluaXN0cmF0b3JhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdPa3JlxZtsYSBrb2xlam5vxZvEhyBzdGFuw7N3IHpkYXJ6ZW5pYSBvZCB3eXNva2llZ28gKG5wLiBzdGFuIGtyeXR5Y3pueSkgZG8gbmlza2llZ28gKG5wLiBzdGFuIGZ1bmtjam9uYWxueSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5pdWplIG9kcG93aWVkbmllIHN0YW55IHdkcm/FvGVuaWEsIHcga3TDs3J5Y2ggcG93acSFemFuZSB6Z8WCb3N6ZW5pYSBtb2fEhSB3cMWCeXdhxIcgbmEgc3RhbiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdPa3JlxZtsYSBsaW1pdCB3eXN6dWtpd2FuaWEgZGxhIGVrcmFudSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGxpbWl0IHd5c3p1a2l3YW5pYSBkbGEgZWtyYW51IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnT2tyZcWbbGEgbGltaXQgd3lzenVraXdhbmlhIGRsYSBla3JhbnUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdPa3JlxZtsYSBsaW1pdCB3eXN6dWtpd2FuaWEgZGxhIGVrcmFudSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ09rcmXFm2xhIHd5xZt3aWV0bGFuZSBrb2x1bW55IENJIHcgd2lkb2t1IHrFgm/FvG9ueW0gdGFiZWxpIGxpbmvDs3cgZGxhIHdzenlzdGtpY2gga2xhcyBDSS4gSmXFm2xpIG5pZSBtYSB3cGlzdSwgd3nFm3dpZXRsYW5lIHPEhSBrb2x1bW55IGRvbXnFm2xuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSB3ecWbd2lldGxhbmUga29sdW1ueSBDSSB3IHdpZG9rdSB6xYJvxbxvbnltIHRhYmVsaSBsaW5rw7N3LCB3IHphbGXFvG5vxZtjaSBvZCBrbGFzeSBDSS4gS2HFvGR5IHdwaXMgbXVzaSBiecSHIHBvcHJ6ZWR6b255IG5henfEhSBrbGFzeSBpIHBvZHfDs2pueW1pIGR3dWtyb3BrYW1pIChucC4gQ29tcHV0ZXI6OikuIElzdG5pZWplIGtpbGthIGF0cnlidXTDs3cgQ0ksIGt0w7NyZSBzxIUgd3Nww7NsbmUgZGxhIHdzenlzdGtpY2ggQ0kgKHByenlrxYJhZCBkbGEga2xhc3kgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIEFieSB3ecWbd2lldGxpxIcgcG9zemN6ZWfDs2xuZSBhdHJ5YnV0eSBDSSB6ZGVmaW5pb3dhbmUgdyBkZWZpbmljamkgQ0ksIG5hbGXFvHkgdcW8ecSHIG5hc3TEmXB1asSFY2VnbyBzY2hlbWF0dSAocHJ6eWvFgmFkIGRsYSBrbGFzeSBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBKZcWbbGkgbmllIG1hIHdwaXN1IGRsYSBrbGFzeSBDSSwgd3nFm3dpZXRsYW5lIHPEhSBrb2x1bW55IGRvbXnFm2xuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdPa3JlxZtsYSwga3TDs3JlIGVsZW1lbnR5IHPEhSBkb3N0xJlwbmUgZGxhICJBY3Rpb24iIG5hIHRyemVjaW0gcG96aW9taWUgc3RydWt0dXJ5IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ09rcmXFm2xhLCBrdMOzcmUgZWxlbWVudHkgc8SFIGRvc3TEmXBuZSBuYSBwaWVyd3N6eW0gcG96aW9taWUgc3RydWt0dXJ5IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdPa3JlxZtsYSwga3TDs3JlIGVsZW1lbnR5IHPEhSBkb3N0xJlwbmUgbmEgZHJ1Z2ltIHBvemlvbWllIHN0cnVrdHVyeSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnT2tyZcWbbGEsIGt0w7NyeSB0eXAgcG93acSFemFuaWEgKG5hendhbnkgeiBwZXJzcGVrdHl3eSB6Z8WCb3N6ZW5pYSkgbW/FvGUgd3DFgnl3YcSHIG5hIHN0YXR1cyBwb3dpxIV6YW5lZ28gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnT2tyZcWbbGEsIGt0w7NyeSB0eXAgemfFgm9zemVuaWEgbW/FvGUgd3DFgnl3YcSHIG5hIHN0YXR1cyBwb3dpxIV6YW5lZ28gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnQWt0dWFsaXphY2phIGRlZmluaWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnVXN1xYQgZWxlbWVudCBrb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdLb2xvciBzdGFudSB3ZHJvxbxlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWthdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHXFgiB6ZGFyemXFhCBww7NsIGR5bmFtaWN6bnljaCwga3TDs3J5IG96bmFjemEgZGVmaW5pY2plIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGpha28gbmllenN5bmNocm9uaXpvd2FuZSwgamXFm2xpIHphd2llcmFqxIVjZSBqZSBwb2xhIGR5bmFtaWN6bmUgdWxlZ27EhSB6bWlhbmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG9sYSBkeW5hbWljem5lIHd5xZt3aWV0bGFuZSBuYSBla3JhbmllIGRvZGF0a293eWNoIHDDs2wgSVRTTSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pY3puZSBwb2xhIHd5xZt3aWV0bGFuZSBuYSBla3JhbmllIHByemVnbMSFZHUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgaW50ZXJmZWpzdSBrbGllbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pY3puZSBwb2xhIHd5xZt3aWV0bGFuZSBuYSBla3JhbmllIHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnV8WCxIVjemEgZnVua2NqxJkgbWFzb3dlaiBha2NqaSBlbGVtZW50dSBrb25maWd1cmFjamkgZGxhIGludGVyZmVqc3UgYWdlbnRhLCBhYnkgcHJhY293YcSHIG5hIHdpxJljZWogbmnFvCBqZWRueW0gZWxlbWVuY2llIGtvbmZpZ3VyYWNqaSBuYXJhei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ1fFgsSFY3phIGZ1bmtjasSZIGFrY2ppIHpiaW9yY3plaiBlbGVtZW50dSBrb25maWd1cmFjamkgdHlsa28gZGxhIHd5bWllbmlvbnljaCBncnVwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdXxYLEhWN6YS93ecWCxIVjemEgZnVua2NqxJkgc3ByYXdkemFuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgSVRTTSBwb2Qga8SFdGVtIHVuaWthbG55Y2ggbmF6dy4gUHJ6ZWQgd8WCxIVjemVuaWVtIHRlaiBvcGNqaSBuYWxlxbx5IHNwcmF3ZHppxIcgc3lzdGVtIHBvZCBrxIV0ZW0ganXFvCBpc3RuaWVqxIVjeWNoIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHplIHpkdXBsaWtvd2FueW1pIG5hendhbWkuIE1vxbxuYSB0byB6cm9iacSHIHphIHBvbW9jxIUgcG9sZWNlbmlhIGtvbnNvbGkgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1xYIgemRhcnplxYQgZG8gdXN0YXdpYW5pYSBzdGF0dXN1IGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBuYSB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdQb2xhIGluZGVrc3UgcG96eWNqaSBrb25maWd1cmFjamksIHXFvHl3YW5lIGRvIHd5c3p1a2l3YW5pYSBwZcWCbm90ZWtzdG93ZWdvLiBQb2xhIHPEhSByw7N3bmllxbwgcHJ6ZWNob3d5d2FuZSwgYWxlIG5pZSBzxIUgb2Jvd2nEhXprb3dlIGRsYSBvZ8OzbG5laiBmdW5rY2pvbmFsbm/Fm2NpLiBEb8WCxIVjemFuaWUgemHFgsSFY3puaWvDs3cgbW/FvG5hIHd5xYLEhWN6ecSHLCB1c3Rhd2lhasSFYyB3YXJ0b8WbxIcgd3Bpc3UgbmEgMCBsdWIgdXN1d2FqxIVjIGdvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnUG9sYSBwcnplY2hvd3l3YW5lIHcgaW5kZWtzaWUgcG96eWNqaSBrb25maWd1cmFjamksIGt0w7NyZSBzxIUgd3lrb3J6eXN0eXdhbmUgZG8gaW5ueWNoIGNlbMOzdyBuacW8IHd5c3p1a2l3YW5pZSBwZcWCbm90ZWtzdG93ZS4gRGxhIHBlxYJuZWogZnVua2Nqb25hbG5vxZtjaSB3c3p5c3RraWUgcG9sYSBzxIUgb2Jvd2nEhXprb3dlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ0RsYSBrYcW8ZGVqIHVzxYJ1Z2kgd2Vic2VydmljZSAoa2x1Y3opIG1vxbxuYSB6ZGVmaW5pb3dhxIcgdGFibGljxJkga2xhcyAod2FydG/Fm8SHKSwgZGxhIGt0w7NyeWNoIGltcG9ydCBqZXN0IG9ncmFuaWN6b255LiBEbGEgd3N6eXN0a2ljaCB3eWJyYW55Y2gga2xhcyBsdWIgd3N6eXN0a2ljaCBpc3RuaWVqxIVjeWNoIGtsYXMgYXRyeWJ1dHkgaWRlbnR5ZmlrdWrEhWNlIGLEmWTEhSBtdXNpYcWCeSB6b3N0YcSHIHd5YnJhbmUgdyBrb25maWd1cmFjamkgd3l3b8WCdWrEhWNlZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlamVzdHJhY2phIG1vZHXFgnUgR2VuZXJpY0ludGVyZmFjZSBkbGEgd2Fyc3R3eSB3eXdvxYJ1asSFY2VqIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWplc3RyYWNqYSBtb2R1xYJ1IEdlbmVyaWNJbnRlcmZhY2UgZGxhIHdhcnN0d3kgd3l3b8WCdWrEhWNlaiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlamVzdHJhY2phIG1vZHXFgnUgR2VuZXJpY0ludGVyZmFjZSBkbGEgd2Fyc3R3eSB3eXdvxYJ1asSFY2VqIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnUHJ6ZWdsxIVkIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPYmVqbXVqZSBzdGFueSB3ZHJvxbxlbmlhIHcgd3lzenVraXdhbml1IGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGludGVyZmVqc3Uga2xpZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09iZWptdWplIHN0YW55IGluY3lkZW50w7N3IHcgd3lzenVraXdhbml1IGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGludGVyZmVqc3Uga2xpZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01ha3N5bWFsbmEgbGljemJhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGRvIHd5xZt3aWV0bGVuaWEgdyB3eW5pa3UgdGVqIG9wZXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHXFgiBzcHJhd2R6YWrEhWN5IGdydXDEmSBvZHBvd2llZHppYWxuxIUgemEga2xhc8SZLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHXFgiBkbyBzcHJhd2R6YW5pYSBncnVweSBvZHBvd2llZHppYWxuZWogemEgZWxlbWVudCBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdcWCIGRvIGdlbmVyb3dhbmlhIHN0YXR5c3R5ayBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05hendhIG1vZHXFgnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ01vZHXFgiBudW1lcnljem55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpY3piYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3ecWbd2lldGxhbnljaCBuYSBrYcW8ZGVqIHN0cm9uaWUgd3luaWvDs3cgd3lzenVraXdhbmlhIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMaWN6YmEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgd3nFm3dpZXRsYW55Y2ggbmEga2HFvGRlaiBzdHJvbmllIHd5bmlrw7N3IHd5c3p1a2l3YW5pYSB3IGludGVyZmVqc2llIGtsaWVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JpZWt0eSBkbyB3eXN6dWthbmlhLCBpbGUgd3Bpc8OzdyBpIGt0w7NyZSBhdHJ5YnV0eSBwb2themHEhy4gQXRyeWJ1dHkgQ29uZmlnSXRlbSBtdXN6xIUgYnnEhyBqYXduaWUgcHJ6ZWNob3d5d2FuZSBwcnpleiBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQcnplZ2zEhWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgZGxhIGthdGVnb3JpaSBrbGFzIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd2lkb2t1IHByZWZlcmVuY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEgZmlsdHLDs3cga29sdW1uIHcgbWHFgnltIHByemVnbMSFZHppZSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4gVXdhZ2E6IHVzdGF3aWVuaWUgIkFjdGl2ZSIgbmEgMCB1bmllbW/FvGxpd2kgYWdlbnRvbSBlZHljasSZIHVzdGF3aWXFhCB0ZWogZ3J1cHkgdyBpY2ggb3NvYmlzdHljaCBwcmVmZXJlbmNqYWNoLCBhbGUgbmFkYWwgcG96d29saSBhZG1pbmlzdHJhdG9yb20gZWR5dG93YcSHIHVzdGF3aWVuaWEgdyBpbWllbml1IGlubmVnbyB1xbx5dGtvd25pa2EuIFXFvHlqICJQcmVmZXJlbmNlR3JvdXAiLCBhYnkga29udHJvbG93YcSHLCB3IGt0w7NyeW0gb2JzemFyemUgdGUgdXN0YXdpZW5pYSBwb3dpbm55IGJ5xIcgd3nFm3dpZXRsYW5lIHcgaW50ZXJmZWpzaWUgdcW8eXRrb3duaWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IGtvbG9yw7N3IHN0YW7Ds3cgd2Ryb8W8ZW5pYSB3IHdpZG9rdSBwcmVmZXJlbmNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgc3RhbsOzdyB3ZHJvxbxlbmlhIHcgd2lkb2t1IHByZWZlcmVuY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0cnkgZGxhIHByenlrxYJhZG93eWNoIGdydXAgdXByYXduaWXFhCBhdHJ5YnV0w7N3IGthdGFsb2d1IGfFgsOzd25lZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IG1vZHXFgnUgbmF6d3kgZGxhIGtsYXMgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB3aWRva3UgcHJlZmVyZW5jamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgZGxhIG1vZHXFgnUgbGljemJ5IGRsYSBrbGFzIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd2lkb2t1IHByZWZlcmVuY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbWV0cnkgZGxhIHN0cm9uIChuYSBrdMOzcnljaCB3ecWbd2lldGxhbmUgc8SFIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEgbW9kdcWCdSDFgmHFhGN1Y2hhIHdlcnNqaSBkbGEga2xhcyBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwcmVmZXJlbmNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgZGxhIG1vZHXFgnUgc3phYmxvbnUgxYJhxYRjdWNoYSB3ZXJzamkgZGxhIGtsYXMgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB3aWRva3UgcHJlZmVyZW5jamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSB3eXp3YWxhY3phIHdlcnNqaSBkbGEga2xhcyBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwcmVmZXJlbmNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdXeWtvbnVqZSB6YXBsYW5vd2FuZSBha2NqZSBkbGEga2HFvGRlZ28gd3lkYcW8ZW5pYSAoamFrbyBXenl3YWrEhWN5KSBkbGEga2HFvGRlaiBza29uZmlndXJvd2FuZWogdXPFgnVnaSBzaWVjaW93ZWouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcnVwYSBVcHJhd25pZcWEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5bWFnYW5lIHVwcmF3bmllbmlhIGRvIGtvcnp5c3RhbmlhIHogYWtjamkgZG/FgsSFY3phbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBJVFNNIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3ltYWdhbmUgdXByYXduaWVuaWEgZG8ga29yenlzdGFuaWEgeiBla3JhbnUgZWxlbWVudHUga29uZmlndXJhY2ppIElUU00gdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3ltYWdhbmUgdXByYXduaWVuaWEgZG8ga29yenlzdGFuaWEgeiBla3JhbnUgd3lzenVraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIElUU00gdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3ltYWdhbmUgdXByYXduaWVuaWEgZG8ga29yenlzdGFuaWEgeiBla3JhbnUgd3lzenVraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIElUU00gdyBpbnRlcmZlanNpZSBrbGllbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5bWFnYW5lIHVwcmF3bmllbmlhIGRvIGtvcnp5c3RhbmlhIHogZWtyYW51IHdpZG9rdSBkcnpld2EgZWxlbWVudMOzdyBrb25maWd1cmFjamkgSVRTTSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3ltYWdhbmUgdXByYXduaWVuaWEgZG8ga29yenlzdGFuaWEgeiBla3JhbnUgcG93acSZa3N6ZW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgSVRTTSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSBkb2Rhd2FuaWEgZWxlbWVudHUga29uZmlndXJhY2ppIElUU00gdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5bWFnYW5lIHVwcmF3bmllbmlhIGRvIGtvcnp5c3RhbmlhIHogZWtyYW51IGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB6YmlvcmN6ZWogSVRTTSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXByYXduaWVuaWEgd3ltYWdhbmUgZG8ga29yenlzdGFuaWEgeiBla3JhbnUgZWR5Y2ppIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBJVFNNIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcHJhd25pZW5pYSB3eW1hZ2FuZSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSBlbGVtZW50dSBrb25maWd1cmFjamkgSVRTTSBoaXN0b3JpaSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5bWFnYW5lIHVwcmF3bmllbmlhIGRvIGtvcnp5c3RhbmlhIHogZWtyYW51IGRydWtvd2FuaWEgZWxlbWVudHUga29uZmlndXJhY2ppIElUU00gdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyB1c3V3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdXeXN6dWthaiBlbGVtZW50eSBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdVc3RhdyBzdGFuIGluY3lkZW50dSBDSSBhdXRvbWF0eWN6bmllLCBnZHkgVGlja2V0IGplc3QgcG93acSFemFueSB6IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VzdGF3aWEgc3RhbiB3ZHJvxbxlbmlhIG5hIGVrcmFuaWUgemJpb3JjenltIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXN0YXdpYSBzdGFuIHpkYXJ6ZW5pYSBuYSBla3JhbmllIHpiaW9yY3p5bSBlbGVtZW50dSBrb25maWd1cmFjamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3nFm3dpZXRsYSDFgsSFY3plIHcgbWVudSwga3TDs3JlIHVtb8W8bGl3aWEgcG93acSFemFuaWUgZWxlbWVudHUga29uZmlndXJhY2ppIHogaW5ueW0gb2JpZWt0ZW0gdyB3aWRva3UgcG93acSZa3N6ZW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3nFm3dpZXRsYSDFgsSFY3plIHcgbWVudSB1bW/FvGxpd2lhasSFY2UgZG9zdMSZcCBkbyBoaXN0b3JpaSBlbGVtZW50dSBrb25maWd1cmFjamkgdyBwcnplZ2zEhWR6aWUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUgdW1vxbxsaXdpYWrEhWNlIGRvc3TEmXAgZG8gaGlzdG9yaWkgZWxlbWVudHUga29uZmlndXJhY2ppIHcgd2lkb2t1IHBvd2nEmWtzemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3nFm3dpZXRsYSDFgsSFY3plIHcgbWVudSB1bW/FvGxpd2lhasSFY2UgdXN1bmnEmWNpZSBlbGVtZW50dSBrb25maWd1cmFjamkgdyB3aWRva3UgcG93acSZa3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUsIGFieSB3ecWbd2lldGxpxIcgxYLEhWN6YSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBkcnpld2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3nFm3dpZXRsYSDFgsSFY3plIHcgbWVudSBkbyBkdXBsaWtvd2FuaWEgZWxlbWVudHUga29uZmlndXJhY2ppIHcgcHJ6ZWdsxIVkemllIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51IHcgY2VsdSBwb3dpZWxlbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwb3dpxJlrc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3nFm3dpZXRsYSDFgsSFY3plIHcgbWVudSB1bW/FvGxpd2lhasSFY2UgZWR5Y2rEmSBlbGVtZW50dSBrb25maWd1cmFjamkgdyB3aWRva3UgcG93acSZa3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUgdW1vxbxsaXdpYWrEhWNlIHBvd3LDs3QgZG8gd2lkb2t1IHBvd2nEmWtzemVuaWEgZWxlbWVudHUga29uZmlndXJhY2ppIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUgdW1vxbxsaXdpYWrEhWNlIHd5ZHJ1a293YW5pZSBlbGVtZW50dSBrb25maWd1cmFjamkgdyB3aWRva3UgcG93acSZa3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51IHVtb8W8bGl3aWFqxIVjZSBwb3dpxJlrc3plbmllIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB3IHByemVnbMSFZHppZSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgaGlzdG9yacSZIGVsZW1lbnTDs3cga29uZmlndXJhY2ppICh3IG9kd3JvdG5laiBrb2xlam5vxZtjaSkgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0RvbXnFm2xuYSBrYXRlZ29yaWEsIGt0w7NyYSBqZXN0IHd5xZt3aWV0bGFuYSwgamXFm2xpIG5pZSB3eWJyYW5vIMW8YWRuZWouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdJZGVudHlmaWthdG9yIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSwgbnAuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBEb215xZtsbmllIGplc3QgdG8gQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnQXV0b21hdHljem5pZSB1cnVjaGFtaWEgd3l3b8WCYW5pZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdXZXJzamEgV3lyYcW8ZW5pZSDFgmHFhGN1Y2hvd2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnTW9kdcWCIGNpxIVndSB3ZXJzamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnV3l6d2FsYWN6IHdlcnNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnQ3p5IG1vxbxuYSB1bmlrbsSFxIcgd3lrb25hbmlhIENvbmZpZ0l0ZW1BQ0wgcG9wcnpleiBzcHJhd2R6ZW5pZSB6YWxlxbxub8WbY2kgcMOzbCB3IHBhbWnEmWNpIHBvZHLEmWN6bmVqLiBNb8W8ZSB0byBwb3ByYXdpxIcgY3phcyDFgmFkb3dhbmlhIGZvcm11bGFyenksIGFsZSBtdXNpIGJ5xIcgd3nFgsSFY3pvbmUsIGplxZtsaSBBQ0xNb2R1bGVzIG1hasSFIGJ5xIcgdcW8eXdhbmUgZGxhIElUU01Db25maWdJdGVtLSBpIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdJbmZvcm1hY2plIG9nw7NsbmUgc8SFIHd5xZt3aWV0bGFuZSB3IG5hZ8WCw7N3a3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAna2xhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrY3lqbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByemVkcHJvZHVrY3lqbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3R5d255JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IGNhbGEgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBjYWxpICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgY2FsYSAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBjYWxhICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktY2Fsb3d5IHN0b2phayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEsNzUgY2FsYSAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBjYWxpICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS1jYWxvd3kgc3RvamFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBjYWxhICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMtY2Fsb3d5IHN0b2phayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgY2FsYSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgY2FsZSAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgY2FsYSAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IGNhbGEgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgY2FsYSAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgY2FsYSAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgY2FsYSAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgY2FsYSAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgY2FsZSAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IGNhbGEgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBjYWxhICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgY2FsYSAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgY2FsYSAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBjYWxhICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IGNhbGEgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBjYWxhICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgY2FsZSAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IGNhbGkgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IGNhbGEgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IGNhbGEgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgY2FsYSAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBjYWxpICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IGNhbGEgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0tzacSZZ293b8WbxIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdQcnp5ZHppYcWCIGFkcmVzw7N3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ1RlbGVmb24gYW5hbG9nb3d5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVHlwIHVyesSFZHplbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnUG9qZW1ub8WbxIcgYWt1bXVsYXRvcmEgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdUeXAgYWt1bXVsYXRvcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCdWR5bmVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZlanMgbWFnaXN0cmFsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnUHJvY2Vzb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnS2xhc2EgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdQb2plbW5vxZvEhyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnUG9qZW1ub8WbxIcgbmEga2FydMSZIGdyYWZpY3puxIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdOdW1lciBrYXJ0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0N6eXRuaWsga2FydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUeXAga2FydHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NlcnR5ZmlrYXR5IGtsaWVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnT3Byb2dyYW1vd2FuaWUga2xpZW5ja2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0thdGVnb3JpYSBrbGllbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0Nsb2NrcmF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnQ2xvY2tzcGVlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydHlmaWthdHkgcG9kcGlzeXdhbmlhIGtvZHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ1RlbGVmb24ga29uZmVyZW5jeWpueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ1Vtb3dhIGtvbnN1bHRpbmdvd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0tvbnRha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0tvbnRha3QgeiBkeXN0cnlidXRvcmVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnWmFyesSFZHphbmllIGtvbnRlbmVyYW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnVW1vd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1R5cCB1bW93eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ09rcmVzIG9ib3dpxIV6eXdhbmlhIHVtb3d5IG9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ09rcmVzIG9ib3dpxIV6eXdhbmlhIHVtb3d5IGRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1RlbGVmb24gYmV6cHJ6ZXdvZG93eSAodGVsZWZvbiBERUNUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdKZWRub3N0a2Ega29zenR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnTGljemJhIGxpY2VuY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdEYXRhIHV0d29yemVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ05pZXN0YW5kYXJkb3d5IHN0b2phayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBaYXJlemVyd293YW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTZXJ3ZXIgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXRhIGZha3R1cnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdGEgemFtw7N3aWVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0RhdGEgZ3dhcmFuY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdGEgd3lkYW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGVza3RvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydHlmaWthdHkgcG9kcGlzeXdhbmlhIGRva3VtZW50w7N3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnU3RvamFrIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0NlcnR5ZmlrYXR5IHBvY3p0eSBlLW1haWwgKGNlcnR5ZmlrYXR5IFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnVW1vd2EgbyBwcmFjxJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdLb8WEY293eSBhZHJlcyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0tvbmllYyB3c3BhcmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0RhdGEgd3lnYcWbbmnEmWNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnWmV3bsSZdHJ6bnkgZHlzayB0d2FyZHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdGaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ09wcm9ncmFtb3dhbmllIHVrxYJhZG93ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ01hZ2F6eW5vd2FuaWUgZW5lcmdpaSB3IGtvbGUgemFtYWNob3d5bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ1dzcMOzxYJjenlubmlrIGtzenRhxYJ0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnVW1vd2EgZnJhbmN6eXp5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNqZSBvZ8OzbG5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnS2FydHkgZ3JhZmljem5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdLYXJ0YSBncmFmaWN6bmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdTcHJ6xJl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnTW9kZWwgc3ByesSZdHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnV2FnYSBzcHJ6xJl0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnWmVzdGF3IHPFgnVjaGF3a293eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3Rva8OzxYIgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnWmFyesSFZHphbmllIHRvxbxzYW1vxZtjacSFIGkgZG9zdMSZcGVtIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdOdW1lciBpbndlbnRhcnpvd3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdLb3N6dHkgaW53ZXN0eWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ051bWVyIGZha3R1cnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdLbGF3aWF0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEICh3ecWbd2lldGxhY3ogY2lla8WCb2tyeXN0YWxpY3pueSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgTEVEIChkaW9kYSBlbGVrdHJvbHVtaW5lc2NlbmN5am5hKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdUZWxlZm9uIHN0YWNqb25hcm55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ1N6ZXJva2/Fm8SHIGdlb2dyYWZpY3puYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ1dhcnN0d2EgMTogV2Fyc3R3YSBmaXp5Y3puYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdXYXJzdHdhIDI6IFdhcnN0d2EgxYLEhWN6YSBkYW55Y2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ1dhcnN0d2EgMzogV2Fyc3R3YSBzaWVjaW93YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdXYXJzdHdhIDM6IFdhcnN0d2Egc2llY2lvd2EgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdXYXJzdHdhIDQ6IFdhcnN0d2EgdHJhbnNwb3J0b3dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdXYXJzdHdhIDU6IFdhcnN0d2Egc2VzamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnV2Fyc3R3YSA2OiBXYXJzdHdhIHByZXplbnRhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnV2Fyc3R3YSA3OiBXYXJzdHdhIGFwbGlrYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdVbW93YSBuYWptdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ1Vtb3dhIGxpY2VuY3lqbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0tsdWN6IGxpY2VuY3lqbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVHlwIGxpY2VuY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdPa3JlcyBsaWNlbmNqaSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ09rcmVzIGxpY2VuY2ppIGRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdBa3VtdWxhdG9yIGxpdG93by3FvGVsYXpvd28tZm9zZm9yYW5vd3kgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdBa3VtdWxhdG9yIGxpdG93by1qb25vd3kgKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdVbW93YSBwb8W8eWN6a2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ1puYWpkdWplIHNpxJkgdyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdExYJ1Z2/Fm8SHIGdlb2dyYWZpY3puYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1Byb2R1Y2VudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTWFrc3ltYWxuZSBvYmNpxIXFvGVuaWUgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ1BhbWnEmcSHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVHlwIHBhbWnEmWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ051bWVyIHRlbGVmb251IGtvbcOzcmtvd2Vnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbGUvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ09waXMgbW9kZWx1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1JvemR6aWVsY3pvxZvEhyBtb25pdG9yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdSb3ptaWFyIG1vbml0b3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTXlzemthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdTaWXEhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm1hY2plIG8gc2llY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjamUgbyBzaWVjaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnV2Fyc3R3YSBzaWVjaW93YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ0FrdW11bGF0b3IgbmlrbG93by1rYWRtb3d5IChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ0FrdW11bGF0b3IgbmlrbG93by13b2Rvcmtvd3kgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ1Vtb3dhIG8gemFjaG93YW5pdSBwb3Vmbm/Fm2NpIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTm90YXRuaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdMaWN6YmEgcHJvY2Vzb3LDs3cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTGljemJhIG1vZHXFgsOzdyBwYW1pxJljaSBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTGljemJhIGthcnQgZ3JhZmljem55Y2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAob3JnYW5pY3puYSBkaW9kYSBlbGVrdHJvbHVtaW5lc2NlbmN5am5hKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdLb3N6dHkgb3BlcmFjeWpuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdOdW1lciB6YW3Ds3dpZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0lubmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1d5asWbY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1Vtb3dhIHBhcnRuZXJza2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOdW1lciB0ZWxlZm9udSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVHlwIHRlbGVmb251JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnUmR6ZW5pZSBmaXp5Y3puZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1phc2lsYW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ1pha3VwaW9uZSB3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdHxYLEmWJva2/Fm8SHIHN0b2pha2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdSZWdhxYJ5IChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUG9rw7NqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnS2FydGEgU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydHlmaWthdHkgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1Vtb3dhIHNwcnplZGHFvHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVGVsZWZvbiBzYXRlbGl0YXJueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdVc3pjemVsbmlvbnkgYWt1bXVsYXRvciBrd2Fzb3dvLW/Fgm93aW93eSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ051bWVyIHNlcnlqbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnT3Byb2dyYW1vd2FuaWUgc2Vyd2VyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1Vtb3dhIG8gxZt3aWFkY3plbmllIHVzxYJ1Zyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1puYWN6bmlrIHVzxYJ1Z2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVHlwIGduaWF6ZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdPcHJvZ3JhbW93YW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0fFgm/Fm25pa2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1BvY3rEhXRrb3d5IGFkcmVzIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdQcnplY2hvd3l3YW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1BhcnR5Y2phIHBhbWnEmWNpIG1hc293ZWonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdKZWRub3N0a2EgemFsZcW8bmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1BvZHN1bW93YW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ0NpZW5raSBrbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ05pY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnQ2HFgmtvd2l0YSBwYW1pxJnEhyBSQU0ga2FydHkgZ3JhZmljem5laiAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnQ2HFgmtvd2l0YSBwYW1pxJnEhyBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciB6IGVrcmFuZW0gZG90eWtvd3ltJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnV2llxbxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdLb25jZW50cmF0b3IgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnWmVzdGF3IHPFgnVjaGF3a293eSBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdUZWxlZm9uIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ0thbWVyYSBpbnRlcm5ldG93YSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/pt_BR_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0JSX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYWRvcyBnZXJhaXMgZGUgb3BlcmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnQ29uZmlndXJhw6fDtWVzIHBhcmEgZGFkb3MgZGUgc29saWNpdGHDp8OjbyBkZSBlbnRyYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnQ29uZmlndXJhw6fDtWVzIHBhcmEgZGFkb3MgZGUgcmVzcG9zdGEgZGUgc2HDrWRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VyZW5jaWFtZW50byBkZSBJdGVucyBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ011ZGFyIGRlZmluacOnw6NvIGRlIGNsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnQWx0ZXJhciBhIGRlZmluacOnw6NvIGRhIGZ1bsOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUGFjb3RlcyBkZSBjbGFzc2VzIFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0FxdWkgdm9jw6ogcG9kZSBpbXBvcnRhciBvcyBwYWNvdGVzIGRlIGNsYXNzZXMgZG8gUmVhZHkySW1wb3J0IHF1ZSBhcHJlc2VudGFtIG5vc3NvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBtYWlzIGNvbXVucy4gT2JzZXJ2ZSBxdWUgcG9kZSBzZXIgbmVjZXNzw6FyaWEgYWxndW1hIGNvbmZpZ3VyYcOnw6NvIGFkaWNpb25hbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQXR1YWxpemFyIGVudGlkYWRlcyBleGlzdGVudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0YXIgb3MgcGFjb3RlcyBkZSBjbGFzc2VzIGRvIFJlYWR5MkFkb3B0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ2xhc3NlIGRvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0Z1bsOnw6NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnSXRlbSBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cm8gcGFyYSBDbGFzc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1NlbGVjaW9uZSB1bWEgY2xhc3NlIGEgcGFydGlyIGRhIGxpc3RhIHBhcmEgY3JpYXIgdW0gbm92byBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0NsYXNzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0HDp8OjbyBlbSBNYXNzYSBlbSBJQ3MgSVRTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlIGltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdFc3RhZG8gZGUgaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0Fzc29jaWFyIGEgb3V0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ07Dum1lcm8gZGUgSXRlbSBkZSBDb25maWd1cmHDp8OjbyBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ08gbsO6bWVybyBkZSBvdXRybyBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvIHBhcmEgYXNzb2NpYXIuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnRGVzZWphIHJlYWxtZW50ZSBleGNsdWlyIGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojbz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTyBub21lIGRlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ05vbWUgasOhIGVtIHVzbyBwZWxvcyBJQ3MgY29tIG9zIHNlZ3VpbnRlcyBOw7ptZXJvKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGEgdmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTsO6bWVybyBkYSB2ZXJzw6NvIGRlc3NlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdPIG7Dum1lcm8gZGEgdmVyc8OjbyBqw6EgZXN0w6Egc2VuZG8gdXNhZG8gcGVsb3MgQ29uZmlnSXRlbXMgY29tIG8ocykgc2VndWludGUocykgbsO6bWVybyhzKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZSBJbXBsYW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIEluY2lkZW50ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdMOzcmljbyBkbyBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZcO6ZG8gZG8gSGlzdMOzcmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnSG9yYSBkZSBjcmlhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVmlzw6NvIGRlIGRldGFsaGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnSXRlbnMgZGUgY29uZmlndXJhw6fDo28gcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ05lbmh1bSBkYWRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZm9pIGVuY29udHJhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWNpb25lIGVzc2UgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ0V4ZWN1dGFyIFBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1Byb2N1cmFyIG5hcyB2ZXLDtWVzIGFudGVyaW9yZXMgdGFtYsOpbT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBwYXJhIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdOw612ZWwgZGUgcHJvZnVuZGlkYWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnQXVtZW50YXIgZSBkaW1pbnVpciBvIHpvb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTsOtdmVsIG3DoXhpbW8gZGUgbGlua3MgYXRpbmdpZG8gcGFyYSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0l0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw6NvIGRvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIEltcGxhbnRhw6fDo28gQXR1YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkbyBJbmNpZGVudGUgQXR1YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnw5psdGltYSBtb2RpZmljYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ8OabHRpbWEgbW9kaWZpY2HDp8OjbyBwb3InOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdTZXVzIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ1Blc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ1RpcG8gZGUgb2JqZXRvJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmlsdHJhciBwb3IgdGlwbyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0FzIHNlZ3VpbnRlcyBjbGFzc2VzIHNlcsOjbyBpbXBvcnRhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0FzIHNlZ3VpbnRlcyBmdW7Dp8O1ZXMgc2Vyw6NvIGltcG9ydGFkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnT2JzZXJ2ZSBxdWUgb3MgY2FtcG9zIGRpbsOibWljb3MgZSBhcyBjbGFzc2VzIEdlbmVyYWxDYXRhbG9nIGNvcnJlc3BvbmRlbnRlcyB0YW1iw6ltIHNlcsOjbyBjcmlhZG9zIGUgbsOjbyBoYXZlcsOhIHJlbW/Dp8OjbyBhdXRvbcOhdGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWb2PDqiBxdWVyIHByb3NzZWd1aXI/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ1ByZWNpc2EgZGUgRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0EgZGVmaW5pw6fDo28gbsOjbyDDqSB1bSBoYXNoIFlBTUwgdsOhbGlkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdWaXPDo28gZ2VyYWw6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZW5odW0gQ29uZmlnSXRlbUlEIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnVm9jw6ogcHJlY2lzYSBzZWxlY2lvbmFyIHBlbG8gbWVub3MgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdWb2PDqiBuw6NvIHRlbSBhY2Vzc28gZGUgZXNjcml0YSBwYXJhIGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbzogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ05lbmh1bWEgZGVmaW5pw6fDo28gcGFyYSBhIGNsYXNzZSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0l0ZW0gZGUgY29uZmlndXJhw6fDo28gIiVzIiBuw6NvIGVuY29udHJhZG8gbmEgYmFzZSBkZSBkYWRvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgZXhjbHVpciBvIElEIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdOZW5odW1hIHZlcnPDo28gZW5jb250cmFkYSBwYXJhIG8gQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOZW5odW0gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvdSBDbGFzc0lEIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdOZW5odW0gYWNlc3NvIMOpIGRhZG8hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ07Do28gw6kgcG9zc8OtdmVsIGV4aWJpciBoaXN0w7NyaWNvLiBOZW5odW0gQ29uZmlnSXRlbUlEIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBwb3Nzw612ZWwgZXhpYmlyIGhpc3TDs3JpY28uIE5lbmh1bSBkaXJlaXRvIGRlIGFjZXNzbyDDqSBkYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTm92byBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05vdmEgdmVyc8OjbyAoSUQgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdFc3RhZG8gZGUgaW1wbGVtZW50YcOnw6NvIGF0dWFsaXphZG8gKG5vdm89JXMgLCBhbnRpZ289JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0VzdGFkbyBkZSBpbmNpZGVudGUgYXR1YWxpemFkbyAobm92bz0lcywgYW50aWdvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0l0ZW0gZGUgQ29uZmlndXJhw6fDo28gKElEPSVzKSBleGNsdcOtZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdWw61uY3VsbyBwYXJhICVzICh0aXBvPSVzKSBhZGljaW9uYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdWw61uY3VsbyBwYXJhICVzICh0aXBvPSVzKSBkZWxldGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnRGVmaW5pw6fDo28gZGUgSXRlbSBkZSBDb25maWd1cmHDp8OjbyAoSUQ9JXMpIGF0dWFsaXphZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOb21lIGF0dWFsaXphZG8gKG5vdm89JXMsIGFudGlnbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0byAlcyBhdHVhbGl6YWRvIGRlICIlcyIgcGFyYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnPDo28gJXMgZXhjbHXDrWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05lbmh1bSBDb25maWdJdGVtSUQgb3UgVmVyc2lvbklEIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBleGliaXIgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gTmVuaHVtIGRpcmVpdG8gZGUgYWNlc3NvIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIG7Do28gZW5jb250cmFkbyBuYSBiYXNlIGRlIGRhZG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnSXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnSW1wcmVzc28gcG9yICVzIGVtICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcsOqbmNpYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0NsYXNzSUQgaW52w6FsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05lbmh1bSBDbGFzc0lEIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnTmVuaHVtIGRpcmVpdG8gZGUgYWNlc3NvIHBhcmEgZXN0YSBjbGFzc2Ugw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05lbmh1bSByZXN1bHRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnUmVzdWx0YWRvcyBkYSBwZXNxdWlzYSBkZSBJdGVucyBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTsOjbyBmb2kgcG9zc8OtdmVsIGV4aWJpciBpdGVtLiBOZW5odW0gZGlyZWl0byBkZSBhY2Vzc28gcGFyYSBDb25maWdJdGVtIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbsOjbyBlbmNvbnRyYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdOZW5odW1hIHZlcnPDo28gZW5jb250cmFkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYWNpb25hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnYXZpc28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ08gZXN0YWRvIGRlIGltcGxhbnRhw6fDo28gZGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ08gZXN0YWRvIGRlIGluY2lkZW50ZSBkZXN0ZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnU2VtIFBlcm1pc3PDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRybyBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYXLDom1ldHJvcyBkZSBwZXNxdWlzYSBpbnbDoWxpZG9zISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ0V4aWJpciBpdGVucyBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRlIEVzdGFkbyBkZSBJbXBsYW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0VzdGFkbyBBdHVhbCBkZSBJbmNpZGVudGUgcG9yIHRpcG8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyacOnw7VlcyBkZSBjbGFzc2UgcGFyYSBvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjaW9uZSB1bWEgb3UgbWFpcyBjbGFzc2VzIHBhcmEgcmVzdHJpbmdpciBvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBzZWxlY2lvbsOhdmVpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpw6fDtWVzIGRlIGNsYXNzZSBwYXJhIG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjaW9uZSB1bWEgb3UgbWFpcyBjbGFzc2VzIHBhcmEgcmVzdHJpbmdpciBvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBzZWxlY2lvbsOhdmVpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0RpbsOibWljbyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpYyAodmVyc8OjbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVGlwbyBkZSByZWZlcsOqbmNpYSBkZSBsaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ1NlIGVzc2UgbGluayBzZSBhcGxpY2EgYW8gQ29uZmlnSXRlbSBvdSDDoCB2ZXJzw6NvIGVzdMOhdGljYSBkbyBvYmpldG8gZGUgcmVmZXLDqm5jaWEuIE8gY8OhbGN1bG8gZG8gZXN0YWRvIGF0dWFsIGRvIGluY2lkZW50ZSBzw7Mgw6kgcmVhbGl6YWRvIGVtIGxpbmtzIGRpbsOibWljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU2VsZWNpb25lIG8gYXRyaWJ1dG8gcGVsbyBxdWFsIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHNlcsOjbyBwZXNxdWlzYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0EgZXN0cnV0dXJhIGLDoXNpY2EgbsOjbyDDqSB2w6FsaWRhLiBGb3JuZcOnYSB1bSBoYXNoIGNvbSBkYWRvcyBubyBmb3JtYXRvIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnw4kgbmVjZXNzw6FyaW8gaW5pY2lhciBhIHN0cmluZyBZQU1MIGNvbSBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgbGltcGFyIGEgdGFiZWxhIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ07Do28gZm9yYW0gZW5jb250cmFkb3MgY2FtcG9zIGRpbsOibWljb3MgcmVsZXZhbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBpbnNlcmlyIG5hIHRhYmVsYSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VyaXUgMCBsaW5oYXMgbmEgdGFiZWxhIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdOw7ptZXJvIG3DoXhpbW8gZGUgdW0gZWxlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnSW1wb3J0YXIvRXhwb3J0YXIgYW5leG9zIChjb21vIGFzIMO6bHRpbWFzIGVudHJhZGFzIHBvciBsaW5oYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdDYWRlaWEgZGUgY2FyYWN0ZXJlcyBkYSB2ZXJzw6NvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0Vycm8gYW8gc2luY3Jvbml6YXIgYXMgZGVmaW5pw6fDtWVzLiBWZXJpZmlxdWUgbyByZWdpc3Ryby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdWb2PDqiB0ZW0gZGVmaW5pw6fDtWVzIGRlIElUU01Db25maWdJdGVtIHF1ZSBuw6NvIGVzdMOjbyBzaW5jcm9uaXphZGFzLiBJbXBsZW1lbnRlIHN1YXMgYWx0ZXJhw6fDtWVzIGRlIGNhbXBvIGRpbsOibWljbyBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0V4cGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnTWFudXRlbsOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFuZWphZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSZXRpcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZpc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdGUgZGUgUXVhbGlkYWRlJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdWaXPDo28gZ2VyYWwgZSBjb25maXJtYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGHDp8OjbyBkZSBjbGFzc2VzL2Z1bsOnw7VlcyBlIHNldXMgY2FtcG9zIHJlbGFjaW9uYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ09jb3JyZXUgdW0gZXJybyBkdXJhbnRlIGEgaW1wb3J0YcOnw6NvIGRhIGNsYXNzZS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIE9jdWx0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gTW9zdHJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgY29uZGnDp8O1ZXMgZGUgcGVzcXVpc2EgZXN0ZW5kaWRhcyBuYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLiBDb20gZXNzZSByZWN1cnNvLCB2b2PDqiBwb2RlIHBlc3F1aXNhciwgcG9yIGV4ZW1wbG8sIG8gbm9tZSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGNvbSBlc3NlIHRpcG8gZGUgY29uZGnDp8OjbywgY29tbyAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpw6fDtWVzIGRlIHBlc3F1aXNhIGVzdGVuZGlkYXMgbmEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuIENvbSBlc3NlIHJlY3Vyc28sIHZvY8OqIHBvZGUgcGVzcXVpc2FyLCBwb3IgZXhlbXBsbywgbyBub21lIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gY29tIGVzc2UgdGlwbyBkZSBjb25kacOnw6NvLCBjb21vICIoKmtleTEqJiYqa2V5MiopIiBvdSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0lDcyBhdHJpYnXDrWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnSUMgYXRyaWJ1aWRvIMOgIGVtcHJlc2EgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0lDIGF0cmlidWlkbyBhbyB1c3XDoXJpbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDb25maWd1cmHDp8O1ZXMgZG8gQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnVmVyaWZpcXVlIHNlIG8gbm9tZSDDqSDDum5pY28gYXBlbmFzIGRlbnRybyBkYSBtZXNtYSBjbGFzc2UgZGUgSUMgKFwnY2xhc3NlKSBvdSBnbG9iYWxtZW50ZSAoXCdnbG9iYWxcJyksIG8gcXVlIHNpZ25pZmljYSBxdWUgY2FkYSBJQyBleGlzdGVudGUgw6kgbGV2YWRvIGVtIGNvbnRhIGFvIHByb2N1cmFyIHBvciBkdXBsaWNhw6fDtWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnRXNjb2xoYSB1bSBtw7NkdWxvIHBhcmEgYXBsaWNhciB1bSBlc3F1ZW1hIGRlIG5vbWVuY2xhdHVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ0VzY29saGEgdW0gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW0gZXNxdWVtYSBudW3DqXJpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0VzY29saGEgdW0gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW0gZXNxdWVtYSBkZSBzdHJpbmcgZGUgdmVyc8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdFc2NvbGhhIGF0cmlidXRvcyBwYXJhIGFjaW9uYXIgYSBjcmlhw6fDo28gZGUgdW1hIG5vdmEgdmVyc8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnRXNjb2xoYSBhcyBjYXRlZ29yaWFzIGEgc2VyZW0gYXRyaWJ1w61kYXMgYSBlc3NhIGNsYXNzZSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cm9zIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGUgY29sdW5hIHBhcmEgVmlzw6NvIGdlcmFsIGRvIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2x1bmFzIHF1ZSBwb2RlbSBzZXIgZmlsdHJhZGFzIG5hIHZpc8OjbyBnZXJhbCBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIE9ic2VydmHDp8OjbzogU29tZW50ZSBhdHJpYnV0b3MgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBlIGNhbXBvcyBkaW7Dom1pY29zIChEeW5hbWljRmllbGRfTmFtZVgpIHPDo28gcGVybWl0aWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnSXRlbnMgZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0FkaWNpb25hciBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0VkaXRhciBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcXVlIHBlcm1pdGUgcmVnaXN0cmFyIG8gaGlzdMOzcmljbyBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBhdHVhbGl6YSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBwYXJhIHN1YSBkZWZpbmnDp8OjbyBhdHVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0w7NyaXZvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0ltcHJlc3PDo28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdab29tIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnVmlzdWFsaXphw6fDo28gZW0gw6Fydm9yZSBkbyBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ1ZlcnPDo28gZG8gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdPcyBDb25maWdJdGVtcyBkYXMgc2VndWludGVzIGNsYXNzZXMgbsOjbyBzZXLDo28gYXJtYXplbmFkb3Mgbm8gc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGlzc28gYW9zIENJcyBleGlzdGVudGVzLCBhIG1pZ3Jhw6fDo28gZG8gQ0kgZGV2ZSBzZXIgZXhlY3V0YWRhIHBvciBtZWlvIGRvIGNvbnNvbGUsIGFww7NzIGEgYWx0ZXJhw6fDo28gZGVzc2Egb3DDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnT3MgQ29uZmlnSXRlbXMgY29tIG9zIHNlZ3VpbnRlcyBlc3RhZG9zIGRlIGltcGxhbnRhw6fDo28gbsOjbyBzZXLDo28gYXJtYXplbmFkb3Mgbm8gc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGlzc28gYW9zIENJcyBleGlzdGVudGVzLCBhIG1pZ3Jhw6fDo28gZG8gQ0kgZGV2ZSBzZXIgZXhlY3V0YWRhIHBvciBtZWlvIGRvIGNvbnNvbGUsIGFww7NzIGEgYWx0ZXJhw6fDo28gZGVzc2Egb3DDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnTGltaXRlIGRlIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0xpbWl0ZSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHBvciBww6FnaW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQ29uZmlndXJhw6fDo28gZG8gR2VyZW5jaWFtZW50byBkbyBCYW5jbyBkZSBEYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgYcOnw6NvIGVtIG1hc3NhIGVtIEl0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb3RlYWRvciBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NyaWFyIGUgZ2VyZW5jaWFyIGFzIGRlZmluacOnw7VlcyBkZSBJdGVucyBkZSBDb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcmlhIHTDrXF1ZXRlcyBwYXJhIENvbmZpZ0l0ZW1zIGVtIHBvbnRvcyBkZSB0ZW1wbyBlc3BlY8OtZmljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ09zIGNsaWVudGVzIHBvZGVtIHZlciBvIGhpc3TDs3JpY28gZGFzIHZlcnPDtWVzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdPcyBjbGllbnRlcyB0w6ptIGEgcG9zc2liaWxpZGFkZSBkZSBhbHRlcm5hciBtYW51YWxtZW50ZSBlbnRyZSBhcyB2ZXJzw7VlcyBoaXN0w7NyaWNhcyBkZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEYWRvcyBwYWRyw6NvIGEgc2VyZW0gdXNhZG9zIG5vIGF0cmlidXRvIHBhcmEgYSB0ZWxhIGRlIHBlc3F1aXNhIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uIEV4ZW1wbG86ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGFkb3MgcGFkcsOjbyBhIHNlcmVtIHVzYWRvcyBubyBhdHJpYnV0byBwYXJhIGEgdGVsYSBkZSBwZXNxdWlzYSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLiBFeGVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5hIEHDp8O1ZXMgb25kZSB1bSBib3TDo28gZGUgY29uZmlndXJhw6fDtWVzIGVzdMOhIGRpc3BvbsOtdmVsIG5vIHdpZGdldCBkZSBvYmpldG9zIHZpbmN1bGFkb3MgKExpbmtPYmplY3Q6OlZpZXdNb2RlPSJjb21wbGV4IikuIE9ic2VydmUgcXVlIGVzc2FzIGHDp8O1ZXMgZGV2ZW0gdGVyIHJlZ2lzdHJhZG8gb3Mgc2VndWludGVzIGFycXVpdm9zIEpTIGUgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBlIENvcmUuQWdlbnQgLkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmUgdW0gZXNxdWVtYSBUZW1wbGF0ZTo6VG9vbGtpdCBwYXJhIGNhZGVpYXMgZGUgY2FyYWN0ZXJlcyBkZSB2ZXJzw6NvLiBVc2FkbyBzb21lbnRlIHNlIG8gVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGVzdGl2ZXIgZGVmaW5pZG8gY29tbyBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIGNvbmp1bnRvIGRlIGNvbmRpw6fDtWVzIHNvYiBhcyBxdWFpcyB1bSBjbGllbnRlIHRlbSBwZXJtaXNzw6NvIHBhcmEgdmVyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uIEFzIGNvbmRpw6fDtWVzIHBvZGVtLCBvcGNpb25hbG1lbnRlLCBzZXIgcmVzdHJpdGFzIGEgZGV0ZXJtaW5hZG9zIGdydXBvcyBkZSBjbGllbnRlcy4gTyBub21lIMOpIG8gw7puaWNvIGF0cmlidXRvIG9icmlnYXTDs3Jpby4gU2UgbmVuaHVtYSBvdXRyYSBvcMOnw6NvIGZvciBmb3JuZWNpZGEsIHRvZG9zIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGZpY2Fyw6NvIHZpc8OtdmVpcyBuZXNzYSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYSBwZXJtaXNzw6NvIG5lY2Vzc8OhcmlvIHBhcmEgcmVtb3ZlciBJdGVucyBkZSBDb25maWd1cmHDp8OjbyB1c2FuZG8gYSBJbnRlcmZhY2UgR2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGFzIHBlcm1pc3PDtWVzIHJlcXVlcmlkYXMgcGFyYSBvYnRlciBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBJVFNNIHVzYW5kbyBhIEludGVyZmFjZSBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYXMgcGVybWlzc8O1ZXMgcmVxdWVyaWRhcyBwYXJhIGxvY2FsaXphciBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBJVFNNIHVzYW5kbyBhIEludGVyZmFjZSBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYXMgcGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgZGVmaW5pciBvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyBJVFNNIHVzYW5kbyBhIGludGVyZmFjZSBnZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bSBtw7NkdWxvIGRlIHZpc8OjbyBnZXJhbCBwYXJhIG1vc3RyYXIgYSB2aXPDo28gcGVxdWVuYSBkYSBsaXN0YSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lIHNlIG9zIHLDs3R1bG9zIGRlIHRpcG8gZGUgbGluayBkZXZlbSBzZXIgZXhpYmlkb3MgbmFzIGNvbmV4w7VlcyBkZSBuw7MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmllIGV4cHJlc3PDtWVzIHJlZ3VsYXJlcyBpbmRpdmlkdWFsbWVudGUgcGFyYSBjYWRhIGNsYXNzZSBkZSBJQyBwYXJhIHZlcmlmaWNhciBvIG5vbWUgZG8gSUMgZSBwYXJhIGV4aWJpciBhcyBtZW5zYWdlbnMgZGUgZXJybyBjb3JyZXNwb25kZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgZGlzcG9uw612ZWlzIGRlIElDcyBuYSB2aXPDo28gZ2VyYWwgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgZGVwZW5kZW5kbyBkYSBjbGFzc2UgZG8gSUMuIENhZGEgZW50cmFkYSBkZXZlIGNvbnNpc3RpciBlbSB1bSBub21lIGRlIGNsYXNzZSBlIHVtYSBtYXRyaXogZGUgY2FtcG9zIGRpc3BvbsOtdmVpcyBwYXJhIGEgY2xhc3NlIGNvcnJlc3BvbmRlbnRlLiBBcyBlbnRyYWRhcyBkZSBjYW1wbyBkaW7Dom1pY28gZGV2ZW0gcmVzcGVpdGFyIG8gZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBwYWRyw6NvIHBhcmEgYSBjbGFzc2lmaWNhw6fDo28gZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZG8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHBhZHLDo28gcGFyYSBhIGNsYXNzaWZpY2HDp8OjbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBwYWRyw6NvIHBhcmEgYSBjbGFzc2lmaWNhw6fDo28gZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZG8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRlc3NhIG9wZXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIEFjaW1hOiBtYWlzIGFudGlnbyBubyB0b3BvLiBQYXJhIGJhaXhvOiBvIG1haXMgcmVjZW50ZSBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5vIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4gQWNpbWE6IG1haXMgYW50aWdvIG5vIHRvcG8uIFBhcmEgYmFpeG86IG8gbWFpcyByZWNlbnRlIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHBhZHLDo28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGVzc2Egb3BlcmHDp8Ojby4gQWNpbWE6IG1haXMgYW50aWdvIG5vIHRvcG8uIFBhcmEgYmFpeG86IG8gbWFpcyByZWNlbnRlIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBwYWRyw6NvIGV4aWJpZGFzIGRlIElDcyBuYSB2aXPDo28gZ2VyYWwgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgZGVwZW5kZW5kbyBkYSBjbGFzc2UgZG8gSUMuIENhZGEgZW50cmFkYSBkZXZlIGNvbnNpc3RpciBlbSB1bSBub21lIGRlIGNsYXNzZSBlIHVtYSBtYXRyaXogZGUgY2FtcG9zIGRpc3BvbsOtdmVpcyBwYXJhIGEgY2xhc3NlIGNvcnJlc3BvbmRlbnRlLiBBcyBlbnRyYWRhcyBkZSBjYW1wbyBkaW7Dom1pY28gZGV2ZW0gcmVzcGVpdGFyIG8gZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmUgYSBwcm9mdW5kaWRhZGUgcGFkcsOjbyBkYXMgcmVsYcOnw7VlcyBhIHNlcmVtIG1vc3RyYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gcGFkcsOjbyBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG1vc3RyYWRvIHBhcmEgYSB0ZWxhIGRlIHBlc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIGRlIHBlc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbW9zdHJhZG8gcGFyYSBhIHRlbGEgZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gRXhlbXBsbzogIktleSIgKENoYXZlKSBkZXZlIHRlciBvIG5vbWUgZG8gY2FtcG8gZGluw6JtaWNvLCBuZXNzZSBjYXNvIFwnWFwnLCAiQ29udGVudCIgKENvbnRlw7pkbykgZGV2ZSB0ZXIgbyB2YWxvciBkbyBjYW1wbyBkaW7Dom1pY28sIGRlcGVuZGVuZG8gZG8gdGlwbyBkZSBjYW1wbyBkaW7Dom1pY28sIFRleHQgKFRleHRvKTogXCd1bSB0ZXh0b1wnLCBEcm9wZG93biAoTWVudSBzdXNwZW5zbyk6IFwnMVwnLCBEYXRlL1RpbWUgKERhdGEvSG9yYSk6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBlIG91IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZSBvIHN1Ym9iamV0byBwYWRyw6NvIGRhIGNsYXNzZSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkaXNwb27DrXZlaXMgZGUgSUNzIG5hIHZpc8OjbyBnZXJhbCBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLCBkZXBlbmRlbmRvIGRhIGNsYXNzZSBkbyBJQy4gQ2FkYSBlbnRyYWRhIGRldmUgY29uc2lzdGlyIGVtIHVtIG5vbWUgZGUgY2xhc3NlIGUgdW1hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uw612ZWlzIHBhcmEgYSBjbGFzc2UgY29ycmVzcG9uZGVudGUuIEFzIGVudHJhZGFzIGRlIGNhbXBvIGRpbsOibWljbyBkZXZlbSByZXNwZWl0YXIgbyBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZSBhIGFsdHVyYSBkbyBjb21wb25lbnRlIGRlIGVkacOnw6NvIHJpY2ggdGV4dCBkZXN0YSB0ZWxhLiBSZWdpc3RyZSB1bSBuw7ptZXJvIChwaXhlbHMpIG91IHVtYSBwb3JjZW50YWdlbSAocmVsYXRpdm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBuw7ptZXJvIGRlIGxpbmhhcyBkbyBlZGl0b3IgZGUgZGVmaW5pw6fDo28gZG8gSUMgbmEgaW50ZXJmYWNlIGRlIGFkbWluaXN0cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gZG9zIGVzdGFkb3MgZGUgaW5jaWRlbnRlIGRlIGFsdG8gKGV4OiBjcsOtdGljbykgcGFyYSBiYWl4byAoZXg6IGZ1bmNpb25hbCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgb3MgZXN0YWRvcyBkZSBpbXBsYW50YcOnw6NvIG9uZGUgY2hhbWFkb3MgYXNzb2NpYWRvcyBwb2RlbSBhZmV0YXIgbyBlc3RhZG9zIGRlIHVtIElDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIGEgdGVsYSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIGEgdGVsYSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIGEgdGVsYSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIGEgdGVsYSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIGRlIElDcyBtb3N0cmFkYXMgbmEgdmlzdWFsaXphw6fDo28gY29tcGxleGEgZGEgdGFiZWxhIGRlIGxpbmtzIHBhcmEgdG9kYXMgYXMgY2xhc3NlcyBkZSBJQ3MuIFNlIG7Do28gaG91dmVyIG5lbmh1bWEgZW50cmFkYSwgYXMgY29sdW5hcyBwYWRyw6NvIHNlcsOjbyBtb3N0cmFkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkZSBJQ3MgZXhpYmlkYXMgbmEgdGVsYSBkZSB0YWJlbGEgY29tcGxleGEgZGUgbGlua3MsIGRlcGVuZGVuZG8gZGEgY2xhc3NlIGRvIElDLiBDYWRhIGVudHJhZGEgZGV2ZSBzZXIgcHJlZml4YWRhIGNvbSBvIG5vbWUgZGEgY2xhc3NlIGUgZHVwbG8gZG9pcyBwb250b3MgKGV4LiBDb21wdXRhZG9yOjopLiBIw6EgYWxndW5zIGF0cmlidXRvcyBkZSBJQyBxdWUgc8OjbyBjb211bnMgYSB0b2RvcyBvcyBJQ3MgKHRhbCBjb21vIGEgY2xhc3NlIENvbXB1dGFkb3I6IENvbXB1dGFkb3I6Ok5vbWUsIENvbXB1dGFkb3I6OkVzdGFkb0ltcGxBdHVhbCwgQ29tcHV0YWRvcjo6SG9yYUNyaWFjYW8pLiBQYXJhIGV4aWJpciBhdHJpYnV0b3MgZGUgSUMgaW5kaXZpZHVhbG1lbnRlIGNvbW8gZGVmaW5pZG8gbmEgZGVmaW5pw6fDo28gZG8gSUMsIG8gc2VndWludGUgZXNxdWVtYSBkZXZlIHNlciB1c2FkbyAoY2xhc3NlIENvbXB1dGFkb3IsIHBvciBleGVtcGxvKTogQ29tcHV0YWRvcjo6RGlzY29SaWdpZG86OjEsIENvbXB1dGFkb3I6OkRpc2NvUmlnaWRvOjoxOjpDYXBhY2lkYWRlOjoxLCBDb21wdXRhZG9yOjpEaXNjb1JpZ2lkbzo6MiwgQ29tcHV0YWRvcjo6RGlzY29SaWdpZG86OjI6OkNhcGFjaWRhZGU6OjEuIFNlIG7Do28gaMOhIGVudHJhZGEgcGFyYSBhIGNsYXNzZSBJQywgZW50w6NvIGFzIGNvbHVuYXMgcGFkcsOjbyBzw6NvIGV4aWJpZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdWFpcyBpdGVucyBlc3TDo28gZGlzcG9uw612ZWlzIHBhcmEgIkHDp8OjbyIgbm8gdGVyY2Vpcm8gbsOtdmVsIGRhIGVzdHJ1dHVyYSBkbyBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXVhaXMgaXRlbnMgZXN0w6NvIGRpc3BvbsOtdmVpcyBubyBwcmltZWlybyBuw612ZWwgZGEgZXN0cnV0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXVhaXMgaXRlbnMgZXN0w6NvIGRpc3BvbsOtdmVpcyBubyBzZWd1bmRvIG7DrXZlbCBkYSBlc3RydXR1cmEgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdWFsIHRpcG8gZGUgYXNzb2NpYcOnw6NvIChub21lYWRvIGEgcGFydGlyIGRhIHBlcnNwZWN0aXZhIGRvIGNoYW1hZG8pIHBvZGUgYWZldGFyIG8gZXN0YWRvIGRlIHVtIElDIGFzc29jaWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXVhbCB0aXBvIGRlIGNoYW1hZG8gcG9kZSBhZmV0YXIgbyBlc3RhZG8gZGUgdW0gSUMgYXNzb2NpYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0F0dWFsaXphw6fDo28gZGEgZGVmaW5pw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0V4Y2x1aXIgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0NvciBkbyBFc3RhZG8gZGUgSW1wbGFudGHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdFc3RhZG8gZGEgaW1wbGFudGHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvIGRlIGNhbXBvIGRpbsOibWljbyBxdWUgbWFyY2EgYXMgZGVmaW5pw6fDtWVzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGNvbW8gZm9yYSBkZSBzaW5jcm9uaWEsIHNlIG9zIGNhbXBvcyBkaW7Dom1pY29zIGNvbnRpZG9zIGZvcmVtIGFsdGVyYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIG1vc3RyYWRvcyBubyBjYW1wbyBkZSB0ZWxhIElUU00gYWRpY2lvbmFsIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIG1vc3RyYWRvcyBuYSB0ZWxhIGRlIHZpc8OjbyBnZXJhbCBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgbW9zdHJhZG9zIG5hIHRlbGEgZGUgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnSGFiaWxpdGEgYSBmdW7Dp8OjbyBkZSBhw6fDo28gZW0gbWFzc2EgZW0gaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZSBwYXJhIHRyYWJhbGhhciBlbSBtYWlzIGRlIHVtIElDIHBvciB2ZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdIYWJpbGl0YSBhIGZ1bsOnw6NvIGRlIGHDp8OjbyBlbSBtYXNzYSBlbSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBhcGVuYXMgcGFyYSBncnVwb3MgbGlzdGFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0F0aXZhL2Rlc2F0aXZhIGEgZnVuY2lvbmFsaWRhZGUgcGFyYSB2ZXJpZmljYXIgc2Ugb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZG8gSVRTTSB0w6ptIG5vbWVzIGV4Y2x1c2l2b3MuIEFudGVzIGRlIGF0aXZhciBlc3NhIG9ww6fDo28sIHZvY8OqIGRldmUgdmVyaWZpY2FyIHNlIGjDoSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBqw6EgZXhpc3RlbnRlcyBjb20gbm9tZXMgZHVwbGljYWRvcyBlbSBzZXUgc2lzdGVtYS4gVm9jw6ogcG9kZSBmYXplciBpc3NvIGNvbSBvIGNvbWFuZG8gZG8gY29uc29sZSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgRXZlbnRvIHBhcmEgY29uZmlndXJhciBvIGVzdGFkbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHF1YW5kbyB1bSBjaGFtYWRvIGZvciBhc3NvY2lhZG8gYSB1bSBJQy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQ2FtcG9zIGRvIMOtbmRpY2UgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgdXNhZG9zIHBhcmEgYSBwZXNxdWlzYSBkZSB0ZXh0byBjb21wbGV0by4gT3MgY2FtcG9zIHRhbWLDqW0gc8OjbyBhcm1hemVuYWRvcywgbWFzIG7Do28gc8OjbyBvYnJpZ2F0w7NyaW9zIHBhcmEgYSBmdW5jaW9uYWxpZGFkZSBnZXJhbC4gQSBpbmNsdXPDo28gZGUgYW5leG9zIHBvZGUgc2VyIGRlc2F0aXZhZGEgZGVmaW5pbmRvIGEgZW50cmFkYSBjb21vIDAgb3UgZXhjbHVpbmRvLWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdDYW1wb3MgYXJtYXplbmFkb3Mgbm8gw61uZGljZSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBzw6NvIHVzYWRvcyBwYXJhIG91dHJhcyBjb2lzYXMgYWzDqW0gZGUgcGVzcXVpc2FzIGRlIHRleHRvIGNvbXBsZXRvLiBQYXJhIGEgZnVuY2lvbmFsaWRhZGUgY29tcGxldGEsIHRvZG9zIG9zIGNhbXBvcyBzw6NvIG9icmlnYXTDs3Jpb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnUGFyYSBjYWRhIHNlcnZpw6dvIGRhIFdlYiAoY2hhdmUpLCDDqSBwb3Nzw612ZWwgZGVmaW5pciB1bWEgbWF0cml6IGRlIGNsYXNzZXMgKHZhbG9yKSBuYSBxdWFsIGEgaW1wb3J0YcOnw6NvIMOpIHJlc3RyaXRhLiBQYXJhIHRvZGFzIGFzIGNsYXNzZXMgZXNjb2xoaWRhcyBvdSB0b2RhcyBhcyBjbGFzc2VzIGV4aXN0ZW50ZXMsIG9zIGF0cmlidXRvcyBkZSBpZGVudGlmaWNhw6fDo28gZGV2ZXLDo28gc2VyIGVzY29saGlkb3MgbmEgY29uZmlndXJhw6fDo28gZG8gaW52b2NhZG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RybyBkbyBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBhIGNhbWFkYSBkbyBpbnZvY2Fkb3IgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRvIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGEgY2FtYWRhIGRvIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRvIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGEgY2FtYWRhIGRvIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1Zpc8OjbyBHZXJhbCAgZG8gSXRlbSBkZSBDb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdFc3RhZG8gZG8gaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1aSBlc3RhZG9zIGRlIGltcGxhbnRhw6fDo28gbmEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWkgZXN0YWRvcyBkZSBpbmNpZGVudGVzIG5hIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGEgc2VyZW0gZXhpYmlkb3Mgbm8gcmVzdWx0YWRvIGRlc3NhIG9wZXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTcOzZHVsbyBwYXJhIHZlcmlmaWNhciBvIGdydXBvIHJlc3BvbnPDoXZlbCBwb3IgdW1hIGNsYXNzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNw7NkdWxvIHBhcmEgdmVyaWZpY2FyIG8gZ3J1cG8gcmVzcG9uc8OhdmVsIHBvciB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ03Ds2R1bG8gcGFyYSBnZXJhciBlc3RhdMOtc3RpY2FzIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOb21lIGRvIG3Ds2R1bG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ07Dum1lcm8gZG8gbcOzZHVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGEgc2VyZW0gZXhpYmlkb3MgZW0gY2FkYSBww6FnaW5hIGRlIHVtIHJlc3VsdGFkbyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGEgc2VyZW0gZXhpYmlkb3MgZW0gY2FkYSBww6FnaW5hIGRlIHVtIHJlc3VsdGFkbyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmpldG9zIGEgc2VyZW0gcGVzcXVpc2Fkb3MsIHF1YW50YXMgZW50cmFkYXMgZSBxdWFpcyBhdHJpYnV0b3MgZGV2ZW0gc2VyIGV4aWJpZG9zLiBPcyBhdHJpYnV0b3MgZG8gQ29uZmlnSXRlbSBkZXZlbSBzZXIgYXJtYXplbmFkb3MgZXhwbGljaXRhbWVudGUgcG9yIG1laW8gZG8gRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzw6NvIEdlcmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBhcyBjYXRlZ29yaWFzIGRlIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdWFsaXphw6fDo28gZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgb3MgZmlsdHJvcyBkZSBjb2x1bmEgZGEgdmlzw6NvIGdlcmFsIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcGVxdWVuYS4gT2JzZXJ2YcOnw6NvOiBhIGRlZmluacOnw6NvIGRlICJBY3RpdmUiIGNvbW8gMCBpbXBlZGlyw6EgYXBlbmFzIHF1ZSBvcyBhZ2VudGVzIGVkaXRlbSBhcyBjb25maWd1cmHDp8O1ZXMgZGVzc2UgZ3J1cG8gZW0gc3VhcyBwcmVmZXLDqm5jaWFzIHBlc3NvYWlzLCBtYXMgYWluZGEgcGVybWl0aXLDoSBxdWUgb3MgYWRtaW5pc3RyYWRvcmVzIGVkaXRlbSBhcyBjb25maWd1cmHDp8O1ZXMgZW0gbm9tZSBkZSBvdXRybyB1c3XDoXJpby4gVXNlICJQcmVmZXJlbmNlR3JvdXAiIHBhcmEgY29udHJvbGFyIGVtIHF1ZSDDoXJlYSBlc3NhcyBjb25maWd1cmHDp8O1ZXMgZGV2ZW0gc2VyIG1vc3RyYWRhcyBuYSBpbnRlcmZhY2UgZG8gdXN1w6FyaW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIGEgY29yIGRvcyBlc3RhZG9zIGRlIGltcGxhbnRhw6fDo28gbmEgdGVsYSBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgZGUgZXN0YWRvIGRlIGltcGxhbnRhw6fDo28gbmFzIHByZWZlcsOqbmNpYXMgZGUgZXhpYmnDp8OjbyBkYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBkbyBncnVwb3MgZGUgcGVybWlzc8OjbyBkZSBleGVtcGxvIGRvcyBhdHJpYnV0b3MgZG8gY2F0w6Fsb2dvIGdlcmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgbyBtw7NkdWxvIGRlIG5vbWUgcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3VhbGl6YcOnw6NvIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgbyBtw7NkdWxvIGRlIG7Dum1lcm9zIHBhcmEgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN1YWxpemHDp8OjbyBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRhcyBww6FnaW5hcyAobmFzIHF1YWlzIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHPDo28gbW9zdHJhZG9zKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZGUgc3RyaW5nIGRlIHZlcnPDo28gcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3VhbGl6YcOnw6NvIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG8gbcOzZHVsbyBkbyBraXQgZGUgZmVycmFtZW50YXMgZGUgbW9kZWxvIGRlIHN0cmluZyBkZSB2ZXJzw6NvIHBhcmEgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN1YWxpemHDp8OjbyBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgbyBhY2lvbmFkb3IgZGUgdmVyc8OjbyBwYXJhIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdWFsaXphw6fDo28gZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ0V4ZWN1dGEgYSBhw6fDo28gY29uZmlndXJhZGEgcGFyYSBjYWRhIGV2ZW50byAoY29tbyB1bSBJbnZvY2Fkb3IpIHBhcmEgY2FkYSBXZWJzZXJ2aWNlIGNvbmZpZ3VyYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnR3J1cG8gZGUgcGVybWlzc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgYcOnw6NvIGRlIGFuZXhhw6fDo28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkbyBJVFNNIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyBJVFNNIG5hIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSB0ZWxhIGRlIHZpc3VhbGl6YcOnw6NvIGVtIMOhcnZvcmUgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkbyBJVFNNIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSB0ZWxhIGRlIGRldGFsaGVzIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSB0ZWxhIGRlIGFkacOnw6NvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkZSBJVFNNIGVtIG1hc3NhIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSB0ZWxhIGRlIGVkacOnw6NvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSBoaXN0w7NyaWNvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgaW1wcmVzc8OjbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbMOpZ2lvcyBuZWNlc3PDoXJpb3MgcGFyYSBhcGFnYXIgaXRlbnMgZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnUHJvY3VyYXIgaXRlbnMgZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdDb25maWd1cmFyIG8gZXN0YWRvIGRlIHVtIElDIGF1dG9tYXRpY2FtZW50ZSBxdWFuZG8gdW0gQ2hhbWFkbyBmb3IgYXNzb2NpYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYSBvIGVzdGFkbyBkZSBpbXBsYW50YcOnw6NvIG5hIHRlbGEgZGUgYcOnw6NvIGVtIG1hc3NhIGRlIElDcyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWd1cmEgbyBlc3RhZG8gZGUgaW5jaWRlbnRlIG5hIHRlbGEgZGUgYcOnw6NvIGVtIG1hc3NhIGRlIElDcyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcXVlIHBlcm1pdGUgYXNzb2NpYXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBjb20gdW0gb3V0cm8gb2JqZXRvIG5hIHZpc8OjbyBkZSBkZXRhbGhlcyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGFjZXNzYXIgbyBoaXN0w7NyaWNvIGRlIHVtIElDIG5hIHZpc8OjbyBnZXJhbCBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgYWNlc3NhciBvIGhpc3TDs3JpY28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXPDo28gZGUgZGV0YWxoZXMgZG8gbWVzbW8gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgYXBhZ2FyIG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSBWaXPDo28gRGV0YWxoYWRhIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgZXhpYmlyIG9zIGxpbmtzIGRvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBjb21vIHVtYSB2aXN1YWxpemHDp8OjbyBlbSDDoXJ2b3JlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBkdXBsaWNhciB1bSBJQyBuYSB2aXPDo28gZ2VyYWwgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGR1cGxpY2FyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzw6NvIGRlIGRldGFsaGVzIGRvIG1lc21vIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgZWRpdGFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzw6NvIGRlIGRldGFsaGVzIGRvIG1lc21vIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgcmV0b3JuYXIgw6AgdGVsYSBkZSB2aXPDo28gZGUgZGV0YWxoZXMgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBpbXByaW1pciB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc8OjbyBkZSBkZXRhbGhlcyBkbyBtZXNtbyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBkZXRhbGhhciB1bSBJQyBuYSB2aXPDo28gZ2VyYWwgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSBvIGhpc3TDs3JpY28gZG8gaXRlbSBjb25maWd1cmHDp8OjbyAob3JkZW0gcmV2ZXJzYSkgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnQSBjYXRlZ29yaWEgcGFkcsOjbyBxdWUgw6kgbW9zdHJhZGEsIHNlIG5lbmh1bWEgZm9yIHNlbGVjaW9uYWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnTyBpZGVudGlmaWNhZG9yIHBhcmEgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgZXguIEl0ZW1Db25maWcjLCBNZXVJdGVtQ29uZmlnIy4gTyBwYWRyw6NvIMOpIEl0ZW1Db25maWcjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0FjaW9uYSBvIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2ggYXV0b21hdGljYW1lbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnRXhwcmVzc8OjbyBkZSBjYWRlaWEgZGUgY2FyYWN0ZXJlcyBkYSB2ZXJzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnPDo28gU3RyaW5nIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdBY2lvbmFkb3IgZGUgdmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnU2UgYSBleGVjdcOnw6NvIGRvIENvbmZpZ0l0ZW1BQ0wgcG9kZSBzZXIgZXZpdGFkYSBwZWxhIHZlcmlmaWNhw6fDo28gZGFzIGRlcGVuZMOqbmNpYXMgZGUgY2FtcG8gZW0gY2FjaGUuIElzc28gcG9kZSBtZWxob3JhciBvIHRlbXBvIGRlIGNhcnJlZ2FtZW50byBkb3MgZm9ybXVsw6FyaW9zLCBtYXMgZGV2ZSBzZXIgZGVzYXRpdmFkbyBzZSBvcyBBQ0xNb2R1bGVzIGZvcmVtIHVzYWRvcyBwYXJhIElUU01Db25maWdJdGVtLSBlIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdRdWFpcyBpbmZvcm1hw6fDtWVzIGdlcmFpcyBzw6NvIG1vc3RyYWRhcyBubyBjYWJlw6dhbGhvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3DDs3MtcHJvZHV0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdpbXByb2R1dGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHV0aXZvJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiA0NCw0NSBjbSAoMTcsNSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHBvbGVnYWRhcyAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDY2LDY4IGNtICgyNiwyNSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBwb2xlZ2FkYXMgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICdSYWNrIGRlIDE5IHBvbGVnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IHBvbGVnYWRhcyAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnUmFjayBkZSAyMSBwb2xlZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IHBvbGVnYWRhcyAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJ1JhY2sgZGUgMjMgcG9sZWdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwb2xlZ2FkYXMgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIHBvbGVnYWRhcyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgcG9sZWdhZGFzICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiA4LDg5IGNtICgzLDUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IHBvbGVnYWRhcyAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgcG9sZWdhZGFzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwb2xlZ2FkYXMgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHBvbGVnYWRhcyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgcG9sZWdhZGFzICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgcG9sZWdhZGFzICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcG9sZWdhZGFzICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgcG9sZWdhZGFzICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogMTg2LDY5IGNtICg3Myw1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcG9sZWdhZGFzICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDIwMCwwMiBjbSAoNzgsNzUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcxMjAwIG1tICg0NywyIHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDIxMywzNiBjbSAoODQgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IHBvbGVnYWRhcyAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDIyLDIzIGNtICg4LDc1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMzEsMTIgY20gKDEyLDI1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHBvbGVnYWRhcyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiA0MCwwMSBjbSAoMTUsNzUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0NvbnRhYmlsaWRhZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBbG9jYcOnw6NvIGRlIGVuZGVyZcOnb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmFkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnVGVsZWZvbmUgYW5hbMOzZ2ljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1RpcG8gZGUgYXBhcmVsaG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdDYXBhY2lkYWRlIGRhIGJhdGVyaWEgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdUaXBvIGRlIGJhdGVyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdWZXJzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZhY2UgZGUgYmFycmFtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnUHJvY2Vzc2Fkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ2xhc3NlIGRlIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnQ2FwYWNpZGFkZSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnQ2FwYWNpZGFkZSBwb3IgcGxhY2EgZGUgdsOtZGVvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnTsO6bWVybyBkbyBjYXJ0w6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnTGVpdG9yIGRlIGNhcnTDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVGlwbyBkZSBjYXJ0w6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBkbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0NhdGVnb3JpYSBkbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ1RheGEgZGUgcmVsw7NnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1ZlbG9jaWRhZGUgZG8gcmVsw7NnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBhc3NpbmF0dXJhIGRlIGPDs2RpZ28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ1RlbGVmb25lIGRlIGNvbmZlcsOqbmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIGNvbnN1bHRvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdDb250YXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdFbnRyZSBlbSBjb250YXRvIGNvbSBvIGRpc3RyaWJ1aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0dlcmVuY2lhbWVudG8gZGUgY29udMOqaW5lcmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnQ29udHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1RpcG8gZGUgY29udHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdQZXLDrW9kbyBkbyBjb250cmF0byBhIHBhcnRpciBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdQZXLDrW9kbyBkbyBjb250cmF0byBhdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1RlbGVmb25lIHNlbSBmaW8gKHRlbGVmb25lIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ1VuaWRhZGUgZGUgY3VzdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdDb250YWdlbSBkZSBsaWNlbsOnYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0RhdGEgZGUgY3JpYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdSYWNrIHBlcnNvbmFsaXphZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTZXJ2aWRvciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdGEgZGEgZmF0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXRhIGRvIHBlZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0YSBkYSBnYXJhbnRpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXRhIGRlIGxhbsOnYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgYXNzaW5hdHVyYSBkZSBkb2N1bWVudG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnUmFjayBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgZS1tYWlsIChjZXJ0aWZpY2Fkb3MgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdDb250cmF0byBkZSB0cmFiYWxobyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0VuZGVyZcOnbyBJUCBmaW5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0ZpbSBkbyBzdXBvcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRGF0YSBkZSBleHBpcmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRGlzY28gcsOtZ2lkbyBleHRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnRmlyZXdhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ0FybWF6ZW5hbWVudG8gZGUgZW5lcmdpYSBubyB2b2xhbnRlIGRvIG1vdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRmF0b3IgZGUgZm9ybWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIGZyYW5xdWlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnTGl2cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw7VlcyBnZXJhaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdQbGFjYXMgZGUgdsOtZGVvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdQbGFjYSBkZSB2w61kZW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsbyBkZSBoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdQZXNvIGRvIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdGb25lIGRlIG91dmlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3RvY29sbyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdHZXJlbmNpYW1lbnRvIGRlIGlkZW50aWRhZGUgZSBhY2Vzc28gKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ07Dum1lcm8gZGUgaW52ZW50w6FyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdDdXN0b3MgZGUgaW52ZXJzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnTsO6bWVybyBkYSBmYXR1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUZWNsYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEICh0ZWxhIGRlIGNyaXN0YWwgbMOtcXVpZG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIGRlIExFRCAoZGlvZG8gZW1pc3NvciBkZSBsdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1RlbGVmb25lIGZpeG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTm90ZWJvb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdMYXRpdHVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0NhbWFkYSAxOiBDYW1hZGEgZsOtc2ljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdDYW1hZGEgMjogQ2FtYWRhIGRlIGVubGFjZSBkZSBkYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnQ2FtYWRhIDM6IENhbWFkYSBkZSByZWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0NhbWFkYSAzOiBDYW1hZGEgZGUgcmVkZSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0NhbWFkYSA0OiBDYW1hZGEgZGUgdHJhbnNwb3J0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnQ2FtYWRhIDU6IENhbWFkYSBkZSBzZXNzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0NhbWFkYSA2OiBDYW1hZGEgZGUgYXByZXNlbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdDYW1hZGEgNzogQ2FtYWRhIGRlIGFwbGljYXRpdm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIGxvY2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIGxpY2Vuw6dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdDaGF2ZSBkZSBsaWNlbsOnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdUaXBvIGRlIGxpY2Vuw6dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdQZXLDrW9kbyBkZSBsaWNlbsOnYSBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ1BlcsOtb2RvIGRlIGxpY2Vuw6dhIGF0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdGVyaWEgZGUgZm9zZmF0byBkZSBmZXJybyBlIGzDrXRpbyAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0JhdGVyaWEgZGUgw61vbi1sw610aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBFbXByw6lzdGltbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnTG9jYWxpemFkbyBlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdGYWJyaWNhbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdDYXBhY2lkYWRlIG3DoXhpbWEgZGUgY2FyZ2EgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01lbcOzcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVGlwbyBkZSBtZW3Ds3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGNlbHVsYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTcOzdmVsL2luY29ycG9yYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3Jpw6fDo28gZG8gbW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1Jlc29sdcOnw6NvIGRvIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnVGFtYW5obyBkbyBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTW91c2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSW5mb3JtYcOnw7VlcyBzb2JyZSBhIHJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWHDp8O1ZXMgZGUgcmVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnQ2FtYWRhIGRlIHJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdCYXRlcmlhIGRlIG7DrXF1ZWwtY8OhZG1pbyAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdCYXRlcmlhIGRlIGhpZHJldG8gbWV0w6FsaWNvIGRlIG7DrXF1ZWwgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0NvbnRyYXRvIGRlIGNvbmZpZGVuY2lhbGlkYWRlIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnQ2FkZXJubyBkZSBhbm90YcOnw7Vlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ07Dum1lcm8gZGUgQ1BVcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdOw7ptZXJvIGRlIG3Ds2R1bG9zIGRlIFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdOw7ptZXJvIGRlIHBsYWNhcyBkZSB2w61kZW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAoZGlvZG8gb3Jnw6JuaWNvIGVtaXNzb3IgZGUgbHV6KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdDdXN0b3Mgb3BlcmFjaW9uYWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ07Dum1lcm8gZG8gcGVkaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnT3V0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1Nhw61kYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgcGFyY2VyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRlbGVmb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUaXBvIGRlIHRlbGVmb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnTsO6Y2xlb3MgZsOtc2ljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdGb3JuZWNpbWVudG8gZGUgZW5lcmdpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0NvbXByYWRvIGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdQcm9mdW5kaWRhZGUgZG8gcmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1VuaWRhZGVzIGRlIHJhY2sgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdTYWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnQ2FydMOjbyBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0NvbnRyYXRvIGRlIHZlbmRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdUZWxlZm9uZSB2aWEgc2F0w6lsaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0JhdGVyaWEgc2VsYWRhIGRlIGNodW1iby3DoWNpZG8gKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOw7ptZXJvIGRlIHPDqXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBkZSBzZXJ2aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIHNlcnZpw6dvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnRXRpcXVldGEgZGUgc2VydmnDp28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVGlwbyBkZSBzb3F1ZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdBbHRvLWZhbGFudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1BhZHLDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ0VuZGVyZcOnbyBJUCBpbmljaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdBcm1hemVuYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGnDp8OjbyBkZSBhcm1hemVuYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnU3Vic2lkacOhcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdSZXN1bW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdDbGllbnRlIGZpbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0Zpb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsIGRhIHBsYWNhIGdyw6FmaWNhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdSQU0gdG90YWwgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciBjb20gdGVsYSBzZW5zw612ZWwgYW8gdG9xdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3JyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnSHViIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ0ZvbmUgZGUgb3V2aWRvIFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbGVmb25lIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/pt_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYWRvcyBnZXJhaXMgZGUgZnVuY2lvbmFtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnRGVmaW5pw6fDtWVzIHBhcmEgZGFkb3MgZGUgcGVkaWRvcyByZWNlYmlkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdEZWZpbmnDp8O1ZXMgcGFyYSBvcyBkYWRvcyBkZSByZXNwb3N0YSBkZSBzYcOtZGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIEl0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnTXVkYXIgZGVmaW5pw6fDo28gZGUgY2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdNb2RpZmljYXIgZGVmaW5pw6fDo28gZGUgZnVuw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdQYWNvdGVzIGRlIGNsYXNzZXMgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnQXF1aSBwb2RlIGltcG9ydGFyIG9zIHBhY290ZXMgZGUgY2xhc3NlcyBSZWFkeTJJbXBvcnQgcXVlIGFwcmVzZW50YW0gb3Mgbm9zc29zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG1haXMgY29tdW5zLiBUZW5oYSBlbSBhdGVuw6fDo28gcXVlIHBvZGVyw6Egc2VyIG5lY2Vzc8OhcmlhIGFsZ3VtYSBjb25maWd1cmHDp8OjbyBhZGljaW9uYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ0F0dWFsaXphciBlbnRpZGFkZXMgZXhpc3RlbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ0ltcG9ydGFyIG9zIHBhY290ZXMgZGUgY2xhc3NlcyBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NsYXNzZSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdJdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIEZ1bsOnw6NvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0l0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdHJvIHBhcmEgQ2xhc3Nlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY2lvbmUgdW1hIGNsYXNzZSBhIHBhcnRpciBkYSBsaXN0YSBwYXJhIGNyaWFyIHVtIG5vdm8gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdBw6fDo28gZW0gbWFzc2EgSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdFc3RhZG8gZGUgSW1wbGVtZW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlIGluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdMaWdhw6fDo28gYSBvdXRybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTsO6bWVybyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnTyBuw7ptZXJvIGRlIG91dHJvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28gYSBsaWdhci4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdQcmV0ZW5kZSBtZXNtbyBlbGltaW5hciBlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ08gbm9tZSBkZXN0ZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdPIG5vbWUgasOhIGVzdMOhIGEgc2VyIHV0aWxpemFkbyBwZWxvcyBDb25maWdJdGVtcyBjb20gbyhzKSBzZWd1aW50ZShzKSBuw7ptZXJvKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGEgdmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTsO6bWVybyBkYSB2ZXJzw6NvIGRlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdPIG7Dum1lcm8gZGEgdmVyc8OjbyBqw6EgZXN0w6EgYSBzZXIgdXRpbGl6YWRvIHBlbG9zIENvbmZpZ0l0ZW1zIGNvbSBvKHMpIHNlZ3VpbnRlKHMpIG7Dum1lcm8ocyk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdFc3RhZG8gZGUgSW1wbGVtZW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIEluY2lkZW50ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdMOzcmljbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0w7NyaWNvIGRvIGNvbnRlw7pkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnSG9yYSBkZSBjcmlhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVmlzdGEgZGUgZGV0YWxoZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdJdGVucyBkZSBjb25maWd1cmHDp8OjbyBwb3IgcMOhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyBkYWRvcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTZWxlY2lvbmFyIGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ0V4ZWN1dGFyIFBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1Byb2N1cmFyIG5hcyB2ZXJzw7VlcyBhbnRlcmlvcmVzIHRhbWLDqW0/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcGFyYSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTsOtdmVsIGRlIHByb2Z1bmRpZGFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ0F1bWVudGFyIGUgZGltaW51aXIgbyB6b29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ07DrXZlbCBtw6F4aW1vIGRlIGxpZ2HDp8O1ZXMgYXRpbmdpZG8gcGFyYSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0l0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw6NvIGRvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIEltcGxlbWVudGHDp8OjbyBBdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSBBdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfDmmx0aW1hIG1vZGlmaWNhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnw5psdGltYSBtb2RpZmljYcOnw6NvIHBvcic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ09zIHNldXMgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnUGVzcXVpc2EgQ29uZmlnSXRlbSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnVGlwbyBkZSBvYmpldG8nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0cmFyIHBvciB0aXBvJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2Vyw6NvIGltcG9ydGFkYXMgYXMgc2VndWludGVzIGNsYXNzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2Vyw6NvIGltcG9ydGFkYXMgYXMgc2VndWludGVzIGZ1bsOnw7Vlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdOb3RlLXNlIHF1ZSB0YW1iw6ltIHNlcsOjbyBjcmlhZG9zIG9zIGNhbXBvcyBkaW7Dom1pY29zIGUgYXMgY2xhc3NlcyBHZW5lcmFsQ2F0YWxvZyBjb3JyZXNwb25kZW50ZXMgZSBuw6NvIGjDoSByZW1vw6fDo28gYXV0b23DoXRpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnUXVlcmVzIGNvbnRpbnVhcj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnTmVjZXNzaXRhIGRlIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdBIGRlZmluacOnw6NvIG7Do28gw6kgdW0gaGFzaCBZQU1MIHbDoWxpZG8uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnVmlzw6NvIGdlcmFsOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBmb3JuZWNpZG8gbmVuaHVtIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfDiSBuZWNlc3PDoXJpbyBwZWxvIG1lbm9zIHVtIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28gc2VsZWNpb25hZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnTsOjbyB0ZW0gYWNlc3NvIGRlIGVzY3JpdGEgYSBlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo286ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdOw6NvIGZvaSBkZWZpbmlkYSBuZW5odW1hIGRlZmluacOnw6NvIHBhcmEgYSBjbGFzc2UgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdJdGVtIGRlIGNvbmZpZ3VyYcOnw6NvICIlcyIgbsOjbyBlbmNvbnRyYWRvIG5hIGJhc2UgZGUgZGFkb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGVsaW1pbmFyIG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ07Do28gZm9pIGVuY29udHJhZGEgbmVuaHVtYSB2ZXJzw6NvIHBhcmEgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOw6NvIMOpIGZvcm5lY2lkbyBuZW5odW0gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvdSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBkYWRvIGFjZXNzbyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBwb3Nzw612ZWwgbW9zdHJhciBvIGhpc3TDs3JpY28sIG7Do28gw6kgZm9ybmVjaWRvIG5lbmh1bSBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBwb3Nzw612ZWwgbW9zdHJhciBvIGhpc3TDs3JpY28sIG7Do28gZm9yYW0gZGFkb3MgZGlyZWl0b3MgZGUgYWNlc3NvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTm92byBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05vdmEgdmVyc8OjbyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnRXN0YWRvIGRhIGltcGxhbnRhw6fDo28gYXR1YWxpemFkbyAobm92bz0lcywgYW50aWdvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdFc3RhZG8gZG8gaW5jaWRlbnRlIGF0dWFsaXphZG8gKG5vdm89JXMsIGFudGlnbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgZWxpbWluYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGlnYcOnw6NvIGEgJXMgKHRpcG89JXMpIGFkaWNpb25hZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0xpZ2HDp8OjbyBhICVzICh0aXBvPSVzKSBlbGltaW5hZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0RlZmluacOnw6NvIGRlIENvbmZpZ0l0ZW0gYWN0dWFsaXphZGEgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05vbWUgYXR1YWxpemFkbyAobm92bz0lcywgYW50aWdvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0cmlidXRvICVzIGF0dWFsaXphZG8gZGUgIiVzIiBwYXJhICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc8OjbyAlcyBlbGltaW5hZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBpbmRpY2FkbyBuZW5odW0gQ29uZmlnSXRlbUlEIG91IFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBwb3Nzw612ZWwgbW9zdHJhciBvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIG7Do28gZm9yYW0gZGFkb3MgZGlyZWl0b3MgZGUgYWNlc3NvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBuw6NvIGZvaSBlbmNvbnRyYWRvIG5hIGJhc2UgZGUgZGFkb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdJdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdpbXByZXNzbyBwb3IgJXMgZW0gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyw6puY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnQ2xhc3NJRCBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBpbmRpY2FkbyBuZW5odW0gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdOw6NvIHPDo28gY29uY2VkaWRvcyBkaXJlaXRvcyBkZSBhY2Vzc28gYSBlc3RhIGNsYXNzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1NlbSByZXN1bHRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnUmVzdWx0YWRvcyBkYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTsOjbyDDqSBwb3Nzw612ZWwgbW9zdHJhciBvIGl0ZW0sIG7Do28gZm9yYW0gZGFkb3MgZGlyZWl0b3MgZGUgYWNlc3NvIHBhcmEgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBuw6NvIGVuY29udHJhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ07Do28gZm9yYW0gZW5jb250cmFkYXMgdmVyc8O1ZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmFjaW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2F2aXNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdPIGVzdGFkbyBkZSBpbXBsZW1lbnRhw6fDo28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ08gZXN0YWRvIGRlIGluY2lkZW50ZSBkZXN0ZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnU2VtIHBlcm1pc3PDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdHJvIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1BhcsOibWV0cm9zIGRlIHBlc3F1aXNhIGludsOhbGlkb3MhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnSXRlbnMgZGUgY29uZmlndXJhw6fDo28gYXByZXNlbnRhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcG8gZGUgRXN0YWRvIGRlIEltcGxlbWVudGHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdFc3RhZG8gQXR1YWwgZGUgSW5jaWRlbnRlIHBvciB0aXBvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0VudHJlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmnDp8O1ZXMgZGUgY2xhc3NlIHBhcmEgbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVtYSBvdSBtYWlzIGNsYXNzZXMgcGFyYSByZXN0cmluZ2lyIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHNlbGVjY2lvbsOhdmVpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpw6fDtWVzIGRlIGNsYXNzZSBwYXJhIG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjY2lvbmUgdW1hIG91IG1haXMgY2xhc3NlcyBwYXJhIHJlc3RyaW5naXIgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gc2VsZWNjaW9uw6F2ZWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluw6JtaWNvIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnRXN0w6F0aWNvIChWZXJzw6NvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXBvIGRlIHJlZmVyw6puY2lhIGRlIGxpZ2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdTZSBlc3RhIGxpZ2HDp8OjbyBzZSBhcGxpY2EgYW8gQ29uZmlnSXRlbSBvdSDDoCB2ZXJzw6NvIGVzdMOhdGljYSBkbyBvYmpldG8gZGUgcmVmZXLDqm5jaWEuIE8gY8OhbGN1bG8gZG8gZXN0YWRvIGF0dWFsIGRvIGluY2lkZW50ZSBzw7Mgw6kgZWZlY3R1YWRvIGVtIGxpZ2HDp8O1ZXMgZGluw6JtaWNhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdTZWxlY2Npb25lIG8gYXRyaWJ1dG8gcGVsbyBxdWFsIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHNlcsOjbyBwZXNxdWlzYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0EgZXN0cnV0dXJhIGRlIGJhc2UgbsOjbyDDqSB2w6FsaWRhLiBGb3JuZcOnYSB1bSBoYXNoIGNvbSBkYWRvcyBlbSBmb3JtYXRvIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnw4kgbmVjZXNzw6FyaW8gaW5pY2lhciBhIGNhZGVpYSBZQU1MIGNvbSBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgcHVyZ2FyIGEgdGFiZWxhIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ07Do28gZm9yYW0gZW5jb250cmFkb3MgY2FtcG9zIGRpbsOibWljb3MgcmVsZXZhbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBpbnNlcmlyIG5hIHRhYmVsYSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VyaXUgMCBsaW5oYXMgbmEgdGFiZWxhIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdOw7ptZXJvIG3DoXhpbW8gZGUgdW0gZWxlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnSW1wb3J0YXIvRXhwb3J0YXIgYW5leG9zIChjb21vIGFzIMO6bHRpbWFzIGVudHJhZGFzIHBvciBsaW5oYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzw6NvIFN0cmluZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdFcnJvIGFvIHNpbmNyb25pemFyIGFzIGRlZmluacOnw7Vlcy4gVmVyaWZpY2FyIG8gcmVnaXN0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdUZW0gZGVmaW5pw6fDtWVzIElUU01Db25maWdJdGVtIHF1ZSBuw6NvIGVzdMOjbyBzaW5jcm9uaXphZGFzLiBQb3IgZmF2b3IsIGltcGxlbWVudGUgYXMgYWx0ZXJhw6fDtWVzIGRvIGNhbXBvIGRpbsOibWljbyBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0V4cGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnTWFudXRlbsOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFuZWFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBhcmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0aXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2aXPDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3RlIGRlIFF1YWxpZGFkZSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnVmlzw6NvIGdlcmFsIGUgY29uZmlybWHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRhw6fDo28gZGUgY2xhc3Nlcy9mdW7Dp8O1ZXMgZSByZXNwZWN0aXZvcyBjYW1wb3MgcmVsYWNpb25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnT2NvcnJldSB1bSBlcnJvIGR1cmFudGUgYSBpbXBvcnRhw6fDo28gZGEgY2xhc3NlLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gT2N1bHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBNb3N0cmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWl0ZSBjb25kacOnw7VlcyBkZSBwZXNxdWlzYSBhbGFyZ2FkYXMgbmEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4gQ29tIGVzdGEgZnVuY2lvbmFsaWRhZGUsIMOpIHBvc3PDrXZlbCBwZXNxdWlzYXIsIHBvciBleGVtcGxvLCBvIG5vbWUgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBjb20gZXN0ZSB0aXBvIGRlIGNvbmRpw6fDtWVzLCBjb21vICIoKmtleTEqJiYqa2V5MiopIiBvdSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgY29uZGnDp8O1ZXMgZGUgcGVzcXVpc2EgYWxhcmdhZGFzIG5hIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLiBDb20gZXN0YSBmdW5jaW9uYWxpZGFkZSwgcG9kZSBwZXNxdWlzYXIsIHBvciBleGVtcGxvLCBvIG5vbWUgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBjb20gZXN0ZSB0aXBvIGRlIGNvbmRpw6fDtWVzLCBjb21vICIoKmtleTEqJiYqa2V5MiopIiBvdSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0lDcyBhdHJpYnXDrWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnSUNzIGF0cmlidcOtZGFzIMOgIGVtcHJlc2EgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0lDcyBhdHJpYnXDrWRhcyBhbyB1dGlsaXphZG9yIGRvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0RlZmluacOnw7VlcyBkYSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdWZXJpZmljYSB1bSBub21lIMO6bmljbyBhcGVuYXMgZGVudHJvIGRhIG1lc21hIGNsYXNzZSBkZSBDb25maWdJdGVtIChcJ2NsYXNzXCcpIG91IGdsb2JhbG1lbnRlIChcJ2dsb2JhbFwnKSwgbyBxdWUgc2lnbmlmaWNhIHF1ZSB0b2RvcyBvcyBDb25maWdJdGVtIGV4aXN0ZW50ZXMgc8OjbyB0aWRvcyBlbSBjb250YSBhbyBwcm9jdXJhciBkdXBsaWNhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnRXNjb2xoYSB1bSBtw7NkdWxvIHBhcmEgYXBsaWNhciB1bSBlc3F1ZW1hIGRlIG5vbWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnU2VsZWNpb25hciB1bSBtw7NkdWxvIHBhcmEgYXBsaWNhciB1bSBlc3F1ZW1hIG51bcOpcmljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnRXNjb2xoYSB1bSBtw7NkdWxvIHBhcmEgYXBsaWNhciB1bSBlc3F1ZW1hIGRlIGNhZGVpYSBkZSB2ZXJzw7Vlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdTZWxlY2lvbmFyIGF0cmlidXRvcyBwYXJhIGFjaW9uYXIgYSBjcmlhw6fDo28gZGUgdW1hIG5vdmEgdmVyc8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnRXNjb2xoYSBjYXRlZ29yaWFzIHBhcmEgYXRyaWJ1aXIgYSBlc3RhIGNsYXNzZSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cm9zIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRlIGNvbHVuYSBwYXJhIFZpc8OjbyBnZXJhbCBkbyBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sdW5hcyBxdWUgcG9kZW0gc2VyIGZpbHRyYWRhcyBuYSBzw61udGVzZSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLiBOb3RhOiBBcGVuYXMgc8OjbyBwZXJtaXRpZG9zIGF0cmlidXRvcyBkZSBJdGVucyBkZSBDb25maWd1cmHDp8OjbyBlIENhbXBvcyBEaW7Dom1pY29zIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdJdGVucyBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQWRpY2lvbmFyIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnRWRpdGFyIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG8gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBxdWUgcGVybWl0ZSByZWdpc3RhciBvIGhpc3TDs3JpY28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG8gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBxdWUgYWN0dWFsaXphIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHBhcmEgYSBzdWEgZGVmaW5pw6fDo28gYXR1YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSGlzdMOzcmljbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnSW1wcmltaXIgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWd1cmFyIG8gem9vbSBkbyBpdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1Zpc3RhIGVtIMOhcnZvcmUgZG8gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnPDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnT3MgQ29uZmlnSXRlbXMgZGFzIHNlZ3VpbnRlcyBjbGFzc2VzIG7Do28gc2Vyw6NvIGFybWF6ZW5hZG9zIG5vIHNlcnZpZG9yIEVsYXN0aWNzZWFyY2guIFBhcmEgYXBsaWNhciBpc3RvIGFvcyBJQ3MgZXhpc3RlbnRlcywgYSBtaWdyYcOnw6NvIGRvIElDIHRlbSBkZSBzZXIgZXhlY3V0YWRhIGF0cmF2w6lzIGRhIGNvbnNvbGEsIGRlcG9pcyBkZSBhbHRlcmFyIGVzdGEgb3DDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnT3MgQ29uZmlnSXRlbXMgY29tIG9zIHNlZ3VpbnRlcyBlc3RhZG9zIGRlIGltcGxhbnRhw6fDo28gbsOjbyBzZXLDo28gYXJtYXplbmFkb3Mgbm8gc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGlzdG8gYW9zIElDcyBleGlzdGVudGVzLCBhIG1pZ3Jhw6fDo28gZG8gSUMgdGVtIGRlIHNlciBleGVjdXRhZGEgYXRyYXbDqXMgZGEgY29uc29sYSwgZGVwb2lzIGRlIGFsdGVyYXIgZXN0YSBvcMOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdGUgZGUgSXRlbXMgZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYcOnw6NvIExpbWl0ZSBkZSBpdGVucyBwb3IgcMOhZ2luYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0Jhc2UgZGUgZGFkb3MgZGUgZ2VzdMOjbyBkYSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ03Ds2R1bG8gZW0gYmxvY28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm91dGVyIGRlIHBlc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JpYXIgZSBnZXJpciBhcyBkZWZpbmnDp8O1ZXMgZGUgSXRlbnMgZGUgQ29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3JpYSBiaWxoZXRlcyBwYXJhIENvbmZpZ0l0ZW1zIGVtIHBvbnRvcyBkZSB0ZW1wbyBlc3BlY8OtZmljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ09zIGNsaWVudGVzIHBvZGVtIHZlciB2ZXJzw7VlcyBoaXN0w7NyaWNhcyBkZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnT3MgY2xpZW50ZXMgdMOqbSBhIHBvc3NpYmlsaWRhZGUgZGUgYWx0ZXJuYXIgbWFudWFsbWVudGUgZW50cmUgdmVyc8O1ZXMgaGlzdMOzcmljYXMgZGUgSUMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGFkb3MgcHJlZGVmaW5pZG9zIGEgdXRpbGl6YXIgbm8gYXRyaWJ1dG8gcGFyYSBvIGVjcsOjIGRlIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLiBFeGVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhZG9zIHByZWRlZmluaWRvcyBhIHV0aWxpemFyIG5vIGF0cmlidXRvIHBhcmEgbyBlY3LDoyBkZSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4gRXhlbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXIgQWPDp8O1ZXMgb25kZSB1bSBib3TDo28gZGUgY29uZmlndXJhw6fDtWVzIGVzdMOhIGRpc3BvbsOtdmVsIG5hIHdpZGdldCB0aGUgb2JqZWN0b3MgbGlnYWRvcyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiAgRXN0YXMgQWPDp8O1ZXMgZGV2ZW0gZXN0YXIgcmVnaXN0YWRhcyBub3Mgc2VndWludGVzIGZpY2hlaXJvcyBKUyBlIENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bSBlc3F1ZW1hIFRlbXBsYXRlOjpUb29sa2l0IHBhcmEgc3RyaW5ncyBkZSB2ZXJzw6NvLiBBcGVuYXMgdXRpbGl6YWRvIHNlIG8gbcOzZHVsbyBWZXJzaW9uIFN0cmluZyBlc3RpdmVyIGRlZmluaWRvIGNvbW8gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluZSB1bSBjb25qdW50byBkZSBjb25kacOnw7VlcyBzb2IgYXMgcXVhaXMgdW0gY2xpZW50ZSDDqSBhdXRvcml6YWRvIGEgdmVyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uIEFzIGNvbmRpw6fDtWVzIHBvZGVtLCBvcGNpb25hbG1lbnRlLCBzZXIgcmVzdHJpbmdpZGFzIGEgZGV0ZXJtaW5hZG9zIGdydXBvcyBkZSBjbGllbnRlcy4gTyBub21lIMOpIG8gw7puaWNvIGF0cmlidXRvIG9icmlnYXTDs3Jpby4gU2UgbsOjbyBmb3JlbSBkYWRhcyBvdXRyYXMgb3DDp8O1ZXMsIHRvZG9zIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHNlcsOjbyB2aXPDrXZlaXMgbmVzc2EgY2F0ZWdvcmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGFzIHBlcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIGVsaW1pbmFyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gdXRpbGl6YW5kbyBhIGludGVyZmFjZSBnZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYXMgcGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgb2J0ZXIgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gSVRTTSB1dGlsaXphbmRvIGEgaW50ZXJmYWNlIGdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBwZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSBwZXNxdWlzYXIgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gSVRTTSB1dGlsaXphbmRvIGEgSW50ZXJmYWNlIEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBwZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSBkZWZpbmlyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gdXRpbGl6YW5kbyBhIEludGVyZmFjZSBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bSBtw7NkdWxvIGRlIHZpc3RhIGdlcmFsIHBhcmEgbW9zdHJhciBhIHZpc3RhIHBlcXVlbmEgZGEgbGlzdGEgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBzZSBhcyBldGlxdWV0YXMgZG8gdGlwbyBkZSBsaWdhw6fDo28gZGV2ZW0gc2VyIGFwcmVzZW50YWRhcyBuYXMgbGlnYcOnw7VlcyBkb3MgbsOzcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluZSBleHByZXNzw7VlcyByZWd1bGFyZXMgaW5kaXZpZHVhbG1lbnRlIHBhcmEgY2FkYSBjbGFzc2UgQ29uZmlnSXRlbSBwYXJhIHZlcmlmaWNhciBvIG5vbWUgZG8gQ29uZmlnSXRlbSBlIG1vc3RyYXIgYXMgbWVuc2FnZW5zIGRlIGVycm8gY29ycmVzcG9uZGVudGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIGRpc3BvbsOtdmVpcyBkZSBJQ3MgbmEgdmlzw6NvIGdlcmFsIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIGRlcGVuZGVuZG8gZGEgY2xhc3NlIGRvIElDLiBDYWRhIGVudHJhZGEgZGV2ZSBzZXIgY29tcG9zdGEgcG9yIHVtIG5vbWUgZGUgY2xhc3NlIGUgdW1hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uw612ZWlzIHBhcmEgYSBjbGFzc2UgY29ycmVzcG9uZGVudGUuIEFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7Dom1pY29zIHTDqm0gZGUgcmVzcGVpdGFyIG8gZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBwcmVkZWZpbmlkbyBwYXJhIGEgb3JkZW5hw6fDo28gZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZG8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHByZWRlZmluaWRvIHBhcmEgYSBvcmRlbmHDp8OjbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBwcmVkZWZpbmlkbyBwYXJhIGEgb3JkZW5hw6fDo28gZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZG8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRlc3RhIG9wZXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwcmVkZWZpbmlkYSBkb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIEFjaW1hOiBvIG1haXMgYW50aWdvIG5vIHRvcG8uIFBhcmEgYmFpeG86IG8gbWFpcyByZWNlbnRlIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwcmVkZWZpbmlkYSBkb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLiBBY2ltYTogbyBtYWlzIGFudGlnbyBubyB0b3BvLiBQYXJhIGJhaXhvOiBvIG1haXMgcmVjZW50ZSBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwcmVkZWZpbmlkYSBkb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRlc3RhIG9wZXJhw6fDo28uIFBhcmEgY2ltYTogbyBtYWlzIGFudGlnbyBubyB0b3BvLiBQYXJhIGJhaXhvOiBvIG1haXMgcmVjZW50ZSBubyB0b3BvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgZGUgSUNzIGV4aWJpZGFzIHBvciBwYWRyw6NvIG5hIHZpc8OjbyBnZXJhbCBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLCBkZXBlbmRlbmRvIGRhIGNsYXNzZSBkbyBJQy4gQ2FkYSBlbnRyYWRhIGRldmUgc2VyIGNvbXBvc3RhIHBvciB1bSBub21lIGRlIGNsYXNzZSBlIHVtYSBtYXRyaXogZGUgY2FtcG9zIGRpc3BvbsOtdmVpcyBwYXJhIGEgY2xhc3NlIGNvcnJlc3BvbmRlbnRlLiBBcyBlbnRyYWRhcyBkZSBjYW1wb3MgZGluw6JtaWNvcyB0w6ptIGRlIHJlc3BlaXRhciBvIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRGVmaW5lIGEgcHJvZnVuZGlkYWRlIGRhcyByZWxhw6fDtWVzIHByZWRlZmluaWRhcyBhIHNlcmVtIG1vc3RyYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBtb3N0cmFkbyBwb3IgZGVmZWl0byBwYXJhIG8gZWNyw6MgZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIGRlIHBlc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbW9zdHJhZG8gcG9yIGRlZmVpdG8gcGFyYSBvIGVjcsOjIGRlIHBlc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uIEV4ZW1wbG86ICJLZXkiIChDaGF2ZSkgZGV2ZSB0ZXIgbyBub21lIGRvIGNhbXBvIGRpbsOibWljbywgbmVzdGUgY2FzbyAiWCIsICJDb250ZW50IiAoQ29udGXDumRvKSBkZXZlIHRlciBvIHZhbG9yIGRvIGNhbXBvIGRpbsOibWljbywgZGVwZW5kZW5kbyBkbyB0aXBvIGRlIGNhbXBvIGRpbsOibWljbywgVGV4dCAoVGV4dG8pOiAidW0gdGV4dG8iLCBEcm9wZG93biAoTWVudSBzdXNwZW5zbyk6ICIxIiwgRGF0ZS9UaW1lIChEYXRhL0hvcmEpOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgZSBvdSBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmUgbyBzdWJvYmpldG8gcG9yIG9taXNzw6NvIGRhIGNsYXNzZSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkaXNwb27DrXZlaXMgZGUgSUNzIG5hIHZpc8OjbyBnZXJhbCBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLCBkZXBlbmRlbmRvIGRhIGNsYXNzZSBkbyBJQy4gQ2FkYSBlbnRyYWRhIGRldmUgc2VyIGNvbXBvc3RhIHBvciB1bSBub21lIGRlIGNsYXNzZSBlIHVtYSBtYXRyaXogZGUgY2FtcG9zIGRpc3BvbsOtdmVpcyBwYXJhIGEgY2xhc3NlIGNvcnJlc3BvbmRlbnRlLiBBcyBlbnRyYWRhcyBkZSBjYW1wb3MgZGluw6JtaWNvcyB0w6ptIGRlIHJlc3BlaXRhciBvIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5lIGEgYWx0dXJhIGRvIGNvbXBvbmVudGUgZG8gZWRpdG9yIGRlIHJpY2ggdGV4dCBwYXJhIGVzdGUgZWNyw6MuIEludHJvZHV6YSBvIG7Dum1lcm8gKHBpeMOpaXMpIG91IG8gdmFsb3IgcGVyY2VudHVhbCAocmVsYXRpdm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBuw7ptZXJvIGRlIGxpbmhhcyBwYXJhIG8gZWRpdG9yIGRlIGRlZmluacOnw6NvIGRlIElDIG5hIGludGVyZmFjZSBkZSBhZG1pbmlzdHJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIGRvcyBlc3RhZG9zIGluY2lkZW50ZXMgZGUgYWx0byAocG9yIGV4ZW1wbG8sIGNyaWNpdGFsKSBwYXJhIGJhaXhvIChwb3IgZXhlbXBsbywgZnVuY2lvbmFsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgb3MgZXN0YWRvcyBkZSBpbXBsYW50YcOnw6NvIHJlbGV2YW50ZXMgb25kZSBvcyB0aWNrZXRzIHZpbmN1bGFkb3MgcG9kZW0gYWZldGFyIG8gc3RhdHVzIGRlIHVtIElDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIG8gZWNyw6MgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgbyBsaW1pdGUgZGUgcGVzcXVpc2EgcGFyYSBvIGVjcsOjIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gbGltaXRlIGRlIHBlc3F1aXNhIHBhcmEgbyBlY3LDoyBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIG8gZWNyw6MgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkZSBJQ3MgYXByZXNlbnRhZGFzIG5hIHZpc3RhIGNvbXBsZXhhIGRhIHRhYmVsYSBkZSBsaWdhw6fDtWVzIHBhcmEgdG9kYXMgYXMgY2xhc3NlcyBkZSBJQ3MuIFNlIG7Do28gaG91dmVyIG5lbmh1bWEgZW50cmFkYSwgZW50w6NvIGFzIGNvbHVuYXMgcGFkcsOjbyBzw6NvIG1vc3RyYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIG1vc3RyYWRhcyBkb3MgSUNzIG5hIHZpc8OjbyBjb21wbGV4YSBkYSB0YWJlbGEgZGUgbGlnYcOnw7VlcywgZGVwZW5kZW5kbyBkYSBjbGFzc2UgZG8gSUMuIENhZGEgZW50cmFkYSBkZXZlIHNlciBwcmVmaXhhZGEgY29tIG8gbm9tZSBkYSBjbGFzc2UgZSBkb2lzIHBvbnRvcyBkdXBsb3MgKHBvciBleGVtcGxvLCBDb21wdXRhZG9yOjopLiBFeGlzdGVtIGFsZ3VucyBhdHJpYnV0b3MgZGUgSUMgcXVlIHPDo28gY29tdW5zIGEgdG9kb3Mgb3MgSUNzIChleGVtcGxvIHBhcmEgYSBjbGFzc2UgQ29tcHV0YWRvcjogQ29tcHV0YWRvcjo6Tm9tZSwgQ29tcHV0YWRvcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRhZG9yOjpDcmVhdGVUaW1lKS4gUGFyYSBtb3N0cmFyIGF0cmlidXRvcyBkZSBJQyBpbmRpdmlkdWFpcywgdGFsIGNvbW8gZGVmaW5pZG9zIG5hIGRlZmluacOnw6NvIGRlIElDLCBkZXZlIHNlciB1dGlsaXphZG8gbyBzZWd1aW50ZSBlc3F1ZW1hIChleGVtcGxvIHBhcmEgYSBjbGFzc2UgQ29tcHV0YWRvcik6IENvbXB1dGFkb3I6OkhhcmREaXNrOjoxLCBDb21wdXRhZG9yOjpIYXJkRGlzazo6MTo6Q2FwYWNpZGFkZTo6MSwgQ29tcHV0YWRvcjo6SGFyZERpc2s6OjIsIENvbXB1dGFkb3I6OkhhcmREaXNrOjoyOjpDYXBhY2lkYWRlOjoxLiBTZSBuw6NvIGV4aXN0aXIgcXVhbHF1ZXIgcmVnaXN0byBwYXJhIHVtYSBjbGFzc2UgZGUgSUMsIHPDo28gYXByZXNlbnRhZGFzIGFzIGNvbHVuYXMgcHJlZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBpdGVucyBxdWUgZXN0w6NvIGRpc3BvbsOtdmVpcyBwYXJhICJBw6fDo28iIG5vIHRlcmNlaXJvIG7DrXZlbCBkYSBlc3RydXR1cmEgZG8gSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIG9zIGl0ZW5zIHF1ZSBlc3TDo28gZGlzcG9uw612ZWlzIG5vIHByaW1laXJvIG7DrXZlbCBkYSBlc3RydXR1cmEgZG8gSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBpdGVucyBxdWUgZXN0w6NvIGRpc3BvbsOtdmVpcyBubyBzZWd1bmRvIG7DrXZlbCBkYSBlc3RydXR1cmEgZG8gSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdWUgdGlwbyBkZSBsaWdhw6fDo28gKG5vbWVhZGEgYSBwYXJ0aXIgZGEgcGVyc3BldGl2YSBkbyBiaWxoZXRlKSBwb2RlIGFmZXRhciBvIGVzdGFkbyBkZSB1bSBJQyBsaWdhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1ZSB0aXBvIGRlIGJpbGhldGUgcG9kZSBhZmV0YXIgbyBlc3RhZG8gZGUgdW0gSUMgbGlnYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0F0dWFsaXphw6fDo28gZGEgZGVmaW5pw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsaW1pbmFyIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDb3IgZG8gZXN0YWRvIGRlIGltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRXN0YWRvIGRlIGltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBjYW1wbyBkaW7Dom1pY28gcXVlIG1hcmNhIGFzIGRlZmluacOnw7VlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBjb21vIGZvcmEgZGUgc2luY3JvbmlhLCBzZSBvcyBjYW1wb3MgZGluw6JtaWNvcyBjb250aWRvcyBmb3JlbSBhbHRlcmFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3Mgbm8gZWNyw6IgYWRpY2lvbmFsIElUU00gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgYXByZXNlbnRhZG9zIG5vIGVjcsOjIGRlIHPDrW50ZXNlIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgYXByZXNlbnRhZG9zIG5vIGVjcsOjIGRlIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0F0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgYcOnw6NvIGVtIG1hc3NhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHBhcmEgcXVlIG8gZnJvbnRlbmQgZG8gYWdlbnRlIHRyYWJhbGhlIGVtIG1haXMgZG8gcXVlIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGUgY2FkYSB2ZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdBdGl2YSBhIGZ1bmNpb25hbGlkYWRlIGRlIGHDp8OjbyBlbSBtYXNzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBhcGVuYXMgcGFyYSBvcyBncnVwb3MgbGlzdGFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0F0aXZhL2Rlc2FjdGl2YSBhIGZ1bmNpb25hbGlkYWRlIHBhcmEgdmVyaWZpY2FyIHNlIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gdMOqbSBub21lcyDDum5pY29zLiBBbnRlcyBkZSBhdGl2YXIgZXN0YSBvcMOnw6NvLCBkZXZlIHZlcmlmaWNhciBzZSBleGlzdGVtIG5vIHNldSBzaXN0ZW1hIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGNvbSBub21lcyBkdXBsaWNhZG9zLiBQb2RlIGZhesOqLWxvIGNvbSBvIGNvbWFuZG8gZGEgY29uc29sYSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBwYXJhIGRlZmluaXIgbyBlc3RhZG8gZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBubyBsaW5rIHRpY2tldC1jb25maWdpdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdDYW1wb3MgZG8gw61uZGljZSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbywgdXRpbGl6YWRvcyBwYXJhIGEgcGVzcXVpc2EgZGUgdGV4dG8gaW50ZWdyYWwuIE9zIGNhbXBvcyB0YW1iw6ltIHPDo28gYXJtYXplbmFkb3MsIG1hcyBuw6NvIHPDo28gb2JyaWdhdMOzcmlvcyBwYXJhIGEgZnVuY2lvbmFsaWRhZGUgZ2VyYWwuIEEgaW5jbHVzw6NvIGRlIGFuZXhvcyBwb2RlIHNlciBkZXNhY3RpdmFkYSBkZWZpbmluZG8gYSBlbnRyYWRhIGNvbW8gMCBvdSBlbGltaW5hbmRvLWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdDYW1wb3MgYXJtYXplbmFkb3Mgbm8gw61uZGljZSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBxdWUgc8OjbyB1dGlsaXphZG9zIHBhcmEgb3V0cmFzIGNvaXNhcyBwYXJhIGFsw6ltIGRlIHBlc3F1aXNhcyBkZSB0ZXh0byBpbnRlZ3JhbC4gUGFyYSB1bWEgZnVuY2lvbmFsaWRhZGUgY29tcGxldGEsIHRvZG9zIG9zIGNhbXBvcyBzw6NvIG9icmlnYXTDs3Jpb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnUGFyYSBjYWRhIHNlcnZpw6dvIFdlYiAoY2hhdmUpIHBvZGUgc2VyIGRlZmluaWRvIHVtIGNvbmp1bnRvIGRlIGNsYXNzZXMgKHZhbG9yKSDDoHMgcXVhaXMgYSBpbXBvcnRhw6fDo28gw6kgbGltaXRhZGEuIFBhcmEgdG9kYXMgYXMgY2xhc3NlcyBlc2NvbGhpZGFzLCBvdSBwYXJhIHRvZGFzIGFzIGNsYXNzZXMgZXhpc3RlbnRlcywgb3MgYXRyaWJ1dG9zIGRlIGlkZW50aWZpY2HDp8OjbyB0ZXLDo28gZGUgc2VyIGVzY29saGlkb3MgbmEgY29uZmlndXJhw6fDo28gZG8gaW52b2NhZG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RvIGRvIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGEgY2FtYWRhIGRvIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0byBkbyBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBhIGNhbWFkYSBkbyBpbnZvY2Fkb3IgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RvIGRvIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGEgY2FtYWRhIGRvIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1PDrW50ZXNlIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdFc3RhZG8gZG8gaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1aSBlc3RhZG9zIGRlIGltcGxhbnRhw6fDo28gbmEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWkgZXN0YWRvcyBkZSBpbmNpZGVudGVzIG5hIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGEgYXByZXNlbnRhciBubyByZXN1bHRhZG8gZGVzdGEgb3BlcmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNw7NkdWxvIHBhcmEgdmVyaWZpY2FyIG8gZ3J1cG8gcmVzcG9uc8OhdmVsIHBvciB1bWEgY2xhc3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gcGFyYSB2ZXJpZmljYXIgbyBncnVwbyByZXNwb25zw6F2ZWwgcG9yIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTcOzZHVsbyBwYXJhIGdlcmFyIGVzdGF0w61zdGljYXMgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05vbWUgZG8gbcOzZHVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTsO6bWVybyBNw7NkdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gYSBhcHJlc2VudGFyIGVtIGNhZGEgcMOhZ2luYSBkZSB1bSByZXN1bHRhZG8gZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBhIGFwcmVzZW50YXIgZW0gY2FkYSBww6FnaW5hIGRlIHVtIHJlc3VsdGFkbyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmplY3RvcyBhIHByb2N1cmFyLCBxdWFudGFzIGVudHJhZGFzIGUgcXVhaXMgb3MgYXRyaWJ1dG9zIGEgbW9zdHJhci4gT3MgYXRyaWJ1dG9zIENvbmZpZ0l0ZW0gdMOqbSBkZSBzZXIgYXJtYXplbmFkb3MgZXhwbGljaXRhbWVudGUgYXRyYXbDqXMgZG8gRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzw6NvIEdlcmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBhcyBjYXRlZ29yaWFzIGRlIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgb3MgZmlsdHJvcyBkZSBjb2x1bmEgZGEgdmlzw6NvIGdlcmFsIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcGVxdWVuby4gTm90YTogYSBkZWZpbmnDp8OjbyBkZSAiQWN0aXZlIiAoQXRpdm8pIHBhcmEgMCBhcGVuYXMgaW1wZWRlIG9zIGFnZW50ZXMgZGUgZWRpdGFyZW0gYXMgZGVmaW5pw6fDtWVzIGRlc3RlIGdydXBvIG5hcyBzdWFzIHByZWZlcsOqbmNpYXMgcGVzc29haXMsIG1hcyBjb250aW51YSBhIHBlcm1pdGlyIHF1ZSBvcyBhZG1pbmlzdHJhZG9yZXMgZWRpdGVtIGFzIGRlZmluacOnw7VlcyBlbSBub21lIGRlIG91dHJvIHV0aWxpemFkb3IuIFV0aWxpemUgIlByZWZlcmVuY2VHcm91cCIgcGFyYSBjb250cm9sYXIgZW0gcXVlIMOhcmVhIGVzdGFzIGRlZmluacOnw7VlcyBkZXZlbSBzZXIgYXByZXNlbnRhZGFzIG5hIGludGVyZmFjZSBkbyB1dGlsaXphZG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBhIGNvciBkb3MgZXN0YWRvcyBkZSBpbXBsZW1lbnRhw6fDo28gbmEgdmlzdGEgZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRlIGVzdGFkbyBkZSBpbXBsZW1lbnRhw6fDo28gbmFzIHByZWZlcsOqbmNpYXMgZGUgdmlzdWFsaXphw6fDo28gZGEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgZG8gZ3J1cG9zIGRlIHBlcm1pc3PDo28gZGUgZXhlbXBsbyBkb3MgYXRyaWJ1dG9zIGRvIGNhdMOhbG9nbyBnZXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG8gbcOzZHVsbyBkZSBub21lcyBwYXJhIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZGUgbsO6bWVyb3MgcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3RhIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgZGFzIHDDoWdpbmFzIChuYXMgcXVhaXMgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gc8OjbyB2aXN1YWxpemFkb3MpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG8gbcOzZHVsbyBkZSBjYWRlaWEgZGUgdmVyc8O1ZXMgcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3RhIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG8gbcOzZHVsbyBkbyBjb25qdW50byBkZSBmZXJyYW1lbnRhcyBkbyBtb2RlbG8gZGUgY2FkZWlhIGRlIHZlcnPDtWVzIHBhcmEgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgbyBhY2lvbmFkb3IgZGUgdmVyc8OjbyBwYXJhIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ0V4ZWN1dGEgYSBhw6fDo28gY29uZmlndXJhZGEgcGFyYSBjYWRhIGV2ZW50byAoY29tbyBJbnZvY2Fkb3IpIHBhcmEgY2FkYSBXZWJzZXJ2aWNlIGNvbmZpZ3VyYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnUGVybWlzc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1dGlsaXphciBhIGHDp8OjbyBkZSBhbmV4YcOnw6NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBvIGZvcm11bMOhcmlvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBvIGZvcm11bMOhcmlvIGRlIHBlc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXRpbGl6YXIgbyBlY3LDoyBkZSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHV0aWxpemFyIG8gZWNyw6MgZGUgdmlzdWFsaXphw6fDo28gZW0gw6Fydm9yZSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBvIGZvcm11bMOhcmlvIGRlIGRldGFsaGVzIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBvIGZvcm11bMOhcmlvIGRlIGFkacOnw6NvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHV0aWxpemFyIG8gZWNyw6MgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gSVRTTSBlbSBtYXNzYSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIG8gZm9ybXVsw6FyaW8gZGUgZWRpw6fDo28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBvIGZvcm11bMOhcmlvIGRlIGhpc3TDs3JpY28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBpbXByZXNzw6NvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUHJpdmlsw6lnaW9zIG5lY2Vzc8OhcmlvcyBwYXJhIGVsaW1pbmFyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1Byb2N1cmFyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnRGVmaW5pciBvIGVzdGFkbyBkbyBpbmNpZGVudGUgZGUgdW0gSUMgYXV0b21hdGljYW1lbnRlIHF1YW5kbyB1bSB0aWNrZXQgw6kgdmluY3VsYWRvIGEgdW0gSUMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG8gZXN0YWRvIGRlIGltcGxlbWVudGHDp8OjbyBubyBlY3LDoyBlbSBibG9jbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGVzdGFkbyBkbyBpbmNpZGVudGUgbm8gZWNyw6MgZW0gYmxvY28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcXVlIHBlcm1pdGUgYXNzb2NpYXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBhIG91dHJvIG9iamV0byBuYSB2aXN0YSBkZSBkZXRhbGhlcyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW1hIGxpZ2HDp8OjbyBubyBtZW51IHBhcmEgYWNlZGVyIGFvIGhpc3TDs3JpY28gZGUgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSBzw61udGVzZSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgYWNlZGVyIG8gaGlzdMOzcmljbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3RhIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW1hIGxpZ2HDp8OjbyBubyBtZW51IHBhcmEgZWxpbWluYXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSBzdWEgdmlzdGEgZGUgem9vbSBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnTW9zdHJhIHVtYSBsaWdhw6fDo28gbm8gbWVudSBwYXJhIGFwcmVzZW50YXIgYXMgbGlnYcOnw7VlcyBkb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gY29tbyB1bWEgVmlzdGEgZW0gw4Fydm9yZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW1hIGxpZ2HDp8OjbyBubyBtZW51IHBhcmEgZHVwbGljYXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSBzw61udGVzZSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgZHVwbGljYXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgZWRpdGFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtYSBsaWdhw6fDo28gbm8gbWVudSBwYXJhIHZvbHRhciDDoCB2aXN0YSBkZSB6b29tIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgaW1wcmltaXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBkZXRhbGhlcyBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtYSBsaWdhw6fDo28gbm8gbWVudSBwYXJhIGFtcGxpYXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSBzw61udGVzZSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIG8gaGlzdMOzcmljbyBkbyBpdGVtIGNvbmZpZ3VyYcOnw6NvIChvcmRlbSBpbnZlcnNhKSBubyBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdBIGNhdGVnb3JpYSBwcmVkZWZpbmlkYSBxdWUgw6kgbW9zdHJhZGEsIHNlIG7Do28gZm9yIHNlbGVjaW9uYWRhIG5lbmh1bWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdPIGlkZW50aWZpY2Fkb3IgZGUgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgcG9yIGV4ZW1wbG8sIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBBIHByZWRlZmluacOnw6NvIMOpIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0FjY2lvbmEgYXV0b21hdGljYW1lbnRlIG8gaW52b2NhZG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnPDo28gRXhwcmVzc8OjbyBkZSBjYWRlaWEgZGUgY2FyYWN0ZXJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzw6NvIFN0cmluZyBNw7NkdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ0FjaW9uYWRvciBkZSB2ZXJzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdTZSBhIGV4ZWN1w6fDo28gZGUgQ29uZmlnSXRlbUFDTCBwb2RlIHNlciBldml0YWRhIGF0cmF2w6lzIGRhIHZlcmlmaWNhw6fDo28gZGFzIGRlcGVuZMOqbmNpYXMgZGUgY2FtcG8gZW0gY2FjaGUuIElzdG8gcG9kZSBtZWxob3JhciBvcyB0ZW1wb3MgZGUgY2FycmVnYW1lbnRvIGRvcyBmb3JtdWzDoXJpb3MsIG1hcyB0ZW0gZGUgc2VyIGRlc2F0aXZhZG8sIHNlIG9zIEFDTE1vZHVsZXMgdGl2ZXJlbSBkZSBzZXIgdXRpbGl6YWRvcyBwYXJhIElUU01Db25maWdJdGVtLSBlIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdRdWUgaW5mb3JtYcOnw7VlcyBnZXJhaXMgc8OjbyBhcHJlc2VudGFkYXMgbm8gY2FiZcOnYWxoby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdjbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncMOzcy1wcm9kdXRpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3Byw6ktcHJvZHV0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdXRpdm8nOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgcG9sZWdhZGFzICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgcG9sZWdhZGFzICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgcG9sZWdhZGFzICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IHBvbGVnYWRhcyAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ1JhY2sgZGUgMTkgcG9sZWdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBwb2xlZ2FkYXMgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgcG9sZWdhZGFzICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICdSYWNrIGRlIDIxIHBvbGVnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgcG9sZWdhZGFzICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnRXN0YW50ZSBkZSAyMyBwb2xlZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHBvbGVnYWRhcyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgcG9sZWdhZGFzICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBwb2xlZ2FkYXMgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSBwb2xlZ2FkYXMgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgcG9sZWdhZGFzICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwb2xlZ2FkYXMgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IHBvbGVnYWRhcyAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcG9sZWdhZGFzICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBwb2xlZ2FkYXMgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBwb2xlZ2FkYXMgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBwb2xlZ2FkYXMgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwb2xlZ2FkYXMgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiAxODYsNjkgY20gKDczLDUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBwb2xlZ2FkYXMgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogMjAwLDAyIGNtICg3OCw3NSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgcG9sZWdhZGFzICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogMjEzLDM2IGNtICg4NCBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgcG9sZWdhZGFzICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSBwb2xlZ2FkYXMgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBwb2xlZ2FkYXMgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgcG9sZWdhZGFzICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDQwLDAxIGNtICgxNSw3NSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29udGFiaWxpZGFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0F0cmlidWnDp8OjbyBkZSBlbmRlcmXDp29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ1RlbGVmb25lIGFuYWzDs2dpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUaXBvIGRlIGFwYXJlbGhvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQ2FwYWNpZGFkZSBkYSBiYXRlcmlhIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVGlwbyBkZSBiYXRlcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnUHLDqWRpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmYWNlIGRlIGJhcnJhbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ1Byb2Nlc3NhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NsYXNzZSBkZSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0NhcGFjaWRhZGUgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0NhcGFjaWRhZGUgcG9yIHBsYWNhIGdyw6FmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnTsO6bWVybyBkbyBjYXJ0w6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnTGVpdG9yIGRlIGNhcnTDtWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ1RpcG8gZGUgY2FydMOjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnU29mdHdhcmUgZGUgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdDYXRlZ29yaWEgZGUgY2xpZW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnVmVsb2NpZGFkZSBkbyByZWzDs2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVmVsb2NpZGFkZSBkbyByZWzDs2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGFzc2luYXR1cmEgZGUgY8OzZGlnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVGVsZWZvbmUgZGUgY29uZmVyw6puY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgY29uc3VsdG9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0NvbnRhY3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdDb250YWN0YXIgbyBkaXN0cmlidWlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIGNvbnRlbnRvcmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnQ29udHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1RpcG8gZGUgY29udHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdQZXLDrW9kbyBkbyBjb250cmF0byBhIHBhcnRpciBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdQZXLDrW9kbyBkbyBjb250cmF0byBhdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1RlbGVmb25lIHNlbSBmaW9zICh0ZWxlZm9uZSBERUNUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdDdXN0byB1bml0w6FyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdOw7ptZXJvIGRlIGxpY2Vuw6dhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRGF0YSBkZSBjcmlhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0VzdGFudGUgcGVyc29uYWxpemFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZpZG9yIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0YSBkYSBmYXR1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdGEgZGEgZW5jb21lbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXRhIGRhIGdhcmFudGlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdGEgZGUgbGFuw6dhbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ8OBcmVhICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGFzc2luYXR1cmEgZGUgZG9jdW1lbnRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0Jhc3RpZG9yIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0NlcnRpZmljYWRvcyBkZSBjb3JyZWlvIGVsZXRyw7NuaWNvIChDZXJ0aWZpY2Fkb3MgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdDb250cmF0byBkZSB0cmFiYWxobyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0VuZGVyZcOnbyBJUCBmaW5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0ZpbSBkbyBhcG9pbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0RhdGEgZGUgZXhwaXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0Rpc2NvIHLDrWdpZG8gZXh0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0ZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdBcm1hemVuYW1lbnRvIGRlIGVuZXJnaWEgbm8gdm9sYW50ZSBkbyBtb3Rvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0ZhdG9yIGRlIGZvcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBmcmFucXVpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0xpdnJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWHDp8O1ZXMgZ2VyYWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnUGxhY2FzIGdyw6FmaWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnUGxhY2EgZ3LDoWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsbyBkZSBoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdQZXNvIGRvIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdBdXNjdWx0YWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3RvY29sbyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdHZXN0w6NvIGRlIElkZW50aWRhZGUgZSBBY2Vzc28gKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ07Dum1lcm8gZGUgaW52ZW50w6FyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdDdXN0b3MgZGUgaW52ZXJzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnTsO6bWVybyBkYSBmYXR1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUZWNsYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEIChlY3LDoyBkZSBjcmlzdGFpcyBsw61xdWlkb3MpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIExFRCAoRMOtb2RvIEVtaXNzb3IgZGUgTHV6KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdUZWxlZm9uZSBmaXhvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ3BvcnTDoXRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnQ2FtYWRhIDE6IENhbWFkYSBmw61zaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0NhbWFkYSAyOiBDYW1hZGEgZGUgbGlnYcOnw6NvIGRlIGRhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdDYW1hZGEgMzogQ2FtYWRhIGRlIHJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnQ2FtYWRhIDM6IENhbWFkYSBkZSByZWRlIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnQ2FtYWRhIDQ6IENhbWFkYSBkZSB0cmFuc3BvcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdDYW1hZGEgNTogQ2FtYWRhIGRlIHNlc3PDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnQ2FtYWRhIDY6IENhbWFkYSBkZSBhcHJlc2VudGHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0NhbWFkYSA3OiBDYW1hZGEgZGUgYXBsaWNhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgYXJyZW5kYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgTGljZW7Dp2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0NoYXZlIGRlIGxpY2Vuw6dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1RpcG8gZGUgbGljZW7Dp2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRlIGxpY2Vuw6dhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZGUgbGljZW7Dp2EgYXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnQmF0ZXJpYSBkZSBmb3NmYXRvIGRlIGZlcnJvIGUgbMOtdGlvIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0ZXJpYSBkZSBpw7VlcyBkZSBsw610aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBlbXByw6lzdGltbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnTG9jYWxpemFkbyBlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdGYWJyaWNhbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdDYXBhY2lkYWRlIG3DoXhpbWEgZGUgY2FyZ2EgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01lbcOzcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVGlwbyBkZSBtZW3Ds3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRlbGVtw7N2ZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTcOzdmVsL0VtYmFyY2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyacOnw6NvIGRvIG1vZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSZXNvbHXDp8OjbyBkbyBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1RhbWFuaG8gZG8gbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ3JhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSW5mb3JtYcOnw7VlcyBzb2JyZSBhIHJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWHDp8O1ZXMgc29icmUgYSByZWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdDYW1hZGEgZGUgcmVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ0JhdGVyaWEgZGUgbsOtcXVlbC1jw6FkbWlvIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ0JhdGVyaWEgZGUgaGlkcmV0byBtZXTDoWxpY28gZGUgbsOtcXVlbCAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnQWNvcmRvIGRlIG7Do28gZGl2dWxnYcOnw6NvIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnQ2FkZXJubyBkZSBub3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ07Dum1lcm8gZGUgQ1BVcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdOw7ptZXJvIGRlIG3Ds2R1bG9zIGRlIFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdOw7ptZXJvIGRlIHBsYWNhcyBncsOhZmljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAoRMOtb2RvIEVtaXNzb3IgZGUgTHV6IE9yZ8OibmljbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnQ3VzdG9zIGRlIGZ1bmNpb25hbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBlbmNvbWVuZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdPdXRybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnU2HDrWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdBY29yZG8gZGUgcGFyY2VyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRlbGVmb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUaXBvIGRlIHRlbGVmb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnTsO6Y2xlb3MgZsOtc2ljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdGb3JuZWNpbWVudG8gZGUgZW5lcmdpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0NvbXByYWRvIGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdQcm9mdW5kaWRhZGUgZGEgZXN0YW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1VuaWRhZGVzIGRlIHJhY2sgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdTYWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnQ2FydMOjbyBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0NvbnRyYXRvIGRlIHZlbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1RlbGVmb25lIHBvciBzYXTDqWxpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnQmF0ZXJpYSBzZWxhZGEgZGUgY2h1bWJvLcOhY2lkbyAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ07Dum1lcm8gZGUgc8OpcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGRlIHNlcnZpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgc2VydmnDp28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdFdGlxdWV0YSBkZSBzZXJ2acOnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdUaXBvIGRlIHRvbWFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnQWx0aWZhbGFudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1BhZHLDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ0VuZGVyZcOnbyBJUCBpbmljaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdBcm1hemVuYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGnDp8OjbyBkZSBhcm1hemVuYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRmlsaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdSZXN1bW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdDbGllbnRlIGZpbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0Zpb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsIGRhIHBsYWNhIGdyw6FmaWNhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdSQU0gdG90YWwgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciBkZSBlY3LDoyB0w6F0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3JyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnSHViIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ0F1cmljdWxhciBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdUZWxlZm9uZSBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJjYW0nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/ro_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnJvX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdEYXRlIGdlbmVyYWxlIGRlIGZ1bmPIm2lvbmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnU2V0xINyaSBwZW50cnUgZGF0ZWxlIGRlIHNvbGljaXRhcmUgcHJpbWl0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ1NldMSDcmkgcGVudHJ1IGllyJlpcmVhIGRhdGVsb3IgZGUgcsSDc3B1bnMnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdHZXN0aW9uYXJlYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ01vZGlmaWNhcmVhIGRlZmluacibaWVpIGNsYXNlaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnTW9kaWZpY2FyZWEgZGVmaW5pyJtpZWkgcm9sdWx1aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1BhY2hldGUgZGUgY2xhc2UgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnQWljaSBwdXRlyJtpIGltcG9ydGEgcGFjaGV0ZSBkZSBjbGFzZSBSZWFkeTJJbXBvcnQgY2FyZSBwcmV6aW50xIMgY2VsZSBtYWkgdXp1YWxlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlLiBWxIMgcnVnxINtIHPEgyByZcibaW5lyJtpIGPEgyBlc3RlIHBvc2liaWwgc8SDIGZpZSBuZWNlc2FyxIMgbyBhbnVtaXTEgyBjb25maWd1cmFyZSBzdXBsaW1lbnRhcsSDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdBY3R1YWxpemFyZWEgZW50aXTEg8ibaWxvciBleGlzdGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdJbXBvcnRhyJtpIHBhY2hldGVsZSBkZSBjbGFzZSBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NsYXNhIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdSb2x1bCBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgRWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cnUgcGVudHJ1IGNsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1NlbGVjdGHIm2kgbyBjbGFzxIMgZGluIGxpc3TEgyBwZW50cnUgYSBjcmVhIHVuIG5vdSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0NsYXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdTdGFyZWEgZGUgZGVzZsSDyJl1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ1N0YXJlYSBpbmNpZGVudHVsdWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnTGVnxIN0dXJhIGN1IHVuIGFsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTnVtxINyIGRlIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgaW52YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnTnVtxINydWwgdW51aSBhbHQgZWxlbWVudCBkZSBjb25maWd1cmFyZSBjdSBjYXJlIHNlIGZhY2UgbGVnxIN0dXJhLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ0NoaWFyIGRvcmnIm2kgc8SDIMiZdGVyZ2XIm2kgYWNlc3QgZWxlbWVudCBkZSBjb25maWd1cmFyZT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTnVtZWxlIGFjZXN0dWkgZWxlbWVudCBkZSBjb25maWd1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTnVtZWxlIGVzdGUgZGVqYSB1dGlsaXphdCBkZSBDb25maWdJdGVtcyBjdSB1cm3Eg3RvcnVsIG51bcSDciAobnVtZXJlKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdOdW3Eg3J1bCB2ZXJzaXVuaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ051bcSDcnVsIGRlIHZlcnNpdW5lIGFsIGFjZXN0dWkgZWxlbWVudCBkZSBjb25maWd1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ051bcSDcnVsIGRlIHZlcnNpdW5lIGVzdGUgZGVqYSB1dGlsaXphdCBkZSBDb25maWdJdGVtcyBjdSB1cm3Eg3RvcnVsIG51bcSDciAobnVtZXJlKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXJlYSBkZSBkZXNmxIPImXVyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnU3RhdHVsIGluY2lkZW50dWx1aSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSXN0b3JpY3VsIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdJc3RvcmllIENvbsibaW51dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdWZWRlcmUgZGUgZGV0YWxpdSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgRWxlbWVudGUgcGUgcGFnaW7Egyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnTnUgcy1hdSBnxINzaXQgZGF0ZSBkZXNwcmUgZWxlbWVudHVsIGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGVjdGHIm2kgYWNlc3QgZWxlbWVudCBkZSBjb25maWd1cmFyZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1J1bGHIm2kgY8SDdXRhcmVhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0RlIGFzZW1lbmVhLCBjxIN1dGHIm2kgw65uIHZlcnNpdW5pbGUgYW50ZXJpb2FyZT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBwZW50cnUgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ05pdmVsdWwgZGUgYWTDom5jaW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbSBJbi9PdXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTml2ZWx1bCBtYXhpbSBkZSBsZWfEg3R1cmkgYSBmb3N0IGF0aW5zIHBlbnRydSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsZW1lbnQgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcibaWkgZGVzcHJlIGVsZW1lbnR1bCBkZSBjb25maWd1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdTdGFyZWEgYWN0dWFsxIMgZGUgZGVzZsSDyJl1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnU3RhcmVhIGFjdHVhbMSDIGEgaW5jaWRlbnR1bHVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1VsdGltYSBtb2RpZmljYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ01vZGlmaWNhdCB1bHRpbWEgZGF0xIMgZGUnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdFbGVtZW50ZWxlIGRlIGNvbmZpZ3VyYXJlJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0PEg3V0YXJlIENvbmZpZ0l0ZW0nOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ1RpcCBkZSBvYmllY3QnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0cnUgZHVwxIMgdGlwJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2Ugdm9yIGltcG9ydGEgdXJtxIN0b2FyZWxlIGNsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1VybcSDdG9hcmVsZSByb2x1cmkgdm9yIGZpIGltcG9ydGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdSZcibaW5lyJtpIGPEgyB2b3IgZmkgY3JlYXRlIMiZaSBjw6JtcHVyaWxlIGRpbmFtaWNlIGNvcmVzcHVuesSDdG9hcmUgyJlpIGNsYXNlbGUgR2VuZXJhbENhdGFsb2cgyJlpIGPEgyBudSBleGlzdMSDIG8gZWxpbWluYXJlIGF1dG9tYXTEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWcmXIm2kgc8SDIGNvbnRpbnVhyJtpPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdBdmXIm2kgbmV2b2llIGRlIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbmnIm2lhIG51IGVzdGUgdW4gaGFzaCBZQU1MIHZhbGlkLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1ByZXplbnRhcmUgZ2VuZXJhbMSDOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTnUgZXN0ZSBkYXQgbmljaXVuIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdBdmXIm2kgbmV2b2llIGRlIGNlbCBwdcibaW4gdW4gZWxlbWVudCBkZSBjb25maWd1cmFyZSBzZWxlY3RhdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdOdSBhdmXIm2kgYWNjZXMgZGUgc2NyaWVyZSBsYSBhY2VzdCBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnTnUgYSBmb3N0IGRlZmluaXTEgyBuaWNpbyBkZWZpbmnIm2llIHBlbnRydSBjbGFzYSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0VsZW1lbnR1bCBkZSBjb25maWd1cmFyZSAiJXMiIG51IHNlIGfEg3NlyJl0ZSDDrm4gYmF6YSBkZSBkYXRlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ051IGEgZm9zdCBwb3NpYmlsxIMgyJl0ZXJnZXJlYSBjb25maWdpdGVtdWx1aSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ051IHMtYSBnxINzaXQgbmljaW8gdmVyc2l1bmUgcGVudHJ1IENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTnUgZXN0ZSBpbmRpY2F0IG5pY2l1biBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIHNhdSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnTnUgc2Ugb2ZlcsSDIGFjY2VzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOdSBzZSBwb2F0ZSBhZmnImWEgaXN0b3JpY3VsLCBudSBlc3RlIGRhdCBuaWNpdW4gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ051IHNlIHBvYXRlIGFmaciZYSBpc3RvcmljdWwsIG51IHNlIGFjb3JkxIMgZHJlcHR1cmkgZGUgYWNjZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOb3UgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdWZXJzaXVuZSBub3XEgyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhcmVhIGRlIGltcGxlbWVudGFyZSBhY3R1YWxpemF0xIMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGFyZWEgaW5jaWRlbnR1bHVpIGEgZm9zdCBhY3R1YWxpemF0xIMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSDImXRlcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdMaW5rIGPEg3RyZSAlcyAodGlwPSVzKSBhZMSDdWdhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGluayBjxIN0cmUgJXMgKHRpcD0lcykgyJl0ZXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbmnIm2llIENvbmZpZ0l0ZW0gYWN0dWFsaXphdMSDIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOdW1lIGFjdHVhbGl6YXQgKG5vdT0lcywgdmVjaGk9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dHVsICVzIGEgZm9zdCBhY3R1YWxpemF0IGRlIGxhICIlcyIgbGEgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaXVuZWEgJXMgyJl0ZWFyc8SDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ051IGVzdGUgaW5kaWNhdCBuaWNpdW4gQ29uZmlnSXRlbUlEIHNhdSBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ051IHNlIHBvYXRlIGFmaciZYSBlbGVtZW50dWwgZGUgY29uZmlndXJhcmUsIG51IHN1bnQgYWNvcmRhdGUgZHJlcHR1cmkgZGUgYWNjZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIG51IGEgZm9zdCBnxINzaXQgw65uIGJhemEgZGUgZGF0ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3RpcMSDcml0IGRlICVzIGxhICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmluyJvEgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0NsYXNzSUQgaW52YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOdSBlc3RlIGRhdCBuaWNpdW4gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdOdSBzZSBhY29yZMSDIGRyZXB0dXJpIGRlIGFjY2VzIHBlbnRydSBhY2Vhc3TEgyBjbGFzxIMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdOaWNpIHVuIHJlenVsdGF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1JlenVsdGF0ZWxlIGPEg3V0xINyaWkgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ051IHNlIHBvYXRlIGFmaciZYSBlbGVtZW50dWwsIG51IHN1bnQgYWNvcmRhdGUgZHJlcHR1cmkgZGUgYWNjZXMgcGVudHJ1IENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbnUgYSBmb3N0IGfEg3NpdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTnUgcy1hdSBnxINzaXQgdmVyc2l1bmkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmHIm2lvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhdmVydGl6YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YXJlYSBkZSBkZXNmxIPImXVyYXJlIGEgYWNlc3R1aSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhcmVhIGluY2lkZW50xIMgYSBhY2VzdHVpIGVsZW1lbnQgZGUgY29uZmlndXJhcmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdOdSBhaSBwZXJtaXNpdW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0cnUgaW52YWxpZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdFbGVtZW50ZSBkZSBjb25maWd1cmFyZSBhZmnImWF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXAgZGUgc3RhdCBkZSBkZXNmxIPImXVyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcHVsIGRlIHN0YXQgYWwgaW5jaWRlbnR1bHVpIGN1cmVudCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfDjm50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWPIm2lpIGRlIGNsYXPEgyBwZW50cnUgZWxlbWVudHVsIGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY3RhyJtpIHVuYSBzYXUgbWFpIG11bHRlIGNsYXNlIHBlbnRydSBhIHJlc3RyaWPIm2lvbmEgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSBzZWxlY3RhYmlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY8ibaWkgZGUgY2xhc8SDIHBlbnRydSBlbGVtZW50dWwgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY3RhyJtpIHVuYSBzYXUgbWFpIG11bHRlIGNsYXNlIHBlbnRydSBhIHJlc3RyaWPIm2lvbmEgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSBzZWxlY3RhYmlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0RpbmFtaWMgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKFZlcnNpdW5lKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUaXB1bCBkZSByZWZlcmluyJvEgyBhIGxlZ8SDdHVyaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnRGFjxIMgYWNlYXN0xIMgbGVnxIN0dXLEgyBzZSBhcGxpY8SDIGxhIENvbmZpZ0l0ZW0gc2F1IGxhIHZlcnNpdW5lYSBzdGF0aWPEgyBhIG9iaWVjdHVsdWkgZGUgcmVmZXJpbsibxIMuIENhbGN1bHVsICJDdXJyZW50IEluY2lkZW50IFN0YXRlIiBzZSBlZmVjdHVlYXrEgyBudW1haSDDrm4gY2F6dWwgbGVnxIN0dXJpbG9yIGRpbmFtaWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjdGHIm2kgYXRyaWJ1dHVsIGR1cMSDIGNhcmUgdm9yIGZpIGPEg3V0YXRlIGVsZW1lbnRlbGUgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdTdHJ1Y3R1cmEgZGUgYmF6xIMgbnUgZXN0ZSB2YWxpZMSDLiBWxIMgcnVnxINtIHPEgyBmdXJuaXphyJtpIHVuIGhhc2ggY3UgZGF0ZSDDrm4gZm9ybWF0IFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnRXN0ZSBuZWNlc2FyIGNhIMiZaXJ1bCBZQU1MIHPEgyDDrm5jZWFwxIMgY3UgIi0tLSIuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ051IHMtYSBwdXR1dCBjdXLEg8ibYSB0YWJlbHVsIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ051IGF1IGZvc3QgZ8SDc2l0ZSBjw6JtcHVyaSBkaW5hbWljZSByZWxldmFudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdOdSBzLWEgcHV0dXQgaW5zZXJhIMOubiB0YWJlbHVsIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW5zZXJhdGUgMCByw6JuZHVyaSDDrm4gdGFiZWx1bCBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTnVtxINydWwgbWF4aW0gYWwgdW51aSBlbGVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9ydC9FeHBvcnQgYXRhyJlhbWVudGUgKGNhIHVsdGltZWxlIGludHLEg3JpIHBlIGxpbmllKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpdW5lYSBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJvYXJlIGRlIHNpbmNyb25pemFyZSBhIGRlZmluacibaWlsb3IuIFbEgyBydWfEg20gc8SDIHZlcmlmaWNhyJtpIGp1cm5hbHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ0F2ZcibaSBkZWZpbmnIm2lpIElUU01Db25maWdJdGVtIGNhcmUgbnUgc3VudCBzaW5jcm9uaXphdGUuIFbEgyBydWfEg20gc8SDIGltcGxlbWVudGHIm2kgbW9kaWZpY8SDcmlsZSBjw6JtcHVyaWxvciBkaW5hbWljZSBhbGUgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcmF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnw45udHJlyJtpbmVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFuaWZpY2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlcGFyYcibaWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1BlbnNpb25hdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZpenVpcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3RhcmUvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1ByZXplbnRhcmUgZ2VuZXJhbMSDIMiZaSBjb25maXJtYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydHVsIGNsYXNlbG9yL3JvbHVyaWxvciDImWkgYWwgY8OibXB1cmlsb3IgYWZlcmVudGUgYWNlc3RvcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdTLWEgcHJvZHVzIG8gZXJvYXJlIMOubiB0aW1wdWwgaW1wb3J0dWx1aSBjbGFzZWkuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBBc2N1bnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIEFmaciZYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgY29uZGnIm2lpIGRlIGPEg3V0YXJlIGV4dGluc2Ugw65uIGPEg3V0YXJlYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuIEN1IGFjZWFzdMSDIGZ1bmPIm2llIHB1dGXIm2kgY8SDdXRhLCBkZSBleGVtcGx1LCBudW1lbGUgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgY3UgYWNlc3QgdGlwIGRlIGNvbmRpyJtpaSwgY3VtIGFyIGZpICIoKmtleTEqJiYmKmtleTIqKSIgc2F1ICIoKmtleTEqfHx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgY29uZGnIm2lpIGRlIGPEg3V0YXJlIGV4dGluc2Ugw65uIGPEg3V0YXJlYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBjdSBjbGllbsibaWkuIEN1IGFjZWFzdMSDIGZ1bmPIm2llIHB1dGXIm2kgY8SDdXRhLCBkZSBleGVtcGx1LCBudW1lbGUgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgY3UgYWNlc3QgdGlwIGRlIGNvbmRpyJtpaSwgY3VtIGFyIGZpICIoKmtleTEqJiYmKmtleTIqKSIgc2F1ICIoKmtleTEqfHx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0lDIGF0cmlidWl0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnSUMgYXRyaWJ1aXRlIHNvY2lldMSDyJtpaSBjbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdJQyBhdHJpYnVpdGUgdXRpbGl6YXRvcnVsdWkgY2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdTZXTEg3JpIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1ZlcmlmaWPEgyB1biBudW1lIHVuaWMgbnVtYWkgw65uIGNhZHJ1bCBhY2VsZWlhyJlpIGNsYXNlIGRlIENvbmZpZ0l0ZW0gKCJjbGFzcyIpIHNhdSBsYSBuaXZlbCBnbG9iYWwgKCJnbG9iYWwiKSwgY2VlYSBjZSDDrm5zZWFtbsSDIGPEgyBmaWVjYXJlIENvbmZpZ0l0ZW0gZXhpc3RlbnQgZXN0ZSBsdWF0IMOubiBjb25zaWRlcmFyZSBhdHVuY2kgY8OibmQgc2UgY2F1dMSDIGR1cGxpY2F0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ0FsZWdlyJtpIHVuIG1vZHVsIHBlbnRydSBhIGltcHVuZSBvIHNjaGVtxIMgZGUgZGVudW1pcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdBbGVnZcibaSB1biBtb2R1bCBwZW50cnUgYSBhcGxpY2EgbyBzY2hlbcSDIGRlIG51bWVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnQWxlZ2XIm2kgdW4gbW9kdWwgcGVudHJ1IGEgYXBsaWNhIG8gc2NoZW3EgyBkZSDImWlydXJpIGRlIHZlcnNpdW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ0FsZWdlyJtpIGF0cmlidXRlbGUgcGVudHJ1IGEgZGVjbGFuyJlhIGNyZWFyZWEgdW5laSBub2kgdmVyc2l1bmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0FsZWdlyJtpIGNhdGVnb3JpaWxlIHBlIGNhcmUgc8SDIGxlIGF0cmlidWnIm2kgYWNlc3RlaSBjbGFzZSBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJlIGRlIGNvbG9hbsSDIHBlbnRydSBlbGVtZW50ZWxlIGRlIGNvbmZpZ3VyYXJlIHBlbnRydSBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sb2FuZSBjYXJlIHBvdCBmaSBmaWx0cmF0ZSDDrm4gcHJlemVudGFyZWEgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLiBOb3TEgzogU3VudCBwZXJtaXNlIG51bWFpIGF0cmlidXRlbGUgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgyJlpIGPDom1wdXJpbGUgZGluYW1pY2UgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0VsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdBZMSDdWdhcmUgZWxlbWVudCBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZGl0YXJlIGVsZW1lbnQgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWx1bCBkZSBldmVuaW1lbnRlIGFsIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIGNhcmUgcGVybWl0ZSDDrm5yZWdpc3RyYXJlYSDDrm4gaXN0b3JpYyDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ01vZHVsIGRlIGV2ZW5pbWVudCBhbCBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBjYXJlIGFjdHVhbGl6ZWF6xIMgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSBsYSBkZWZpbmnIm2lhIGxvciBjdXJlbnTEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdJc3RvcmljdWwgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0ltcHJpbWFyZSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZ3VyYcibaSB6b29tdWwgZWxlbWVudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbSBUcmVlIFZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnVmVyc2l1bmVhIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgZGluIHVybcSDdG9hcmVsZSBjbGFzZSBudSB2b3IgZmkgc3RvY2F0ZSBwZSBzZXJ2ZXJ1bCBFbGFzdGljc2VhcmNoLiBQZW50cnUgYSBhcGxpY2EgYWNlc3QgbHVjcnUgbGEgSUMtdXJpbGUgZXhpc3RlbnRlLCBtaWdyYXJlYSBJQy11cmlsb3IgdHJlYnVpZSBzxIMgZmllIGV4ZWN1dGF0xIMgcHJpbiBpbnRlcm1lZGl1bCBjb25zb2xlaSwgZHVwxIMgbW9kaWZpY2FyZWEgYWNlc3RlaSBvcMibaXVuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgY3UgdXJtxIN0b2FyZWxlIHN0xINyaSBkZSBpbXBsZW1lbnRhcmUgbnUgdm9yIGZpIHN0b2NhdGUgcGUgc2VydmVydWwgRWxhc3RpY3NlYXJjaC4gUGVudHJ1IGEgYXBsaWNhIGFjZXN0IGx1Y3J1IGxhIElDLXVyaWxlIGV4aXN0ZW50ZSwgbWlncmFyZWEgSUMtdXJpbG9yIHRyZWJ1aWUgc8SDIGZpZSBleGVjdXRhdMSDIHByaW4gaW50ZXJtZWRpdWwgY29uc29sZWksIGR1cMSDIG1vZGlmaWNhcmVhIGFjZXN0ZWkgb3DIm2l1bmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0NvbmZpZ3VyYcibaWUgRWxlbWVudCBsaW1pdMSDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdDb25maWd1cmHIm2llIExpbWl0YSBkZSBlbGVtZW50ZSBwZSBwYWdpbsSDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmF6YSBkZSBkYXRlIGRlIGdlc3Rpb25hcmUgYSBjb25maWd1cmHIm2llaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0VsZW1lbnQgZGUgY29uZmlndXJhcmUgbW9kdWwgYnVsay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWxlbWVudHVsIGRlIGNvbmZpZ3VyYXJlIGPEg3V0YXJlIHJvdXRlciBiYWNrZW5kIGFsIGludGVyZmXIm2VpIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JlYcibaSDImWkgZ2VzdGlvbmHIm2kgZGVmaW5pyJtpaWxlIHBlbnRydSBlbGVtZW50ZWxlIGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0NyZWVhesSDIGJpbGV0ZSBwZW50cnUgQ29uZmlnSXRlbXMgbGEgYW51bWl0ZSBtb21lbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdDbGllbsibaWkgcG90IHZlZGVhIHZlcnNpdW5pbGUgaXN0b3JpY2UgYWxlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdDbGllbsibaWkgYXUgcG9zaWJpbGl0YXRlYSBkZSBhIGNvbXV0YSBtYW51YWwgw65udHJlIHZlcnNpdW5pbGUgaXN0b3JpY2UgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGF0ZSBpbXBsaWNpdGUgY2FyZSB0cmVidWllIHV0aWxpemF0ZSDDrm4gYXRyaWJ1dHVsIHBlbnRydSBlY3JhbnVsIGRlIGPEg3V0YXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUuIEV4ZW1wbHU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGF0ZSBpbXBsaWNpdGUgY2FyZSB0cmVidWllIHV0aWxpemF0ZSDDrm4gYXRyaWJ1dHVsIHBlbnRydSBlY3JhbnVsIGRlIGPEg3V0YXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUuIEV4ZW1wbHU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmnIm2kgYWPIm2l1bmlsZSDDrm4gY2FyZSBlc3RlIGRpc3BvbmliaWwgdW4gYnV0b24gZGUgc2V0xINyaSDDrm4gd2lkZ2V0dWwgb2JpZWN0ZWxvciBsZWdhdGUgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUmXIm2luZcibaSBjxIMgYWNlc3RlIGFjyJtpdW5pIHRyZWJ1aWUgc8SDIGFpYsSDIMOubnJlZ2lzdHJhdGUgdXJtxIN0b2FyZWxlIGZpyJlpZXJlIEpTIMiZaSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIMiZaSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmnIm2kgbyBzY2hlbcSDIFRlbXBsYXRlOjpUb29sa2l0IHBlbnRydSDImWlydXJpbGUgZGUgdmVyc2l1bmkuIFNlIHV0aWxpemVhesSDIG51bWFpIGRhY8SDIG1vZHVsdWwgZGUgyJlpcnVyaSBkZSB2ZXJzaXVuaSBlc3RlIHNldGF0IGxhIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmnIm2kgdW4gc2V0IGRlIGNvbmRpyJtpaSDDrm4gY2FyZSB1biBjbGllbnQgYXJlIHZvaWUgc8SDIHZhZMSDIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUuIENvbmRpyJtpaWxlIHBvdCBmaSBvcMibaW9uYWwgcmVzdHJpY8ibaW9uYXRlIGxhIGFudW1pdGUgZ3J1cHVyaSBkZSBjbGllbsibaS4gTnVtZWxlIGVzdGUgc2luZ3VydWwgYXRyaWJ1dCBvYmxpZ2F0b3JpdS4gRGFjxIMgbnUgc2Ugb2ZlcsSDIGFsdGUgb3DIm2l1bmksIHRvYXRlIGVsZW1lbnRlbGUgZGUgY29uZmlndXJhcmUgdm9yIGZpIHZpemliaWxlIMOubiBjYXRlZ29yaWEgcmVzcGVjdGl2xIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmXImXRlIHBlcm1pc2l1bmlsZSBuZWNlc2FyZSBwZW50cnUgYSDImXRlcmdlIGVsZW1lbnRlbGUgZGUgY29uZmlndXJhcmUgSVRTTSB1dGlsaXrDom5kIGludGVyZmHIm2EgZ2VuZXJpY8SDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBwZXJtaXNpdW5pbGUgbmVjZXNhcmUgcGVudHJ1IGEgb2LIm2luZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBJVFNNIHV0aWxpesOibmQgaW50ZXJmYcibYSBnZW5lcmljxIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmXImXRlIHBlcm1pc2l1bmlsZSBuZWNlc2FyZSBwZW50cnUgYSBjxIN1dGEgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgSVRTTSB1dGlsaXrDom5kIGludGVyZmHIm2EgZ2VuZXJpY8SDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBwZXJtaXNpdW5pbGUgbmVjZXNhcmUgcGVudHJ1IGEgc2V0YSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBJVFNNIHV0aWxpesOibmQgaW50ZXJmYcibYSBnZW5lcmljxIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgdW4gbW9kdWwgZGUgcHJlemVudGFyZSBnZW5lcmFsxIMgcGVudHJ1IGEgYWZpyJlhIHZpenVhbGl6YXJlYSBtaWPEgyBhIHVuZWkgbGlzdGUgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgZGFjxIMgZXRpY2hldGVsZSB0aXB1bHVpIGRlIGxlZ8SDdHVyxIMgdHJlYnVpZSBzxIMgZmllIGFmaciZYXRlIMOubiBjb25leGl1bmlsZSBub2R1cmlsb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGV4cHJlc2lpIHJlZ3VsYXRlIGluZGl2aWR1YWwgcGVudHJ1IGZpZWNhcmUgY2xhc8SDIENvbmZpZ0l0ZW0gcGVudHJ1IGEgdmVyaWZpY2EgbnVtZWxlIENvbmZpZ0l0ZW0gyJlpIHBlbnRydSBhIGFmaciZYSBtZXNhamVsZSBkZSBlcm9hcmUgY29yZXNwdW56xIN0b2FyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNvbG9hbmVsZSBkaXNwb25pYmlsZSBwZW50cnUgSUMgw65uIHByZXplbnRhcmVhIGdlbmVyYWzEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIMOubiBmdW5jyJtpZSBkZSBjbGFzYSBJQy4gRmllY2FyZSBpbnRyYXJlIHRyZWJ1aWUgc8SDIGZpZSBjb21wdXPEgyBkaW50ci11biBudW1lIGRlIGNsYXPEgyDImWkgbyBtYXRyaWNlIGRlIGPDom1wdXJpIGRpc3BvbmliaWxlIHBlbnRydSBjbGFzYSBjb3Jlc3B1bnrEg3RvYXJlLiBJbnRyxINyaWxlIGRlIGPDom1wdXJpIGRpbmFtaWNlIHRyZWJ1aWUgc8SDIHJlc3BlY3RlIHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBhdHJpYnV0dWwgaW1wbGljaXQgYWwgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgcGVudHJ1IHNvcnRhcmVhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiByZXp1bHRhdHVsIGPEg3V0xINyaWkgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBhdHJpYnV0dWwgaW1wbGljaXQgYWwgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgcGVudHJ1IHNvcnRhcmVhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiByZXp1bHRhdHVsIGPEg3V0xINyaWkgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgY3UgY2xpZW7Im2lpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgYXRyaWJ1dHVsIGltcGxpY2l0IGFsIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIHBlbnRydSBzb3J0YXJlYSBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBhbCByZXp1bHRhdHVsdWkgY8SDdXTEg3JpaSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gYWNlYXN0xIMgb3BlcmHIm2l1bmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmXImXRlIG9yZGluZWEgaW1wbGljaXTEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIMOubiByZXp1bHRhdHVsIGPEg3V0xINyaWkgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLiBTdXM6IGNlbCBtYWkgdmVjaGkgw65uIHBhcnRlYSBkZSBzdXMuIEpvczogY2VsIG1haSByZWNlbnQgw65uIHBhcnRlYSBkZSBzdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmXImXRlIG9yZGluZWEgaW1wbGljaXTEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIMOubiByZXp1bHRhdHVsIGPEg3V0xINyaWkgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgY3UgY2xpZW7Im2lpLiBTdXM6IGNlbCBtYWkgdmVjaGkgw65uIHBhcnRlYSBkZSBzdXMuIEpvczogY2VsIG1haSByZWNlbnQgw65uIHBhcnRlYSBkZSBzdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgb3JkaW5lYSBpbXBsaWNpdMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgw65uIHJlenVsdGF0dWwgY8SDdXTEg3JpaSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gYWNlYXN0xIMgb3BlcmHIm2l1bmUuIMOObiBzdXM6IGNlbCBtYWkgdmVjaGkgw65uIHN1cy4gSm9zOiBjZWwgbWFpIHJlY2VudCDDrm4gcGFydGVhIGRlIHN1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgY29sb2FuZWxlIGFmaciZYXRlIMOubiBtb2QgaW1wbGljaXQgYWxlIElDIMOubiBwcmV6ZW50YXJlYSBnZW5lcmFsxIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSDDrm4gZnVuY8ibaWUgZGUgY2xhc2EgSUMuIEZpZWNhcmUgaW50cmFyZSB0cmVidWllIHPEgyBmaWUgY29tcHVzxIMgZGludHItdW4gbnVtZSBkZSBjbGFzxIMgyJlpIG8gbWF0cmljZSBkZSBjw6JtcHVyaSBkaXNwb25pYmlsZSBwZW50cnUgY2xhc2EgY29yZXNwdW56xIN0b2FyZS4gSW50csSDcmlsZSBkZSBjw6JtcHVyaSBkaW5hbWljZSB0cmVidWllIHPEgyByZXNwZWN0ZSBzY2hlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRGVmaW5lyJl0ZSBhZMOibmNpbWVhIGltcGxpY2l0xIMgYSByZWxhyJtpaWxvciBjYXJlIHVybWVhesSDIHPEgyBmaWUgYWZpyJlhdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgYXRyaWJ1dHVsIGRlIGPEg3V0YXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgYWZpyJlhdCDDrm4gbW9kIGltcGxpY2l0IHBlbnRydSBlY3JhbnVsIGRlIGPEg3V0YXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGF0cmlidXR1bCBkZSBjxIN1dGFyZSBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGFmaciZYXQgw65uIG1vZCBpbXBsaWNpdCBwZW50cnUgZWNyYW51bCBkZSBjxIN1dGFyZSBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlLiBFeGVtcGx1OiAiS2V5IiB0cmVidWllIHPEgyBhaWLEgyBudW1lbGUgY8OibXB1bHVpIGRpbmFtaWMsIMOubiBhY2VzdCBjYXogIlgiLCAiQ29udGVudCIgdHJlYnVpZSBzxIMgYWlixIMgdmFsb2FyZWEgY8OibXB1bHVpIGRpbmFtaWMgw65uIGZ1bmPIm2llIGRlIHRpcHVsIGRlIGPDom1wIGRpbmFtaWMsIFRleHQ6ICJhIHRleHQiLCBEcm9wZG93bjogIjEiLCBEYXRlL1RpbWU6ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTdG9wU2Vjb25kPTU5O1wnIMiZaSBzYXUgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBzdWJvYmllY3R1bCBpbXBsaWNpdCBhbCBjbGFzZWkgIklUU01Db25maWdJdGVtIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgY29sb2FuZWxlIGRpc3BvbmliaWxlIHBlbnRydSBJQyDDrm4gcHJlemVudGFyZWEgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgw65uIGZ1bmPIm2llIGRlIGNsYXNhIElDLiBGaWVjYXJlIGludHJhcmUgdHJlYnVpZSBzxIMgZmllIGNvbXB1c8SDIGRpbnRyLXVuIG51bWUgZGUgY2xhc8SDIMiZaSBvIG1hdHJpY2UgZGUgY8OibXB1cmkgZGlzcG9uaWJpbGUgcGVudHJ1IGNsYXNhIGNvcmVzcHVuesSDdG9hcmUuIEludHLEg3JpbGUgZGUgY8OibXB1cmkgZGluYW1pY2UgdHJlYnVpZSBzxIMgcmVzcGVjdGUgc2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgw65uxINsyJtpbWVhIHBlbnRydSBjb21wb25lbnRhIGVkaXRvciBkZSB0ZXh0IGJvZ2F0IHBlbnRydSBhY2VzdCBlY3Jhbi4gSW50cm9kdWNlyJtpIG51bcSDcnVsIChwaXhlbGkpIHNhdSB2YWxvYXJlYSBwcm9jZW50dWFsxIMgKHJlbGF0aXbEgykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgbnVtxINydWwgZGUgcsOibmR1cmkgcGVudHJ1IGVkaXRvcnVsIGRlIGRlZmluacibaWkgQ0kgZGluIGludGVyZmHIm2EgZGUgYWRtaW5pc3RyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmXImXRlIG9yZGluZWEgc3TEg3JpbG9yIGluY2lkZW50ZSBkZSBsYSBtYXJlIChkZSBleGVtcGx1LCBjcmljaXRhbMSDKSBsYSBtaWPEgyAoZGUgZXhlbXBsdSwgZnVuY8ibaW9uYWzEgykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBzdMSDcmlsZSBkZSBpbXBsZW1lbnRhcmUgcmVsZXZhbnRlIMOubiBjYXJlIGJpbGV0ZWxlIGxlZ2F0ZSBwb3QgYWZlY3RhIHN0YXJlYSB1bnVpIElDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgbGltaXRhIGRlIGPEg3V0YXJlIHBlbnRydSBlY3JhbnVsIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBsaW1pdGEgZGUgY8SDdXRhcmUgcGVudHJ1IGVjcmFudWwgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmXImXRlIGxpbWl0YSBkZSBjxIN1dGFyZSBwZW50cnUgZWNyYW51bCBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgbGltaXRhIGRlIGPEg3V0YXJlIHBlbnRydSBlY3JhbnVsIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBjb2xvYW5lbGUgYWZpyJlhdGUgYWxlIElDIMOubiB2aXp1YWxpemFyZWEgY29tcGxleMSDIGEgdGFiZWx1bHVpIGRlIGxlZ8SDdHVyaSBwZW50cnUgdG9hdGUgY2xhc2VsZSBkZSBJQy4gRGFjxIMgbnUgZXhpc3TEgyBuaWNpbyBpbnRyYXJlLCBzdW50IGFmaciZYXRlIGNvbG9hbmVsZSBpbXBsaWNpdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNvbG9hbmVsZSBhZmnImWF0ZSBhbGUgSUMgw65uIHZpenVhbGl6YXJlYSBjb21wbGV4xIMgYSB0YWJlbHVsdWkgZGUgbGVnxIN0dXJpLCDDrm4gZnVuY8ibaWUgZGUgY2xhc2EgSUMuIEZpZWNhcmUgaW50cmFyZSB0cmVidWllIHPEgyBmaWUgcHJlY2VkYXTEgyBkZSBudW1lbGUgY2xhc2VpIMiZaSBkZSBkb3XEgyBwdW5jdGUgZGUgc3VzcGVuc2llIChkZSBleGVtcGx1LCBDb21wdXRlcjo6OikuIEV4aXN0xIMgY8OidGV2YSBDSS1BdHRyaWJ1dGVzIGNhcmUgc3VudCBjb211bmUgdHV0dXJvciBJQy11cmlsb3IgKGV4ZW1wbHUgcGVudHJ1IGNsYXNhIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBQZW50cnUgYSBhZmnImWEgYXRyaWJ1dGVsZSBpbmRpdmlkdWFsZSBhbGUgSUMsIGFzdGZlbCBjdW0gc3VudCBkZWZpbml0ZSDDrm4gZGVmaW5pyJtpYSBJQywgdHJlYnVpZSB1dGlsaXphdMSDIHVybcSDdG9hcmVhIHNjaGVtxIMgKGV4ZW1wbHUgcGVudHJ1IGNsYXNhIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIERhY8SDIG51IGV4aXN0xIMgbmljaW8gaW50cmFyZSBwZW50cnUgbyBjbGFzxIMgZGUgSUMsIHN1bnQgYWZpyJlhdGUgY29sb2FuZWxlIGltcGxpY2l0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGVsZW1lbnRlbGUgY2FyZSBzdW50IGRpc3BvbmliaWxlIHBlbnRydSAiQWPIm2l1bmUiIMOubiBhbCB0cmVpbGVhIG5pdmVsIGFsIHN0cnVjdHVyaWkgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBjZSBlbGVtZW50ZSBzdW50IGRpc3BvbmliaWxlIMOubiBwcmltdWwgbml2ZWwgYWwgc3RydWN0dXJpaSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBjZSBlbGVtZW50ZSBzdW50IGRpc3BvbmliaWxlIMOubiBhbCBkb2lsZWEgbml2ZWwgYWwgc3RydWN0dXJpaSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBjZSB0aXAgZGUgbGVnxIN0dXLEgyAobnVtaXTEgyBkaW4gcGVyc3BlY3RpdmEgYmlsZXR1bHVpKSBwb2F0ZSBhZmVjdGEgc3RhcmVhIHVudWkgSUMgbGVnYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBjZSB0aXAgZGUgdGljaGV0IHBvYXRlIGFmZWN0YSBzdGFyZWEgdW51aSBJQyBsZWdhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBY3R1YWxpemFyZSBkZWZpbmnIm2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfImHRlcmdlcmVhIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQ3Vsb2FyZWEgc3TEg3JpaSBkZSBkZXNmxIPImXVyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHVsIGRlIGV2ZW5pbWVudCBwZW50cnUgY8OibXB1cmkgZGluYW1pY2UgY2FyZSBtYXJjaGVhesSDIGRlZmluacibaWlsZSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBjYSBmaWluZCBuZXNpbmNyb25pemF0ZSwgZGFjxIMgc2UgbW9kaWZpY8SDIGPDom1wdXJpbGUgZGluYW1pY2UgY2FyZSBsZSBjb27Im2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ8OibXB1cmkgZGluYW1pY2UgYWZpyJlhdGUgw65uIGVjcmFudWwgY8OibXB1bHVpIElUU00gc3VwbGltZW50YXIgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDw6JtcHVyaSBkaW5hbWljZSBhZmnImWF0ZSDDrm4gZWNyYW51bCBkZSBwcmV6ZW50YXJlIGdlbmVyYWzEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGN1IGNsaWVuyJtpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0PDom1wdXJpIGRpbmFtaWNlIGFmaciZYXRlIMOubiBlY3JhbnVsIGRlIGPEg3V0YXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdBY3RpdmVhesSDIGNhcmFjdGVyaXN0aWNhIGRlIGFjyJtpdW5lIMOubiBtYXPEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIHBlbnRydSBjYSBmcm9udGVuZC11bCBhZ2VudHVsdWkgc8SDIGx1Y3JlemUgbGEgbWFpIG11bHQgZGUgdW4gZWxlbWVudCBkZSBjb25maWd1cmFyZSBvZGF0xIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdBY3RpdmVhesSDIGZ1bmPIm2lhIGRlIGFjyJtpdW5lIMOubiBibG9jIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgbnVtYWkgcGVudHJ1IGdydXB1cmlsZSBlbnVtZXJhdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0FjdGl2ZWF6xIMvZGV6YWN0aXZlYXrEgyBmdW5jyJtpb25hbGl0YXRlYSBkZSB2ZXJpZmljYXJlIGEgZWxlbWVudGVsb3IgZGUgb25maWd1cmFyZSBJVFNNIHBlbnRydSBudW1lIHVuaWNlLiDDjm5haW50ZSBkZSBhIGFjdGl2YSBhY2Vhc3TEgyBvcMibaXVuZSwgYXIgdHJlYnVpIHPEgyB2ZXJpZmljYcibaSBkYWPEgyBleGlzdMSDIGRlamEgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgY3UgbnVtZSBkdXBsaWNhdGUgw65uIHNpc3RlbS4gUHV0ZcibaSBmYWNlIGFjZXN0IGx1Y3J1IGN1IGFqdXRvcnVsIGNvbWVuemlpIGRlIGNvbnNvbMSDIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTW9kdWx1bCBkZSBldmVuaW1lbnQgcGVudHJ1IGEgc2V0YSBzdGFyZWEgYXJ0aWNvbHVsdWkgZGUgY29uZmlndXJhcmUgcGUgYmlsZXR1bC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0PDom1wdXJpIGFsZSBpbmRleHVsdWkgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUsIHV0aWxpemF0ZSBwZW50cnUgY8SDdXRhcmVhIGZ1bGx0ZXh0LiBDw6JtcHVyaWxlIHN1bnQsIGRlIGFzZW1lbmVhLCBzdG9jYXRlLCBkYXIgbnUgc3VudCBvYmxpZ2F0b3JpaSBwZW50cnUgZnVuY8ibaW9uYWxpdGF0ZWEgZ2VuZXJhbMSDLiBJbmNsdWRlcmVhIGF0YciZYW1lbnRlbG9yIHBvYXRlIGZpIGRlemFjdGl2YXTEgyBwcmluIHNldGFyZWEgaW50csSDcmlpIGxhIDAgc2F1IHByaW4gyJl0ZXJnZXJlYSBhY2VzdGVpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0PDom1wdXJpIHN0b2NhdGUgw65uIGluZGV4dWwgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgY2FyZSBzdW50IHV0aWxpemF0ZSBwZW50cnUgYWx0ZSBzY29wdXJpIMOubiBhZmFyxIMgZGUgY8SDdXTEg3JpbGUgZnVsbHRleHQuIFBlbnRydSBvIGZ1bmPIm2lvbmFsaXRhdGUgY29tcGxldMSDLCB0b2F0ZSBjw6JtcHVyaWxlIHN1bnQgb2JsaWdhdG9yaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnUGVudHJ1IGZpZWNhcmUgc2VydmljaXUgd2ViIChjaGVpZSkgc2UgcG9hdGUgZGVmaW5pIG8gc2VyaWUgZGUgY2xhc2UgKHZhbG9hcmUpIHBlbnRydSBjYXJlIHNlIGxpbWl0ZWF6xIMgaW1wb3J0dWwuIFBlbnRydSB0b2F0ZSBjbGFzZWxlIGFsZXNlIHNhdSBwZW50cnUgdG9hdGUgY2xhc2VsZSBleGlzdGVudGUsIGF0cmlidXRlbGUgZGUgaWRlbnRpZmljYXJlIHZvciB0cmVidWkgc8SDIGZpZSBhbGVzZSDDrm4gY29uZmlndXJhyJtpYSBpbnZvY2F0b3J1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfDjm5yZWdpc3RyYXJlYSBtb2R1bHVsdWkgR2VuZXJpY0ludGVyZmFjZSBwZW50cnUgc3RyYXR1bCBkZSBpbnZvY2FyZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnw45ucmVnaXN0cmFyZWEgbW9kdWx1bHVpIEdlbmVyaWNJbnRlcmZhY2UgcGVudHJ1IHN0cmF0dWwgZGUgaW52b2NhcmUgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfDjm5yZWdpc3RyYXJlYSBtb2R1bHVsdWkgR2VuZXJpY0ludGVyZmFjZSBwZW50cnUgc3RyYXR1bCBkZSBpbnZvY2FyZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1ByZXplbnRhcmUgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1ZGUgc3TEg3JpbGUgZGUgaW1wbGVtZW50YXJlIMOubiBjxIN1dGFyZWEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgY3UgY2xpZW7Im2lpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVkZSBzdMSDcmlsZSBpbmNpZGVudGVsb3Igw65uIGPEg3V0YXJlYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBjdSBjbGllbsibaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOdW3Eg3J1bCBtYXhpbSBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBjYXJlIHVybWVhesSDIHPEgyBmaWUgYWZpyJlhdGUgw65uIHJlenVsdGF0dWwgYWNlc3RlaSBvcGVyYcibaXVuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCBkZSB2ZXJpZmljYXJlIGEgZ3J1cHVsdWkgcmVzcG9uc2FiaWwgcGVudHJ1IG8gY2xhc8SDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsIGRlIHZlcmlmaWNhcmUgYSBncnVwdWx1aSByZXNwb25zYWJpbCBwZW50cnUgdW4gZWxlbWVudCBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bCBkZSBnZW5lcmFyZSBhIHN0YXRpc3RpY2lsb3IgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdEZW51bWlyZSBtb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtxINyIE1vZHVsdWwgZGUgbnVtZXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ051bcSDcnVsIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIGNhcmUgdXJtZWF6xIMgc8SDIGZpZSBhZmnImWF0ZSDDrm4gZmllY2FyZSBwYWdpbsSDIGEgdW51aSByZXp1bHRhdCBkZSBjxIN1dGFyZSDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ051bcSDcnVsIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIGNhcmUgdXJtZWF6xIMgc8SDIGZpZSBhZmnImWF0ZSBwZSBmaWVjYXJlIHBhZ2luxIMgYSB1bnVpIHJlenVsdGF0IGRlIGPEg3V0YXJlIMOubiBpbnRlcmZhyJthIGN1IGNsaWVuyJtpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmllY3RlbGUgY2FyZSB0cmVidWllIGPEg3V0YXRlLCBjw6J0ZSBpbnRyxINyaSDImWkgY2UgYXRyaWJ1dGUgdHJlYnVpZSBhZmnImWF0ZS4gQXRyaWJ1dGVsZSBDb25maWdJdGVtIHRyZWJ1aWUgc8SDIGZpZSBzdG9jYXRlIMOubiBtb2QgZXhwbGljaXQgcHJpbiBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQcmV6ZW50YXJlIGdlbmVyYWzEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IGNhdGVnb3JpaWxlIHBlbnRydSBjbGFzZWxlIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgcHJlZmVyaW7Im2Vsb3IgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IGZpbHRyZWxlIGRlIGNvbG9hbsSDIGRpbiBwcmV6ZW50YXJlYSBnZW5lcmFsxIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBtaWNpLiBWxIMgcnVnxINtIHPEgyByZcibaW5lyJtpOiBzZXRhcmVhICJBY3RpdmUiIGxhIDAgdmEgw65tcGllZGljYSBkb2FyIGFnZW7Im2lpIHPEgyBlZGl0ZXplIHNldMSDcmlsZSBhY2VzdHVpIGdydXAgw65uIHByZWZlcmluyJtlbGUgbG9yIHBlcnNvbmFsZSwgZGFyIHZhIHBlcm1pdGUgw65uIGNvbnRpbnVhcmUgYWRtaW5pc3RyYXRvcmlsb3Igc8SDIGVkaXRlemUgc2V0xINyaWxlIMOubiBudW1lbGUgdW51aSBhbHQgdXRpbGl6YXRvci4gVXRpbGl6YcibaSAiUHJlZmVyZW5jZUdyb3VwIiBwZW50cnUgYSBjb250cm9sYSDDrm4gY2Ugem9uxIMgdHJlYnVpZSBhZmnImWF0ZSBhY2VzdGUgc2V0xINyaSDDrm4gaW50ZXJmYcibYSBjdSB1dGlsaXphdG9ydWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmlpIHBlbnRydSBjdWxvYXJlYSBzdMSDcmlsb3IgZGUgZGVzZsSDyJl1cmFyZSDDrm4gdml6dWFsaXphcmVhIHByZWZlcmluyJtlbG9yIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmlpIHBlbnRydSBzdMSDcmlsZSBkZSBkZXNmxIPImXVyYXJlIGRpbiB2aXp1YWxpemFyZWEgcHJlZmVyaW7Im2Vsb3IgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0cmlpIHBlbnRydSBncnVwdXJpbGUgZGUgcGVybWlzaXVuaSBkZSBleGVtcGx1IGFsZSBhdHJpYnV0ZWxvciBnZW5lcmFsZSBhbGUgY2F0YWxvZ3VsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgbW9kdWx1bCBkZSBudW1lIHBlbnRydSBjbGFzZWxlIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgcHJlZmVyaW7Im2Vsb3IgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgbW9kdWx1bCBkZSBudW1lcmUgcGVudHJ1IGNsYXNlbGUgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBwcmVmZXJpbsibZWxvciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IHBhZ2luaSAow65uIGNhcmUgc3VudCBhZmnImWF0ZSBlbGVtZW50ZWxlIGRlIGNvbmZpZ3VyYXJlKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgbW9kdWx1bCBkZSDImWlydXJpIGRlIHZlcnNpdW5pIHBlbnRydSBjbGFzZWxlIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgcHJlZmVyaW7Im2Vsb3IgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IG1vZHVsdWwgc2V0dWx1aSBkZSBpbnN0cnVtZW50ZSBkZSDImWFibG9hbmUgZGUgyJlpcnVyaSBkZSB2ZXJzaXVuaSBwZW50cnUgY2xhc2VsZSBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSDDrm4gdml6dWFsaXphcmVhIHByZWZlcmluyJtlbG9yIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgZGVjbGFuyJlhcmVhIHZlcnNpdW5paSBwZW50cnUgY2xhc2VsZSBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSDDrm4gdml6dWFsaXphcmVhIHByZWZlcmluyJtlbG9yIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdFZmVjdHVlYXrEgyBhY8ibaXVuZWEgY29uZmlndXJhdMSDIHBlbnRydSBmaWVjYXJlIGV2ZW5pbWVudCAoY2EgSW52b2tlcikgcGVudHJ1IGZpZWNhcmUgc2VydmljaXUgd2ViIGNvbmZpZ3VyYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdEcmVwdHVyaSBHcnVwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBhY8ibaXVuZWEgZGUgYXRhyJlhcmUgYSBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBJVFNNIMOubiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIElUU00gZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGRlIGPEg3V0YXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgSVRTTSDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzaXVuaSBuZWNlc2FyZSBwZW50cnUgYSB1dGlsaXphIGVjcmFudWwgZGUgY8SDdXRhcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBJVFNNIMOubiBpbnRlcmZhyJthIGN1IGNsaWVuyJtpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgZWNyYW51bCBkZSB2aXp1YWxpemFyZSBhIGFyYm9yZWx1aSBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBJVFNNIMOubiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzaXVuaSBuZWNlc2FyZSBwZW50cnUgYSB1dGlsaXphIGVjcmFudWwgZGUgbcSDcmlyZSBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIElUU00gw65uIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGRlIGFkxIN1Z2FyZSBhIHVudWkgZWxlbWVudCBkZSBjb25maWd1cmFyZSBJVFNNIMOubiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzaXVuaSBuZWNlc2FyZSBwZW50cnUgYSB1dGlsaXphIGVjcmFudWwgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgSVRTTSDDrm4gbWFzxIMgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgZWNyYW51bCBkZSBlZGl0YXJlIGEgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgSVRTTSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGN1IGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIElUU00gaXN0b3JpYyDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgZWNyYW51bCBkZSB0aXDEg3JpcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBJVFNNIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbGVnaWkgbmVjZXNhcmUgcGVudHJ1IGEgyJl0ZXJnZSBlbGVtZW50ZWxlIGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0PEg3V0YXJlYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ1NldGHIm2kgYXV0b21hdCBzdGFyZWEgZGUgaW5jaWRlbnQgYSB1bnVpIElDIGF0dW5jaSBjw6JuZCB1biBiaWxldCBlc3RlIGxlZ2F0IGRlIHVuIElDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1N0YWJpbGXImXRlIHN0YXJlYSBkZSBkZXNmxIPImXVyYXJlIMOubiBlY3JhbnVsIGRlIGFuc2FtYmx1IGFsIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU3RhYmlsZciZdGUgc3RhcmVhIGluY2lkZW50dWx1aSDDrm4gZWNyYW51bCBkZSBhbnNhbWJsdSBhbCBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IGNhcmUgcGVybWl0ZSBjb3JlbGFyZWEgdW51aSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIGN1IHVuIGFsdCBvYmllY3Qgw65uIHZpenVhbGl6YXJlYSBjdSB6b29tIGEgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSBhY2Nlc2EgaXN0b3JpY3VsIHVudWkgZWxlbWVudCBkZSBjb25maWd1cmFyZSDDrm4gcHJlemVudGFyZWEgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmnImWVhesSDIG8gbGVnxIN0dXLEgyDDrm4gbWVuaXUgcGVudHJ1IGEgYWNjZXNhIGlzdG9yaWN1bCB1bnVpIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBjdSB6b29tIGEgaW50ZXJmZcibZWkgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSDImXRlcmdlIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBzYSBjdSB6b29tIGEgaW50ZXJmZcibZWkgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIGFmaciZYSBsZWfEg3R1cmlsZSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBzdWIgZm9ybcSDIGRlIFRyZWUgVmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmnImWVhesSDIG8gbGVnxIN0dXLEgyDDrm4gbWVuaXUgcGVudHJ1IGEgZHVwbGljYSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIMOubiBwcmV6ZW50YXJlYSBnZW5lcmFsxIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSBkdXBsaWNhIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBjdSB6b29tIGEgaW50ZXJmZcibZWkgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIGVkaXRhIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBjdSB6b29tIGEgaW50ZXJmZcibZWkgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIHJldmVuaSDDrm4gdml6dWFsaXphcmVhIGN1IHpvb20gYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIGltcHJpbWEgdW4gZWxlbWVudCBkZSBjb25maWd1cmFyZSDDrm4gdml6dWFsaXphcmVhIGN1IHpvb20gYSBpbnRlcmZlyJtlaSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIG3Eg3JpIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHByZXplbnRhcmVhIGdlbmVyYWzEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgaXN0b3JpY3VsIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlICjDrm4gb3JkaW5lIGludmVyc8SDKSDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0NhdGVnb3JpYSBpbXBsaWNpdMSDIGNhcmUgZXN0ZSBhZmnImWF0xIMgZGFjxIMgbnUgZXN0ZSBzZWxlY3RhdMSDIG5pY2l1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdJZGVudGlmaWNhdG9ydWwgcGVudHJ1IHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUsIGRlIGV4ZW1wbHUgQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFZhbG9hcmVhIGltcGxpY2l0xIMgZXN0ZSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdEZWNsYW7ImWVhesSDIGF1dG9tYXQgaW52b2NhdG9ydWwgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2l1bmUgRXhwcmVzaWUgyJlpciBkZSBjYXJhY3RlcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2l1bmUgyJhpciBkZSBjYXJhY3RlcmUgTW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2l1bmUgVHJpZ2dlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnRGFjxIMgZXhlY3XIm2lhIENvbmZpZ0l0ZW1BQ0wgcG9hdGUgZmkgZXZpdGF0xIMgcHJpbiB2ZXJpZmljYXJlYSBkZXBlbmRlbsibZWxvciBkZSBjw6JtcHVyaSBkaW4gbWVtb3JpYSBjYWNoZS4gQWNlc3QgbHVjcnUgcG9hdGUgw65tYnVuxIN0xIPIm2kgdGltcGlpIGRlIMOubmPEg3JjYXJlIGEgZm9ybXVsYXJlbG9yLCBkYXIgdHJlYnVpZSBkZXphY3RpdmF0IGRhY8SDIHNlIHV0aWxpemVhesSDIEFDTE1vZHVsZXMgcGVudHJ1IElUU01Db25maWdJdGVtLSDImWkgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0NlIGluZm9ybWHIm2lpIGdlbmVyYWxlIHN1bnQgYWZpyJlhdGUgw65uIGFudGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWN0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZXByb2R1Y3RpdsSDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWN0aXYnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnQ2zEg2RpcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZmHIm8SDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1Rhc3RhdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnyJhvYXJlY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JlyJtlYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0FsdGVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnSWXImWlyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0NhbWVyxIMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTTEEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/ru_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnJ1X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfQntCx0YnQuNC1INC00LDQvdC90YvQtSDQv9C+INGN0LrRgdC/0LvRg9Cw0YLQsNGG0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAn0J3QsNGB0YLRgNC+0LnQutC4INC00LvRjyDQstGF0L7QtNGP0YnQuNGFINC00LDQvdC90YvRhSDQt9Cw0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ9Cd0LDRgdGC0YDQvtC50LrQuCDQtNC70Y8g0LjRgdGF0L7QtNGP0YnQuNGFINC+0YLQstC10YLQvdGL0YUg0LTQsNC90L3Ri9GFJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0LzQuCDQtdC00LjQvdC40YbQsNC80LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICfQmNC30LzQtdC90LjRgtGMINC+0L/QuNGB0LDQvdC40LUg0LrQu9Cw0YHRgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICfQmNC30LzQtdC90LXQvdC40LUg0L7Qv9GA0LXQtNC10LvQtdC90LjRjyDRgNC+0LvQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ9Cf0LDQutC10YLRiyDQutC70LDRgdGB0L7QsiBSZWFkeTJJbXBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICfQl9C00LXRgdGMINCy0Ysg0LzQvtC20LXRgtC1INC40LzQv9C+0YDRgtC40YDQvtCy0LDRgtGMINC/0LDQutC10YLRiyDQutC70LDRgdGB0L7QsiBSZWFkeTJJbXBvcnQsINC00LXQvNC+0L3RgdGC0YDQuNGA0YPRjtGJ0LjQtSDQvdCw0YjQuCDRgdCw0LzRi9C1INC+0LHRi9GH0L3Ri9C1INGN0LvQtdC80LXQvdGC0Ysg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LiDQntCx0YDQsNGC0LjRgtC1INCy0L3QuNC80LDQvdC40LUsINGH0YLQviDQvNC+0LbQtdGCINC/0L7RgtGA0LXQsdC+0LLQsNGC0YzRgdGPINC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdCw0Y8g0L3QsNGB0YLRgNC+0LnQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICfQntCx0L3QvtCy0LvQtdC90LjQtSDRgdGD0YnQtdGB0YLQstGD0Y7RidC40YUg0YHRg9GJ0L3QvtGB0YLQtdC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAn0JjQvNC/0L7RgNGC0LjRgNGD0LnRgtC1INC/0LDQutC10YLRiyDQutC70LDRgdGB0L7QsiBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ9Ca0LvQsNGB0YEg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lkg0LXQtNC40L3QuNGG0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ9Cg0L7Qu9GMINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9Ce0YHQvdC+0LLQvdGL0LUg0YHRgNC10LTRgdGC0LLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICfQpNC40LvRjNGC0YAg0LTQu9GPINC60LvQsNGB0YHQvtCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9CS0YvQsdC10YDQuNGC0LUg0LrQu9Cw0YHRgSDQuNC3INGB0L/QuNGB0LrQsCDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDQvdC+0LLQvtC5INCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfQmtC70LDRgdGBJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBDb25maWdJdGVtINC80LDRgdGB0L7QstC+0LUg0LTQtdC50YHRgtCy0LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICfQodCy0Y/Qt9Cw0YLRjCDRgSDQtNGA0YPQs9C40LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ9Cd0LXQstC10YDQvdGL0Lkg0L3QvtC80LXRgCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRiyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0LTRgNGD0LPQuNGFINCa0JUg0LTQu9GPINGB0LLRj9C30YvQstCw0L3QuNGPLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9CS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINGN0YLRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YPRjiDQtdC00LjQvdC40YbRgz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0JjQvNGPINGN0YLQvtCz0L4g0YPRh9C10YLQvdC+0LPQviDRjdC70LXQvNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfQmNC80Y8g0YPQttC1INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNGA0YPQs9C+0Lkg0JrQlSDRgdC+INGB0LvQtdC00YPRjtGJ0LjQvCDQvdC+0LzQtdGA0L7QvCAo0LDQvNC4KTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfQndC+0LzQtdGAINCy0LXRgNGB0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0J3QvtC80LXRgCDQstC10YDRgdC40Lgg0Y3RgtC+0LPQviDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9Cd0L7QvNC10YAg0LLQtdGA0YHQuNC4INGD0LbQtSDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8gQ29uZmlnSXRlbXMg0YHQviDRgdC70LXQtNGD0Y7RidC40Lwg0L3QvtC80LXRgNC+0LwgKNC90L7QvNC10YDQsNC80LgpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn0JjRgdGC0L7RgNC40Y8g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lkg0LXQtNC40L3QuNGG0Ys6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ9Ch0L7QtNC10YDQttC40LzQvtC1INC40YHRgtC+0YDQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfQktGA0LXQvNGPINGB0L7Qt9C00LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn0J/QvtC00YDQvtCx0L3Ri9C5INC/0L7QutCw0LcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0YUg0LXQtNC40L3QuNGGINC90LAg0YHRgtGA0LDQvdC40YbRgyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAn0JTQsNC90L3Ri9C1INC+0LEg0Y3Qu9C10LzQtdC90YLQsNGFINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQvdC1INC90LDQudC00LXQvdGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CS0YvQsdC10YDQuNGC0LUg0Y3RgtC+0YIg0Y3Qu9C10LzQtdC90YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAn0JLRi9C/0L7Qu9C90LjRgtGMINC/0L7QuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn0JjRgdC60LDRgtGMINC4INCyINC/0YDQtdC00YvQtNGD0YnQuNGFINCy0LXRgNGB0LjRj9GFPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3INC00LvRjyBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAn0KPRgNC+0LLQtdC90Ywg0LPQu9GD0LHQuNC90YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICfQo9Cy0LXQu9C40YfQtdC90LjQtS/Rg9C80LXQvdGM0YjQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICfQlNC+0YHRgtC40LPQvdGD0YIg0LzQsNC60YHQuNC80LDQu9GM0L3Ri9C5INGD0YDQvtCy0LXQvdGMINGB0YHRi9C70L7QuiDQtNC70Y8gQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LDRjyDQtdC00LjQvdC40YbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcg0JjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0JrQvtC90YQuINC10LQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9Ci0LXQutGD0YnQtdC1INGB0L7RgdGC0L7Rj9C90LjQtSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn0KLQtdC60YPRidC10LUg0YHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfQktGA0LXQvNGPINC/0L7RgdC70LXQtNC90LXQs9C+INC40LfQvNC10L3QtdC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfQkNCy0YLQvtGAINC/0L7RgdC70LXQtNC90LXQs9C+INC40LfQvNC10L3QtdC90LjRjyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ9CS0LDRiNC4IENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ9Cf0L7QuNGB0LogQ29uZmlnSXRlbSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAn0KLQuNC/INC+0LHRitC10LrRgtCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAn0KTQuNC70YzRgiDQv9C+INGC0LjQv9GDJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn0JHRg9C00YPRgiDQuNC80L/QvtGA0YLQuNGA0L7QstCw0L3RiyDRgdC70LXQtNGD0Y7RidC40LUg0LrQu9Cw0YHRgdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ9Ch0LvQtdC00YPRjtGJ0LjQtSDRgNC+0LvQuCDQsdGD0LTRg9GCINC40LzQv9C+0YDRgtC40YDQvtCy0LDQvdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ9Ce0LHRgNCw0YLQuNGC0LUg0LLQvdC40LzQsNC90LjQtSwg0YfRgtC+INGC0LDQutC20LUg0LHRg9C00YPRgiDRgdC+0LfQtNCw0L3RiyDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidC40LUg0LTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPINC4INC60LvQsNGB0YHRiyBHZW5lcmFsQ2F0YWxvZywg0Lgg0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60L7Qs9C+INGD0LTQsNC70LXQvdC40Y8g0L3QtSDQv9GA0L7QuNC30L7QudC00LXRgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfQltC10LvQsNC10YLQtSDQv9GA0L7QtNC+0LvQttC40YLRjD8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAn0J3Rg9C20L3RiyDQv9GA0LjQvNC10YDRiyDQutC70LDRgdGB0L7QsiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn0J7Qv9GA0LXQtNC10LvQtdC90LjQtSDQvdC1INGP0LLQu9GP0LXRgtGB0Y8g0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90YvQvCDRhdGN0YjQtdC8IFlBTUwuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAn0J7QsdC30L7RgDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LXRgiBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAn0JLQsNC8INC90YPQttC90LAg0YXQvtGC0Y8g0LHRiyDQvtC00L3QsCDQstGL0LHRgNCw0L3QvdCw0Y8g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdCw0Y8g0LXQtNC40L3QuNGG0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAn0KMg0LLQsNGBINC90LXRgiDQtNC+0YHRgtGD0L/QsCDQvdCwINC30LDQv9C40YHRjCDRjdGC0L7QuSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRizogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ9Ca0LvQsNGB0YEgJXMg0L3QtSDQsdGL0Lsg0L7Qv9GA0LXQtNC10LvQtdC9ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdCw0Y8g0LXQtNC40L3QuNGG0LAgIiVzIiDQvdC1INC90LDQudC00LXQvdCwINCyINCx0LDQt9C1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0YPQtNCw0LvQuNGC0Ywg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGD0Y4g0LXQtNC40L3QuNGG0YMg0YEgSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICfQndC1INC90LDQudC00LXQvdCwINCy0LXRgNGB0LjRjyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRiyAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtSDQv9GA0LjRgdCy0L7QtdC9IENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQg0LjQu9C4IENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfQndC10YIg0LTQvtGB0YLRg9C/0LAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LXQstC+0LfQvNC+0LbQvdC+INC/0L7QutCw0LfQsNGC0Ywg0LjRgdGC0L7RgNC40Y4sINC90LXRgiBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn0J3QtdCy0L7Qt9C80L7QttC90L4g0L/QvtC60LDQt9Cw0YLRjCDQuNGB0YLQvtGA0LjRjiwg0L3QtdC00L7RgdGC0LDRgtC+0YfQvdC+INC/0YDQsNCyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAn0J3QvtCy0LDRjyDQmtCVIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ9Cd0L7QstCw0Y8g0LLQtdGA0YHQuNGPIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfQodC+0YHRgtC+0Y/QvdC40LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0L7QsdC90L7QstC70LXQvdC+ICjQvdC+0LLQvtC1PSVzLCDRgdGC0LDRgNC+0LU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9Ch0L7RgdGC0L7Rj9C90LjQtSDQuNC90YbQuNC00LXQvdGC0LAg0L7QsdC90L7QstC70LXQvdC+ICjQvdC+0LLQvtC1PSVzLCDRgdGC0LDRgNC+0LU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn0JrQlSAoSUQ9JXMpINGD0LTQsNC70LXQvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAn0KHQstGP0LfRjCDRgSAlcyAo0YLQuNC/PSVzKSDQtNC+0LHQsNCy0LvQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ9Ch0LLRj9C30Ywg0YEgJXMgKNGC0LjQvz0lcykg0YPQtNCw0LvQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ9Ce0L/QuNGB0LDQvdC40LUg0JrQlSDQvtCx0L3QvtCy0LvQtdC90L4gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9CY0LzRjyDQvtCx0L3QvtCy0LvQtdC90L4gKNC90L7QstC+0LU9JXMsINGB0YLQsNGA0L7QtT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICfQkNGC0YDQuNCx0YPRgiAlcyDQvtCx0L3QvtCy0LvQtdC9INGBICIlcyIg0LTQviAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ9CS0LXRgNGB0LjRjyAlcyDRg9C00LDQu9C10L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICfQndC1INC/0YDQuNGB0LLQvtC10L0gQ29uZmlnSXRlbUlEINC40LvQuCBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9Cd0LXQstC+0LfQvNC+0LbQvdC+INC+0YLQvtCx0YDQsNC30LjRgtGMINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Rg9GOINC10LTQuNC90LjRhtGDLCDQvdC10YIg0LTQvtGB0YLRg9C/0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdCw0Y8g0LXQtNC40L3QuNGG0LAgJXMg0L3QtSDQvdCw0LnQtNC10L3QsCDQsiDQsdCw0LfQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QsNGPINC10LTQuNC90LjRhtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfQvdCw0L/QtdGH0LDRgtCw0L3QviAlcyDQsiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn0KHRgdGL0LvQutCwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAn0J3QtdCy0LXRgNC90YvQuSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0NsYXNzSUQg0L3QtSDQv9GA0LjRgdCy0L7QtdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ9Cd0LXRgiDQtNC+0YHRgtGD0L/QsCDQtNC70Y8g0Y3RgtC+0LPQviDQutC70LDRgdGB0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfQndC10YIg0YDQtdC30YPQu9GM0YLQsNGC0LAv0KDQtdGI0LXQvdC40Y8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAn0KDQtdC30YPQu9GM0YLQsNGC0Ysg0L/QvtC40YHQutCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Ri9GFINC10LTQuNC90LjRhic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAn0J3QtdCy0L7Qt9C80L7QttC90L4g0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0Y3Qu9C10LzQtdC90YIsINC90LXQtNC+0YHRgtCw0YLQvtGH0L3QviDQv9GA0LDQsiDQtNC70Y8g0JrQlSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSDQvdC1INC90LDQudC00LXQvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAn0JLQtdGA0YHQuNC4INC90LUg0L3QsNC50LTQtdC90YshJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn0L7Qv9C10YDQsNGC0LjQstC90LDRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAn0L/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ9C40L3RhtC40LTQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Ch0L7RgdGC0L7Rj9C90LjQtSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDRjdGC0L7QuSDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCDQtNC70Y8g0Y3RgtC+0Lkg0JrQlSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ9Cd0LXRgiDRgNCw0LfRgNC10YjQtdC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICfQpNC40LvRjNGC0YAg0L3QtdC00LXQudGB0YLQstC40YLQtdC70LXQvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ9Cd0LXQtNC+0L/Rg9GB0YLQuNC80YvQtSDQv9Cw0YDQsNC80LXRgtGA0Ysg0L/QvtC40YHQutCwISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ9Cf0L7QutCw0LfQsNC90L3Ri9C1INGN0LvQtdC80LXQvdGC0Ysg0L3QsNGB0YLRgNC+0LnQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ9Ci0LjQvyDQodC+0YHRgtC+0Y/QvdC40Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn0KLQuNC/INCi0LXQutGD0YnQtdCz0L4g0YHQvtGB0YLQvtGP0L3QuNGPINC40L3RhtC40LTQtdC90YLQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfQnNC10LbQtNGDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfQntCz0YDQsNC90LjRh9C10L3QuNGPINC60LvQsNGB0YHQsCDQtNC70Y8g0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ9CS0YvQsdC10YDQuNGC0LUg0L7QtNC40L0g0LjQu9C4INC90LXRgdC60L7Qu9GM0LrQviDQutC70LDRgdGB0L7Qsiwg0YfRgtC+0LHRiyDQvtCz0YDQsNC90LjRh9C40YLRjCDQstGL0LHQvtGAINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXQvdC40Y8g0LrQu9Cw0YHRgdCwINC00LvRjyDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ9CS0YvQsdC10YDQuNGC0LUg0L7QtNC40L0g0LjQu9C4INC90LXRgdC60L7Qu9GM0LrQviDQutC70LDRgdGB0L7Qsiwg0YfRgtC+0LHRiyDQvtCz0YDQsNC90LjRh9C40YLRjCDQstGL0LHQvtGAINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICfQlNC40L3QsNC80LjRh9C10YHQutC40LkgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICfQodGC0LDRgtC40LrQsCAo0LLQtdGA0YHQuNGPKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICfQotC40L8g0YHRgdGL0LvQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ9Cf0YDQuNC80LXQvdGP0LXRgtGB0Y8g0LvQuCDRjdGC0LAg0YHRgdGL0LvQutCwINC6IENvbmZpZ0l0ZW0g0LjQu9C4INC6INGB0YLQsNGC0LjRh9C10YHQutC+0Lkg0LLQtdGA0YHQuNC4INGB0YHRi9C70LDRjtGJ0LXQs9C+0YHRjyDQvtCx0YrQtdC60YLQsC4g0KDQsNGB0YfQtdGCINGC0LXQutGD0YnQtdCz0L4g0YHQvtGB0YLQvtGP0L3QuNGPINC40L3RhtC40LTQtdC90YLQsCDQstGL0L/QvtC70L3Rj9C10YLRgdGPINGC0L7Qu9GM0LrQviDQtNC70Y8g0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINGB0YHRi9C70L7Qui4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICfQktGL0LHQtdGA0LjRgtC1INCw0YLRgNC40LHRg9GCLCDQv9C+INC60L7RgtC+0YDQvtC80YMg0LHRg9C00LXRgiDQvtGB0YPRidC10YHRgtCy0LvRj9GC0YzRgdGPINC/0L7QuNGB0Log0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ9CR0LDQt9C+0LLQsNGPINGB0YLRgNGD0LrRgtGD0YDQsCDQvdC10LTQtdC50YHRgtCy0LjRgtC10LvRjNC90LAuINCf0L7QttCw0LvRg9C50YHRgtCwLCDQv9GA0LXQtNC+0YHRgtCw0LLRjNGC0LUg0YXRjdGIINGBINC00LDQvdC90YvQvNC4INCyINGE0L7RgNC80LDRgtC1IFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAn0J3QtdC+0LHRhdC+0LTQuNC80L4g0L3QsNGH0LjQvdCw0YLRjCDRgdGC0YDQvtC60YMgWUFNTCDRgSBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICfQndC1INGD0LTQsNC70L7RgdGMINC+0YfQuNGB0YLQuNGC0Ywg0YLQsNCx0LvQuNGG0YMgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAn0KHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQuNC1INC00LjQvdCw0LzQuNGH0LXRgdC60LjQtSDQv9C+0LvRjyDQvdC1INC90LDQudC00LXQvdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn0J3QtSDRg9C00LDQu9C+0YHRjCDQstGB0YLQsNCy0LjRgtGMINCyINGC0LDQsdC70LjRhtGDIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn0JLRgdGC0LDQstC70LXQvdC+IDAg0YHRgtGA0L7QuiDQsiDRgtCw0LHQu9C40YbRgyBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAn0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INC+0LTQvdC+0LPQviDRjdC70LXQvNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ9CY0LzQv9C+0YDRgi/RjdC60YHQv9C+0YDRgiDQstC70L7QttC10L3QuNC5ICjQutCw0Log0L/QvtGB0LvQtdC00L3QuNC1INC30LDQv9C40YHQuCDQsiDRgdGC0YDQvtC60LUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAn0KHRgtGA0L7QutCwINCy0LXRgNGB0LjQuCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICfQntGI0LjQsdC60LAg0YHQuNC90YXRgNC+0L3QuNC30LDRhtC40Lgg0L7Qv9GA0LXQtNC10LvQtdC90LjQuS4g0J/QvtC20LDQu9GD0LnRgdGC0LAsINC/0YDQvtCy0LXRgNGM0YLQtSDQttGD0YDQvdCw0LsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAn0KMg0LLQsNGBINC10YHRgtGMINC+0L/RgNC10LTQtdC70LXQvdC40Y8gSVRTTUNvbmZpZ0l0ZW0sINC60L7RgtC+0YDRi9C1INC90LUg0YHQuNC90YXRgNC+0L3QuNC30LjRgNC+0LLQsNC90YsuINCf0L7QttCw0LvRg9C50YHRgtCwLCDRgNCw0LfQstC10YDQvdC40YLQtSDQuNC30LzQtdC90LXQvdC40Y8g0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINC/0L7Qu9C10LkgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfQo9GB0YLQsNGA0LXQu9C+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn0KLQtdGF0L3QuNGH0LXRgdC60L7QtSDQvtCx0YHQu9GD0LbQuNCy0LDQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICfQrdC60YHQv9C10YDQuNC80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICfQl9Cw0L/Qu9Cw0L3QuNGA0L7QstCw0L3QvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ9Cg0LXQvNC+0L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn0KHQv9C40YHQsNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn0K3QutGB0L/QtdGA0YLQuNC30LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ9Ci0LXRgdGC0LjRgNC+0LLQsNC90LjQtSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAn0J7QsdC30L7RgCDQuCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICfQmNC80L/QvtGA0YIg0LrQu9Cw0YHRgdC+0LIv0YDQvtC70LXQuSDQuCDRgdCy0Y/Qt9Cw0L3QvdGL0YUg0YEg0L3QuNC80Lgg0L/QvtC70LXQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ9CS0L4g0LLRgNC10LzRjyDQuNC80L/QvtGA0YLQsCDQutC70LDRgdGB0LAg0L/RgNC+0LjQt9C+0YjQu9CwINC+0YjQuNCx0LrQsC4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtINCh0LrRgNGL0YLRi9C5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSDQv9C+0LrQsNC30LDQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfQn9C+0LfQstC+0LvRj9C10YIg0YDQsNGB0YjQuNGA0LjRgtGMINGD0YHQu9C+0LLQuNGPINC/0L7QuNGB0LrQsCDQv9GA0Lgg0L/QvtC40YHQutC1INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLiDQoSDQv9C+0LzQvtGJ0YzRjiDRjdGC0L7QuSDRhNGD0L3QutGG0LjQuCDQstGLINC80L7QttC10YLQtSDQuNGB0LrQsNGC0YwsINC90LDQv9GA0LjQvNC10YAsINC40LzRjyDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDRgSDRgtCw0LrQuNC80Lgg0YPRgdC70L7QstC40Y/QvNC4LCDQutCw0LogIigqa2V5MSomJiprZXkyKikiINC40LvQuCAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ9Cf0L7Qt9Cy0L7Qu9GP0LXRgiDRgNCw0YHRiNC40YDQuNGC0Ywg0YPRgdC70L7QstC40Y8g0L/QvtC40YHQutCwINC/0YDQuCDQv9C+0LjRgdC60LUg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQutC70LjQtdC90YLRgdC60L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4g0KEg0L/QvtC80L7RidGM0Y4g0Y3RgtC+0Lkg0YTRg9C90LrRhtC40Lgg0LLRiyDQvNC+0LbQtdGC0LUg0LjRgdC60LDRgtGMLCDQvdCw0L/RgNC40LzQtdGALCDQuNC80Y8g0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0YEg0YLQsNC60LjQvNC4INGD0YHQu9C+0LLQuNGP0LzQuCwg0LrQsNC6ICIoKmtleTEqJiYqa2V5MiopIiDQuNC70LggIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICfQndCw0LfQvdCw0YfQsNC10LzRi9C1INCa0JgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ9Ca0JgsINC30LDQutGA0LXQv9C70LXQvdC90YvQtSDQt9CwINC60L7QvNC/0LDQvdC40LXQuS3QutC70LjQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAn0JrQmCwg0L3QsNC30L3QsNGH0LXQvdC90YvQtSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y4g0LrQu9C40LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ9Cd0LDRgdGC0YDQvtC50LrQuCBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICfQn9GA0L7QstC10YDQutCwINGD0L3QuNC60LDQu9GM0L3QvtGB0YLQuCDQmNC80LXQvdC4INCy0L3Rg9GC0YDQuCDRgtC10LrRg9GJ0LXQs9C+INC60LvQsNGB0YHQsCDQmtCVKFwnY2xhc3NcJykg0LjQu9C4INCz0LvQvtCx0LDQu9GM0L3QviAoXCdnbG9iYWxcJyks0YfRgtC+INC+0LfQvdCw0YfQsNC10YIsINGH0YLQviDQu9GO0LHQsNGPINGB0YPRidC10YHRgtCy0YPRjtGJ0LDRjyDQmtCVINGD0YfQuNGC0YvQstCw0LXRgtGB0Y8g0L/RgNC4INC/0L7QuNGB0LrQtSDQtNGD0LHQu9C40LrQsNGC0L7QsiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ9CS0YvQsdC10YDQuNGC0LUg0LzQvtC00YPQu9GMINC00LvRjyDQv9GA0LjQvNC10L3QtdC90LjRjyDRgdGF0LXQvNGLINC40LzQtdC90L7QstCw0L3QuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAn0JLRi9Cx0LXRgNC40YLQtSDQvNC+0LTRg9C70Ywg0LTQu9GPINC/0YDQuNC80LXQvdC10L3QuNGPINGB0YXQtdC80Ysg0YHRh9C40YHQu9C10L3QuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICfQktGL0LHQtdGA0LjRgtC1INC80L7QtNGD0LvRjCDQtNC70Y8g0L/RgNC40LzQtdC90LXQvdC40Y8g0YHRhdC10LzRiyDRgdGC0YDQvtC6INCy0LXRgNGB0LjQuS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfQktGL0LHQtdGA0LjRgtC1INCw0YLRgNC40LHRg9GC0Ysg0LTQu9GPINC30LDQv9GD0YHQutCwINGB0L7Qt9C00LDQvdC40Y8g0L3QvtCy0L7QuSDQstC10YDRgdC40LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ9CS0YvQsdC10YDQuNGC0LUg0LrQsNGC0LXQs9C+0YDQuNC4LCDQutC+0YLQvtGA0YvQtSDQsdGD0LTRg9GCINC90LDQt9C90LDRh9C10L3RiyDRjdGC0L7QvNGDINC60LvQsNGB0YHRgyDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICfQpNC40LvRjNGC0YDRiyDRgdGC0L7Qu9Cx0YbQvtCyINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LTQu9GPIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICfQodGC0L7Qu9Cx0YbRiywg0LrQvtGC0L7RgNGL0LUg0LzQvtC20L3QviDRhNC40LvRjNGC0YDQvtCy0LDRgtGMINCyINC+0LHQt9C+0YDQtSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4g0J/RgNC40LzQtdGH0LDQvdC40LU6INCg0LDQt9GA0LXRiNC10L3RiyDRgtC+0LvRjNC60L4g0LDRgtGA0LjQsdGD0YLRiyDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC4INC00LjQvdCw0LzQuNGH0LXRgdC60LjQtSDQv9C+0LvRjyAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0LUg0LXQtNC40L3QuNGG0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ9Ch0L7Qt9C00LDRgtGMINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Rg9GOINC10LTQuNC90LjRhtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGD0Y4g0LXQtNC40L3QuNGG0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWcgaXRlbSAo0JrQlSkgZXZlbnQgbW9kdWxlINCy0LXQtNGD0YnQuNC5INC30LDQv9C40YHRjCDQsiDQuNGB0YLQvtGA0LjRjiDQsiDQsNCz0LXQvdGC0YHQutC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0LvRjCDRgdC+0LHRi9GC0LjQuSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LCDQutC+0YLQvtGA0YvQuSDQvtCx0L3QvtCy0LvRj9C10YIg0Y3Qu9C10LzQtdC90YLRiyDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNC4INGBINC40YUg0YLQtdC60YPRidC40Lwg0L7Qv9GA0LXQtNC10LvQtdC90LjQtdC8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ9CY0YHRgtC+0YDQuNGPINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QvtC5INC10LTQuNC90LjRhtGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ9Cf0LXRh9Cw0YLRjCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ9Cf0YDQvtGB0LzQvtGC0YAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lkg0LXQtNC40L3QuNGG0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfQlNGA0LXQstC+0LLQuNC00L3QvtC1INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC1IENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAn0JLQtdGA0YHQuNGPIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMg0YHQu9C10LTRg9GO0YnQuNGFINC60LvQsNGB0YHQvtCyINC90LUg0LHRg9C00YPRgiDRhdGA0LDQvdC40YLRjNGB0Y8g0L3QsCDRgdC10YDQstC10YDQtSBFbGFzdGljc2VhcmNoLiDQp9GC0L7QsdGLINC/0YDQuNC80LXQvdC40YLRjCDRjdGC0L4g0Log0YHRg9GJ0LXRgdGC0LLRg9GO0YnQuNC8IENJLCDQvdC10L7QsdGF0L7QtNC40LzQviDQt9Cw0L/Rg9GB0YLQuNGC0Ywg0LzQuNCz0YDQsNGG0LjRjiBDSSDRh9C10YDQtdC3INC60L7QvdGB0L7Qu9GMINC/0L7RgdC70LUg0LjQt9C80LXQvdC10L3QuNGPINGN0YLQvtC5INC+0L/RhtC40LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zINGB0L4g0YHQu9C10LTRg9GO0YnQuNC80Lgg0YHQvtGB0YLQvtGP0L3QuNGP0LzQuCDRgNCw0LfQstC10YDRgtGL0LLQsNC90LjRjyDQvdC1INCx0YPQtNGD0YIg0YXRgNCw0L3QuNGC0YzRgdGPINC90LAg0YHQtdGA0LLQtdGA0LUgRWxhc3RpY3NlYXJjaC4g0KfRgtC+0LHRiyDQv9GA0LjQvNC10L3QuNGC0Ywg0Y3RgtC+INC6INGB0YPRidC10YHRgtCy0YPRjtGJ0LjQvCBDSSwg0L3QtdC+0LHRhdC+0LTQuNC80L4g0LfQsNC/0YPRgdGC0LjRgtGMINC80LjQs9GA0LDRhtC40Y4gQ0kg0YfQtdGA0LXQtyDQutC+0L3RgdC+0LvRjCDQv9C+0YHQu9C1INC40LfQvNC10L3QtdC90LjRjyDRjdGC0L7QuSDQvtC/0YbQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcg0JvQuNC80LjRgiDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfQm9C40LzQuNGCINCa0JUg0L3QsCDRgdGC0YDQsNC90LjRhtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfQkdCw0LfQsCDRg9C/0YDQsNCy0LvQtdC90LjRjyDQutC+0L3RhNC40LPRg9GA0LDRhtC40LXQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAn0J7QsdGK0LXQvNC90YvQuSDQvNC+0LTRg9C70Ywg0JrQlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0L/QvtC40YHQutCwINCa0JUg0LIg0LDQs9C10L3RgtGB0LrQvtC8INC40L3RgtC10YDRhNC10LnRgdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ9Ch0L7Qt9C00LDQvdC40LUg0Lgg0YPQv9GA0LDQstC70LXQvdC40LUg0L7Qv9C40YHQsNC90LjRj9C80Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0YUg0LXQtNC40L3QuNGGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ9Ch0L7Qt9C00LDQtdGCINGC0LjQutC10YLRiyDQtNC70Y8gQ29uZmlnSXRlbXMg0LIg0L7Qv9GA0LXQtNC10LvQtdC90L3Ri9C1INC80L7QvNC10L3RgtGLINCy0YDQtdC80LXQvdC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICfQmtC70LjQtdC90YLRiyDQvNC+0LPRg9GCINCy0LjQtNC10YLRjCDQuNGB0YLQvtGA0LjRh9C10YHQutC40LUg0LLQtdGA0YHQuNC4IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICfQoyDQutC70LjQtdC90YLQvtCyINC10YHRgtGMINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0LLRgNGD0YfQvdGD0Y4g0L/QtdGA0LXQutC70Y7Rh9Cw0YLRjNGB0Y8g0LzQtdC20LTRgyDQuNGB0YLQvtGA0LjRh9C10YHQutC40LzQuCDQstC10YDRgdC40Y/QvNC4IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ9CU0LDQvdC90YvQtSDQv9C+INGD0LzQvtC70YfQsNC90LjRjiwg0LjRgdC/0L7Qu9GM0LfRg9C10LzRi9C1INCyINCw0YLRgNC40LHRg9GC0LUg0LTQu9GPINGN0LrRgNCw0L3QsCDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuC4g0J/RgNC40LzQtdGAOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ9CU0LDQvdC90YvQtSDQv9C+INGD0LzQvtC70YfQsNC90LjRjiwg0LjRgdC/0L7Qu9GM0LfRg9C10LzRi9C1INCyINCw0YLRgNC40LHRg9GC0LUg0LTQu9GPINGN0LrRgNCw0L3QsCDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuC4g0J/RgNC40LzQtdGAOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINCU0LXQudGB0YLQstC40Y8vQWN0aW9ucyDQutC+0LPQtNCwINC60L3QvtC/0LrQsCDQvdCw0YHRgtGA0L7QudC60Lgg0LTQvtGB0YLRg9C/0L3QsCDQsiDRgdCy0Y/Qt9Cw0L3QvdC+0Lwg0LLQuNC00LbQtdGC0LUgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4g0J7QsdGA0LDRgtC40YLQtSDQstC90LjQvNCw0L3QuNC1LCDRh9GC0L4g0Y3RgtC4INCU0LXQudGB0YLQstC40Y8vQWN0aW9ucyDQtNC+0LvQttC90Ysg0LjQvNC10YLRjCDQt9Cw0YDQtdCz0LjRgdGC0YDQuNGA0L7QstCw0L3QvdGL0LUgSlMg0LjQu9C4IENTUyDRhNCw0LnQu9GLOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDQuCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDRgdGF0LXQvNGDIFRlbXBsYXRlOjpUb29sa2l0INC00LvRjyDRgdGC0YDQvtC6INCy0LXRgNGB0LjQuS4g0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINGC0L7Qu9GM0LrQviDQsiDRgtC+0Lwg0YHQu9GD0YfQsNC1LCDQtdGB0LvQuCDQtNC70Y8gVmVyc2lvbiBTdHJpbmcgTW9kdWxlINGD0YHRgtCw0L3QvtCy0LvQtdC90L4g0LfQvdCw0YfQtdC90LjQtSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvQuNGC0LUg0L3QsNCx0L7RgCDRg9GB0LvQvtCy0LjQuSwg0L/RgNC4INC60L7RgtC+0YDRi9GFINC60LvQuNC10L3RgtGDINGA0LDQt9GA0LXRiNCw0LXRgtGB0Y8g0LLQuNC00LXRgtGMINGN0LvQtdC80LXQvdGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuC4g0KPRgdC70L7QstC40Y8g0LzQvtCz0YPRgiDQsdGL0YLRjCDQvtCz0YDQsNC90LjRh9C10L3RiyDQvtC/0YDQtdC00LXQu9C10L3QvdGL0LzQuCDQs9GA0YPQv9C/0LDQvNC4INC60LvQuNC10L3RgtC+0LIuINCd0LDQt9Cy0LDQvdC40LUgLSDQtdC00LjQvdGB0YLQstC10L3QvdGL0Lkg0L7QsdGP0LfQsNGC0LXQu9GM0L3Ri9C5INCw0YLRgNC40LHRg9GCLiDQldGB0LvQuCDQtNGA0YPQs9C40LUg0L/QsNGA0LDQvNC10YLRgNGLINC90LUg0YPQutCw0LfQsNC90YssINCy0YHQtSDRjdC70LXQvNC10L3RgtGLINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsdGD0LTRg9GCINCy0LjQtNC90Ysg0LIg0Y3RgtC+0Lkg0LrQsNGC0LXQs9C+0YDQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDRgtGMINGC0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDRg9C00LDQu9C10L3QuNGPIElUU00g0JrQlSDRgSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC8IEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGC0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDQv9C+0LvRg9GH0LXQvdC40Y8gSVRTTSDQmtCVINGBINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LwgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC/0L7QuNGB0LrQsCBJVFNNINCa0JUg0YEg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQvCBHZW5lcmljIEludGVyZmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0L3QtdC+0LHRhdC+0LTQuNC80YvQtSDRgNCw0LfRgNC10YjQtdC90LjRjyDQtNC70Y8g0YPRgdGC0LDQvdC+0LLQutC4INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LggSVRTTSDRgSDQv9C+0LzQvtGJ0YzRjiDQvtCx0YnQtdCz0L4g0LjQvdGC0LXRgNGE0LXQudGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQvNC+0LTRg9C70Ywg0L/RgNC+0YHQvNC+0YLRgNCwINCa0JUg0LIg0LrRgNCw0YLQutC+0Lwg0LLQuNC00LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCLCDQtNC+0LvQttC90Ysg0LvQuCDQvNC10YLQutC4INGC0LjQv9C+0LIg0YHQstGP0LfQtdC5INC+0YLQvtCx0YDQsNC20LDRgtGM0YHRjyDQsiDRgdC+0LXQtNC40L3QtdC90LjRj9GFINGD0LfQu9C+0LIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YDQtdCz0YPQu9GP0YDQvdGL0LUg0LLRi9GA0LDQttC10L3QuNGPINC00LvRjyDQutCw0LbQtNC+0LPQviDQvtGC0LTQtdC70YzQvdC+0LPQviDQutC70LDRgdGB0LAg0LTQu9GPINC/0YDQvtCy0LXRgNC60Lgg0LjQvNC10L0g0JrQlSDQuCDQstGL0LTQsNGH0Lgg0YHQvtC+0LHRidC10L3QuNC5INC+0LEg0L7RiNC40LHQutCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0LTQvtGB0YLRg9C/0L3Ri9C1INGB0YLQvtC70LHRhtGLIENJINCyINC+0LHQt9C+0YDQtSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC30LDQstC40YHQuNC80L7RgdGC0Lgg0L7RgiDQutC70LDRgdGB0LAgQ0kuINCa0LDQttC00LDRjyDQt9Cw0L/QuNGB0Ywg0LTQvtC70LbQvdCwINGB0L7RgdGC0L7Rj9GC0Ywg0LjQtyDQuNC80LXQvdC4INC60LvQsNGB0YHQsCDQuCDQvNCw0YHRgdC40LLQsCDQtNC+0YHRgtGD0L/QvdGL0YUg0L/QvtC70LXQuSDQtNC70Y8g0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQtdCz0L4g0LrQu9Cw0YHRgdCwLiDQl9Cw0L/QuNGB0Lgg0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINC/0L7Qu9C10Lkg0LTQvtC70LbQvdGLINGB0L7QvtGC0LLQtdGC0YHRgtCy0L7QstCw0YLRjCDRgdGF0LXQvNC1IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQsNGC0YDQuNCx0YPRgiDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0YHQvtGA0YLQuNGA0L7QstC60Lgg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINCw0YLRgNC40LHRg9GCINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDRgdC+0YDRgtC40YDQvtCy0LrQuCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LrQu9C40LXQvdGC0YHQutC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0LDRgtGA0LjQsdGD0YIg0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LTQu9GPINGB0L7RgNGC0LjRgNC+0LLQutC4INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0YDQtdC30YPQu9GM0YLQsNGC0LUg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0Y3RgtC+0Lkg0L7Qv9C10YDQsNGG0LjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC/0L7RgNGP0LTQvtC6INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuINCS0LLQtdGA0YU6INGB0LDQvNGL0Lkg0YHRgtCw0YDRi9C5INGB0LLQtdGA0YXRgy4g0JLQvdC40Lc6INGB0LDQvNGL0Lkg0L/QvtGB0LvQtdC00L3QuNC5INGB0LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC/0L7RgNGP0LTQvtC6INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4g0JLQstC10YDRhTog0YHQsNC80YvQuSDRgdGC0LDRgNGL0Lkg0YHQstC10YDRhdGDLiDQktC90LjQtzog0YHQsNC80YvQuSDQv9C+0YHQu9C10LTQvdC40Lkg0YHQstC10YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQv9C+0YDRj9C00L7QuiDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0L/RgNC4INCy0YvQv9C+0LvQvdC10L3QuNC4INGN0YLQvtC5INC+0L/QtdGA0LDRhtC40LguINCS0LLQtdGA0YU6INGB0LDQvNGL0Lkg0YHRgtCw0YDRi9C5INGB0LLQtdGA0YXRgy4g0JLQvdC40Lc6INGB0LDQvNGL0Lkg0L/QvtGB0LvQtdC00L3QuNC5INGB0LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC+0YLQvtCx0YDQsNC20LDQtdC80YvQtSDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDRgdGC0L7Qu9Cx0YbRiyBDSSDQsiDQvtCx0LfQvtGA0LUg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4INC+0YIg0LrQu9Cw0YHRgdCwIENJLiDQmtCw0LbQtNCw0Y8g0LfQsNC/0LjRgdGMINC00L7Qu9C20L3QsCDRgdC+0YHRgtC+0Y/RgtGMINC40Lcg0LjQvNC10L3QuCDQutC70LDRgdGB0LAg0Lgg0LzQsNGB0YHQuNCy0LAg0LTQvtGB0YLRg9C/0L3Ri9GFINC/0L7Qu9C10Lkg0LTQu9GPINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LXQs9C+INC60LvQsNGB0YHQsC4g0JfQsNC/0LjRgdC4INC00LjQvdCw0LzQuNGH0LXRgdC60LjRhSDQv9C+0LvQtdC5INC00L7Qu9C20L3RiyDRgdC+0L7RgtCy0LXRgtGB0YLQstC+0LLQsNGC0Ywg0YHRhdC10LzQtSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICfQntC/0YDQtdC00LXQu9GP0LXRgiDQs9C70YPQsdC40L3RgyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINC+0YLQvdC+0YjQtdC90LjQuSDQv9C+INGD0LzQvtC70YfQsNC90LjRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9C5INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINCw0YLRgNC40LHRg9GCINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQtNC70Y8g0Y3QutGA0LDQvdCwINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC+0YLQvtCx0YDQsNC20LDQtdC80YvQuSDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQsNGC0YDQuNCx0YPRgiDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LTQu9GPINGN0LrRgNCw0L3QsCDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40LguINCf0YDQuNC80LXRgDogIktleSIg0LTQvtC70LbQvdC+INGB0L7QtNC10YDQttCw0YLRjCDQuNC80Y8g0LTQuNC90LDQvNC40YfQtdGB0LrQvtCz0L4g0L/QvtC70Y8sINCyINC00LDQvdC90L7QvCDRgdC70YPRh9Cw0LUgXCdYXCcsICJDb250ZW50IiDQtNC+0LvQttC90L4g0YHQvtC00LXRgNC20LDRgtGMINC30L3QsNGH0LXQvdC40LUg0LTQuNC90LDQvNC40YfQtdGB0LrQvtCz0L4g0L/QvtC70Y8g0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINGC0LjQv9CwINC00LjQvdCw0LzQuNGH0LXRgdC60L7Qs9C+INC/0L7Qu9GPLCBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnINC4INC40LvQuCBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YPQvNCw0LvRh9C40LLQsNC80YvQuSDQv9C+0LTQvtCx0YrQtdC60YIg0LTQu9GPINC60LvQsNGB0YHQsCBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQtNC+0YHRgtGD0L/QvdGL0LUg0YHRgtC+0LvQsdGG0YsgQ0kg0LIg0L7QsdC30L7RgNC1INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINC60LvQsNGB0YHQsCBDSS4g0JrQsNC20LTQsNGPINC30LDQv9C40YHRjCDQtNC+0LvQttC90LAg0YHQvtGB0YLQvtGP0YLRjCDQuNC3INC40LzQtdC90Lgg0LrQu9Cw0YHRgdCwINC4INC80LDRgdGB0LjQstCwINC00L7RgdGC0YPQv9C90YvRhSDQv9C+0LvQtdC5INC00LvRjyDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidC10LPQviDQutC70LDRgdGB0LAuINCX0LDQv9C40YHQuCDQtNC40L3QsNC80LjRh9C10YHQutC40YUg0L/QvtC70LXQuSDQtNC+0LvQttC90Ysg0YHQvtC+0YLQstC10YLRgdGC0LLQvtCy0LDRgtGMINGB0YXQtdC80LUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINCy0YvRgdC+0YLRgyDQvtC60L3QsCDRgtC10LrRgdGC0L7QstC+0LPQviDRgNC10LTQsNC60YLQvtGA0LAg0L3QsCDRjdGC0L7QvCDRjdC60YDQsNC90LUuINCS0LLQtdC00LjRgtC1INGH0LjRgdC70L4g0L/QuNC60YHQtdC70LXQuSDQuCDQt9C90LDRh9C10L3QuNC1INCyINC/0YDQvtGG0LXQvdGC0LDRhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC60L7Qu9C40YfQtdGB0YLQstC+INGB0YLRgNC+0Log0LTQu9GPINGA0LXQtNCw0LrRgtC+0YDQsCDQvtC/0LjRgdCw0L3QuNC5INCa0JUgKENJKSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNC00LzQuNC90LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQv9C+0YDRj9C00L7QuiDRgdC+0YHRgtC+0Y/QvdC40Lkg0LjQvdGG0LjQtNC10L3RgtC+0LIg0L7RgiDQstGL0YHQvtC60LjRhSAo0L3QsNC/0YDQuNC80LXRgCwg0LrRgNC40YLQuNGH0LXRgdC60LjRhSkg0LTQviDQvdC40LfQutC40YUgKNC90LDQv9GA0LjQvNC10YAsINGE0YPQvdC60YbQuNC+0L3QsNC70YzQvdGL0YUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidC40LUg0YHQvtGB0YLQvtGP0L3QuNGPINGA0LDQt9Cy0LXRgNGC0YvQstCw0L3QuNGPLCDQutC+0LPQtNCwINGB0LLRj9C30LDQvdC90YvQtSDQt9Cw0Y/QstC60Lgg0LzQvtCz0YPRgiDQstC70LjRj9GC0Ywg0L3QsCDRgdGC0LDRgtGD0YEg0JrQlS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LvQuNC80LjRgiDQv9C+0LjRgdC60LAg0L7QsdGK0LXQutGC0L7QsiDQtNC70Y8g0Y3QutGA0LDQvdCwIEFnZW50SVRTTUNvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LvQuNC80LjRgiDQv9C+0LjRgdC60LAg0L7QsdGK0LXQutGC0L7QsiDQtNC70Y8g0Y3QutGA0LDQvdCwIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQv9GA0LXQtNC10Lsg0L/QvtC40YHQutCwINC00LvRjyDRjdC60YDQsNC90LAgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQv9GA0LXQtNC10Lsg0L/QvtC40YHQutCwINC00LvRjyDRjdC60YDQsNC90LAgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0LUg0YHRgtC+0LvQsdGG0Ysg0JrQmCDQsiDQutC+0LzQv9C70LXQutGB0L3QvtC8INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC4INGC0LDQsdC70LjRhtGLINGB0LLRj9C30LXQuSDQtNC70Y8g0LLRgdC10YUg0LrQu9Cw0YHRgdC+0LIg0JrQmC4g0JXRgdC70Lgg0LfQsNC/0LjRgdGMINC+0YLRgdGD0YLRgdGC0LLRg9C10YIsINGC0L4g0L7RgtC+0LHRgNCw0LbQsNGO0YLRgdGPINGB0YLQvtC70LHRhtGLINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC/0LXRgNC10YfQtdC90Ywg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINGB0YLQvtC70LHRhtC+0LIg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINCa0JUg0LIg0YLQsNCx0LvQuNGG0LUg0L/RgNC4INGB0L7Qt9C00LDQvdC40Lgg0YHQstGP0LfQuCwg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINC60LvQsNGB0YHQsC4g0JrQsNC20LTQvtC1INC40LzRjyDQsNGC0YDQuNCx0YPRgtCwINC00L7Qu9C20L3QviDQuNC80LXRgtGMINCyINC60LDRh9C10YHRgtCy0LUg0L/RgNC10YTQuNC60YHQsCAtINC40LzRjyDQutC70LDRgdGB0LAg0Lgg0LTQstCwINC00LLQvtC10YLQvtGH0LjRjyAoaS5lLiBDb21wdXRlcjo6KS4g0JXRgdGC0Ywg0YDRj9C0INCw0YLRgNC40LHRg9GC0L7Qsiwg0L7QsdGJ0LjRhSDQtNC70Y8g0LLRgdC10YUg0LrQu9Cw0YHRgdC+0LIgKNC90LDQv9GA0LjQvNC10YAsINC00LvRjyDQutC70LDRgdGB0LAgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCU0LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINC40L3QtNC40LLQuNC00YPQsNC70YzQvdGL0YUg0LDRgtGA0LjQsdGD0YLQvtCyLCDRgdC/0LXRhtC40YTQuNGH0L3Ri9GFINC00LvRjyDQutC+0L3QutGA0LXRgtC90L7Qs9C+INC60LvQsNGB0YHQsCDQuNC3INC+0L/QuNGB0LDQvdC40Y8g0JrQlSAoQ0ktRGVmaW5pdGlvbiksINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDRgdC70LXQtNGD0Y7RidC40Lkg0YHQuNC90YLQsNC60YHQuNGBICjQvdCw0L/RgNC40LzQtdGALCDQtNC70Y8g0LrQu9Cw0YHRgdCwIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuINCV0YHQu9C4INC90LXRgiDQsNGC0YDQuNCx0YPRgtC+0LIg0LTQu9GPINC60L7QvdC60YDQtdGC0L3QvtCz0L4g0LrQu9Cw0YHRgdCwLCDQvtGC0L7QsdGA0LDQttCw0Y7RgtGB0Y8g0YHRgtC+0LvQsdGG0Ysg0LfQsNC00LDQvdC90YvQtSDQv9Cw0YDQsNC80LXRgtGA0L7QvCBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiwg0LrQsNC60LjQtSDRjdC70LXQvNC10L3RgtGLINC00L7RgdGC0YPQv9C90Ysg0LTQu9GPICLQlNC10LnRgdGC0LLQuNGPIiDQvdCwINGC0YDQtdGC0YzQtdC8INGD0YDQvtCy0L3QtSDRgdGC0YDRg9C60YLRg9GA0YsgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIsINC60LDQutC40LUg0Y3Qu9C10LzQtdC90YLRiyDQtNC+0YHRgtGD0L/QvdGLINC90LAg0L/QtdGA0LLQvtC8INGD0YDQvtCy0L3QtSDRgdGC0YDRg9C60YLRg9GA0YsgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCLCDQutCw0LrQuNC1INGN0LvQtdC80LXQvdGC0Ysg0LTQvtGB0YLRg9C/0L3RiyDQvdCwINCy0YLQvtGA0L7QvCDRg9GA0L7QstC90LUg0YHRgtGA0YPQutGC0YPRgNGLIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiwg0LrQsNC60L7QuSDRgtC40L8g0YHQstGP0LfQuCAo0L3QsNC30LLQsNC90L3Ri9C5INGBINGC0L7Rh9C60Lgg0LfRgNC10L3QuNGPINC30LDRj9Cy0LrQuCkg0LzQvtC20LXRgiDQv9C+0LLQu9C40Y/RgtGMINC90LAg0YHRgtCw0YLRg9GBINGB0LLRj9C30LDQvdC90L7QuSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCLCDQutCw0LrQvtC5INGC0LjQvyDQt9Cw0Y/QstC60Lgg0LzQvtC20LXRgiDQv9C+0LLQu9C40Y/RgtGMINC90LAg0YHRgtCw0YLRg9GBINGB0LLRj9C30LDQvdC90L7QuSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ9Ce0LHQvdC+0LLQu9C10L3QuNC1INC+0L/RgNC10LTQtdC70LXQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9Cj0LTQsNC70LjRgtGMINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Rg9GOINC10LTQuNC90LjRhtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn0KbQstC10YIg0YHQvtGB0YLQvtGP0L3QuNGPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfQoNC10LfQtdGA0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0YHQvtCx0YvRgtC40Lkg0LTQuNC90LDQvNC40YfQtdGB0LrQuNGFINC/0L7Qu9C10LksINC60L7RgtC+0YDRi9C5INC/0L7QvNC10YfQsNC10YIg0L7Qv9GA0LXQtNC10LvQtdC90LjRjyDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC60LDQuiDRgNCw0YHRgdC40L3RhdGA0L7QvdC40LfQuNGA0L7QstCw0L3QvdGL0LUsINC10YHQu9C4INGB0L7QtNC10YDQttCw0YnQuNC10YHRjyDQsiDQvdC40YUg0LTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPINC40LfQvNC10L3Rj9GO0YLRgdGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC1INC/0L7Qu9GPLCDQv9C+0LrQsNC30LDQvdC90YvQtSDQvdCwINC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdC+0Lwg0Y3QutGA0LDQvdC1INC/0L7Qu9GPIElUU00g0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C10YHQutC40LUg0L/QvtC70Y8sINC+0YLQvtCx0YDQsNC20LDQtdC80YvQtSDQvdCwINGN0LrRgNCw0L3QtSDQvtCx0LfQvtGA0LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LXRgdC60LjQtSDQv9C+0LvRjywg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9C1INC90LAg0Y3QutGA0LDQvdC1INC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9Cw0LXRgiDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC80LDRgdGB0L7QstGL0YUg0LTQtdC50YHRgtCy0LjQuSDRgSDQmtCVINC00LvRjyDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQvdC10YHQutC+0LvRjNC60LjQvNC4INCa0JUg0L7QtNC90L7QstGA0LXQvNC10L3QvdC+Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9Cw0LXRgiDQstC+0LfQvNC+0LbQvdC+0YHRgtGMINC80LDRgdGB0L7QstGL0YUg0LTQtdC50YHRgtCy0LjQuSDRgSDQmtCVINGC0L7Qu9GM0LrQviDQtNC70Y8g0L/QtdGA0LXRh9C40YHQu9C10L3QvdGL0YUg0LPRgNGD0L/Qvy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9Cw0LXRgi/QstGL0LrQu9GO0YfQsNC10YIg0YTRg9C90LrRhtC40Y4g0L/RgNC+0LLQtdGA0LrQuCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4IElUU00g0L3QsCDQvdCw0LvQuNGH0LjQtSDRg9C90LjQutCw0LvRjNC90YvRhSDQuNC80LXQvS4g0J/QtdGA0LXQtCDQstC60LvRjtGH0LXQvdC40LXQvCDRjdGC0L7QuSDQvtC/0YbQuNC4INC90LXQvtCx0YXQvtC00LjQvNC+INC/0YDQvtCy0LXRgNC40YLRjCDRgdC40YHRgtC10LzRgyDQvdCwINC90LDQu9C40YfQuNC1INGD0LbQtSDRgdGD0YnQtdGB0YLQstGD0Y7RidC40YUg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDRgSDQtNGD0LHQu9C40YDRg9GO0YnQuNC80LjRgdGPINC40LzQtdC90LDQvNC4LiDQrdGC0L4g0LzQvtC20L3QviDRgdC00LXQu9Cw0YLRjCDRgSDQv9C+0LzQvtGJ0YzRjiDQutC+0L3RgdC+0LvRjNC90L7QuSDQutC+0LzQsNC90LTRiyBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0LvRjCDRg9GB0YLQsNC90L7QstC60Lgg0YHRgtCw0YLRg9GB0LAg0JrQlSDQtNC70Y8g0YHQstGP0LfQsNC90L3QvtC5INGBINC90LXQuSDQt9Cw0Y/QstC60LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ9Cf0L7Qu9GPINC40L3QtNC10LrRgdCwINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LCDQuNGB0L/QvtC70YzQt9GD0LXQvNGL0LUg0LTQu9GPINC/0L7Qu9C90L7RgtC10LrRgdGC0L7QstC+0LPQviDQv9C+0LjRgdC60LAuINCf0L7Qu9GPINGC0LDQutC20LUg0YHQvtGF0YDQsNC90Y/RjtGC0YHRjywg0L3QviDQvdC1INGP0LLQu9GP0Y7RgtGB0Y8g0L7QsdGP0LfQsNGC0LXQu9GM0L3Ri9C80Lgg0LTQu9GPINC+0LHRidC10Lkg0YTRg9C90LrRhtC40L7QvdCw0LvRjNC90L7RgdGC0LguINCS0LrQu9GO0YfQtdC90LjQtSDQstC70L7QttC10L3QuNC5INC80L7QttC90L4g0L7RgtC60LvRjtGH0LjRgtGMLCDRg9GB0YLQsNC90L7QstC40LIg0LTQu9GPINC30LDQv9C40YHQuCDQt9C90LDRh9C10L3QuNC1IDAg0LjQu9C4INGD0LTQsNC70LjQsiDQtdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAn0J/QvtC70Y8sINGF0YDQsNC90Y/RidC40LXRgdGPINCyINC40L3QtNC10LrRgdC1INGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LCDQutC+0YLQvtGA0YvQtSDQuNGB0L/QvtC70YzQt9GD0Y7RgtGB0Y8g0L3QtSDRgtC+0LvRjNC60L4g0LTQu9GPINC/0L7Qu9C90L7RgtC10LrRgdGC0L7QstC+0LPQviDQv9C+0LjRgdC60LAuINCU0LvRjyDQv9C+0LvQvdC+0Lkg0YTRg9C90LrRhtC40L7QvdCw0LvRjNC90L7RgdGC0Lgg0LLRgdC1INC/0L7Qu9GPINGP0LLQu9GP0Y7RgtGB0Y8g0L7QsdGP0LfQsNGC0LXQu9GM0L3Ri9C80LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAn0JTQu9GPINC60LDQttC00L7Qs9C+INCy0LXQsS3RgdC10YDQstC40YHQsCAo0LrQu9GO0YcpINC80L7QttC10YIg0LHRi9GC0Ywg0L7Qv9GA0LXQtNC10LvQtdC9INC80LDRgdGB0LjQsiDQutC70LDRgdGB0L7QsiAo0LfQvdCw0YfQtdC90LjQtSksINC00LvRjyDQutC+0YLQvtGA0YvRhSDQuNC80L/QvtGA0YIg0L7Qs9GA0LDQvdC40YfQtdC9LiDQlNC70Y8g0LLRgdC10YUg0LLRi9Cx0YDQsNC90L3Ri9GFINC60LvQsNGB0YHQvtCyINC40LvQuCDQtNC70Y8g0LLRgdC10YUg0YHRg9GJ0LXRgdGC0LLRg9GO0YnQuNGFINC60LvQsNGB0YHQvtCyINCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQuNC90LLQvtC60LXRgNCwINC90LXQvtCx0YXQvtC00LjQvNC+INCx0YPQtNC10YIg0LLRi9Cx0YDQsNGC0Ywg0LjQtNC10L3RgtC40YTQuNGG0LjRgNGD0Y7RidC40LUg0LDRgtGA0LjQsdGD0YLRiy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRjyDQvNC+0LTRg9C70Y8gR2VuZXJpY0ludGVyZmFjZSDQtNC70Y8g0YPRgNC+0LLQvdGPINC40L3QstC+0LrQtdGA0LAgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LDRhtC40Y8g0LzQvtC00YPQu9GPIEdlbmVyaWNJbnRlcmZhY2Ug0LTQu9GPINGD0YDQvtCy0L3RjyDQuNC90LLQvtC60LXRgNCwIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRjyDQvNC+0LTRg9C70Y8gR2VuZXJpY0ludGVyZmFjZSDQtNC70Y8g0YPRgNC+0LLQvdGPINC40L3QstC+0LrQtdGA0LAgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICfQntCx0LfQvtGAINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Ri9GFINC10LTQuNC90LjRhiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9Cw0LXRgiDRgdC+0YHRgtC+0Y/QvdC40Y8g0YDQsNC30LLQtdGA0YLRi9Cy0LDQvdC40Y8g0LIg0L/QvtC40YHQuiDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9Cw0LXRgiDRgdC+0YHRgtC+0Y/QvdC40Y8g0LjQvdGG0LjQtNC10L3RgtCwINCyINC/0L7QuNGB0Log0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LCDQutC+0YLQvtGA0YvQtSDQsdGD0LTRg9GCINC+0YLQvtCx0YDQsNC20LDRgtGM0YHRjyDQsiDRgNC10LfRg9C70YzRgtCw0YLQtSDRjdGC0L7QuSDQvtC/0LXRgNCw0YbQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ9Cc0L7QtNGD0LvRjCDQtNC70Y8g0L/RgNC+0LLQtdGA0LrQuCDQs9GA0YPQv9C/0Ysg0L7RgtCy0LXRgtGB0YLQstC10L3QvdC+0Lkg0LfQsCDQutC70LDRgdGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAn0JzQvtC00YPQu9GMINC00LvRjyDQv9GA0L7QstC10YDQutC4INCz0YDRg9C/0L/RiyDQvtGC0LLQtdGC0YHRgtCy0LXQvdC90L7QuSDQt9CwINCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfQnNC+0LTRg9C70Ywg0YTQvtGA0LzQuNGA0L7QstCw0L3QuNGPINGB0YLQsNGC0LjRgdGC0LjQutC4INC/0L4g0JrQlS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICfQnNC+0LTRg9C70Ywg0LjQvNC10L3QuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAn0J3QvtC80LXRgNC90L7QuSDQvNC+0LTRg9C70YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC70LjRh9C10YHRgtCy0L4g0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCwg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINC90LAg0LrQsNC20LTQvtC5INGB0YLRgNCw0L3QuNGG0LUg0YDQtdC30YPQu9GM0YLQsNGC0L7QsiDQv9C+0LjRgdC60LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQmtC+0LvQuNGH0LXRgdGC0LLQviDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L3QsCDQutCw0LbQtNC+0Lkg0YHRgtGA0LDQvdC40YbQtSDRgNC10LfRg9C70YzRgtCw0YLQvtCyINC/0L7QuNGB0LrQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICfQntCx0YrQtdC60YLRiyDQtNC70Y8g0L/QvtC40YHQutCwLCDQutC+0LvQuNGH0LXRgdGC0LLQviDQt9Cw0L/QuNGB0LXQuSDQuCDQsNGC0YDQuNCx0YPRgtGLINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPLiDQkNGC0YDQuNCx0YPRgtGLIENvbmZpZ0l0ZW0g0LTQvtC70LbQvdGLINCx0YvRgtGMINGP0LLQvdC+INGB0L7RhdGA0LDQvdC10L3RiyDRh9C10YDQtdC3IEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ9Ce0LHQt9C+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0LrQsNGC0LXQs9C+0YDQuNC5INC60LvQsNGB0YHQvtCyINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Lgg0L/RgNC10LTQv9C+0YfRgtC10L3QuNC5INC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINGE0LjQu9GM0YLRgNC+0LIg0YHRgtC+0LvQsdGG0L7QsiDQvtCx0LfQvtGA0LAg0Y3Qu9C10LzQtdC90YLQvtCyINC80LDQu9C+0Lkg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LiDQntCx0YDQsNGC0LjRgtC1INCy0L3QuNC80LDQvdC40LU6INC/0YDQuCDRg9GB0YLQsNC90L7QstC60LUg0LfQvdCw0YfQtdC90LjRjyBcJ0FjdGl2ZVwnINCyIDAg0LDQs9C10L3RgtGLINC90LUg0YHQvNC+0LPRg9GCINGA0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINC90LDRgdGC0YDQvtC50LrQuCDRjdGC0L7QuSDQs9GA0YPQv9C/0Ysg0LIg0YHQstC+0LjRhSDQu9C40YfQvdGL0YUg0L/RgNC10LTQv9C+0YfRgtC10L3QuNGP0YUsINC90L4g0LDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YDRiyDRgdC80L7Qs9GD0YIg0YDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0L3QsNGB0YLRgNC+0LnQutC4INC+0YIg0LjQvNC10L3QuCDQtNGA0YPQs9C+0LPQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uINCY0YHQv9C+0LvRjNC30YPQudGC0LUgXCdQcmVmZXJlbmNlR3JvdXBcJyDQtNC70Y8g0YPQv9GA0LDQstC70LXQvdC40Y8g0YLQtdC8LCDQsiDQutCw0LrQvtC5INC+0LHQu9Cw0YHRgtC4INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNGB0LrQvtCz0L4g0LjQvdGC0LXRgNGE0LXQudGB0LAg0LTQvtC70LbQvdGLINC+0YLQvtCx0YDQsNC20LDRgtGM0YHRjyDRjdGC0Lgg0L3QsNGB0YLRgNC+0LnQutC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDRhtCy0LXRgtC+0LIg0L7QsdC+0LfQvdCw0YfQsNGO0YnQuNGFINGB0L7RgdGC0L7Rj9C90LjRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQmtCVINCyINC90LDRgdGC0YDQvtC50LrQsNGFINC+0LHQt9C+0YDQvtCyINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINGB0L7RgdGC0L7Rj9C90LjQuSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQmtCVINCyINC90LDRgdGC0YDQvtC50LrQsNGFINC+0LHQt9C+0YDQvtCyINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDQv9GA0LjQvNC10YDQvdGL0YUg0LPRgNGD0L/Qv9C+0LLRi9GFINC/0YDQsNCyINC00LvRjyDQsNGC0YDQuNCx0YPRgtC+0LIg0J7QsdGJ0LXQs9C+INC60LDRgtCw0LvQvtCz0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LzQvtC00YPQu9GPINC40LzQtdC90Lgg0LTQu9GPINC60LvQsNGB0YHQvtCyINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Lgg0L/RgNC10LTQv9C+0YfRgtC10L3QuNC5INC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0LzQvtC00YPQu9GPINC60L7Qu9C40YfQtdGB0YLQstCwINC60LvQsNGB0YHQvtCyINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Lgg0L/RgNC10LTQv9C+0YfRgtC10L3QuNC5INC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINGB0YLRgNCw0L3QuNGGICjQvdCwINC60L7RgtC+0YDRi9GFINC+0YLQvtCx0YDQsNC20LDRjtGC0YHRjyDQmtCVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LzQvtC00YPQu9GPINGB0YLRgNC+0LrQuCDQstC10YDRgdC40Lgg0LTQu9GPINC60LvQsNGB0YHQvtCyINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0L/RgNC10LTRgdGC0LDQstC70LXQvdC40Lgg0L/RgNC10LTQv9C+0YfRgtC10L3QuNC5INC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LzQvtC00YPQu9GPINC40L3RgdGC0YDRg9C80LXQvdGC0LDRgNC40Y8g0YjQsNCx0LvQvtC90LAg0YHRgtGA0L7QutC4INCy0LXRgNGB0LjQuCDQtNC70Y8g0LrQu9Cw0YHRgdC+0LIg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQuCDQv9GA0LXQtNC/0L7Rh9GC0LXQvdC40Lkg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINGC0YDQuNCz0LPQtdGA0LAg0LLQtdGA0YHQuNC4INC00LvRjyDQutC70LDRgdGB0L7QsiDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNC4INC/0YDQtdC00L/QvtGH0YLQtdC90LjQuSDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAn0JLRi9C/0L7Qu9C90Y/QtdGCINC30LDQtNCw0L3QvdC+0LUg0LTQtdC50YHRgtCy0LjQtSDQtNC70Y8g0LrQsNC20LTQvtCz0L4g0YHQvtCx0YvRgtC40Y8gKNC60LDQuiBJbnZva2VyKSDQtNC70Y8g0LrQsNC20LTQvtCz0L4g0L3QsNGB0YLRgNC+0LXQvdC90L7Qs9C+IFdlYnNlcnZpY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfQk9GA0YPQv9C/0LAg0YDQsNC30YDQtdGI0LXQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80YvQtSDRgNCw0LfRgNC10YjQtdC90LjRjyDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0LTQtdC50YHRgtCy0LjRjyDQv9GA0LjQutGA0LXQv9C70LXQvdC40Y8g0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40LggSVRTTSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQotGA0LXQsdGD0LXQvNGL0LUg0L/RgNCw0LLQsCDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0L7QsdC30L7RgNCwINCa0JUg0LIgQ01EQiDQsNCz0LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ci0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQv9C+0LjRgdC60LAg0LIgQ01EQiDQsNCz0LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNGL0LUg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LTQu9GPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINGN0LrRgNCw0L3QsCDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCBJVFNNINCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNGL0LUg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LTQu9GPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINGN0LrRgNCw0L3QsCDQv9GA0L7RgdC80L7RgtGA0LAg0LTQtdGA0LXQstCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LggSVRTTSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ci0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQv9C+0LvQvdC+0LPQviDQv9GA0L7RgdC80L7RgtGA0LAg0JrQlSAoem9vbSB2aWV3KSDQsiBDTURCINCw0LPQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC00L7QsdCw0LLQu9C10L3QuNGPINCa0JUg0LIgQ01EQiDQsNCz0LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzRi9C1INGA0LDQt9GA0LXRiNC10L3QuNGPINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDRjdC60YDQsNC90LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCBJVFNNINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8g0YHQvtC00LXRgNC20LjQvNC+0LPQviDQmtCVINCyIENNREIg0LDQs9C10L3RgtC+0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC/0YDQvtGB0LzQvtGC0YDQsCDQuNGB0YLQvtGA0LjQuCDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+INCa0JUg0LIgQ01EQiDQsNCz0LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC/0LXRh9Cw0YLQuCDRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQuiDQmtCVINCyIENNREIg0LDQs9C10L3RgtC+0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ9Cd0LXQvtCx0YXQvtC00LjQvNGLINC/0YDQsNCy0LAg0LTQu9GPINGD0LTQsNC70LXQvdC40Y8g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0YUg0LXQtNC40L3QuNGGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ9Cf0L7QuNGB0Log0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0YUg0LXQtNC40L3QuNGGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAn0KPRgdGC0LDQvdC+0LLQuNGC0Ywg0YHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCDQmtCVINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC4LCDQutC+0LPQtNCwINC30LDRj9Cy0LrQsCDRgdCy0Y/Qt9Cw0L3QsCDRgSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgdC+0YHRgtC+0Y/QvdC40LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0L3QsCDRjdC60YDQsNC90LUg0LzQsNGB0YHQvtCy0YvRhSDQtNC10LnRgdGC0LLQuNC5INGBINCa0JUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCDQvdCwINGN0LrRgNCw0L3QtSDQvNCw0YHRgdC+0LLRi9GFINC00LXQudGB0YLQstC40Lkg0YEg0JrQlSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQodCy0Y/Qt9Cw0YLRjCAoTGluaykg0LTQu9GPINC+0YDQs9Cw0L3QuNC30LDRhtC40Lgg0YHQstGP0LfQuCDQmtCVINGBINC00YDRg9Cz0LjQvCDQvtCx0YrQtdC60YLQvtC8INC90LAg0Y3QutGA0LDQvdC1INC/0L7Qu9C90L7Qs9C+ICh6b29tIHZpZXcpINC/0YDQvtGB0LzQvtGC0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0LTQu9GPINC00L7RgdGC0YPQv9CwINC6INC40YHRgtC+0YDQuNC4INCa0JUg0L/RgNC4INC/0YDQvtGB0LzQvtGC0YDQtSDQmtCVINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQmNGB0YLQvtGA0LjRjyDQtNC70Y8g0L/RgNC+0YHQvNC+0YLRgNCwINC40YHRgtC+0YDQuNC4INCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINC00LvRjyDRg9C00LDQu9C10L3QuNGPINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QvtC5INC10LTQuNC90LjRhtGLINC/0YDQuCDQv9C+0LTRgNC+0LHQvdC+0Lwg0L/RgNC+0YHQvNC+0YLRgNC1INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ9Cj0LrQsNC30YvQstCw0LXRgiDRgdGB0YvQu9C60YMg0LIg0LzQtdC90Y4g0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0YHRgdGL0LvQvtC6INC90LAg0Y3Qu9C10LzQtdC90YLRiyDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LLQuNC00LUg0LTRgNC10LLQvtCy0LjQtNC90L7Qs9C+INC/0YDQtdC00YHRgtCw0LLQu9C10L3QuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0JTRg9Cx0LvQuNGA0L7QstCw0YLRjCDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDQvdC+0LLQvtC5INCa0JUg0L/Rg9GC0LXQvCDQutC+0L/QuNGA0L7QstCw0L3QuNGPINGF0LDRgNCw0LrRgtC10YDQuNGB0YLQuNC6INGC0LXQutGD0YnQtdC5INCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQlNGD0LHQu9C40YDQvtCy0LDRgtGMINC00LvRjyDRgdC+0LfQtNCw0L3QuNGPINC90L7QstC+0Lkg0JrQlSDQv9GD0YLQtdC8INC60L7Qv9C40YDQvtCy0LDQvdC40Y8g0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40Log0YLQtdC60YPRidC10Lkg0JrQlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQtNC70Y8g0LjQt9C80LXQvdC10L3QuNGPINGF0LDRgNCw0LrRgtC10YDQuNGB0YLQuNC6INCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0J3QsNC30LDQtCDQv9GA0Lgg0L/QvtC00YDQvtCx0L3QvtC8INC/0YDQvtGB0LzQvtGC0YDQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YvRhSDQtdC00LjQvdC40YYg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0J/QtdGH0LDRgtGMINC00LvRjyDQv9C10YfQsNGC0Lgg0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40Log0JrQlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0LTQu9GPINC/0L7QtNGA0L7QsdC90L7Qs9C+INC/0YDQvtGB0LzQvtGC0YDQsCDQmtCVINC/0YDQuCDQvtCx0LfQvtGA0LUg0JrQlSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0Lcg0LjRgdGC0L7RgNC40Lgg0YHQvtC00LXRgNC20LjQvNC+0LPQviDQmtCVICjQv9C+0YDRj9C00L7QuiDQv9C+0LrQsNC30LApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ9Ca0LDRgtC10LPQvtGA0LjRjyDQv9C+INGD0LzQvtC70YfQsNC90LjRjiwg0LrQvtGC0L7RgNCw0Y8g0L7RgtC+0LHRgNCw0LbQsNC10YLRgdGPLCDQtdGB0LvQuCDQvdC1INCy0YvQsdGA0LDQvdCwINC90Lgg0L7QtNC90LAg0LjQtyDQvdC40YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCAo0L/RgNC10YTQuNC60YEpINC6INC90L7QvNC10YDRgyDQmtCVLCDRgi7QtSDQmtCVX+KEliwg0JrQlSMsINCj0YfQtdGC0L3Ri9C5X9GN0LvQtdC80LXQvdGCX+KEli4g0J/QviDRg9C80L7Qu9GH0LDQvdC40Y4gLSBDb25maWdJdGVtIyAo0LjQu9C4INC10LPQviDQv9C10YDQtdCy0L7QtCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAn0JDQstGC0L7QvNCw0YLQuNGH0LXRgdC60Lgg0LfQsNC/0YPRgdC60LDQtdGCINC40L3QstC+0LrQtdGAIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ9CS0LXRgNGB0LjRjyDQodGC0YDQvtC60L7QstC+0LUg0LLRi9GA0LDQttC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ9Cc0L7QtNGD0LvRjCDRgdGC0YDQvtC6INCy0LXRgNGB0LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICfQotGA0LjQs9Cz0LXRgCDQstC10YDRgdC40LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ9Cc0L7QttC90L4g0LvQuCDQuNC30LHQtdC20LDRgtGMINCy0YvQv9C+0LvQvdC10L3QuNGPIENvbmZpZ0l0ZW1BQ0wsINC/0YDQvtCy0LXRgNGP0Y8g0LrRjdGI0LjRgNC+0LLQsNC90L3Ri9C1INC30LDQstC40YHQuNC80L7RgdGC0Lgg0L/QvtC70LXQuS4g0K3RgtC+INC80L7QttC10YIg0YPQu9GD0YfRiNC40YLRjCDQstGA0LXQvNGPINC30LDQs9GA0YPQt9C60Lgg0YTQvtGA0LzRg9C70Y/RgNC+0LIsINC90L4g0LTQvtC70LbQvdC+INCx0YvRgtGMINC+0YLQutC70Y7Rh9C10L3Qviwg0LXRgdC70LggQUNMTS3QvNC+0LTRg9C70Lgg0LHRg9C00YPRgiDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0YzRgdGPINC00LvRjyBJVFNNQ29uZmlnSXRlbS0g0LggRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ9Ca0LDQutCw0Y8g0L7QsdGJ0LDRjyDQuNC90YTQvtGA0LzQsNGG0LjRjyDQvtGC0L7QsdGA0LDQttCw0LXRgtGB0Y8g0LIg0LfQsNCz0L7Qu9C+0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ9C60LvQsNGB0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn0LPQu9C+0LHQsNC70YzQvdGL0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICfQv9C+0YHRgtC/0YDQvtC00YPQutGC0LjQstC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAn0L/RgNC10LTQv9GA0L7QtNGD0LrRgtC40LLQvdGL0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ9C/0YDQvtC00YPQutGC0LjQstC90YvQuSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSDQtNGO0LnQvNC+0LIgKDQ0LDQ1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxINC00Y7QudC8ICg1MywzNCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSDQtNGO0LnQvNCwICg2Niw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUg0LTRjtC50LzQsCAoODAsMDEg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkt0LTRjtC50LzQvtCy0LDRjyDRgdGC0L7QudC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1INC00Y7QudC80LAgKDQsNDUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSDQtNGO0LnQvNC+0LIgKDg4LDkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEt0LTRjtC50LzQvtCy0LDRjyDRgdGC0L7QudC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1INC00Y7QudC80L7QsiAoOTcsNzkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMt0LTRjtC50LzQvtCy0LDRjyDRgdGC0L7QudC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2INC00Y7QudC80LAgKDYwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIg0LTRjtC50LzQsCAoMTA2LDY4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSDQtNGO0LnQvNCwICgxMjAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSDQtNGO0LnQvNCwICg4LDg5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUg0LTRjtC50LzQsCAoMTMzLDM1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSDQtNGO0LnQvNCwICg4MDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1INC00Y7QudC80LAgKDE0Niw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQg0LTRjtC50LzQsCAoOTAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyDQtNGO0LnQvNCwICgxNjAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCDQtNGO0LnQvNCwICgxMDAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSDQtNGO0LnQvNCwICgxNzMsMzUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSDQtNGO0LnQvNCwICgxMywzNCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1INC00Y7QudC80LAgKDE4Niw2OSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyDQtNGO0LnQvNCwICgxMTAwINC80LwpOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUg0LTRjtC50LzQsCAoMjAwLDAyINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIg0LTRjtC50LzQsCAoMTIwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQg0LTRjtC50LzQsCAoMjEzLDM2INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcg0LTRjtC50LzQvtCyICgxNyw3OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1INC00Y7QudC80LAgKDIyLDIzINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLDUg0LTRjtC50LzQvtCyICgyNiw2NyDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUg0LTRjtC50LzQsCAoMzEsMTIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0INC00Y7QudC80L7QsiAoMzUsNTYg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1INC00Y7QudC80LAgKDQwLDAxINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAn0JHRg9GF0LPQsNC70YLQtdGA0YHQutC40Lkg0YPRh9C10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICfQoNCw0YHQv9GA0LXQtNC10LvQtdC90LjQtSDQsNC00YDQtdGB0L7Qsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn0JDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAn0JDQvdCw0LvQvtCz0L7QstGL0Lkg0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICfQotC40L8g0L/RgNC40LHQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICfQldC80LrQvtGB0YLRjCDQsNC60LrRg9C80YPQu9GP0YLQvtGA0LAgKNCQ0YcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ9Ci0LjQvyDQsdCw0YLQsNGA0LXQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ9CX0LTQsNC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn0JjQvdGC0LXRgNGE0LXQudGBINGI0LjQvdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICfQptCf0KMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAn0JrQu9Cw0YHRgSDQv9GA0L7RhtC10YHRgdC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAn0JXQvNC60L7RgdGC0YwgKNCT0JEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn0JXQvNC60L7RgdGC0Ywg0L3QsCDQvtC00L3RgyDQstC40LTQtdC+0LrQsNGA0YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0LrQsNGA0YLRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ9Cj0YHRgtGA0L7QudGB0YLQstC+INC00LvRjyDRh9GC0LXQvdC40Y8g0LrQsNGA0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAn0KLQuNC/INC60LDRgNGC0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNC40LrQsNGC0Ysg0LrQu9C40LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAn0JrQu9C40LXQvdGC0YHQutC+0LUg0L/RgNC+0LPRgNCw0LzQvNC90L7QtSDQvtCx0LXRgdC/0LXRh9C10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ9Ca0LDRgtC10LPQvtGA0LjRjyDQutC70LjQtdC90YLQvtCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ9Cn0LDRgdC+0LLQvtC5INC/0L7Rj9GBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdDbG9ja3NwZWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfQodC10YDRgtC40YTQuNC60LDRgtGLINC/0L7QtNC/0LjRgdC4INC60L7QtNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICfQmtC+0L3RhNC10YDQtdC90YYt0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICfQodC+0LPQu9Cw0YjQtdC90LjQtSDQviDQutC+0L3RgdGD0LvRjNGC0LjRgNC+0LLQsNC90LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAn0KHQstGP0LfQsNGC0YzRgdGPINGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfQodCy0Y/Qt9Cw0YLRjNGB0Y8g0YEg0LTQuNGB0YLRgNC40LHRjNGO0YLQvtGA0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC60L7QvdGC0LXQudC90LXRgNCw0LzQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ9Ca0L7QvdGC0YDQsNC60YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ9Ci0LjQvyDQutC+0L3RgtGA0LDQutGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICfQodGA0L7QuiDQtNC10LnRgdGC0LLQuNGPINC60L7QvdGC0YDQsNC60YLQsCDRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICfQodGA0L7QuiDQtNC10LnRgdGC0LLQuNGPINC60L7QvdGC0YDQsNC60YLQsCDQtNC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ9CR0LXRgdC/0YDQvtCy0L7QtNC90L7QuSDRgtC10LvQtdGE0L7QvSAoREVDVCBQaG9uZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAn0JXQtNC40L3QuNGG0LAg0LjQt9C80LXRgNC10L3QuNGPINGB0YLQvtC40LzQvtGB0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC70LjRhtC10L3Qt9C40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ9CU0LDRgtCwINGB0L7Qt9C00LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ9CY0L3QtNC40LLQuNC00YPQsNC70YzQvdCw0Y8g0YHRgtC+0LnQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQINCX0LDRgNC10LfQtdGA0LLQuNGA0L7QstCw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLdGB0LXRgNCy0LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn0JTQsNGC0LAg0YHRh9C10YLQsC3RhNCw0LrRgtGD0YDRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAn0JTQsNGC0LAg0LfQsNC60LDQt9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICfQlNCw0YLQsCDQstGL0LTQsNGH0Lgg0LPQsNGA0LDQvdGC0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICfQlNCw0YLQsCDQstGL0YXQvtC00LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ9Cd0LDRgdGC0L7Qu9GM0L3Ri9C5INCf0JonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNC40LrQsNGC0Ysg0L/QvtC00L/QuNGB0Lgg0LTQvtC60YPQvNC10L3RgtC+0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICfQodGC0L7QudC60LAgRVRTSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAn0KHQtdGA0YLQuNGE0LjQutCw0YLRiyDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0YsgKNGB0LXRgNGC0LjRhNC40LrQsNGC0YsgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICfQotGA0YPQtNC+0LLQvtC5INC00L7Qs9C+0LLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAn0JrQvtC90LXRh9C90YvQuSBJUC3QsNC00YDQtdGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAn0J7QutC+0L3Rh9Cw0L3QuNC1INC/0L7QtNC00LXRgNC20LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ9CU0LDRgtCwINC40YHRgtC10YfQtdC90LjRjyDRgdGA0L7QutCwINC00LXQudGB0YLQstC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ9CS0L3QtdGI0L3QuNC5INC20LXRgdGC0LrQuNC5INC00LjRgdC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAn0JHRgNCw0L3QtNC80LDRg9GN0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICfQn9GA0L7RiNC40LLQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAn0J3QsNC60L7Qv9C40YLQtdC70Lgg0Y3QvdC10YDQs9C40Lgg0L3QsCDQvNCw0YXQvtCy0LjQutCw0YUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICfQpNC+0YDQvC3RhNCw0LrRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLQvtGAINGE0YDQsNC90YjQuNC30YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICfQkdC10YHQv9C70LDRgtC90L7QtSDQn9CeJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ9Ce0LHRidCw0Y8g0LjQvdGE0L7RgNC80LDRhtC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICfQk9GA0LDRhNC40YfQtdGB0LrQuNC1INC60LDRgNGC0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ9CT0YDQsNGE0LjRh9C10YHQutCw0Y8g0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ9CQ0L/Qv9Cw0YDQsNGC0L3QvtC1INC+0LHQtdGB0L/QtdGH0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICfQnNC+0LTQtdC70Ywg0L7QsdC+0YDRg9C00L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ9CS0LXRgSDQvtCx0L7RgNGD0LTQvtCy0LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ9CT0LDRgNC90LjRgtGD0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ9Cf0YDQvtGC0L7QutC+0LsgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0LjQtNC10L3RgtC40YTQuNC60LDRhtC40LXQuSDQuCDQtNC+0YHRgtGD0L/QvtC8IChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICfQmNC90LLQtdC90YLQsNGA0L3Ri9C5INC90L7QvNC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICfQmNC90LLQtdGA0YHQuNC+0L3QvdGL0LUg0YDQsNGB0YXQvtC00YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfQndC+0LzQtdGAINGB0YfQtdGC0LAt0YTQsNC60YLRg9GA0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfQmtC70LDQstC40LDRgtGD0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICfQltCaLdC80L7QvdC40YLQvtGAICjQttC40LTQutC+0LrRgNC40YHRgtCw0LvQu9C40YfQtdGB0LrQuNC5INC00LjRgdC/0LvQtdC5KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAn0KHQstC10YLQvtC00LjQvtC00L3Ri9C5INC80L7QvdC40YLQvtGAICjRgdCy0LXRgtC+0LjQt9C70YPRh9Cw0Y7RidC40Lkg0LTQuNC+0LQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ9Ch0YLQsNGG0LjQvtC90LDRgNC90YvQuSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfQndC+0YPRgtCx0YPQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ9Co0LjRgNC+0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ9Cj0YDQvtCy0LXQvdGMIDE6INGE0LjQt9C40YfQtdGB0LrQuNC5INGD0YDQvtCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ9Cj0YDQvtCy0LXQvdGMIDI6INGD0YDQvtCy0LXQvdGMINC/0LXRgNC10LTQsNGH0Lgg0LTQsNC90L3Ri9GFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCAzOiDRgdC10YLQtdCy0L7QuSDRg9GA0L7QstC10L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICfQo9GA0L7QstC10L3RjCAzOiDRgdC10YLQtdCy0L7QuSDRg9GA0L7QstC10L3RjCAo0KHRg9C/0LXRgNGB0LXRgtGMKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCA0OiDQotGA0LDQvdGB0L/QvtGA0YLQvdGL0Lkg0YPRgNC+0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ9Cj0YDQvtCy0LXQvdGMIDU6INGB0LXQsNC90YHQvtCy0YvQuSDRg9GA0L7QstC10L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCA2OiDRg9GA0L7QstC10L3RjCDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ9Cj0YDQvtCy0LXQvdGMIDc6INCf0YDQuNC60LvQsNC00L3QvtC5INGD0YDQvtCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLQvtGAINCw0YDQtdC90LTRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ9Cb0LjRhtC10L3Qt9C40L7QvdC90L7QtSDRgdC+0LPQu9Cw0YjQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAn0JvQuNGG0LXQvdC30LjQvtC90L3Ri9C5INC60LvRjtGHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ9Ci0LjQvyDQu9C40YbQtdC90LfQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICfQodGA0L7QuiDQtNC10LnRgdGC0LLQuNGPINC70LjRhtC10L3Qt9C40Lgg0L7Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ9Ch0YDQvtC6INC00LXQudGB0YLQstC40Y8g0LvQuNGG0LXQvdC30LjQuCDQtNC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICfQm9C40YLQuNC5LdC20LXQu9C10LfQvi3RhNC+0YHRhNCw0YLQvdCw0Y8gKExpRmVQTzQpINCx0LDRgtCw0YDQtdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICfQm9C40YLQuNC5LdC40L7QvdC90YvQuSAoTGktaW9uKSDQsNC60LrRg9C80YPQu9GP0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAn0JTQvtCz0L7QstC+0YAg0LfQsNC50LzQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAn0J3QsNGF0L7QtNC40YLRgdGPINCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ9CU0L7Qu9Cz0L7RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn0J/RgNC+0LjQt9Cy0L7QtNC40YLQtdC70YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90LDRjyDQs9GA0YPQt9C+0L/QvtC00YrQtdC80L3QvtGB0YLRjCAo0JLRgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAn0J/QsNC80Y/RgtGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAn0KLQuNC/INC/0LDQvNGP0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAn0JzQuNC90Lgt0YHRgtC+0LnQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICfQndC+0LzQtdGAINC80L7QsdC40LvRjNC90L7Qs9C+INGC0LXQu9C10YTQvtC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAn0JzQvtCx0LjQu9GM0L3Ri9C5L9Cy0YHRgtGA0L7QtdC90L3Ri9C5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn0JzQvtC00LXQu9GMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAn0J7Qv9C40YHQsNC90LjQtSDQvNC+0LTQtdC70LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAn0KDQsNC30YDQtdGI0LXQvdC40LUg0LzQvtC90LjRgtC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfQoNCw0LfQvNC10YAg0LzQvtC90LjRgtC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ9Cc0YvRiNC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ9Ch0LXRgtGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ9CY0L3RhNC+0YDQvNCw0YbQuNGPINC+INGB0LXRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICfQmNC90YTQvtGA0LzQsNGG0LjRjyDQviDRgdC10YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAn0KHQtdGC0LXQstC+0Lkg0YPRgNC+0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICfQndC40LrQtdC70Ywt0LrQsNC00LzQuNC10LLQsNGPIChOaUNkKSDQsdCw0YLQsNGA0LXRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ9Cd0LjQutC10LvRjC3QvNC10YLQsNC70LvQs9C40LTRgNC40LTQvdGL0LkgKE5pTUgpINCw0LrQutGD0LzRg9C70Y/RgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAn0KHQvtCz0LvQsNGI0LXQvdC40LUg0L4g0L3QtdGA0LDQt9Cz0LvQsNGI0LXQvdC40LggKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICfQkdC70L7QutC90L7Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC/0YDQvtGG0LXRgdGB0L7RgNC+0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0LzQvtC00YPQu9C10Lkg0L7Qv9C10YDQsNGC0LjQstC90L7QuSDQv9Cw0LzRj9GC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0LLQuNC00LXQvtC60LDRgNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVELdC80L7QvdC40YLQvtGAICjQvtGA0LPQsNC90LjRh9C10YHQutC40Lkg0YHQstC10YLQvtC40LfQu9GD0YfQsNGO0YnQuNC5INC00LjQvtC0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfQntC/0LXRgNCw0YbQuNC+0L3QvdGL0LUg0YDQsNGB0YXQvtC00YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQt9Cw0LrQsNC30LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfQlNGA0YPQs9C+0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ9CS0YvRhdC+0LTRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICfQn9Cw0YDRgtC90LXRgNGB0LrQvtC1INGB0L7Qs9C70LDRiNC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICfQotC40L8g0YLQtdC70LXRhNC+0L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ9Ck0LjQt9C40YfQtdGB0LrQuNC1INGP0LTRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAn0JTQvtGB0YLQsNCy0LrQsCDRjdC70LXQutGC0YDQvtGN0L3QtdGA0LPQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAn0J/RgNC40L7QsdGA0LXRgtC10L3QviDQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAn0JPQu9GD0LHQuNC90LAg0YHRgtC+0LnQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAn0KHRgtC+0LnQutC4IChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn0JrQsNCx0LjQvdC10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0t0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNC40LrQsNGC0YsgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ9CU0L7Qs9C+0LLQvtGAINC60YPQv9C70Lgt0L/RgNC+0LTQsNC20LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAn0KHQv9GD0YLQvdC40LrQvtCy0YvQuSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICfQk9C10YDQvNC10YLQuNGH0L3QsNGPINGB0LLQuNC90YbQvtCy0L4t0LrQuNGB0LvQvtGC0L3QsNGPINCx0LDRgtCw0YDQtdGPIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAn0KHQtdGA0LjQudC90YvQuSDQvdC+0LzQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ9Ch0LXRgNCy0LXRgNC90L7QtSDQv9GA0L7Qs9GA0LDQvNC80L3QvtC1INC+0LHQtdGB0L/QtdGH0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfQlNC+0LPQvtCy0L7RgCDQvtCxINC+0LrQsNC30LDQvdC40Lgg0YPRgdC70YPQsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ9Ch0LXRgNCy0LjRgdC90LDRjyDQvNC10YLQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ9Ci0LjQvyDRgNC+0LfQtdGC0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ9Cf0YDQvtCz0YDQsNC80LzQvdC+0LUg0L7QsdC10YHQv9C10YfQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ9CU0LjQvdCw0LzQuNC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn0KHRgtCw0L3QtNCw0YDRgtC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAn0KHRgtCw0YDRgtC+0LLRi9C5IElQLdCw0LTRgNC10YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ9Cl0YDQsNC90LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICfQoNCw0LfQtNC10Lsg0LTQu9GPINGF0YDQsNC90LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICfQlNC+0YfQtdGA0L3Rj9GPINC60L7QvNC/0LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ9Cg0LXQt9GO0LzQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ9Ci0L7QvdC60LjQuSDQutC70LjQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ9Cd0LjRgtC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAn0J7QsdGJ0LDRjyDQvtC/0LXRgNCw0YLQuNCy0L3QsNGPINC/0LDQvNGP0YLRjCDQstC40LTQtdC+0LrQsNGA0YLRiyAo0JPQkSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICfQntCx0YnQsNGPINC+0L/QtdGA0LDRgtC40LLQvdCw0Y8g0L/QsNC80Y/RgtGMICjQk9CRKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAn0KHQtdC90YHQvtGA0L3Ri9C5INC80L7QvdC40YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAn0JHQsNGI0L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLdC60L7QvdGG0LXQvdGC0YDQsNGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ9CT0LDRgNC90LjRgtGD0YDQsCBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQLdGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICfQktC10LEt0LrQsNC80LXRgNCwJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/sk_SK_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNrX1NLX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdWxaFlb2JlY27DqSBwcmV2w6FkemtvdsOpIMO6ZGFqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnTmFzdGF2ZW5pYSBwcmUgcHJpY2jDoWR6YWrDumNlIMO6ZGFqZSDFvmlhZG9zdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIG91dGdvaW5nIHJlc3BvbnNlIGRhdGEnfSA9ICdOYXN0YXZlbmlhIHByZSDDumRhamUgb2RjaMOhZHphasO6Y2VqIG9kcG92ZWRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnU3Byw6F2YSBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ1ptZW5hIGRlZmluw61jaWUgdHJpZWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSByb2xlIGRlZmluaXRpb24nfSA9ICdabWVuYSBkZWZpbsOtY2llIMO6bG9oeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ0JhbMOta3kgdHJpZWQgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnVHUgbcO0xb5ldGUgaW1wb3J0b3ZhxaUgYmFsw61reSB0cmllZCBSZWFkeTJJbXBvcnQsIGt0b3LDqSBwcmVkc3RhdnVqw7ogbmHFoWUgbmFqYmXFvm5lasWhaWUga29uZmlndXJhxI1uw6kgcG9sb8W+a3kuIFVwb3pvcsWIdWplbWUsIMW+ZSBtw7TFvmUgYnnFpSBwb3RyZWJuw6EgZG9kYXRvxI1uw6Ega29uZmlndXLDoWNpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnQWt0dWFsaXrDoWNpYSBleGlzdHVqw7pjaWNoIHN1Ympla3Rvdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ0ltcG9ydCB6dsOkemtvdiB0cmllZCBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ1RyaWVkYSBwb2xvxb5reSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICfDmmxvaGEgcG9sb8W+a3kga29uZmlndXLDoWNpZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdQb2xvxb5rYSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciBwcmUgdHJpZWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ0FrIGNoY2V0ZSB2eXR2b3JpxaUgbm92w7ogcG9sb8W+a3Uga29uZmlndXLDoWNpZSwgdnliZXJ0ZSB0cmllZHUgem8gem96bmFtdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdUcmllZGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdIcm9tYWRuw6EgYWtjaWEgSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdTdGF2IG5hc2FkZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ1N0YXYgaW5jaWRlbnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ1ByZXBvamVuaWUgbmEgaW7DvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTmVzcHLDoXZuZSDEjcOtc2xvIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfEjMOtc2xvIGluZWogcG9sb8W+a3kga29uZmlndXLDoWNpZSwgcyBrdG9yb3Ugc2EgbcOhIHByZXBvamnFpS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdOYW96YWogY2hjZXRlIHTDunRvIHBvbG/Fvmt1IGtvbmZpZ3Vyw6FjaWUgb2RzdHLDoW5pxaU/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ07DoXpvdiB0ZWp0byBrb25maWd1cmHEjW5laiBwb2xvxb5reSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTsOhem92IHNhIHXFviBwb3XFvsOtdmEgdiBwb2xvxb5rZSBDb25maWdJdGVtcyBzIG5hc2xlZHVqw7pjaW0gxI3DrXNsb20gKMSNw61zbGFtaSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnxIzDrXNsbyB2ZXJ6aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8SMw61zbG8gdmVyemllIHRlanRvIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfEjMOtc2xvIHZlcnppZSBzYSB1xb4gcG91xb7DrXZhIHYgcG9sb8W+a2UgQ29uZmlnSXRlbXMgcyBuYXNsZWR1asO6Y2ltIMSNw61zbG9tICjEjcOtc2xhbWkpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhdiBuYXNhZGVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdTdGF2IGluY2lkZW50dSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdMOzcmlhIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWU6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ09ic2FoIGhpc3TDs3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdadsOkxI3FoWnFpSBwb2jEvmFkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ3VyYcSNbsOpIHBvbG/Fvmt5IG5hIHN0csOhbmt1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOZW5hxaFsaSBzYSDFvmlhZG5lIMO6ZGFqZSBrb25maWd1cmHEjW5laiBwb2xvxb5reS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWeWJlcnRlIHTDunRvIHBvbG/Fvmt1IGtvbmZpZ3Vyw6FjaWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdTcHVzdGnFpSB2eWjEvmFkw6F2YW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICdWeWjEvmFkw6F2YW5pZSBhaiB2IHByZWRjaMOhZHphasO6Y2ljaCB2ZXJ6acOhY2g/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcHJlIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICfDmnJvdmXFiCBoxLpia3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdQcmlibMOtxb5lbmllL29kZGlhbGVuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTWF4aW3DoWxuYSDDunJvdmXFiCBvZGthem92IGRvc2lhaG51dMOhIHByZSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1BvbG/FvmthIGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3Jtw6FjaWUgbyBwb2xvxb5rZSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0FrdHXDoWxueSBzdGF2IG5hc2FkZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnQWt0dcOhbG55IHN0YXYgaW5jaWRlbnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1Bvc2xlZG7DoSB6bWVuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdOYXBvc2xlZHkgem1lbmlsJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVmHFoWUgcG9sb8W+a3kgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnVnloxL5hZMOhdmFuaWUgcG9sb8W+a3kgQ29uZmlnSXRlbSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnVHlwIG9iamVrdHUnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdJbXBvcnR1asO6IHNhIHRpZXRvIHRyaWVkeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdJbXBvcnR1asO6IHNhIHRpZXRvIMO6bG9oeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdVcG96b3LFiHVqZW1lLCDFvmUgc2Egdnl0dm9yaWEgYWogcHLDrXNsdcWhbsOpIGR5bmFtaWNrw6kgcG9saWEgYSB0cmllZHkgR2VuZXJhbENhdGFsb2cgYSBuZWTDtGpkZSBrIGljaCBhdXRvbWF0aWNrw6ltdSBvZHN0csOhbmVuaXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnQ2hjZXRlIHBva3JhxI1vdmHFpT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnUG90cmVidWpldGUgcHLDrWtsYWR5IHRyaWVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbsOtY2lhIG5pZSBqZSBwbGF0bsO9IGhhc2ggWUFNTC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdQcmVoxL5hZDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05pZSBqZSB6YWRhbsOpIMW+aWFkbmUgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1BvdHJlYnVqZXRlIGFzcG/FiCBqZWRudSB2eWJyYW7DuiBwb2xvxb5rdSBrb25maWd1csOhY2llISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ0sgdGVqdG8ga29uZmlndXJhxI1uZWogcG9sb8W+a2UgbmVtw6F0ZSBwcsOtc3R1cCBuYSB6w6FwaXM6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdQcmUgdHJpZWR1ICVzIG5lYm9sYSBkZWZpbm92YW7DoSDFvmlhZG5hIGRlZmluw61jaWEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdLb25maWd1cmHEjW7DoSBwb2xvxb5rYSAiJXMiIG5lYm9sYSBuw6FqZGVuw6EgdiBkYXRhYsOhemUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnTmVwb2RhcmlsbyBzYSBvZHN0csOhbmnFpSBrb25maWd1cmHEjW7DuiBwb2xvxb5rdSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ1ByZSBDb25maWdJdGVtSUQgJXMgbmVib2xhIG7DoWpkZW7DoSDFvmlhZG5hIHZlcnppYSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmllIGplIHV2ZWRlbsOpIMW+aWFkbmUgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBhbmkgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ1Byw61zdHVwIG5pZSBqZSB1bW/Fvm5lbsO9ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZW1vxb5ubyB6b2JyYXppxaUgaGlzdMOzcml1LCBuaWUgamUgemFkYW7DqSDFvmlhZG5lIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOZW1vxb5ubyB6b2JyYXppxaUgaGlzdMOzcml1LCBuaWUgc8O6IGRhbsOpIMW+aWFkbmUgcHLDrXN0dXBvdsOpIHByw6F2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vdsO9IHBydm9rIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTm92w6EgdmVyemlhIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGF2IG5hc2FkZW5pYSBha3R1YWxpem92YW7DvSAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1N0YXYgaW5jaWRlbnR1IGFrdHVhbGl6b3ZhbsO9IChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgb2RzdHLDoW5lbsO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnUHJpZGFuw70gb2RrYXogbmEgJXMgKHR5cGU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdPZGtheiBuYSAlcyAodHlwZT0lcykgb2RzdHLDoW5lbsO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbsOtY2lhIHBvbG/Fvmt5IENvbmZpZ0l0ZW0gYWt0dWFsaXpvdmFuw6EgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ07DoXpvdiBha3R1YWxpem92YW7DvSAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWLDunQgJXMgYWt0dWFsaXpvdmFuw70geiAiJXMiIG5hICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyemlhICVzIG9kc3Ryw6FuZW7DoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOaWUgamUgdXZlZGVuw6kgxb5pYWRuZSBDb25maWdJdGVtSUQgYW5pIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmllIGplIG1vxb5uw6kgem9icmF6acWlIHBvbG/Fvmt1IGtvbmZpZ3Vyw6FjaWUsIG5pZSBzw7ogZGFuw6kgxb5pYWRuZSBwcsOtc3R1cG92w6kgcHLDoXZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBzYSBuZW5hxaFsbyB2IGRhdGFiw6F6ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3Z5dGxhxI1lbsOpICVzIG5hICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnTmVwbGF0bsOpIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmllIGplIHV2ZWRlbsOpIMW+aWFkbmUgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdQcmUgdMO6dG8gdHJpZWR1IG5pZSBzw7ogdWRlbGVuw6kgxb5pYWRuZSBwcsOtc3R1cG92w6kgcHLDoXZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnxb1pYWRueSB2w71zbGVkb2shJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnVsO9c2xlZGt5IHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdOaWUgamUgbW/Fvm7DqSB6b2JyYXppxaUgcG9sb8W+a3UsIG5pZSBzw7ogZGFuw6kgxb5pYWRuZSBwcsOtc3R1cG92w6kgcHLDoXZhIHByZSBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdQb2xvxb5rYSBDb25maWdJdGVtIG5lYm9sYSBuw6FqZGVuw6EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05lbmHFoWxpIHNhIMW+aWFkbmUgdmVyemllISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ3ByZXbDoWR6a292w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ3Vwb3pvcm5lbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YXYgbmFzYWRlbmlhIHRlanRvIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGF2IGluY2lkZW50dSB0ZWp0byBrb25maWd1cmHEjW5laiBwb2xvxb5reSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ8W9aWFkbmUgcG92b2xlbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciBqZSBuZXBsYXRuw70hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdWeWjEvmFkw6F2YWNpZSBwYXJhbWV0cmUgc8O6IG5lcGxhdG7DqSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdab2JyYXplbsOpIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwIHN0YXZ1IG5hc2FkZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUeXAgYWt0dcOhbG5laG8gaW5jaWRlbnR1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ01lZHppJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdPYm1lZHplbmlhIHRyaWVkeSBwcmUgcG9sb8W+a3Uga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVsO9YmVyIGplZG5laiBhbGVibyB2aWFjZXLDvWNoIHRyaWVkIG5hIG9ibWVkemVuaWUgdnliZXJhdGXEvm7DvWNoIHBvbG/FvmllayBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdPYm1lZHplbmlhIHRyaWVkeSBwcmUgcG9sb8W+a3Uga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1bDvWJlciBqZWRuZWogYWxlYm8gdmlhY2Vyw71jaCB0cmllZCBuYSBvYm1lZHplbmllIHZ5YmVyYXRlxL5uw71jaCBwb2xvxb5pZWsga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFtaWNrw6kgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWNrw70gKHZlcnppYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVHlwIG9ka2F6dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfEjGkgc2EgdG90byBwcmVwb2plbmllIHZ6xaVhaHVqZSBuYSBDb25maWdJdGVtIGFsZWJvIHN0YXRpY2vDuiB2ZXJ6aXUgb2RrYXp1asO6Y2VobyBvYmpla3R1LiBWw71wb8SNZXQgYWt0dcOhbG5laG8gc3RhdnUgaW5jaWRlbnR1IHNhIHZ5a29uw6F2YSBsZW4gcHJpIGR5bmFtaWNrw71jaCBvZGthem9jaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWeWJlcnRlIGF0cmliw7p0LCBwb2TEvmEga3RvcsOpaG8gc2EgYnVkw7ogdnloxL5hZMOhdmHFpSBwb2xvxb5reSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnWsOha2xhZG7DoSDFoXRydWt0w7pyYSBuaWUgamUgcGxhdG7DoS4gUG9za3l0bml0ZSBoYXNoIHMgw7pkYWptaSB2byBmb3Jtw6F0ZSBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1JlxaVhemVjIFlBTUwgc2EgbXVzw60gemHEjcOtbmHFpSB6bmFrb20gXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTmVwb2RhcmlsbyBzYSB2ecSNaXN0acWlIHRhYnXEvmt1IGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ05lYm9saSBuw6FqZGVuw6kgxb5pYWRuZSByZWxldmFudG7DqSBkeW5hbWlja8OpIHBvbGlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTmVwb2RhcmlsbyBzYSB2bG/FvmnFpSBkbyB0YWJ1xL5reSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ1Zsb8W+ZW5pZSAwIHJpYWRrb3YgZG8gdGFidcS+a3kgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01heGltw6FsbnkgcG/EjWV0IGplZG7DqWhvIHBydmt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9ydC9leHBvcnQgcHLDrWxvaCAoYWtvIHBvc2xlZG7DqSBwb2xvxb5reSBuYSByaWFka3UpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnUmXFpWF6ZWMgdmVyemllJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0NoeWJhIHByaSBzeW5jaHJvbml6w6FjaWkgZGVmaW7DrWNpw60uIFNrb250cm9sdWp0ZSwgcHJvc8OtbSwgcHJvdG9rb2wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnTcOhdGUgZGVmaW7DrWNpZSBJVFNNQ29uZmlnSXRlbSwga3RvcsOpIG5pZSBzw7ogc3luY2hyb25pem92YW7DqS4gTmFzYcSPdGUgZHluYW1pY2vDqSB6bWVueSBwb2zDrSBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1Z5cHLFoWFsYSBwbGF0bm9zxaUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfDmmRyxb5iYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbMOhbm92YW7DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdPcHJhdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ25hIGTDtGNob2RrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdQcmVoxL5hZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdG92YW5pZS9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnUHJlaMS+YWQgYSBwb3R2cmRlbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydG92YW5pZSB0cmllZC9yb2zDrSBhIGljaCBzw7p2aXNpYWNpY2ggcG9sw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdQb8SNYXMgaW1wb3J0dSB0cmllZHkgZG/FoWxvIGsgY2h5YmUuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBTa3J5dMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBab2JyYXplbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdVbW/FvsWIdWplIHJvesWhw61yZW7DqSBwb2RtaWVua3kgdnloxL5hZMOhdmFuaWEgdiBrb25maWd1cmHEjW5laiBwb2xvxb5rZSB2eWjEvmFkw6F2YW5pYSB2IHJvemhyYW7DrSBhZ2VudGEuIFBvbW9jb3UgdGVqdG8gZnVua2NpZSBtw7TFvmV0ZSB2eWjEvmFkw6F2YcWlIG5hcHIuIG7DoXpvdiBrb25maWd1cmHEjW5laiBwb2xvxb5reSBzIHBvZG1pZW5rYW1pIHR5cHUgIigqa2V5MSomJiprZXkyKikiIGFsZWJvICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVW1vxb7FiHVqZSByb3rFocOtcmVuw6kgcG9kbWllbmt5IHZ5aMS+YWTDoXZhbmlhIHZvIHZ5aMS+YWTDoXZhbsOtIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIHrDoWthem7DrWthLiBQb21vY291IHRlanRvIGZ1bmtjaWUgbcO0xb5ldGUgdnloxL5hZMOhdmHFpSBuYXByLiBuw6F6b3Yga29uZmlndXJhxI1uZWogcG9sb8W+a3kgcG9tb2NvdSBwb2RtaWVub2sgdHlwdSAiKCprZXkxKiYmKmtleTIqKSIgYWxlYm8gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdQcmlyYWRlbsOpIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdDSSBwcmlyYWRlbsOpIGsgesOha2F6bsOtY2tlaiBzcG9sb8SNbm9zdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSSBwcmlyYWRlbsOpIHBvdcW+w612YXRlxL5vdmkgesOha2F6bsOta2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ05hc3RhdmVuaWEgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnS29udHJvbG92YcWlIGplZGluZcSNbsO9IG7DoXpvdiBsZW4gdiByw6FtY2kgdGVqIGlzdGVqIHRyaWVkeSBDb25maWdJdGVtICgiY2xhc3MiKSBhbGVibyBnbG9iw6FsbmUgKCJnbG9iYWwiKSwgxI1vIHpuYW1lbsOhLCDFvmUgcHJpIGjEvmFkYW7DrSBkdXBsaWvDoXRvdiBzYSBiZXJpZSBkbyDDunZhaHkga2HFvmTDvSBleGlzdHVqw7pjaSBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnVnliZXJ0ZSBtb2R1bCBuYSB2eW7DunRlbmllIHNjaMOpbXkgcG9tZW5vdmFuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdWeWJlcnRlIHNpIG1vZHVsIG5hIHZ5bsO6dGVuaWUgxI3DrXNlbG5laiBzY2jDqW15Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdWeWJlcnRlIG1vZHVsIG5hIHZ5bsO6dGVuaWUgc2Now6lteSByZcWlYXpjYSB2ZXJ6acOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1Z5YmVydGUgYXRyaWLDunR5LCBrdG9yw6kgc3B1c3RpYSB2eXR2b3JlbmllIG5vdmVqIHZlcnppZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnVnliZXJ0ZSBrYXRlZ8OzcmllLCBrdG9yw6kgY2hjZXRlIHByaXJhZGnFpSB0ZWp0byB0cmllZGUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyZSBzdMS6cGNvdsO9Y2gga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgcHJlIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdTdMS6cGNlLCBrdG9yw6kgbW/Fvm5vIGZpbHRyb3ZhxaUgdiBwcmVoxL5hZGUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiByb3pocmFuw60gYWdlbnRhLiBQb3puw6Fta2E6IFBvdm9sZW7DqSBzw7ogbGVuIGF0cmliw7p0eSBrb25maWd1cmHEjW5laiBwb2xvxb5reSBhIGR5bmFtaWNrw6kgcG9saWEgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ1BvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ1ByaWRhbmllIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnw5pwcmF2YSBwb2xvxb5reSBrb25maWd1csOhY2llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIHVkYWxvc3TDrSBrb25maWd1cmHEjW5laiBwb2xvxb5reSwga3RvcsO9IHVtb8W+xYh1amUgemF6bmFtZW7DoXZhbmllIGRvIGhpc3TDs3JpZSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ01vZHVsIHVkYWxvc3TDrSBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllaywga3RvcsO9IGFrdHVhbGl6dWplIGtvbmZpZ3VyYcSNbsOpIHBvbG/Fvmt5IHBvZMS+YSBpY2ggYWt0dcOhbG5laiBkZWZpbsOtY2llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ1bDvXN0dXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnVGxhxI0ga29uZmlndXJhxI1uZWogcG9sb8W+a3kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnUHJpYmzDrcW+ZW5pZSBrb25maWd1cmHEjW5laiBwb2xvxb5reS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdTdHJvbW92w6kgem9icmF6ZW5pZSBwb2xvxb5reSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ1ZlcnppYSBwb2xvxb5reSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ1BvbG/Fvmt5IENvbmZpZ0l0ZW1zIG5hc2xlZHVqw7pjaWNoIHRyaWVkIG5lYnVkw7ogdWxvxb5lbsOpIG5hIHNlcnZlcmkgRWxhc3RpY3NlYXJjaC4gQWsgY2hjZXRlIHTDunRvIG1vxb5ub3PFpSBwb3XFvmnFpSBuYSBleGlzdHVqw7pjZSBDSSwgamUgcG90cmVibsOpIHBvIHptZW5lIHRlanRvIG1vxb5ub3N0aSBzcHVzdGnFpSBtaWdyw6FjaXUgQ0kgcHJvc3RyZWRuw61jdHZvbSBrb256b2x5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdQb2xvxb5reSBDb25maWdJdGVtcyBzIG5hc2xlZHVqw7pjaW1pIHN0YXZtaSBuYXNhZGVuaWEgbmVidWTDuiB1bG/FvmVuw6kgbmEgc2VydmVyaSBFbGFzdGljc2VhcmNoLiBBayBjaGNldGUgdMO6dG8gbW/Fvm5vc8WlIHBvdcW+acWlIG5hIGV4aXN0dWrDumNlIENJLCBqZSBwb3RyZWJuw6kgcG8gem1lbmUgdGVqdG8gbW/Fvm5vc3RpIHNwdXN0acWlIG1pZ3LDoWNpdSBDSSBwcm9zdHJlZG7DrWN0dm9tIGtvbnpvbHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0xpbWl0IHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ3Vyw6FjaWEgTGltaXQgcG9sb8W+a3kgbmEgc3Ryw6Fua3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdEYXRhYsOhemEgbmEgc3Byw6F2dSBrb25maWd1csOhY2llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnSHJvbWFkbsO9IG1vZHVsIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWeWjEvmFkw6F2YW5pZSBrb25maWd1cmHEjW5laiBwb2xvxb5reSBiYWNrZW5kb3bDqWhvIHNtZXJvdmHEjWEgcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnVnl0dm9yZW5pZSBhIHNwcsOhdmEgZGVmaW7DrWNpw60ga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnVnl0dsOhcmEgbMOtc3RreSBwcmUgcG9sb8W+a3kgQ29uZmlnSXRlbXMgdiB1csSNaXTDvWNoIMSNYXNvdsO9Y2ggYm9kb2NoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdaw6FrYXpuw61jaSBtw7TFvnUgdmlkaWXFpSBoaXN0b3JpY2vDqSB2ZXJ6aWUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ1rDoWthem7DrWNpIG1hasO6IG1vxb5ub3PFpSBtYW51w6FsbmUgcHJlcMOtbmHFpSBtZWR6aSBoaXN0b3JpY2vDvW1pIHZlcnppYW1pIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ1ByZWR2b2xlbsOpIMO6ZGFqZSwga3RvcsOpIHNhIG1hasO6IHBvdcW+acWlIG5hIG9icmF6b3ZrZSB2eWjEvmFkw6F2YW5pYSBhdHJpYsO6dG92IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLiBQcsOta2xhZDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdQcmVkdm9sZW7DqSDDumRhamUsIGt0b3LDqSBzYSBtYWrDuiBwb3XFvmnFpSBuYSBvYnJhem92a2UgdnloxL5hZMOhdmFuaWEgYXRyaWLDunRvdiBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllay4gUHLDrWtsYWQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbnVqdGUgQWtjaWUsIHByaSBrdG9yw71jaCBqZSB2byB3aWRnZXRlIHByZXBvamVuw71jaCBvYmpla3RvdiBrIGRpc3BvesOtY2lpIHRsYcSNaWRsbyBuYXN0YXZlbmlhIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFVwb3pvcsWIdWplbWUsIMW+ZSB0aWV0byBBa2NpZSBtdXNpYSBtYcWlIHphcmVnaXN0cm92YW7DqSBuYXNsZWR1asO6Y2Ugc8O6Ym9yeSBKUyBhIENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbm92YW5pZSBzY2jDqW15IFRlbXBsYXRlOjpUb29sa2l0IHByZSByZcWlYXpjZSB2ZXJ6acOtLiBQb3XFvsOtdmEgc2EgbGVuIHZ0ZWR5LCBhayBqZSBtb2R1bCBWZXJzaW9uIFN0cmluZyBuYXN0YXZlbsO9IG5hIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbnVqdGUgc8O6Ym9yIHBvZG1pZW5vaywgemEga3RvcsO9Y2ggbcO0xb5lIHrDoWthem7DrWsgdmlkaWXFpSBwb2xvxb5rdSBrb25maWd1csOhY2llLiBQb2RtaWVua3kgbcO0xb51IGJ5xaUgdm9saXRlxL5uZSBvYm1lZHplbsOpIG5hIHVyxI1pdMOpIHNrdXBpbnkgesOha2F6bsOta292LiBOw6F6b3YgamUgamVkaW7DvSBwb3Zpbm7DvSBhdHJpYsO6dC4gQWsgbmllIHPDuiB6YWRhbsOpIMW+aWFkbmUgxI9hbMWhaWUgbW/Fvm5vc3RpLCB2xaFldGt5IGtvbmZpZ3VyYcSNbsOpIHBvbG/Fvmt5IGJ1ZMO6IHZpZGl0ZcS+bsOpIHYgcsOhbWNpIHRlanRvIGthdGVnw7NyaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBwb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgdnltYXphbmllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIElUU00gcG9tb2NvdSB2xaFlb2JlY27DqWhvIHJvemhyYW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHBvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSB6w61za2FuaWUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgSVRTTSBwb21vY291IHbFoWVvYmVjbsOpaG8gcm96aHJhbmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgcG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHZ5aMS+YWTDoXZhbmllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIElUU00gcG9tb2NvdSB2xaFlb2JlY27DqWhvIHJvemhyYW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHBvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBuYXN0YXZlbmllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIElUU00gcG9tb2NvdSB2xaFlb2JlY27DqWhvIHJvemhyYW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW51amUgbW9kdWwgcHJlaMS+YWR1IG5hIHpvYnJhemVuaWUgbWFsw6lobyB6b2JyYXplbmlhIHpvem5hbXUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmludWplLCDEjWkgc2EgdiBzcG9qZW5pYWNoIHV6bG92IG11c2lhIHpvYnJhem92YcWlIHpuYcSNa3kgdHlwdSBzcG9qZW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmludWplIHJlZ3Vsw6FybmUgdsO9cmF6eSBqZWRub3RsaXZvIHByZSBrYcW+ZMO6IHRyaWVkdSBDb25maWdJdGVtIG5hIGtvbnRyb2x1IG7DoXp2dSBDb25maWdJdGVtIGEgem9icmF6ZW5pZSBwcsOtc2x1xaFuw71jaCBjaHlib3bDvWNoIHNwcsOhdi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbnVqZSBkb3N0dXBuw6kgc3TEunBjZSBDSSB2IHByZWjEvmFkZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHrDoXZpc2xvc3RpIG9kIHRyaWVkeSBDSS4gS2HFvmTDoSBwb2xvxb5rYSBtdXPDrSBwb3pvc3TDoXZhxaUgeiBuw6F6dnUgdHJpZWR5IGEgcG/EvmEgZG9zdHVwbsO9Y2ggcG9sw60gcHJlIHByw61zbHXFoW7DuiB0cmllZHUuIFBvbG/Fvmt5IGR5bmFtaWNrw71jaCBwb2zDrSBtdXNpYSByZcWhcGVrdG92YcWlIHNjaMOpbXUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHByZWR2b2xlbsO9IGF0cmliw7p0IHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgcHJlIHRyaWVkZW5pZSBwb2xvxb5pZWsga29uZmlndXLDoWNpZSB2byB2w71zbGVka3UgdnloxL5hZMOhdmFuaWEgcG9sb8W+aWVrIGtvbmZpZ3Vyw6FjaWUgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw70gYXRyaWLDunQgcG9sb8W+a3kga29uZmlndXLDoWNpZSBwcmUgdHJpZWRlbmllIHBvbG/FvmllayBrb25maWd1csOhY2llIHZvIHbDvXNsZWRrdSB2eWjEvmFkw6F2YW5pYSBwb2xvxb5pZWsga29uZmlndXLDoWNpZSB2IHJvemhyYW7DrSB6w6FrYXpuw61rYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DvSBhdHJpYsO6dCBwb2xvxb5reSBrb25maWd1csOhY2llIHByZSB0cmllZGVuaWUgcG9sb8W+a3kga29uZmlndXLDoWNpZSB2byB2w71zbGVka3UgdnloxL5hZMOhdmFuaWEgcG9sb8W+a3kga29uZmlndXLDoWNpZSB0ZWp0byBvcGVyw6FjaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DqSBwb3JhZGllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHZvIHbDvXNsZWRrdSB2eWjEvmFkw6F2YW5pYSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHJvemhyYW7DrSBhZ2VudGEuIE5haG9yOiBuYWpzdGFyxaFpZSBuYSB2cmNodS4gTmFkb2w6IG5ham5vdsWhaWUgbmEgdnJjaHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DqSBwb3JhZGllIHBvbG/FvmllayBrb25maWd1csOhY2llIHZvIHbDvXNsZWRrdSB2eWjEvmFkw6F2YW5pYSBwb2xvxb5pZWsga29uZmlndXLDoWNpZSB2IHJvemhyYW7DrSB6w6FrYXpuw61rYS4gTmFob3I6IG5hanN0YXLFoWllIG5hIHZyY2h1LiBOYWRvbDogbmFqbm92xaFpZSBuYSB2cmNodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw6kgcG9yYWRpZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2byB2w71zbGVka3UgdnloxL5hZMOhdmFuaWEga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdGVqdG8gb3BlcsOhY2llLiBOYWhvcjogbmFqc3RhcsWhaWUgbmEgdnJjaHUuIE5hZG9sOiBuYWpub3bFoWllIG5hIHZyY2h1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw6kgem9icmF6ZW7DqSBzdMS6cGNlIENJIHYgcHJlaMS+YWRlIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgesOhdmlzbG9zdGkgb2QgdHJpZWR5IENJLiBLYcW+ZMOhIHBvbG/FvmthIG11c8OtIHBvem9zdMOhdmHFpSB6IG7DoXp2dSB0cmllZHkgYSBwb8S+YSBkb3N0dXBuw71jaCBwb2zDrSBwcmUgcHLDrXNsdcWhbsO6IHRyaWVkdS4gUG9sb8W+a3kgZHluYW1pY2vDvWNoIHBvbMOtIG11c2lhIHJlxaFwZWt0b3ZhxaUgc2Now6ltdSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbnVqZSBwcmVkdm9sZW7DuiBoxLpia3UgdnrFpWFob3YsIGt0b3LDqSBzYSBtYWrDuiB6b2JyYXpvdmHFpS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw70gem9icmF6ZW7DvSBhdHJpYsO6dCB2eWjEvmFkw6F2YW5pYSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBwcmUgb2JyYXpvdmt1IHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw70gem9icmF6ZW7DvSBhdHJpYsO6dCB2eWjEvmFkw6F2YW5pYSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBwcmUgb2JyYXpvdmt1IHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLiBQcsOta2xhZDogIktleSIgKEvEvsO6xI0pIG11c8OtIG1hxaUgbsOhem92IGR5bmFtaWNrw6lobyBwb8S+YSB2IHRvbXRvIHByw61wYWRlICJYIiwgIkNvbnRlbnQiIChPYnNhaCkgbXVzw60gbWHFpSBob2Rub3R1IGR5bmFtaWNrw6lobyBwb8S+YSB2IHrDoXZpc2xvc3RpIG9kIHR5cHUgZHluYW1pY2vDqWhvIHBvxL5hLCBUZXh0OiAiYSB0ZXh0IiwgRHJvcGRvd246ICIxIiwgRGF0ZS9UaW1lOiAiU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhIGFsZWJvIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXTDvcW+ZGXFiDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9UHJlZDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmludWplIHByZWR2b2xlbsO9IHBvZG9iamVrdCB0cmllZHkgIklUU01Db25maWdJdGVtIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmludWplIGRvc3R1cG7DqSBzdMS6cGNlIENJIHYgcHJlaMS+YWRlIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgesOhdmlzbG9zdGkgb2QgdHJpZWR5IENJLiBLYcW+ZMOhIHBvbG/FvmthIG11c8OtIHBvem9zdMOhdmHFpSB6IG7DoXp2dSB0cmllZHkgYSBwb8S+YSBkb3N0dXBuw71jaCBwb2zDrSBwcmUgcHLDrXNsdcWhbsO6IHRyaWVkdS4gUG9sb8W+a3kgZHluYW1pY2vDvWNoIHBvbMOtIG11c2lhIHJlxaFwZWt0b3ZhxaUgc2Now6ltdSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbnVqZSB2w73FoWt1IGtvbXBvbmVudHUgdGV4dG92w6lobyBlZGl0b3JhIHByZSB0w7p0byBvYnJhem92a3UuIFphZGFqdGUgxI3DrXNsbyAocGl4ZWx5KSBhbGVibyBwZXJjZW50dcOhbG51IGhvZG5vdHUgKHJlbGF0w612bnUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBwb8SNZXQgcmlhZGtvdiBwcmUgZWRpdG9yIGRlZmluw61jacOtIENJIHYgcm96aHJhbsOtIHNwcsOhdmN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbnVqZSBwb3JhZGllIGluY2lkZW50bsO9Y2ggc3Rhdm92IG9kIHZ5c29rw6lobyAobmFwci4gY3JpY2l0YWwpIHBvIG7DrXpreSAobmFwci4gZnVuY3Rpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW51amUgcHLDrXNsdcWhbsOpIHN0YXZ5IG5hc2FkZW5pYSwgdiBrdG9yw71jaCBtw7TFvnUgcHJlcG9qZW7DqSB0aXB5IG92cGx5dm5pxaUgc3RhdiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBsaW1pdCB2eWjEvmFkw6F2YW5pYSBwcmUgb2JyYXpvdmt1IEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW51amUgbGltaXQgdnloxL5hZMOhdmFuaWEgcHJlIG9icmF6b3ZrdSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmludWplIGxpbWl0IHZ5aMS+YWTDoXZhbmlhIHByZSBvYnJhem92a3UgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBsaW1pdCB2eWjEvmFkw6F2YW5pYSBwcmUgb2JyYXpvdmt1IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW51amUgem9icmF6ZW7DqSBzdMS6cGNlIENJIHYga29tcGxleG5vbSB6b2JyYXplbsOtIHRhYnXEvmt5IHByZXBvamVuw60gcHJlIHbFoWV0a3kgdHJpZWR5IENJLiBBayBuZWV4aXN0dWplIMW+aWFkbmEgcG9sb8W+a2EsIHpvYnJhemlhIHNhIHByZWR2b2xlbsOpIHN0xLpwY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbnVqZSB6b2JyYXplbsOpIHN0xLpwY2UgQ0kgdiBrb21wbGV4bm9tIHpvYnJhemVuw60gdGFidcS+a3kgcHJlcG9qZW7DrSB2IHrDoXZpc2xvc3RpIG9kIHRyaWVkeSBDSS4gS2HFvmTDvSB6w6F6bmFtIG11c8OtIG1hxaUgcHJlZHBvbnUgcyBuw6F6dm9tIHRyaWVkeSBhIGR2b2ppdMO9bWkgZHZvamJvZGthbWkgKHQuIGouIENvbXB1dGVyOjopLiBFeGlzdHVqZSBuaWVrb8S+a28gQ0ktQXR0cmlidXRlcyAoYXRyaWLDunRvdiBDSSksIGt0b3LDqSBzw7ogc3BvbG/EjW7DqSBwcmUgdsWhZXRreSBDSSAocHLDrWtsYWQgcHJlIHRyaWVkdSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gTmEgem9icmF6ZW5pZSBqZWRub3RsaXbDvWNoIENJLWF0cmliw7p0b3YgZGVmaW5vdmFuw71jaCB2IENJLWRlZmluw61jaWkgc2EgbXVzw60gcG91xb5pxaUgbmFzbGVkdWrDumNhIHNjaMOpbWEgKHByw61rbGFkIHByZSB0cmllZHUgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gQWsgcHJlIHRyaWVkdSBDSSBuZWV4aXN0dWplIMW+aWFkbmEgcG9sb8W+a2EsIHpvYnJhemlhIHNhIHByZWR2b2xlbsOpIHN0xLpwY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW51amUsIGt0b3LDqSBwb2xvxb5reSBzw7ogayBkaXNwb3rDrWNpaSBwcmUgIkFjdGlvbiIgdiB0cmV0ZWogw7pyb3ZuaSDFoXRydWt0w7pyeSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbnVqZSwga3RvcsOpIHBvbG/Fvmt5IHPDuiBkb3N0dXBuw6kgdiBwcnZlaiDDunJvdm5pIMWhdHJ1a3TDunJ5IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbnVqZSwga3RvcsOpIHBvbG/Fvmt5IHPDuiBkb3N0dXBuw6kgdiBkcnVoZWogw7pyb3ZuaSDFoXRydWt0w7pyeSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnVXLEjXVqZSwga3RvcsO9IHR5cCBwcmVwb2plbmlhIChwb21lbm92YW7DvSB6IHBvaMS+YWR1IHRpa2V0dSkgbcO0xb5lIG92cGx5dm5pxaUgc3RhdiBwcmVwb2plbmVqIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ1VyxI11amUsIGt0b3LDvSB0eXAgdGlwdSBtw7TFvmUgb3ZwbHl2bmnFpSBzdGF2IHByZXBvamVuZWogQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnQWt0dWFsaXrDoWNpYSBkZWZpbsOtY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdPZHN0csOhbmVuaWUgcG9sb8W+a3kga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0ZhcmJhIHN0YXZ1IG5hc2FkZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGlrw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdWwgdWRhbG9zdMOtIGR5bmFtaWNrw71jaCBwb2zDrSwga3RvcsO9IG96bmHEjcOtIGRlZmluw61jaWUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgYWtvIG5lc3luY2hyb25pem92YW7DqSwgYWsgc2Egem1lbmlhIGR5bmFtaWNrw6kgcG9saWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlja8OpIHBvbGlhIHpvYnJhemVuw6kgbmEgb2JyYXpvdmtlIMSPYWzFocOtY2ggcG9sw60gSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWNrw6kgcG9saWEgem9icmF6ZW7DqSBuYSBvYnJhem92a2UgcHJlaMS+YWR1IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIHrDoWthem7DrWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pY2vDqSBwb2xpYSB6b2JyYXplbsOpIG5hIG9icmF6b3ZrZSB2eWjEvmFkw6F2YW5pYSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ1Bvdm9sw60gZnVua2NpdSBocm9tYWRuZWogYWtjaWUga29uZmlndXJhxI1uZWogcG9sb8W+a3kgcHJlIGZyb250ZW5kIGFnZW50YSBuYSBwcsOhY3UgcyB2aWFjIGFrbyBqZWRub3Uga29uZmlndXJhxI1ub3UgcG9sb8W+a291IG5hcmF6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnU3RhdiBuYXNhZGVuaWEgdGVqdG8gcG9sb8W+a3kga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdQb3ZvbMOtL3Z5cG5lIGZ1bmtjaXUga29udHJvbHkgamVkaW5lxI1uw71jaCBuw6F6dm92IHBvbG/FvmllayBrb25maWd1csOhY2llIElUU00uIFByZWQgemFwbnV0w61tIHRlanRvIG1vxb5ub3N0aSBieSBzdGUgbWFsaSBza29udHJvbG92YcWlIHN5c3TDqW0sIMSNaSB1xb4gbmVleGlzdHVqw7oga29uZmlndXJhxI1uw6kgcG9sb8W+a3kgcyBkdXBsaWNpdG7DvW1pIG7DoXp2YW1pLiBNw7TFvmV0ZSB0byB1cm9iacWlIHBvbW9jb3Uga29uem9sb3bDqWhvIHByw61rYXp1IEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTW9kdWwgdWRhbG9zdGkgbmEgbmFzdGF2ZW5pZSBjb25maWdpdGVtLXN0YXR1cyBuYSB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdQb2xpYSBpbmRleHUga29uZmlndXJhxI1uZWogcG9sb8W+a3ksIGt0b3LDqSBzYSBwb3XFvsOtdmFqw7ogbmEgZnVsbHRleHRvdsOpIHZ5aMS+YWTDoXZhbmllLiBQb2xpYSBzw7ogdGllxb4gdWxvxb5lbsOpLCBhbGUgbmllIHPDuiBwb3Zpbm7DqSBwcmUgY2Vsa292w7ogZnVua8SNbm9zxaUuIFphaHJudXRpZSBwcsOtbG9oIG1vxb5ubyB6YWvDoXphxaUgbmFzdGF2ZW7DrW0gcG9sb8W+a3kgbmEgaG9kbm90dSAwIGFsZWJvIGplaiB2eW1hemFuw61tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnUG9saWEgdWxvxb5lbsOpIHYgaW5kZXhlIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5LCBrdG9yw6kgc2Egb2tyZW0gZnVsbHRleHRvdsOpaG8gdnloxL5hZMOhdmFuaWEgcG91xb7DrXZhasO6IGFqIG5hIGluw6kgw7rEjWVseS4gUHJlIMO6cGxuw7ogZnVua8SNbm9zxaUgc8O6IHbFoWV0a3kgcG9saWEgcG92aW5uw6kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnUHJlIGthxb5kw7ogd2Vib3bDuiBzbHXFvmJ1IChrxL7DusSNKSBtb8W+bm8gZGVmaW5vdmHFpSBwb2xlIHRyaWVkIChob2Rub3RhKSwgbmEga3RvcsOpIGplIGltcG9ydCBvYm1lZHplbsO9LiBQcmUgdsWhZXRreSB2eWJyYW7DqSB0cmllZHkgYWxlYm8gdsWhZXRreSBleGlzdHVqw7pjZSB0cmllZHkgc2EgYnVkw7ogbXVzaWXFpSB2IGtvbmZpZ3Vyw6FjaWkgaW52b2tlcmEgenZvbGnFpSBpZGVudGlmaWthxI1uw6kgYXRyaWLDunR5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3Ryw6FjaWEgbW9kdWx1IEdlbmVyaWNJbnRlcmZhY2UgcHJlIHZyc3R2dSB2eXZvbMOhdmHEjWEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHLDoWNpYSBtb2R1bHUgR2VuZXJpY0ludGVyZmFjZSBwcmUgdnJzdHZ1IHZ5dm9sw6F2YcSNYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHLDoWNpYSBtb2R1bHUgR2VuZXJpY0ludGVyZmFjZSBwcmUgdnJzdHZ1IHZ5dm9sw6F2YcSNYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1ByZWjEvmFkIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWjFlcWIYSBzdGF2eSBuYXNhZGVuaWEgZG8gdnloxL5hZMOhdmFuaWEga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiByb3pocmFuw60gesOha2F6bsOta2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWjFlcWIYSBzdGF2eSBpbmNpZGVudG92IGRvIHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIHrDoWthem7DrWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWF4aW3DoWxueSBwb8SNZXQga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWssIGt0b3LDqSBzYSB6b2JyYXppYSB2byB2w71zbGVka3UgdGVqdG8gb3BlcsOhY2llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsIG5hIGtvbnRyb2x1IHNrdXBpbnkgem9kcG92ZWRuZWogemEgdHJpZWR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsIG5hIGtvbnRyb2x1IHNrdXBpbnkgem9kcG92ZWRuZWogemEgcG9sb8W+a3Uga29uZmlndXLDoWNpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bCBuYSBnZW5lcm92YW5pZSDFoXRhdGlzdMOtayBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ07DoXpvdiBtb2R1bHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ01vZHVsIMSNw61zbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/EjWV0IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLCBrdG9yw6kgc2EgbWFqw7ogem9icmF6acWlIG5hIGthxb5kZWogc3Ryw6Fua2UgdsO9c2xlZGt1IHZ5aMS+YWTDoXZhbmlhIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/EjWV0IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLCBrdG9yw6kgc2EgbWFqw7ogem9icmF6acWlIG5hIGthxb5kZWogc3Ryw6Fua2UgdsO9c2xlZGt1IHZ5aMS+YWTDoXZhbmlhIHYgcm96aHJhbsOtIHrDoWthem7DrWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrdHksIGt0b3LDqSBzYSBtYWrDuiB2eWjEvmFkw6F2YcWlLCBrb8S+a28gesOhem5hbW92IGEga3RvcsOpIGF0cmliw7p0eSBzYSBtYWrDuiB6b2JyYXppxaUuIEF0cmliw7p0eSBDb25maWdJdGVtIG11c2lhIGJ5xaUgZXhwbGljaXRuZSB1bG/FvmVuw6kgcHJvc3RyZWRuw61jdHZvbSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQcmVoxL5hZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBwcmUga2F0ZWfDs3JpZSB0cmllZCBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHpvYnJhemVuw60gcHJlZmVyZW5jacOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHByZSBzdMS6cGNvdsOpIGZpbHRyZSBwcmVoxL5hZHUgbWFsw71jaCBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllay4gVXBvem9ybmVuaWU6IG5hc3RhdmVuaWUgaG9kbm90eSAiQWt0w612bmUiIG5hIDAgemFicsOhbmkgYWdlbnRvbSB1cHJhdm92YcWlIG5hc3RhdmVuaWEgdGVqdG8gc2t1cGlueSBpYmEgdiBpY2ggb3NvYm7DvWNoIG5hc3RhdmVuaWFjaCwgYWxlIHNwcsOhdmNvbSBzdMOhbGUgdW1vxb5uw60gdXByYXZvdmHFpSBuYXN0YXZlbmlhIHYgbWVuZSBpbsOpaG8gcG91xb7DrXZhdGXEvmEuIFBvbW9jb3UgcG9sb8W+a3kgXCdQcmVmZXJlbmNlR3JvdXBcJyBtw7TFvmV0ZSBvdmzDoWRhxaUsIHYga3RvcmVqIG9ibGFzdGkgc2EgbWFqw7ogdGlldG8gbmFzdGF2ZW5pYSB6b2JyYXpvdmHFpSB2IHBvdcW+w612YXRlxL5za29tIHJvemhyYW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBwcmUgc3RhdnkgbmFzYWRlbmlhIHNhIHZ5ZmFyYmlhIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgcHJlIHN0YXZ5IG5hc2FkZW5pYSB2IHpvYnJhemVuw60gcHJlZmVyZW5jacOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBwcmUgcHLDrWtsYWR5IHNrdXDDrW4gb3Byw6F2bmVuw60gdsWhZW9iZWNuw71jaCBhdHJpYsO6dG92IGthdGFsw7NndS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgbW9kdWx1IG7DoXp2dSBwcmUgdHJpZWR5IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBwcmUgbW9kdWwgxI3DrXNsYSBwcmUgdHJpZWR5IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHN0csOhbm9rIChuYSBrdG9yw71jaCBzYSB6b2JyYXp1asO6IGtvbmZpZ3VyYcSNbsOpIHBvbG/Fvmt5KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHByZSBtb2R1bCByZcWlYXpjYSB2ZXJ6aWUgcHJlIHRyaWVkeSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHpvYnJhemVuw60gcHJlZmVyZW5jacOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHByZSBtb2R1bCDFoWFibMOzbnkgcmXFpWF6Y2EgdmVyemllIHByZSB0cmllZHkga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiB6b2JyYXplbsOtIHByZWZlcmVuY2nDrSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgcHJlIHNww7rFocWlYcSNIHZlcnppZSBwcmUgdHJpZWR5IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdWeWtvbsOhIG5ha29uZmlndXJvdmFuw7ogYWtjaXUgcHJlIGthxb5kw7ogdWRhbG9zxaUgKGFrbyBJbnZva2VyKSBwcmUga2HFvmTDuiBuYWtvbmZpZ3Vyb3ZhbsO6IHdlYm92w7ogc2x1xb5idS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ1NrdXBpbmEgb3Byw6F2bmVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+aXRpZSBha2NpZSBwcmlwb2plbmlhIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+w612YW5pZSBvYnJhem92a3kgcG9sb8W+a3kga29uZmlndXLDoWNpZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSBuYSB2eWjEvmFkw6F2YW5pZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSB2eWjEvmFkw6F2YW5pYSBwb2xvxb5pZWsga29uZmlndXLDoWNpZSBJVFNNIHYgcm96aHJhbsOtIHrDoWthem7DrWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBwb3XFvsOtdmFuaWUgb2JyYXpvdmt5IHpvYnJhemVuaWEgc3Ryb211IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSB6dsOkxI3FoWVuaWEga29uZmlndXJhxI1uZWogcG9sb8W+a3kgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+w612YW5pZSBvYnJhem92a3kgcHJpZGFuaWEgcG9sb8W+a3kga29uZmlndXLDoWNpZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+w612YW5pZSBvYnJhem92a3kgcG9sb8W+a3kgaHJvbWFkbmVqIGtvbmZpZ3Vyw6FjaWUgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBwb3XFvsOtdmFuaWUgb2JyYXpvdmt5IMO6cHJhdiBwb2xvxb5reSBrb25maWd1csOhY2llIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSBwb2xvxb5reSBoaXN0w7NyaWUga29uZmlndXLDoWNpZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBwb3XFvsOtdmFuaWUgb2JyYXpvdmt5IHRsYcSNIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgb2RzdHLDoW5lbmllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1Z5aMS+YWTDoXZhbmllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQXV0b21hdGlja8OpIG5hc3RhdmVuaWUgc3RhdnUgaW5jaWRlbnR1IENJLCBrZcSPIGplIHRpa2V0IHByZXBvamVuw70gcyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYXN0YXbDrSBzdGF2IG5hc2FkZW5pYSBuYSBvYnJhem92a2UgaHJvbWFkbmVqIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYXN0YXbDrSBzdGF2IHVkYWxvc3RpIG5hIG9icmF6b3ZrZSBocm9tYWRuZWogcG9sb8W+a3kga29uZmlndXLDoWNpZSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgcG9udWtlLCBrdG9yw70gdW1vxb7FiHVqZSBwcmVwb2plbmllIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHMgaW7DvW0gb2JqZWt0b20gdiB6b2JyYXplbsOtIHp2w6TEjcWhZW5pYSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgcHLDrXN0dXAgayBoaXN0w7NyaWkga29uZmlndXJhxI1uZWogcG9sb8W+a3kgdiBwcmVoxL5hZGUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IHBvbnVrZSBuYSBwcsOtc3R1cCBrIGhpc3TDs3JpaSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IGplaiB6dsOkxI3FoWVub20gem9icmF6ZW7DrSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgb2RzdHLDoW5lbmllIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHYgamVqIHp2w6TEjcWhZW5vbSB6b2JyYXplbsOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IHBvbnVrZSBuYSB6b2JyYXplbmllIG9ka2F6b3YgbmEga29uZmlndXJhxI1uw6kgcG9sb8W+a3kgYWtvIHN0cm9tb3bDqSB6b2JyYXplbmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgcG9udWtlIG5hIGR1cGxpa292YW5pZSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IHByZWjEvmFkZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgcG9udWtlIG5hIGR1cGxpa292YW5pZSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IGplaiB6dsOkxI3FoWVub20gem9icmF6ZW7DrSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgw7pwcmF2dSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IGplaiB6dsOkxI3FoWVub20gem9icmF6ZW7DrSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgbsOhdnJhdCBkbyB6b2JyYXplbmlhIHp2w6TEjcWhZW5pYSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgdGxhxI0ga29uZmlndXJhxI1uZWogcG9sb8W+a3kgdiBqZWogenbDpMSNxaFlbm9tIHpvYnJhemVuw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IHBvbnVrZSBuYSBwcmlibMOtxb5lbmllIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHYgcHJlaMS+YWRlIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIGhpc3TDs3JpdSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayAodiBvcGHEjW5vbSBwb3JhZMOtKSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ1ByZWR2b2xlbsOhIGthdGVnw7NyaWEsIGt0b3LDoSBzYSB6b2JyYXrDrSwgYWsgbmllIGplIHZ5YnJhdMOhIMW+aWFkbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdJZGVudGlmaWvDoXRvciBrb25maWd1cmHEjW5laiBwb2xvxb5reSwgbmFwci4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFByZWR2b2xlbsOhIGhvZG5vdGEgamUgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnQXV0b21hdGlja3kgc3DDusWhxaVhIGludm9rw6F0b3IgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyemlhIFJlxaVhemVjIHZ5amFkcmVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnTW9kdWwgcmXFpWF6Y2EgdmVyemllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1Nww7rFocWlYcSNIHZlcnppZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnxIxpIGplIG1vxb5uw6kgdnlobsO6xaUgc2Egdnlrb25hbml1IHByw61rYXp1IENvbmZpZ0l0ZW1BQ0wga29udHJvbG91IHrDoXZpc2xvc3TDrSBwb2zDrSB1bG/FvmVuw71jaCB2IG1lZHppcGFtw6R0aS4gVG90byBtw7TFvmUgemxlcMWhacWlIMSNYXN5IG5hxI3DrXRhbmlhIGZvcm11bMOhcm92LCBhbGUgbXVzw60gYnnFpSB2eXBudXTDqSwgYWsgc2EgbWFqw7ogcG91xb7DrXZhxaUgQUNMTW9kdWx5IHByZSBJVFNNQ29uZmlnSXRlbS0gYSBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnS3RvcsOpIHbFoWVvYmVjbsOpIGluZm9ybcOhY2llIHPDuiB1dmVkZW7DqSB2IHrDoWhsYXbDrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICd0cmllZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYsOhbG5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1a8SNbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVkcHJvZHVrxI1uw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3TDrXZuZSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBwYWxjYSAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHBhbGNvdiAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IHBhbGNhICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IHBhbGNhICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktcGFsY292w70gc3RvamFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBwYWxjYSAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBwYWxjb3YgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLXBhbGNvdsO9IHN0b2phbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgcGFsY2EgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy1wYWxjb3bDvSBzdG9qYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHBhbGNhICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBwYWxjb3YgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHBhbGNhICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgcGFsY2EgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgcGFsY2EgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHBhbGNhICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwYWxjYSAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcGFsY2EgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIHBhbGNvdiAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHBhbGNhICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcGFsY2EgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwYWxjYSAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgcGFsY2EgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcGFsY2EgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgcGFsY2EgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBwYWxjYSAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IHBhbGNvdiAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IHBhbGNvdiAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgcGFsY2EgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IHBhbGNhICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IHBhbGNhICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHBhbGNvdiAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBwYWxjYSAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnw5rEjXRvdm7DrWN0dm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdQcmlkZcS+b3ZhbmllIGFkcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnU3Byw6F2Y2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbMOzZ292w70gdGVsZWbDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUeXAgc3BvdHJlYmnEjWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdLYXBhY2l0YSBiYXTDqXJpZSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ1R5cCBiYXTDqXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0J1ZG92YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnUm96aHJhbmllIHpiZXJuaWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnVHJpZWRhIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYWNpdGEgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0thcGFjaXRhIG5hIGdyYWZpY2vDuiBrYXJ0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ8SMw61zbG8ga2FydHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICfEjMOtdGHEjWthIGthcmlldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdUeXAga2FydHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmlrw6F0eSBrbGllbnRvdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdLbGllbnRza3kgc29mdHbDqXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnS2F0ZWfDs3JpYSBrbGllbnRvdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdIb2RpbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1LDvWNobG9zxaUgaG9kw61uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpa8OhdHkgbmEgcG9kcGlzb3ZhbmllIGvDs2R1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJlbsSNbsO9IHRlbGVmw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnRG9ob2RhIG8gcG9yYWRlbnN0dmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0tvbnRha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0tvbnRha3QgbmEgZGlzdHJpYsO6dG9yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ1NwcsOhdmEga29udGFqbmVyb3YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdabWx1dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1R5cCB6bWx1dnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdabWx1dm7DqSBvYmRvYmllIG9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ09iZG9iaWUgcGxhdG5vc3RpIHptbHV2eSBkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdCZXpkcsO0dG92w70gdGVsZWbDs24gKHRlbGVmw7NuIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ07DoWtsYWRvdsOhIGplZG5vdGthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnUG/EjWV0IGxpY2VuY2nDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRMOhdHVtIHZ5dHZvcmVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1ZsYXN0bsO9IHN0b2phbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXplcnZvdmFuw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZlciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0TDoXR1bSBmYWt0w7pyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRMOhdHVtIG9iamVkbsOhdmt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEw6F0dW0gesOhcnVreSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEw6F0dW0gdnlkYW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnU3RvbG7DvSBwb8SNw610YcSNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpa8OhdHkgbmEgcG9kcGlzb3ZhbmllIGRva3VtZW50b3YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtbWFpbG92w6kgY2VydGlmaWvDoXR5IChjZXJ0aWZpa8OhdHkgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdQcmFjb3Zuw6Egem1sdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnS29uY292w6EgSVAgYWRyZXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnVWtvbsSNZW5pZSBwb2Rwb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRMOhdHVtIHNrb27EjWVuaWEgcGxhdG5vc3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdFeHRlcm7DvSBwZXZuw70gZGlzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0ZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXbDqXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdTa2xhZG92YW5pZSBlbmVyZ2llIG5hIHpvdHJ2YcSNbsOta3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYWt0b3IgZm9ybXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW5jaGlzaW5nb3bDoSB6bWx1dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdWxaFlb2JlY27DqSBpbmZvcm3DoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpY2vDqSBrYXJ0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlja8OhIGthcnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHbDqXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdNb2RlbCBoYXJkdsOpcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnSG1vdG5vc8WlIGhhcmR2w6lydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnTsOhaGxhdm7DoSBzw7pwcmF2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3Rva29sIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ1NwcsOhdmEgaWRlbnTDrXQgYSBwcsOtc3R1cHUgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudMOhcm5lIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdOw6FrbGFkeSBuYSBpbnZlcnN0csOhY2l1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnxIzDrXNsbyBmYWt0w7pyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ0tsw6F2ZXNuaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCBtb25pdG9yIChkaXNwbGVqIHogdGVrdXTDvWNoIGtyecWhdMOhbG92KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBMRUQgKHN2ZXRlbG7DoSBkacOzZGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1RlbGVmw7NuIHBldm5laiBsaW5reSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdaZW1lcGlzbsOhIMWhw61ya2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdWcnN0dmEgMTogRnl6aWNrw6EgdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ1Zyc3R2YSAyOiB2cnN0dmEgZMOhdG92w6lobyBzcG9qZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnVnJzdHZhIDM6IFNpZcWlb3bDoSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnVnJzdHZhIDM6IFNpZcWlb3bDoSB2cnN0dmEgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdWcnN0dmEgNDogVHJhbnNwb3J0bsOhIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnVnJzdHZhIDU6IFJlYWxpemHEjW7DoSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnVnJzdHZhIDY6IHByZXplbnRhxI1uw6EgdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnVnJzdHZhIDc6IEFwbGlrYcSNbsOhIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdOw6Fqb21uw6Egem1sdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW7EjW7DoSB6bWx1dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpY2VuxI1uw70ga8S+w7rEjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdUeXAgbGljZW5jaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ09iZG9iaWUgcGxhdG5vc3RpIGxpY2VuY2llIG9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnRG9iYSBwbGF0bm9zdGkgbGljZW5jaWUgZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdMOpcmlhIHMgZm9zZsOhdG9tIGzDrXRpYSBhIMW+ZWxlemEgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMw610aXVtLWnDs25vdsOhIChMaS1pb24pIGJhdMOpcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnWm1sdXZhIG8gcMO0xb5pxI1rZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnTmFjaMOhZHphIHNhIHYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnWmVtZXBpc27DoSBkxLrFvmthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnVsO9cm9iY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01heGltw6FsbmEgbm9zbm9zxaUgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ1BhbcOkxaUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdUeXAgcGFtw6R0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaXJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ01vYmlsbsOpIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWxuw6kvdmxvxb5lbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdQb3BpcyBtb2RlbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnUm96bMOtxaFlbmllIG1vbml0b3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1ZlxL5rb3PFpSBtb25pdG9yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ015xaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1NpZcWlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0luZm9ybcOhY2llIG8gc2lldGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybcOhY2llIG8gc2lldGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ1NpZcWlb3bDoSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWtlbC1rYWRtaW92w6EgKE5pQ2QpIGJhdMOpcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlrZWwtbWV0YWxoeWRyaWRvdsOhIChOaU1IKSBiYXTDqXJpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdEb2hvZGEgbyBtbMSNYW5saXZvc3RpIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTm90ZWJvb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdQb8SNZXQgcHJvY2Vzb3Jvdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdQb8SNZXQgbW9kdWxvdiBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnUG/EjWV0IGdyYWZpY2vDvWNoIGthcmlldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBPTEVEIChvcmdhbmlja8OhIGRpw7NkYSBlbWl0dWrDumNhIHN2ZXRsbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnUHJldsOhZHprb3bDqSBuw6FrbGFkeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdPYmplZG7DoXZhY2llIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdJbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdWw71zdHVweSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdEb2hvZGEgbyBwYXJ0bmVyc3R2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmw7NubmUgxI3DrXNsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVHlwIHRlbGVmw7NudSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0Z5emlja8OpIGphZHLDoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ0RvZMOhdmthIGVuZXJnaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdaYWvDunBlbsOpIHYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ0jEumJrYSBzdG9qYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnUmVnw6Fsb3bDqSBqZWRub3RreSAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0l6YmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdLYXJ0YSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpa8OhdHkgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1ByZWRham7DoSB6bWx1dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWxpdG7DvSB0ZWxlZsOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdVemF2cmV0w6Egb2xvdmVuw6EgYmF0w6lyaWEgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTw6lyaW92w6kgxI3DrXNsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTZXJ2ZXJvdsO9IHNvZnR2w6lyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnWm1sdXZhIG8gcG9za3l0b3ZhbsOtIHNsdcW+aWViJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnU2VydmlzbsO9IMWhdMOtdG9rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1R5cCB6w6FzdXZreSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR2w6lyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnUmVwcm9kdWt0b3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ8WgdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnUG/EjWlhdG/EjW7DoSBJUCBhZHJlc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ8OabG/Fvmlza28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICfDmmxvxb5uw70gb2RkaWVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRGPDqXJza2Egc3BvbG/EjW5vc8WlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdaaHJudXRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1RlbmvDvSBrbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ1Zsw6FrbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnQ2Vsa292w6EgcGFtw6TFpSBSQU0gZ3JhZmlja2VqIGthcnR5IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdDZWxrb3bDoSBwYW3DpMWlIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdEb3R5a292w70gbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1Zlxb5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdSb3pib8SNb3ZhxI0gVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnTsOhaGxhdm7DoSBzw7pwcmF2YSBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdUZWxlZsOzbiBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJvdsOhIGthbWVyYSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/sl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNsX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdTcGxvxaFuaSBwb2RhdGtpIG8gZGVsb3Zhbmp1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdOYXN0YXZpdHZlIHphIHZob2RuZSBwb2RhdGtlIHphaHRldmthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnTmFzdGF2aXR2ZSB6YSBpemhvZG5lIG9keml2bmUgcG9kYXRrZSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ1VwcmF2bGphbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnU3ByZW1lbWJhIGRlZmluaWNpamUgcmF6cmVkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnU3ByZW1lbWJhIG9wcmVkZWxpdHZlIHZsb2dlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUGFrZXRpIHJhenJlZG92IFJlYWR5MkltcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ1R1IGxhaGtvIHV2b3ppdGUgc3Zlxb5uamUgcmF6cmVkb3YgUmVhZHkySW1wb3J0LCBraSBwcmlrYXp1amVqbyBuYcWhZSBuYWpib2xqIG9iacSNYWpuZSBlbGVtZW50ZSBrb25maWd1cmFjaWplLiBVcG/FoXRldmFqdGUsIGRhIGJvIG1vcmRhIHBvdHJlYm5hIGRvZGF0bmEga29uZmlndXJhY2lqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnUG9zb2RvYml0ZXYgb2JzdG9qZcSNaWggZW50aXRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ1V2b3ppdGUgc3Zlxb5uamUgcmF6cmVkb3YgUmVhZHkyQWRvcHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdSYXpyZWQgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnVmxvZ2EgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdFbGVtZW50IGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdGVyIHphIHJhenJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnxIxlIMW+ZWxpdGUgdXN0dmFyaXRpIG5vdiBlbGVtZW50IGtvbmZpZ3VyYWNpamUsIHMgc2V6bmFtYSBpemJlcml0ZSByYXpyZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnUmF6cmVkJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnTW5vxb5pxI1ubyBkZWphbmplIElUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU3RhbmplIG5hbWVzdGl0dmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdTdGFuamUgaW5jaWRlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ1BvdmV6YXZhIG5hIGRydWdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOZXByYXZpbG5hIMWhdGV2aWxrYSBlbGVtZW50YSBrb25maWd1cmFjaWplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfFoHRldmlsa2EgZHJ1Z2VnYSBlbGVtZW50YSBrb25maWd1cmFjaWplLCBzIGthdGVyaW0gc2UgcG92ZcW+ZS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdBbGkgcmVzIMW+ZWxpdGUgaXpicmlzYXRpIHRhIGVsZW1lbnQga29uZmlndXJhY2lqZT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSW1lIHRlZ2EgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnSW1lIGplIMW+ZSB2IHVwb3JhYmkgdiBDb25maWdJdGVtcyB6IG5hc2xlZG5qbygtaW1pKSDFoXRldmlsa28oLWFtaSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnxaB0ZXZpbGthIHJhemxpxI1pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ8WgdGV2aWxrYSByYXpsacSNaWNlIHRlZ2EgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ8WgdGV2aWxrYSByYXpsacSNaWNlIGplIMW+ZSB2IHVwb3JhYmkgcHJpIENvbmZpZ0l0ZW1zIHogbmFzbGVkbmpvIMWhdGV2aWxrbyAoxaF0ZXZpbGthbWkpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhbmplIHV2YWphbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRHLFvmF2YSBpbmNpZGVudGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ1pnb2RvdmluYSBlbGVtZW50YSBrb25maWd1cmFjaWplOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdaZ29kb3ZpbmEgVnNlYmluYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ3JlYXRldGltZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdQb3ZlxI1hbiBwb2dsZWQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnS29uZmlndXJhY2lqYSBFbGVtZW50aSBuYSBzdHJhbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnUG9kYXRrb3YgbyBlbGVtZW50dSBrb25maWd1cmFjaWplIG5pIGJpbG8gbW9nb8SNZSBuYWp0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdJemJlcml0ZSB0YSBlbGVtZW50IGtvbmZpZ3VyYWNpamUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdaYWduYXRpIGlza2FuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnSXNrYW5qZSB0dWRpIHYgcHJlasWhbmppaCByYXpsacSNaWNhaD8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdEcmV2ZXNuaSBwb2dsZWQgemEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ1JhdmVuIGdsb2JpbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdQb3ZlxI1hbmplL2l6a2xvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdEb3Nlxb5lbmEgbmFqdmXEjWphIHJhdmVuIHBvdmV6YXYgemEgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdFbGVtZW50IGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpamUgbyBwb3N0YXZraSBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1RyZW51dG5vIHN0YW5qZSB1dmFqYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnVHJlbnV0bm8gc3RhbmplIGluY2lkZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdaYWRuamEgc3ByZW1lbWJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ05hemFkbmplIHNwcmVtZW5pbCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ1ZhxaFpIGVsZW1lbnRpIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0gSXNrYW5qZSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnVnJzdGEgcHJlZG1ldGEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdVdm/FvmVuaSBib2RvIG5hc2xlZG5qaSByYXpyZWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1V2b8W+ZW5lIGJvZG8gbmFzbGVkbmplIHZsb2dlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1Vwb8WhdGV2YWp0ZSwgZGEgYm9kbyB1c3R2YXJqZW5hIHR1ZGkgdXN0cmV6bmEgZGluYW1pxI1uYSBwb2xqYSBpbiByYXpyZWRpIEdlbmVyYWxDYXRhbG9nLCBraSBuZSBib2RvIHNhbW9kZWpubyBvZHN0cmFuamVuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdBbGkgxb5lbGl0ZSBuYWRhbGpldmF0aT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnUG90cmVidWpldGUgcmF6cmVkZSBwcmltZXJvdiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnRGVmaW5pY2lqYSBuaSB2ZWxqYXZuaSBoYXNoIFlBTUwuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnUHJlZ2xlZDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCBuaSBwb2RhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdQb3RyZWJ1amV0ZSB2c2FqIGVuIGl6YnJhbmkgZWxlbWVudCBrb25maWd1cmFjaWplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05pbWF0ZSBkb3N0b3BhIHphIHBpc2FuamUgdiB0byBrb25maWd1cmFjaWpza28gcG9zdGF2a286ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdaYSByYXpyZWQgJXMgbmkgYmlsYSBvcHJlZGVsamVuYSBub2JlbmEgZGVmaW5pY2lqYSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0tvbmZpZ3VyYWNpanNrZWdhIGVsZW1lbnRhICIlcyIgbmkgbW9nb8SNZSBuYWp0aSB2IHpiaXJraSBwb2RhdGtvdiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdOaSBiaWxvIG1vZ2/EjWUgaXpicmlzYXRpIGtvbmZpZ3VyYWNpanNrZWdhIGVsZW1lbnRhIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnWmEgQ29uZmlnSXRlbUlEICVzIG5pIGJpbGEgbmFqZGVuYSBub2JlbmEgcmF6bGnEjWljYSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmkgcG9kYW4gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBhbGkgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0Rvc3RvcCBuaSBvbW9nb8SNZW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lIG1vcmVtIHByaWthemF0aSB6Z29kb3ZpbmUsIGtlciBuaSBwb2RhbiBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmUgbW9yZW0gcHJpa2F6YXRpIHpnb2RvdmluZSwgbmkgcG9kYW5paCBwcmF2aWMgZG9zdG9wYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vdiBlbGVtZW50IGtvbmZpZ3VyYWNpamUgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTm92YSByYXpsacSNaWNhIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdQb3NvZG9ibGplbm8gc3RhbmplIG5hbWVzdGl0dmUgKG5vdm89JXMsIHN0YXJvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdQb3NvZG9ibGplbm8gc3RhbmplIGluY2lkZW50YSAobm92bz0lcywgc3Rhcm89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIGl6YnJpc2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnRG9kYW5hIHBvdmV6YXZhIG5hICVzICh0eXBlPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnUG92ZXphdmEgbmEgJXMgKHRpcD0lcykgaXpicmlzYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdPcHJlZGVsaXRldiBlbGVtZW50YSBDb25maWdJdGVtIGplIHBvc29kb2JsamVuYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnSW1lIHBvc29kb2JsamVubyAobm92bz0lcywgc3Rhcm89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dCAlcyBwb3NvZG9ibGplbiBpeiAiJXMiIHYgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdSYXpsacSNaWNhICVzIGl6YnJpc2FuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOaSBwb2RhbiBDb25maWdJdGVtSUQgYWxpIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmkgbW9nb8SNZSBwcmlrYXphdGkgZWxlbWVudGEga29uZmlndXJhY2lqZSwgbmkgcG9kYW5paCBwcmF2aWMgZG9zdG9wYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbmkgbmFqZGVuIHYgcG9kYXRrb3ZuaSBiYXppISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnbmF0aXNuaWwgJXMgbmEgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ05lcHJhdmlsZW4gSUQgcmF6cmVkYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdJRCByYXpyZWRhIG5pIG5hdmVkZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnUHJhdmljZSBkb3N0b3BhIHphIHRhIHJhenJlZCBuaXNvIHBvZGFuZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0JyZXogcmV6dWx0YXRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1JlenVsdGF0aSBpc2thbmphIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0VsZW1lbnRhIG5pIG1vZ2/EjWUgcHJpa2F6YXRpLCBwcmF2aWNlIGRvc3RvcGEgemEgQ29uZmlnSXRlbSBuaXNvIHBvZGFuZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBuaSBuYWpkZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05pIGJpbG8gbmFqZGVuaWggcmF6bGnEjWljISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ2RlbG92YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnb3Bvem9yaWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YW5qZSB1dmFqYW5qYSB0ZWdhIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGFuamUgaW5jaWRlbnRhIHRlZ2EgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0JyZXogZG92b2xqZW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIgamUgbmV2ZWxqYXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ05ldmVsamF2bmkgcGFyYW1pIGlza2FuamEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnUHJpa2F6YW5pIGVsZW1lbnRpIGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVnJzdGEgc3RhbmphIG5hbWVzdGl0dmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVnJzdGEgdHJlbnV0bmVnYSBzdGFuamEgaW5jaWRlbnRhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ01lZCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnT21laml0dmUgcmF6cmVkYSB6YSBlbGVtZW50IGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ0l6YmVyaXRlIGVuZWdhIGFsaSB2ZcSNIHJhenJlZG92IHphIG9tZWppdGV2IGl6YmlybmloIGVsZW1lbnRvdiBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdPbWVqaXR2ZSByYXpyZWRhIHphIGVsZW1lbnQga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ0l6YmVyaXRlIGVuZWdhIGFsaSB2ZcSNIHJhenJlZG92IHphIG9tZWppdGV2IGl6YmlybmloIGVsZW1lbnRvdiBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluYW1pxI1ubyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpxI1ubyAocmF6bGnEjWljYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVnJzdGEgc2tsaWNldmFuamEgbmEgcG92ZXphdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnQWxpIHRhIHBvdmV6YXZhIHZlbGphIHphIENvbmZpZ0l0ZW0gYWxpIHN0YXRpxI1ubyByYXpsacSNaWNvIG9iamVrdGEsIG5hIGthdGVyZWdhIHNlIHNrbGljdWplLiBJenJhxI11biB0cmVudXRuZWdhIHN0YW5qYSBpbmNpZGVudGEgc2UgaXp2ZWRlIHNhbW8gcHJpIGRpbmFtacSNbmloIHBvdmV6YXZhaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdJemJlcml0ZSBhdHJpYnV0LCBwbyBrYXRlcmVtIHNlIGJvZG8gaXNrYWxpIGVsZW1lbnRpIGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdPc25vdm5hIHN0cnVrdHVyYSBuaSB2ZWxqYXZuYS4gTmF2ZWRpdGUgaGFzaCBzIHBvZGF0a2kgdiBvYmxpa2kgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdOaXogWUFNTCBzZSBtb3JhIHphxI1ldGkgeiBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdUYWJlbGUgY29uZmlnaXRlbV9saW5rIG5pIGJpbG8gbW9nb8SNZSBvxI1pc3RpdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdVc3RyZXpuYSBkaW5hbWnEjW5hIHBvbGphIG5pc28gYmlsYSBuYWpkZW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ05pIGJpbG8gbW9nb8SNZSB2c3Rhdml0aSB2IHRhYmVsbyBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ1ZzdGF2bGplbmloIDAgdnJzdGljIHYgdGFiZWxvIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdOYWp2ZcSNamUgxaF0ZXZpbG8gZW5lZ2EgZWxlbWVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnVXZvei9penZveiBwcmlwb25rIChrb3QgemFkbmppIHZub3NpIHYgdnJzdGljaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJ6aWphIFN0cmluZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdOYXBha2EgcHJpIHNpbmhyb25pemFjaWppIGRlZmluaWNpai4gUHJldmVyaXRlIGRuZXZuaWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnSW1hdGUgZGVmaW5pY2lqZSBJVFNNQ29uZmlnSXRlbSwga2kgbmlzbyBzaW5ocm9uaXppcmFuZS4gVW1lxaHEjWFqdGUgc3ByZW1lbWJlIGRpbmFtacSNbmloIHBvbGogSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdQcmV0ZWtsYSB2ZWxqYXZub3N0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnVnpkcsW+ZXZhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ05hxI1ydG92YW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1BvcHJhdmlsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnVXBva29qZW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1ByZWdsZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3RpcmFuamUvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1ByZWdsZWQgaW4gcG90cmRpdGV2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ1V2b3ogcmF6cmVkb3YvdmxvZyBpbiB6IG5qaW1pIHBvdmV6YW5paCBwb2xqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnUHJpIHV2b3p1IHJhenJlZGEgamUgcHJpxaFsbyBkbyBuYXBha2UuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBTa3JpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIHByaWthemFubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnT21vZ2/EjWEgcmF6xaFpcmplbmUgcG9nb2plIGlza2FuamEgcHJpIGlza2FuanUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuIFMgdG8gZnVua2Npam8gbGFoa28gacWhxI1ldGUgbnByLiBpbWUgZWxlbWVudGEga29uZmlndXJhY2lqZSBzIHRha8WhbmltaSBwb2dvamksIGtvdCBzbyAiKCprZXkxKiYmKmtleTIqKSIgYWxpICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnT21vZ2/EjWEgcmF6xaFpcmplbmUgcG9nb2plIGlza2FuamEgdiBpc2thbmp1IGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgdm1lc25pa3UgemEgc3RyYW5rZS4gUyB0byBmdW5rY2lqbyBsYWhrbyBpxaHEjWV0ZSBucHIuIGltZSBlbGVtZW50YSBrb25maWd1cmFjaWplIHMgdGFrxaFuaW1pIHBvZ29qaSwga290IHNvICIoKmtleTEqJiYqa2V5MiopIiBhbGkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdEb2RlbGplbmkgS0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0tJLCBkb2RlbGplbmkgcG9kamV0anUgc3RyYW5rZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJLCBkb2RlbGplbmkgdXBvcmFibmlrdSBzdHJhbmtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdOYXN0YXZpdHZlIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1ByZXZlcmphbmplIGVkaW5zdHZlbmVnYSBpbWVuYSBzYW1vIHpub3RyYWogaXN0ZWdhIHJhenJlZGEgQ29uZmlnSXRlbSAoXCdjbGFzc1wnKSBhbGkgZ2xvYmFsbm8gKFwnZ2xvYmFsXCcpLCBrYXIgcG9tZW5pLCBkYSBzZSBwcmkgaXNrYW5qdSBwb2R2b2ppdGV2IHVwb8WhdGV2YSB2c2FrIG9ic3RvamXEjWkgQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ0l6YmVyaXRlIG1vZHVsIHphIHV2ZWxqYXZpdGV2IHNoZW1lIHBvaW1lbm92YW5qYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ0l6YmVyaXRlIG1vZHVsIHphIHV2ZWxqYXZpdGV2IMWhdGV2aWxza2Ugc2hlbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0l6YmVyaXRlIG1vZHVsIHphIHV2ZWxqYXZpdGV2IHNoZW1lIHZlcmnFvm5paCBuaXpvdiByYXpsacSNaWMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnSXpiZXJpdGUgYXRyaWJ1dGUgemEgc3Byb8W+aXRldiB1c3R2YXJqYW5qYSBub3ZlIHJhemxpxI1pY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0l6YmVyaXRlIGthdGVnb3JpamUsIGtpIGppaCDFvmVsaXRlIGRvZGVsaXRpIHRlbXUgcmF6cmVkdSBlbGVtZW50b3Yga29uZmlndXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJpIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgc3RvbHBjYSB6YSBwcmVnbGVkIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdTdG9scGNpLCBraSBqaWggamUgbW9nb8SNZSBmaWx0cmlyYXRpIHYgcHJlZ2xlZHUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuIE9wb21iYTogRG92b2xqZW5pIHNvIHNhbW8gYXRyaWJ1dGkgZWxlbWVudGEga29uZmlndXJhY2lqZSBpbiBkaW5hbWnEjW5hIHBvbGphIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdFbGVtZW50aSBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdEb2RhamFuamUgZWxlbWVudGEga29uZmlndXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdVcmVqYW5qZSBlbGVtZW50YSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIHphIGRvZ29ka2UgZWxlbWVudGEga29uZmlndXJhY2lqZSwga2kgb21vZ2/EjWEgYmVsZcW+ZW5qZSB2IHpnb2RvdmlubyB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTW9kdWwgZG9nb2Rrb3YgemEgZWxlbWVudGUga29uZmlndXJhY2lqZSwga2kgcG9zb2RvYmkgZWxlbWVudGUga29uZmlndXJhY2lqZSBuYSBuamlob3ZvIHRyZW51dG5vIGRlZmluaWNpam8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnWmdvZG92aW5hIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdUaXNrYW5qZSBlbGVtZW50YSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ3VyYWNpamEgcG92ZcSNYXZlIGVsZW1lbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0RyZXZlc25pIHByaWtheiBlbGVtZW50b3Yga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFJhemxpxI1pY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnS29uZmlndXJhY2lqc2tpIGVsZW1lbnRpIG5hc2xlZG5qaWggcmF6cmVkb3YgbmUgYm9kbyBzaHJhbmplbmkgdiBzdHJlxb5uaWt1IEVsYXN0aWNzZWFyY2guIMSMZSDFvmVsaXRlIHRvIHVwb3JhYml0aSB6YSBvYnN0b2plxI1lIENJLCBqZSB0cmViYSBwbyBzcHJlbWVtYmkgdGUgbW/Fvm5vc3RpIHphZ25hdGkgbWlncmFjaWpvIENJIHByZWsga29uem9sZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnS29uZmlndXJhY2lqc2tpIGVsZW1lbnRpIHogbmFzbGVkbmppbWkgc3RhbmppIG5hbWVzdGl0dmUgbmUgYm9kbyBzaHJhbmplbmkgdiBzdHJlxb5uaWt1IEVsYXN0aWNzZWFyY2guIMSMZSDFvmVsaXRlIHRvIHVwb3JhYml0aSB6YSBvYnN0b2plxI1lIENJLCBqZSB0cmViYSBwbyBzcHJlbWVtYmkgdGUgbW/Fvm5vc3RpIHphZ25hdGkgbWlncmFjaWpvIENJIHByZWsga29uem9sZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnT21laml0ZXYgcG9zdGF2a2Uga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlndXJhY2lqYSBPbWVqaXRldiBlbGVtZW50b3YgbmEgc3RyYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdQb2RhdGtvdm5hIHpiaXJrYSB6YSB1cHJhdmxqYW5qZSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnUG9zdGF2a2EgemEga29uZmlndXJhY2lqbyBtb2R1bGEgdiByYXpzdXRlbSBzdGFuanUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsZW1lbnQga29uZmlndXJhY2lqZSB6YSBpc2thbmplIHphbGVkbmVnYSB1c21lcmpldmFsbmlrYSB2bWVzbmlrYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ1VzdHZhcmphbmplIGluIHVwcmF2bGphbmplIGRlZmluaWNpaiB6YSBlbGVtZW50ZSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ1VzdHZhcmkgdm96b3ZuaWNlIHphIGVsZW1lbnRlIENvbmZpZ0l0ZW1zIHYgZG9sb8SNZW5paCDEjWFzb3ZuaWggdG/EjWthaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnU3RyYW5rZSBzaSBsYWhrbyBvZ2xlZGFqbyBwcmV0ZWtsZSByYXpsacSNaWNlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdTdHJhbmtlIGxhaGtvIHJvxI1ubyBwcmVrbGFwbGpham8gbWVkIHByZXRla2xpbWkgcmF6bGnEjWljYW1pIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ1ByaXZ6ZXRlIHBvZGF0a2UsIGtpIHNlIHVwb3JhYmlqbyB2IGF0cmlidXR1IHphIHphc2xvbiB6YSBpc2thbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLiBQcmltZXI6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD1sZXRvO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnUHJpdnpldGUgcG9kYXRrZSwga2kgc2UgdXBvcmFiaWpvIHYgYXRyaWJ1dHUgemEgemFzbG9uIHphIGlza2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUuIFByaW1lcjogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ09wcmVkZWxpdGUgZGVqYW5qYSwgcHJpIGthdGVyaWggamUgdiBncmFkbmlrdSBwb3ZlemFuaWggcHJlZG1ldG92IG5hIHZvbGpvIGd1bWIgemEgbmFzdGF2aXR2ZSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBVcG/FoXRldmFqdGUsIGRhIG1vcmFqbyB0ZSBha2NpamUgcmVnaXN0cmlyYXRpIG5hc2xlZG5qZSBkYXRvdGVrZSBKUyBpbiBDU1M6IFYgdGVtIHByaW1lcnUgamUgdHJlYmEgemEgdXBvcmFibyBuYXN0YXZpdGV2IGluIGZ1bmtjaWogemEgcG92ZXpvdmFuamUgb2JqZWt0b3YgaW4gbmppaG92aWggZnVua2NpaiB2IHNpc3RlbXUgbmFzdGF2aXRpIG5hc2xlZG5qZSBkYXRvdGVrZTogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgaW4gQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnT3ByZWRlbGl0ZXYgc2hlbWUgVGVtcGxhdGU6OlRvb2xraXQgemEgbml6YSByYXpsacSNaWMuIFVwb3JhYmxqYSBzZSBzYW1vLCDEjWUgamUgbW9kdWwgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIG5hc3RhdmxqZW4gbmEgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ09wcmVkZWxpdGUgbml6IHBvZ29qZXYsIHBvZCBrYXRlcmltaSBsYWhrbyBzdHJhbmthIHZpZGkgZWxlbWVudCBrb25maWd1cmFjaWplLiBQb2dvamkgc28gbGFoa28gcG8gxb5lbGppIG9tZWplbmkgbmEgZG9sb8SNZW5lIHNrdXBpbmUgc3RyYW5rLiBJbWUgamUgZWRpbmkgb2J2ZXpuaSBhdHJpYnV0LiDEjGUgbmUgbmF2ZWRldGUgZHJ1Z2loIG1vxb5ub3N0aSwgYm9kbyB2IHRlaiBrYXRlZ29yaWppIHZpZG5pIHZzaSBlbGVtZW50aSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnT3ByZWRlbGp1amUgWmFodGV2YW5hIGRvdm9samVuamEgemEgYnJpc2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgSVRTTSB6IHVwb3JhYm8gc3Bsb8WhbmVnYSB2bWVzbmlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIFphaHRldmFuYSBkb3ZvbGplbmphIHphIHByaWRvYml0ZXYgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgSVRTTSB6IHVwb3JhYm8gc3Bsb8WhbmVnYSB2bWVzbmlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIFphaHRldmFuYSBkb3ZvbGplbmphIHphIGlza2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgSVRTTSB6IHVwb3JhYm8gc3Bsb8WhbmVnYSB2bWVzbmlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIFphaHRldmFuYSBkb3ZvbGplbmphIHphIG5hc3RhdmxqYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSBJVFNNIHogdXBvcmFibyBzcGxvxaFuZWdhIHZtZXNuaWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdPcHJlZGVsanVqZSBtb2R1bCB6YSBwcmVnbGVkLCBraSBwcmlrYXp1amUgbWFqaGVuIHBvZ2xlZCBzZXpuYW1hIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEb2xvxI1hLCBhbGkgbW9yYWpvIGJpdGkgdiBwb3ZlemF2YWggdm96bGnFocSNIHByaWthemFuZSBvem5ha2UgdnJzdGUgcG92ZXphdmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdaYSB2c2FrIHJhenJlZCBDb25maWdJdGVtIHBvc2ViZWogZG9sb8SNYSByZWd1bGFybmUgaXpyYXplIHphIHByZXZlcmphbmplIGltZW5hIENvbmZpZ0l0ZW0gaW4gcHJpa2F6IHVzdHJlem5paCBzcG9yb8SNaWwgbyBuYXBha2FoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHJhenBvbG/FvmxqaXZlIHN0b2xwY2UgQ0kgdiBwcmVnbGVkdSBlbGVtZW50YSBrb25maWd1cmFjaWplIGdsZWRlIG5hIHJhenJlZCBDSS4gVnNhayB2bm9zIG1vcmEgYml0aSBzZXN0YXZsamVuIGl6IGltZW5hIHJhenJlZGEgaW4gcG9samEgcmF6cG9sb8W+bGppdmloIHBvbGogemEgdXN0cmV6bmkgcmF6cmVkLiBWbm9zaSBkaW5hbWnEjW5paCBwb2xqIG1vcmFqbyB1cG/FoXRldmF0aSBzaGVtbyBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSBhdHJpYnV0IGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgemEgcmF6dnLFocSNYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHJlenVsdGF0dSBpc2thbmphIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSBhdHJpYnV0IGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgemEgcmF6dnLFocSNYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHJlenVsdGF0dSBpc2thbmphIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgdm1lc25pa3UgemEgc3RyYW5rZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEb2xvxI1hIHByaXZ6ZXRpIGF0cmlidXQgZWxlbWVudGEga29uZmlndXJhY2lqZSB6YSByYXp2csWhxI1hbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiByZXp1bHRhdCBpc2thbmphIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdGUgb3BlcmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSB2cnN0bmkgcmVkIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcmV6dWx0YXR1IGlza2FuamEgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuIE5hdnpnb3I6IG5hanN0YXJlasWhaSBuYSB2cmh1LiBOYXZ6ZG9sOiBuYWpub3ZlasWhaSBuYSB2cmh1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSB2cnN0bmkgcmVkIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcmV6dWx0YXR1IGlza2FuamEgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSB6YSBzdHJhbmtlLiBOYXZ6Z29yOiBuYWpzdGFyZWrFoWkgbmEgdnJodS4gTmF2emRvbDogbmFqbm92ZWrFoWkgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSB2cnN0bmkgcmVkIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcmV6dWx0YXR1IGlza2FuamEgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdGUgb3BlcmFjaWplLiBOYXZ6Z29yOiBuYWpzdGFyZWrFoWkgbmEgdnJodS4gTmF2emRvbDogbmFqbm92ZWrFoWkgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RvbG/EjWEgcHJpdnpldGUgcHJpa2F6YW5lIHN0b2xwY2UgQ0kgdiBwcmVnbGVkdSBlbGVtZW50YSBrb25maWd1cmFjaWplIGdsZWRlIG5hIHJhenJlZCBDSS4gVnNhayB2bm9zIG1vcmEgYml0aSBzZXN0YXZsamVuIGl6IGltZW5hIHJhenJlZGEgaW4gcG9samEgcmF6cG9sb8W+bGppdmloIHBvbGogemEgdXN0cmV6bmkgcmF6cmVkLiBWbm9zaSBkaW5hbWnEjW5paCBwb2xqIG1vcmFqbyB1cG/FoXRldmF0aSBzaGVtbyBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEb2xvxI1hIHByaXZ6ZXRvIGdsb2Jpbm8gb2Rub3Nvdiwga2kgc2UgcHJpa2HFvmVqby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0byBwcmlrYXphbiBhdHJpYnV0IGlza2FuamEgZWxlbWVudGEga29uZmlndXJhY2lqZSB6YSB6YXNsb24gaXNrYW5qYSBlbGVtZW50YSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0byBwcmlrYXphbiBhdHJpYnV0IGlza2FuamEgZWxlbWVudGEga29uZmlndXJhY2lqZSB6YSB6YXNsb24gaXNrYW5qYSBlbGVtZW50YSBrb25maWd1cmFjaWplLiBQcmltZXI6ICJLZXkiIG1vcmEgaW1ldGkgaW1lIGRpbmFtacSNbmVnYSBwb2xqYSwgdiB0ZW0gcHJpbWVydSAiWCIsICJDb250ZW50IiBtb3JhIGltZXRpIHZyZWRub3N0IGRpbmFtacSNbmVnYSBwb2xqYSwgb2R2aXNubyBvZCB2cnN0ZSBkaW5hbWnEjW5lZ2EgcG9samEsIFRleHQ6ICJhIHRleHQiLCBEcm9wZG93bjogIjEiLCBEYXRlL1RpbWU6ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGluIGFsaSBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD10ZWRlbjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9UHJlZDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHByaXZ6ZXRpIHBvZG9iamVrdCByYXpyZWRhIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHJhenBvbG/FvmxqaXZlIHN0b2xwY2UgQ0kgdiBwcmVnbGVkdSBlbGVtZW50YSBrb25maWd1cmFjaWplIGdsZWRlIG5hIHJhenJlZCBDSS4gVnNhayB2bm9zIG1vcmEgYml0aSBzZXN0YXZsamVuIGl6IGltZW5hIHJhenJlZGEgaW4gcG9samEgcmF6cG9sb8W+bGppdmloIHBvbGogemEgdXN0cmV6bmkgcmF6cmVkLiBWbm9zaSBkaW5hbWnEjW5paCBwb2xqIG1vcmFqbyB1cG/FoXRldmF0aSBzaGVtbyBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEb2xvxI1hIHZpxaFpbm8ga29tcG9uZW50ZSB1cmVqZXZhbG5pa2EgYm9nYXRlZ2EgYmVzZWRpbGEgemEgdGEgemFzbG9uLiBWbmVzaXRlIMWhdGV2aWxvIChwaWtzbGkpIGFsaSBvZHN0b3RubyB2cmVkbm9zdCAocmVsYXRpdm5vKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRG9sb8SNYSDFoXRldmlsbyB2cnN0aWMgemEgdXJlamV2YWxuaWsgZGVmaW5pY2lqIENJIHYgdXByYXZpdGVsanNrZW0gdm1lc25pa3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHZyc3RuaSByZWQgc3RhbmogaW5jaWRlbnRhIG9kIHZpc29rZWdhIChucHIuIGNyaWNpdGFsbm8pIGRvIG5pemtlZ2EgKG5wci4gZnVua2Npb25hbG5vKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdPcHJlZGVsanVqZSB1c3RyZXpuYSBzdGFuamEgdXZhamFuamEsIHYga2F0ZXJpaCBsYWhrbyBwb3ZlemFuZSB2b3pvdm5pY2UgdnBsaXZham8gbmEgc3RhbmplIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RvbG/EjWEgb21laml0ZXYgaXNrYW5qYSB6YSB6YXNsb24gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEb2xvxI1hIG9tZWppdGV2IGlza2FuamEgemEgemFzbG9uIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRG9sb8SNYSBvbWVqaXRldiBpc2thbmphIHphIHphc2xvbiBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RvbG/EjWEgb21laml0ZXYgaXNrYW5qYSB6YSB6YXNsb24gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdPcHJlZGVsanVqZSBwcmlrYXphbmUgc3RvbHBjZSBLSSB2IGtvbXBsZWtzbmVtIHBvZ2xlZHUgcHJlZ2xlZG5pY2UgcG92ZXphdiB6YSB2c2UgcmF6cmVkZSBLSS4gxIxlIHZub3NhIG5pLCBzbyBwcmlrYXphbmkgcHJpdnpldGkgc3RvbHBjaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHByaWthemFuZSBzdG9scGNlIEtJIHYga29tcGxla3NuZW0gcG9nbGVkdSBwcmVnbGVkbmljZSBwb3ZlemF2LCBvZHZpc25vIG9kIHJhenJlZGEgS0kuIFZzYWsgdm5vcyBtb3JhIGJpdGkgb3ByZW1samVuIHogaW1lbm9tIHJhenJlZGEgaW4gZHZvam5pbWkgZHZvcGnEjWppIChucHIuIENvbXB1dGVyOjopLiBPYnN0YWphIG5la2FqIGF0cmlidXRvdiBDSS1BdHRyaWJ1dGVzLCBraSBzbyBza3VwbmkgdnNlbSBDSSAocHJpbWVyIHphIHJhenJlZCBSYcSNdW5hbG5pazogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gWmEgcHJpa2F6IHBvc2FtZXpuaWggQ0ktYXRyaWJ1dG92LCBrb3Qgc28gb3ByZWRlbGplbmkgdiBkZWZpbmljaWppIENJLCBqZSB0cmViYSB1cG9yYWJpdGkgbmFzbGVkbmpvIHNoZW1vIChwcmltZXIgemEgcmF6cmVkIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIMSMZSB6YSByYXpyZWQgQ0kgbmkgdm5vc2EsIHNvIHByaWthemFuaSBwcml2emV0aSBzdG9scGNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplLCBrYXRlcmkgZWxlbWVudGkgc28gbmEgdm9sam8gemEgIkFjdGlvbiIgbmEgdHJldGppIHJhdm5pIHN0cnVrdHVyZSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEb2xvxI1hLCBrYXRlcmkgZWxlbWVudGkgc28gbmEgdm9sam8gbmEgcHJ2aSByYXZuaSBzdHJ1a3R1cmUgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RvbG/EjWEsIGthdGVyaSBlbGVtZW50aSBzbyBuYSB2b2xqbyBuYSBkcnVnaSByYXZuaSBzdHJ1a3R1cmUgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RvbG/EjWEsIGthdGVyYSB2cnN0YSBwb3ZlemF2ZSAocG9pbWVub3ZhbmEgeiB2aWRpa2Egdm96b3ZuaWNlKSBsYWhrbyB2cGxpdmEgbmEgc3RhbmplIHBvdmV6YW5lZ2EgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRG9sb8SNYSwga2F0ZXJhIHZyc3RhIHZvem92bmljZSBsYWhrbyB2cGxpdmEgbmEgc3RhbmplIHBvdmV6YW5lZ2EgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnUG9zb2RvYml0ZXYgZGVmaW5pY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQnJpc2FuamUgZWxlbWVudGEga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0JhcnZhIHN0YW5qYSBuYW1lc3RpdHZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWthdG5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTW9kdWwgemEgZG9nb2RrZSBkaW5hbWnEjW5paCBwb2xqLCBraSBvem5hxI1pIGRlZmluaWNpamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUga290IG5lc2luaHJvbml6aXJhbmUsIMSNZSBzZSBzcHJlbWVuaWpvIGRpbmFtacSNbmEgcG9samEsIGtpIGppaCB2c2VidWplam8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWnEjW5hIHBvbGphLCBwcmlrYXphbmEgbmEgemFzbG9udSBkb2RhdG5lZ2EgcG9samEgSVRTTSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1uYSBwb2xqYSwgcHJpa2F6YW5hIG5hIHphc2xvbnUgemEgcHJlZ2xlZCBlbGVtZW50YSBrb25maWd1cmFjaWplIHYgdm1lc25pa3UgemEgc3RyYW5rZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNbmEgcG9samEsIHByaWthemFuYSBuYSB6YXNsb251IHphIGlza2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ09tb2dvxI1hIGZ1bmtjaWpvIG1ub8W+acSNbmVnYSBkZWxvdmFuamEgemEga29uZmlndXJhY2lqc2tlIGVsZW1lbnRlIHphIHNwcmVkbmppIGRlbCBhZ2VudGEsIGtpIGRlbHVqZSBuYSB2ZcSNIGtvdCBlbmVtIGtvbmZpZ3VyYWNpanNrZW0gZWxlbWVudHUgbmFlbmtyYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdPbW9nb8SNaSBmdW5rY2lqbyBtbm/FvmnEjW5lZ2EgZGVsb3ZhbmphIGtvbmZpZ3VyYWNpanNraWggZWxlbWVudG92IHNhbW8gemEgbmF2ZWRlbmUgc2t1cGluZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnT21vZ2/EjWkvb2RrbG9waSBmdW5rY2lvbmFsbm9zdCBwcmV2ZXJqYW5qYSBlZGluc3R2ZW5paCBpbWVuIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIElUU00uIFByZWRlbiBvbW9nb8SNaXRlIHRvIG1vxb5ub3N0LCBtb3JhdGUgcHJldmVyaXRpIHN2b2ogc2lzdGVtIHphIMW+ZSBvYnN0b2plxI1lIGVsZW1lbnRlIGtvbmZpZ3VyYWNpamUgcyBwb2R2b2plbmltaSBpbWVuaS4gVG8gbGFoa28gc3Rvcml0ZSBzIGtvbnpvbG5pbSB1a2F6b20gQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bCBkb2dvZGtvdiB6YSBuYXN0YXZpdGV2IHN0YW5qYSBrb25maWd1cmFjaWplIG5hIHBvdmV6YXZpIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ1BvbGphIGluZGVrc2EgZWxlbWVudGEga29uZmlndXJhY2lqZSwga2kgc2UgdXBvcmFibGpham8gemEgaXNrYW5qZSBwbyBjZWxvdG5lbSBiZXNlZGlsdS4gUG9samEgc28gcHJhdiB0YWtvIHNocmFuamVuYSwgdmVuZGFyIG5pc28gb2J2ZXpuYSB6YSBjZWxvdG5vIGZ1bmtjaW9uYWxub3N0LiBWa2xqdcSNZXZhbmplIHByaWxvZyBsYWhrbyBvbmVtb2dvxI1pdGUgdGFrbywgZGEgdm5vcyBuYXN0YXZpdGUgbmEgMCBhbGkgZ2EgaXpicmnFoWV0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ1BvbGphLCBzaHJhbmplbmEgdiBpbmRla3N1IGVsZW1lbnRvdiBrb25maWd1cmFjaWplLCBraSBzZSBwb2xlZyBpc2thbmphIHBvIGNlbG90bmVtIGJlc2VkaWx1IHVwb3JhYmxqYWpvIHR1ZGkgemEgZHJ1Z2Ugc3R2YXJpLiBaYSBwb3BvbG5vIGZ1bmtjaW9uYWxub3N0IHNvIHZzYSBwb2xqYSBvYnZlem5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ1phIHZzYWtvIHNwbGV0bm8gc3Rvcml0ZXYgKGtsanXEjSkgbGFoa28gZG9sb8SNaXRlIG5peiByYXpyZWRvdiAodnJlZG5vc3QpLCB6YSBrYXRlcmUgamUgdXZveiBvbWVqZW4uIFphIHZzZSBpemJyYW5lIHJhenJlZGUgYWxpIHZzZSBvYnN0b2plxI1lIHJhenJlZGUgYm8gdHJlYmEgdiBrb25maWd1cmFjaWppIGludm9rZXJqYSBpemJyYXRpIGlkZW50aWZpa2FjaWpza2UgYXRyaWJ1dGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhY2lqYSBtb2R1bGEgR2VuZXJpY0ludGVyZmFjZSB6YSBzbG9qIGludm9rYXRvcmphIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgbW9kdWxhIEdlbmVyaWNJbnRlcmZhY2UgemEgc2xvaiBpbnZva2F0b3JqYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhY2lqYSBtb2R1bGEgR2VuZXJpY0ludGVyZmFjZSB6YSBzbG9qIGludm9rYXRvcmphIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnUHJlZ2xlZCBlbGVtZW50YSBrb25maWd1cmFjaWplIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWa2xqdcSNdWplIHN0YW5qYSB1dmFqYW5qYSB2IGlza2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB1cG9yYWJuacWha2VtIHZtZXNuaWt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmtsanXEjXVqZSBzdGFuamEgaW5jaWRlbnRvdiB2IGlza2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB1cG9yYWJuacWha2VtIHZtZXNuaWt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTmFqdmXEjWplIMWhdGV2aWxvIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLCBraSBzZSBwcmlrYcW+ZWpvIHYgcmV6dWx0YXR1IHRlIG9wZXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCB6YSBwcmV2ZXJqYW5qZSBza3VwaW5lLCBvZGdvdm9ybmUgemEgcmF6cmVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsIHphIHByZXZlcmphbmplIHNrdXBpbmUsIG9kZ292b3JuZSB6YSBlbGVtZW50IGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgemEgdXN0dmFyamFuamUgc3RhdGlzdGlrZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ0ltZSBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTW9kdWwgxaF0ZXZpbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnxaB0ZXZpbG8gZWxlbWVudG92IGtvbmZpZ3VyYWNpamUsIGtpIHNlIHByaWthxb5lam8gbmEgdnNha2kgc3RyYW5pIHJlenVsdGF0YSBpc2thbmphIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfFoHRldmlsbyBlbGVtZW50b3Yga29uZmlndXJhY2lqZSwga2kgc2UgcHJpa2HFvmVqbyBuYSB2c2FraSBzdHJhbmkgcmV6dWx0YXRhIGlza2FuamEgdiB1cG9yYWJuacWha2VtIHZtZXNuaWt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ1ByZWRtZXRpIHphIGlza2FuamUsIGtvbGlrbyB2bm9zb3YgaW4ga2F0ZXJpIGF0cmlidXRpIG5haiBzZSBwcmlrYcW+ZWpvLiBBdHJpYnV0aSBDb25maWdJdGVtIG1vcmFqbyBiaXRpIGl6cmVjbm8gc2hyYW5qZW5pIHByZWsgc3Rvcml0dmUgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnUHJlZ2xlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBrYXRlZ29yaWplIHphIHJhenJlZGUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiBwb2dsZWR1IG5hc3Rhdml0ZXYgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIGZpbHRyZSBzdG9scGNldiB2IHByZWdsZWR1IG1hamhuaWggZWxlbWVudG92IGtvbmZpZ3VyYWNpamUuIFVwb8WhdGV2YWp0ZTogeiBuYXN0YXZpdHZpam8gIkFrdGl2bm8iIG5hIDAgYm8gYWdlbnRvbSBwcmVwcmXEjWVubyBsZSB1cmVqYW5qZSBuYXN0YXZpdGV2IHRlIHNrdXBpbmUgdiBuamlob3ZpaCBvc2VibmloIG5hc3Rhdml0dmFoLCB2ZW5kYXIgYm8gYWRtaW5pc3RyYXRvcmplbSDFoWUgdmVkbm8gb21vZ2/EjWVubyB1cmVqYW5qZSBuYXN0YXZpdGV2IHYgaW1lbnUgZHJ1Z2VnYSB1cG9yYWJuaWthLiBTIGZ1bmtjaWpvIFwnUHJlZmVyZW5jZUdyb3VwXCcgbGFoa28gbmFkemlyYXRlLCB2IGthdGVyZW0gb2Jtb8SNanUgbmFqIGJvZG8gdGUgbmFzdGF2aXR2ZSBwcmlrYXphbmUgdiB1cG9yYWJuacWha2VtIHZtZXNuaWt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIGJhcnZvIHN0YW5qYSB1dmFqYW5qYSB2IHBvZ2xlZHUgbmFzdGF2aXRldiB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3RhbmphIHV2YWphbmphIHYgcG9nbGVkdSBuYXN0YXZpdGV2IHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgcHJpbWVyIHNrdXBpbiBkb3ZvbGplbmogc3Bsb8WhbmloIGF0cmlidXRvdiBrYXRhbG9nYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgbW9kdWwgaW1lbmEgemEgcmF6cmVkZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHBvZ2xlZHUgbmFzdGF2aXRldiB2bWVzbmlrYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgbW9kdWwgxaF0ZXZpbGEgemEgcmF6cmVkZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHBvZ2xlZHUgbmFzdGF2aXRldiB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0cmFuaSAobmEga2F0ZXJpaCBzbyBwcmlrYXphbmkgZWxlbWVudGkga29uZmlndXJhY2lqZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBtb2R1bCB2ZXJ6aWplIG5pemEgemEgcmF6cmVkZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHBvZ2xlZHUgbmFzdGF2aXRldiB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgbW9kdWwgcHJlZGxvZ2Ugbml6YSByYXpsacSNaWMgemEgcmF6cmVkZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHBvZ2xlZHUgbmFzdGF2aXRldiB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHNwcm/FvmlsZWMgcmF6bGnEjWljZSB6YSByYXpyZWRlIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcG9nbGVkdSBuYXN0YXZpdGV2IHZtZXNuaWthIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdJenZlZGUga29uZmlndXJpcmFubyBkZWphbmplIHphIHZzYWsgZG9nb2RlayAoa290IEludm9rZXIpIHphIHZzYWtvIGtvbmZpZ3VyaXJhbm8gc3BsZXRubyBzdG9yaXRldi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ1NrdXBpbmEgZG92b2xqZW5qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaHRldmFuYSBkb3ZvbGplbmphIHphIHVwb3JhYm8gZGVqYW5qYSBwcml0cmRpdHZlIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgSVRTTSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaHRldmFuYSBkb3ZvbGplbmphIHphIHVwb3JhYm8gemFzbG9uYSBlbGVtZW50YSBrb25maWd1cmFjaWplIElUU00gdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFodGV2YW5hIGRvdm9samVuamEgemEgdXBvcmFibyB6YXNsb25hIHphIGlza2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgSVRTTSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWh0ZXZhbmEgZG92b2xqZW5qYSB6YSB1cG9yYWJvIHphc2xvbmEgemEgaXNrYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSBJVFNNIHYgdXBvcmFibmnFoWtlbSB2bWVzbmlrdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWh0ZXZhbmEgZG92b2xqZW5qYSB6YSB1cG9yYWJvIHphc2xvbmEgZHJldmVzbmVnYSBwcmlrYXphIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIElUU00gdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaHRldmFuYSBkb3ZvbGplbmphIHphIHVwb3JhYm8gemFzbG9uYSB6YSBwb3ZlxI1hdm8gZWxlbWVudGEga29uZmlndXJhY2lqZSBJVFNNIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaHRldmFuYSBkb3ZvbGplbmphIHphIHVwb3JhYm8gemFzbG9uYSBEb2RhaiBlbGVtZW50IGtvbmZpZ3VyYWNpamUgSVRTTSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFodGV2YW5hIGRvdm9samVuamEgemEgdXBvcmFibyB6YXNsb25hIHphIHBvc3RhdmtvIHNrdXBpbnNrZSBrb25maWd1cmFjaWplIElUU00gdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaHRldmFuYSBkb3ZvbGplbmphIHphIHVwb3JhYm8gemFzbG9uYSB6YSB1cmVqYW5qZSBlbGVtZW50YSBrb25maWd1cmFjaWplIElUU00gdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaHRldmFuYSBkb3ZvbGplbmphIHphIHVwb3JhYm8gemFzbG9uYSB6YSB6Z29kb3Zpbm8gZWxlbWVudGEga29uZmlndXJhY2lqZSBJVFNNIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFodGV2YW5hIGRvdm9samVuamEgemEgdXBvcmFibyB6YXNsb25hIHphIHRpc2thbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgSVRTTSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1phaHRldmFuaSBwcml2aWxlZ2lqaSB6YSBicmlzYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdJc2thbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnc2Ftb2Rlam5vIG5hc3Rhdml0ZSBzdGFuamUgaW5jaWRlbnRhIHYgQ0ksIGtvIGplIHZvem92bmljYSBwb3ZlemFuYSBzIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hc3Rhdmkgc3RhbmplIHV2YWphbmphIG5hIHphc2xvbnUgemEgbW5vxb5pxI1uZSBlbGVtZW50ZSBrb25maWd1cmFjaWplIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYXN0YXZpIHN0YW5qZSBpbmNpZGVudGEgbmEgemFzbG9udSB6YSBtbm/FvmnEjW5vIGtvbmZpZ3VyYWNpam8gZWxlbWVudG92IHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ByaWthxb5lIHBvdmV6YXZvIHYgbWVuaWp1LCBraSBvbW9nb8SNYSBwb3ZlemF2byBlbGVtZW50YSBrb25maWd1cmFjaWplIHogZHJ1Z2ltIG9iamVrdG9tIHYgcG9nbGVkdSBwb3ZlxI1hdmUgZWxlbWVudGEga29uZmlndXJhY2lqZSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYcW+ZSBwb3ZlemF2byB2IG1lbmlqdSB6YSBkb3N0b3AgZG8gemdvZG92aW5lIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiBwcmVnbGVkdSBlbGVtZW50YSBrb25maWd1cmFjaWplIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYcW+ZSBwb3ZlemF2byB2IG1lbmlqdSB6YSBkb3N0b3AgZG8gemdvZG92aW5lIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiBwb2dsZWR1IHBvdmXEjWF2ZSB2bWVzbmlrYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnViBtZW5panUgcHJpa2HFvmUgcG92ZXphdm8gemEgYnJpc2FuamUgZWxlbWVudGEga29uZmlndXJhY2lqZSB2IHBvdmXEjWFuZW0gcG9nbGVkdSB2bWVzbmlrYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdQcmlrYcW+ZSBwb3ZlemF2byB2IG1lbmlqdSB6YSBwcmlrYXogcG92ZXphdiBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IG9ibGlraSBkcmV2ZXNuZWdhIHBvZ2xlZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnViBtZW5panUgcHJpa2HFvmUgcG92ZXphdm8gemEgcG9kdm9qaXRldiBrb25maWd1cmFjaWpza2UgZWxlbWVudGEgdiBwcmVnbGVkdSBrb25maWd1cmFjaWpza2loIGVsZW1lbnRvdiB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2HFvmUgcG92ZXphdm8gdiBtZW5panUgemEgcG9kdm9qaXRldiBlbGVtZW50YSBrb25maWd1cmFjaWplIHYgcG9nbGVkdSBwb3ZlxI1hdmUgdm1lc25pa2EgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2HFvmUgcG92ZXphdm8gdiBtZW5panUgemEgdXJlamFuamUgZWxlbWVudGEga29uZmlndXJhY2lqZSB2IHBvZ2xlZHUgcG92ZcSNYXZlIHZtZXNuaWthIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1YgbWVuaWp1IHByaWthxb5lIHBvdmV6YXZvIHphIHZybml0ZXYgdiBwb2dsZWQgcG92ZcSNYXZlIGtvbmZpZ3VyYWNpanNrZSBlbm90ZSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYcW+ZSBwb3ZlemF2byB2IG1lbmlqdSB6YSB0aXNrYW5qZSBlbGVtZW50YSBrb25maWd1cmFjaWplIHYgcG9nbGVkdSBwb3ZlxI1hdmUgdm1lc25pa2EgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ByaWthxb5lIHBvdmV6YXZvIHYgbWVuaWp1IHphIHBvdmXEjWF2byBlbGVtZW50YSBrb25maWd1cmFjaWplIHYgcHJlZ2xlZHUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYcW+ZSB6Z29kb3Zpbm8gZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgKHYgb2JyYXRuZW0gdnJzdG5lbSByZWR1KSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnUHJpdnpldGEga2F0ZWdvcmlqYSwga2kgc2UgcHJpa2HFvmUsIMSNZSBuaSBpemJyYW5hIG5vYmVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa2F0b3IgZWxlbWVudGEga29uZmlndXJhY2lqZSwgbnByLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gUHJpdnpldG8gamUgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnU2Ftb2Rlam5vIHNwcm/Fvmkgc3Byb8W+aWxjYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdSYXpsacSNaWNhIFN0cmluZyBJenJheic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdSYXpsacSNaWNhIFN0cmluZyBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdTcHJvxb5pbG5payByYXpsacSNaWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdBbGkgc2UgbGFoa28gaXp2ZWRiaSBDb25maWdJdGVtQUNMIGl6b2duZW1vIHMgcHJldmVyamFuamVtIG9kdmlzbm9zdGkgcG9saiB2IHByZWRwb21uaWxuaWt1LiBUbyBsYWhrbyBpemJvbGrFoWEgxI1hcyBuYWxhZ2FuamEgb2JyYXpjZXYsIHZlbmRhciBtb3JhIGJpdGkgb25lbW9nb8SNZW5vLCDEjWUgc2UgemEgdGlwZSBJVFNNQ29uZmlnSXRlbS0gaW4gRm9ybS1SZXR1cm5UeXBlIHVwb3JhYmxqYWpvIG1vZHVsaSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdLYXRlcmkgc3Bsb8WhbmkgcG9kYXRraSBzbyBwcmlrYXphbmkgdiBnbGF2aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdyYXpyZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrdGl2bmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZWRwcm9kdWt0aXZuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVrdGl2bm8nOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgcGFsY2EgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBwYWxjZXYgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBwYWxjYSAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBwYWxjYSAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LXBhbMSNbmkgbm9zaWxlYyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEsNzUgcGFsY2EgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgcGFsY2V2ICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS1wYWzEjW5pIG5vc2lsZWMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IHBhbGNhICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMtcGFsxI1ubyBzdG9qYWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwYWxjYSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgcGFsY2V2ICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBwYWxjYSAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IHBhbGNhICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IHBhbGNhICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwYWxjYSAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgcGFsY2EgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHBhbGNhICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBwYWxjZXYgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBwYWxjYSAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IHBhbGNhICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgcGFsY2EgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IHBhbGNhICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHBhbGNhICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IHBhbGNhICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgcGFsY2EgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBwYWxjZXYgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBwYWxjZXYgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IHBhbGNhICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBwYWxjYSAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBwYWxjYSAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBwYWxjZXYgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgcGFsY2EgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ1JhxI11bm92b2RzdHZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnRG9kZWxqZXZhbmplIG5hc2xvdm92JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdVcHJhdml0ZWxqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZ25pIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdWcnN0YSBuYXByYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnWm1vZ2xqaXZvc3QgYmF0ZXJpamUgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdWcnN0YSBiYXRlcmlqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ1N0YXZiYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnVm1lc25payB2b2RpbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdSYXpyZWQgcHJvY2Vzb3JqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnWm1vZ2xqaXZvc3QgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ1ptb2dsaml2b3N0IG5hIGdyYWZpxI1ubyBrYXJ0aWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnxaB0ZXZpbGthIGthcnRpY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdCcmFsbmlrIGthcnRpYyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdWcnN0YSBrYXJ0aWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdQb3RyZGlsYSBzdHJhbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnT2RqZW1hbHNrYSBwcm9ncmFtc2thIG9wcmVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLYXRlZ29yaWphIHN0cmFuayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICfEjGFzb3ZuYSBzdG9wbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdIaXRyb3N0IHVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdQb3RyZGlsYSB6YSBwb2RwaXNvdmFuamUga29kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnS29uZmVyZW7EjW5pIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdQb2dvZGJhIG8gc3ZldG92YW5qdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnUGnFoWl0ZSBuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnU3RpayB6IGRpc3RyaWJ1dGVyamVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnVXByYXZsamFuamUgemFib2puaWtvdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ1BvZ29kYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1Zyc3RhIHBvZ29kYmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdQb2dvZGJlbm8gb2Jkb2JqZSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdQb2dvZGJlbm8gb2Jkb2JqZSBkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdCcmV6xb5pxI1uaSB0ZWxlZm9uICh0ZWxlZm9uIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ1N0cm/FoWtvdm5hIGVub3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnxaB0ZXZpbG8gbGljZW5jJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdEYXR1bSB1c3Rhbm92aXR2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnU3RvamFsbyBwbyBtZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFJlemVydmlyYW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTdHJlxb5uaWsgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXR1bSByYcSNdW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXR1bSBuYXJvxI1pbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0RhdHVtIGdhcmFuY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXR1bSBpemRhamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ05hbWl6bmkgcmHEjXVuYWxuaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ1BvdHJkaWxhIHphIHBvZHBpc292YW5qZSBkb2t1bWVudG92JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdQb3RyZGlsYSB6YSBlLXBvxaF0byAocG90cmRpbGEgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdQb2dvZGJhIG8gemFwb3NsaXR2aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0tvbsSNbmkgbmFzbG92IElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnS29uZWMgcG9kcG9yZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0RhdHVtIGl6dGVrYSB2ZWxqYXZub3N0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnWnVuYW5qaSB0cmRpIGRpc2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdQb8W+YXJuaSB6aWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdWZGVsYW5hIHByb2dyYW1za2Egb3ByZW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnU2tsYWRpxaHEjWVuamUgZW5lcmdpamUgeiB2enRyYWpuaWtvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zha3RvciBvYmxpa2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ1BvZ29kYmEgbyBmcmFuxaFpemknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdCcmV6cGxhxI1uYSBwcm9ncmFtc2thIG9wcmVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdTcGxvxaFuZSBpbmZvcm1hY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpxI1uZSBrYXJ0aWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmacSNbmEga2FydGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ1N0cm9qbmEgb3ByZW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnTW9kZWwgc3Ryb2puZSBvcHJlbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnVGXFvmEgc3Ryb2puZSBvcHJlbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ1NsdcWhYWxrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3Rva29sIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ1VwcmF2bGphbmplIGlkZW50aXRldCBpbiBkb3N0b3BhIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdJbnZlbnRhcm5hIMWhdGV2aWxrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ1N0cm/FoWtpIGludmVyemlqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ8WgdGV2aWxrYSByYcSNdW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGlwa292bmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdNb25pdG9yIExDRCAoemFzbG9uIHMgdGVrb8SNaW1pIGtyaXN0YWxpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBMRUQgKHN2ZXRsZcSNYSBkaW9kYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnU3RhY2lvbmFybmkgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdQcmVub3NuaSByYcSNdW5hbG5payc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ1plbWxqZXBpc25hIMWhaXJpbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdQbGFzdCAxOiBmaXppxI1uYSBwbGFzdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdQbGFzdCAyOiBwbGFzdCBwb2RhdGtvdm5paCBwb3ZlemF2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdQbGFzdCAzOiBvbXJlxb5uYSBwbGFzdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICczLiBwbGFzdDogb21yZcW+bmEgcGxhc3QgKG5hZG9tcmXFvmplKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdTbG9qIDQ6IFRyYW5zcG9ydG5pIHNsb2onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ1Nsb2ogNTogU2Vqbmkgc2xvaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdTbG9qIDY6IFByZWRzdGF2aXR2ZW5pIHNsb2onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdTbG9qIDc6IGFwbGlrYWNpanNraSBzbG9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ1BvZ29kYmEgbyBuYWplbXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaWNlbsSNbmEgcG9nb2RiYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW7EjW5pIGtsanXEjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdWcnN0YSBsaWNlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdPYmRvYmplIGxpY2VuY2Ugb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdPYmRvYmplIGxpY2VuY2UgZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdGVyaWplIGl6IGxpdGlqLcW+ZWxlem92ZWdhIGZvc2ZhdGEgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRpai1pb25za2EgKExpLWlvbikgYmF0ZXJpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdQb2dvZGJhIG8gcG9zb2ppbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ05haGFqYSBzZSB2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ1plbWxqZXBpc25hIGRvbMW+aW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnUHJvaXp2YWphbGVjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdOYWp2ZcSNamEgem1vZ2xqaXZvc3Qgb2JyZW1lbml0dmUgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ1Nwb21pbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ1Zyc3RhIHBvbW5pbG5pa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmkgc3RvamFsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWxuYSDFoXRldmlsa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWxuaS92Z3JhamVuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnT3BpcyBtb2RlbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnTG/EjWxqaXZvc3QgbW9uaXRvcmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1ZlbGlrb3N0IG1vbml0b3JqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ01pxaFrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnT21yZcW+amUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSW5mb3JtYWNpamUgbyBvbXJlxb5qdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpamUgbyBvbXJlxb5qdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnT21yZcW+bmEgcGxhc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWtlbGota2FkbWlqZXZhIChOaUNkKSBiYXRlcmlqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2Vsai1tZXRhbGhpZHJpZG5hIChOaU1IKSBiYXRlcmlqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdTcG9yYXp1bSBvIG5lcmF6a3JpdmFuanUgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdCZWxlxb5uaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnxaB0ZXZpbG8gcHJvY2Vzb3JqZXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnxaB0ZXZpbG8gbW9kdWxvdiBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnxaB0ZXZpbG8gZ3JhZmnEjW5paCBrYXJ0aWMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAob3JnYW5za2Egc3ZldGxlxI1hIGRpb2RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdTdHJvxaFraSBwb3Nsb3ZhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ8WgdGV2aWxrYSBuYXJvxI1pbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdEcnVnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnSXpob2RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1Nwb3JhenVtIG8gcGFydG5lcnN0dnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdUZWxlZm9uc2thIMWhdGV2aWxrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVnJzdGEgdGVsZWZvbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGaXppxI1uYSBqZWRyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1phZ290YXZsamFuamUgbmFwYWphbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnS3VwbGplbm8gdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnR2xvYmluYSByZWdhbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdFbm90ZSBzdG9qYWxhIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnU29iYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ0thcnRpY2EgU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnUG90cmRpbGEgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1Byb2Rham5hIHBvZ29kYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWxpdHNraSB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1phcHJ0YSBzdmluxI1lbm8ta2lzbGluc2thIGJhdGVyaWphIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VyaWpza2EgxaF0ZXZpbGthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1Byb2dyYW1za2Egb3ByZW1hIHphIHN0cmXFvm5pa2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTcG9yYXp1bSBvIHN0b3JpdHZhaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1N0b3JpdHZlbmEgb3puYWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1Zyc3RhIHZ0acSNbmljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1Byb2dyYW1za2Egb3ByZW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnWnZvxI1uaWtpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJkbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1phxI1ldG5pIG5hc2xvdiBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnU2hyYW5qZXZhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUmF6ZGVsZWsgemEgc2hyYW5qZXZhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnUG9kcnXFvm5pY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1BvdnpldGVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVGFuZWsgb2RqZW1hbGVjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdOaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1NrdXBhaiBSQU0gZ3JhZmnEjW5lIGthcnRpY2UgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1NrdXBuaSBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciB6IHphc2xvbm9tIG5hIGRvdGlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnU3RvbHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1ZvemxpxaHEjWUgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnTmFnbGF2bmEgc2x1xaFhbGthIFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbGVmb24gVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnU3BsZXRuYSBrYW1lcmEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/sr_Cyrl_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0N5cmxfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBvcGVyYXRpb24gZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAn0JzQsNC/0LjRgNCw0ZrQtSDQt9CwINC00L7Qu9Cw0LfQvdC1INC/0L7QtNCw0YLQutC1INC30LDRhdGC0LXQstCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAn0JzQsNC/0LjRgNCw0ZrQtSDQt9CwINC40LfQu9Cw0LfQvdC1INC/0L7QtNCw0YLQutC1INC+0LTQs9C+0LLQvtGA0LAnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ9Ce0LLQtNC1INC80L7QttC10YLQtSDQsNC60YLQuNCy0LjRgNCw0YLQuCBSZWFkeTJBZG9wdCDQv9GA0L7RhtC10YHQtSDQv9GA0LjQvNC10YDQsCDQvdCw0ZjQsdC+0ZnQtSDQv9GA0LDQutGB0LUg0LrQvtGY0Lgg0YHRgyDRgdC/0YDQtdC80L3QuCDQt9CwINGD0L/QvtGC0YDQtdCx0YMuINCc0L7Qu9C40LzQviDQvtCx0YDQsNGC0LjRgtC1INC/0LDQttGa0YMg0LTQsCDRmNC1INC80L7QttC00LAg0L3QtdC+0L/RhdC+0LTQvdCwINC00L7QtNCw0YLQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRmNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ9C60LvQsNGB0LAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ9CR0L7RmNCwINGB0YLQsNGC0YPRgdCwINGA0LDRgdC/0L7RgNC10ZLQuNCy0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn0KLQuNC/INGB0YLQsNGa0LAg0LjQvdGG0LjQtNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9CU0LAg0LvQuCDQt9Cw0LjRgdGC0LAg0LbQtdC70LjRgtC1INC00LAg0LjQt9Cx0YDQuNGI0LXRgtC1INC+0LLRgyDQv9GA0L7QvNC10L3Rgz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn0JHQvtGY0LAg0YHRgtCw0YLRg9GB0LAg0YDQsNGB0L/QvtGA0LXRktC40LLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICfQotC40L8g0YHRgtCw0ZrQsCDQuNC90YbQuNC00LXQvdGC0LAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfQodCw0LTRgNC20LDRmCDQuNGB0YLQvtGA0LjRmNCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn0JLRgNC10LzQtSDQutGA0LXQuNGA0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ9Cf0L7QutGA0LXQvdC4INC/0YDQtdGC0YDQsNCz0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfQkdC+0ZjQsCDRgdGC0LDRgtGD0YHQsCDRgNCw0YHQv9C+0YDQtdGS0LjQstCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn0KLQuNC/INGB0YLQsNGa0LAg0LjQvdGG0LjQtNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ9CX0LDQtNGa0Lgg0L/Rg9GCINC/0YDQvtC80LXRmtC10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfQn9GA0L7QvNC10L3QuNC+JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAn0KLQuNC/INC+0LHRmNC10LrRgtCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAn0KTQuNC70YLQtdGAINC/0L4g0YLQuNC/0YMnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ9CU0LAg0LvQuCDQttC10LvQuNGC0LUg0LTQsCDQvdCw0YHRgtCw0LLQuNGC0LU/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ9Cd0LXQvtC/0YXQvtC00LDQvSBFeGFtcGxlUHJvY2Vzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QuNGY0LUg0LTQsNGCINCY0JQg0KHRgtCw0LLQutC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ9Cf0YDQvtC80LXQvdCwICIlcyIg0L3QuNGY0LUg0L3QsNGS0LXQvdCwINGDINCx0LDQt9C4INC/0L7QtNCw0YLQsNC60LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn0J3QuNGY0LUg0LHQuNC70L4g0LzQvtCz0YPRm9C1INC+0LHRgNC40YHQsNGC0LggQ2hhbmdlSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfQndC40ZjQtSDQtNCw0YIgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0LzQvtC20LUg0YHQtSDQv9GA0LjQutCw0LfQsNGC0Lgg0LjRgdGC0L7RgNC40ZjQsNGCLCDRmNC10YAg0L3QuNGY0LUg0LTQsNGCINCY0JQg0KHRgtCw0LLQutC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9Cd0LUg0LzQvtC20LUg0YHQtSDQv9GA0LjQutCw0LfQsNGC0Lgg0LjRgdGC0L7RgNC40ZjQsNGCLCDQvdC40ZjQtSDQtNCw0YIgVGlja2V0SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ9Cd0L7QstCwINCw0LrRhtC40ZjQsCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ9Ce0LHRgNC40YHQsNC9INGD0YHQu9C+0LIgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ9Cf0L7QstC10LfQsNC90L4g0YHQsCAlcyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICfQntCx0YDQuNGB0LDQvdCwINCy0LXQt9CwINGB0LAgJXMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn0J3QtSDQvNC+0LbQtSDRgdC1INC/0YDQuNC60LDQt9Cw0YLQuCDQuNGB0YLQvtGA0LjRmNCw0YIsINC90LjRmNC1INC00LDRgiBUaWNrZXRJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfQn9GA0L7QvNC10L3QsCAiJXMiINC90LjRmNC1INC90LDRktC10L3QsCDRgyDQsdCw0LfQuCDQv9C+0LTQsNGC0LDQutCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn0KDQtdGE0LXRgNC10L3RhtCwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QuNGY0LUg0LTQsNGCIENoYW5nZUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn0J3QtdC80LAg0YDQtdC30YPQu9GC0LDRgtCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ9Cj0L/QvtC30L7RgNC10ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn0J3QtdC80LAg0LTQvtC30LLQvtC70LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn0JHQvtGY0LAg0YHRgtCw0YLRg9GB0LAg0YDQsNGB0L/QvtGA0LXRktC40LLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn0KLQuNC/INGB0YLQsNGa0LAg0LjQvdGG0LjQtNC10L3RgtCwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ9C40LfQvNC10ZLRgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn0JjRgdGC0LjRh9C1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn0J7QvNC+0LPRg9Gb0LDQstCwINC90LDQv9GA0LXQtNC90LUg0YPRgdC70L7QstC1INC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4g0KHQsCDQvtCy0L7QvCDQvtC/0YbQuNGY0L7QvCDQvNC+0ZvQtdGC0LUg0L/RgNC10YLRgNCw0LbQuNCy0LDRgtC4INC90L/RgC4g0L3QsNGB0LvQvtCyINGC0LjQutC10YLQsCDRgdCwINGD0YHQu9C+0LLQuNC80LAg0LrQsNC+ICIoKmtleTEqJiYqa2V5MiopIiDQuNC70LggIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfQntC80L7Qs9GD0ZvQsNCy0LAg0L3QsNC/0YDQtdC00L3QtSDRg9GB0LvQvtCy0LUg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQvtGA0LjRgdC90LjQutCwLiDQodCwINC+0LLQvtC8INC+0L/RhtC40ZjQvtC8INC80L7Rm9C10YLQtSDQv9GA0LXRgtGA0LDQttC40LLQsNGC0Lgg0L3Qv9GALiDQvdCw0YHQu9C+0LIg0YLQuNC60LXRgtCwINGB0LAg0YPRgdC70L7QstC40LzQsCDQutCw0L4gIigqa2V5MSomJiprZXkyKikiINC40LvQuCAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ9CU0L7QtNC10ZnQtdC90LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC00L7QtNC10ZnQtdC90LUg0YTQuNGA0LzQuCDQutC70LjRmNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0LTQvtC00LXRmdC10L3QtSDQutC70LjRmNC10L3RgtGDINC60L7RgNC40YHQvdC40LrRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQiDQv9C+0LTQtdGI0LDQstCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn0J/RgNC+0LLQtdGA0LAg0ZjQtdC00LjQvdGB0YLQstC10L3QvtCzINC40LzQtdC90LAg0YHQsNC80L4g0YMg0L7QutCy0LjRgNGDINC40YHRgtC1INC60LvQsNGB0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCAoXCfQutC70LDRgdCwXCcpINC40LvQuCDQs9C70L7QsdCw0LvQvdC+IChcJ9Cz0LvQvtCx0LDQu9C90L5cJyksINGI0YLQviDQt9C90LDRh9C4INC00LAg0ZjQtSDRgdCy0LDQutCwINC/0L7RgdGC0L7RmNC10ZvQsCDQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdCwINGB0YLQsNCy0LrQsCDRg9C30LXRgtCwINGDINC+0LHQt9C40YAg0YMg0L/RgNC+0LLQtdGA0Lgg0LTRg9C/0LvQuNC60LDRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn0JTQvtC00LDQstCw0ZrQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfQo9GA0LXRktC40LLQsNGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQtNC+0LPQsNGS0LDRmNCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0LrQvtGY0Lgg0L7QvNC+0LPRg9Gb0LDQstCwINCx0LXQu9C10LbQtdGa0LUg0YMg0LjRgdGC0L7RgNC40ZjQsNGCINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAn0JjRgdGC0L7RgNC40ZjQsNGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfQqNGC0LDQvNC/0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICfQlNC10YLQsNGZ0L3QuCDQv9GA0LjQutCw0Lcg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC90LUg0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfQntCz0YDQsNC90LjRh9C10ZrQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDQv9C+INGB0YLRgNCw0L3QuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ9CR0LDQt9CwINC/0L7QtNCw0YLQsNC60LAg0YPQv9GA0LDQstGZ0LDRmtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRmNC+0LwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfQnNC+0LTRg9C7INC80LDRgdC+0LLQvdC1INCw0LrRhtC40ZjQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjQvCDRgdGC0LDQstC60LDQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdCwINGB0YLQsNCy0LrQsCDQv9GA0LXRgtGA0LDQttGD0ZjQtSDQv9C+0LfQsNC00LjQvdGB0LrQuCDRgNGD0YLQtdGAINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn0JrRgNC10LjRgNCw0ZrQtSDQuCDRg9C/0YDQsNCy0ZnQsNGa0LUg0LTQtdGE0LjQvdC40YbQuNGY0LAg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ9Cf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INC/0L7QtNCw0YbQuCDQt9CwINC60L7RgNC40YjRm9C10ZrQtSDQvdCwINCw0YLRgNC40LHRg9GC0LjQvNCwINC30LAg0L/RgNC40LrQsNC3INC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwLiDQn9GA0LjQvNC10YA6ICJUaWNrZXRDcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtUaWNrZXRDcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O1RpY2tldENyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAn0J/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0L/QvtC00LDRhtC4INC30LAg0LrQvtGA0LjRiNGb0LXRmtC1INC90LAg0LDRgtGA0LjQsdGD0YLQuNC80LAg0LfQsCDQv9GA0LjQutCw0Lcg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAuINCf0YDQuNC80LXRgDogIlRpY2tldENyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnRNb250aD0xMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnREYXk9NDtUaWNrZXRDcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RvcE1vbnRoPTExO1RpY2tldENyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LDQutGG0LjRmNC1INCz0LTQtSDRmNC1INC00YPQs9C80LUg0L/QvtGB0YLQsNCy0LrQuCDQtNC+0YHRgtGD0L/QvdC+INGDINC/0L7QstC10LfQsNC90L7QvCDQs9GA0LDRhNC40YfQutC+0Lwg0LXQu9C10LzQtdC90YLRgyDQvtCx0ZjQtdC60YLQsCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiDQnNC+0LvQuNC80L4g0LTQsCDQuNC80LDRgtC1INC90LAg0YPQvNGDINC00LAg0L7QstC1INCQ0LrRhtC40ZjQtSDQvNC+0YDQsNGY0YMg0LTQsCDQsdGD0LTRgyDRgNC10LPQuNGB0YLRgNC+0LLQsNC90LUg0YMg0YHQu9C10LTQtdGb0LjQvCBKUyDQuCBDU1Mg0LTQsNGC0L7RgtC10LrQsNC80LA6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzINC4IENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQv9C+0YLRgNC10LHQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0LHRgNC40YHQsNGa0LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INC60YDQvtC3INCz0LXQvdC10YDQuNGH0LrQuCDQuNC90YLQtdGA0YTQtdGY0YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC90LXQvtC/0YXQvtC00L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINC00L7QsdC40ZjQsNGa0LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INC60L7RgNC40YjRm9C10ZrQtdC8INCz0LXQvdC10YDQuNGH0LrQvtCzINC40L3RgtC10YDRhNC10ZjRgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQvdC10L7Qv9GF0L7QtNC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDQv9GA0LXRgtGA0LDQs9GDIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDQutC+0YDQuNGI0ZvQtdGa0LXQvCDQs9C10L3QtdGA0LjRh9C60L7QsyDQuNC90YLQtdGA0YTQtdGY0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L3QtdC+0L/RhdC+0LTQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0LTQvtCx0LjRmNCw0ZrQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0LrQvtGA0LjRiNGb0LXRmtC10Lwg0LPQtdC90LXRgNC40YfQutC+0LMg0LjQvdGC0LXRgNGE0LXRmNGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LzQvtC00YPQuyDQv9GA0LXQs9C70LXQtNCwINC30LAg0LzQsNC70Lgg0L/RgNC40LrQsNC3INC70LjRgdGC0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuC4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDRgNC10LPRg9C70LDRgNC90LUg0LjQt9GA0LDQt9C1INC30LAg0YHQstCw0LrRgyDQutC70LDRgdGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGA0LDQtNC4INC/0YDQvtCy0LXRgNC1INC90LDQt9C40LLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQuCDQv9GA0LjQutCw0LfQsCDQv9GA0LjQv9Cw0LTQsNGY0YPRm9C40YUg0L/QvtGA0YPQutCwINC+INCz0YDQtdGI0LrQsNC80LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INCw0YLRgNC40LHRg9GCINGC0LjQutC10YLQsCDQt9CwINGB0L7RgNGC0LjRgNCw0ZrQtSDRgtC40LrQtdGC0LAg0YMg0YDQtdC30YPQu9GC0LDRgtGDINC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwINC40L3RgtC10YDRhNC10ZjRgdCwINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0LDRgtGA0LjQsdGD0YIg0YLQuNC60LXRgtCwINC30LAg0YHQvtGA0YLQuNGA0LDRmtC1INGC0LjQutC10YLQsCDRgyDRgNC10LfRg9C70YLQsNGC0YMg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAg0LjQvdGC0LXRgNGE0LXRmNGB0LAg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0LDRgtGA0LjQsdGD0YIg0YLQuNC60LXRgtCwINC30LAg0YHQvtGA0YLQuNGA0LDRmtC1INGC0LjQutC10YLQsCDRgyDRgNC10LfRg9C70YLQsNGC0YMg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAg0YMg0L7QstC+0Zgg0L7Qv9C10YDQsNGG0LjRmNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDRgNC10LTQvtGB0LvQtdC0INGC0LjQutC10YLQsCAo0L/QvtGB0LvQtSDRgdC+0YDRgtC40YDQsNGa0LAg0L/QviDQv9GA0LjQvtGA0LjRgtC10YLRgykg0YMg0L/RgNC10LPQu9C10LTRgyDQv9GA0LXRgtGA0LDQs9C1INGC0LjQutC10YLQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0YDQtdGA0LDRgtC10YDQsC4g0JPQvtGA0LU6INCd0LDRmNGB0YLQsNGA0LjRmNC4INC90LAg0LLRgNGF0YMuINCU0L7Qu9C1OiDQndCw0ZjQvdC+0LLQuNGY0LUg0L3QsCDQstGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0YDQtdC00L7RgdC70LXQtCDRgtC40LrQtdGC0LAg0YMg0L/RgNC10LPQu9C10LTRgyDQv9GA0LXRgtGA0LDQs9C1INGA0LXQt9GD0LvRgtCw0YLQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwLiDQk9C+0YDQtTog0J3QsNGY0YHRgtCw0YDQuNGY0Lgg0L3QsCDQstGA0YXRgy4g0JTQvtC70LU6INCd0LDRmNC90L7QstC40ZjQtSDQvdCwINCy0YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGA0LXQtNC+0YHQu9C10LQg0YLQuNC60LXRgtCwINGDINC/0YDQtdCz0LvQtdC00YMg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAg0YMg0L7QstC+0Zgg0L7Qv9C10YDQsNGG0LjRmNC4LiDQk9C+0YDQtTog0J3QsNGY0YHRgtCw0YDQuNGY0Lgg0L3QsCDQstGA0YXRgy4g0JTQvtC70LU6INCd0LDRmNC90L7QstC40ZjQtSDQvdCwINCy0YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INC/0YDQuNC60LDQtyDQv9GA0LXRgtGA0LDQs9C1INCw0YLRgNC40LHRg9GC0LAg0YLQuNC60LXRgtCwINC30LAg0L/RgNC40LrQsNC3INC10LrRgNCw0L3QsCDQv9GA0LXRgtGA0LDQs9C1INGC0LjQutC10YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0L/RgNC40LrQsNC3INC/0YDQtdGC0YDQsNCz0LUg0LDRgtGA0LjQsdGD0YLQsCDRgtC40LrQtdGC0LAg0LfQsCDQv9GA0LjQutCw0Lcg0LXQutGA0LDQvdCwINC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwLiDQn9GA0LjQvNC10YA6ICJLZXkiINC80L7RgNCwINC40LzQsNGC0Lgg0L3QsNC30LjQsiDQtNC40L3QsNC80LjRh9C60L7QsyDQv9C+0ZnQsCwg0YMg0L7QstC+0Lwg0YHQu9GD0YfQsNGY0YMgXCdYXCcsICJDb250ZW50IiDQvNC+0YDQsCDQuNC80LDRgtC4INCy0YDQtdC00L3QvtGB0YIg0LTQuNC90LDQvNC40YfQutC+0LMg0L/QvtGZ0LAg0YMg0LfQsNCy0LjRgdC90L7RgdGC0Lgg0L7QtCDRgtC40L/QsCDQtNC40L3QsNC80LjRh9C60L7QsyDQv9C+0ZnQsCwg0KLQtdC60YHRgjogXCdhIHRleHRcJywg0J/QsNC00LDRmNGD0ZvQuDogXCcxXCcsINCU0LDRgtGD0Lwv0JLRgNC10LzQtTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnINC4L9C40LvQuCBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INC/0L7QtNC+0LHRmNC10LrQsNGCINC60LvQsNGB0LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdCwINGB0YLQsNCy0LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INCy0LjRgdC40L3RgyDQt9CwINC60L7QvNC/0L7QvdC10L3RgtGDIFJpY2ggVGV4dCBFZGl0b3Ig0LfQsCDQvtCy0LDRmCDQv9GA0LjQutCw0Lcg0LXQutGA0LDQvdCwLiDQo9C90LXRgdC4INCx0YDQvtGYICjQv9C40LrRgdC10LvQuCkg0LjQu9C4INC/0YDQvtGG0LXQvdGC0YPQsNC70L3RgyDQstGA0LXQtNC90L7RgdGCICjRgNC10LvQsNGC0LjQstC90YMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INCx0YDQvtGYINGA0LXQtNC+0LLQsCDQt9CwINC10LTQuNGC0L7RgCDQtNC10YTQuNC90LjRhtC40ZjQtSBDSSDRgyDQsNC00LzQuNC90LjRgdGC0YDQsNGC0LjQstC90L7QvCDQuNC90YLQtdGA0YTQtdGY0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDRgNC10LTQvtGB0LvQtdC0INC40L3RhtC40LTQtdC90YLQvdC40YUg0YHRgtCw0ZrQsCDQvtC0INCy0LjRgdC+0LrQvtCzICjQvdC/0YAg0LrRgNC40YLQuNGH0L3Qvikg0LTQviDQvdC40YHQutC+0LMgKNC90L/RgCDRhNGD0L3QutGG0LjQvtC90LDQu9C90L4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0YDQtdC70LXQstCw0L3RgtC90LAg0YHRgtCw0ZrQsCDRgNCw0YHQv9C+0YDQtdGS0LjQstCw0ZrQsCDQs9C00LUg0L/QvtCy0LXQt9Cw0L3QuCDRgtC40LrQtdGC0Lgg0LzQvtCz0YMg0LTQsCDRg9GC0LjRh9GDINC90LAg0YHRgtCw0YLRg9GBIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LPRgNCw0L3QuNGG0YMg0L/RgNC10YLRgNCw0LPQtSDQt9CwINC10LrRgNCw0L0gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INCz0YDQsNC90LjRhtGDINC/0YDQtdGC0YDQsNCz0LUg0LfQsCDQtdC60YDQsNC9IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQs9GA0LDQvdC40YbRgyDQv9GA0LXRgtGA0LDQs9C1INC30LAg0LXQutGA0LDQvSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LPRgNCw0L3QuNGG0YMg0L/RgNC10YLRgNCw0LPQtSDQt9CwINC10LrRgNCw0L0gQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0YDQuNC60LDQt9Cw0L3QtSDQutC+0LvQvtC90LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDRgyDRgtCw0LHQtdC70Lgg0LLQtdC30LAg0YMg0LfQsNCy0LjRgdC90L7RgdGC0Lgg0L7QtCDQutC70LDRgdC1LiDQo9C60L7Qu9C40LrQviDQvdC1INC/0L7RgdGC0L7RmNC4INGD0L3QvtGBINC30LAg0L/QvtGY0LXQtNC40L3QsNGH0L3RgyDQutC70LDRgdGDLCDQsdC40ZvQtSDQv9GA0LjQutCw0LfQsNC90LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90LUg0LrQvtC70L7QvdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9GA0LjQutCw0LfQsNC90LUg0LrQvtC70L7QvdC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0YMg0YLQsNCx0LXQu9C4INCy0LXQt9CwINGDINC30LDQstC40YHQvdC+0YHRgtC4INC+0LQg0LrQu9Cw0YHQtS4g0KHQstCw0LrQuCDRg9C90L7RgSDQvNC+0YDQsCDRgdCw0LTRgNC20LDRgtC4INC/0YDQtdGE0LjQutGBINGB0LAg0L3QsNC30LjQstC+0Lwg0LrQu9Cw0YHQtSDQuCDQtNCy0L7RgtCw0YfQutC+0LwgKNC90L/RgC4gQ29tcHV0ZXI6OikuINCf0L7RgdGC0L7RmNC4INC/0LDRgCDQsNGC0YDQuNCx0YPRgtCwINC60L7RmNC4INGB0YMg0LfQsNGY0LXQtNC90LjRh9C60Lgg0LfQsCDRgdCy0LUg0LrQu9Cw0YHQtSAo0L3Qv9GALiDQt9CwINC60LvQsNGB0YMgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCX0LAg0L/RgNC40LrQsNC3INC/0L7RmNC10LTQuNC90LDRh9C90LjRhSDQsNGC0YDQuNCx0YPRgtCwINC40Lcg0LTQtdGE0LjQvdC40YbQuNGY0LUsINC80L7RgNCw0YLQtSDQutC+0YDQuNGB0YLQuNGC0Lgg0YHQu9C10LTQtdGb0YMg0YjQtdC80YMgKNC/0YDQuNC80LXRgCDQt9CwINC60LvQsNGB0YMgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4g0KPQutC+0LvQuNC60L4g0L3QtSDQv9C+0YHRgtC+0ZjQuCDRg9C90L7RgSDQt9CwINC/0L7RmNC10LTQuNC90LDRh9C90YMg0LrQu9Cw0YHRgywg0LHQuNGb0LUg0L/RgNC40LrQsNC30LDQvdC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC1INC60L7Qu9C+0L3QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC60L7RmNC1INGB0YMg0YHRgtCw0LLQutC1INGB0LvQvtCx0L7QtNC90LUg0LfQsCBcJ0FjdGlvblwnINGDINGC0YDQtdGb0LXQvCDQvdC40LLQvtGDIEFDTCDRgdGC0YDRg9C60YLRg9GA0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQutC+0ZjQtSDRgdGDINGB0YLQsNCy0LrQtSDRgdC70L7QsdC+0LTQvdC1INGDINC/0YDQstC+0Lwg0L3QuNCy0L7RgyBBQ0wg0YHRgtGA0YPQutGC0YPRgNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC60L7RmNC1INGB0YMg0YHRgtCw0LLQutC1INGB0LvQvtCx0L7QtNC90LUg0YMg0LTRgNGD0LPQvtC8INC90LjQstC+0YMgQUNMINGB0YLRgNGD0LrRgtGD0YDQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC60L7RmNC4INGC0LjQvyDQstC10LfQtSAo0LPQu9C10LTQsNC90L4g0LjQtyDQv9C10YDRgdC/0LXQutGC0LjQstC1INGC0LjQutC10YLQsCkg0LzQvtC20LUg0LTQsCDRg9GC0LjRh9C1INC90LAg0L/QvtCy0LXQt9Cw0L3RgyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC60L7RmNC4INGC0LjQvyDRgtC40LrQtdGC0LAg0LzQvtC20LUg0LTQsCDRg9GC0LjRh9C1INC90LAg0YHRgtCw0YLRg9GBINC/0L7QstC10LfQsNC90LUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQkdGA0LjRgdCw0ZrQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ9CR0L7RmNCwINGB0YLQsNGC0YPRgdCwINGA0LDRgdC/0L7RgNC10ZLQuNCy0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ9CR0L7RmNCwINGB0YLQsNGC0YPRgdCwINGA0LDRgdC/0L7RgNC10ZLQuNCy0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ9CU0YPQv9C70LjQutCw0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0YMg0LXQutGA0LDQvdGDINC00L7QtNCw0YLQvdC40YUgSVRTTSDQv9C+0ZnQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0YMg0L/RgNC10LPQu9C10LTRgyBGQVEg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0YMg0LXQutGA0LDQvdGDINC/0YDQtdGC0YDQsNCz0LUg0L/RgNC+0LzQtdC90LAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfQntC80L7Qs9GD0ZvQsNCy0LAg0LzQsNGB0L7QstC90YMg0LDQutGG0LjRmNGDINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNC8INGB0YLQsNCy0LrQsNC80LAg0YMg0L/RgNC40YHRgtGD0L/QvdC+0Lwg0YHQuNGB0YLQtdC80YMg0L7Qv9C10YDQsNGC0LXRgNCwINC90LAg0LLQuNGI0LUg0L7QtCDRmNC10LTQvdC1INGB0YLQsNCy0LrQtSDQuNGB0YLQvtCy0YDQtdC80LXQvdC+Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn0JDQutGC0LjQstC40YDQsCDRgdCy0L7RmNGB0YLQstC+INC80LDRgdC+0LLQvdC1INCw0LrRhtC40ZjQtSDQvdCwINC60L7QvdGE0LjQs9C40YDQsNGG0LjQvtC90LjQvCDRgdGC0LDQstC60LDQvNCwINGB0LDQvNC+INC30LAg0LjQt9C70LjRgdGC0LDQvdC1INCz0YDRg9C/0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC00L7Qs9Cw0ZLQsNGY0LAg0LfQsCDQv9C+0LTQtdGI0LDQstCw0ZrQtSDRgdGC0LDRgtGD0YHQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INC/0YDQuNC70LjQutC+0Lwg0L/QvtGB0YLQsNCy0ZnQsNGa0LAg0LLQtdC30LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LDRhtC40ZjQsCDQvNC+0LTRg9C70LAg0LPQtdC90LXRgNC40YfQutC+0LMg0LjQvdGC0LXRgNGE0LXRmNGB0LAg0LfQsCDRgdC70L7RmCDQv9C+0LfQuNCy0LDQvtGG0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRmNCwINC80L7QtNGD0LvQsCDQs9C10L3QtdGA0LjRh9C60L7QsyDQuNC90YLQtdGA0YTQtdGY0YHQsCDQt9CwINGB0LvQvtGYINC/0L7Qt9C40LLQsNC+0YbQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRmNCwINC80L7QtNGD0LvQsCDQs9C10L3QtdGA0LjRh9C60L7QsyDQuNC90YLQtdGA0YTQtdGY0YHQsCDQt9CwINGB0LvQvtGYINC/0L7Qt9C40LLQsNC+0YbQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICfQn9GA0LXQs9C70LXQtCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICfQotC40L8g0YHRgtCw0ZrQsCDQuNC90YbQuNC00LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ9Ci0LjQvyDRgdGC0LDRmtCwINC40L3RhtC40LTQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9C90Lgg0LHRgNC+0Zgg0YLQuNC60LXRgtCwINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INGDINGA0LXQt9GD0LvRgtCw0YLRgyDQvtCy0LUg0L7Qv9C10YDQsNGG0LjRmNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ9Cc0L7QtNGD0Lsg0LfQsCDQv9GA0L7QstC10YDRgyDQs9GA0YPQv9C1INC+0LTQs9C+0LLQvtGA0L3QtSDQt9CwINC60LvQsNGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQt9CwINC/0YDQvtCy0LXRgNGDINCz0YDRg9C/0LUg0L7QtNCz0L7QstC+0YDQvdC1INC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3RgyDRgdGC0LDQstC60YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn0JzQvtC00YPQuyDQt9CwINCz0LXQvdC10YDQuNGB0LDRmtC1INGB0YLQsNGC0LjRgdGC0LjQutC1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdGA0L7RmCDRgtC40LrQtdGC0LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9GA0LjQutCw0LfQsNC90Lgg0L3QsCDRgdCy0LDQutC+0Zgg0YHRgtGA0LDQvdC4INGA0LXQt9GD0LvRgtCw0YLQsCDQv9GA0LXRgtGA0LDQs9C1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHRgNC+0Zgg0YLQuNC60LXRgtCwINC60L7RmNC4INGb0LUg0LHQuNGC0Lgg0L/RgNC40LrQsNC30LDQvdC4INC90LAg0YHQstCw0LrQvtGYINGB0YLRgNCw0L3QuCDRgNC10LfRg9C70YLQsNGC0LAg0L/RgNC10YLRgNCw0LPQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQutC70LjRmNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfQn9GA0LXQs9C70LXQtC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGB0YLQsNGC0YPRgdC1INC/0YDQuNC80LXQvdC1INC90LAg0L/RgNC40LrQsNC30YMg0L/QvtGB0YLQsNCy0LrQuCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YTQuNC70YLQtdGAINC60L7Qu9C+0L3QsCDRgyDRg9C80LDRmtC10L3QvtC8INC/0YDQtdCz0LvQtdC00YMg0YLQuNC60LXRgtCwLiDQndCw0L/QvtC80LXQvdCwOiDQv9C+0LTQtdGI0LDQstCw0ZrQtSBcJ0FjdGl2ZVwnINC90LAgMCDRm9C1INGB0LDQvNC+INC+0L3QtdC80L7Qs9GD0ZvQuNGC0Lgg0L7Qv9C10YDQsNGC0LXRgNC40LzQsCDQtNCwINC80LXRmtCw0ZjRgyDRgdCy0L7RmNCwINC70LjRh9C90LAg0L/QvtC00LXRiNCw0LLQsNGa0LAg0LjQtyDQvtCy0LUg0LPRgNGD0L/QtSwg0LDQu9C4INGb0LUg0LDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YDQuCDQuCDQtNCw0ZnQtSDQvNC+0ZvQuCDQtNCwINC40YUg0LzQtdGa0LDRmNGDINGDINGa0LjRhdC+0LLQviDQuNC80LUuINCf0L7QtNC10YHQuNGC0LUgXCdQcmVmZXJlbmNlR3JvdXBcJyDQtNCwINCx0LjRgdGC0LUg0L7QtNGA0LXQtNC40LvQuCDRgyDQutC+0Lwg0LTQtdC70YMg0LjQvdGC0LXRgNGE0LXRmNGB0LAg0L7QstCwINC/0L7QtNC10YjQsNCy0LDRmtCwINGC0YDQtdCx0LAg0LTQsCDQsdGD0LTRgyDQv9GA0LjQutCw0LfQsNC90LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDQsdC+0ZjQtSDRgdGC0LDRgtGD0YHQsCDQv9GA0LjQvNC10L3QtSDQvdCwINC/0YDQuNC60LDQt9GDINC/0L7RgdGC0LDQstC60Lgg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGB0YLQsNGC0YPRgdC1INC/0YDQuNC80LXQvdC1INC90LAg0L/RgNC40LrQsNC30YMg0L/QvtGB0YLQsNCy0LrQuCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINCw0YLRgNC40LHRg9GC0LUg0YPQt9C+0YDQutCwINCz0YDRg9C/0LUg0LfQsCDQtNC+0LfQstC+0LvQtSDQvtC/0YjRgtC10LMg0LrQsNGC0LDQu9C+0LPQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGB0YLQsNGC0YPRgdC1INC/0YDQuNC80LXQvdC1INC90LAg0L/RgNC40LrQsNC30YMg0L/QvtGB0YLQsNCy0LrQuCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGC0LDRgtGD0YHQtSDQv9GA0LjQvNC10L3QtSDQvdCwINC/0YDQuNC60LDQt9GDINC/0L7RgdGC0LDQstC60Lgg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGC0YDQsNC90LjRhtC1ICjQvdCwINC60L7RmNC40LzQsCDRgdGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC/0YDQuNC60LDQt9Cw0L3QtSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGB0YLQsNGC0YPRgdC1INC/0YDQuNC80LXQvdC1INC90LAg0L/RgNC40LrQsNC30YMg0L/QvtGB0YLQsNCy0LrQuCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtCw0YLRg9GB0LUg0L/RgNC40LzQtdC90LUg0L3QsCDQv9GA0LjQutCw0LfRgyDQv9C+0YHRgtCw0LLQutC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtCw0YLRg9GB0LUg0L/RgNC40LzQtdC90LUg0L3QsCDQv9GA0LjQutCw0LfRgyDQv9C+0YHRgtCw0LLQutC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICfQmNC30LLRgNGI0LDQstCwINC/0L7QtNC10YjQtdC90YMg0LDQutGG0LjRmNGDINC30LAg0YHQstCw0LrQuCDQtNC+0LPQsNGS0LDRmCAo0LrQsNC+INC/0L7Qt9C40LLQsNC70LDRhikg0LfQsCDRgdCy0LDQutC4INC60L7QvdGE0LjQs9GD0YDQuNGB0LDQvSDQstC10LEg0YHQtdGA0LLQuNGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAn0JPRgNGD0L/QsCDQv9GA0LjRgdGC0YPQv9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCDQv9GA0LXRgtGA0LDQs9C1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINGD0L/QvtGC0YDQtdCx0YMg0LXQutGA0LDQvdCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCDQv9GA0LXRgtGA0LDQs9C1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCDQv9GA0LXRgtGA0LDQs9C1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINGD0L/QvtGC0YDQtdCx0YMg0LXQutGA0LDQvdCwINC00LXRgtCw0LvQvdC+0LMg0L/RgNC40LrQsNC30LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINGD0L/QvtGC0YDQtdCx0YMg0LXQutGA0LDQvdCwINC00L7QtNCw0LLQsNGa0LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINGD0L/QvtGC0YDQtdCx0YMg0LXQutGA0LDQvdCwINC40LfQvNC10L3QtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINGD0L/QvtGC0YDQtdCx0YMg0LXQutGA0LDQvdCwINC40YHRgtC+0YDQuNGY0LDRgtCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINGD0L/QvtGC0YDQtdCx0YMg0LXQutGA0LDQvdCwINGI0YLQsNC80L/QtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ9Cf0L7RgtGA0LXQsdC90LAg0L/RgNCw0LLQsCDQt9CwINCx0YDQuNGB0LDRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ9Cf0YDQtdGC0YDQsNCz0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ9Cf0L7RgdGC0LDQstGZ0LAg0YHRgtCw0ZrQtSDQuNC90YbQuNC00LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0LrQsNC00LAg0ZjQtSDRgtC40LrQtdGCINC/0L7QstC10LfQsNC9INGB0LAg0YHRgtCw0LLQutC+0LwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDRgdGC0LDRgtGD0YEg0L/RgNC40LzQtdC90LUg0L3QsCDQtdC60YDQsNC90YMg0LzQsNGB0L7QstC90LUg0LDQutGG0LjRmNC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDRgdGC0LDRgtGD0YEg0LjQvdGG0LjQtNC10L3RgtCwINC90LAg0LXQutGA0LDQvdGDINC80LDRgdC+0LLQvdC1INCw0LrRhtC40ZjQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQutC+0ZjQsCDQvtC80L7Qs9GD0ZvQsNCy0LAg0L/QvtCy0LXQt9C40LLQsNGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YHQsCDQtNGA0YPQs9C40Lwg0L7QsdGY0LXQutGC0L7QvCDQvdCwINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGY0LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQv9GA0LjRgdGC0YPQvyDQuNGB0YLQvtGA0LjRmNCw0YLRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQvdCwINC/0YDQtdCz0LvQtdC00YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0L/RgNC40YHRgtGD0L8g0LjRgdGC0L7RgNC40ZjQsNGC0YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0L3QsCDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0LHRgNC40YHQsNGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0L3QsCDRmtC10L3QvtC8INC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINGD0LzQvdC+0LbQsNCy0LDRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC90LAg0L/RgNC10LPQu9C10LTRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDRg9C80L3QvtC20LDQstCw0ZrQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQvdCwINGa0LXQvdC+0Lwg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0LjQt9C80LXQvdGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC90LAg0ZrQtdC90L7QvCDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQv9C+0LLRgNCw0YLQsNC6INC90LAg0LTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1ICDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINGI0YLQsNC80L/RgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQvdCwINGa0LXQvdC+0Lwg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINC00LXRgtCw0ZnQvdC4INC/0YDQuNC60LDQtyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQvdCwINC/0YDQtdCz0LvQtdC00YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC30YPRmNC1INC40YHRgtC+0YDQuNGY0LDRgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSAo0L7QsdGA0L3Rg9GCINGA0LXQtNC+0YHQu9C10LQpINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90YMg0YHRgtCw0LLQutGDLCDQvdC/0YAuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiDQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviDRmNC1IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn0LrQu9Cw0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfQs9C70L7QsdCw0LvQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn0L/QvtGB0YIt0L/RgNC+0LTRg9C60YbQuNGY0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ9C/0YDQtS3Qv9GA0L7QtNGD0LrRhtC40ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn0L/RgNC+0LTRg9C60YbQuNGY0LAnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICfQndCw0LvQvtCzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfQkNC00LzQuNC90LjRgdGC0YDQsNGG0LjRmNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ9CY0L3RgtC10YDRhNC10ZjRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICfQmtC70LjRmNC10L3RgtGB0LrQuCDRgdC10YDRgtC40YTQuNC60LDRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ9Ci0LjQvyDRgdCw0LTRgNC20LDRmNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdWcmVtZSBrcmVpcmFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICfQkdC10YHQv9C70LDRgtC90LggKionOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfQn9GA0LXQs9C70LXQtCDRgNC10LfRg9C70YLQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfQodC/0L7RgNCw0LfRg9C8INC+INC90LjQstC+0YMg0YPRgdC70YPQs9C1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfQodGC0LDQvdC00LDRgNC00LDQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/sr_Latn_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0xhdG5fSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBvcGVyYXRpb24gZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3IgaW5jb21pbmcgcmVxdWVzdCBkYXRhJ30gPSAnTWFwaXJhbmplIHphIGRvbGF6bmUgcG9kYXRrZSB6YWh0ZXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnTWFwaXJhbmplIHphIGl6bGF6bmUgcG9kYXRrZSBvZGdvdm9yYSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnT3ZkZSBtb8W+ZXRlIGFrdGl2aXJhdGkgUmVhZHkyQWRvcHQgcHJvY2VzZSBwcmltZXJhIG5hamJvbGplIHByYWtzZSBrb2ppIHN1IHNwcmVtbmkgemEgdXBvdHJlYnUuIE1vbGltbyBvYnJhdGl0ZSBwYcW+bmp1IGRhIGplIG1vxb5kYSBuZW9waG9kbmEgZG9kYXRuYSBrb25maWd1cmFjaWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ2tsYXNhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdCb2phIHN0YXR1c2EgcmFzcG9yZcSRaXZhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnVGlwIHN0YW5qYSBpbmNpZGVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnRGEgbGkgemFpc3RhIMW+ZWxpdGUgZGEgaXpicmnFoWV0ZSBvdnUgcHJvbWVudT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnQm9qYSBzdGF0dXNhIHJhc3BvcmXEkWl2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ1RpcCBzdGFuamEgaW5jaWRlbnRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnU2FkcsW+YWogaXN0b3JpamF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnVnJlbWUga3JlaXJhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1Bva3JlbmkgcHJldHJhZ3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ09ncmFuacSNZW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0JvamEgc3RhdHVzYSByYXNwb3JlxJFpdmFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ1RpcCBzdGFuamEgaW5jaWRlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1phZG5qaSBwdXQgcHJvbWVuamVubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdQcm9tZW5pbyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ1RpcCBvYmpla3RhJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnRmlsdGVyIHBvIHRpcHUnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ0RhIGxpIMW+ZWxpdGUgZGEgbmFzdGF2aXRlPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdOZW9waG9kYW4gRXhhbXBsZVByb2Nlc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05pamUgZGF0IElEIFN0YXZrZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdQcm9tZW5hICIlcyIgbmlqZSBuYcSRZW5hIHUgYmF6aSBwb2RhdGFrYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdOaWplIGJpbG8gbW9ndcSHZSBvYnJpc2F0aSBDaGFuZ2VJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ05pamUgZGF0ICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZSBtb8W+ZSBzZSBwcmlrYXphdGkgaXN0b3JpamF0LCBqZXIgbmlqZSBkYXQgSUQgU3RhdmtlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lIG1vxb5lIHNlIHByaWthemF0aSBpc3RvcmlqYXQsIG5pamUgZGF0IFRpY2tldElEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOb3ZhIGFrY2lqYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ09icmlzYW4gdXNsb3YgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ1BvdmV6YW5vIHNhICVzIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ09icmlzYW5hIHZlemEgc2EgJXMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmUgbW/FvmUgc2UgcHJpa2F6YXRpIGlzdG9yaWphdCwgbmlqZSBkYXQgVGlja2V0SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnUHJvbWVuYSAiJXMiIG5pamUgbmHEkWVuYSB1IGJhemkgcG9kYXRha2EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbmNhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmlqZSBkYXQgQ2hhbmdlSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdOZW1hIHJlenVsdGF0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdVcG96b3JlbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdOZW1hIGRvenZvbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnQm9qYSBzdGF0dXNhIHJhc3BvcmXEkWl2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUaXAgc3RhbmphIGluY2lkZW50YSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdpem1lxJF1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdJc3RpxI1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnT21vZ3XEh2F2YSBuYXByZWRuZSB1c2xvdmUgcHJldHJhZ2UgdGlrZXRhIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuIFNhIG92b20gb3BjaWpvbSBtb8SHZXRlIHByZXRyYcW+aXZhdGkgbnByLiBuYXNsb3YgdGlrZXRhIHNhIHVzbG92aW1hIGthbyAiKCprZXkxKiYmKmtleTIqKSIgaWxpICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnT21vZ3XEh2F2YSBuYXByZWRuZSB1c2xvdmUgcHJldHJhZ2UgdGlrZXRhIHUgaW50ZXJmZWpzdSBrb3Jpc25pa2EuIFNhIG92b20gb3BjaWpvbSBtb8SHZXRlIHByZXRyYcW+aXZhdGkgbnByLiBuYXNsb3YgdGlrZXRhIHNhIHVzbG92aW1hIGthbyAiKCprZXkxKiYmKmtleTIqKSIgaWxpICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnRG9kZWxqZW5lIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnS29uZmlndXJhY2lvbmUgc3RhdmtlIGRvZGVsamVuZSBmaXJtaSBrbGlqZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0tvbmZpZ3VyYWNpb25lIHN0YXZrZSBkb2RlbGplbmUga2xpamVudHUga29yaXNuaWt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIHBvZGXFoWF2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnUHJvdmVyYSBqZWRpbnN0dmVub2cgaW1lbmEgc2FtbyB1IG9rdmlydSBpc3RlIGtsYXNlIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kgKFwna2xhc2FcJykgaWxpIGdsb2JhbG5vIChcJ2dsb2JhbG5vXCcpLCDFoXRvIHpuYcSNaSBkYSBqZSBzdmFrYSBwb3N0b2plxIdhIEtvbmZpZ3VyYWNpb25hIHN0YXZrYSB1emV0YSB1IG9iemlyIHUgcHJvdmVyaSBkdXBsaWthdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0tvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnRG9kYXZhbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdVcmXEkWl2YW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWwgZG9nYcSRYWphIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kga29qaSBvbW9ndcSHYXZhIGJlbGXFvmVuamUgdSBpc3RvcmlqYXQgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSXN0b3JpamF0IGtvbmZpZ3VyYWNpb25lIHN0YXZrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnxaB0YW1wYSBrb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdEZXRhbGpuaSBwcmlrYXoga29uZmlndXJhY2luZSBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ09ncmFuacSNZW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ09ncmFuacSNZW5qZSBrb25maWd1cmFjaW9uaWggc3RhdmtpIHBvIHN0cmFuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0JhemEgcG9kYXRha2EgdXByYXZsamFuamEga29uZmlndXJhY2lqb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdNb2R1bCBtYXNvdm5lIGFrY2lqZSBuYSBrb25maWd1cmFjaW9uaW0gc3RhdmthbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYWNpb25hIHN0YXZrYSBwcmV0cmHFvnVqZSBwb3phZGluc2tpIHJ1dGVyIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0tyZWlyYW5qZSBpIHVwcmF2bGphbmplIGRlZmluaWNpamEgemEga29uZmlndXJhY2lvbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnUG9kcmF6dW1ldmFuaSBwb2RhY2kgemEga29yacWhxIdlbmplIG5hIGF0cmlidXRpbWEgemEgcHJpa2F6IHByZXRyYWdlIHRpa2V0YS4gUHJpbWVyOiAiVGlja2V0Q3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7VGlja2V0Q3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtUaWNrZXRDcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1BvZHJhenVtZXZhbmkgcG9kYWNpIHphIGtvcmnFocSHZW5qZSBuYSBhdHJpYnV0aW1hIHphIHByaWtheiBwcmV0cmFnZSB0aWtldGEuIFByaW1lcjogIlRpY2tldENyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnRNb250aD0xMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnREYXk9NDtUaWNrZXRDcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RvcE1vbnRoPTExO1RpY2tldENyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBha2NpamUgZ2RlIGplIGR1Z21lIHBvc3RhdmtpIGRvc3R1cG5vIHUgcG92ZXphbm9tIGdyYWZpxI1rb20gZWxlbWVudHUgb2JqZWt0YSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBNb2xpbW8gZGEgaW1hdGUgbmEgdW11IGRhIG92ZSBBa2NpamUgbW9yYWp1IGRhIGJ1ZHUgcmVnaXN0cm92YW5lIHUgc2xlZGXEh2ltIEpTIGkgQ1NTIGRhdG90ZWthbWE6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGkgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdPZHJlxJF1amUgcG90cmVibmUgZG96dm9sZSB6YSBicmlzYW5qZSBJVFNNIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kga3JveiBnZW5lcmnEjWtpIGludGVyZmVqcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBuZW9waG9kbmUgZG96dm9sZSB6YSBkb2JpamFuamUgSVRTTSBrb25maWd1cmFjaW9uaWggc3RhdmtpIGtvcmnFocSHZW5qZW0gZ2VuZXJpxI1rb2cgaW50ZXJmZWpzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBuZW9waG9kbmUgZG96dm9sZSB6YSBwcmV0cmFndSBJVFNNIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kga29yacWhxIdlbmplbSBnZW5lcmnEjWtvZyBpbnRlcmZlanNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIG5lb3Bob2RuZSBkb3p2b2xlIHphIGRvYmlqYW5qZSBJVFNNIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kga29yacWhxIdlbmplbSBnZW5lcmnEjWtvZyBpbnRlcmZlanNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmnFoWUgbW9kdWwgcHJlZ2xlZGEgemEgbWFsaSBwcmlrYXogbGlzdGUga29uZmlndXJhY2lvbmloIHN0YXZraS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnT2RyZcSRdWplIHJlZ3VsYXJuZSBpenJhemUgemEgc3Zha3Uga2xhc3Uga29uZmlndXJhY2lvbmUgc3RhdmtlIHJhZGkgcHJvdmVyZSBuYXppdmEga29uZmlndXJhY2lvbmUgc3RhdmtlIGkgcHJpa2F6YSBwcmlwYWRhanXEh2loIHBvcnVrYSBvIGdyZcWha2FtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIGF0cmlidXQgdGlrZXRhIHphIHNvcnRpcmFuamUgdGlrZXRhIHUgcmV6dWx0YXR1IHByZXRyYWdlIHRpa2V0YSBpbnRlcmZlanNhIG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIGF0cmlidXQgdGlrZXRhIHphIHNvcnRpcmFuamUgdGlrZXRhIHUgcmV6dWx0YXR1IHByZXRyYWdlIHRpa2V0YSBpbnRlcmZlanNhIG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSBhdHJpYnV0IHRpa2V0YSB6YSBzb3J0aXJhbmplIHRpa2V0YSB1IHJlenVsdGF0dSBwcmV0cmFnZSB0aWtldGEgdSBvdm9qIG9wZXJhY2lqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIHJlZG9zbGVkIHRpa2V0YSAocG9zbGUgc29ydGlyYW5qYSBwbyBwcmlvcml0ZXR1KSB1IHByZWdsZWR1IHByZXRyYWdlIHRpa2V0YSB1IGludGVyZmVqc3Ugb3ByZXJhdGVyYS4gR29yZTogTmFqc3RhcmlqaSBuYSB2cmh1LiBEb2xlOiBOYWpub3ZpamUgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBwb2RyYXp1bWV2YW5pIHJlZG9zbGVkIHRpa2V0YSB1IHByZWdsZWR1IHByZXRyYWdlIHJlenVsdGF0YSB1IGludGVyZmVqc3Uga2xpamVudGEuIEdvcmU6IE5hanN0YXJpamkgbmEgdnJodS4gRG9sZTogTmFqbm92aWplIG5hIHZyaHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIHJlZG9zbGVkIHRpa2V0YSB1IHByZWdsZWR1IHByZXRyYWdlIHRpa2V0YSB1IG92b2ogb3BlcmFjaWppLiBHb3JlOiBOYWpzdGFyaWppIG5hIHZyaHUuIERvbGU6IE5ham5vdmlqZSBuYSB2cmh1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSBwcmlrYXogcHJldHJhZ2UgYXRyaWJ1dGEgdGlrZXRhIHphIHByaWtheiBla3JhbmEgcHJldHJhZ2UgdGlrZXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgcHJpa2F6IHByZXRyYWdlIGF0cmlidXRhIHRpa2V0YSB6YSBwcmlrYXogZWtyYW5hIHByZXRyYWdlIHRpa2V0YS4gUHJpbWVyOiAiS2V5IiBtb3JhIGltYXRpIG5heml2IGRpbmFtacSNa29nIHBvbGphLCB1IG92b20gc2x1xI1hanUgXCdYXCcsICJDb250ZW50IiBtb3JhIGltYXRpIHZyZWRub3N0IGRpbmFtacSNa29nIHBvbGphIHUgemF2aXNub3N0aSBvZCB0aXBhIGRpbmFtacSNa29nIHBvbGphLCBUZWtzdDogXCdhIHRleHRcJywgUGFkYWp1xIdpOiBcJzFcJywgRGF0dW0vVnJlbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBpL2lsaSBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdPZHJlxJF1amUgcG9kcmF6dW1ldmFuaSBwb2RvYmpla2F0IGtsYXNlIElUU00ga29uZmlndXJhY2lvbmEgc3RhdmthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSB2aXNpbnUgemEga29tcG9uZW50dSBSaWNoIFRleHQgRWRpdG9yIHphIG92YWogcHJpa2F6IGVrcmFuYS4gVW5lc2kgYnJvaiAocGlrc2VsaSkgaWxpIHByb2NlbnR1YWxudSB2cmVkbm9zdCAocmVsYXRpdm51KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIGJyb2ogcmVkb3ZhIHphIGVkaXRvciBkZWZpbmljaWplIENJIHUgYWRtaW5pc3RyYXRpdm5vbSBpbnRlcmZlanN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdPZHJlxJF1amUgcmVkb3NsZWQgaW5jaWRlbnRuaWggc3RhbmphIG9kIHZpc29rb2cgKG5wciBrcml0acSNbm8pIGRvIG5pc2tvZyAobnByIGZ1bmtjaW9uYWxubykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnT2RyZcSRdWplIHJlbGV2YW50bmEgc3RhbmphIHJhc3BvcmXEkWl2YW5qYSBnZGUgcG92ZXphbmkgdGlrZXRpIG1vZ3UgZGEgdXRpxI11IG5hIHN0YXR1cyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmnFoWUgZ3JhbmljdSBwcmV0cmFnZSB6YSBla3JhbiBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBncmFuaWN1IHByZXRyYWdlIHphIGVrcmFuIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGdyYW5pY3UgcHJldHJhZ2UgemEgZWtyYW4gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmnFoWUgZ3JhbmljdSBwcmV0cmFnZSB6YSBla3JhbiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwcmlrYXphbmUga29sb25lIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kgdSB0YWJlbGkgdmV6YSB1IHphdmlzbm9zdGkgb2Qga2xhc2UuIFVrb2xpa28gbmUgcG9zdG9qaSB1bm9zIHphIHBvamVkaW5hxI1udSBrbGFzdSwgYmnEh2UgcHJpa2F6YW5lIHBvZHJhenVtZXZhbmUga29sb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHByaWthemFuZSBrb2xvbmUga29uZmlndXJhY2lvbmloIHN0YXZraSB1IHRhYmVsaSB2ZXphIHUgemF2aXNub3N0aSBvZCBrbGFzZS4gU3Zha2kgdW5vcyBtb3JhIHNhZHLFvmF0aSBwcmVmaWtzIHNhIG5heml2b20ga2xhc2UgaSBkdm90YcSNa29tIChucHIuIENvbXB1dGVyOjopLiBQb3N0b2ppIHBhciBhdHJpYnV0YSBrb2ppIHN1IHphamVkbmnEjWtpIHphIHN2ZSBrbGFzZSAobnByLiB6YSBrbGFzdSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gWmEgcHJpa2F6IHBvamVkaW5hxI1uaWggYXRyaWJ1dGEgaXogZGVmaW5pY2lqZSwgbW9yYXRlIGtvcmlzdGl0aSBzbGVkZcSHdSDFoWVtdSAocHJpbWVyIHphIGtsYXN1IENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIFVrb2xpa28gbmUgcG9zdG9qaSB1bm9zIHphIHBvamVkaW5hxI1udSBrbGFzdSwgYmnEh2UgcHJpa2F6YW5lIHBvZHJhenVtZXZhbmUga29sb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBrb2plIHN1IHN0YXZrZSBzbG9ib2RuZSB6YSBcJ0FjdGlvblwnIHUgdHJlxIdlbSBuaXZvdSBBQ0wgc3RydWt0dXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBrb2plIHN1IHN0YXZrZSBzbG9ib2RuZSB1IHBydm9tIG5pdm91IEFDTCBzdHJ1a3R1cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBrb2plIHN1IHN0YXZrZSBzbG9ib2RuZSB1IGRydWdvbSBuaXZvdSBBQ0wgc3RydWt0dXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBrb2ppIHRpcCB2ZXplIChnbGVkYW5vIGl6IHBlcnNwZWt0aXZlIHRpa2V0YSkgbW/FvmUgZGEgdXRpxI1lIG5hIHBvdmV6YW51IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBrb2ppIHRpcCB0aWtldGEgbW/FvmUgZGEgdXRpxI1lIG5hIHN0YXR1cyBwb3ZlemFuZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0JyaXNhbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0JvamEgc3RhdHVzYSByYXNwb3JlxJFpdmFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnQm9qYSBzdGF0dXNhIHJhc3BvcmXEkWl2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWthdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgdSBla3JhbnUgZG9kYXRuaWggSVRTTSBwb2xqYSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSB1IHByZWdsZWR1IEZBUSB1IGludGVyZmVqc3Uga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSB1IGVrcmFudSBwcmV0cmFnZSBwcm9tZW5hIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ09tb2d1xIdhdmEgbWFzb3ZudSBha2NpanUgbmEga29uZmlndXJhY2lvbmltIHN0YXZrYW1hIHUgcHJpc3R1cG5vbSBzaXN0ZW11IG9wZXJhdGVyYSBuYSB2acWhZSBvZCBqZWRuZSBzdGF2a2UgaXN0b3ZyZW1lbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdBa3RpdmlyYSBzdm9qc3R2byBtYXNvdm5lIGFrY2lqZSBuYSBrb25maWdpcmFjaW9uaW0gc3RhdmthbWEgc2FtbyB6YSBpemxpc3RhbmUgZ3J1cGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bCBkb2dhxJFhamEgemEgcG9kZcWhYXZhbmplIHN0YXR1c2Ega29uZmlndXJhY2lvbmloIHN0YXZraSBwcmlsaWtvbSBwb3N0YXZsamFuamEgdmV6YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjaWphIG1vZHVsYSBnZW5lcmnEjWtvZyBpbnRlcmZlanNhIHphIHNsb2ogcG96aXZhb2NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhY2lqYSBtb2R1bGEgZ2VuZXJpxI1rb2cgaW50ZXJmZWpzYSB6YSBzbG9qIHBveml2YW9jYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjaWphIG1vZHVsYSBnZW5lcmnEjWtvZyBpbnRlcmZlanNhIHphIHNsb2ogcG96aXZhb2NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdQcmVnbGVkIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdUaXAgc3RhbmphIGluY2lkZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnVGlwIHN0YW5qYSBpbmNpZGVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01ha3NpbWFsbmkgYnJvaiB0aWtldGEga29qaSDEh2UgYml0aSBwcmlrYXphbmkgdSByZXp1bHRhdHUgb3ZlIG9wZXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCB6YSBwcm92ZXJ1IGdydXBlIG9kZ292b3JuZSB6YSBrbGFzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bCB6YSBwcm92ZXJ1IGdydXBlIG9kZ292b3JuZSB6YSBrb25maWd1cmFjaW9udSBzdGF2a3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgemEgZ2VuZXJpc2FuamUgc3RhdGlzdGlrZSBJVFNNIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQnJvaiB0aWtldGEga29qaSDEh2UgYml0aSBwcmlrYXphbmkgbmEgc3Zha29qIHN0cmFuaSByZXp1bHRhdGEgcHJldHJhZ2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQnJvaiB0aWtldGEga29qaSDEh2UgYml0aSBwcmlrYXphbmkgbmEgc3Zha29qIHN0cmFuaSByZXp1bHRhdGEgcHJldHJhZ2UgdSBpbnRlcmZlanN1IGtsaWplbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQcmVnbGVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0YXR1c2UgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIGZpbHRlciBrb2xvbmEgdSB1bWFuamVub20gcHJlZ2xlZHUgdGlrZXRhLiBOYXBvbWVuYTogcG9kZcWhYXZhbmplIFwnQWN0aXZlXCcgbmEgMCDEh2Ugc2FtbyBvbmVtb2d1xIdpdGkgb3BlcmF0ZXJpbWEgZGEgbWVuamFqdSBzdm9qYSBsacSNbmEgcG9kZcWhYXZhbmphIGl6IG92ZSBncnVwZSwgYWxpIMSHZSBhZG1pbmlzdHJhdG9yaSBpIGRhbGplIG1vxIdpIGRhIGloIG1lbmphanUgdSBuamlob3ZvIGltZS4gUG9kZXNpdGUgXCdQcmVmZXJlbmNlR3JvdXBcJyBkYSBiaXN0ZSBvZHJlZGlsaSB1IGtvbSBkZWx1IGludGVyZmVqc2Egb3ZhIHBvZGXFoWF2YW5qYSB0cmViYSBkYSBidWR1IHByaWthemFuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBib2plIHN0YXR1c2EgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0YXR1c2UgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBhdHJpYnV0ZSB1em9ya2EgZ3J1cGUgemEgZG96dm9sZSBvcMWhdGVnIGthdGFsb2dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0YXR1c2UgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3RhdHVzZSBwcmltZW5lIG5hIHByaWthenUgcG9zdGF2a2kgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0cmFuaWNlIChuYSBrb2ppbWEgc3Uga29uZmlndXJhY2lvbmUgc3RhdmtlIHByaWthemFuZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBzdGF0dXNlIHByaW1lbmUgbmEgcHJpa2F6dSBwb3N0YXZraSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBzdGF0dXNlIHByaW1lbmUgbmEgcHJpa2F6dSBwb3N0YXZraSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3RhdHVzZSBwcmltZW5lIG5hIHByaWthenUgcG9zdGF2a2kgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdJenZyxaFhdmEgcG9kZcWhZW51IGFrY2lqdSB6YSBzdmFraSBkb2dhxJFhaiAoa2FvIHBveml2YWxhYykgemEgc3Zha2kga29uZmlndXJpc2FuIHZlYiBzZXJ2aXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcnVwYSBwcmlzdHVwYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBwcmV0cmFnZSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgSVRTTSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBwcmV0cmFnZSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIHByZXRyYWdlIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgSVRTTSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgZGV0YWxub2cgcHJpa2F6YSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIGRvZGF2YW5qYSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBpem1lbmUgSVRTTSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgaXN0b3JpamF0YSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgxaF0YW1wZSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUG90cmVibmEgcHJhdmEgemEgYnJpc2FuamUga29uZmlndXJhY2lvbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1ByZXRyYWdhIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdQb3N0YXZsamEgc3RhbmplIGluY2lkZW50YSBrb25maWd1cmFjaW9uZSBzdGF2a2Uga2FkYSBqZSB0aWtldCBwb3ZlemFuIHNhIHN0YXZrb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIHN0YXR1cyBwcmltZW5lIG5hIGVrcmFudSBtYXNvdm5lIGFrY2lqZSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIHN0YXR1cyBpbmNpZGVudGEgbmEgZWtyYW51IG1hc292bmUgYWtjaWplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IGtvamEgb21vZ3XEh2F2YSBwb3Zleml2YW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2Ugc2EgZHJ1Z2ltIG9iamVrdG9tIG5hIGRldGFsam5vbSBwcmlrYXp1IGtvbmZpZ3VyYWNpamUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBwcmlzdHVwIGlzdG9yaWphdHUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIHByZWdsZWR1IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBwcmlzdHVwIGlzdG9yaWphdHUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIGRldGFsam5vbSBwcmlrYXp1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgYnJpc2FuamUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIG5qZW5vbSBkZXRhbGpub20gcHJpa2F6dSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgdW1ub8W+YXZhbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBuYSBwcmVnbGVkdSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgdW1ub8W+YXZhbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBuYSBuamVub20gZGV0YWxqbm9tIHByaWthenUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIGl6bWVudSBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgbmplbm9tIGRldGFsam5vbSBwcmlrYXp1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBwb3ZyYXRhayBuYSBkZXRhbGpuaSBwcmlrYXoga29uZmlndXJhY2lvbmUgc3RhdmtlICB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIMWhdGFtcHUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIG5qZW5vbSBkZXRhbGpub20gcHJpa2F6dSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIGRldGFsam5pIHByaWtheiBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgcHJlZ2xlZHUga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQcmlrYXp1amUgaXN0b3JpamF0IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSAob2JybnV0IHJlZG9zbGVkKSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa2F0b3IgemEga29uZmlndXJhY2lvbnUgc3Rhdmt1LCBucHIuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBQb2RyYXp1bWV2YW5vIGplIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAna2xhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0LXByb2R1a2NpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZS1wcm9kdWtjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWtjaWphJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnTmFsb2cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmFjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZmVqcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdLbGlqZW50c2tpIHNlcnRpZmlrYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUaXAgc2FkcsW+YWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdWcmVtZSBrcmVpcmFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdCZXNwbGF0bmkgKionOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdQcmVnbGVkIHJlenVsdGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1Nwb3JhenVtIG8gbml2b3UgdXNsdWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/sv_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN2X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdBbGxtw6RubmEgZHJpZnRkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdJbnN0w6RsbG5pbmdhciBmw7ZyIGlua29tbWFuZGUgZsO2cmZyw6VnbmluZ3NkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnSW5zdMOkbGxuaW5nYXIgZsO2ciB1dGfDpWVuZGUgc3ZhcnNkYXRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnSGFudGVyaW5nIGF2IGtvbmZpZ3VyYXRpb25zZW5oZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ8OEbmRyYSBrbGFzc2RlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ8OEbmRyYSByb2xsZGVmaW5pdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1JlYWR5MkltcG9ydC1rbGFzc2J1bnRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ0jDpHIga2FuIGR1IGltcG9ydGVyYSBSZWFkeTJJbXBvcnQta2xhc3NidW50YXIgc29tIHZpc2FyIHbDpXJhIHZhbmxpZ2FzdGUga29uZmlndXJhdGlvbnNvYmpla3QuIE9ic2VydmVyYSBhdHQgdmlzcyB5dHRlcmxpZ2FyZSBrb25maWd1cmF0aW9uIGthbiBrcsOkdmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdVcHBkYXRlcmEgYmVmaW50bGlnYSBlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnSW1wb3J0ZXJhIFJlYWR5MkFkb3B0LWtsYXNzYnVudGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnS2xhc3MgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnS29uZmlnIEFydGlrZWwgUm9sbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdLb25maWd1cmF0aW9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRyZXJhIGtsYXNzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnVsOkbGogZW4ga2xhc3MgZnLDpW4gbGlzdGFuIGbDtnIgYXR0IHNrYXBhIGVuIG55IGtvbmZpZ3VyYXRpb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdLbGFzcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBNYXNzw6V0Z8OkcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0RyaWZ0bMOkZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdJbmNpZGVudGzDpGdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0zDpG5rYSB0aWxsIGFubmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdPZ2lsdGlndCBudW1tZXIgcMOlIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ051bXJldCBww6UgZXR0IGFubmF0IENvbmZpZ3VyYXRpb24gSXRlbSBhdHQgbMOkbmthIHRpbGwuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVmlsbCBkdSB2ZXJrbGlnZW4gdGEgYm9ydCBkZXQgaMOkciBrb25maWd1cmF0aW9uc29iamVrdGV0Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYW1uZXQgcMOlIGRlbm5hIGtvbmZpZ3VyYXRpb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ05hbW5ldCBhbnbDpG5kcyByZWRhbiBpIGtvbmZpZ3VyYXRpb25zZW5oZXRlciBtZWQgZsO2cmxqYW5kZSBudW1tZXI6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnVmVyc2lvbnNudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlcnNpb25zbnVtbWVyIGbDtnIgZGV0dGEga29uZmlndXJhdGlvbnNvYmpla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdWZXJzaW9uc251bXJldCBhbnbDpG5kcyByZWRhbiBhdiBDb25maWdJdGVtcyBtZWQgZsO2bGphbmRlIG51bW1lcjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0RyaWZ0bMOkZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVudGzDpGdlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpayBmw7ZyIGtvbmZpZ3VyZXJpbmdzb2JqZWt0OiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0b3Jpa2lubmVow6VsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnVGlkcHVua3QgZsO2ciBza2FwYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdGb2t1c3Z5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ3VyYXRpb25zZW5oZXRlciBwZXIgc2lkYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnSW5nYSBkYXRhIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgaGl0dGFkZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVsOkbGogZGV0dGEga29uZmlndXJhdGlvbnNvYmpla3QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdVdGbDtnIgc8O2a25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnU8O2ayDDpHZlbiBpIHRpZGlnYXJlIHZlcnNpb25lcj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBmw7ZyIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdEanVwbml2w6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tYSBpbi91dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdNYXggbMOkbmtuaXbDpSB1cHBuw6VkZCBmw7ZyIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS29uZmlndXJhdGlvbnNlbmhldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbiBvbSBrb25maWd1cmF0aW9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ051dmFyYW5kZSBkcmlmdGzDpGdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdOdXZhcmFuZGUgaW5jaWRlbnRsw6RnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdTZW5hc3Qgw6RuZHJhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdTZW5hc3Qgw6RuZHJhZCBhdic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0RpbmEgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQ29uZmlnSXRlbSBTw7ZrJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICdPYmpla3R0eXAnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICdGaWx0cmVyYSBww6UgdHlwJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnRsO2bGphbmRlIGtsYXNzZXIga29tbWVyIGF0dCBpbXBvcnRlcmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0bDtmxqYW5kZSByb2xsZXIga29tbWVyIGF0dCBpbXBvcnRlcmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ09ic2VydmVyYSBhdHQgw6R2ZW4gbW90c3ZhcmFuZGUgZHluYW1pc2thIGbDpGx0IG9jaCBHZW5lcmFsQ2F0YWxvZy1rbGFzc2VyIGtvbW1lciBhdHQgc2thcGFzIG9jaCBhdHQgZGV0IGludGUgc2tlciBuw6Vnb24gYXV0b21hdGlzayBib3J0dGFnbmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWaWxsIGR1IGZvcnRzw6R0dGE/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ0JlaMO2dmVyIGV4ZW1wZWxrbGFzc2VyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbml0aW9uZW4gw6RyIGluZ2VuIGdpbHRpZyBZQU1MLWhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnw5Z2ZXJzaWt0OiBJVFNNIEtvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZXQgQ29uZmlnSXRlbUlEIGFuZ2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0R1IGJlaMO2dmVyIG1pbnN0IGV0dCB2YWx0IENvbmZpZ3VyYXRpb24gSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdEdSBoYXIgaW50ZSBza3JpdmJlaMO2cmlnaGV0IHRpbGwgZGV0IGjDpHIga29uZmlndXJhdGlvbnNvYmpla3RldDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0luZ2VuIGRlZmluaXRpb24gaGFyIGRlZmluaWVyYXRzIGbDtnIga2xhc3NlbiAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0tvbmZpZ29iamVrdGV0ICIlcyIgaGl0dGFkZXMgaW50ZSBpIGRhdGFiYXNlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdEZXQgZ2ljayBpbnRlIGF0dCB0YSBib3J0IGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXQgSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdJbmdlbiB2ZXJzaW9uIGhpdHRhZGVzIGbDtnIgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdJbmdldCBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIGVsbGVyIENsYXNzSUQgYW5nZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdJbmdlbiDDpXRrb21zdCBnZXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0thbiBpbnRlIHZpc2EgaGlzdG9yaWssIGluZ2V0IENvbmZpZ0l0ZW1JRCBhbmdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gaW50ZSB2aXNhIGhpc3RvcmlrLCBpbmdhIMOldGtvbXN0csOkdHRpZ2hldGVyIGdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ055IGtvbmZpZ3VyYXRpb25zcG9zdCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOeSB2ZXJzaW9uIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdEZXBsb3ltZW50c3RhdHVzIHVwcGRhdGVyYWQgKG55PSVzLCBnYW1tYWw9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0luY2lkZW50c3RhdHVzIHVwcGRhdGVyYWQgKG55PSVzLCBnYW1tYWw9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnS29uZmlnSXRlbSAoSUQ9JXMpIGJvcnR0YWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0zDpG5rIHRpbGwgJXMgKHR5cGU9JXMpIHRpbGxhZ2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0zDpG5rIHRpbGwgJXMgKHR5cGU9JXMpIGJvcnR0YWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnVXBwZGF0ZXJpbmcgYXYgQ29uZmlnSXRlbS1kZWZpbml0aW9uZW4gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hbW4gdXBwZGF0ZXJhdCAobnl0dD0lcywgZ2FtbWFsdD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWJ1dCAlcyB1cHBkYXRlcmF0IGZyw6VuICIlcyIgdGlsbCAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb24gJXMgcmFkZXJhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdJbmdldCBDb25maWdJdGVtSUQgZWxsZXIgVmVyc2lvbklEIGhhciBhbmdldHRzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gaW50ZSB2aXNhIGtvbmZpZ3VyYXRpb25zb2JqZWt0LCBpbmdhIMOldGtvbXN0csOkdHRpZ2hldGVyIGdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgaGl0dGFkZXMgaW50ZSBpIGRhdGFiYXNlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0tvbmZpZ3VyYXRpb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3V0c2tyaXZlbiBhdiAlcyB2aWQgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnT2dpbHRpZ3Qga2xhc3MtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZXQga2xhc3NJRCBhbmdlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdJbmdhIMOldGtvbXN0csOkdHRpZ2hldGVyIGbDtnIgZGVubmEga2xhc3MgZ2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnSW5nZXQgcmVzdWx0YXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnU8O2a3Jlc3VsdGF0IGbDtnIga29uZmlndXJlcmFkZSBvYmpla3QnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0thbiBpbnRlIHZpc2Egb2JqZWt0ZXQsIGluZ2Egw6V0a29tc3Ryw6R0dGlnaGV0ZXIgZsO2ciBDb25maWdJdGVtIGhhciBnZXR0cyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnS29uZmlnSXRlbSBoaXR0YWRlcyBpbnRlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdJbmdhIHZlcnNpb25lciBoaXR0YWRlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdPcGVyYXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAndmFybmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ0jDpG5kZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRHJpZnRsw6RnZSBmw7ZyIGtvbmZpZ3VyYXRpb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdJbmNpZGVudGzDpGdlIGbDtnIga29uZmlndXJhdGlvbnNlbmhldCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ1Nha25hciByw6R0dGlnaGV0ZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciBvZ2lsdGlndCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1PDtmtwYXJhbWV0cmFyIG9naWx0aWdhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ1Zpc2FkZSBrb25maWd1cmF0aW9uc29iamVrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdEcmlmdGzDpGdlc3R5cGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ051dmFyYW5kZSB0eXAgYXYgaW5jaWRlbnRsw6RnZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdNZWxsYW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tsYXNzYmVncsOkbnNuaW5nYXIgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdWw6RsaiBlbiBlbGxlciBmbGVyYSBrbGFzc2VyIGbDtnIgYXR0IGJlZ3LDpG5zYSB2YWxiYXJhIGtvbmZpZ3VyYXRpb25zb2JqZWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2JlZ3LDpG5zbmluZ2FyIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3RldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1bDpGxqIGVuIGVsbGVyIGZsZXJhIGtsYXNzZXIgZsO2ciBhdHQgYmVncsOkbnNhIHZhbGJhcmEga29uZmlndXJhdGlvbnNvYmpla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWlzayAoS29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpc2sgKHZlcnNpb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1R5cCBhdiBsw6Rua3JlZmVyZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ09tIGRlbm5hIGzDpG5rIGfDpGxsZXIgZsO2ciBDb25maWdJdGVtIGVsbGVyIGRlbiBzdGF0aXNrYSB2ZXJzaW9uZW4gYXYgZGV0IG9iamVrdCBzb20gcmVmZXJlcmFzIHRpbGwuIEJlcsOka25pbmdlbiBhdiBDdXJyZW50IEluY2lkZW50IFN0YXRlIHV0ZsO2cnMgZW5kYXN0IHDDpSBkeW5hbWlza2EgbMOkbmthci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWw6RsaiBkZXQgYXR0cmlidXQgc29tIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZW4gc2thIHPDtmthcyBlZnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0Jhc3N0cnVrdHVyZW4gw6RyIGludGUgZ2lsdGlnLiBBbmdlIGVuIGhhc2ggbWVkIGRhdGEgaSBZQU1MLWZvcm1hdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdEZXQga3LDpHZzIGF0dCBZQU1MLXN0csOkbmdlbiBpbmxlZHMgbWVkICItLS0iLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdEZXQgZ2ljayBpbnRlIGF0dCByZW5zYSB0YWJlbGxlbiBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdJbmdhIHJlbGV2YW50YSBkeW5hbWlza2EgZsOkbHQgaGl0dGFkZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdEZXQgZ2ljayBpbnRlIGF0dCBpbmZvZ2EgaSB0YWJlbGxlbiBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luZm9nYWRlIDAgcmFkZXIgaSB0YWJlbGxlbiBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWF4IGFudGFsIGF2IGV0dCBlbGVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ0ltcG9ydGVyYS9leHBvcnRlcmEgYmlsYWdvciAoc29tIGRlIHNpc3RhIHBvc3Rlcm5hIHBlciByYWQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2lvbiBTdHJpbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRmVsIHZpZCBzeW5rcm9uaXNlcmluZyBhdiBkZWZpbml0aW9uZXJuYS4gVsOkbmxpZ2VuIGtvbnRyb2xsZXJhIGxvZ2dlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdEdSBoYXIgSVRTTUNvbmZpZ0l0ZW0tZGVmaW5pdGlvbmVyIHNvbSBpbnRlIMOkciBzeW5rcm9uaXNlcmFkZS4gVsOkbmxpZ2VuIGRpc3RyaWJ1ZXJhIGRpbmEgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pc2thIGbDpGx0w6RuZHJpbmdhci4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0zDtnB0IHV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnVW5kZXJow6VsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFubGFnZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBlcmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdQZW5zaW9uZXJhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfDlnZlcnN5bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnw5Z2ZXJzaWt0IG9jaCBiZWtyw6RmdGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0ZXJhIGtsYXNzZXIvcm9sbGVyIG9jaCBkZXJhcyByZWxhdGVyYWRlIGbDpGx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnRXR0IGZlbCBpbnRyw6RmZmFkZSB1bmRlciBrbGFzc2ltcG9ydGVuLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gRG9sZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gVmlzYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1RpbGzDpXRlciB1dMO2a2FkZSBzw7ZrdmlsbGtvciB2aWQgc8O2a25pbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuIE1lZCBkZW4gaMOkciBmdW5rdGlvbmVuIGthbiBkdSB0LmV4LiBzw7ZrYSBlZnRlciBrb25maWd1cmF0aW9uc29iamVrdGV0cyBuYW1uIG1lZCB2aWxsa29yIGF2IHR5cGVuICIoKmtleTEqJiYqa2V5MiopIiBlbGxlciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1RpbGzDpXRlciB1dMO2a2FkZSBzw7ZrdmlsbGtvciB2aWQgc8O2a25pbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBrdW5kZ3LDpG5zc25pdHRldC4gTWVkIGRlbiBow6RyIGZ1bmt0aW9uZW4ga2FuIGR1IHQuZXguIHPDtmthIGVmdGVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIG5hbW4gbWVkIHZpbGxrb3IgYXYgdHlwZW4gIigqa2V5MSomJiprZXkyKikiIGVsbGVyICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnVGlsbGRlbGFkZSBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0k6cyBzb20gdGlsbGRlbGF0cyBrdW5kZsO2cmV0YWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSTplciBzb20gdGlsbGRlbGF0cyBrdW5kYW52w6RuZGFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQi1pbnN0w6RsbG5pbmdhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnU8O2ayBlZnRlciBldHQgdW5pa3QgbmFtbiBlbmRhc3QgaW5vbSBzYW1tYSBDb25maWdJdGVtLWtsYXNzICgiY2xhc3MiKSBlbGxlciBnbG9iYWx0ICgiZ2xvYmFsIiksIHZpbGtldCBpbm5lYsOkciBhdHQgdmFyamUgYmVmaW50bGlndCBDb25maWdJdGVtIHRhcyBtZWQgaSBiZXLDpGtuaW5nZW4gbsOkciBtYW4gbGV0YXIgZWZ0ZXIgZHViYmxldHRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1bDpGxqIGVuIG1vZHVsIGbDtnIgYXR0IGdlbm9tZHJpdmEgZXR0IG5hbW5naXZuaW5nc3NjaGVtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1bDpGxqIGVuIG1vZHVsIGbDtnIgYXR0IHZlcmtzdMOkbGxhIGV0dCBudW1tZXJzeXN0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1bDpGxqIGVuIG1vZHVsIGbDtnIgYXR0IGdlbm9tZHJpdmEgZXR0IHN5c3RlbSBtZWQgdmVyc2lvbnNzdHLDpG5nYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnVsOkbGogYXR0cmlidXQgZsO2ciBhdHQgdXRsw7ZzYSBza2FwYW5kZXQgYXYgZW4gbnkgdmVyc2lvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnVsOkbGoga2F0ZWdvcmllciBzb20gc2thIHRpbGxkZWxhcyBkZW5uYSBrbGFzcyBhdiBrb25maWd1cmF0aW9uc29iamVrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnS29sdW1uZmlsdGVyIGbDtnIgQ29uZmlnSXRlbS1vYmpla3QgZsO2ciBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnS29sdW1uZXIgc29tIGthbiBmaWx0cmVyYXMgaSDDtnZlcnNpa3RlbiDDtnZlciBrb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4gT2JzZXJ2ZXJhOiBFbmRhc3QgQ29uZmlnIEl0ZW0tYXR0cmlidXQgb2NoIGR5bmFtaXNrYSBmw6RsdCAoRHluYW1pY0ZpZWxkX05hbWVYKSDDpHIgdGlsbMOldG5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdLb25maWd1cmF0aW9uc2VuaGV0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0zDpGdnIHRpbGwga29uZmlndXJlcmluZ3NvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnUmVkaWdlcmEga29uZmlndXJlcmluZ3NvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXJlcmluZ3NvYmpla3QgZsO2ciBow6RuZGVsc2Vtb2R1bCBzb20gbcO2amxpZ2fDtnIgbG9nZ25pbmcgdGlsbCBoaXN0b3JpayBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnSMOkbmRlbHNlbW9kdWwgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBzb20gdXBwZGF0ZXJhciBrb25maWd1cmF0aW9uc29iamVrdGVuIHRpbGwgZGVyYXMgYWt0dWVsbGEgZGVmaW5pdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdLb25maWd1cmVyYXIgYXJ0aWtlbGhpc3RvcmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdVdHNrcmlmdCBhdiBrb25maWd1cmVyaW5nc29iamVrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdLb25maWd1cmVyYSB6b29tIGbDtnIgb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0tvbmZpZ0l0ZW0gdHLDpGR2eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdLb25maWdJdGVtIFZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgYXYgZsO2bGphbmRlIGtsYXNzZXIga29tbWVyIGludGUgYXR0IGxhZ3JhcyBww6UgRWxhc3RpY3NlYXJjaC1zZXJ2ZXJuLiBPbSBkdSB2aWxsIHRpbGzDpG1wYSBkZXR0YSBww6UgYmVmaW50bGlnYSBDSSBtw6VzdGUgQ0ktbWlncmVyaW5nZW4ga8O2cmFzIHZpYSBrb25zb2xlbiBlZnRlciBhdHQgZHUgaGFyIMOkbmRyYXQgZGV0dGEgYWx0ZXJuYXRpdi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgbWVkIGbDtmxqYW5kZSBkcmlmdHPDpHR0bmluZ3NzdGF0dXMga29tbWVyIGludGUgYXR0IGxhZ3JhcyBww6UgRWxhc3RpY3NlYXJjaC1zZXJ2ZXJuLiBGw7ZyIGF0dCB0aWxsw6RtcGEgZGV0dGEgcMOlIGJlZmludGxpZ2EgQ0kgbcOlc3RlIENJLW1pZ3JlcmluZ2VuIGvDtnJhcyB2aWEga29uc29sZW4gZWZ0ZXIgYXR0IGRldHRhIGFsdGVybmF0aXYgaGFyIMOkbmRyYXRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdCZWdyw6Ruc25pbmcga29uZmlndXJhdGlvbnNlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1cmF0aW9uIEFydGlrZWxncsOkbnMgcGVyIHNpZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdEYXRhYmFzIGbDtnIga29uZmlndXJhdGlvbnNoYW50ZXJpbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdLb25maWd1cmF0aW9uc29iamVrdCBidWxrbW9kdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYXRpb25zb2JqZWt0IHPDtmsgYmFja2VuZC1yb3V0ZXIgZsO2ciBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ1NrYXBhIG9jaCBoYW50ZXJhIGRlZmluaXRpb25lciBmw7ZyIGtvbmZpZ3VyYXRpb25zZW5oZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ1NrYXBhciBiaWxqZXR0ZXIgZsO2ciBDb25maWdJdGVtcyB2aWQgc3BlY2lmaWthIHRpZHB1bmt0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0t1bmRlcm5hIGthbiBzZSBoaXN0b3Jpc2thIENJLXZlcnNpb25lci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnS3VuZGVybmEgaGFyIG3DtmpsaWdoZXQgYXR0IG1hbnVlbGx0IHbDpHhsYSBtZWxsYW4gaGlzdG9yaXNrYSBDSS12ZXJzaW9uZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnU3RhbmRhcmRkYXRhIHNvbSBza2EgYW52w6RuZGFzIHDDpSBhdHRyaWJ1dGV0IGbDtnIgc8O2a3Nrw6RybWVuIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QuIEV4ZW1wZWw6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnU3RhbmRhcmRkYXRhIHNvbSBza2EgYW52w6RuZGFzIHDDpSBhdHRyaWJ1dCBmw7ZyIHPDtmtza8Okcm1lbiBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0LiBFeGVtcGVsOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pZXJhIMOldGfDpHJkZXIgZMOkciBlbiBpbnN0w6RsbG5pbmdza25hcHAgw6RyIHRpbGxnw6RuZ2xpZyBpIHdpZGdldGVuIGbDtnIgbMOkbmthZGUgb2JqZWt0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE9ic2VydmVyYSBhdHQgZGVzc2Egw6V0Z8OkcmRlciBtw6VzdGUgaGEgcmVnaXN0cmVyYXQgZsO2bGphbmRlIEpTLSBvY2ggQ1NTLWZpbGVyOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBvY2ggQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5pZXJhIGV0dCBUZW1wbGF0ZTo6VG9vbGtpdC1zY2hlbWEgZsO2ciB2ZXJzaW9uc3N0csOkbmdhci4gQW52w6RuZHMgZW5kYXN0IG9tIFZlcnNpb24gU3RyaW5nIE1vZHVsZSDDpHIgaW5zdMOkbGxkIHDDpSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5pZXJhIGVuIHVwcHPDpHR0bmluZyB2aWxsa29yIHVuZGVyIHZpbGthIGVuIGt1bmQgZsOlciBzZSBldHQga29uZmlndXJhdGlvbnNvYmpla3QuIFZpbGxrb3JlbiBrYW4gZXZlbnR1ZWxsdCBiZWdyw6Ruc2FzIHRpbGwgdmlzc2Ega3VuZGdydXBwZXIuIE5hbW4gw6RyIGRldCBlbmRhIG9ibGlnYXRvcmlza2EgYXR0cmlidXRldC4gT20gaW5nYSBhbmRyYSBhbHRlcm5hdGl2IGFuZ2VzIGtvbW1lciBhbGxhIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGF0dCB2YXJhIHN5bmxpZ2EgdW5kZXIgZGVuIGthdGVnb3Jpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgbsO2ZHbDpG5kaWdhIGJlaMO2cmlnaGV0ZXIgZsO2ciBhdHQgdGEgYm9ydCBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IG1lZCBoasOkbHAgYXYgZGV0IGdlbmVyaXNrYSBncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBuw7ZkdsOkbmRpZ2EgYmVow7ZyaWdoZXRlciBmw7ZyIGF0dCBow6RtdGEgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBtZWQgaGrDpGxwIGF2IGRldCBnZW5lcmlza2EgZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgbsO2ZHbDpG5kaWdhIGJlaMO2cmlnaGV0ZXIgZsO2ciBhdHQgc8O2a2EgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBtZWQgaGrDpGxwIGF2IGRldCBnZW5lcmlza2EgZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgbsO2ZHbDpG5kaWdhIGJlaMO2cmlnaGV0ZXIgZsO2ciBhdHQgc3TDpGxsYSBpbiBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IG1lZCBoasOkbHAgYXYgZGV0IGdlbmVyaXNrYSBncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmllcmFyIGVuIMO2dmVyc2lrdHNtb2R1bCBzb20gdmlzYXIgZGVuIGxpbGxhIHZ5biBhdiBlbiBsaXN0YSBtZWQga29uZmlndXJhdGlvbnNvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgb20gbMOkbmt0eXBlbnMgZXRpa2V0dGVyIG3DpXN0ZSB2aXNhcyBpIG5vZGFuc2x1dG5pbmdhcm5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5pZXJhciByZWd1bGrDpHJhIHV0dHJ5Y2sgaW5kaXZpZHVlbGx0IGbDtnIgdmFyamUgQ29uZmlnSXRlbS1rbGFzcyBmw7ZyIGF0dCBrb250cm9sbGVyYSBDb25maWdJdGVtLW5hbW5ldCBvY2ggdmlzYSBtb3RzdmFyYW5kZSBmZWxtZWRkZWxhbmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllcmFyIGRlIHRpbGxnw6RuZ2xpZ2Ega29sdW1uZXJuYSBmw7ZyIENJOmVyIGkga29uZmlndXJhdGlvbnNvYmpla3RldHMgw7Z2ZXJzaWt0IGJlcm9lbmRlIHDDpSBDSS1rbGFzc2VuLiBWYXJqZSBwb3N0IG3DpXN0ZSBiZXN0w6UgYXYgZXR0IGtsYXNzbmFtbiBvY2ggZW4gbWF0cmlzIG1lZCB0aWxsZ8OkbmdsaWdhIGbDpGx0IGbDtnIgbW90c3ZhcmFuZGUga2xhc3MuIER5bmFtaXNrYSBmw6RsdHBvc3RlciBtw6VzdGUgZsO2bGphIHNjaGVtYXQgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc3RhbmRhcmRhdHRyaWJ1dGV0IGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgZsO2ciBzb3J0ZXJpbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBzw7ZrcmVzdWx0YXRldCBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZGF0dHJpYnV0ZXQgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBmw7ZyIHNvcnRlcmluZyBhdiBrb25maWd1cmF0aW9uc29iamVrdCBpIHPDtmtyZXN1bHRhdGV0IGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgaSBrdW5kZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmllcmFyIHN0YW5kYXJkYXR0cmlidXRldCBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGbDtnIgc29ydGVyaW5nIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgcmVzdWx0YXRldCBhdiBzw7ZrbmluZ2VuIGVmdGVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgZGVubmEgw6V0Z8OkcmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcmFyIHN0YW5kYXJkb3JkbmluZ2VuIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgaSBzw7ZrcmVzdWx0YXRldCBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0LiBVcHA6IMOkbGRzdCBww6UgdG9wcGVuLiBOZXI6IGRldCBzZW5hc3RlIMO2dmVyc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllcmFyIHN0YW5kYXJkb3JkbmluZ2VuIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgaSBzw7ZrcmVzdWx0YXRldCBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkga3VuZGdyw6Ruc3NuaXR0ZXQuIFVwcDogw6RsZHN0IMO2dmVyc3QuIE5lcjogZGVuIHNlbmFzdGUgw7Z2ZXJzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZG9yZG5pbmdlbiBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgcmVzdWx0YXRldCBhdiBzw7ZrbmluZ2VuIGVmdGVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgZGVuIGjDpHIgw6V0Z8OkcmRlbi4gVXBwOiDDpGxkc3Qgw7Z2ZXJzdC4gTmVyOiBzZW5hc3RlIMO2dmVyc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllcmFyIGRlIGtvbHVtbmVyIHNvbSB2aXNhcyBzb20gc3RhbmRhcmQgZsO2ciBDSTplciBpIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIMO2dmVyc2lrdCBiZXJvZW5kZSBww6UgQ0kta2xhc3Nlbi4gVmFyamUgcG9zdCBtw6VzdGUgYmVzdMOlIGF2IGV0dCBrbGFzc25hbW4gb2NoIGVuIG1hdHJpcyBtZWQgdGlsbGfDpG5nbGlnYSBmw6RsdCBmw7ZyIG1vdHN2YXJhbmRlIGtsYXNzLiBEeW5hbWlza2EgZsOkbHRwb3N0ZXIgbcOlc3RlIGbDtmxqYSBzY2hlbWF0IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluaWVyYXIgZGV0IHN0YW5kYXJkZGp1cCBmw7ZyIHJlbGF0aW9uZXIgc29tIHNrYSB2aXNhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZGF0dHJpYnV0ZXQgZsO2ciBzw7ZrbmluZyBhdiBrb25maWd1cmF0aW9uc29iamVrdCBzb20gdmlzYXMgZsO2ciBza8Okcm1lbiBmw7ZyIHPDtmtuaW5nIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZGF0dHJpYnV0ZXQgZsO2ciBzw7ZrbmluZyBhdiBrb25maWd1cmF0aW9uc29iamVrdCBzb20gdmlzYXMgcMOlIHNrw6RybWVuIGbDtnIgc8O2a25pbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QuIEV4ZW1wZWw6ICJLZXkiIG3DpXN0ZSBoYSBuYW1uZXQgcMOlIGRldCBkeW5hbWlza2EgZsOkbHRldCBpIGRldCBow6RyIGZhbGxldCAiWCIsICJDb250ZW50IiBtw6VzdGUgaGEgdsOkcmRldCBww6UgZGV0IGR5bmFtaXNrYSBmw6RsdGV0IGJlcm9lbmRlIHDDpSB0eXBlbiBhdiBkeW5hbWlza3QgZsOkbHQsIFRleHQ6ICJhIHRleHQiLCBEcm9wZG93bjogIjEiLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBvY2ggZWxsZXIgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZHVuZGVyb2JqZWt0ZXQgZsO2ciBrbGFzc2VuIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgZGUgdGlsbGfDpG5nbGlnYSBrb2x1bW5lcm5hIGbDtnIgQ0k6ZXIgaSBrb25maWd1cmF0aW9uc29iamVrdGV0cyDDtnZlcnNpa3QgYmVyb2VuZGUgcMOlIENJLWtsYXNzZW4uIFZhcmplIHBvc3QgbcOlc3RlIGJlc3TDpSBhdiBldHQga2xhc3NuYW1uIG9jaCBlbiBtYXRyaXMgbWVkIHRpbGxnw6RuZ2xpZ2EgZsOkbHQgZsO2ciBtb3RzdmFyYW5kZSBrbGFzcy4gRHluYW1pc2thIGbDpGx0cG9zdGVyIG3DpXN0ZSBmw7ZsamEgc2NoZW1hdCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmllcmFyIGjDtmpkZW4gZsO2ciByZWRpZ2VyaW5nc2tvbXBvbmVudGVuIGbDtnIgcmlrIHRleHQgZsO2ciBkZW4gaMOkciBza8Okcm1lbi4gQW5nZSBhbnRhbCAocGl4bGFyKSBlbGxlciBwcm9jZW50dsOkcmRlIChyZWxhdGl2dCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuZ2VyIGFudGFsIHJhZGVyIGbDtnIgS0UtZWRpdG9ybiBpIGFkbWluZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBvcmRuaW5nc2bDtmxqZGVuIGbDtnIgaW5jaWRlbnR0aWxsc3TDpW5kIGZyw6VuIGjDtmcgKHQuZXguIGNyaWNpdGFsKSB0aWxsIGzDpWcgKHQuZXguIGZ1bmN0aW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgZGUgcmVsZXZhbnRhIGRyaWZ0c8OkdHRuaW5nc3N0YXR1c2FyIGTDpHIgbMOkbmthZGUgw6RyZW5kZW4ga2FuIHDDpXZlcmthIHN0YXR1c2VuIGbDtnIgZXR0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc8O2a2dyw6Ruc2VuIGbDtnIgc2vDpHJtZW4gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllcmFyIHPDtmtncsOkbnNlbiBmw7ZyIHNrw6RybWVuIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzw7ZrZ3LDpG5zZW4gZsO2ciBza8Okcm1lbiBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc8O2a2dyw6Ruc2VuIGbDtnIgc2vDpHJtZW4gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmllcmFyIGRlIGtvbHVtbmVyIHNvbSB2aXNhcyBmw7ZyIENJIGkgZGVuIGtvbXBsZXhhIHZ5biBmw7ZyIGzDpG5rdGFiZWxsZW4gZsO2ciBhbGxhIENJLWtsYXNzZXIuIE9tIGRldCBpbnRlIGZpbm5zIG7DpWdvbiBwb3N0IHZpc2FzIHN0YW5kYXJka29sdW1uZXJuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgZGUga29sdW1uZXIgc29tIHZpc2FzIGbDtnIgQ0kgaSBkZW4ga29tcGxleGEgdnluIGbDtnIgbMOkbmt0YWJlbGxlbiwgYmVyb2VuZGUgcMOlIENJLWtsYXNzLiBWYXJqZSBwb3N0IG3DpXN0ZSBpbmxlZGFzIG1lZCBrbGFzc25hbW5ldCBvY2ggZHViYmxhIGtvbG9uICh0LmV4LiBDb21wdXRlcjo6KS4gRGV0IGZpbm5zIGV0dCBmw6V0YWwgQ0ktYXR0cmlidXQgc29tIMOkciBnZW1lbnNhbW1hIGbDtnIgYWxsYSBDSSAoZXhlbXBlbCBmw7ZyIGtsYXNzZW4gQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIEbDtnIgYXR0IHZpc2EgZW5za2lsZGEgQ0ktYXR0cmlidXQgc29tIGRlZmluaWVyYXMgaSBDSS1kZWZpbml0aW9uZW4gbcOlc3RlIGbDtmxqYW5kZSBzY2hlbWEgYW52w6RuZGFzIChleGVtcGVsIGbDtnIga2xhc3NlbiBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBPbSBkZXQgaW50ZSBmaW5ucyBuw6Vnb24gcG9zdCBmw7ZyIGVuIENJLWtsYXNzIHZpc2FzIHN0YW5kYXJka29sdW1uZXJuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmllcmFyIHZpbGthIG9iamVrdCBzb20gw6RyIHRpbGxnw6RuZ2xpZ2EgZsO2ciAiQWN0aW9uIiBpIGRlbiB0cmVkamUgbml2w6VuIGkgSVRTTSBDb25maWcgSXRlbSBBQ0wtc3RydWt0dXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmllcmFyIHZpbGthIG9iamVrdCBzb20gw6RyIHRpbGxnw6RuZ2xpZ2EgaSBkZW4gZsO2cnN0YSBuaXbDpW4gaSBJVFNNIENvbmZpZyBJdGVtIEFDTC1zdHJ1a3R1cmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmllcmFyIHZpbGthIG9iamVrdCBzb20gw6RyIHRpbGxnw6RuZ2xpZ2EgaSBkZW4gYW5kcmEgbml2w6VuIGkgSVRTTSBDb25maWcgSXRlbSBBQ0wtc3RydWt0dXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5pZXJhciB2aWxrZW4gdHlwIGF2IGzDpG5rIChuYW1uZ2l2ZW4gdXIgZXR0IMOkcmVuZGVwZXJzcGVrdGl2KSBzb20ga2FuIHDDpXZlcmthIHN0YXR1c2VuIGbDtnIgZXR0IGzDpG5rYXQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5pZXJhciB2aWxrZW4gdHlwIGF2IMOkcmVuZGUgc29tIGthbiBww6V2ZXJrYSBzdGF0dXNlbiBmw7ZyIGV0dCBsw6Rua2F0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0RlZmluaXRpb24gVXBwZGF0ZXJpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1RhIGJvcnQga29uZmlndXJhdGlvbnNvYmpla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdEZXBsb3ltZW50IFN0YXRlIEbDpHJnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNlcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdIw6RuZGVsc2Vtb2R1bCBmw7ZyIGR5bmFtaXNrYSBmw6RsdCBzb20gbWFya2VyYXIga29uZmlndXJhdGlvbnNvYmpla3RkZWZpbml0aW9uZXIgc29tIG9zeW5rcm9uaXNlcmFkZSBvbSBkZSBpbm5laMOlbGxlciBkeW5hbWlza2EgZsOkbHQgc29tIMOkbmRyYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlza2EgZsOkbHQgc29tIHZpc2FzIHDDpSBza8Okcm1lbiBmw7ZyIHl0dGVybGlnYXJlIElUU00tZsOkbHQgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNrYSBmw6RsdCBzb20gdmlzYXMgcMOlIHNrw6RybWVuIGbDtnIgw7Z2ZXJzaWt0IGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkga3VuZGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlza2EgZsOkbHQgc29tIHZpc2FzIHDDpSBza8Okcm1lbiBmw7ZyIHPDtmtuaW5nIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdBa3RpdmVyYXIgZnVua3Rpb25lbiBmw7ZyIG1hc3PDpXRnw6RyZGVyIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3Qgc8OlIGF0dCBhZ2VudGVucyBmcm9udGVuZCBrYW4gYXJiZXRhIG1lZCBtZXIgw6RuIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCDDpXQgZ8Olbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0FrdGl2ZXJhciBmdW5rdGlvbmVuIGbDtnIgbWFzc8OldGfDpHJkZXIgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBlbmRhc3QgZsO2ciBkZSBncnVwcGVyIHNvbSBhbmdlcyBpIGxpc3Rhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnQWt0aXZlcmFyL2luYWt0aXZlcmFyIGZ1bmt0aW9uZW4gZsO2ciBhdHQga29udHJvbGxlcmEgYXR0IElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaGFyIHVuaWthIG5hbW4uIElubmFuIGR1IGFrdGl2ZXJhciBkZXQgaMOkciBhbHRlcm5hdGl2ZXQgYsO2ciBkdSBrb250cm9sbGVyYSBvbSBkZXQgcmVkYW4gZmlubnMga29uZmlndXJhdGlvbnNvYmpla3QgbWVkIGR1YmJsYSBuYW1uIGkgc3lzdGVtZXQuIER1IGthbiBnw7ZyYSBkZXR0YSBtZWQga29uc29sa29tbWFuZG90IEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnSMOkbmRlbHNlbW9kdWwgZsO2ciBhdHQgc8OkdHRhIGNvbmZpZ2l0ZW0tc3RhdHVzIHDDpSB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdGw6RsdCBpIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIGluZGV4IHNvbSBhbnbDpG5kcyBmw7ZyIGZ1bGx0ZXh0c8O2a25pbmcuIEbDpGx0IGxhZ3JhcyBvY2tzw6UsIG1lbiDDpHIgaW50ZSBvYmxpZ2F0b3Jpc2thIGbDtnIgZGVuIMO2dmVyZ3JpcGFuZGUgZnVua3Rpb25hbGl0ZXRlbi4gSW5rbHVkZXJpbmcgYXYgYmlsYWdvciBrYW4gaW5ha3RpdmVyYXMgZ2Vub20gYXR0IHPDpHR0YSBwb3N0ZW4gdGlsbCAwIGVsbGVyIHJhZGVyYSBkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdGw6RsdCBzb20gbGFncmFzIGkga29uZmlndXJhdGlvbnNvYmpla3RldHMgaW5kZXggb2NoIHNvbSBhbnbDpG5kcyBmw7ZyIGFuZHJhIHNha2VyIMOkbiBmdWxsdGV4dHPDtmtuaW5nLiBGw7ZyIGZ1bGxzdMOkbmRpZyBmdW5rdGlvbmFsaXRldCDDpHIgYWxsYSBmw6RsdCBvYmxpZ2F0b3Jpc2thLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ0bDtnIgdmFyamUgd2ViYnRqw6Ruc3QgKG55Y2tlbCkga2FuIGVuIGFycmF5IGF2IGtsYXNzZXIgKHbDpHJkZSkgZGVmaW5pZXJhcyBmw7ZyIHZpbGthIGltcG9ydGVuIMOkciBiZWdyw6Ruc2FkLiBGw7ZyIGFsbGEgdmFsZGEga2xhc3NlciwgZWxsZXIgYWxsYSBiZWZpbnRsaWdhIGtsYXNzZXIsIG3DpXN0ZSBkZSBpZGVudGlmaWVyYW5kZSBhdHRyaWJ1dGVuIHbDpGxqYXMgaSBrb25maWd1cmF0aW9uZW4gYXYgaW52b2tlcm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJlcmluZyBhdiBHZW5lcmljSW50ZXJmYWNlLW1vZHVsIGbDtnIgQ29uZmlnSXRlbUZldGNoLWlua2FsbG5pbmdzbGFncmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJlcmluZyBhdiBHZW5lcmljSW50ZXJmYWNlLW1vZHVsIGbDtnIgQ29uZmlnSXRlbUZldGNoLWlua2FsbG5pbmdzbGFncmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYXYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bCBmw7ZyIENvbmZpZ0l0ZW1GZXRjaC1pbmthbGxuaW5nc2xhZ3JldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBLb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnw5Z2ZXJzaWt0IMO2dmVyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSMOkbmRlbHNlU3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0lua2x1ZGVyYXIgZHJpZnRzw6R0dG5pbmdzc3RhdHVzYXIgaSBzw7ZrbmluZ2VuIGVmdGVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkga3VuZGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmtsdWRlcmFyIGluY2lkZW50c3RhdHVzYXIgaSBzw7ZrbmluZ2VuIGVmdGVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkga3VuZGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNYXhpbWFsdCBhbnRhbCBrb25maWd1cmF0aW9uc29iamVrdCBzb20gc2thIHZpc2FzIGkgcmVzdWx0YXRldCBhdiBkZW5uYSDDpXRnw6RyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCBmw7ZyIGF0dCBrb250cm9sbGVyYSB2aWxrZW4gZ3J1cHAgc29tIMOkciBhbnN2YXJpZyBmw7ZyIGVuIGtsYXNzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsIGbDtnIgYXR0IGtvbnRyb2xsZXJhIHZpbGtlbiBncnVwcCBzb20gw6RyIGFuc3ZhcmlnIGbDtnIgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIGbDtnIgYXR0IGdlbmVyZXJhIHN0YXRpc3RpayDDtnZlciBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05hbW4gTW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bW1lciBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbnRhbCBrb25maWd1cmF0aW9uc29iamVrdCBzb20gc2thIHZpc2FzIHDDpSB2YXJqZSBzaWRhIGkgZXR0IHPDtmtyZXN1bHRhdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW50YWwga29uZmlndXJhdGlvbnNvYmpla3Qgc29tIHNrYSB2aXNhcyBww6UgdmFyamUgc2lkYSBhdiBldHQgc8O2a3Jlc3VsdGF0IGkga3VuZGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0IGF0dCBzw7ZrYSBlZnRlciwgaHVyIG3DpW5nYSBwb3N0ZXIgb2NoIHZpbGthIGF0dHJpYnV0IHNvbSBza2EgdmlzYXMuIENvbmZpZ0l0ZW0tYXR0cmlidXQgbcOlc3RlIHV0dHJ5Y2tsaWdlbiBsYWdyYXMgdmlhIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ8OWdmVyc2lrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBrYXRlZ29yaWVybmEgZsO2ciBrbGFzc2VyIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgcHJlZmVyZW5zdnluIGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBrb2x1bW5maWx0cmVuIGkgZGVuIGxpbGxhIMO2dmVyc2lrdGVuIMO2dmVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0LiBPYnNlcnZlcmE6IG9tIGR1IGFuZ2VyICJBY3RpdmUiIHRpbGwgMCBmw7ZyaGluZHJhcyBlbmRhc3QgaGFuZGzDpGdnYXJlIGZyw6VuIGF0dCByZWRpZ2VyYSBpbnN0w6RsbG5pbmdhciBmw7ZyIGRlbm5hIGdydXBwIGkgc2luYSBwZXJzb25saWdhIGluc3TDpGxsbmluZ2FyLCBtZW4gYWRtaW5pc3RyYXTDtnJlciBrYW4gZm9ydGZhcmFuZGUgcmVkaWdlcmEgaW5zdMOkbGxuaW5nYXJuYSBmw7ZyIGVuIGFubmFuIGFudsOkbmRhcmVzIHLDpGtuaW5nLiBBbnbDpG5kICJQcmVmZXJlbmNlR3JvdXAiIGbDtnIgYXR0IHN0eXJhIGkgdmlsa2V0IG9tcsOlZGUgZGVzc2EgaW5zdMOkbGxuaW5nYXIgc2thIHZpc2FzIGkgYW52w6RuZGFyZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBmw6RyZ2VuIGbDtnIgZHJpZnRzw6R0dG5pbmdzc3RhdHVzIGkgcHJlZmVyZW5zdnluIGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBkcmlmdHPDpHR0bmluZ3N0aWxsc3TDpW5kIGkgcHJlZmVyZW5zdnluIGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgZXhlbXBlbCBww6UgYmVow7ZyaWdoZXRzZWdydXBwZXIgaSBncnVuZGthdGFsb2dlbnMgYXR0cmlidXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJhciBmw7ZyIG5hbW5tb2R1bGVuIGbDtnIga2xhc3NlciBhdiBrb25maWd1cmF0aW9uc29iamVrdCBpIHByZWZlcmVuc3Z5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBudW1tZXJtb2R1bGVuIGbDtnIga2xhc3NlciBhdiBrb25maWd1cmF0aW9uc29iamVrdCBpIHByZWZlcmVuc3Z5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJhciBmw7ZyIHNpZG9ybmEgKGTDpHIga29uZmlndXJhdGlvbnNvYmpla3RlbiB2aXNhcykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBtb2R1bGVuIHZlcnNpb24gc3RyaW5nIGbDtnIga2xhc3NlciBhdiBrb25maWd1cmF0aW9uc29iamVrdCBpIHByZWZlcmVuc3Z5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZsO2ciBjb25maWcgaXRlbSBjbGFzc2VzIGkgcHJlZmVyZW5zdnluIGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgdmVyc2lvbnN1dGzDtnNhcmVuIGbDtnIga2xhc3NlciBhdiBrb25maWd1cmF0aW9uc29iamVrdCBpIHByZWZlcmVuc3Z5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdVdGbDtnIgZGVuIGtvbmZpZ3VyZXJhZGUgw6V0Z8OkcmRlbiBmw7ZyIHZhcmplIGjDpG5kZWxzZSAoc29tIGVuIEludm9rZXIpIGbDtnIgdmFyamUga29uZmlndXJlcmFkIHdlYmJ0asOkbnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnQmVow7ZyaWdoZXRzZ3J1cHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IGFudsOkbmRhIMOldGfDpHJkZW4gQXR0YWNobWVudCBmw7ZyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgc2vDpHJtZW4gSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgc8O2a3Nrw6RybWVuIGbDtnIgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgc8O2a3Nrw6RybWVuIGbDtnIgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGt1bmRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSB0csOkZHZ5biBmw7ZyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSB6b29tc2vDpHJtZW4gZsO2ciBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSBza8Okcm1lbiBMw6RnZyB0aWxsIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSBza8Okcm1lbiBmw7ZyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaSBidWxrIGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgc2vDpHJtZW4gUmVkaWdlcmEgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IGFudsOkbmRhIHNrw6RybWVuIEhpc3RvcmlrIMO2dmVyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgc2vDpHJtZW4gU2tyaXYgdXQgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCB0YSBib3J0IGtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1PDtmsgaSBrb25maWd1cmF0aW9uc29iamVrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ1N0w6RsbCBpbiBpbmNpZGVudHN0YXR1cyBmw7ZyIGV0dCBDSSBhdXRvbWF0aXNrdCBuw6RyIGVuIFRpY2tldCBsw6Rua2FzIHRpbGwgZXR0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1N0w6RsbGVyIGluIGRyaWZ0c8OkdHRuaW5nc3N0YXR1cyBpIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIGJ1bGtza8Okcm0gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1N0w6RsbGVyIGluIGluY2lkZW50c3RhdHVzIGkga29uZmlndXJhdGlvbnNvYmpla3RldHMgYnVsa3Nrw6RybSBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIHNvbSBnw7ZyIGRldCBtw7ZqbGlndCBhdHQgbMOkbmthIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCB0aWxsIGV0dCBhbm5hdCBvYmpla3QgaSB6b29tdnluIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3RldCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IGtvbW1hIMOldCBoaXN0b3Jpa2VuIGbDtnIgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgw7Z2ZXJzaWt0ZW4gw7Z2ZXIga29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQga29tbWEgw6V0IGhpc3RvcmlrZW4gZsO2ciBldHQga29uZmlndXJhdGlvbnNvYmpla3QgaSB6b29tdnluIGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQgdGEgYm9ydCBldHQga29uZmlndXJhdGlvbnNvYmpla3QgaSBkZXNzIHpvb212eSBhdiBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IHZpc2EgbMOkbmthcm5hIHRpbGwga29uZmlndXJhdGlvbnNvYmpla3RlbiBzb20gZW4gdHLDpGR2eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IGR1cGxpY2VyYSBldHQga29uZmlndXJhdGlvbnNvYmpla3QgaSDDtnZlcnNpa3RlbiDDtnZlciBrb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzYXIgZW4gbMOkbmsgaSBtZW55biBmw7ZyIGF0dCBkdXBsaWNlcmEgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgem9vbXZ5biBhdiBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IHJlZGlnZXJhIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCBpIHpvb212eW4gYXYgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzYXIgZW4gbMOkbmsgaSBtZW55biBmw7ZyIGF0dCBnw6UgdGlsbGJha2EgaSB6b29tdnluIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3RldCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IHNrcml2YSB1dCBldHQga29uZmlndXJhdGlvbnNvYmpla3QgaSB6b29tdnluIGF2IGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IHpvb21hIGluIHDDpSBldHQga29uZmlndXJhdGlvbnNvYmpla3QgaSDDtnZlcnNpa3RlbiDDtnZlciBrb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGhpc3RvcmlrZW4gZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCAob212w6RuZCBvcmRuaW5nKSBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnRGVuIHN0YW5kYXJka2F0ZWdvcmkgc29tIHZpc2FzIG9tIGluZ2VuIGthdGVnb3JpIGhhciB2YWx0cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpZXJhcmVuIGbDtnIgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0LCB0LmV4LiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gU3RhbmRhcmR2w6RyZGV0IMOkciBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdVdGzDtnNlciBDb25maWdJdGVtRmV0Y2gtaW5rYWxsYXJlbiBhdXRvbWF0aXNrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnNpb24gU3RyaW5nIFV0dHJ5Y2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2lvbiBTdHJpbmcgTW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2lvbiBUcmlnZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdPbSBrw7ZybmluZ2VuIGF2IENvbmZpZ0l0ZW1BQ0wga2FuIHVuZHZpa2FzIGdlbm9tIGF0dCBrb250cm9sbGVyYSBjYWNoZWxhZ3JhZGUgZsOkbHRiZXJvZW5kZW4uIERldHRhIGthbiBmw7ZyYsOkdHRyYSBsYWRkbmluZ3N0aWRlcm5hIGbDtnIgZm9ybXVsw6RyLCBtZW4gbcOlc3RlIGF2YWt0aXZlcmFzIG9tIEFDTE1vZHVsZXMgc2thIGFudsOkbmRhcyBmw7ZyIElUU01Db25maWdJdGVtLSBvY2ggRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ1ZpbGtlbiBhbGxtw6RuIGluZm9ybWF0aW9uIHZpc2FzIGkgcnVicmlrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAna2xhc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWt0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZXByb2R1a3Rpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVrdGl2JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiA0NCw0NSBjbSAoMTcsNSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDUzLDM0IGNtICgyMSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDY2LDY4IGNtICgyNiwyNSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogODAsMDEgY20gKDMxLDUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS10dW1zIHJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiA0LDQ1IGNtICgxLDc1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiA4OCw5IGNtICgzNSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLXR1bXMga3VnZ3N0w6VuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgdHVtICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMtdHVtcyBrdWdnc3TDpW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiB0dW0gKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDEwNiw2OCBjbSAoNDIgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgdHVtICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiA4LDg5IGNtICgzLDUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiAxMzMsMzUgY20gKDUyLDUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgdHVtICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiAxNDYsNjggY20gKDU3LDc1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHR1bSAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogMTYwLDAyIGNtICg2MyB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgdHVtICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogMTczLDM1IGNtICg2OCwyNSB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDEzLDM0IGNtICg1LDI1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogMTg2LDY5IGNtICg3Myw1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgdHVtICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDIwMCwwMiBjbSAoNzgsNzUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHR1bSAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDIxMywzNiBjbSAoODQgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiAxNyw3OCBjbSAoNyB0dW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDIyLDIzIGNtICg4LDc1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgdHVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMzEsMTIgY20gKDEyLDI1IHR1bSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHR1bSAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSB0dW0gKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ1JlZG92aXNuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRyZXNzdGlsbGRlbG5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmF0w7ZyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZyB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVHlwIGF2IGFwcGFyYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdCYXR0ZXJpa2FwYWNpdGV0IChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnQmF0dGVyaXR5cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0J5Z2duYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0J1c3NncsOkbnNzbml0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVS1rbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYWNpdGV0IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdLYXBhY2l0ZXQgcGVyIGdyYWZpa2tvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLb3J0bnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS29ydGzDpHNhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVHlwIGF2IGtvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0t1bmRjZXJ0aWZpa2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ1Byb2dyYW12YXJhIGbDtnIga2xpZW50ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnS3VuZGthdGVnb3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0tsb2Nrc2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnS2xvY2toYXN0aWdoZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0tvZHNpZ25lcmFuZGUgY2VydGlmaWthdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVGVsZWZvbiBmw7ZyIGtvbmZlcmVucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0tvbnN1bHRhdnRhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnS29udGFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnS29udGFrdGEgZGlzdHJpYnV0w7ZyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdDb250YWluZXJoYW50ZXJpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdLb250cmFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnS29udHJha3RzdHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnQXZ0YWxzcGVyaW9kIGZyw6VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0F2dGFsc3RpZCB0aWxsIG9jaCBtZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnU2xhZGRsw7ZzIHRlbGVmb24gKERFQ1QtdGVsZWZvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnS29zdG5hZHNlbmhldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0FudGFsIGxpY2Vuc2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdEYXR1bSBmw7ZyIHNrYXBhbmRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdBbnBhc3NhdCBzdMOkbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2ZXJhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLXNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRmFrdHVyYW5zIGRhdHVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXR1bSBmw7ZyIGJlc3TDpGxsbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0dW0gZsO2ciB0ZWNrbmluZ3NvcHRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRGF0dW0gZsO2ciB1dGdpdm5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmlrYXQgZsO2ciBkb2t1bWVudHNpZ25lcmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kgUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRS1wb3N0Y2VydGlmaWthdCAoUy9NSU1FLWNlcnRpZmlrYXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0Fuc3TDpGxsbmluZ3NhdnRhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0lQLWFkcmVzcyBmw7ZyIHNsdXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdVcHBow7ZyYW5kZSBhdiBzdMO2ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ1V0Z8OlbmdzZGF0dW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0V4dGVybiBow6VyZGRpc2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdCcmFuZHbDpGdnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdFbmVyZ2lsYWdyaW5nIG1lZCBzdsOkbmdoanVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRm9ybWZha3Rvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbmNoaXNlYXZ0YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdBbGxtw6RuIGluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0jDpXJkdmFyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ0jDpXJkdmFydW1vZGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdIw6VyZHZhcmEgVmlrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnSGVhZHNldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQLXByb3Rva29sbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0ZXRzLSBvY2ggw6V0a29tc3RoYW50ZXJpbmcgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudGFyaWVudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdJbnZlcnN0ZXJpbmdza29zdG5hZGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnRmFrdHVyYW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1RhbmdlbnRib3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRC1tb25pdG9yIChmbHl0YW5kZSBrcmlzdGFsbHNrw6RybSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRC1tb25pdG9yIChsanVzZW1pdHRlcmFuZGUgZGlvZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnRmFzdCB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdMYWdlciAxOiBGeXNpc2t0IGxhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0xhZ2VyIDI6IERhdGFsw6Rua2xhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMYWdlciAzOiBOw6R0dmVya3NsYWdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdMYWdlciAzOiBOw6R0dmVya3NsYWdlciAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0xhZ2VyIDQ6IFRyYW5zcG9ydGxhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdMYWdlciA1OiBTZXNzaW9uc2xhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0xhZ2VyIDY6IFByZXNlbnRhdGlvbnNsYWdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0xhZ2VyIDc6IEFwcGxpa2F0aW9uc2xhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0h5cmVzYXZ0YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaWNlbnNhdnRhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW5zbnlja2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1R5cCBhdiBsaWNlbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0xpY2Vuc3BlcmlvZCBmcsOlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpY2Vuc3BlcmlvZCB0aWxsIG9jaCBtZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpdGl1bWrDpHJuZm9zZmF0YmF0dGVyaSAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0xpdGl1bWpvbmJhdHRlcmkgKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdMw6VuZWF2dGFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdCZWzDpGdldCBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xvbmdpdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnVGlsbHZlcmthcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01heGltYWwgbGFzdGthcGFjaXRldCAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnTWlubmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdNaW5uZXN0eXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWxudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWwvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdNb2RlbGxiZXNrcml2bmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdNb25pdG9ybnMgdXBwbMO2c25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnTW9uaXRvcm5zIHN0b3JsZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ07DpHR2ZXJrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ07DpHR2ZXJrc2luZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbiBvbSBuw6R0dmVya2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdOw6R0dmVya3Nza2lrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pY2tlbC1rYWRtaXVtYmF0dGVyaSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWNrZWwtbWV0YWxsaHlkcmlkYmF0dGVyaSAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnQXZ0YWwgb20gdHlzdG5hZHNwbGlrdCAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ0FudGVja25pbmdzYm9rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQW50YWwgcHJvY2Vzc29yZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnQW50YWwgUkFNLW1vZHVsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnQW50YWwgZ3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRC1tb25pdG9yIChvcmdhbmlzayBsanVzZW1pdHRlcmFuZGUgZGlvZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnUsO2cmVsc2Vrb3N0bmFkZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnQmVzdMOkbGxuaW5nc251bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0FubmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdVdGfDpW5nYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOLUtPRCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXJza2Fwc2F2dGFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvbm51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVHlwIGF2IHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGeXNpc2thIGvDpHJub3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdTdHLDtm1mw7Zyc8O2cmpuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnS8O2cHRhIHDDpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmFja2RqdXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdSYWNrLWVuaGV0ZXIgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdSdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0ta29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMtY2VydGlmaWthdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0bDtnJzw6Rsam5pbmdzYXZ0YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWxsaXR0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0bDtnJzZWdsYXQgU0xBLWJhdHRlcmkgKExlYWQtQWNpZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpZW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdQcm9ncmFtdmFyYSBmw7ZyIHNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1NlcnZpY2VhdnRhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpY2UgVGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1R5cCBhdiB1dHRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1Byb2dyYW12YXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnSMO2Z3RhbGFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnU3RhcnQgSVAtYWRyZXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdGw7ZydmFyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnTGFncmluZ3NwYXJ0aXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdEb3R0ZXJib2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnU2FtbWFuZmF0dG5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUdW5uIGtsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnVHLDpWRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ0JsaXh0c25hYmIgYW5zbHV0bmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG90YWx0IFJBTS1taW5uZSBmw7ZyIGdyYWZpa2tvcnQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RvdGFsdCBSQU0tbWlubmUgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciBtZWQgcGVrc2vDpHJtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLWh1YmInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUi1oZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVlbGwgbMOkbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAtdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViYmthbWVyYSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/sw_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN3X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ1RlbmdlbmV6YSByYW1hbmkga3dhIGFqaWxpIHlhIGRhdGEgemEgbWFvbWJpIHppbmF6b2luZ2lhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ0t1dW5nYW5pc2hhIGRhdGEgemEgbWFqaWJ1IHppbmF6b3Rva2EgbmplLic7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ1VzYW5pZGkgd2EgdXNpbWFtaXppIHdhIGtpcGVuZ2VsZSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIGNsYXNzIGRlZmluaXRpb24nfSA9ICdCYWRpbGkgdWZhZmFudXppIHdhIHRhYmFrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnQmFkaWxpIHVmYWZhbnV6aSB3YSB0YWJha2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnVmlwZW5nZWxlIHZ5YSB1c2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICdVc2FuaWRpIHdhIEtpcGVuZ2VsZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdVc2FuaWRpIHdhIEtpcGVuZ2VsZSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnQ2h1amEga3dhIGFqaWxpIHlhIG1hdGFiYWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ0NoYWd1YSB0YWJha2Ega3V0b2thIGt3ZW55ZSBvcm9kaGEgeWEga3V0ZW5nZW5lemEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGtpcHlhLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdUYWJha2EnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdWaXRlbmRvIHZ5YSB3aW5naSB2eWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdIYWxpIHlhIGt1dHVtaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdIYWxpIHlhIHR1a2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ1VuZ2FuaXNoYSBuYSBueWluZ2luZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTmFtYmEgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIG4gYmF0aWxpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdOYW1iYSB5YSBraXBlbmdlbGUga2luZ2luZSBjaGEgdXNhbmlkaSBjaGEga3V1bmdhbmlzaGEgbmFjaG8uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnS3dlbGkgdW5hdGFrYSBrdWZ1dGEgbWFiYWRpbGlrbyBoYXlhPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdKaW5hIGxhIGhpa2kga2lwZW5nZWxlIGNoYSB1c2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdKaW5hIGhpbGkgdGF5YXJpIGxpbWVrd2lzaGEgdHVtaWthbmEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoZW55ZSBuYW1iYSBpKHopZnVhdGF6bzogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdOYW1iYSB5YSB0b2xlbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSmluYSBsYSBoaWtpIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0ppbmEgaGlsaSB0YXlhcmkgbGltZWt3aXNoYSB0dW1pa2FuYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hlbnllIG5hbWJhIGkoeilmdWF0YXpvOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnSGFsaSB5YSBrdXR1bWlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnSGFsaSB5YSB0dWtpbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ01hdWRodWkgeWEgaGlzdG9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ011ZGEgd2Ega3V0ZW5nZW5lemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnTWFuZGhhcmkgaWxpeW9rdXp3YSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdWaXBlbmdlbGUgdnlhIHVzYW5pZGkga3dhIGtpbGEgdWt1cnVzYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnVGFmdXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1BpYSB0YWZ1dGEga2F0aWthIHRvbGVvIGxpbGlsb3BpdGE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tpcGVuZ2VsZSBjaGEgVXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdUYWFyaWZhIHphIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdIYWxpIHlhIGt1dHVtaWEgeWEgc2FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnSGFsaSB5YSB0dWtpbyBsYSBzYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ013aXNobyBrdWJhZGlsaXNod2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTXdpc2hvIGt1YmFkaWxpc2h3YSBuYSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ0FpbmEgeWEga2lwZW5nZWxlJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnQ2h1amEga3dhIGFpbmEnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1VuYXRha2Ega3VlbmRlbGVhPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnS2lwZW5nZWxlIGNoYSB1c2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ01hcmVqZW8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdVZW5kZXNoYWppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdPbnlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnVHVraW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0hhbGkgeWEgbWF0dW1pemkgeWEgaGlpIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdIYWxpIHlhIHR1a2lvIHlhIGhpa2kga2lwZW5nZWxlIGNoYSB1c2FuaWRpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnSGFrdW5hIHJ1aHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdBaW5hIHlhIGhhbGkgeWEga3V0dW1pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdBaW5hIHlhIGhhbGkgeWEgdHVraW8gbGEgc2FzYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdLYXRpa2F0aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdLaW1hIGNoYSBqdXUgY2hhIG5hbWJhIHlhIGVsZW1lbnRpIG1vamF3YXBvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0ltZWlzaGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdNYXRlbmdlbmV6byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ0t3YW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnSWxpeW9wYW5nd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVrZWJpc2hhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdTdGFhZnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnTWFwaXRpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnSmFyaWJpby8gTWFzd2FsaSBuYSBNYWppYnUnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdBbmdhbGlhIG1hamluYSB5YSBraXBla2VlIHR1IGthdGlrYSB0YWJha2Egc2F3YSBsYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgKFwnVGFiYWthXCcpIGF1IHpvdGUgKFwnWm90ZVwnKSwgYW1iYXlvIGluYW1hYW5pc2hhIGtpbGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGtpbGljaG9wbyBraW1lanVtdWlzaHdhIHdha2F0aSBuYWthbGEgcGFjaGEgemluYWFuZ2FsaXdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdWaXBlbmdlbGUgdnlhIHVzYW5pZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NhbmlkaSBtb2R1bGkgeWEgdHVraW8geWEga2lwZW5nZWxlIGFtYmFjaG8ga2luYXdlemVzaGEga3VpbmdpYSBrYXRpa2EgaGlzdG9yaWEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0tpa29tbyBjaGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tpcGFuZ2EgbmppYSBjaGEgbWF6aW5naXJhIHlhIG55dW1hIGNoYSB1dGFmdXRhamkgd2Ega2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBraW9sZXN1cmEgY2hhIHdha2FsYS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ1RlbmdlbmV6YSBuYSBzaW1hbWlhIHVmYWZhbnV6aSB3YSB2aXBlbmdlbGUgdnlhIHVzYW5pZGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEYXRhIGNoYWd1byBtaXNuZ2kga3V0dW1pa2Ega2F0aWthIHNpZmEga3dhIGFqaWxpIHlhIHNrcmluaSB5YSBrdXRhZnV0YSB5YSB0aWtldGkuCk1mYW5vOgoiVW1iaXpvIGxhIE11ZGEgbGEgS3V0ZW5nZW5lemEgVGlrZXRpPSBtd2FrYTsgTXdhbnpvIHdhIE11ZGEgd2Ega3V0ZW5nZW5lemEgdGlrZXRpPSBNd2lzaG87IFBvaW50aSB5YSBtdWRhIHdhIGt1dGVuZ2VuZXphIHRpa2V0aT0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGF0YSBjaGFndW8tbXNpbmdpIGt1dHVtaWEga2F0aWthIHNpZmEga3dhIGFqaWxpIHlhIHNrcmluaSB5YSBrdXRhZnV0YSB5YSB0aWtldGk6CiJNd2FrYSB3YSBrdWFuemEgd2EgbXVkYSB3YSBrdXRlbmdlbmV6YSB0aWtldGk9MjAxMDsgTXdlemkgd2Ega3VhbnphIHdhIG11ZGEgd2Ega3V0ZW5nZW5lemEgdGlrZXRpPTEwOyBTaWt1IHlhIGt1YW56YSB5YSBtdWRhIHdhIGt1dGVuZ2VuZXphIHRpa2V0aT00OyBNd2FrYSB3YSBrdWFjaGEgd2EgbXVkYSB3YSBrdXRlbmdlbmV6YSB0aWtldGkgPTIwMTA7IE13ZXppIHdhIGt1YWNoYSB3YSBtdWRhIHdhIGt1dGVuZ2VuZXphIHRpa2V0aSA9IDExOyBTaWt1IHlhIGt1YWNoYSB5YSBtdWRhIHdhIGt1dGVuZ2VuZXphIHRpa2V0aT0zOyAiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgcnVodXNhIHppbmF6b2hpdGFqaWthIGt1cGF0YXZpcGVuZ2VsZSB2eWEgdXNhbmlkaSB2eWEgSVRTTSBrd2Ega3V0dW1pYSBraW9sZXN1cmEgY2hhIGplbmVyaWtpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBydWh1c2EgemluYXpvaGl0YWppa2Ega3VwYXRhdmlwZW5nZWxlIHZ5YSB1c2FuaWRpIHZ5YSBJVFNNIGt3YSBrdXR1bWlhIGtpb2xlc3VyYSBjaGEgamVuZXJpa2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHJ1aHVzYSB6aW5hem9oaXRhamlrYSBrdXRhZnV0YSB2aXBlbmdlbGUgdnlhIHVzYW5pZGkgdnlhIElUU00ga3dhIGt1dHVtaWEga2lvbGVzdXJhIGNoYSBqZW5lcmlraS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgcnVodXNhIHppbmF6b2hpdGFqaWthIGt1cGF0YXZpcGVuZ2VsZSB2eWEgdXNhbmlkaSB2eWEgSVRTTSBrd2Ega3V0dW1pYSBraW9sZXN1cmEgY2hhIGplbmVyaWtpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIG1vZHVsaSB5YSBtYXBpdGlvIGt1b255ZXNoYSBtYW5kaGFyaSBuZG9nbyB5YSBvcm9kaGEgeWEgdmlwZW5nZWxlIHZ5YSB1c2FuaWRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2VtaSB6YSBtYXJhIGt3YSBtYXJhIG1vamFtb2phIGt3YSBraWxhIHRhYmFrYSBsYSBraXBlbmdlbGUgY2ggdXNhbmlkaSBrdWFuZ2FsaWEgamluYSBsYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgbmEga3Vvbnllc2hhIHVqdW1iZSB3YSBtYWtvc2EgeWFuYXlvaHVzaWFuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2lmYSB5YSB0aWtldGkgY2hhZ3VvLW1zaW5naSBrd2EgYWppbGkgeWEga3VwYW5nYSBtYXRva2VvIHlhIHV0YWZ1dGFqaSB3YSB0aWtldGkgeWEga2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2lmYSB5YSB0aWtldGkgY2hhZ3VvLW1zaW5naSBrd2EgYWppbGkgeWEga3VwYW5nYSBtYXRva2VvIHlhIHV0YWZ1dGFqaSB3YSB0aWtldGkgeWEga2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHNpZmEgeWEgdGlrZXRpIGNoYWd1by1tc2luZ2kga3dhIGFqaWxpIHlhIGt1cGFuZ2EgbWF0b2tlbyB5YSB1dGFmdXRhamkgd2EgdGlrZXRpIHlhIHVlbmRlc2hhamkgaHV1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBtcGFuZ2lsaW8gd2EgdGlrZXRpIGNoYWd1by1tc2luZ2kga2F0aWthIG1hdG9rZW8geWEgdXRhZnV0YWppIHlhIHRpa2V0aSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4gSnV1OiBLb25nd2UganV1LiBDaGluaTogWmEgc2FzYSBqdXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIG1wYW5naWxpbyB3YSB0aWtldGkgY2hhZ3VvLW1zaW5naSBrYXRpa2EgbWF0b2tlbyB5YSB1dGFmdXRhamkgeWEgdGlrZXRpIHlhIGtpb2xlc3VyYSBjaGEgbXRlamEuIEp1dTogS29uZ3dlIGp1dS4gQ2hpbmk6IFphIHNhc2EganV1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIG1wYW5naWxpbyB3YSB0aWtldGkgY2hhZ3VvLW1zaW5naSBrYXRpa2EgbWF0b2tlbyB5YSB1dGFmdXRhamkgeWEgdGlrZXRpIHlhIG1jaGFrYXRvIGh1dS4gSnV1OiBLb25nd2UganV1LiBDaGluaTogWmEgc2FzYSBqdXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2lmYSB5YSB0aWtldGkgaWxpeW90YWZ1dHdhIGlsaXlvb255ZXNod2EgY2hhZ3VvIG1zaW5naSBrd2Egc2tyaW5pIHlhIGt1dGFmdXRhIHRpa2V0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2lmYSB5YSB0aWtldGkgaWxpeW90YWZ1dHdhIGlsaXlvb255ZXNod2EgY2hhZ3VvIG1zaW5naSBrd2Egc2tyaW5pIHlhIGt1dGFmdXRhIHRpa2V0aS4gTWZhbm86ICJLaWJvbnllIiBsYXppbWEgaXdlIG5hIGppbmEgbGEgdWdhIHdlbnllIG5ndXZ1IGt3YSBoYXBhIG5pIFwnWFwnLCAiTWF1ZGh1aSIgbGF6aW1hIGl3ZSBuYSB0aGFtYW5pIHVhIHVnYSB3ZW55ZSBuZ3V2dSBrdXRlZ2VtZWFuYSBuYSBhaW5hIHlhIHVnYSB3ZW55ZSBuZ3V2dSwgTWF0aW5pOlwnTWF0aW5pXCcsIEt1bmp1emk6IFwnMVwnLCBUYXJlaGUvTXVkYTogIE13YWthIHdhIGt1YW56YSB3YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YT0xOTc0OyBNd2V6aSB3YSBrdWFuemEgd2EgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2E9MDE7IFNpa3UgeWEga3VhbnphIHlhIG1hamlyYSB5YSBtdWRhIHVsaW9wYW5nd2EgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhPTI2OyBTYWEgeWEga3VhbnphIHlhIG1hamlyYSB5YSBtdWRhIHVsaW9wYW5nd2EgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhID0wMDsgRGFraWthIHlhIGt1YW56YSB5YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9IDAwOyBTZWt1bmRlIHlhIGt1YW56YSB5YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9IDAwOyBNd2FrYSB3YSBrdWlzaGEgd2EgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPTIwMTM7IE13ZXppIHdhIGt1aXNoYSB3YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9MDE7IFNpa3UgeWEga3Vpc2hhIHlhIG1hamlyYSB5YSBtdWRhIHVsaW9wYW5nd2EgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhID0yNjsgU2FhIHlhIGt1aXNoYSB5YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9MjM7IERha2lrYSB5YSBrdWlzaGEgeWEgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPTU5OyBTZWt1bmRlIHlhIGt1aXNoYSB5YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9NTk7IG5hIGF1IFVtYml6byBsYSBwb2ludGkgeWEgbXVkYSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPSBXZWVrOyBNd2Fuem8gd2EgcG9pbnRpIHlhIG11ZGEgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhID0gS2FibGE7IFRoYW1hbmkgeWEgcG9pbnRpIHlhIG11ZGEgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhID0gNzsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEga2lwZW5nZWxlIGNoYSBjaGFndW8gbXNpbmdpIGNoYSB0YWJha2EgbGEgXCdLaXBlbmdlbGVjaGEgVXNhbmlkaSBjaGEgSVRTTVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgdXJlZnUga3dhIGtpamVuemkgY2hhIG1oYXJpcmkgd2EgbWF0aW5pIHRhamluaSBrd2Egc2tyaW5pIGhpaS4gSW5naXphIG5hbWJhIChQaWtzZWxpKSBhdSB0aGFtYW5pIHlhIGFzaWxpbWlhIChJbmF5b2h1c2lrYSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgbmFtYmEgeWEgc2FmdSBtbGFsbyBrd2EgbWhhcmlyaSB3YSB1ZmFmYW51emkgd2EgQ0kga2F0aWthIGtpb2xlc3VyYSBjaGEga2lvbmdvemknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnSW5hd2V6ZXNoYSB1cGVvIHdhIGt1dGFmdXRhIGt3YSBza2VyaW5pIHlhIEtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEga2lrb21vIGNoYSBrdXRhZnV0YSBrd2Egc2tyaW5pIHlhIEt1dGFmdXRhIEtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSAgY2hhIFdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdJbmF3ZXplc2hhIHVwZW8gd2Ega3V0YWZ1dGEga3dhIHNrZXJpbmkgeWEgS2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBraWtvbW8gY2hhIGt1dGFmdXRhIGt3YSBza3JpbmkgeWEgS3V0YWZ1dGEgS2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNICBjaGEgV2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBzYWZ1IHdpbWEgemEgQ0kgemlsaXpvb255ZXNod2Ega2F0aWthIG1hbmRoYXJpIHlhIGplZHdhbGkgdGF0YSBsYSBraXVuZ28sa3V0ZWdlbWVhbmEgbmEgdGFiYWthIGxhIENJLiBLaWxhIGluZ2l6byBsYXppbWEgbGl3ZSBuYSBraWFtYmlzaGkgYXdhbGkgamluYSBsYSB0YWJha2EgbmEgOjogKCBtZmFubyBUYXJha2lsaXNoaTo6KS5LdW5hIHZpdW1iaSB2aWNoYWNoZSB2eWEgQ0kgYW1iYXZ5byB2aXBvIGt3YSBDSSB6b3RlIChtZmFubyBrd2VueWUgdGFiYWthIGxhIHRhcmFraWxpc2hpOiB0YXJha2lsaXNoaTo6amluYSwgVGFyYWtpbGlzaGk6OkhhbGkgeWFDdXJEZXAsIFRhcmFraWxpc2hpOjpNdWRhIHdhIGt1dGVuZ2VuZXphKS4gS3Vvbnllc2hhIGtpdW1iaSBjaGEgQ0kga2ltb2phIGtpbW9qYSBrYW1hIHZpbGl2eW8gZmFmYW51bGl3YSBrd2VueWUgdWZhZmFudXppIHdhIENJLCBtcGFuZ2lsaW8gdWZ1YXRhbyBsYXppbWEgdXR1bWlrZSAobWZhbm8ga3dlbnllIHRhYmFrYSB0YXJha2lsaXNoaSk6IFRhcmFraWxpc2hpOjpkaXNraSBrdXU6OjEsIFRhcmFraWxpc2hpOjpEaXNraSBrdXUgbmd1bXU6OjFVd2V6bzo6MSwgVGFyYWtpbGlzaGk6OkRpc2tpIGt1dSBuZ3VtdTo6MiwgVGFyYWtpbGlzaGk6OkRpc2tpIGt1dSBuZ3VtdTo6Mjo6VXdlem86OjEuIEthbWEgaGFrdW5hIGluZ2l6byBrd2EgdGFiYWthIGxhIENJLCBzYWZ1d2ltYSBjaGFndW8gbXNpbmdpIHppbmFvbnllc2h3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdJbmFmYWZhIHZpcGVuZ2VsZWUgYW1iYXZ5byB2aW5hcGF0aWthbmEga3dhIGFqaWxpIHlhIFwnS2l0ZW5kb1wnIGthdGlrYSBuZ2F6aSB5YSB0YXR1IHlhIG11dW5kbyB3YSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSB2aXBlbmdlbGUgYW1iYXZ5byB2aW5hcGF0aWthbmEga2F0aWthIG5nYXppIHlhIGt3YW56YSB5YSBtdXVuZG8gd2EgQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHZpcGVuZ2VsZSBhbWJhdnlvIHZpbmFwYXRpa2FuYSBrYXRpa2EgbmdhemkgeWEgcGlsaSB5YSBtdXVuZG8gd2EgQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tpcGVuZ2VsZSBjaGEgVXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0hhbGkgeWEga3V0dW1pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdIYWxpIHlhIGt1dHVtaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnTmFrYWxhIHBhY2hhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbnllc2hhIHVnYSB6YSBraWNod2EgY2hhIGhhYmFyaSBrYXRpa2Egc2tyaW5pIHlhIHVnYSB3YSBJVFNNIHVsaW9vbmdlendhIHdhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbnllc2hhIHVnYSB6YSBraWNod2EgY2hhIGhhYmFyaSBrYXRpa2Egc2tyaW5pIHlhIHVnYSB3YSBJVFNNIHVsaW9vbmdlendhIHdhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW55ZXNoYSB1Z2EgemEga2ljaHdhIGNoYSBoYWJhcmkga2F0aWthIHNrcmluaSB5YSB1Z2Egd2EgSVRTTSB1bGlvb25nZXp3YSB3YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnSW5hd2V6ZXNoYSBraXBlbmdlbGUgY2hhIGtpdGVuZG8gY2ggd2luZ2kgY2hhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrd2EgbWFpbmdpcmEgeWEgbWJlbGUgeWEgd2FrYWxhIGt1ZmFueWEga2F6aSBrYXRpa2Ega2lwZW5nZWxlIGNoYSB1c2FuaWRpIHphaWRpIHlhIGtpbW9qYSBrd2EgbXVkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0luYXdlemVzaGEga2lwZW5nZWxlIGNoYSBraXRlbmRvIGNoYSB3aW5naSBjaGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGt3YSBtYWt1bmRpIHlhbGl5b29yb2RoZXNod2EgdHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnVXNhamlsaSB3YSBtb2R1bGkgeWEga2lvbGVzdXJhIGNoYSBqdW1sYSBrd2FhamlsaSBsYSB0YWJha2EgbGEga2loYW1zaGFqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdVc2FqaWxpIHdhIG1vZHVsaSB5YSBraW9sZXN1cmEgY2hhIGp1bWxhIGt3YWFqaWxpIGxhIHRhYmFrYSBsYSBraWhhbXNoYWppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdVc2FqaWxpIHdhIG1vZHVsaSB5YSBraW9sZXN1cmEgY2hhIGp1bWxhIGt3YWFqaWxpIGxhIHRhYmFrYSBsYSBraWhhbXNoYWppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdLaXBlbmdlbGUgY2hhIHVzYW5pZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSGFsaSB5YSB0dWtpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSGFsaSB5YSB0dWtpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTmFtYmEgeWEgdXBlbyB3YSBqdXUgd2EgdGlrZXRpIHppdGFrYXpvIG9ueWVzaHdhIGthdGlrYSBtYXRva2VvIHlhIG1jaGFrYXRvIGh1dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bGkgeWEga3VhbmdhbGlhIG1ha3VuZGkgeWFuYXlvaHVzaWthIG5hIHRhYmFrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bGUgeWEga3VhbmdhbGlhIG1ha3VuZGkgeWFuYXlvaHVzaWthIG5hIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bGkgeWEga3V0ZW5nZW5lemEgdGFrd2ltdSB6YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFtYmEgdGEgdGlrZXRpIHppdGFrYXpvb255ZXNod2Ega2F0aWthIGtpbGEgdWt1cmFzYSB3YSBtYXRva2VvIHlhIHV0YWZ1dGFqaSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hbWJhIHRhIHRpa2V0aSB6aXRha2F6b29ueWVzaHdhIGthdGlrYSBraWxhIHVrdXJhc2Egd2EgbWF0b2tlbyB5YSB1dGFmdXRhamkga2F0aWthIGtpb2xlc3VyYSBjaGEgbXRlamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ01hcGl0aW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgaGFsaSB6YSBtYXR1bWl6aSBrYW1hIG1hbmRoYXJpIHlhIG1hcGVuZGVsZW8geWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaWdlem8ga3dhIGFqaWxpIHlhIHJhbmdpIHlhIGhhbGkgemEgbWF0dW1pemkga2FtYSBtYW5kaGFyaSB5YSBtYXBlbmRlbGVvIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgaGFsaSB6YSBtYXR1bWl6aSBrYW1hIG1hbmRoYXJpIHlhIG1hcGVuZGVsZW8geWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgbWZhbm8gcnVodXNhIHphIHZpa3VuZGkga3dhIHNpZmEgemEga2F0YWxvZ2kgemEgdWp1bWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgaGFsaSB6YSBtYXR1bWl6aSBrYW1hIG1hbmRoYXJpIHlhIG1hcGVuZGVsZW8geWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaWdlem8ga3dhIGFqaWxpIHlhIGhhbGkgemEgbWF0dW1pemkga2FtYSBtYW5kaGFyaSB5YSBtYXBlbmRlbGVvIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdWaWdlem8ga3dhIGFqaWxpIHlhIHVrdXJhc2EgKGFtYmF2eW8gdmlwZW5nZWxlIHZ5YSB1c2FuaWRpIHZpbWVvbnllc2h3YSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgaGFsaSB6YSBtYXR1bWl6aSBrYW1hIG1hbmRoYXJpIHlhIG1hcGVuZGVsZW8geWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlnZXpvIGt3YSBhamlsaSB5YSBoYWxpIHphIG1hdHVtaXppIGthbWEgbWFuZGhhcmkgeWEgbWFwZW5kZWxlbyB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlnZXpvIGt3YSBhamlsaSB5YSBoYWxpIHphIG1hdHVtaXppIGthbWEgbWFuZGhhcmkgeWEgbWFwZW5kZWxlbyB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdGYW55YSBraXRlY25kbyBjaGEgdXNhbmlkaXNod2FqaSBrd2Ega2lsYSB0dWtpbyAoa2FtYSBLaWNob2NoZXppKSBrd2Ega2lsYSBodWR1bWEgeWEgd2F2dXRpIGlsaXlvc2FuaWRpd2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5haGl0YWppIHJ1aHVzYSBrdXR1bWlhIHNrcmluaSB5YSBrdXRhZnV0YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00ga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5haGl0YWppIHJ1aHVzYSBrdXR1bWlhIHNrcmluaSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00ga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga3V0YWZ1dGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGt1dGFmdXRhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5haGl0YWppIHJ1aHVzYSBrdXR1bWlhIHNrcmluaSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00ga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIGlsaXlva3V6d2EgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBraWxpY2hvb25nZXphIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5haGl0YWppIHJ1aHVzYSBrdXR1bWlhIHNrcmluaSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00ga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBraWxpY2hvaGFyaXJpd2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBjaGEgaGlzdG9yaWEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5haGl0YWppIHJ1aHVzYSBrdXR1bWlhIHNrcmluaSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00gY2hhIGt1Y2hhcGlzaGEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnVXBlbmRlbGVvIHVuYW90YWtpd2EgaWxpIGt1ZnV0YSBtYWJhZGlsaWtvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hd2VrYSBoYWxpIHlhIGt1dHVtaWEga2F0aWthIHNrcmluaSB5YSB3aW5naSB3YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYXdla2EgaGFsaSB5YSB0dWtpbyBrYXRpa2Egc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpb25nbyBrYXRpa2EgbWVueXUgYW1iYWNobyBraW5hdW5nYW5pc2hhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBuYSBraXBlbmdlZSBraW5naW5lIGthdGlrYSBtYW5kaGFyaSBpbGl5b2t1endhIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSB5YSBraW9sZXVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBraXVuZ28ga3dlbnllICBtZW55dSBrdXdlemEga3VmaWtpYSBoaXN0b3JpYSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2F0aWthIG1hcGl0aW8geWEga2lwZW5nZWxlIHlhIHVzYW5pZGkgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2l1bmdvIGt3ZW55ZSAgbWVueXUga3V3ZXphIGt1ZmlraWEgaGlzdG9yaWEgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGthdGlrYSBtYW5kaGFyaSB5YWtlIGlsaXlva3V6d2EgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGt1aGFyaXJpICBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2F0aWthIG1hbmRoYXJpIHlha2UgaWxpeW9rdXp3YSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09ueWVzaGEga2l1bmdvIGthdGlrYSBtZW55dSBrdXRvYSBuYWthbGEgcGFjaGEgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGthdGlrYSBtYXBpdGlvIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGt1dG9hIG5ha2FsYSBwYWNoYSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2F0aWthIG1hbmRoYXJpIHlha2UgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09ueWVzaGEga2l1bmdvIGthdGlrYSBtZW55dSBrdWhhcmlyaSAga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGthdGlrYSBtYW5kaGFyaSB5YWtlIGlsaXlva3V6d2EgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nbyBrd2VueWUgbWVueXUgaWxpIGt1cnVkaSBueXVtYSBrd2VueWUgbXVvbmVrYW5vIHdhIG1hYmFkaWxpa28gdWxpb2t1endhIHdhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09ueWVzaGEga2l1bmdvIGthdGlrYSBtZW55dSBrdWNoYXBpc2hhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrYXRpa2EgbWFuZGhhcmkgeWFrZSBpbGl5b2t1endhIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09ueWVzaGEga2l1bmdvIGthdGlrYSBtZW55dSBrdWt1emEga2F0aWthIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrYXRpa2EgbWFwaXRpbyB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGhpc3RvcmlhIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSAoa3dhIG1wYW5naWxpbyB3YSBrdXJ1ZGkgbnl1bWEpIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdLaXRhbWJ1bGlzaGkgY2hhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSwgbWZhbm8uQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIENoYWd1LW1zaW5naSBuaSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ1RhYmFrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnVWhhc2lidSB3YSBtdWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdVdGF3YWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdKZW5nbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnS2lvbGVzdXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdFbmVvIGthemknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnUHJvZ3JhbXUgeWEgYnVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnQm9hYm9ueWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0tvbXB5dXRhIHlhIG1rb25vbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01mYW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdLaXBhbnlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdNdGFuZGFvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnRW5naW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdNYXRva2VvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnQ2h1bWJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnS3ViYWxpYW5vIHlhIGtpdmFuZ28gY2hhIGh1ZHVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnS2l3YW5nbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/th_TH_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnRoX1RIX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ+C5geC4nOC4meC4l+C4teC5iOC4quC4s+C4q+C4o+C4seC4muC4guC5ieC4reC4oeC4ueC4peC4geC4suC4o+C4o+C5ieC4reC4h+C4guC4reC4guC4suC5gOC4guC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ+C5geC4nOC4meC4l+C4teC5iOC4quC4s+C4q+C4o+C4seC4muC4guC5ieC4reC4oeC4ueC4peC4geC4suC4o+C4leC4reC4muC4quC4meC4reC4h+C4l+C4teC5iOC4quC5iOC4h+C4reC4reC4gSc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ+C4geC4suC4o+C4iOC4seC4lOC4geC4suC4oyBDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+C4meC4tOC4ouC4suC4oeC4guC4reC4h+C4hOC4peC4suC4quC4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn4LiZ4Li04Lii4Liy4Lih4LiC4Lit4LiH4LiE4Lil4Liy4Liq4LiB4Liy4Lij4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnQ29uZmlnIEl0ZW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn4LiV4Lix4Lin4LiB4Lij4Lit4LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiE4Lil4Liy4LiqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+C5gOC4peC4t+C4reC4geC4hOC4peC4suC4quC4iOC4suC4geC4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC4quC4o+C5ieC4suC4hyBDb25maWcgSXRlbSDguYPguKvguKHguYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfguITguKXguLLguKonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICfguIHguLLguKPguJfguLPguIfguLLguJnguYDguJvguYfguJnguIHguKXguLjguYjguKHguILguK3guIcgSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guIHguLLguKPguYPguIrguYnguIfguLLguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guILguK3guIfguYDguKvguJXguLjguIHguLLguKPguJPguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn4LmA4LiK4Li34LmI4Lit4Lih4LmC4Lii4LiH4LmE4Lib4LiX4Li14LmI4Lit4Li34LmI4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfguIjguLPguJnguKfguJnguKPguLLguKLguIHguLLguKPguIHguLLguKPguIHguLPguKvguJnguJTguITguYjguLLguYTguKHguYjguJbguLnguIHguJXguYnguK3guIchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ+C4iOC4s+C4meC4p+C4meC4guC4reC4h+C4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4geC4s+C4q+C4meC4lOC4hOC5iOC4suC4reC4t+C5iOC4meC5huC4l+C4teC5iOC4leC5ieC4reC4h+C4geC4suC4o+C5gOC4iuC4t+C5iOC4reC4oeC5guC4ouC4hyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ+C4hOC4uOC4k+C4leC5ieC4reC4h+C4geC4suC4o+C4peC4mkNoYW5nZSDguJnguLXguYnguKvguKPguLfguK3guYTguKHguYg/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyDguIrguLfguYjguK3guILguK3guIfguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJnguLXguYlcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn4LiK4Li34LmI4Lit4LiX4Li14LmI4LiW4Li54LiB4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LmC4LiU4LiiIENvbmZpZ0l0ZW1zIOC4oeC4teC4iOC4s+C4meC4p+C4meC4lOC4seC4h+C4leC5iOC4reC5hOC4m+C4meC4teC5iSAocyk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn4Lir4Lih4Liy4Lii4LmA4Lil4LiC4LmA4Lin4Lit4Lij4LmM4LiK4Lix4LmJ4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfguIrguLfguYjguK3guILguK3guIfguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguJnguLXguYlcJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+C4iuC4t+C5iOC4reC4l+C4teC5iOC4luC4ueC4geC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC5guC4lOC4oiBDb25maWdJdGVtcyDguKHguLXguIjguLPguJnguKfguJnguJTguLHguIfguJXguYjguK3guYTguJvguJnguLXguYkgKHMpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4LmA4Lir4LiV4LmM4LiB4Liy4Lij4LiT4LmMJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn4LmA4LiZ4Li34LmJ4Lit4Lir4Liy4Lib4Lij4Liw4Lin4Lix4LiV4Li0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfguYDguKfguKXguLLguJfguLXguYjguKrguKPguYnguLLguIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiL4Li54LihJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0NvbmZpZyBJdGVtcyDguYPguJnguYHguJXguYjguKXguLDguKvguJnguYnguLInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ+C4lOC4s+C5gOC4meC4tOC4meC4geC4suC4o+C4hOC5ieC4meC4q+C4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfguITguYnguJnguKvguLLguYDguKfguK3guKPguYzguIrguLHguYjguJnguJfguLXguYjguYHguKXguYnguKfguJTguYnguKfguKLguKvguKPguLfguK3guYTguKHguYg/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+C4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4geC4s+C4q+C4meC4lOC4hOC5iOC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICfguILguYnguK3guKHguLnguKXguKPguLLguKLguIHguLLguKPguIHguLLguKPguIHguLPguKvguJnguJTguITguYjguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4Lib4Lix4LiI4LiI4Li44Lia4Lix4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guILguK3guIfguYDguKvguJXguYzguIHguLLguKPguJPguYzguJvguLHguIjguIjguLjguJrguLHguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn4LiB4Liy4Lij4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiH4Lil4LmI4Liy4Liq4Li44LiUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ+C4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4h+C4peC5iOC4suC4quC4uOC4lOC5guC4lOC4oic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ+C4m+C4o+C4sOC5gOC4oOC4l+C4guC4reC4h+C4reC4reC4muC5gOC4iOC4hCc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJ+C4geC4o+C4reC4h+C4leC4suC4oeC4m+C4o+C4sOC5gOC4oOC4lyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAn4LiE4Li44LiT4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4LiU4Liz4LmA4LiZ4Li04LiZ4LiB4Liy4Lij4LiV4LmI4Lit4LmE4Lib4Lir4Lij4Li34Lit4LmE4Lih4LmIPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfguJXguYnguK3guIfguIHguLLguKMgRXhhbXBsZVByb2Nlc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ+C5hOC4oeC5iOC4quC4suC4oeC4suC4o+C4luC5geC4quC4lOC4h+C4m+C4o+C4sOC4p+C4seC4leC4tCDguYTguKHguYjguYTguJTguYnguKPguLHguJogVGlja2V0SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn4LmE4Lih4LmI4Liq4Liy4Lih4Liy4Lij4LiW4LmB4Liq4LiU4LiH4Lib4Lij4Liw4Lin4Lix4LiV4Li0IOC5hOC4oeC5iOC5hOC4lOC5ieC4o+C4seC4miBUaWNrZXRJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfguYTguKHguYjguKrguLLguKHguLLguKPguJbguYHguKrguJTguIfguJvguKPguLDguKfguLHguJXguLQg4LmE4Lih4LmI4LmE4LiU4LmJ4Lij4Lix4LiaIFRpY2tldElEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfguK3guYnguLLguIfguK3guLTguIcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ+C5hOC4oeC5iOC4oeC4teC4nOC4peC4peC4seC4nuC4mOC5jCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn4LiB4Liy4Lij4LiU4Liz4LmA4LiZ4Li04LiZ4LiH4Liy4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfguITguLPguYDguJXguLfguK3guJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfguYDguKvguJXguLjguIHguLLguKPguJPguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+C4quC4luC4suC4meC4oOC4suC4nuC4geC4suC4o+C4nuC4seC4kuC4meC4suC4geC4suC4o+C4guC4reC4hyBjb25maWcgaXRlbSDguJnguLXguYkgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LmA4Lir4LiV4Li44LiB4Liy4Lij4LiT4LmM4LiC4Lit4LiHIGNvbmZpZyBpdGVtIOC4meC4tSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ+C5hOC4oeC5iOC5hOC4lOC5ieC4o+C4seC4muC4reC4meC4uOC4jeC4suC4lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfguJvguKPguLDguYDguKDguJfguKrguJbguLLguJnguKDguLLguJ7guIHguLLguKPguYPguIrguYnguIfguLLguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn4Lib4Lij4Liw4LmA4Lig4LiX4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4LmA4Lir4LiV4LmM4LiB4Liy4Lij4LiT4LmM4Lib4Lix4LiI4LiI4Li44Lia4Lix4LiZJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ+C4o+C4sOC4q+C4p+C5iOC4suC4hyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfguIjguLPguJnguKfguJnguKrguLnguIfguKrguLjguJTguILguK3guIfguKvguJnguLbguYjguIfguK3guLjguJvguIHguKPguJPguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn4Lir4Lih4LiU4Lit4Liy4Lii4Li4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn4LiB4Liy4Lij4LiU4Li54LmB4Lil4Lij4Lix4LiB4Lip4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn4LiB4Liy4Lij4LiZ4Liz4Lij4LmI4Lit4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICfguIHguLLguKPguKfguLLguIfguYHguJzguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn4LiL4LmI4Lit4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfguYDguIHguKnguLXguKLguJMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn4LiV4Lix4Lin4Lit4Lii4LmI4Liy4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfguJfguJTguKrguK3guJovUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICfguJXguKPguKfguIjguKrguK3guJrguIrguLfguYjguK3guYDguInguJ7guLLguLDguYDguJfguYjguLLguJnguLHguYnguJnguJfguLXguYjguK3guKLguLnguYjguYPguJkgQ29uZmlnSXRlbSDguIrguLHguYnguJnguYDguJTguLXguKLguKfguIHguLHguJkgKOC4iuC4seC5ieC4mSkg4Lir4Lij4Li34Lit4LiX4Lix4LmJ4LiH4Lir4Lih4LiUICjguJfguLHguYnguIfguKvguKHguJQpIOC4i+C4tuC5iOC4h+C4q+C4oeC4suC4ouC4hOC4p+C4suC4oeC4p+C5iOC4skNvbmZpZ0l0ZW0g4LiX4Li14LmI4Lih4Li14Lit4Lii4Li54LmI4LiX4Lix4LmJ4LiH4Lir4Lih4LiU4LiI4Liw4LiW4Li54LiB4LiZ4Liz4LmA4LiC4LmJ4Liy4Lia4Lix4LiN4LiK4Li14LmA4Lie4Li34LmI4Lit4LiE4LmJ4LiZ4Lir4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiX4Li14LmI4LiL4LmJ4Liz4LiB4Lix4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0NvbmZpZyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmC4Lih4LiU4Li54Lil4LiB4Li04LiI4LiB4Lij4Lij4Lih4LiC4Lit4LiHQ29uZmlnIGl0ZW0g4LiX4Li14LmI4LiK4LmI4Lin4Lii4LmD4Lir4LmJ4LmA4LiC4LmJ4Liy4Liq4Li54LmI4Lij4Liw4Lia4Lia4Lib4Lij4Liw4Lin4Lix4LiV4Li04LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4Liq4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn4LiB4Liy4Lij4LiI4Liz4LiB4Lix4LiUIENvbmZpZ3VyYXRpb24gSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWd1cmF0aW9uIEl0ZW0g4LiE4LmJ4LiZ4Lir4LiyIGJhY2tlbmQgcm91dGVyIOC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfguKrguKPguYnguLLguIfguYHguKXguLDguIjguLHguJTguIHguLLguKPguITguLPguJnguLTguKLguLLguKHguKrguLPguKvguKPguLHguJogQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn4LiC4LmJ4Lit4Lih4Li54Lil4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiX4Li14LmI4LiI4Liw4LmD4LiK4LmJ4LmD4LiZ4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmM4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4LinIOC4leC4seC4p+C4reC4ouC5iOC4suC4hzogIlRpY2tldENyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO1RpY2tldENyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7VGlja2V0Q3JlYXRlVGltZVBvaW50PTI7Iic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ+C4guC5ieC4reC4oeC4ueC4peC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4l+C4teC5iOC4iOC4sOC5g+C4iuC5ieC5g+C4meC5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jOC4quC4s+C4q+C4o+C4seC4muC4q+C4meC5ieC4suC4iOC4reC4geC4suC4o+C4hOC5ieC4meC4q+C4suC4leC4seC5i+C4pyDguJXguLHguKfguK3guKLguYjguLLguIc6ICJUaWNrZXRDcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0RGF5PTQ7VGlja2V0Q3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0b3BNb250aD0xMTtUaWNrZXRDcmVhdGVUaW1lU3RvcERheT0zOyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguKrguLTguJfguJjguLTguYzguJfguLXguYjguIjguLPguYDguJvguYfguJnguYPguJnguIHguLLguKPguYDguK3guLLguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTeC5guC4lOC4ouC5g+C4iuC5ieC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4seC5iOC4p+C5hOC4myc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4Liq4Li04LiX4LiY4Li04LmM4LiX4Li14LmI4LiI4Liz4LmA4Lib4LmH4LiZ4LmD4LiZ4LiB4Liy4Lij4LmA4Lit4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU03guYLguJTguKLguYPguIrguYnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguJfguLHguYjguKfguYTguJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4quC4tOC4l+C4mOC4tOC5jOC4l+C4teC5iOC4iOC4s+C5gOC4m+C5h+C4meC5g+C4meC4geC4suC4o+C4hOC5ieC4meC4q+C4suC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNN4LmC4LiU4Lii4LmD4LiK4LmJ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiX4Lix4LmI4Lin4LmE4LibJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguKrguLTguJfguJjguLTguYzguJfguLXguYjguIjguLPguYDguJvguYfguJnguYPguJnguIHguLLguKPguYDguK3guLLguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTeC5guC4lOC4ouC5g+C4iuC5ieC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4seC5iOC4p+C5hOC4myc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguYLguKHguJTguLnguKXguKDguLLguJ7guKPguKfguKHguYPguJnguIHguLLguKPguYHguKrguJTguIfguKHguLjguKHguKHguK3guIfguILguJnguLLguJTguYDguKXguYfguIHguILguK3guIfguKPguLLguKLguIHguLLguKMgIENvbmZpZ3VyYXRpb24gSXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguJnguLTguJ7guIjguJnguYzguJfguLHguYjguKfguYTguJvguYDguJvguYfguJnguKPguLLguKLguJrguLjguITguITguKXguYPguJlDb25maWdJdGVtIOC5geC4leC5iOC4peC4sOC4iuC4seC5ieC4mSDguYDguJ7guLfguYjguK3guJXguKPguKfguIjguKrguK3guJrguIrguLfguYjguK0gQ29uZmlnSXRlbSDguYHguKXguLDguYDguJ7guLfguYjguK3guYHguKrguJTguIfguILguYnguK3guITguKfguLLguKHguJzguLTguJTguJ7guKXguLLguJTguJfguLXguYjguKrguK3guJTguITguKXguYnguK3guIfguIHguLHguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4guC4reC4h+C4leC4seC5i+C4p+C4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5gOC4o+C4teC4ouC4h+C4peC4s+C4lOC4seC4muC4leC4seC5i+C4p+C4guC4reC4h+C4nOC4peC4peC4seC4nuC4mOC5jOC4guC4reC4h+C4geC4suC4o+C4hOC5ieC4meC4q+C4suC4leC4seC5i+C4p+C5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmM4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4LiV4Lix4LmL4Lin4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmA4Lij4Li14Lii4LiH4Lil4Liz4LiU4Lix4Lia4LiV4Lix4LmL4Lin4LiC4Lit4LiH4Lic4Lil4Lil4Lix4Lie4LiY4LmM4LiC4Lit4LiH4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4Lin4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmM4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4LiV4Lix4LmL4Lin4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmA4Lij4Li14Lii4LiH4Lil4Liz4LiU4Lix4Lia4LiV4Lix4LmL4Lin4LiC4Lit4LiH4Lic4Lil4Lil4Lix4Lie4LiY4LmM4LiC4Lit4LiH4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4Lin4LiC4Lit4LiH4LiB4Liy4Lij4LiU4Liz4LmA4LiZ4Li04LiZ4LiB4Liy4Lij4LiZ4Li14LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguIHguLLguKPguIjguLHguJTguYDguKPguLXguKLguIfguYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguJXguLHguYvguKfguYPguJnguJzguKXguKXguLHguJ7guJjguYzguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguJXguLHguYvguKfguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwg4LiC4Li24LmJ4LiZOiDguYDguIHguYjguLLguJfguLXguYjguKrguLjguJTguJTguYnguLLguJnguJrguJkg4Lil4LiHOiDguKXguYjguLLguKrguLjguJTguJTguYnguLLguJnguJrguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4geC4suC4o+C4iOC4seC4lOC5gOC4o+C4teC4ouC4h+C5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4guC4reC4h+C4leC4seC5i+C4p+C4guC4reC4h+C4nOC4peC4peC4seC4nuC4mOC5jOC4guC4reC4h+C4geC4suC4o+C4hOC5ieC4meC4q+C4suC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4peC4ueC4geC4hOC5ieC4siDguILguLbguYnguJk6IOC5gOC4geC5iOC4suC4l+C4teC5iOC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSDguKXguIc6IOC4peC5iOC4suC4quC4uOC4lOC4lOC5ieC4suC4meC4muC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguIHguLLguKPguIjguLHguJTguYDguKPguLXguKLguIfguYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguJXguLHguYvguKfguYPguJnguJzguKXguKXguLHguJ7guJjguYzguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguJXguLHguYvguKfguILguK3guIfguIHguLLguKPguJTguLPguYDguJnguLTguJnguIHguLLguKPguJnguLXguYkg4LiC4Li24LmJ4LiZOiDguYDguIHguYjguLLguJfguLXguYjguKrguLjguJTguJTguYnguLLguJnguJrguJkg4Lil4LiHOiDguKXguYjguLLguKrguLjguJTguJTguYnguLLguJnguJrguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmM4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4Lin4LiX4Li14LmI4LmB4Liq4LiU4LiH4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYzguIHguLLguKPguITguYnguJnguKvguLLguJXguLHguYvguKfguJfguLXguYjguJbguLnguIHguYHguKrguJTguIfguKrguLPguKvguKPguLHguJrguKvguJnguYnguLLguIjguK3guIHguLLguKPguITguYnguJnguKvguLLguJXguLHguYvguKcg4LiV4Lix4Lin4Lit4Lii4LmI4Liy4LiHOiAi4LiE4Li14Lii4LmMIiDguJXguYnguK3guIfguKHguLXguIrguLfguYjguK3guILguK3guIfguJ/guLTguKXguJTguYzguYHguJrguJrguYTguJTguJnguLLguKHguLTguIHguYPguJnguIHguKPguJPguLXguJnguLXguYnguITguLfguK0gXCdYXCcgICLguYDguJnguLfguYnguK3guKvguLIiIOC4leC5ieC4reC4h+C4oeC4teC4hOC5iOC4suC4guC4reC4h+C4n+C4tOC4peC4lOC5jOC5hOC4lOC4meC4suC4oeC4tOC4geC4i+C4tuC5iOC4h+C4guC4tuC5ieC4meC4reC4ouC4ueC5iOC4geC4seC4muC4m+C4o+C4sOC5gOC4oOC4l+C4guC4reC4h+C4n+C4tOC4peC4lOC5jOC5hOC4lOC4meC4suC4oeC4tOC4gSDguILguYnguK3guITguKfguLLguKE6IOC4hOC4t+C4rSBcJ+C4guC5ieC4reC4hOC4p+C4suC4oVwnICDguYDguKHguJnguLnguYHguJrguJrguYDguKXguLfguYjguK3guJnguKXguIc6IFwnMVwnLCAg4Lin4Lix4LiZ4LiX4Li14LmIIC8g4LmA4Lin4Lil4LiyOiBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhciA9IDE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4reC4muC5gOC4iOC4geC4leC5jOC4ouC5iOC4reC4ouC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4guC4reC4h+C4hOC4peC4suC4qiBcJ0lUU01Db25maWdJdGVtXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguKfguLLguKHguKrguLnguIfguKrguLPguKvguKPguLHguJrguITguK3guKHguYLguJ7guYDguJnguJnguJXguYzguYHguIHguYnguYTguILguILguYnguK3guITguKfguLLguKHguKrguLPguKvguKPguLHguJrguKvguJnguYnguLLguIjguK3guJnguLXguYkg4LmD4Liq4LmI4Lir4Lih4Liy4Lii4LmA4Lil4LiCICjguJ7guLTguIHguYDguIvguKUpIOC4q+C4o+C4t+C4reC4hOC5iOC4suC4o+C5ieC4reC4ouC4peC4sCAo4LmA4LiX4Li14Lii4LiaKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguIjguLPguJnguKfguJnguYHguJbguKfguKrguLPguKvguKPguLHguJrguJXguLHguKfguYHguIHguYnguYTguILguIHguLLguKPguJnguLTguKLguLLguKEgQ0kg4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4Liq4LiC4Lit4LiH4Lic4Li54LmJ4LiU4Li54LmB4Lil4Lij4Liw4Lia4LiaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4guC4teC4lOC4iOC4s+C4geC4seC4lOC4guC4reC4h+C4geC4suC4o+C4hOC5ieC4meC4q+C4suC4quC4s+C4q+C4o+C4seC4muC4q+C4meC5ieC4suC4iOC4rSBBZ2VudElUU01Db25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiC4Li14LiU4LiI4Liz4LiB4Lix4LiU4LiC4Lit4LiH4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LiI4LitIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguILguLXguJTguIjguLPguIHguLHguJTguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguKrguLPguKvguKPguLHguJrguKvguJnguYnguLLguIjguK0gQWdlbnRJVFNNQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4guC4teC4lOC4iOC4s+C4geC4seC4lOC4guC4reC4h+C4geC4suC4o+C4hOC5ieC4meC4q+C4suC4quC4s+C4q+C4o+C4seC4muC4q+C4meC5ieC4suC4iOC4rSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguK3guKXguLHguKHguJnguYzguJfguLXguYjguYHguKrguJTguIcgQ0lzIOC5g+C4meC4leC4suC4o+C4suC4h+C4geC4suC4o+C5gOC4iuC4t+C5iOC4reC4oeC5guC4ouC4h+C4oeC4uOC4oeC4oeC4reC4h+C4l+C4teC5iOC4i+C4seC4muC4i+C5ieC4reC4meC4i+C4tuC5iOC4h+C4guC4tuC5ieC4meC4reC4ouC4ueC5iOC4geC4seC4muC4hOC4peC4suC4qiBDSSDguKPguLLguKLguIHguLLguKPguIHguLLguKPguJvguYnguK3guJnguYHguJXguYjguKXguLDguKPguLLguKLguIHguLLguKPguIjguLDguJXguYnguK3guIfguJnguLPguKvguJnguYnguLLguJTguYnguKfguKLguIrguLfguYjguK3guITguKXguLLguKrguYHguKXguLDguYDguITguKPguLfguYjguK3guIfguKvguKHguLLguKLguJfguKfguLTguKDguLLguITguITguLnguYggKOC5gOC4iuC5iOC4meC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDogOikg4Lih4Li14LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmMIENJIOC5gOC4nuC4teC4ouC4h+C5hOC4oeC5iOC4geC4teC5iOC5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jCDguJfguLXguYjguYPguIrguYnguIHguLHguJnguJfguLHguYjguKfguYTguJvguYPguJkgQ0lzIOC4l+C4seC5ieC4h+C4q+C4oeC4lCAo4LiV4Lix4Lin4Lit4Lii4LmI4Liy4LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiE4Lil4Liy4Liq4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOiDguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6OuC4iuC4t+C5iOC4rSwg4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjpDdXJEZXBsU3RhdGUsIOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDo6Q3JlYXRlVGltZSkg4LmD4LiZ4LiB4Liy4Lij4LmB4Liq4LiU4LiH4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmMIENJIOC4leC4suC4oeC4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5hOC4p+C5ieC5g+C4meC4hOC4s+C4meC4tOC4ouC4suC4oSBDSSDguIjguLDguJXguYnguK3guIfguYPguIrguYnguKPguLnguJvguYHguJrguJrguJXguYjguK3guYTguJvguJnguLXguYko4LiV4Lix4Lin4Lit4Lii4LmI4Liy4LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiE4Lil4Liy4Liq4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMKTog4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjrguK7guLLguKPguYzguJTguJTguLTguKrguIHguYw6OjEsIOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDo64Liu4Liy4Lij4LmM4LiU4LiU4Li04Liq4LiB4LmMOjoxOjrguITguKfguLLguKHguIjguLg6OjEsIOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDo64Liu4Liy4Lij4LmM4LiU4LiU4Li04Liq4LiB4LmMOjoyLCDguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6OuC4ruC4suC4o+C5jOC4lOC4lOC4tOC4quC4geC5jDo6Mjo64LiE4Lin4Liy4Lih4LiI4Li4OjoxIOC4q+C4suC4geC5hOC4oeC5iOC4oeC4teC4geC4suC4o+C4m+C5ieC4reC4meC4hOC4peC4suC4quC4l+C4teC5iCBDSSDguYHguKXguYnguKfguITguK3guKXguLHguKHguJnguYzguYDguKPguLTguYjguKHguJXguYnguJnguIjguLDguYHguKrguJTguIfguJXguLLguKHguJfguLXguYjguIHguLPguKvguJnguJTguYTguKfguYnguYPguJnguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTUNvbmZpZ0l0ZW0gOjpGcm9udGVuZCA6OiBBZ2VudElUU01Db25maWdJdGVtICMjIyBTaG93Q29sdW1ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC4l+C4teC5iOC5g+C4iuC5ieC5hOC4lOC5ieC4quC4s+C4q+C4o+C4seC4miBcJ+C4geC4suC4o+C4geC4o+C4sOC4l+C4s1wnIOC5g+C4meC4o+C4sOC4lOC4seC4muC4l+C4teC5iOC4quC4suC4oeC4guC4reC4h+C5guC4hOC4o+C4h+C4quC4o+C5ieC4suC4hyBBQ0wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguKPguLLguKLguIHguLLguKPguJfguLXguYjguJfguLXguYjguYPguIrguYnguYTguJTguYnguYPguJnguKPguLDguJTguLHguJrguYHguKPguIHguILguK3guIfguYLguITguKPguIfguKrguKPguYnguLLguIcgQUNMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC4l+C4teC5iOC5g+C4iuC5ieC5hOC4lOC5ieC5g+C4meC4o+C4sOC4lOC4seC4muC4l+C4teC5iOC4quC4reC4h+C4guC4reC4h+C5guC4hOC4o+C4h+C4quC4o+C5ieC4suC4hyBBQ0wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfguKPguLLguKLguIHguLLguKPguIHguLLguKPguIHguLPguKvguJnguJTguITguYjguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guIHguLLguKPguYPguIrguYnguIfguLLguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ+C4i+C5ieC4syc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lir4Lix4Lin4LiC4LmJ4Lit4Lif4Li04Lil4LiU4LmM4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4Lif4Li04Lil4LiU4LmM4LmA4Lie4Li04LmI4Lih4LmA4LiV4Li04Lih4LiC4Lit4LiHIElUU03guYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lir4Lix4Lin4LiC4LmJ4Lit4Lif4Li04Lil4LiU4LmM4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4Lif4Li04Lil4LiU4LmM4LmA4Lie4Li04LmI4Lih4LmA4LiV4Li04Lih4LiC4Lit4LiHIElUU03guYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4q+C4seC4p+C4guC5ieC4reC4n+C4tOC4peC4lOC5jOC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4n+C4tOC4peC4lOC5jOC5gOC4nuC4tOC5iOC4oeC5gOC4leC4tOC4oeC4guC4reC4hyBJVFNN4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ+C5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4o+C4suC4ouC4geC4suC4o+C4hOC4uOC4k+C4peC4seC4geC4qeC4k+C4sOC4guC4reC4h+C4geC4suC4o+C4l+C4s+C4h+C4suC4meC5gOC4m+C5h+C4meC4geC4peC4uOC5iOC4oSDguKrguLPguKvguKPguLHguJrguJ/guKPguK3guJnguJXguYzguYDguK3guJnguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYzguYDguJ7guLfguYjguK3guJfguLPguIfguLLguJnguIHguLHguJrguKPguLLguKLguIHguLLguKPguIHguLLguKPguIHguLPguKvguJnguJTguITguYjguLLguJfguLXguYjguKHguLXguKHguLLguIHguIHguKfguYjguLLguKvguJnguLbguYjguIfguYPguJnguKvguJnguLbguYjguIfguITguKPguLHguYnguIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ+C5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4o+C4suC4ouC4geC4suC4o+C4hOC4uOC4k+C4peC4seC4geC4qeC4k+C4sOC4guC4reC4h+C4geC4suC4o+C4l+C4s+C4h+C4suC4meC5gOC4m+C5h+C4meC4geC4peC4uOC5iOC4oeC5gOC4ieC4nuC4suC4sOC4quC4s+C4q+C4o+C4seC4muC4geC4peC4uOC5iOC4oeC4l+C4teC5iOC4o+C4sOC4muC4uOC5hOC4p+C5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+C4geC4suC4o+C4peC4h+C4l+C4sOC5gOC4muC4teC4ouC4meC5guC4oeC4lOC4ueC4pSBHZW5lcmljSW50ZXJmYWNlIOC4quC4s+C4q+C4o+C4seC4muC4iuC4seC5ieC4meC4guC4reC4h+C4nOC4ueC5ieC4o+C5ieC4reC4h+C4guC4rSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+C4geC4suC4o+C4peC4h+C4l+C4sOC5gOC4muC4teC4ouC4meC5guC4oeC4lOC4ueC4pSBHZW5lcmljSW50ZXJmYWNlIOC4quC4s+C4q+C4o+C4seC4muC4iuC4seC5ieC4meC4guC4reC4h+C4nOC4ueC5ieC4o+C5ieC4reC4h+C4guC4rSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfguIHguLLguKPguKXguIfguJfguLDguYDguJrguLXguKLguJnguYLguKHguJTguLnguKUgR2VuZXJpY0ludGVyZmFjZSDguKrguLPguKvguKPguLHguJrguIrguLHguYnguJnguILguK3guIfguJzguLnguYnguKPguYnguK3guIfguILguK0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guILguK3guIfguYDguKvguJXguYzguIHguLLguKPguJPguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ+C4quC4luC4suC4meC4oOC4suC4nuC4guC4reC4h+C5gOC4q+C4leC5jOC4geC4suC4o+C4k+C5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAn4LmC4Lih4LiU4Li54Lil4LmD4LiZ4LiB4Liy4Lij4LiV4Lij4Lin4LiI4Liq4Lit4Lia4Lic4Li54LmJ4Lij4Lix4Lia4Lic4Li04LiU4LiK4Lit4Lia4LiB4Lil4Li44LmI4Lih4Liq4Liz4Lir4Lij4Lix4Lia4LiE4Lil4Liy4LiqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAn4LmC4Lih4LiU4Li54Lil4LmD4LiZ4LiB4Liy4Lij4LiV4Lij4Lin4LiI4Liq4Lit4Lia4Lic4Li54LmJ4Lij4Lix4Lia4Lic4Li04LiU4LiK4Lit4Lia4LiB4Lil4Li44LmI4Lih4Liq4Liz4Lir4Lij4Lix4LiaIGNvbmZpZ3VyYXRpb24gaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ+C5guC4oeC4lOC4ueC4peC4quC4o+C5ieC4suC4h+C4quC4luC4tOC4leC4tCBJVFNNIGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguIjguLDguYHguKrguJTguIfguJrguJnguYHguJXguYjguKXguLDguKvguJnguYnguLLguILguK3guIfguJzguKXguIHguLLguKPguITguYnguJnguKvguLLguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguKrguLLguJjguLLguKPguJPguLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguIjguLDguYHguKrguJTguIfguJrguJnguYHguJXguYjguKXguLDguKvguJnguYnguLLguILguK3guIfguJzguKXguIHguLLguKPguITguYnguJnguKvguLLguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguKXguLnguIHguITguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn4Lig4Liy4Lie4Lij4Lin4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguIHguLLguKPguJ7guLHguJLguJnguLLguKrguJbguLLguJnguKDguLLguJ7guYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4nuC4seC4kuC4meC4suC4quC4luC4suC4meC4oOC4suC4nuC4guC4reC4h+C4quC4teC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4nuC4seC4kuC4meC4suC4quC4luC4suC4meC4oOC4suC4nuC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguJXguLHguKfguK3guKLguYjguLLguIfguIHguKXguLjguYjguKHguJfguLXguYjguYTguJTguYnguKPguLHguJrguK3guJnguLjguI3guLLguJXguILguK3guIfguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYzguYHguITguYfguJXguJXguLLguKXguYfguK3guIHguJfguLHguYjguKfguYTguJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguIHguLLguKPguJ7guLHguJLguJnguLLguKrguJbguLLguJnguKDguLLguJ7guYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4nuC4seC4kuC4meC4suC4quC4luC4suC4meC4oOC4suC4nuC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguYHguJXguYjguKXguLDguKvguJnguYnguLIo4LiL4Li24LmI4LiHIGNvbmZpZ3VyYXRpb24gaXRlbXMg4LmB4Liq4LiU4LiHKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguIHguLLguKPguJ7guLHguJLguJnguLLguKrguJbguLLguJnguKDguLLguJ7guYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguIHguLLguKPguJ7guLHguJLguJnguLLguKrguJbguLLguJnguKDguLLguJ7guYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lie4Lix4LiS4LiZ4Liy4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4Lit4LiZ4Li44LiN4Liy4LiV4Li04LmD4LiZ4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU00g4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguYPguJnguKvguJnguYnguLLguIjguK3guKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguYPguJnguKvguJnguYnguLLguIjguK3guIHguLLguKPguITguYnguJnguKvguLLguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguYPguJnguKvguJnguYnguLLguIjguK3guIHguLLguKPguITguYnguJnguKvguLLguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguYPguJnguKvguJnguYnguLLguIjguK3guKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4Lit4LiZ4Li44LiN4Liy4LiV4Li04LmD4LiZ4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiL4Li54Lih4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU00g4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4Lit4LiZ4Li44LiN4Liy4LiV4Li04LmD4LiZ4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LiB4Liy4Lij4LmA4Lie4Li04LmI4Lih4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU00g4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C4oeC4teC4geC4suC4o+C4reC4meC4uOC4jeC4suC4leC4tOC5g+C4meC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNNIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguIHguLLguKPguYHguIHguYnguYTguILguYPguJnguKvguJnguYnguLLguIjguK3guKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4Lit4LiZ4Li44LiN4Liy4LiV4Li04LmD4LiZ4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4Lib4Lij4Liw4Lin4Lix4LiV4Li04LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU00g4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguIHguLLguKPguJ7guLTguKHguJ7guYzguYPguJnguKvguJnguYnguLLguIjguK3guKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ+C4quC4tOC4l+C4mOC4tOC4nuC4tOC5gOC4qOC4qeC4l+C4teC5iOC4iOC4s+C5gOC4m+C5h+C4meC5g+C4meC4geC4suC4o+C4peC4muC4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4Liq4LiW4Liy4LiZ4Liw4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LmA4Lib4LmH4LiZ4LiB4Lil4Li44LmI4Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4leC4seC5ieC4h+C4hOC5iOC4suC4quC4luC4suC4meC4sOC4guC4reC4h+C5gOC4q+C4leC4uOC4geC4suC4o+C4k+C5jOC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4o+C4suC4ouC4geC4suC4o+C5gOC4m+C5h+C4meC4geC4peC4uOC5iOC4oeC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC4peC4tOC4h+C4hOC5jOC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4geC4seC4muC4reC4reC4muC5gOC4iOC4geC4hOC5jOC4reC4t+C5iOC4meC5g+C4meC4geC4suC4o+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5g+C4meC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC5gOC4guC5ieC4suC4iuC4oeC4m+C4o+C4sOC4p+C4seC4leC4tOC4guC4reC4hyBjb25maWd1cmF0aW9uIGl0ZW0g4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiX4Lix4LmI4Lin4LmE4Lib4LiC4Lit4LiHY29uZmlndXJhdGlvbiBpdGVt4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5g+C4meC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC5gOC4guC5ieC4suC4iuC4oeC4m+C4o+C4sOC4p+C4seC4leC4tOC4guC4reC4hyBjb25maWd1cmF0aW9uIGl0ZW0g4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiL4Li54Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmD4LiZ4LiB4Liy4Lij4LiX4Li14LmI4LiI4Liw4LmB4LiB4LmJ4LmE4LiCIGNvbmZpZ3VyYXRpb24gaXRlbSDguYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguIvguLnguKHguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5g+C4meC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC4iOC4s+C4peC4reC4hyBjb25maWd1cmF0aW9uIGl0ZW0g4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiX4Lix4LmI4Lin4LmE4Lib4LiC4Lit4LiHY29uZmlndXJhdGlvbiBpdGVtIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmD4LiZ4LiB4Liy4Lij4LiX4Li14LmI4LiI4Liw4LiI4Liz4Lil4Lit4LiHY29uZmlndXJhdGlvbiBpdGVtIOC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4i+C4ueC4oeC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5g+C4meC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC5geC4geC5ieC5hOC4giBjb25maWd1cmF0aW9uIGl0ZW0g4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiL4Li54Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYDguJ7guLfguYjguK3guIHguKXguLHguJrguYTguJvguKLguLHguIfguKHguLjguKHguKHguK3guIfguIHguLLguKPguIvguLnguKHguILguK3guIfguIHguLLguKPguYDguJvguKXguLXguYjguKLguJnguYHguJvguKXguIfguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYPguJnguIHguLLguKPguJfguLXguYjguIjguLDguJ7guLTguKHguJ7guYwgY29uZmlndXJhdGlvbiBpdGVtIOC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4i+C4ueC4oeC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC4i+C4ueC4oeC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4oOC4suC4nuC4o+C4p+C4oeC4guC4reC4h+C4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lib4Lij4Liw4Lin4Lix4LiV4Li0IGNvbmZpZyBpdGVtICjguKXguLPguJTguLHguJrguKLguYnguK3guJnguIHguKXguLHguJopIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ+C4leC4seC4p+C4muC5iOC4h+C4iuC4teC5ieC4quC4s+C4q+C4o+C4seC4miAgQ29uZmlndXJhdGlvbiBJdGVtIOC5gOC4iuC5iOC4mSBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIyDguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJnguITguLfguK0gQ29uZmlnSXRlbSMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ+C4hOC4peC4suC4qic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ+C4geC4suC4o+C4quC4o+C5ieC4suC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ+C4i+C4teC4nuC4teC4ouC4uSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfguYDguJTguKrguJfguK3guJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn4Lif4Lij4Li14LmB4Lin4Lij4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfguYHguJvguYnguJnguJ7guLTguKHguJ7guYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ+C5geC4peC5h+C4m+C4l+C5h+C4reC4myc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn4LmC4Lih4LmA4LiU4LilJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfguYDguKHguYnguLLguKrguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ+C4reC4t+C5iOC4meC5hic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAn4LiC4LmJ4Lit4Lih4Li54Lil4LiX4Li14LmI4Liq4LmI4LiH4Lit4Lit4LiB4Lih4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn4Lir4LmJ4Lit4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAn4LiC4LmJ4Lit4LiV4LiB4Lil4LiH4Lij4Liw4LiU4Lix4Lia4LiB4Liy4Lij4LmD4Lir4LmJ4Lia4Lij4Li04LiB4Liy4LijJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfguKHguLLguJXguKPguJDguLLguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/tr_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnRyX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICdHZW5lbCDDp2FsxLHFn21hIHZlcmlsZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEnfSA9ICdHZWxlbiB0YWxlcCB2ZXJpbGVyaSBpw6dpbiBheWFybGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhJ30gPSAnR2lkZW4geWFuxLF0IHZlcmlsZXJpIGnDp2luIGF5YXJsYXInOwoKICAgICMgVGVtcGxhdGU6IEFkbWluSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdLb25maWfDvHJhc3lvbiDDlsSfZXNpIFnDtm5ldGltaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ1PEsW7EsWYgdGFuxLFtxLFuxLEgZGXEn2nFn3Rpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnUm9sIHRhbsSxbcSxbsSxIGRlxJ9pxZ90aXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVhZHkySW1wb3J0IENsYXNzIEJ1bmRsZXMnfSA9ICdSZWFkeTJJbXBvcnQgU8SxbsSxZiBQYWtldGxlcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVyZSB5b3UgY2FuIGltcG9ydCBSZWFkeTJJbXBvcnQgY2xhc3MgYnVuZGxlcyBzaG93Y2FzaW5nIG91ciBtb3N0IHVzdWFsIGNvbmZpZyBpdGVtcy4gUGxlYXNlIG5vdGUgdGhhdCBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBtYXkgYmUgcmVxdWlyZWQuJ30gPQogICAgICAgICdCdXJhZGEsIGVuIHlheWfEsW4geWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbWl6aSBzZXJnaWxleWVuIFJlYWR5MkltcG9ydCBzxLFuxLFmIHBha2V0bGVyaW5pIGnDp2UgYWt0YXJhYmlsaXJzaW5pei4gQmF6xLEgZWsgeWFwxLFsYW5kxLFybWFsYXLEsW4gZ2VyZWtsaSBvbGFiaWxlY2XEn2luaSBsw7x0ZmVuIHVudXRtYXnEsW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ01ldmN1dCB2YXJsxLFrbGFyxLEgZ8O8bmNlbGxleWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAnUmVhZHkyQWRvcHQgc8SxbsSxZiBwYWtldGxlcmluaSBpw6dlIGFrdGFyxLFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnQ29uZmlnIMOWxJ9lIFPEsW7EsWbEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VzaSBSb2zDvCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdZYXDEsWxhbmTEsXJtYSDDlsSfZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ1PEsW7EsWZsYXIgacOnaW4gRmlsdHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1llbmkgYmlyIFlhcMSxbGFuZMSxcm1hIMOWxJ9lc2kgb2x1xZ90dXJtYWsgacOnaW4gbGlzdGVkZW4gYmlyIFPEsW7EsWYgc2XDp2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ1PEsW7EsWYnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gVG9wbHUgRXlsZW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdEYcSfxLF0xLFtIGR1cnVtdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ09sYXkgZHVydW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0RpxJ9lcmluZSBiYcSfbGFudMSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdHZcOnZXJzaXogWWFwxLFsYW5kxLFybWEgw5bEn2VzaSBudW1hcmFzxLEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0JhxJ9sYW50xLEga3VydWxhY2FrIGJhxZ9rYSBiaXIgWWFwxLFsYW5kxLFybWEgw5bEn2VzaW5pbiBudW1hcmFzxLEuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnQnUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pIGdlcsOnZWt0ZW4gc2lsbWVrIGlzdGl5b3IgbXVzdW51ej8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnQnUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pbiBhZMSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdBZCwgYcWfYcSfxLFkYWtpIFNhecSxKGxhcilhIHNhaGlwIENvbmZpZ0l0ZW1zIHRhcmFmxLFuZGFuIHphdGVuIGt1bGxhbsSxbMSxeW9yOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1PDvHLDvG0gTnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdCdSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmluIHPDvHLDvG0gbnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnU8O8csO8bSBOdW1hcmFzxLEsIGHFn2HEn8SxZGFraSBOdW1hcmF5YS9OdW1hcmFsYXJhIHNhaGlwIENvbmZpZ0l0ZW1zIHRhcmFmxLFuZGFuIHphdGVuIGt1bGxhbsSxbMSxeW9yOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnRGHEn8SxdMSxbSBEdXJ1bXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdPbGF5IER1cnVtdSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VzaW5pbiBHZcOnbWnFn2k6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ1RhcmloIMSww6dlcmnEn2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnWWFrxLFubGHFn3TEsXJtYSBnw7Zyw7xuw7xtw7wnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnU2F5ZmEgYmHFn8SxbmEgS29uZmlnw7xyYXN5b24gw5bEn2VsZXJpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIHZlcmlzaSBidWx1bmFtYWTEsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdCdSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgc2XDp2luJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSdW4gU2VhcmNoJ30gPSAnQXJhbWEgw4dhbMSxxZ90xLFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0F5csSxY2Egw7ZuY2VraSBzw7xyw7xtbGVyZGUgYXJhbWE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSBpw6dpbiBUcmVlVmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0RlcmlubGlrIFNldml5ZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWWFrxLFubGHFn3TEsXJtYS9VemFrbGHFn3TEsXJtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdDb25maWdJdGVtIGnDp2luIG1ha3NpbXVtIGJhxJ9sYW50xLEgZMO8emV5aW5lIHVsYcWfxLFsZMSxISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1lhcMSxbGFuZMSxcm1hIMOWxJ9lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VzaSBCaWxnaWxlcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnTWV2Y3V0IERhxJ/EsXTEsW0gRHVydW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdNZXZjdXQgT2xheSBEdXJ1bXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnU29uIGRlxJ9pxZ9pa2xpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdTb24gZGXEn2nFn3RpcmVuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnQ29uZmlnSXRlbXMgw7bEn2VsZXJpbml6JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0gQXJhbWEnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ05lc25lIFTDvHLDvCc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJ1RpcGUgZ8O2cmUgZmlsdHJlbGUnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdBxZ9hxJ/EsWRha2kgc8SxbsSxZmxhciBpw6dlIGFrdGFyxLFsYWNha3TEsXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnQcWfYcSfxLFkYWtpIHJvbGxlciBpw6dlIGFrdGFyxLFsYWNha3TEsXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnxLBsZ2lsaSBkaW5hbWlrIGFsYW5sYXLEsW4gdmUgR2VuZXJhbENhdGFsb2cgc8SxbsSxZmxhcsSxbsSxbiBkYSBvbHXFn3R1cnVsYWNhxJ/EsW7EsSB2ZSBvdG9tYXRpayBvbGFyYWsga2FsZMSxcsSxbG1heWFjYcSfxLFuxLEgdW51dG1hecSxbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdEZXZhbSBldG1layBpc3RpeW9yIG11c3VuPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfDlnJuZWsgU8SxbsSxZmxhcmEgxLBodGl5YcOnIFZhciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnVGFuxLFtIGdlw6dlcmxpIGJpciBZQU1MIGthcm1hc8SxIGRlxJ9pbGRpci4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdHZW5lbCBCYWvEscWfOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlEIHZlcmlsbWVtacWfISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0VuIGF6IGJpciBzZcOnaWxpIFlhcMSxbGFuZMSxcm1hIMOWxJ9lc2luZSBpaHRpeWFjxLFuxLF6IHZhciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdCdSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmUgeWF6bWEgZXJpxZ9pbWluaXogeW9rOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnU8SxbsSxZiAlcyBpw6dpbiB0YW7EsW1sYW1hIHlhcMSxbG1hZMSxISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSAiJXMiIHZlcml0YWJhbsSxbmRhIGJ1bHVuYW1hZMSxISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kga2ltbGnEn2kgJXMgc2lsaW5lbWVkaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBpw6dpbiBzw7xyw7xtIGJ1bHVuYW1hZMSxISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIHZleWEgQ2xhc3NJRCB2ZXJpbG1lbWnFn3RpciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0VyacWfaW0gaXpuaSB5b2shJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCB2ZXJpbG1lZGnEn2kgacOnaW4gZ2XDp21pxZ8gZ8O2c3RlcmlsZW1peW9yISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0dlw6dtacWfIGfDtnN0ZXJpbGVtaXlvciwgZXJpxZ9pbSBoYWtrxLEgdmVyaWxtZW1pxZ8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdZZW5pIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnWWVuaSBzw7xyw7xtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdEYcSfxLF0xLFtIGR1cnVtdSBnw7xuY2VsbGVuZGkgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdPbGF5IGR1cnVtdSBnw7xuY2VsbGVuZGkgKHllbmk9JXMsIGVza2k9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIHNpbGluZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdzICh0eXBlPSVzKSBiYcSfbGFudMSxc8SxIGVrbGVuZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ3MgKHR5cGU9JXMpIGJhxJ9sYW50xLFzxLEgc2lsaW5kaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQ29uZmlnSXRlbSB0YW7EsW3EsSBnw7xuY2VsbGVuZGkgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0FkIGfDvG5jZWxsZW5kaSAoeWVuaT0lcywgZXNraT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICfDlnpuaXRlbGlrICVzICIlcyAiZGVuICIlcyAieWUgZ8O8bmNlbGxlbmRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1PDvHLDvG0gJXMgc2lsaW5kaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUQgdmV5YSBWZXJzaW9uSUQgdmVyaWxtZWRpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIGfDtnN0ZXJpbGVtaXlvciwgZXJpxZ9pbSBoYWtrxLEgdmVyaWxtZW1pxZ8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIHZlcml0YWJhbsSxbmRhIGJ1bHVuYW1hZMSxISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnc1wnZGUgJXMgdGFyYWbEsW5kYW4geWF6ZMSxcsSxbGTEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJhbnMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdHZcOnZXJzaXogQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDbGFzc0lEIHZlcmlsbWVtacWfdGlyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ0J1IHPEsW7EsWYgacOnaW4gZXJpxZ9pbSBoYWtrxLEgdmVyaWxtZW1pxZ90aXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdTb251w6cgeW9rISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0tvbmZpZ8O8cmFzeW9uIMOWxJ9lc2kgQXJhbWEgU29udcOnbGFyxLEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ8OWxJ9lIGfDtnN0ZXJpbGVtaXlvciwgQ29uZmlnSXRlbSBpw6dpbiBlcmnFn2ltIGhha2vEsSB2ZXJpbG1lbWnFnyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBidWx1bmFtYWTEsSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnSGnDp2JpciB2ZXJzaXlvbiBidWx1bmFtYWTEsSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXN5b25lbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAndXlhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnb2xheSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnQnUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pbiBkYcSfxLF0xLFtIGR1cnVtdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0J1IHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaW4gb2xheSBkdXJ1bXUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfEsHppbiB5b2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdHJlIGdlw6dlcnNpeiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ0FyYW1hIHBhcmFtZXRyZWxlcmkgZ2XDp2Vyc2l6ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ0fDtnN0ZXJpbGVuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdEYcSfxLF0xLFtIER1cnVtdSBUw7xyw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnTWV2Y3V0IE9sYXkgRHVydW0gVMO8csO8JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0FyYXPEsW5kYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBpw6dpbiBzxLFuxLFmIGvEsXPEsXRsYW1hbGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1Nlw6dpbGViaWxpciB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBrxLFzxLF0bGFtYWsgacOnaW4gYmlyIHZleWEgZGFoYSBmYXpsYSBzxLFuxLFmIHNlw6dpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBpw6dpbiBzxLFuxLFmIGvEsXPEsXRsYW1hbGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZcOnaWxlYmlsaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmkga8Sxc8SxdGxhbWFrIGnDp2luIGJpciB2ZXlhIGRhaGEgZmF6bGEgc8SxbsSxZiBzZcOnaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWlrIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGljIChWZXJzaXlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnQmHEn2xhbnTEsSBSZWZlcmFuc2xhbWEgVMO8csO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ0J1IGJhxJ9sYW50xLFuxLFuIENvbmZpZ0l0ZW0gacOnaW4gbWkgeW9rc2EgYmHFn3Z1cmFuIG5lc25lbmluIHN0YXRpayBzw7xyw7xtw7wgacOnaW4gbWkgZ2XDp2VybGkgb2xkdcSfdS4gR2XDp2VybGkgT2xheSBEdXJ1bXUgaGVzYXBsYW1hc8SxIHlhbG7EsXpjYSBkaW5hbWlrIGJhxJ9sYW50xLFsYXJkYSBnZXLDp2VrbGXFn3RpcmlsaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmluIGFyYW5hY2HEn8SxIMO2em5pdGVsacSfaSBzZcOnaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdUZW1lbCB5YXDEsSBnZcOnZXJsaSBkZcSfaWwuIEzDvHRmZW4gWUFNTCBiacOnaW1pbmRlIHZlcmkgacOnZXJlbiBiaXIga2FybWEgZ2lyaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnWUFNTCBkaXplc2luaW4gXCctLS1cJyBpbGUgYmHFn2xhbWFzxLEgZ2VyZWtsaWRpci4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnY29uZmlnaXRlbV9saW5rIHRhYmxvc3UgdGVtaXpsZW5lbWVkaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ8SwbGdpbGkgZGluYW1payBhbGFuIGJ1bHVuYW1hZMSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnY29uZmlnaXRlbV9saW5rIHRhYmxvc3VuYSBla2xlbmVtZWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdjb25maWdpdGVtX2xpbmsgdGFibG9zdW5hIDAgc2F0xLFyIGVrbGVuZGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWFrc2ltdW0gYmlyIGVsZW1hbiBzYXnEsXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICdFa2xlcmkgacOnZS9kxLHFn2EgYWt0YXJtYSAoc2F0xLFyIGJhxZ/EsW5hIHNvbiBnaXJpxZ9sZXIgb2xhcmFrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1PDvHLDvG0gRGl6ZXNpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ1RhbsSxbWxhciBzZW5rcm9uaXplIGVkaWxpcmtlbiBoYXRhIG9sdcWfdHUuIEzDvHRmZW4gZ8O8bmzDvMSfw7wga29udHJvbCBlZGluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1Nlbmtyb25pemUgZWRpbG1lbWnFnyBJVFNNQ29uZmlnSXRlbSB0YW7EsW1sYXLEsW7EsXogdmFyLiBMw7x0ZmVuIElUU01Db25maWdJdGVtIGRpbmFtaWsgYWxhbiBkZcSfacWfaWtsaWtsZXJpbml6aSBkYcSfxLF0xLFuLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnU8O8cmVzaSBkb2xkdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0Jha8SxbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFubGFubcSxxZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnT25hcsSxbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnRW1la2xpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ8SwbmNlbGVtZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnR2VuZWwgQmFrxLHFnyB2ZSBPbmF5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ1PEsW7EsWZsYXLEsS9yb2xsZXJpIHZlIGlsZ2lsaSBhbGFubGFyxLEgacOnZSBha3Rhcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnU8SxbsSxZiBpw6dlIGFrdGFyxLFtxLEgc8SxcmFzxLFuZGEgYmlyIGhhdGEgb2x1xZ90dS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIEdpemxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBHw7ZzdGVyaWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnQXJhY8SxIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYXPEsW5kYSBnZW5pxZ9sZXRpbG1pxZ8gYXJhbWEga2/Fn3VsbGFyxLFuYSBpemluIHZlcmlyLiBCdSDDtnplbGxpayBzYXllc2luZGUsIMO2cm5lxJ9pbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFkxLFuxLEgIigqa2V5MSomKmtleTIqKSIgdmV5YSAiKCprZXkxKnwqa2V5MiopIiBnaWJpIGJ1IHTDvHIga2/Fn3VsbGFybGEgYXJheWFiaWxpcnNpbml6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdNw7zFn3RlcmkgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hc8SxbmRhIGdlbmnFn2xldGlsbWnFnyBhcmFtYSBrb8WfdWxsYXLEsW5hIGl6aW4gdmVyaXIuIEJ1IMO2emVsbGlrIHNheWVzaW5kZSwgw7ZybmXEn2luIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYWTEsW7EsSAiKCphbmFodGFyMSomKmFuYWh0YXIyKikiIHZleWEgIigqYW5haHRhcjEqfCphbmFodGFyMiopIiBnaWJpIGJ1IHTDvHIga2/Fn3VsbGFybGEgYXJheWFiaWxpcnNpbml6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdBdGFubcSxxZ8gQ0lcJ2xhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnTcO8xZ90ZXJpIMWfaXJrZXRlIGF0YW5hbiBDSVwnbGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnTcO8xZ90ZXJpIGt1bGxhbsSxY8SxeWEgYXRhbmFuIENJXCdsYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIgQXlhcmxhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdZYWxuxLF6Y2EgYXluxLEgQ29uZmlnSXRlbSBzxLFuxLFmxLEgKFwnY2xhc3NcJykgacOnaW5kZSB2ZXlhIGdlbmVsIG9sYXJhayAoXCdnbG9iYWxcJykgYmVuemVyc2l6IGJpciBhZCBvbHVwIG9sbWFkxLHEn8SxbsSxIGtvbnRyb2wgZWRpbjsgYnUsIHlpbmVsZW5lbmxlcmkgYXJhcmtlbiBtZXZjdXQgaGVyIENvbmZpZ0l0ZW1cJ8SxbiBkaWtrYXRlIGFsxLFuZMSxxJ/EsSBhbmxhbcSxbmEgZ2VsaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdCaXIgYWRsYW5kxLFybWEgxZ9lbWFzxLEgdXlndWxhbWFrIGnDp2luIGJpciBtb2TDvGwgc2XDp2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnQmlyIHNhecSxIMWfZW1hc8SxbsSxIHV5Z3VsYW1hayBpw6dpbiBiaXIgbW9kw7xsIHNlw6dpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnU8O8csO8bSBkaXplc2kgxZ9lbWFzxLFuxLEgdXlndWxhbWFrIGnDp2luIGJpciBtb2TDvGwgc2XDp2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1llbmkgYmlyIHPDvHLDvG3DvG4gb2x1xZ90dXJ1bG1hc8SxbsSxIHRldGlrbGVtZWsgacOnaW4gw7Z6bml0ZWxpa2xlcmkgc2XDp2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdCdSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsW7EsWbEsW5hIGF0YW5hY2FrIGthdGVnb3JpbGVyaSBzZcOnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0NvbmZpZ0l0ZW0gT3ZlcnZpZXcgacOnaW4gc8O8dHVuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZmlsdHJlbGVyaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaW5lIGdlbmVsIGJha8SxxZ/EsW5kYSBmaWx0cmVsZW5lYmlsZW4gc8O8dHVubGFyLiBOb3Q6IFlhbG7EsXpjYSBZYXDEsWxhbmTEsXJtYSDDlsSfZXNpIMO2em5pdGVsaWtsZXJpbmUgdmUgRGluYW1payBBbGFubGFyYSAoRHluYW1pY0ZpZWxkX05hbWVYKSBpemluIHZlcmlsaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ1lhcMSxbGFuZMSxcm1hIMOWxJ9lbGVyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBla2xlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZMO8emVubGVtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgZ2XDp21pxZ9lIGfDvG5sw7zEn2Uga2F5ZGV0bWV5aSBzYcSfbGF5YW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBvbGF5IG1vZMO8bMO8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdZYXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBnZcOnZXJsaSB0YW7EsW1sYXLEsW5hIGfDtnJlIGfDvG5jZWxsZXllbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIG9sYXkgbW9kw7xsw7wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBnZcOnbWnFn2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgeWF6ZMSxcm1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgeWFrxLFubGHFn3TEsXJtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdDb25maWdJdGVtIEHEn2HDpyBHw7Zyw7xuw7xtw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBTw7xyw7xtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0HFn2HEn8SxZGFraSBzxLFuxLFmbGFyxLFuIENvbmZpZ0l0ZW1zIMO2xJ9lbGVyaSBFbGFzdGljc2VhcmNoIHN1bnVjdXN1bmRhIHNha2xhbm1heWFjYWt0xLFyLiBCdW51IG1ldmN1dCBDSVwnbGFyYSB1eWd1bGFtYWsgacOnaW4sIGJ1IHNlw6dlbmVrIGRlxJ9pxZ90aXJpbGRpa3RlbiBzb25yYSBDSSBnZcOnacWfaW5pbiBrb25zb2wgw7x6ZXJpbmRlbiDDp2FsxLHFn3TEsXLEsWxtYXPEsSBnZXJla2lyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdBxZ9hxJ/EsWRha2kgZGHEn8SxdMSxbSBkdXJ1bWxhcsSxbmEgc2FoaXAgQ29uZmlnSXRlbXMsIEVsYXN0aWNzZWFyY2ggc3VudWN1c3VuZGEgZGVwb2xhbm1heWFjYWt0xLFyLiBCdW51IG1ldmN1dCBDSVwnbGFyYSB1eWd1bGFtYWsgacOnaW4sIGJ1IHNlw6dlbmVrIGRlxJ9pxZ90aXJpbGRpa3RlbiBzb25yYSBDSSBnZcOnacWfaW5pbiBrb25zb2wgw7x6ZXJpbmRlbiDDp2FsxLHFn3TEsXLEsWxtYXPEsSBnZXJla2lyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdZYXDEsWxhbmTEsXJtYSDDlsSfZXNpIFPEsW7EsXLEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlnw7xyYXN5b24gU2F5ZmEgYmHFn8SxbmEgw7bEn2Ugc8SxbsSxcsSxLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnS29uZmlnw7xyYXN5b24gWcO2bmV0aW1pIFZlcml0YWJhbsSxLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSB0b3BsdSBtb2TDvGzDvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXJhY8SxIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBhcmthIHXDpyB5w7ZubGVuZGlyaWNpc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ1lhcMSxbGFuZMSxcm1hIMOWxJ9lbGVyaSBpw6dpbiB0YW7EsW1sYXIgb2x1xZ90dXJ1biB2ZSB5w7ZuZXRpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdCZWxpcmxpIHphbWFuIG5va3RhbGFyxLFuZGEgQ29uZmlnSXRlbXMgacOnaW4gQmlsZXRsZXIgb2x1xZ90dXJ1ci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnTcO8xZ90ZXJpbGVyIGdlw6dtacWfIENJIHPDvHLDvG1sZXJpbmkgZ8O2cmViaWxpcmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnTcO8xZ90ZXJpbGVyLCBnZcOnbWnFnyBDSSBzw7xyw7xtbGVyaSBhcmFzxLFuZGEgbWFudWVsIG9sYXJhayBnZcOnacWfIHlhcG1hIG9sYW5hxJ/EsW5hIHNhaGlwdGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgZWtyYW7EsSBpw6dpbiDDtnpuaXRlbGlrdGUga3VsbGFuxLFsYWNhayB2YXJzYXnEsWxhbiB2ZXJpbGVyLiDDlnJuZWs6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBla3JhbsSxIGnDp2luIMO2em5pdGVsaWt0ZSBrdWxsYW7EsWxhY2FrIHZhcnNhecSxbGFuIHZlcmlsZXIuIMOWcm5lazogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0JhxJ9sYW50xLFsxLEgbmVzbmVsZXIgd2lkZ2V0XCfEsW5kYSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpIGJpciBheWFyIGTDvMSfbWVzaW5pbiBtZXZjdXQgb2xkdcSfdSBFeWxlbWxlcmkgdGFuxLFtbGF5xLFuLiBMw7x0ZmVuIGJ1IEV5bGVtbGVyaW4gYcWfYcSfxLFkYWtpIEpTIHZlIENTUyBkb3N5YWxhcsSxbsSxIGtheWRldG1pxZ8gb2xtYXPEsSBnZXJla3RpxJ9pbmkgdW51dG1hecSxbjogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgdmUgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnU8O8csO8bSBkaXplbGVyaSBpw6dpbiBiaXIgVGVtcGxhdGU6OlRvb2xraXQgxZ9lbWFzxLEgdGFuxLFtbGF5xLFuLiBZYWxuxLF6Y2EgU8O8csO8bSBEaXplc2kgTW9kw7xsw7wgVGVtcGxhdGVUb29sa2l0IG9sYXJhayBheWFybGFubcSxxZ9zYSBrdWxsYW7EsWzEsXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnQmlyIG3DvMWfdGVyaW5pbiBiaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pIGfDtnJtZXNpbmUgaXppbiB2ZXJpbGVuIGJpciBkaXppIGtvxZ91bCB0YW7EsW1sYXnEsW4uIEtvxZ91bGxhciBpc3RlxJ9lIGJhxJ9sxLEgb2xhcmFrIGJlbGlybGkgbcO8xZ90ZXJpIGdydXBsYXLEsXlsYSBzxLFuxLFybGFuZMSxcsSxbGFiaWxpci4gQWQgdGVrIHpvcnVubHUgbml0ZWxpa3Rpci4gQmHFn2thIGJpciBzZcOnZW5layBiZWxpcnRpbG1lenNlLCB0w7xtIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaSBidSBrYXRlZ29yaSBhbHTEsW5kYSBnw7Zyw7xuw7xyIG9sYWNha3TEsXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdHZW5lbCBBcmF5w7x6w7wga3VsbGFuYXJhayBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pIHNpbG1layBpw6dpbiBHZXJla2xpIGl6aW5sZXJpIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0dlbmVsIEFyYXnDvHrDvCBrdWxsYW5hcmFrIElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmkgYWxtYWsgacOnaW4gR2VyZWtsaSBpemlubGVyaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdHZW5lbCBBcmF5w7x6w7wga3VsbGFuYXJhayBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pIGFyYW1hayBpw6dpbiBHZXJla2xpIGl6aW5sZXJpIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0dlbmVsIEFyYXnDvHrDvCBrdWxsYW5hcmFrIElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmkgYXlhcmxhbWFrIGnDp2luIEdlcmVrbGkgaXppbmxlcmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdCaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBsaXN0ZXNpbmluIGvDvMOnw7xrIGfDtnLDvG7DvG3DvG7DvCBnw7ZzdGVybWVrIGnDp2luIGJpciBnZW5lbCBiYWvEscWfIG1vZMO8bMO8IHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnQmHEn2xhbnTEsSB0w7xyw7wgZXRpa2V0bGVyaW5pbiBkw7zEn8O8bSBiYcSfbGFudMSxbGFyxLFuZGEgZ8O2c3RlcmlsaXAgZ8O2c3RlcmlsbWV5ZWNlxJ9pbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnQ29uZmlnSXRlbSBhZMSxbsSxIGRlbmV0bGVtZWsgdmUgaWxnaWxpIGhhdGEgaWxldGlsZXJpbmkgZ8O2c3Rlcm1layBpw6dpbiBoZXIgQ29uZmlnSXRlbSBzxLFuxLFmxLEgacOnaW4gYXlyxLEgYXlyxLEgZMO8emVubGkgaWZhZGVsZXIgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0NJIHPEsW7EsWbEsW5hIGJhxJ9sxLEgb2xhcmFrIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZ2VuZWwgZ8O2csO8bsO8bcO8bmRla2kga3VsbGFuxLFsYWJpbGlyIENJIHPDvHR1bmxhcsSxbsSxIHRhbsSxbWxhci4gSGVyIGdpcmnFnyBiaXIgc8SxbsSxZiBhZMSxIHZlIGlsZ2lsaSBzxLFuxLFmIGnDp2luIGt1bGxhbsSxbGFiaWxpciBhbGFubGFyZGFuIG9sdcWfYW4gYmlyIGRpemlkZW4gb2x1xZ9tYWzEsWTEsXIuIERpbmFtaWsgYWxhbiBnaXJpxZ9sZXJpIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUgxZ9lbWFzxLFuYSB1eW1hayB6b3J1bmRhZMSxci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FyYWPEsSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgc29udWN1bnVuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxcmFsYW1hc8SxIGnDp2luIHZhcnNhecSxbGFuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgw7Z6bml0ZWxpxJ9pbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcO8xZ90ZXJpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBzb251Y3VudW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzxLFyYWxhbWFzxLEgacOnaW4gdmFyc2F5xLFsYW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSDDtnpuaXRlbGnEn2luaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnQnUgacWfbGVtaW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBzb251Y3VudW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzxLFyYWxhbWFzxLEgacOnaW4gdmFyc2F5xLFsYW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSDDtnpuaXRlbGnEn2luaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdBcmFjxLEgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIHNvbnVjdW5kYWtpIHZhcnNhecSxbGFuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxcmFzxLFuxLEgdGFuxLFtbGFyLiBZdWthcsSxOiBlbiBlc2tpIGVuIMO8c3R0ZS4gQcWfYcSfxLE6IGVuIHNvbiDDvHN0dGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNw7zFn3RlcmkgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIHNvbnVjdW5kYWtpIHZhcnNhecSxbGFuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxcmFzxLFuxLEgdGFuxLFtbGFyLiBZdWthcsSxOiBlbiBlc2tpIGVuIMO8c3R0ZS4gQcWfYcSfxLE6IGVuIHNvbiDDvHN0dGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0J1IGnFn2xlbWluIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgc29udWN1bmRha2kgdmFyc2F5xLFsYW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzxLFyYXPEsW7EsSB0YW7EsW1sYXIuIFl1a2FyxLE6IGVuIGVza2kgZW4gw7xzdHRlLiBBxZ9hxJ/EsTogZW4gc29uIMO8c3R0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0NJIHPEsW7EsWbEsW5hIGJhxJ9sxLEgb2xhcmFrIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZ2VuZWwgZ8O2csO8bsO8bcO8bmRlIENJXCdsYXLEsW4gdmFyc2F5xLFsYW4gZ8O2csO8bnTDvGxlbmVuIHPDvHR1bmxhcsSxbsSxIHRhbsSxbWxhci4gSGVyIGdpcmnFnyBiaXIgc8SxbsSxZiBhZMSxIHZlIGlsZ2lsaSBzxLFuxLFmIGnDp2luIGt1bGxhbsSxbGFiaWxpciBhbGFubGFyxLFuIGJpciBkaXppc2luZGVuIG9sdcWfbWFsxLFkxLFyLiBEaW5hbWlrIGFsYW4gZ2lyacWfbGVyaSBEeW5hbWljRmllbGRfRmllbGROYW1lIMWfZW1hc8SxbmEgdXltYWsgem9ydW5kYWTEsXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0fDtnN0ZXJpbGVjZWsgdmFyc2F5xLFsYW4gaWxpxZ9raSBkZXJpbmxpxJ9pbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIGVrcmFuxLEgacOnaW4gdmFyc2F5xLFsYW4gZ8O2c3RlcmlsZW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSDDtnpuaXRlbGnEn2luaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIGVrcmFuxLEgacOnaW4gdmFyc2F5xLFsYW4gZ8O2c3RlcmlsZW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBuaXRlbGnEn2luaSB0YW7EsW1sYXIuIMOWcm5lazogIkFuYWh0YXIiIERpbmFtaWsgQWxhbsSxbiBhZMSxbsSxIGnDp2VybWVsaWRpciwgYnUgZHVydW1kYSBcJ1hcJywgIsSww6dlcmlrIiBEaW5hbWlrIEFsYW4gdMO8csO8bmUgYmHEn2zEsSBvbGFyYWsgRGluYW1payBBbGFuxLFuIGRlxJ9lcmluaSBpw6dlcm1lbGlkaXIsIE1ldGluOiBcJ2JpciBtZXRpblwnLCBBw6fEsWzEsXIgbWVuw7w6IFwnMVwnLCBUYXJpaC9TYWF0OiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgdmUgdmV5YSBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdcJ0lUU01Db25maWdJdGVtXCcgc8SxbsSxZsSxbsSxbiB2YXJzYXnEsWxhbiBhbHQgbmVzbmVzaW5pIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0NJIHPEsW7EsWbEsW5hIGJhxJ9sxLEgb2xhcmFrIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZ2VuZWwgZ8O2csO8bsO8bcO8bmRla2kga3VsbGFuxLFsYWJpbGlyIENJIHPDvHR1bmxhcsSxbsSxIHRhbsSxbWxhci4gSGVyIGdpcmnFnyBiaXIgc8SxbsSxZiBhZMSxIHZlIGlsZ2lsaSBzxLFuxLFmIGnDp2luIGt1bGxhbsSxbGFiaWxpciBhbGFubGFyZGFuIG9sdcWfYW4gYmlyIGRpemlkZW4gb2x1xZ9tYWzEsWTEsXIuIERpbmFtaWsgYWxhbiBnaXJpxZ9sZXJpIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUgxZ9lbWFzxLFuYSB1eW1hayB6b3J1bmRhZMSxci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnQnUgZWtyYW4gacOnaW4gemVuZ2luIG1ldGluIGTDvHplbmxleWljaSBiaWxlxZ9lbmluaW4gecO8a3Nla2xpxJ9pbmkgdGFuxLFtbGFyLiBTYXnEsSAocGlrc2VsKSB2ZXlhIHnDvHpkZSBkZcSfZXJpIChnw7ZyZWxpKSBnaXJpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnWcO2bmV0aWNpIGFyYXnDvHrDvG5kZWtpIENJIHRhbsSxbcSxIGTDvHplbmxleWljaXNpIGnDp2luIHNhdMSxciBzYXnEsXPEsW7EsSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ09sYXkgZHVydW1sYXLEsW7EsW4gecO8a3NlayAow7Zybi4ga3Jpa2l0YWwpIGlsZSBkw7zFn8O8ayAow7Zybi4gZm9ua3NpeW9uZWwpIGFyYXPEsW5kYWtpIHPEsXJhc8SxbsSxIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdCYcSfbGFudMSxbMSxIGRlc3RlayB0YWxlcGxlcmluaW4gYmlyIENJXCduxLFuIGR1cnVtdW51IGV0a2lsZXllYmlsZWNlxJ9pIGlsZ2lsaSBkYcSfxLF0xLFtIGR1cnVtbGFyxLFuxLEgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0FnZW50SVRTTUNvbmZpZ0l0ZW0gZWtyYW7EsSBpw6dpbiBhcmFtYSBzxLFuxLFyxLFuxLEgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggZWtyYW7EsSBpw6dpbiBhcmFtYSBzxLFuxLFyxLFuxLEgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gZWtyYW7EsSBpw6dpbiBhcmFtYSBzxLFuxLFyxLFuxLEgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggZWtyYW7EsSBpw6dpbiBhcmFtYSBzxLFuxLFyxLFuxLEgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ1TDvG0gQ0kgc8SxbsSxZmxhcsSxIGnDp2luIGJhxJ9sYW50xLEgdGFibG9zdSBrYXJtYcWfxLFrIGfDtnLDvG7DvG3DvG5kZSBDSVwnbGFyxLFuIGfDtnN0ZXJpbGVuIHPDvHR1bmxhcsSxbsSxIHRhbsSxbWxhci4gSGVyaGFuZ2kgYmlyIGdpcmnFnyB5b2tzYSwgdmFyc2F5xLFsYW4gc8O8dHVubGFyIGfDtnN0ZXJpbGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnQ0kgc8SxbsSxZsSxbmEgYmHEn2zEsSBvbGFyYWsgYmHEn2xhbnTEsSB0YWJsb3N1IGthcm1hxZ/EsWsgZ8O2csO8bsO8bcO8bmRlIENJXCdsYXLEsW4gZ8O2c3RlcmlsZW4gc8O8dHVubGFyxLFuxLEgdGFuxLFtbGFyLiBIZXIgZ2lyacWfaW4gw7Zuw7xuZSBzxLFuxLFmIGFkxLEgdmUgw6dpZnQgaWtpIG5va3RhIMO8c3Qgw7xzdGUga29udWxtYWzEsWTEsXIgKMO2cm5lxJ9pbiBCaWxnaXNheWFyOjopLiBUw7xtIENJXCdsYXJkYSBvcnRhayBvbGFuIGJpcmthw6cgQ0ktw5Z6bml0ZWxpxJ9pIHZhcmTEsXIgKEJpbGdpc2F5YXIgc8SxbsSxZsSxIGnDp2luIMO2cm5lazogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gQ0ktVGFuxLFtxLFuZGEgdGFuxLFtbGFuZMSxxJ/EsSBnaWJpIGJpcmV5c2VsIENJLcOWem5pdGVsaWtsZXJpbmkgZ8O2c3Rlcm1layBpw6dpbiBhxZ9hxJ/EsWRha2kgxZ9lbWEga3VsbGFuxLFsbWFsxLFkxLFyIChCaWxnaXNheWFyIHPEsW7EsWbEsSBpw6dpbiDDtnJuZWspOiBCaWxnaXNheWFyOjpIYXJkRGlzazo6MSwgQmlsZ2lzYXlhcjo6SGFyZERpc2s6OjE6OkthcGFzaXRlOjoxLCBCaWxnaXNheWFyOjpIYXJkRGlzazo6MiwgQmlsZ2lzYXlhcjo6SGFyZERpc2s6OjI6OkthcGFzaXRlOjoxLiBCaXIgQ0kgc8SxbsSxZsSxIGnDp2luIGdpcmnFnyB5b2tzYSwgdmFyc2F5xLFsYW4gc8O8dHVubGFyIGfDtnN0ZXJpbGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00gQ29uZmlnIEl0ZW0gQUNMIHlhcMSxc8SxbsSxbiDDvMOnw7xuY8O8IHNldml5ZXNpbmRlIGhhbmdpIMO2xJ9lbGVyaW4gXCdFeWxlbVwnIGnDp2luIGt1bGxhbsSxbGFiaWxpciBvbGR1xJ91bnUgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00gQ29uZmlnIEl0ZW0gQUNMIHlhcMSxc8SxbsSxbiBiaXJpbmNpIHNldml5ZXNpbmRlIGhhbmdpIMO2xJ9lbGVyaW4gbWV2Y3V0IG9sZHXEn3VudSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00gQ29uZmlnIEl0ZW0gQUNMIHlhcMSxc8SxbsSxbiBpa2luY2kgc2V2aXllc2luZGUgaGFuZ2kgw7bEn2VsZXJpbiBtZXZjdXQgb2xkdcSfdW51IHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnSGFuZ2kgYmHEn2xhbnTEsSB0w7xyw7xuw7xuIChiaWxldCBwZXJzcGVrdGlmaW5kZW4gYWRsYW5kxLFyxLFsYW4pIGJhxJ9sYW50xLFsxLEgYmlyIENJXCduxLFuIGR1cnVtdW51IGV0a2lsZXllYmlsZWNlxJ9pbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0JhxJ9sxLEgYmlyIENJXCduxLFuIGR1cnVtdW51IGhhbmdpIHTDvHIgYmlsZXRsZXJpbiBldGtpbGV5ZWJpbGVjZcSfaW5pIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdUYW7EsW0gR8O8bmNlbGxlbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VzaW5pIFNpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0RhxJ/EsXTEsW0gRHVydW11IFJlbmdpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdZaW5lbGVuZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEaW5hbWlrIGFsYW4gb2xheSBtb2TDvGzDvCwgZGluYW1payBhbGFubGFyxLFuIGRlxJ9pxZ9tZXNpIGR1cnVtdW5kYSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHRhbsSxbWxhcsSxbsSxIHNlbmtyb25pemFzeW9uIGTEscWfxLEgb2xhcmFrIGnFn2FyZXRsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIGVrIElUU00gYWxhbsSxIGVrcmFuxLFuZGEgZ8O2c3RlcmlsZW4gZGluYW1payBhbGFubGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7zFn3RlcmkgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmUgZ2VuZWwgYmFrxLHFnyBla3JhbsSxbmRhIGfDtnN0ZXJpbGVuIGRpbmFtaWsgYWxhbmxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBla3JhbsSxbmRhIGfDtnN0ZXJpbGVuIGRpbmFtaWsgYWxhbmxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnVGVtc2lsY2kgw7ZuIHVjdW51biBheW7EsSBhbmRhIGJpcmRlbiBmYXpsYSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIMO8emVyaW5kZSDDp2FsxLHFn21hc8SxIGnDp2luIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgdG9wbHUgZXlsZW0gw7Z6ZWxsacSfaW5pIGV0a2lubGXFn3RpcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSB0b3BsdSBleWxlbSDDtnplbGxpxJ9pbmkgeWFsbsSxemNhIGxpc3RlbGVuZW4gZ3J1cGxhciBpw6dpbiBldGtpbmxlxZ90aXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBiZW56ZXJzaXogYWRsYXIgacOnaW4ga29udHJvbCBldG1lIGnFn2xldmluaSBldGtpbmxlxZ90aXJpci9kZXZyZSBkxLHFn8SxIGLEsXJha8Sxci4gQnUgc2XDp2VuZcSfaSBldGtpbmxlxZ90aXJtZWRlbiDDtm5jZSBzaXN0ZW1pbml6ZGUgeWluZWxlbmVuIGFkbGFyYSBzYWhpcCB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmkgb2x1cCBvbG1hZMSxxJ/EsW7EsSBrb250cm9sIGV0bWVsaXNpbml6LiBCdW51IEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcyBrb25zb2wga29tdXR1IGlsZSB5YXBhYmlsaXJzaW5pei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnQmlsZXQtY29uZmlnaXRlbS1saW5rIMO8emVyaW5kZSBjb25maWdpdGVtLXN0YXR1cyBheWFybGFtYWsgacOnaW4gb2xheSBtb2TDvGzDvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnVGFtIG1ldGluIGFyYW1hIGnDp2luIGt1bGxhbsSxbGFuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZGl6aW5pIGFsYW5sYXLEsS4gQWxhbmxhciBkYSBzYWtsYW7EsXIsIGFuY2FrIGdlbmVsIGnFn2xldnNlbGxpayBpw6dpbiB6b3J1bmx1IGRlxJ9pbGRpci4gRWtsZXJpbiBkYWhpbCBlZGlsbWVzaSwgZ2lyacWfaSAwIG9sYXJhayBheWFybGF5YXJhayB2ZXlhIHNpbGVyZWsgZGV2cmUgZMSxxZ/EsSBixLFyYWvEsWxhYmlsaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIGRpemluaW5kZSBkZXBvbGFuYW4gdmUgdGFtIG1ldGluIGFyYW1hbGFyxLFuxLFuIHlhbsSxIHPEsXJhIGJhxZ9rYSDFn2V5bGVyIGnDp2luIGRlIGt1bGxhbsSxbGFuIGFsYW5sYXIuIFRhbSBpxZ9sZXZzZWxsaWsgacOnaW4gdMO8bSBhbGFubGFyIHpvcnVubHVkdXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnSGVyIHdlYiBoaXptZXRpIChhbmFodGFyKSBpw6dpbiwgacOnZSBha3Rhcm1hbsSxbiBrxLFzxLF0bGFuZMSxxJ/EsSBiaXIgZGl6aSBzxLFuxLFmIChkZcSfZXIpIHRhbsSxbWxhbmFiaWxpci4gU2XDp2lsZW4gdMO8bSBzxLFuxLFmbGFyIHZleWEgbWV2Y3V0IHTDvG0gc8SxbsSxZmxhciBpw6dpbiB0YW7EsW1sYXnEsWPEsSBuaXRlbGlrbGVyaW4gaW52b2tlciB5YXDEsWxhbmTEsXJtYXPEsW5kYSBzZcOnaWxtZXNpIGdlcmVrZWNla3Rpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIMOnYcSfxLFyxLFjxLEga2F0bWFuxLEgacOnaW4gR2VuZXJpY0ludGVyZmFjZSBtb2TDvGwga2F5ZMSxLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1GZXRjaCDDp2HEn8SxcsSxY8SxIGthdG1hbsSxIGnDp2luIEdlbmVyaWNJbnRlcmZhY2UgbW9kw7xsIGtheWTEsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIMOnYcSfxLFyxLFjxLEga2F0bWFuxLEgacOnaW4gR2VuZXJpY0ludGVyZmFjZSBtb2TDvGwga2F5ZMSxLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luZSBnZW5lbCBiYWvEscWfLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcO8xZ90ZXJpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYXPEsW5kYSBkYcSfxLF0xLFtIGR1cnVtbGFyxLFuxLEgacOnZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DvMWfdGVyaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWFzxLFuYSBvbGF5IGR1cnVtbGFyxLFuxLEgZGFoaWwgZWRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0J1IGnFn2xlbWluIHNvbnVjdW5kYSBnw7Zyw7xudMO8bGVuZWNlayBtYWtzaW11bSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHNhecSxc8SxLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ0JpciBzxLFuxLFmdGFuIHNvcnVtbHUgZ3J1YnUga29udHJvbCBldG1layBpw6dpbiBtb2TDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnQmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luZGVuIHNvcnVtbHUgZ3J1YnUga29udHJvbCBldG1layBpw6dpbiBtb2TDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGlzdGF0aXN0aWtsZXJpIG9sdcWfdHVybWFrIGnDp2luIG1vZMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICfEsHNpbSBNb2TDvGzDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtYXJhIE1vZMO8bMO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FyYWPEsSBhcmF5w7x6w7xuZGUgYmlyIGFyYW1hIHNvbnVjdW51biBoZXIgc2F5ZmFzxLFuZGEgZ8O2csO8bnTDvGxlbmVjZWsgeWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmluIHNhecSxc8SxLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7zFn3RlcmkgYXJhecO8esO8bmRlIGJpciBhcmFtYSBzb251Y3VudW4gaGVyIHNheWZhc8SxbmRhIGfDtnLDvG50w7xsZW5lY2VrIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pbiBzYXnEsXPEsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdBcmFuYWNhayBuZXNuZWxlciwga2HDpyBnaXJpxZ8gdmUgaGFuZ2kgw7Z6bml0ZWxpa2xlcmluIGfDtnN0ZXJpbGVjZcSfaS4gQ29uZmlnSXRlbSDDtnpuaXRlbGlrbGVyaW5pbiBFbGFzdGljc2VhcmNoIGFyYWPEsWzEscSfxLF5bGEgYcOnxLFrw6dhIGRlcG9sYW5tYXPEsSBnZXJla2lyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdHZW5lbCBiYWvEscWfLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB0ZXJjaWhsZXIgZ8O2csO8bsO8bcO8bmRlIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxbsSxZmxhcsSxIGthdGVnb3JpbGVyaSBpw6dpbiBwYXJhbWV0cmVsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS8O8w6fDvGsgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5lIGdlbmVsIGJha8SxxZ/EsW4gc8O8dHVuIGZpbHRyZWxlcmkgacOnaW4gcGFyYW1ldHJlbGVyLiBMw7x0ZmVuIGRpa2thdDogXCdBa3RpZlwnIGRlxJ9lcmluaSAwIG9sYXJhayBheWFybGFtYWssIHRlbXNpbGNpbGVyaW4gYnUgZ3J1YnVuIGF5YXJsYXLEsW7EsSBracWfaXNlbCB0ZXJjaWhsZXJpbmRlIGTDvHplbmxlbWVsZXJpbmkgZW5nZWxsZXIsIGFuY2FrIHnDtm5ldGljaWxlcmluIGJhxZ9rYSBiaXIga3VsbGFuxLFjxLEgYWTEsW5hIGF5YXJsYXLEsSBkw7x6ZW5sZW1lbGVyaW5lIGl6aW4gdmVyaXIuIEJ1IGF5YXJsYXLEsW4ga3VsbGFuxLFjxLEgYXJhecO8esO8bmRlIGhhbmdpIGFsYW5kYSBnw7ZzdGVyaWxlY2XEn2luaSBrb250cm9sIGV0bWVrIGnDp2luIFwnUHJlZmVyZW5jZUdyb3VwXCcga3VsbGFuxLFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGHEn8SxdMSxbSBkdXJ1bWxhcsSxIGnDp2luIHBhcmFtZXRyZWxlciwgbcO8xZ90ZXJpIHRlbXNpbGNpc2kgYXJhecO8esO8bsO8biB0ZXJjaWhsZXIgZ8O2csO8bsO8bcO8bmRlIHJlbmtsZW5kaXJpbGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZWtpIGRhxJ/EsXTEsW0gZHVydW1sYXLEsSBpw6dpbiBwYXJhbWV0cmVsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ0dlbmVsIGthdGFsb2cgw7Z6bml0ZWxpa2xlcmluaW4gw7ZybmVrIGl6aW4gZ3J1cGxhcsSxbsSxbiBwYXJhbWV0cmVsZXJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsW7EsWZsYXLEsSBpw6dpbiBhZCBtb2TDvGzDvCBwYXJhbWV0cmVsZXJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB0ZXJjaWhsZXIgZ8O2csO8bsO8bcO8bmRlIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxbsSxZmxhcsSxIGnDp2luIHNhecSxIG1vZMO8bMO8IHBhcmFtZXRyZWxlcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1NheWZhbGFyIGnDp2luIHBhcmFtZXRyZWxlciAoeWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmluIGfDtnN0ZXJpbGRpxJ9pKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB0ZXJjaWhsZXIgZ8O2csO8bsO8bcO8bmRlIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxbsSxZmxhcsSxIGnDp2luIHPDvHLDvG0gZGl6ZXNpIG1vZMO8bMO8IHBhcmFtZXRyZWxlcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB0ZXJjaWhsZXIgZ8O2csO8bsO8bcO8bmRla2kgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzxLFuxLFmbGFyxLEgacOnaW4gc8O8csO8bSBkaXplc2kgxZ9hYmxvbiBhcmHDpyBzZXRpIG1vZMO8bMO8IHBhcmFtZXRyZWxlcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsW7EsWZsYXLEsSBpw6dpbiBzw7xyw7xtIHRldGlrbGV5aWNpc2kgcGFyYW1ldHJlbGVyaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdZYXDEsWxhbmTEsXLEsWxtxLHFnyBoZXIgV2Vic2VydmljZSBpw6dpbiBoZXIgb2xheSBpw6dpbiAoSW52b2tlciBvbGFyYWspIHlhcMSxbGFuZMSxcsSxbG3EscWfIGV5bGVtaSBnZXLDp2VrbGXFn3RpcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnxLB6aW4gZ3J1YnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bmRlIElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBla2xlbWUgZXlsZW1pbmkga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZWtyYW7EsW7EsSBrdWxsYW5tYWsgacOnaW4gZ2VyZWtsaSBpemlubGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgZWtyYW7EsW7EsSBrdWxsYW5tYWsgacOnaW4gZ2VyZWtsaSBpemlubGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DvMWfdGVyaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGHEn2HDpyBnw7Zyw7xuw7xtw7wgZWtyYW7EsW7EsSBrdWxsYW5tYWsgacOnaW4gZ2VyZWtsaSBpemlubGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHlha8SxbmxhxZ90xLFybWEgZWtyYW7EsW7EsSBrdWxsYW5tYWsgacOnaW4gZ2VyZWtsaSBpemlubGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZWtsZW1lIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bmRlIHRvcGx1IElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBla3JhbsSxbsSxIGt1bGxhbm1hayBpw6dpbiBnZXJla2xpIGl6aW5sZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZMO8emVubGVtZSBla3JhbsSxbsSxIGt1bGxhbm1hayBpw6dpbiBnZXJla2xpIGl6aW5sZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBnZcOnbWnFnyBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZWtyYW7EsW7EsSBrdWxsYW5tYWsgacOnaW4gZ2VyZWtsaSBpemlubGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bmRlIElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaSB5YXpkxLFyIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pIHNpbG1layBpw6dpbiBnZXJla2xpIGF5csSxY2FsxLFrbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pIGFyYXnEsW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdCaXIgQmlsZXQgYmlyIENJXCd5YSBCYcSfbGFuZMSxxJ/EsW5kYSBDSVwnbsSxbiBvbGF5IGR1cnVtdW51IG90b21hdGlrIG9sYXJhayBheWFybGF5xLFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FyYWPEsSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgdG9wbHUgZWtyYW7EsW5kYSBkYcSfxLF0xLFtIGR1cnVtdW51IGF5YXJsYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSB0b3BsdSBla3JhbsSxbmRhIG9sYXkgZHVydW11bnUgYXlhcmxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW7DvGRlLCBhcmFjxLEgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHlha8SxbmxhxZ90xLFybWEgZ8O2csO8bsO8bcO8bmRlIGJpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgYmHFn2thIGJpciBuZXNuZXlsZSBpbGnFn2tpbGVuZGlybWV5aSBzYcSfbGF5YW4gYmlyIGJhxJ9sYW50xLEgZ8O2c3RlcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBnZW5lbCBnw7Zyw7xuw7xtw7xuZGVraSBiaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pbiBnZcOnbWnFn2luZSBlcmnFn21layBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB5YWvEsW5sYcWfdMSxcm1hIGfDtnLDvG7DvG3DvG5kZSBiaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pbiBnZcOnbWnFn2luZSBlcmnFn21layBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlha8SxbmxhxZ90xLFybWEgZ8O2csO8bsO8bcO8bmRlIGJpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgc2lsbWVrIGnDp2luIG1lbsO8ZGUgYmlyIGJhxJ9sYW50xLEgZ8O2c3RlcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBiYcSfbGFudMSxbGFyxLFuxLEgQcSfYcOnIEfDtnLDvG7DvG3DvCBvbGFyYWsgZ8O2csO8bnTDvGxlbWVrIGnDp2luIG1lbsO8ZGUgYmlyIGJhxJ9sYW50xLEgZ8O2c3RlcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBnZW5lbCBnw7Zyw7xuw7xtw7xuZGUgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaSDDp2/En2FsdG1hayBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB5YWvEsW5sYcWfdMSxcm1hIGfDtnLDvG7DvG3DvG5kZSBiaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pIMOnb8SfYWx0bWFrIGnDp2luIG1lbsO8ZGUgYmlyIGJhxJ9sYW50xLEgZ8O2c3RlcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB5YWvEsW5sYcWfdMSxcm1hIGfDtnLDvG7DvG3DvG5kZSBiaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pIGTDvHplbmxlbWVrIGnDp2luIG1lbsO8ZGUgYmlyIGJhxJ9sYW50xLEgZ8O2c3RlcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHlha8SxbmxhxZ90xLFybWEgZ8O2csO8bsO8bcO8bmUgZ2VyaSBkw7ZubWVrIGnDp2luIG1lbsO8ZGUgYmlyIGJhxJ9sYW50xLEgZ8O2c3RlcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFrxLFubGHFn3TEsXJtYSBnw7Zyw7xuw7xtw7xuZGUgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaSB5YXpkxLFybWFrIGnDp2luIG1lbsO8ZGUgYmlyIGJhxJ9sYW50xLEgZ8O2c3RlcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBnZW5lbCBnw7Zyw7xuw7xtw7xuZGUgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaSB5YWvEsW5sYcWfdMSxcm1hayBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGdlw6dtacWfaW5pICh0ZXJzIHPEsXJhbMSxKSBnw7ZzdGVyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0hpw6diaXJpIHNlw6dpbG1lbWnFn3NlIGfDtnN0ZXJpbGVuIHZhcnNhecSxbGFuIGthdGVnb3JpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnQmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaW4gdGFuxLFtbGF5xLFjxLFzxLEsIMO2cm5lxJ9pbiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVmFyc2F5xLFsYW4gQ29uZmlnSXRlbSNcJ2Rpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdDb25maWdJdGVtRmV0Y2ggw6dhxJ/EsXLEsWPEsXPEsW7EsSBvdG9tYXRpayBvbGFyYWsgdGV0aWtsZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdTw7xyw7xtIERpemVzaSDEsGZhZGVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdTw7xyw7xtIERpemVzaSBNb2TDvGzDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdTw7xyw7xtIFRldGlrbGV5aWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdDb25maWdJdGVtQUNMXCduaW4gecO8csO8dMO8bG1lc2luaW4gw7ZuYmVsbGXEn2UgYWzEsW5txLHFnyBhbGFuIGJhxJ/EsW1sxLFsxLFrbGFyxLFuxLEga29udHJvbCBlZGVyZWsgw7ZubGVuaXAgw7ZubGVuZW1leWVjZcSfaS4gQnUsIGZvcm3DvGxlcmxlcmluIHnDvGtsZW1lIHPDvHJlbGVyaW5pIGl5aWxlxZ90aXJlYmlsaXIsIGFuY2FrIEFDTE1vZMO8bGxlcmkgSVRTTUNvbmZpZ0l0ZW0tIHZlIEZvcm0tUmV0dXJuVHlwZXMgacOnaW4ga3VsbGFuxLFsYWNha3NhIGRldnJlIGTEscWfxLEgYsSxcmFrxLFsbWFsxLFkxLFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnQmHFn2zEsWt0YSBoYW5naSBnZW5lbCBiaWxnaWxlciBnw7ZzdGVyaWxpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdzxLFuxLFmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2vDvHJlc2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnw5xSRU1FIFNPTlJBU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ8OcUkVNRSDDlk5DRVPEsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnw7xyZXRrZW4nOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgaW7DpyAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIGluw6cgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBpbsOnICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IGluw6cgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOSBpbsOnIFJhZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEsNzUgaW7DpyAoNCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSBpbsOnICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMSBpbsOnIFJhZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgaW7DpyAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzIGluw6cgUmFmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBpbsOnICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBpbsOnICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBpbsOnICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgaW7DpyAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSBpbsOnICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBpbsOnICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBpbsOnICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBpbsOnICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBpbsOnICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgaW7DpyAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IGluw6cgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBpbsOnICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSBpbsOnICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIGluw6cgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgaW7DpyAoMjAwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIGluw6cgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBpbsOnICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgaW7DpyAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgaW7DpyAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLDUgaW7DpyAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBpbsOnICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IGluw6cgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgaW7DpyAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnTXVoYXNlYmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBZHJlcyBUYWhzaXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdZw7ZuZXRpY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9nIFRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdDaWhheiBUaXBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQWvDvCBLYXBhc2l0ZXNpIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnUGlsIFRpcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCaW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdPdG9iw7xzIEFyYXnDvHrDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSBTxLFuxLFmxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0thcGFzaXRlIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaWsga2FydMSxIGJhxZ/EsW5hIGthcGFzaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnS2FydCBOdW1hcmFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLYXJ0IE9rdXl1Y3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnS2FydCBUaXBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdNw7zFn3RlcmkgU2VydGlmaWthbGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnTcO8xZ90ZXJpIFlhesSxbMSxbcSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ03DvMWfdGVyaSBrYXRlZ29yaXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ1NhYXQgSMSxesSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdTYWF0IEjEsXrEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS29kIMSwbXphbGFtYSBTZXJ0aWZpa2FsYXLEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnS29uZmVyYW5zIFRlbGVmb251JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnRGFuxLHFn21hbmzEsWsgU8O2emxlxZ9tZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICfEsGxldGnFn2ltJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdEaXN0cmliw7x0w7ZybGUgxLBsZXRpxZ9pbWUgR2XDp2luJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnS29udGV5bmVyIFnDtm5ldGltaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ1PDtnpsZcWfbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1PDtnpsZcWfbWUgVMO8csO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnU8O2emxlxZ9tZSBzw7xyZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ1PDtnpsZcWfbWUgc8O8cmVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdLYWJsb3N1eiBUZWxlZm9uIChERUNUIFRlbGVmb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ01hbGl5ZXQgYmlyaW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnUnVoc2F0IHNhecSxc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdPbHXFn3R1cnVsbWEgVGFyaWhpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICfDlnplbCBSYWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgQXlyxLFsbcSxxZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUyBTdW51Y3VzdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRmF0dXJhIFRhcmloaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnU2lwYXJpxZ8gVGFyaWhpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdUZW1pbmF0IFRhcmloaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdZYXnEsW5sYW5tYSB0YXJpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ01hc2HDvHN0w7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0JlbGdlIMSwbXphbGFtYSBTZXJ0aWZpa2FsYXLEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kgUmFmxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtcG9zdGEgU2VydGlmaWthbGFyxLEgKFMvTUlNRSBTZXJ0aWZpa2FsYXLEsSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnxLDFnyBTw7Z6bGXFn21lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdTb24gSVAgQWRyZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRGVzdGXEn2luIHNvbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdTb24gS3VsbGFubWEgVGFyaWhpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdIYXJpY2kgU2FiaXQgU8O8csO8Y8O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnR8O8dmVubGlrIER1dmFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICfDnHLDvG4gWWF6xLFsxLFtxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdWb2xhbiBFbmVyamkgRGVwb2xhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGb3JtIEZha3TDtnLDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbmNoaXNlIFPDtnpsZcWfbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ8OcY3JldHNpeiB5YXrEsWzEsW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnR2VuZWwgQmlsZ2lsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdHcmFmaWsgS2FydGxhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaWsga2FydMSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnRG9uYW7EsW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICdEb25hbsSxbSBNb2RlbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnRG9uYW7EsW0gQcSfxLFybMSxxJ/EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnS3VsYWtsxLFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAgUHJvdG9rb2zDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdLaW1saWsgdmUgRXJpxZ9pbSBZw7ZuZXRpbWkgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0VudmFudGVyIE51bWFyYXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ1lhdMSxcsSxbSBtYWxpeWV0bGVyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0ZhdHVyYSBOdW1hcmFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdLbGF2eWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEIE1vbml0w7ZyIChTxLF2xLEgS3Jpc3RhbCBFa3JhbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCBNb25pdMO2ciAoScWfxLFrIFlheWFuIERpeW90KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdTYWJpdCBUZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0RpesO8c3TDvCBCaWxnaXNheWFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnRW5sZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdLYXRtYW4gMTogRml6aWtzZWwgS2F0bWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0thdG1hbiAyOiBWZXJpIEJhxJ9sYW50xLEgS2F0bWFuxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0thdG1hbiAzOiBBxJ8gS2F0bWFuxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnS2F0bWFuIDM6IEHEnyBLYXRtYW7EsSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0thdG1hbiA0OiBUYcWfxLFtYSBLYXRtYW7EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnS2F0bWFuIDU6IE90dXJ1bSBLYXRtYW7EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdLYXRtYW4gNjogU3VudW0gS2F0bWFuxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdLYXRtYW4gNzogVXlndWxhbWEgS2F0bWFuxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnS2lyYSBTw7Z6bGXFn21lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaXNhbnMgU8O2emxlxZ9tZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaXNhbnMgQW5haHRhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpc2FucyBUw7xyw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0xpc2FucyBzw7xyZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnxZ51IHRhcmloZSBrYWRhciBsaXNhbnMgc8O8cmVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGl0eXVtIERlbWlyIEZvc2ZhdCAoTGlGZVBPNCkgUGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXR5dW0gxLB5b24gKExpLWlvbikgUGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnS3JlZGkgU8O2emxlxZ9tZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICfEsMOnaW5kZSBidWx1bmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0JveWxhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ8OccmV0aWNpIGZpcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYWtzaW11bSBZw7xrIEthcGFzaXRlc2kgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ0hhZsSxemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdCZWxsZWsgVMO8csO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pIFJhZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnQ2VwIFRlbGVmb251IE51bWFyYXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbC9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTW9kZWwgQcOnxLFrbGFtYXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdNb25pdMO2ciDDh8O2esO8bsO8cmzDvMSfw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnTW9uaXTDtnIgQm95dXR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnRmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnxZ5lYmVrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdBxJ8gQmlsZ2lzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnQcSfIEJpbGdpbGVyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnQcSfIEthdG1hbsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlrZWwtS2FkbWl5dW0gKE5pQ2QpIFBpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2VsLU1ldGFsIEhpZHJpdCAoTmlNSCkgUGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0dpemxpbGlrIFPDtnpsZcWfbWVzaSAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdCBEZWZ0ZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQ1BVIHNhecSxc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ1JBTSBtb2TDvGzDvCBzYXnEsXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdHcmFmaWsga2FydMSxIHNhecSxc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIE1vbml0w7ZyIChPcmdhbmlrIEnFn8SxayBZYXlhbiBEaXlvdCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnxLDFn2xldG1lIG1hbGl5ZXRsZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ1NpcGFyacWfIE51bWFyYXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0RpxJ9lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnw4fEsWt0xLFsYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnT3J0YWtsxLFrIFPDtnpsZcWfbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb24gTnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUZWxlZm9uIFRpcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGaXppa3NlbCDDh2VraXJkZWtsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdHw7zDpyBEYcSfxLF0xLFtxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICfFnnVyYWRhbiBzYXTEsW4gYWzEsW5kxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1JhZiBEZXJpbmxpxJ9pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnUmFmIMOcbml0ZWxlcmkgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdPZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0gS2FydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMgU2VydGlmaWthbGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdTYXTEscWfIFPDtnpsZcWfbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdVeWR1IFRlbGVmb251JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1PEsXpkxLFybWF6IEt1csWfdW4tQXNpdCAoU0xBKSBBa8O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VyaSBudW1hcmFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU3VudWN1IFlhesSxbMSxbcSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnSGl6bWV0IFPDtnpsZcWfbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpcyBFdGlrZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1Nva2V0IFRpcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdZYXrEsWzEsW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdLb251xZ9tYWPEsWxhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ0JhxZ9sYW5nxLHDpyBJUCBBZHJlc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ0RlcG9sYW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnRGVwb2xhbWEgQsO2bMO8bcO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnQmHEn2zEsSBPcnRha2zEsWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ8OWemV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnxLBuY2UgxLBzdGVtY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ8SwcGxpa2xlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdUb3BsYW0gR3JhZmlrIGthcnTEsSBSQU1cJ2kgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RvcGxhbSBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnRG9rdW5tYXRpayBFa3JhbiBNb25pdMO2csO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnS3VsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCIEh1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSIEt1bGFrbMSxayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQIFRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYiBrYW1lcmFzxLEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/uk_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnVrX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfQl9Cw0LPQsNC70YzQvdGWINC10LrRgdC/0LvRg9Cw0YLQsNGG0ZbQudC90ZYg0LTQsNC90ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ9Cd0LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDQstGF0ZbQtNC90LjRhSDQtNCw0L3QuNGFINC30LDQv9C40YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ9Cd0LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDQstC40YXRltC00L3QuNGFINC00LDQvdC40YUg0LLRltC00L/QvtCy0ZbQtNGWJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0JrQtdGA0YPQstCw0L3QvdGPINC10LvQtdC80LXQvdGC0LDQvNC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ9CX0LzRltC90LjRgtC4INCy0LjQt9C90LDRh9C10L3QvdGPINC60LvQsNGB0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlIHJvbGUgZGVmaW5pdGlvbid9ID0gJ9CX0LzRltC90LjRgtC4INCy0LjQt9C90LDRh9C10L3QvdGPINGA0L7Qu9GWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAn0J/QsNC60LXRgtC4INC60LvQsNGB0YMgUmVhZHkySW1wb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAn0KLRg9GCINCy0Lgg0LzQvtC20LXRgtC1INGW0LzQv9C+0YDRgtGD0LLQsNGC0Lgg0L/QsNC60YPQvdC60Lgg0LrQu9Cw0YHRltCyIFJlYWR5MkltcG9ydCwg0YnQviDQvNGW0YHRgtGP0YLRjCDQvdCw0LnQv9C+0YjQuNGA0LXQvdGW0YjRliDQtdC70LXQvNC10L3RgtC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4g0JfQstC10YDQvdGW0YLRjCDRg9Cy0LDQs9GDLCDRidC+INC80L7QttC1INC30L3QsNC00L7QsdC40YLQuNGB0Y8g0LTQvtC00LDRgtC60L7QstCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXBkYXRlIGV4aXN0aW5nIGVudGl0aWVzJ30gPSAn0J7QvdC+0LLQu9C10L3QvdGPINGW0YHQvdGD0Y7Rh9C40YUg0YHRg9GC0L3QvtGB0YLQtdC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydCBSZWFkeTJBZG9wdCBjbGFzcyBidW5kbGVzJ30gPSAn0IbQvNC/0L7RgNGCINC/0LDQutC10YLRltCyINC60LvQsNGB0ZbQsiBSZWFkeTJBZG9wdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ9Ca0LvQsNGBINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFJvbGUnfSA9ICfQldC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0KDQvtC70YwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAn0JXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ9Ck0ZbQu9GM0YLRgCDQtNC70Y8g0LrQu9Cw0YHRltCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9CS0LjQsdC10YDRltGC0Ywg0LrQu9Cw0YEg0LfRliDRgdC/0LjRgdC60YMsINGJ0L7QsSDRgdGC0LLQvtGA0LjRgtC4INC90L7QstC40Lkg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ9Ca0LvQsNGBLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KHRgtCw0L0g0YDQvtC30LPQvtGA0YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ9Ch0YLQsNC9INGW0L3RhtC40LTQtdC90YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICfQn9C+0YHQuNC70LDQvdC90Y8g0L3QsCDRltC90YjQuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfQndC10L/RgNCw0LLQuNC70YzQvdC40Lkg0L3QvtC80LXRgCDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAn0J3QvtC80LXRgCDRltC90YjQvtCz0L4g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINC3INGP0LrQuNC8INC/0L7RgtGA0ZbQsdC90L4g0LfQslwn0Y/Qt9Cw0YLQuC4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICfQktC4INC00ZbQudGB0L3QviDRhdC+0YfQtdGC0LUg0LLQuNC00LDQu9C40YLQuCDRhtC10Lkg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQndCw0LfQstCwINGG0YzQvtCz0L4g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9CG0LxcJ9GPINCy0LbQtSDQstC40LrQvtGA0LjRgdGC0L7QstGD0ZTRgtGM0YHRjyDQtdC70LXQvNC10L3RgtCw0LzQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0Lcg0YLQsNC60LjQvNC4INC90L7QvNC10YDQsNC80Lg6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQstC10YDRgdGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Cd0L7QvNC10YAg0LLQtdGA0YHRltGXINGG0YzQvtCz0L4g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXIgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfQndC+0LzQtdGAINCy0LXRgNGB0ZbRlyDQstC20LUg0LLQuNC60L7RgNC40YHRgtC+0LLRg9GU0YLRjNGB0Y8g0LXQu9C10LzQtdC90YLQsNC80Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC3INGC0LDQutC40LzQuCDQvdC+0LzQtdGA0LDQvNC4OiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn0KHRgtCw0L0g0YDQvtC30LPQvtGA0YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ9Ch0YLQsNC9INGW0L3RhtC40LTQtdC90YLRgyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAn0IbRgdGC0L7RgNGW0Y8g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zc6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ9CX0LzRltGB0YIg0ZbRgdGC0L7RgNGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ9Cn0LDRgSDRgdGC0LLQvtGA0LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn0JfQsdGW0LvRjNGI0LXQvdC40Lkg0LLQuNC0JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ9CV0LvQtdC80LXQvdGC0Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC90LAg0YHRgtC+0YDRltC90YbRlic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAn0J3QtSDQt9C90LDQudC00LXQvdC+INC00LDQvdC40YUg0L/RgNC+INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQktC40LHQtdGA0ZbRgtGMINGG0LXQuSDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfQl9Cw0L/Rg9GB0YLQuNGC0Lgg0L/QvtGI0YPQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfQotCw0LrQvtC2INGI0YPQutCw0YLQuCDQsiDQv9C+0L/QtdGA0LXQtNC90ZbRhSDQstC10YDRgdGW0Y/RhT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyDQtNC70Y8gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ9Cg0ZbQstC10L3RjCDQs9C70LjQsdC40L3QuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ9CX0LHRltC70YzRiNC40YLQuC/Qt9C80LXQvdGI0LjRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ9CU0L7RgdGP0LPQvdGD0YLQviDQvNCw0LrRgdC40LzQsNC70YzQvdC+0LPQviDRgNGW0LLQvdGPINC/0L7RgdC40LvQsNC90Ywg0LTQu9GPIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn0JXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ9CG0L3RhNC+0YDQvNCw0YbRltGPINC/0YDQviDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn0J/QvtGC0L7Rh9C90LjQuSDRgdGC0LDQvSDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfQn9C+0YLQvtGH0L3QuNC5INGB0YLQsNC9INGW0L3RhtC40LTQtdC90YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfQntGB0YLQsNC90L3RltC5INGA0LDQtyDQt9C80ZbQvdC10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfQntGB0YLQsNC90L3RltC5INGA0LDQtyDQt9C80ZbQvdC10L3Qvic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ9CS0LDRiNGWINC10LvQtdC80LXQvdGC0Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ9Cf0L7RiNGD0Log0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluQUNMCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgVHlwZSd9ID0gJ9Ci0LjQvyDQvtCxXCfRlNC60YLQsCc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5EeW5hbWljRmllbGRTY3JlZW4KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBieSBvYmplY3QgdHlwZSd9ID0gJ9Ck0ZbQu9GM0YLRgNGD0LLQsNGC0Lgg0LfQsCDRgtC40L/QvtC8JzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn0JHRg9C00LUg0ZbQvNC/0L7RgNGC0L7QstCw0L3QviDQvdCw0YHRgtGD0L/QvdGWINC60LvQsNGB0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn0JHRg9C00YPRgtGMINGW0LzQv9C+0YDRgtC+0LLQsNC90ZYg0L3QsNGB0YLRg9C/0L3RliDRgNC+0LvRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICfQl9Cy0LXRgNC90ZbRgtGMINGD0LLQsNCz0YMsINGJ0L4g0YLQsNC60L7QtiDQsdGD0LTRg9GC0Ywg0YHRgtCy0L7RgNC10L3RliDQstGW0LTQv9C+0LLRltC00L3RliDQtNC40L3QsNC80ZbRh9C90ZYg0L/QvtC70Y8g0ZYg0LrQu9Cw0YHQuCBHZW5lcmFsQ2F0YWxvZywg0ZYg0LDQstGC0L7QvNCw0YLQuNGH0L3QtSDQstC40LTQsNC70LXQvdC90Y8g0L3QtSDQv9C10YDQtdC00LHQsNGH0LXQvdC+Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ9Cl0L7Rh9C10YLQtSDQv9GA0L7QtNC+0LLQttC40YLQuD8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAn0J/QvtGC0YDRltCx0L3RliDQv9GA0LjQutC70LDQtNC4INC60LvQsNGB0ZbQsiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAn0JLQuNC30L3QsNGH0LXQvdC90Y8g0L3QtSDRlCDQutC+0YDQtdC60YLQvdC40LwgWUFNTCDRhdC10YjQtdC8Lic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ9Ce0LPQu9GP0LQ6INCV0LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCDQvdC1INCy0LrQsNC30YPRlNGC0YzRgdGPISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ9CS0LDQvCDQv9C+0YLRgNGW0LHQtdC9INC/0YDQuNC90LDQudC80L3RliDQvtC00LjQvSDQstC40LHRgNCw0L3QuNC5INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICfQoyDQstCw0YEg0L3QtdC80LDRlCDQv9GA0LDQsiDQvdCwINC30LDQv9C40YEg0LTQviDRhtGM0L7Qs9C+INC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn0JTQu9GPINC60LvQsNGB0YMgJXMg0L3QtSDQstC40LfQvdCw0YfQtdC90L4g0LLQuNC30L3QsNGH0LXQvdC90Y8hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfQldC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgIiVzIiDQvdC1INC30L3QsNC50LTQtdC90L4g0LIg0LHQsNC30ZYg0LTQsNC90LjRhSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfQndC1INCy0LTQsNC70L7RgdGPINCy0LjQtNCw0LvQuNGC0Lgg0ZbQtNC10L3RgtC40YTRltC60LDRgtC+0YAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAn0JLQtdGA0YHRltGOINC00LvRjyBDb25maWdJdGVtSUQgJXMg0L3QtSDQt9C90LDQudC00LXQvdC+ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEINCw0LHQviBDbGFzc0lEINC90LUg0LLQutCw0LfRg9GO0YLRjNGB0Y8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfQlNC+0YHRgtGD0L8g0L3QtSDQvdCw0LTQsNGU0YLRjNGB0Y8hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LXQvNC+0LbQu9C40LLQviDQv9C+0LrQsNC30LDRgtC4INGW0YHRgtC+0YDRltGOLCDQvdC1INCy0LrQsNC30LDQvdC+IENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfQndC10LzQvtC20LvQuNCy0L4g0L/QvtC60LDQt9Cw0YLQuCDRltGB0YLQvtGA0ZbRjiwg0L3QtdC80LDRlCDQv9GA0LDQsiDQtNC+0YHRgtGD0L/RgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05ldyBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ9Cd0L7QstCwINCy0LXRgNGB0ZbRjyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn0J7QvdC+0LLQu9C10L3QviDRgdGC0LDQvSDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPICjQvdC+0LLQuNC5PSVzLCDRgdGC0LDRgNC40Lk9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9Ce0L3QvtCy0LvQtdC90LjQuSDRgdGC0LDQvSDRltC90YbQuNC00LXQvdGC0YMgKNC90L7QstC40Lk9JXMsINGB0YLQsNGA0LjQuT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykg0LLQuNC00LDQu9C10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ9CU0L7QtNCw0L3QviDQv9C+0YHQuNC70LDQvdC90Y8g0L3QsCAlcyAo0YLQuNC/PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAn0J/QvtGB0LjQu9Cw0L3QvdGPINC90LAgJXMgKHR5cGU9JXMpINCy0LjQtNCw0LvQtdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ9Ce0L3QvtCy0LvQtdC90L4g0LLQuNC30L3QsNGH0LXQvdC90Y8gQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn0IbQvFwn0Y8g0L7QvdC+0LLQu9C10L3QviAo0L3QvtCy0LU9JXMsINGB0YLQsNGA0LU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAn0JDRgtGA0LjQsdGD0YIgJXMg0LfQvNGW0L3QtdC90L4g0LcgIiVzIiDQvdCwICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAn0JLQuNC00LDQu9C10L3QviDQstC10YDRgdGW0Y4gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlEINCw0LHQviBWZXJzaW9uSUQg0L3QtSDQstC60LDQt9GD0Y7RgtGM0YHRjyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn0J3QtdC80L7QttC70LjQstC+INC/0L7QutCw0LfQsNGC0Lgg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLCDQvdC10LzQsNGUINC/0YDQsNCyINC00L7RgdGC0YPQv9GDISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyDQvdC1INC30L3QsNC50LTQtdC90L4g0LIg0LHQsNC30ZYg0LTQsNC90LjRhSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ9C90LDQtNGA0YPQutC+0LLQsNC90L4g0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4gJXMg0LIgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ9Cf0L7RgdC40LvQsNC90L3Rjyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ9Cd0LXQv9GA0LDQstC40LvRjNC90LjQuSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0NsYXNzSUQg0L3QtSDQvdCw0LTQsNGU0YLRjNGB0Y8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAn0J/RgNCw0LLQsCDQtNC+0YHRgtGD0L/RgyDQtNC70Y8g0YbRjNC+0LPQviDQutC70LDRgdGDINC90LUg0L3QsNC00LDQvdC+ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn0JHQtdC30YDQtdC30YPQu9GM0YLQsNGC0L3QviEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfQoNC10LfRg9C70YzRgtCw0YLQuCDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAn0J3QtdC80L7QttC70LjQstC+INC/0L7QutCw0LfQsNGC0Lgg0LXQu9C10LzQtdC90YIsINC90LXQvNCw0ZQg0L/RgNCw0LIg0LTQvtGB0YLRg9C/0YMg0LTQu9GPIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0g0L3QtSDQt9C90LDQudC00LXQvdC+ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICfQktC10YDRgdGW0Lkg0L3QtSDQt9C90LDQudC00LXQvdC+ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ9C+0L/QtdGA0LDRgtC40LLQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ9C/0L7Qv9C10YDQtdC00LbQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ9GW0L3RhtC40LTQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Ch0YLQsNC9INGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8g0YbRjNC+0LPQviDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Ch0YLQsNC9INGW0L3RhtC40LTQtdC90YLRgyDRhtGM0L7Qs9C+INC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn0J3QtdC80LDRlCDQv9GA0LDQsiDQtNC+0YHRgtGD0L/Rgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICfQpNGW0LvRjNGC0YAg0L3QtdC00ZbQudGB0L3QuNC5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAn0J/QsNGA0LDQvNC10YLRgNC4INC/0L7RiNGD0LrRgyDQvdC10LLRltGA0L3RliEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICfQn9C+0LrQsNC30LDQvdGWINC10LvQtdC80LXQvdGC0Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ9Ci0LjQvyDRgdGC0LDQvdGDINGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn0J/QvtGC0L7Rh9C90LjQuSDRgdGC0LDQvSDRltC90YbQuNC00LXQvdGC0YMg0KLQuNC/INGW0L3RhtC40LTQtdC90YLRgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICcg0JzRltC2JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfQntCx0LzQtdC20LXQvdC90Y8g0LrQu9Cw0YHRltCyINC00LvRjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn0JLQuNCx0LXRgNGW0YLRjCDQvtC00LjQvSDQsNCx0L4g0LTQtdC60ZbQu9GM0LrQsCDQutC70LDRgdGW0LIsINGJ0L7QsSDQvtCx0LzQtdC20LjRgtC4INCy0LjQsdGW0YAg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn0J7QsdC80LXQttC10L3QvdGPINC60LvQsNGB0ZbQsiDQtNC70Y8g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfQktC40LHQtdGA0ZbRgtGMINC+0LTQuNC9INCw0LHQviDQtNC10LrRltC70YzQutCwINC60LvQsNGB0ZbQsiwg0YnQvtCxINC+0LHQvNC10LbQuNGC0Lgg0LLQuNCx0ZbRgCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAn0JTQuNC90LDQvNGW0YfQvdC40LkgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICfQodGC0LDRgtC40YfQvdC40LkgKNCy0LXRgNGB0ZbRjyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAn0KLQuNC/INC/0L7RgdC40LvQsNC90L3RjyDQvdCwINC/0L7RgdC40LvQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfQp9C4INGB0YLQvtGB0YPRlNGC0YzRgdGPINGG0LUg0L/QvtGB0LjQu9Cw0L3QvdGPIENvbmZpZ0l0ZW0g0LDQsdC+INGB0YLQsNGC0LjRh9C90L7RlyDQstC10YDRgdGW0Zcg0L7QsVwn0ZTQutGC0LAsINC90LAg0Y/QutC40Lkg0L/QvtGB0LjQu9Cw0ZTRgtGM0YHRjyDQv9C+0YHQuNC70LDQvdC90Y8uINCU0LvRjyDQtNC40L3QsNC80ZbRh9C90LjRhSDQv9C+0YHQuNC70LDQvdGMINCy0LjQutC+0L3Rg9GU0YLRjNGB0Y8g0LvQuNGI0LUg0L7QsdGH0LjRgdC70LXQvdC90Y8g0L/QvtGC0L7Rh9C90L7Qs9C+INGB0YLQsNC90YMg0ZbQvdGG0LjQtNC10L3RgtGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ9CS0LjQsdC10YDRltGC0Ywg0LDRgtGA0LjQsdGD0YIsINC30LAg0Y/QutC40Lwg0LHRg9C00LUg0LfQtNGW0LnRgdC90Y7QstCw0YLQuNGB0Y8g0L/QvtGI0YPQuiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAn0KHRgtGA0YPQutGC0YPRgNCwINCx0LDQt9C4INC00LDQvdC40YUg0L3QtdCy0ZbRgNC90LAuINCR0YPQtNGMINC70LDRgdC60LAsINC90LDQtNCw0LnRgtC1INGF0LXRiCDQtyDQtNCw0L3QuNC80Lgg0YMg0YTQvtGA0LzQsNGC0ZYgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICfQoNGP0LTQvtC6IFlBTUwg0L/QvtGC0YDRltCx0L3QviDQv9C+0YfQuNC90LDRgtC4INC3IFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ9Cd0LUg0LLQtNCw0LvQvtGB0Y8g0L7Rh9C40YHRgtC40YLQuCDRgtCw0LHQu9C40YbRjiBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICfQktGW0LTQv9C+0LLRltC00L3QuNGFINC00LjQvdCw0LzRltGH0L3QuNGFINC/0L7Qu9GW0LIg0L3QtSDQt9C90LDQudC00LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn0J3QtSDQstC00LDQu9C+0YHRjyDQstGB0YLQsNCy0LjRgtC4INCyINGC0LDQsdC70LjRhtGOIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn0JLRgdGC0LDQstC40LIgMCDRgNGP0LTQutGW0LIg0YMg0YLQsNCx0LvQuNGG0Y4gY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90LAg0LrRltC70YzQutGW0YHRgtGMINC+0LTQvdC+0LPQviDQtdC70LXQvNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ9CG0LzQv9C+0YDRgtGD0LLQsNGC0Lgv0LXQutGB0L/QvtGA0YLRg9Cy0LDRgtC4INCy0LrQu9Cw0LTQtdC90L3RjyAo0Y/QuiDQvtGB0YLQsNC90L3RliDQt9Cw0L/QuNGB0Lgg0LIg0YDRj9C00LrRgyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICfQoNGP0LTQvtC6INCy0LXRgNGB0ZbRlyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICfQn9C+0LzQuNC70LrQsCDRgdC40L3RhdGA0L7QvdGW0LfQsNGG0ZbRlyDQstC40LfQvdCw0YfQtdC90YwuINCR0YPQtNGMINC70LDRgdC60LAsINC/0LXRgNC10LLRltGA0YLQtSDQu9C+0LMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAn0KMg0LLQsNGBINGUINCy0LjQt9C90LDRh9C10L3QvdGPIElUU01Db25maWdJdGVtLCDRj9C60ZYg0L3QtSDRgdC40L3RhdGA0L7QvdGW0LfQvtCy0LDQvdGWLiDQkdGD0LTRjCDQu9Cw0YHQutCwLCDRgNC+0LfQs9C+0YDQvdGW0YLRjCDQtNC40L3QsNC80ZbRh9C90ZYg0LfQvNGW0L3QuCDQv9C+0LvRltCyIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn0JfQsNC60ZbQvdGH0LjQstGB0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfQntCx0YHQu9GD0LPQvtCy0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn0J/RltC70L7Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn0JfQsNC/0LvQsNC90L7QstCw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfQoNC10LzQvtC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ9Cd0LAg0L/QtdC90YHRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfQntCz0LvRj9C0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfQotC10YHRgtGD0LLQsNC90L3Rjy9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAn0J7Qs9C70Y/QtCDRgtCwINC/0ZbQtNGC0LLQtdGA0LTQttC10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ9CG0LzQv9C+0YDRgiDQutC70LDRgdGW0LIv0YDQvtC70LXQuSDRgtCwINC/0L7Qslwn0Y/Qt9Cw0L3QuNGFINC3INC90LjQvNC4INC/0L7Qu9GW0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICfQktC40L3QuNC60LvQsCDQv9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINGW0LzQv9C+0YDRgtGDINC60LvQsNGB0YMuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSDQn9GA0LjRhdC+0LLQsNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtINCf0L7QutCw0LfQsNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ9CU0L7Qt9Cy0L7Qu9GP0ZQg0LLQuNC60L7RgNC40YHRgtC+0LLRg9Cy0LDRgtC4INGA0L7Qt9GI0LjRgNC10L3RliDRg9C80L7QstC4INC/0L7RiNGD0LrRgyDQtNC70Y8g0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLiDQl9CwINC00L7Qv9C+0LzQvtCz0L7RjiDRhtGW0ZTRlyDRhNGD0L3QutGG0ZbRlyDQstC4INC80L7QttC10YLQtSDRiNGD0LrQsNGC0LgsINC90LDQv9GA0LjQutC70LDQtCwg0L3QsNC30LLRgyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQtyDRgtCw0LrQuNC80Lgg0YPQvNC+0LLQsNC80LgsINGP0LogIigqa2V5MSomJiprZXkyKikiINCw0LHQviAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ9CU0L7Qt9Cy0L7Qu9GP0ZQg0YDQvtC30YjQuNGA0LXQvdGWINGD0LzQvtCy0Lgg0L/QvtGI0YPQutGDINGDINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINC60LvRltGU0L3RgtCwLiDQl9CwINC00L7Qv9C+0LzQvtCz0L7RjiDRhtGW0ZTRlyDRhNGD0L3QutGG0ZbRlyDQstC4INC80L7QttC10YLQtSDRiNGD0LrQsNGC0LgsINC90LDQv9GA0LjQutC70LDQtCwg0L3QsNC30LLRgyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQtyDRgtCw0LrQuNC80Lgg0YPQvNC+0LLQsNC80LgsINGP0LogIigqa2V5MSomJiprZXkyKikiINCw0LHQviAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ9Cf0YDQuNC30L3QsNGH0LXQvdGWINCa0IYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ9Ca0IYsINC/0YDQuNC30L3QsNGH0LXQvdGWINC60L7QvNC/0LDQvdGW0Zct0LrQu9GW0ZTQvdGC0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfQn9GW0LvQvtGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICfQndCw0LvQsNGI0YLRg9Cy0LDQvdC90Y8gQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn0J/QtdGA0LXQstGW0YDRj9GC0Lgg0YPQvdGW0LrQsNC70YzQvdC1INGW0LxcJ9GPINGC0ZbQu9GM0LrQuCDQsiDQvNC10LbQsNGFINC+0LTQvdC+0LPQviDQutC70LDRgdGDIENvbmZpZ0l0ZW0gKFwnY2xhc3NcJykg0LDQsdC+INCz0LvQvtCx0LDQu9GM0L3QviAoXCdnbG9iYWxcJyksINGJ0L4g0L7Qt9C90LDRh9Cw0ZQsINGJ0L4g0L/RgNC4INC/0L7RiNGD0LrRgyDQtNGD0LHQu9GW0LrQsNGC0ZbQsiDQstGA0LDRhdC+0LLRg9GU0YLRjNGB0Y8g0LrQvtC20LXQvSDRltGB0L3Rg9GO0YfQuNC5IENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICfQktC40LHQtdGA0ZbRgtGMINC80L7QtNGD0LvRjCwg0YnQvtCxINC30LDRgdGC0L7RgdGD0LLQsNGC0Lgg0YHRhdC10LzRgyDRltC80LXQvdGD0LLQsNC90L3Rjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ9CS0LjQsdC10YDRltGC0Ywg0LzQvtC00YPQu9GMLCDRidC+0LEg0LfQsNGB0YLQvtGB0YPQstCw0YLQuCDQvdC+0LzQtdGA0L3RgyDRgdGF0LXQvNGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICfQktC40LHQtdGA0ZbRgtGMINC80L7QtNGD0LvRjCDQtNC70Y8g0LfQsNGB0YLQvtGB0YPQstCw0L3QvdGPINGB0YXQtdC80Lgg0YDRj9C00LrRltCyINCy0LXRgNGB0ZbQuS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfQktC40LHQtdGA0ZbRgtGMINCw0YLRgNC40LHRg9GC0LgsINGJ0L7QsSDQt9Cw0L/Rg9GB0YLQuNGC0Lgg0YHRgtCy0L7RgNC10L3QvdGPINC90L7QstC+0Zcg0LLQtdGA0YHRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICfQktC40LHQtdGA0ZbRgtGMINC60LDRgtC10LPQvtGA0ZbRlywg0Y/QutGWINGB0LvRltC0INC/0YDQuNC30L3QsNGH0LjRgtC4INGG0YzQvtC80YMg0LrQu9Cw0YHRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICfQpNGW0LvRjNGC0YDQuCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGB0YLQvtCy0L/RhtGPINC00LvRjyDQntCz0LvRj9C00YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ9Ch0YLQvtCy0L/RhtGWLCDRj9C60ZYg0LzQvtC20L3QsCDQstGW0LTRhNGW0LvRjNGC0YDRg9Cy0LDRgtC4INCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4g0J/RgNC40LzRltGC0LrQsDog0JTQvtC/0YPRgdC60LDRjtGC0YzRgdGPINC70LjRiNC1INCw0YLRgNC40LHRg9GC0Lgg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgtCwINC00LjQvdCw0LzRltGH0L3RliDQv9C+0LvRjyAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn0JXQu9C10LzQtdC90YLQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ9CU0L7QtNCw0YLQuCDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn0KDQtdC00LDQs9GD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDQvNC+0LTRg9C70Y8g0L/QvtC00ZbQuSwg0Y/QutC40Lkg0LTQvtC30LLQvtC70Y/RlCDQt9Cw0L/QuNGB0YPQstCw0YLQuCDRltGB0YLQvtGA0ZbRjiDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0LvRjCDQv9C+0LTRltC5INC00LvRjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLCDRj9C60LjQuSDQvtC90L7QstC70Y7RlCDQtdC70LXQvNC10L3RgtC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQtNC+INGX0YUg0L/QvtGC0L7Rh9C90L7Qs9C+INCy0LjQt9C90LDRh9C10L3QvdGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ9CG0YHRgtC+0YDRltGPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ9CU0YDRg9C6INC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ9Cc0LDRgdGI0YLQsNCxINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ9CU0LXRgNC10LLQviDQtdC70LXQvNC10L3RgtCwINC90LDQu9Cw0YjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtINCS0LXRgNGB0ZbRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyDQvdCw0YHRgtGD0L/QvdC40YUg0LrQu9Cw0YHRltCyINC90LUg0LHRg9C00YPRgtGMINC30LHQtdGA0ZbQs9Cw0YLQuNGB0Y8g0L3QsCDRgdC10YDQstC10YDRliBFbGFzdGljc2VhcmNoLiDQqdC+0LEg0LfQsNGB0YLQvtGB0YPQstCw0YLQuCDRhtC1INC00L4g0ZbRgdC90YPRjtGH0LjRhSBDSSwg0LzRltCz0YDQsNGG0ZbRjyBDSSDQv9C+0LLQuNC90L3QsCDQsdGD0YLQuCDQt9Cw0L/Rg9GJ0LXQvdCwINGH0LXRgNC10Lcg0LrQvtC90YHQvtC70Ywg0L/RltGB0LvRjyDQt9C80ZbQvdC4INGG0ZbRlNGXINC+0L/RhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zINC3INC90LDRgdGC0YPQv9C90LjQvNC4INGB0YLQsNC90LDQvNC4INGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8g0L3QtSDQsdGD0LTRg9GC0Ywg0LfQsdC10YDRltCz0LDRgtC40YHRjyDQvdCwINGB0LXRgNCy0LXRgNGWIEVsYXN0aWNzZWFyY2guINCp0L7QsSDQt9Cw0YHRgtC+0YHRg9Cy0LDRgtC4INGG0LUg0LTQviDRltGB0L3Rg9GO0YfQuNGFIENJLCDQvNGW0LPRgNCw0YbRltGPIENJINC/0L7QstC40L3QvdCwINCx0YPRgtC4INC30LDQv9GD0YnQtdC90LAg0YfQtdGA0LXQtyDQutC+0L3RgdC+0LvRjCDQv9GW0YHQu9GPINC30LzRltC90Lgg0YbRltGU0Zcg0L7Qv9GG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn0J7QsdC80LXQttC10L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfQmtC+0L3RhNGW0LPRg9GA0LDRhtGW0Y8g0J7QsdC80LXQttC10L3QvdGPINC60ZbQu9GM0LrQvtGB0YLRliDQtdC70LXQvNC10L3RgtGW0LIg0L3QsCDRgdGC0L7RgNGW0L3RhtGWLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAn0JHQsNC30LAg0LTQsNC90LjRhSDRg9C/0YDQsNCy0LvRltC90L3RjyDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZTRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ9CV0LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQvNCw0YHQvtCy0L7Qs9C+INC80L7QtNGD0LvRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC90YTRltCz0YPRgNCw0YbRltGPINC10LvQtdC80LXQvdGC0LAg0L/QvtGI0YPQutGDINCx0LXQutC10L3QtC3QvNCw0YDRiNGA0YPRgtC40LfQsNGC0L7RgNCwINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn0KHRgtCy0L7RgNGO0LnRgtC1INGC0LAg0LrQtdGA0YPQudGC0LUg0LLQuNC30L3QsNGH0LXQvdC90Y/QvNC4INC00LvRjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ9Ch0YLQstC+0YDRjtGUINC60LLQuNGC0LrQuCDQtNC70Y8gQ29uZmlnSXRlbXMg0YMg0L/QtdCy0L3RliDQvNC+0LzQtdC90YLQuCDRh9Cw0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAn0JrQu9GW0ZTQvdGC0Lgg0LzQvtC20YPRgtGMINC/0LXRgNC10LPQu9GP0LTQsNGC0Lgg0ZbRgdGC0L7RgNC40YfQvdGWINCy0LXRgNGB0ZbRlyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAn0JrQu9GW0ZTQvdGC0Lgg0LzQsNGO0YLRjCDQvNC+0LbQu9C40LLRltGB0YLRjCDQstGA0YPRh9C90YMg0L/QtdGA0LXQvNC40LrQsNGC0LjRgdGPINC80ZbQtiDRltGB0YLQvtGA0LjRh9C90LjQvNC4INCy0LXRgNGB0ZbRj9C80LggQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn0JTQsNC90ZYg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINCyINCw0YLRgNC40LHRg9GC0ZYg0L3QsCDQtdC60YDQsNC90ZYg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLiDQn9GA0LjQutC70LDQtDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfQlNCw0L3RliDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INC00LvRjyDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8g0LIg0LDRgtGA0LjQsdGD0YLRliDQvdCwINC10LrRgNCw0L3RliDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuINCf0YDQuNC60LvQsNC0OiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfRgtC1INC00ZbRlywg0LTQu9GPINGP0LrQuNGFINC60L3QvtC/0LrQsCDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINC00L7RgdGC0YPQv9C90LAg0YMg0LLRltC00LbQtdGC0ZYg0L/QvtCyXCfRj9C30LDQvdC40YUg0L7QsVwn0ZTQutGC0ZbQsiAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiDQl9Cy0LXRgNC90ZbRgtGMINGD0LLQsNCz0YMsINGJ0L4g0LIg0YbQuNGFINC00ZbRj9GFINC/0L7QstC40L3QvdGWINCx0YPRgtC4INC30LDRgNC10ZTRgdGC0YDQvtCy0LDQvdGWINC90LDRgdGC0YPQv9C90ZYgSlMg0ZYgQ1NTINGE0LDQudC70Lg6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzINGWIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0YHRhdC10LzRgyBUZW1wbGF0ZTo6VG9vbGtpdCDQtNC70Y8g0YDRj9C00LrRltCyINCy0LXRgNGB0ZbQuS4g0JLQuNC60L7RgNC40YHRgtC+0LLRg9GU0YLRjNGB0Y8g0LvQuNGI0LUg0YMg0LLQuNC/0LDQtNC60YMsINGP0LrRidC+INC80L7QtNGD0LvRjCDRgNGP0LTQutGW0LIg0LLQtdGA0YHRltC5INC80LDRlCDQt9C90LDRh9C10L3QvdGPIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfRgtC1INC90LDQsdGW0YAg0YPQvNC+0LIsINC30LAg0Y/QutC40YUg0LrQvtGA0LjRgdGC0YPQstCw0YfQtdCy0ZYg0LTQvtC30LLQvtC70LXQvdC+INCx0LDRh9C40YLQuCDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuINCX0LAg0LHQsNC20LDQvdC90Y/QvCwg0YPQvNC+0LLQuCDQvNC+0LbRg9GC0Ywg0LHRg9GC0Lgg0L7QsdC80LXQttC10L3RliDQv9C10LLQvdC40LzQuCDQs9GA0YPQv9Cw0LzQuCDQutC+0YDQuNGB0YLRg9Cy0LDRh9GW0LIuINCE0LTQuNC90LjQvCDQvtCx0L7Qslwn0Y/Qt9C60L7QstC40Lwg0LDRgtGA0LjQsdGD0YLQvtC8INGUINC90LDQt9Cy0LAuINCv0LrRidC+INC90LUg0LLQutCw0LfQsNC90L4g0LbQvtC00L3QuNGFINGW0L3RiNC40YUg0L/QsNGA0LDQvNC10YLRgNGW0LIsINCy0YHRliDQtdC70LXQvNC10L3RgtC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsdGD0LTRg9GC0Ywg0LLQuNC00LjQvNC40LzQuCDRgyDRhtGW0Lkg0LrQsNGC0LXQs9C+0YDRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvdC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQtNCw0LvQtdC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4g0LfQsNCz0LDQu9GM0L3QvtCz0L4g0ZbQvdGC0LXRgNGE0LXQudGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC90LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0L7RgtGA0LjQvNCw0L3QvdGPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQt9CwINC00L7Qv9C+0LzQvtCz0L7RjiDQt9Cw0LPQsNC70YzQvdC+0LPQviDRltC90YLQtdGA0YTQtdC50YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0L3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINC30LAg0LTQvtC/0L7QvNC+0LPQvtGOINC30LDQs9Cw0LvRjNC90L7Qs9C+INGW0L3RgtC10YDRhNC10LnRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvdC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINC90LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4g0LfQsNCz0LDQu9GM0L3QvtCz0L4g0ZbQvdGC0LXRgNGE0LXQudGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LzQvtC00YPQu9GMINC+0LPQu9GP0LTRgyDQtNC70Y8g0LLRltC00L7QsdGA0LDQttC10L3QvdGPINC90LXQstC10LvQuNC60L7Qs9C+INGB0L/QuNGB0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGULCDRh9C4INC/0L7RgtGA0ZbQsdC90L4g0L/QvtC60LDQt9GD0LLQsNGC0Lgg0LzRltGC0LrQuCDRgtC40L/RgyDQt9CyXCfRj9C30LrRgyDRgyDQt1wn0ZTQtNC90LDQvdC90Y/RhSDQstGD0LfQu9GW0LIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC80LXQttGDINC/0L7RiNGD0LrRgyDQtNC70Y8g0LXQutGA0LDQvdCwIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQtNC+0YHRgtGD0L/QvdGWINGB0YLQvtCy0L/RhtGWIENJINCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC30LDQu9C10LbQvdC+INCy0ZbQtCDQutC70LDRgdGDIENJLiDQmtC+0LbQtdC9INC30LDQv9C40YEg0LzQsNGUINGB0LrQu9Cw0LTQsNGC0LjRgdGPINC3INC90LDQt9Cy0Lgg0LrQu9Cw0YHRgyDRgtCwINC80LDRgdC40LLRgyDQtNC+0YHRgtGD0L/QvdC40YUg0L/QvtC70ZbQsiDQtNC70Y8g0LLRltC00L/QvtCy0ZbQtNC90L7Qs9C+INC60LvQsNGB0YMuINCX0LDQv9C40YHQuCDQtNC40L3QsNC80ZbRh9C90LjRhSDQv9C+0LvRltCyINC/0L7QstC40L3QvdGWINCy0ZbQtNC/0L7QstGW0LTQsNGC0Lgg0YHRhdC10LzRliBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQsNGC0YDQuNCx0YPRgiDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INC00LvRjyDRgdC+0YDRgtGD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQsNGC0YDQuNCx0YPRgiDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INC00LvRjyDRgdC+0YDRgtGD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LrQu9GW0ZTQvdGC0YHRjNC60L7QvNGDINGW0L3RgtC10YDRhNC10LnRgdGWLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LDRgtGA0LjQsdGD0YIg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQtNC70Y8g0YHQvtGA0YLRg9Cy0LDQvdC90Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC30LAg0YbRltGU0Y4g0L7Qv9C10YDQsNGG0ZbRlNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQv9C+0YDRj9C00L7QuiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0YMg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuINCS0LPQvtGA0YM6INC90LDQudGB0YLQsNGA0ZbRiNGWINC30LLQtdGA0YXRgy4g0JLQvdC40Lc6INC90LDQudC90L7QstGW0YjRliDQt9Cy0LXRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC/0L7RgNGP0LTQvtC6INC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDRgyDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINC60LvRltGU0L3RgtGB0YzQutC+0LzRgyDRltC90YLQtdGA0YTQtdC50YHRli4g0JLQs9C+0YDRgzog0L3QsNC50YHRgtCw0YDRltGI0ZYg0LfQstC10YDRhdGDLiDQktC90LjQtzog0L3QsNC50L3QvtCy0ZbRiNGWINC30LLQtdGA0YXRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQv9C+0YDRj9C00L7QuiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0YMg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQtNC70Y8g0YbRltGU0Zcg0L7Qv9C10YDQsNGG0ZbRly4g0JLQs9C+0YDRgzog0L3QsNC50YHRgtCw0YDRltGI0LjQuSDQt9Cy0LXRgNGF0YMuINCS0L3QuNC3OiDQvdCw0LnQvdC+0LLRltGI0LjQuSDQt9Cy0LXRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINGB0YLQvtCy0L/RhtGWIENJLCDRidC+INCy0ZbQtNC+0LHRgNCw0LbQsNGO0YLRjNGB0Y8g0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQsiDQvtCz0LvRj9C00ZYg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQt9Cw0LvQtdC20L3QviDQstGW0LQg0LrQu9Cw0YHRgyBDSS4g0JrQvtC20LXQvSDQt9Cw0L/QuNGBINC80LDRlCDRgdC60LvQsNC00LDRgtC40YHRjyDQtyDQvdCw0LfQstC4INC60LvQsNGB0YMg0YLQsCDQvNCw0YHQuNCy0YMg0LTQvtGB0YLRg9C/0L3QuNGFINC/0L7Qu9GW0LIg0LTQu9GPINCy0ZbQtNC/0L7QstGW0LTQvdC+0LPQviDQutC70LDRgdGDLiDQl9Cw0L/QuNGB0Lgg0LTQuNC90LDQvNGW0YfQvdC40YUg0L/QvtC70ZbQsiDQvNCw0Y7RgtGMINCy0ZbQtNC/0L7QstGW0LTQsNGC0Lgg0YHRhdC10LzRliBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICfQktC40LfQvdCw0YfQsNGUINCz0LvQuNCx0LjQvdGDINC30LJcJ9GP0LfQutGW0LIg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCwg0Y/QutGDINCx0YPQtNC1INC/0L7QutCw0LfQsNC90L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LDRgtGA0LjQsdGD0YIg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLCDRj9C60LjQuSDQsdGD0LTQtSDQv9C+0LrQsNC30LDQvdC+INC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0L3QsCDQtdC60YDQsNC90ZYg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDRgtC40L/QvtCy0LjQuSDQsNGC0YDQuNCx0YPRgiDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINGP0LrQuNC5INCx0YPQtNC1INC/0L7QutCw0LfQsNC90L4g0L3QsCDQtdC60YDQsNC90ZYg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLiDQn9GA0LjQutC70LDQtDogItCa0LvRjtGHIiDQvNCw0ZQg0LzRltGB0YLQuNGC0Lgg0L3QsNC30LLRgyDQtNC40L3QsNC80ZbRh9C90L7Qs9C+INC/0L7Qu9GPLCDRgyDRhtGM0L7QvNGDINCy0LjQv9Cw0LTQutGDIFwnWFwnLCAi0JfQvNGW0YHRgiIg0LzQsNGUINC80ZbRgdGC0LjRgtC4INC30L3QsNGH0LXQvdC90Y8g0LTQuNC90LDQvNGW0YfQvdC+0LPQviDQv9C+0LvRjyDQt9Cw0LvQtdC20L3QviDQstGW0LQg0YLQuNC/0YMg0LTQuNC90LDQvNGW0YfQvdC+0LPQviDQv9C+0LvRjywg0KLQtdC60YHRgjogXCfRgtC10LrRgdGCXCcsINCS0LjQv9Cw0LTQsNGO0YfQuNC5INGB0L/QuNGB0L7QujogXCcxXCcsINCU0LDRgtCwL9Cn0LDRgTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnINGC0LAg0LDQsdC+IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0L/RltC00L7QsVwn0ZTQutGCINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0LrQu9Cw0YHRgyBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC00L7RgdGC0YPQv9C90ZYg0YHRgtC+0LLQv9GG0ZYgQ0kg0LIg0L7Qs9C70Y/QtNGWINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LfQsNC70LXQttC90L4g0LLRltC0INC60LvQsNGB0YMgQ0kuINCa0L7QttC10L0g0LfQsNC/0LjRgSDQvNCw0ZQg0YHQutC70LDQtNCw0YLQuNGB0Y8g0Lcg0L3QsNC30LLQuCDQutC70LDRgdGDINGC0LAg0LzQsNGB0LjQstGDINC00L7RgdGC0YPQv9C90LjRhSDQv9C+0LvRltCyINC00LvRjyDQstGW0LTQv9C+0LLRltC00L3QvtCz0L4g0LrQu9Cw0YHRgy4g0JfQsNC/0LjRgdC4INC00LjQvdCw0LzRltGH0L3QuNGFINC/0L7Qu9GW0LIg0L/QvtCy0LjQvdC90ZYg0LLRltC00L/QvtCy0ZbQtNCw0YLQuCDRgdGF0LXQvNGWIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LLQuNGB0L7RgtGDINC60L7QvNC/0L7QvdC10L3RgtCwINGA0LXQtNCw0LrRgtC+0YDQsCDRgNC+0LfRiNC40YDQtdC90L7Qs9C+INGC0LXQutGB0YLRgyDQtNC70Y8g0YbRjNC+0LPQviDQtdC60YDQsNC90LAuINCS0LLQtdC00ZbRgtGMINGH0LjRgdC70L4gKNC/0ZbQutGB0LXQu9GWKSDQsNCx0L4g0LfQvdCw0YfQtdC90L3RjyDRgyDQstGW0LTRgdC+0YLQutCw0YUgKNCy0ZbQtNC90L7RgdC90LUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC60ZbQu9GM0LrRltGB0YLRjCDRgNGP0LTQutGW0LIg0LTQu9GPINGA0LXQtNCw0LrRgtC+0YDQsCDQstC40LfQvdCw0YfQtdC90YwgQ0kg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQtNC80ZbQvdGW0YHRgtGA0LDRgtC+0YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQv9C+0YDRj9C00L7QuiDRgdGC0LDQvdGW0LIg0ZbQvdGG0LjQtNC10L3RgtGDINCy0ZbQtCDQstC40YHQvtC60L7Qs9C+ICjQvdCw0L/RgNC40LrQu9Cw0LQsINC60YDQuNGC0LjRh9C90L7Qs9C+KSDQtNC+INC90LjQt9GM0LrQvtCz0L4gKNC90LDQv9GA0LjQutC70LDQtCwg0YTRg9C90LrRhtGW0L7QvdCw0LvRjNC90L7Qs9C+KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINCy0ZbQtNC/0L7QstGW0LTQvdGWINGB0YLQsNC90Lgg0YDQvtC30LPQvtGA0YLQsNC90L3Rjywg0LIg0Y/QutC40YUg0L/QvtCyXCfRj9C30LDQvdGWINGC0ZbQutC10YLQuCDQvNC+0LbRg9GC0Ywg0LLQv9C70LjQstCw0YLQuCDQvdCwINGB0YLQsNGC0YPRgSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC80LXQttGDINC/0L7RiNGD0LrRgyDQtNC70Y8g0LXQutGA0LDQvdCwIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvNC10LbRgyDQv9C+0YjRg9C60YMg0LTQu9GPINC10LrRgNCw0L3QsCBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LzQtdC20YMg0L/QvtGI0YPQutGDINC00LvRjyDQtdC60YDQsNC90LAgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC80LXQttGDINC/0L7RiNGD0LrRgyDQtNC70Y8g0LXQutGA0LDQvdCwIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDRgdGC0L7QstC/0YbRliDQmtCGLCDRidC+INCy0ZbQtNC+0LHRgNCw0LbQsNGO0YLRjNGB0Y8g0LIg0LrQvtC80L/Qu9C10LrRgdC90L7QvNGDINC/0L7QtNCw0L3QvdGWINGC0LDQsdC70LjRhtGWINC/0L7RgdC40LvQsNC90Ywg0LTQu9GPINCy0YHRltGFINC60LvQsNGB0ZbQsiDQmtCGLiDQr9C60YnQviDQt9Cw0L/QuNGBINCy0ZbQtNGB0YPRgtC90ZbQuSwg0YLQviDQv9C+0LrQsNC30YPRjtGC0YzRgdGPINGB0YLQvtCy0L/RhtGWINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0LwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGULCDRj9C60ZYg0YHRgtC+0LLQv9GG0ZYg0JrQhiDQstGW0LTQvtCx0YDQsNC20LDRgtC40LzRg9GC0YzRgdGPINGDINC60L7QvNC/0LvQtdC60YHQvdC+0LzRgyDQv9C+0LTQsNC90L3RliDRgtCw0LHQu9C40YbRliDQv9C+0YHQuNC70LDQvdGMLCDQt9Cw0LvQtdC20L3QviDQstGW0LQg0LrQu9Cw0YHRgyDQmtCGLiDQmtC+0LbQtdC9INC30LDQv9C40YEg0LzQsNGUINC/0L7Rh9C40L3QsNGC0LjRgdGPINC3INC90LDQt9Cy0Lgg0LrQu9Cw0YHRgyDRgtCwINC/0L7QtNCy0ZbQudC90L7Qs9C+INC00LLQvtC60YDQsNC/0LrQuCAo0L3QsNC/0YDQuNC60LvQsNC0LCBDb21wdXRlcjo6KS4g0IbRgdC90YPRlCDQtNC10LrRltC70YzQutCwINCw0YLRgNC40LHRg9GC0ZbQsiDQmtCGLCDRj9C60ZYg0ZQg0YHQv9GW0LvRjNC90LjQvNC4INC00LvRjyDQstGB0ZbRhSDQmtCGICjQvdCw0L/RgNC40LrQu9Cw0LQsINC00LvRjyDQutC70LDRgdGDIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiDQlNC70Y8g0LLRltC00L7QsdGA0LDQttC10L3QvdGPINC+0LrRgNC10LzQuNGFIENJLdCw0YLRgNC40LHRg9GC0ZbQsiwg0LLQuNC30L3QsNGH0LXQvdC40YUg0YMgQ0kt0LLQuNC30L3QsNGH0LXQvdC90ZYsINGB0LvRltC0INCy0LjQutC+0YDQuNGB0YLQvtCy0YPQstCw0YLQuCDQvdCw0YHRgtGD0L/QvdGDINGB0YXQtdC80YMgKNC/0YDQuNC60LvQsNC0INC00LvRjyDQutC70LDRgdGDIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuINCv0LrRidC+INC00LvRjyDQutC70LDRgdGDIENJINC90LXQvNCw0ZQg0LbQvtC00L3QvtCz0L4g0LfQsNC/0LjRgdGDLCDQsdGD0LTQtSDQv9C+0LrQsNC30LDQvdC+INGB0YLQvtCy0L/Rh9C40LrQuCDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQsINGP0LrRliDQtdC70LXQvNC10L3RgtC4INC00L7RgdGC0YPQv9C90ZYg0LTQu9GPICLQlNGW0ZciINC90LAg0YLRgNC10YLRjNC+0LzRgyDRgNGW0LLQvdGWINGB0YLRgNGD0LrRgtGD0YDQuCBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGULCDRj9C60ZYg0LXQu9C10LzQtdC90YLQuCDQtNC+0YHRgtGD0L/QvdGWINC90LAg0L/QtdGA0YjQvtC80YMg0YDRltCy0L3RliDRgdGC0YDRg9C60YLRg9GA0LggSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQsINGP0LrRliDQtdC70LXQvNC10L3RgtC4INC00L7RgdGC0YPQv9C90ZYg0L3QsCDQtNGA0YPQs9C+0LzRgyDRgNGW0LLQvdGWINGB0YLRgNGD0LrRgtGD0YDQuCBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCwg0Y/QutC40Lkg0YLQuNC/INC30LJcJ9GP0LfQutGDICjQvdCw0LfQstCw0L3QuNC5INC3INGC0L7Rh9C60Lgg0LfQvtGA0YMg0LrQstC40YLQutCwKSDQvNC+0LbQtSDQstC/0LvQuNCy0LDRgtC4INC90LAg0YHRgtCw0YLRg9GBINC30LJcJ9GP0LfQsNC90L7Qs9C+INCa0IYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCwg0Y/QutC40Lkg0YLQuNC/INC60LLQuNGC0LrQsCDQvNC+0LbQtSDQstC/0LvQuNCy0LDRgtC4INC90LAg0YHRgtCw0YLRg9GBINC/0L7Qslwn0Y/Qt9Cw0L3QvtGXINCa0IYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAn0J7QvdC+0LLQu9C10L3QvdGPINCy0LjQt9C90LDRh9C10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQktC40LTQsNC70LjRgtC4INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ9Ca0L7Qu9GW0YAg0YHRgtCw0L3RgyDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfQlNGD0LHQu9GW0LrQsNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAn0JzQvtC00YPQu9GMINC/0L7QtNGW0Lkg0LTQuNC90LDQvNGW0YfQvdC40YUg0L/QvtC70ZbQsiwg0Y/QutC40Lkg0L/QvtC30L3QsNGH0LDRlCDQstC40LfQvdCw0YfQtdC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGP0Log0L3QtdGB0LjQvdGF0YDQvtC90ZbQt9C+0LLQsNC90ZYsINGP0LrRidC+INC30LzRltC90Y7RjtGC0YzRgdGPINC00LjQvdCw0LzRltGH0L3RliDQv9C+0LvRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzRltGH0L3RliDQv9C+0LvRjywg0L/QvtC60LDQt9Cw0L3RliDQvdCwINC00L7QtNCw0YLQutC+0LLQvtC80YMg0LXQutGA0LDQvdGWINC/0L7Qu9GW0LIgSVRTTSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzRltGH0L3RliDQv9C+0LvRjywg0YnQviDQstGW0LTQvtCx0YDQsNC20LDRjtGC0YzRgdGPINC90LAg0LXQutGA0LDQvdGWINC+0LPQu9GP0LTRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC60LvRltGU0L3RgtGB0YzQutC+0LPQviDRltC90YLQtdGA0YTQtdC50YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzRltGH0L3RliDQv9C+0LvRjywg0YnQviDQstGW0LTQvtCx0YDQsNC20LDRjtGC0YzRgdGPINC90LAg0LXQutGA0LDQvdGWINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn0JLQvNC40LrQsNGUINGE0YPQvdC60YbRltGOINC80LDRgdC+0LLQuNGFINC00ZbQuSDQtyDQtdC70LXQvNC10L3RgtCw0LzQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LTQu9GPINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsCwg0YnQviDQtNC+0LfQstC+0LvRj9GUINC/0YDQsNGG0Y7QstCw0YLQuCDQtyDQtNC10LrRltC70YzQutC+0LzQsCDQtdC70LXQvNC10L3RgtCw0LzQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0L7QtNC90L7Rh9Cw0YHQvdC+Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn0JLQvNC40LrQsNGUINGE0YPQvdC60YbRltGOINC80LDRgdC+0LLQuNGFINC00ZbQuSDQtNC70Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQu9C40YjQtSDQtNC70Y8g0L/QtdGA0LXQu9GW0YfQtdC90LjRhSDQs9GA0YPQvy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAn0JTQvtC30LLQvtC70Y/RlCDQstCy0ZbQvNC60L3Rg9GC0Lgv0LLQuNC80LrQvdGD0YLQuCDRhNGD0L3QutGG0ZbRjiDQv9C10YDQtdCy0ZbRgNC60Lgg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINC90LAg0L3QsNGP0LLQvdGW0YHRgtGMINGD0L3RltC60LDQu9GM0L3QuNGFINGW0LzQtdC9LiDQn9C10YDRiCDQvdGW0LYg0YPQstGW0LzQutC90YPRgtC4INGG0Y4g0L7Qv9GG0ZbRjiwg0LLQsNC8INGB0LvRltC0INC/0LXRgNC10LLRltGA0LjRgtC4INGB0LjRgdGC0LXQvNGDINC90LAg0L3QsNGP0LLQvdGW0YHRgtGMINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0Lcg0L/QvtCy0YLQvtGA0Y7QstCw0L3QuNC80Lgg0ZbQvNC10L3QsNC80LguINCm0LUg0LzQvtC20L3QsCDQt9GA0L7QsdC40YLQuCDQt9CwINC00L7Qv9C+0LzQvtCz0L7RjiDQutC+0L3RgdC+0LvRjNC90L7RlyDQutC+0LzQsNC90LTQuCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0LvRjCDQv9C+0LTRltC5INC00LvRjyDQstGB0YLQsNC90L7QstC70LXQvdC90Y8gY29uZmlnaXRlbS1zdGF0dXMg0LfQsCDQv9C+0YHQuNC70LDQvdC90Y/QvCB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICfQn9C+0LvRjyDRltC90LTQtdC60YHRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLCDRidC+INCy0LjQutC+0YDQuNGB0YLQvtCy0YPRjtGC0YzRgdGPINC00LvRjyDQv9C+0LLQvdC+0YLQtdC60YHRgtC+0LLQvtCz0L4g0L/QvtGI0YPQutGDLiDQn9C+0LvRjyDRgtCw0LrQvtC2INC30LHQtdGA0ZbQs9Cw0Y7RgtGM0YHRjywg0LDQu9C1INC90LUg0ZQg0L7QsdC+0LJcJ9GP0LfQutC+0LLQuNC80Lgg0LTQu9GPINC30LDQs9Cw0LvRjNC90L7RlyDRhNGD0L3QutGG0ZbQvtC90LDQu9GM0L3QvtGB0YLRli4g0JLQutC70Y7Rh9C10L3QvdGPINCy0LrQu9Cw0LTQtdC90Ywg0LzQvtC20L3QsCDQstC40LzQutC90YPRgtC4LCDQstGB0YLQsNC90L7QstC40LLRiNC4INC30L3QsNGH0LXQvdC90Y8gMCDQsNCx0L4g0LLQuNC00LDQu9C40LLRiNC4INGX0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICfQn9C+0LvRjywg0YnQviDQt9Cx0LXRgNGW0LPQsNGO0YLRjNGB0Y8g0LIg0ZbQvdC00LXQutGB0ZYg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlywg0Y/QutGWINCy0LjQutC+0YDQuNGB0YLQvtCy0YPRjtGC0YzRgdGPINC00LvRjyDRltC90YjQuNGFINGG0ZbQu9C10LksINC+0LrRgNGW0Lwg0L/QvtCy0L3QvtGC0LXQutGB0YLQvtCy0L7Qs9C+INC/0L7RiNGD0LrRgy4g0JTQu9GPINC/0L7QstC90L7RlyDRhNGD0L3QutGG0ZbQvtC90LDQu9GM0L3QvtGB0YLRliDQstGB0ZYg0L/QvtC70Y8g0ZQg0L7QsdC+0LJcJ9GP0LfQutC+0LLQuNC80LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAn0JTQu9GPINC60L7QttC90L7Qs9C+INCy0LXQsS3RgdC10YDQstGW0YHRgyAo0LrQu9GO0YcpINC80L7QttC90LAg0LLQuNC30L3QsNGH0LjRgtC4INC80LDRgdC40LIg0LrQu9Cw0YHRltCyICjQt9C90LDRh9C10L3QvdGPKSwg0LTQu9GPINGP0LrQuNGFINGW0LzQv9C+0YDRgiDQvtCx0LzQtdC20LXQvdC+LiDQlNC70Y8g0LLRgdGW0YUg0LLQuNCx0YDQsNC90LjRhSDQutC70LDRgdGW0LIg0LDQsdC+INCy0YHRltGFINGW0YHQvdGD0Y7Rh9C40YUg0LrQu9Cw0YHRltCyINC/0L7RgtGA0ZbQsdC90L4g0LHRg9C00LUg0LLQuNCx0YDQsNGC0Lgg0ZbQtNC10L3RgtC40YTRltC60LDRhtGW0LnQvdGWINCw0YLRgNC40LHRg9GC0Lgg0YMg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGW0L3QstC+0LrQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXRlNGB0YLRgNCw0YbRltGPINC80L7QtNGD0LvRjyBHZW5lcmljSW50ZXJmYWNlINC00LvRjyDRiNCw0YDRgyDQstC40LrQu9C40LrRgyBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdGU0YHRgtGA0LDRhtGW0Y8g0LzQvtC00YPQu9GPIEdlbmVyaWNJbnRlcmZhY2Ug0LTQu9GPINGI0LDRgNGDINCy0LjQutC70LjQutGDIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdGU0YHRgtGA0LDRhtGW0Y8g0LzQvtC00YPQu9GPIEdlbmVyaWNJbnRlcmZhY2Ug0LTQu9GPINGI0LDRgNGDINCy0LjQutC70LjQutGDIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAn0J7Qs9C70Y/QtCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDRlCDRgdGC0LDQvdC4INGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8g0LTQviDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDQutC70ZbRlNC90YLRgdGM0LrQvtC80YMg0ZbQvdGC0LXRgNGE0LXQudGB0ZYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDRlCDRgdGC0LDQvdC4INGW0L3RhtC40LTQtdC90YLRltCyINGDINC/0L7RiNGD0Log0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQutC70ZbRlNC90YLRgdGM0LrQvtCz0L4g0ZbQvdGC0LXRgNGE0LXQudGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70YzQvdCwINC60ZbQu9GM0LrRltGB0YLRjCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLCDRj9C60ZYg0LHRg9C00LUg0LLRltC00L7QsdGA0LDQttC10L3QviDQsiDRgNC10LfRg9C70YzRgtCw0YLRliDRhtGW0ZTRlyDQvtC/0LXRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ9Cc0L7QtNGD0LvRjCDQtNC70Y8g0L/QtdGA0LXQstGW0YDQutC4INCz0YDRg9C/0LgsINCy0ZbQtNC/0L7QstGW0LTQsNC70YzQvdC+0Zcg0LfQsCDQutC70LDRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0LTQu9GPINC/0LXRgNC10LLRltGA0LrQuCDQs9GA0YPQv9C4LCDQstGW0LTQv9C+0LLRltC00LDQu9GM0L3QvtGXINC30LAg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ9Cc0L7QtNGD0LvRjCDQtNC70Y8g0LPQtdC90LXRgNCw0YbRltGXINGB0YLQsNGC0LjRgdGC0LjQutC4INC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICfQnNC+0LTRg9C70Ywg0ZbQvNC10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ9Cc0L7QtNGD0LvRjCDRh9C40YHQu9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ca0ZbQu9GM0LrRltGB0YLRjCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLCDRj9C60ZYg0LHRg9C00YPRgtGMINCy0ZbQtNC+0LHRgNCw0LbQsNGC0LjRgdGPINC90LAg0LrQvtC20L3RltC5INGB0YLQvtGA0ZbQvdGG0ZYg0YDQtdC30YPQu9GM0YLQsNGC0ZbQsiDQv9C+0YjRg9C60YMg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQmtGW0LvRjNC60ZbRgdGC0Ywg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlywg0Y/QutGWINCx0YPQtNGD0YLRjCDQstGW0LTQvtCx0YDQsNC20LDRgtC40YHRjyDQvdCwINC60L7QttC90ZbQuSDRgdGC0L7RgNGW0L3RhtGWINGA0LXQt9GD0LvRjNGC0LDRgtGW0LIg0L/QvtGI0YPQutGDINCyINGW0L3RgtC10YDRhNC10LnRgdGWINC60LvRltGU0L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ9Ce0LFcJ9GU0LrRgtC4INC00LvRjyDQv9C+0YjRg9C60YMsINC60ZbQu9GM0LrRltGB0YLRjCDQt9Cw0L/QuNGB0ZbQsiDRliDRj9C60ZYg0LDRgtGA0LjQsdGD0YLQuCDQv9C+0LrQsNC30YPQstCw0YLQuC4g0JDRgtGA0LjQsdGD0YLQuCBDb25maWdJdGVtINC80LDRjtGC0Ywg0LHRg9GC0Lgg0Y/QstC90L4g0LfQsdC10YDQtdC20LXQvdGWINGH0LXRgNC10LcgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn0J7Qs9C70Y/QtC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQutCw0YLQtdCz0L7RgNGW0Lkg0LTQu9GPINC60LvQsNGB0ZbQsiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINCy0ZbQutC90ZYg0L3QsNC70LDRiNGC0YPQstCw0L3RjCDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC00LvRjyDRhNGW0LvRjNGC0YDRltCyINGB0YLQvtCy0L/RhtGW0LIg0LIg0L7Qs9C70Y/QtNGWINC80LDQu9C40YUg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4g0JfQstC10YDQvdGW0YLRjCDRg9Cy0LDQs9GDOiDQstGB0YLQsNC90L7QstC70LXQvdC90Y8g0LfQvdCw0YfQtdC90L3RjyAi0JDQutGC0LjQstC90LjQuSIg0L3QsCAwINC70LjRiNC1INC30LDQsdC+0YDQvtC90LjRgtGMINCw0LPQtdC90YLQsNC8INGA0LXQtNCw0LPRg9Cy0LDRgtC4INC90LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDRhtGW0ZTRlyDQs9GA0YPQv9C4INGDINGB0LLQvtGX0YUg0L7RgdC+0LHQuNGB0YLQuNGFINC90LDQu9Cw0YjRgtGD0LLQsNC90L3Rj9GFLCDQsNC70LUg0LTQvtC30LLQvtC70LjRgtGMINCw0LTQvNGW0L3RltGB0YLRgNCw0YLQvtGA0LDQvCDRgNC10LTQsNCz0YPQstCw0YLQuCDQvdCw0LvQsNGI0YLRg9Cy0LDQvdC90Y8g0LLRltC0INGW0LzQtdC90ZYg0ZbQvdGI0L7Qs9C+INC60L7RgNC40YHRgtGD0LLQsNGH0LAuINCS0LjQutC+0YDQuNGB0YLQvtCy0YPQudGC0LUgIlByZWZlcmVuY2VHcm91cCIsINGJ0L7QsSDQutC+0L3RgtGA0L7Qu9GO0LLQsNGC0LgsINCyINGP0LrRltC5INC+0LHQu9Cw0YHRgtGWINC60L7RgNC40YHRgtGD0LLQsNGG0YzQutC+0LPQviDRltC90YLQtdGA0YTQtdC50YHRgyDQstGW0LTQvtCx0YDQsNC20LDRgtC4INGG0ZYg0L3QsNC70LDRiNGC0YPQstCw0L3QvdGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC00LvRjyDRgdGC0LDQvdGW0LIg0YDQvtC30LPQvtGA0YLQsNC90L3RjyDQv9C+0LfQvdCw0YfQsNGO0YLRjNGB0Y8g0LrQvtC70YzQvtGA0L7QvCDRgyDQstGW0LrQvdGWINC90LDQu9Cw0YjRgtGD0LLQsNC90Ywg0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQtNC70Y8g0YHRgtCw0L3RltCyINGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8g0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC00LvRjyDQv9GA0LjQutC70LDQtNGDINC00L7Qt9Cy0L7Qu9GDINCz0YDRg9C/INC30LDQs9Cw0LvRjNC90LjRhSDQsNGC0YDQuNCx0YPRgtGW0LIg0LrQsNGC0LDQu9C+0LPRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LzQvtC00YPQu9GPINGW0LzQtdC9INC00LvRjyDQutC70LDRgdGW0LIg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDQstGW0LrQvdGWINC90LDQu9Cw0YjRgtGD0LLQsNC90Ywg0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC80L7QtNGD0LvRjyDRh9C40YHQu9CwINC00LvRjyDQutC70LDRgdGW0LIg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDQstGW0LrQvdGWINC90LDQu9Cw0YjRgtGD0LLQsNC90Ywg0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LTQu9GPINGB0YLQvtGA0ZbQvdC+0LogKNC90LAg0Y/QutC40YUg0LLRltC00L7QsdGA0LDQttCw0Y7RgtGM0YHRjyDQtdC70LXQvNC10L3RgtC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQtNC70Y8g0LzQvtC00YPQu9GPINGA0Y/QtNC60LAg0LLQtdGA0YHRltGXINC00LvRjyDQutC70LDRgdGW0LIg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDQstGW0LrQvdGWINC90LDQu9Cw0YjRgtGD0LLQsNC90Ywg0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQtNC70Y8g0LzQvtC00YPQu9GPINGI0LDQsdC70L7QvdGDINGA0Y/QtNC60LAg0LLQtdGA0YHRltGXINGW0L3RgdGC0YDRg9C80LXQvdGC0LDRgNGW0Y4g0LTQu9GPINC60LvQsNGB0ZbQsiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINC/0L7QtNCw0L3QvdGWINC90LDQu9Cw0YjRgtGD0LLQsNC90Ywg0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LTQu9GPINGC0YDQuNCz0LXRgNCwINCy0LXRgNGB0ZbRlyDQtNC70Y8g0LrQu9Cw0YHRltCyINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICfQktC40LrQvtC90YPRlCDQvdCw0LvQsNGI0YLQvtCy0LDQvdGDINC00ZbRjiDQtNC70Y8g0LrQvtC20L3QvtGXINC/0L7QtNGW0ZcgKNGP0Log0ZbQvdCy0L7QutC10YApINC00LvRjyDQutC+0LbQvdC+0LPQviDQvdCw0LvQsNGI0YLQvtCy0LDQvdC+0LPQviDQstC10LHRgdC10YDQstGW0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ9CT0YDRg9C/0LAg0LTQvtC30LLQvtC70ZbQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtNGW0Zcg0L/RgNC40LrRgNGW0L/Qu9C10L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8g0LXQutGA0LDQvdCwINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8g0LXQutGA0LDQvdCwINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINC60LvRltGU0L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQv9C10YDQtdCz0LvRj9C00YMg0LTQtdGA0LXQstCwINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQvNCw0YHRiNGC0LDQsdGD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQtNC+0LTQsNCy0LDQvdC90Y8g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQvNCw0YHQvtCy0LjRhSDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0YDQtdC00LDQs9GD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRltGB0YLQvtGA0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQtNGA0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfQndC10L7QsdGF0ZbQtNC90ZYg0L/RgNC40LLRltC70LXRlyDQtNC70Y8g0LLQuNC00LDQu9C10L3QvdGPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAn0J/QvtGI0YPQuiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAn0JDQstGC0L7QvNCw0YLQuNGH0L3QviDQstGB0YLQsNC90L7QstC70Y7QstCw0YLQuCDRgdGC0LDQvSDRltC90YbQuNC00LXQvdGC0YMg0LTQu9GPINCa0IYsINC60L7Qu9C4INCi0ZbQutC10YIg0L/RgNC40LJcJ9GP0LfQsNC90LjQuSDQtNC+INCa0IYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLRgdGC0LDQvdC+0LLQu9GO0ZQg0YHRgtCw0L0g0YDQvtC30LPQvtGA0YLQsNC90L3RjyDQvdCwINC+0YHQvdC+0LLQvdC+0LzRgyDQtdC60YDQsNC90ZYg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktGB0YLQsNC90L7QstC70Y7RlCDRgdGC0LDQvSDRltC90YbQuNC00LXQvdGC0YMg0L3QsCDQvtGB0L3QvtCy0L3QvtC80YMg0LXQutGA0LDQvdGWINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4sINGP0LrQtSDQtNC+0LfQstC+0LvRj9GUINC30LJcJ9GP0LfQsNGC0Lgg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC3INGW0L3RiNC40Lwg0L7QsVwn0ZTQutGC0L7QvCDRgyDQstGW0LrQvdGWINC80LDRgdGI0YLQsNCx0YPQstCw0L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4g0LTQu9GPINC00L7RgdGC0YPQv9GDINC00L4g0ZbRgdGC0L7RgNGW0Zcg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0L7Qs9C70Y/QtNGWINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4g0LTQu9GPINC00L7RgdGC0YPQv9GDINC00L4g0ZbRgdGC0L7RgNGW0Zcg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLRltC60L3RliDQvNCw0YHRiNGC0LDQsdGD0LLQsNC90L3RjyDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQstC40LTQsNC70LXQvdC90Y8g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LfQsdGW0LvRjNGI0LXQvdC+0LzRgyDQstC40LPQu9GP0LTRliDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4g0LTQu9GPINCy0ZbQtNC+0LHRgNCw0LbQtdC90L3RjyDQv9C+0YHQuNC70LDQvdGMINC90LAg0LXQu9C10LzQtdC90YLQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLQuNCz0LvRj9C00ZYg0LTQtdGA0LXQstCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC/0L7RgdC40LvQsNC90L3RjyDQsiDQvNC10L3RjiDQtNC70Y8g0LTRg9Cx0LvRjtCy0LDQvdC90Y8g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0L7Qs9C70Y/QtNGWINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4g0LTQu9GPINC00YPQsdC70Y7QstCw0L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINC50L7Qs9C+INC30LHRltC70YzRiNC10L3QvtC80YMg0LLQuNCz0LvRj9C00ZYg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDRgNC10LTQsNCz0YPQstCw0L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINCy0ZbQutC90ZYg0LzQsNGB0YjRgtCw0LHRg9Cy0LDQvdC90Y8g0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQv9C+0LLQtdGA0L3QtdC90L3RjyDQtNC+INC/0YPQvdC60YLRgyDQvdCw0LvQsNGI0YLRg9Cy0LDQvdC90Y8g0LzQsNGB0YjRgtCw0LHRg9Cy0LDQvdC90Y8g0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC/0L7RgdC40LvQsNC90L3RjyDQsiDQvNC10L3RjiDQtNC70Y8g0LTRgNGD0LrRgyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDQt9Cx0ZbQu9GM0YjQtdC90L7QvNGDINCy0LjQs9C70Y/QtNGWINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4g0LTQu9GPINC30LHRltC70YzRiNC10L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINGW0YHRgtC+0YDRltGOINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgKNGDINC30LLQvtGA0L7RgtC90L7QvNGDINC/0L7RgNGP0LTQutGDKSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ9Ca0LDRgtC10LPQvtGA0ZbRjyDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8LCDRj9C60LAg0LLRltC00L7QsdGA0LDQttCw0ZTRgtGM0YHRjywg0Y/QutGJ0L4g0L3QtSDQstC40LHRgNCw0L3QviDQttC+0LTQvdC+0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfQhtC00LXQvdGC0LjRhNGW0LrQsNGC0L7RgCDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlywg0L3QsNC/0YDQuNC60LvQsNC0LCBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4g0JfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDRhtC1IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ9CQ0LLRgtC+0LzQsNGC0LjRh9C90L4g0LfQsNC/0YPRgdC60LDRlCDQstC40LrQu9C40YfQvdC40LogQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAn0JLQuNGA0LDQtyDRgNGP0LTQutCwINCy0LXRgNGB0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICfQnNC+0LTRg9C70Ywg0YDRj9C00LrQsCDQstC10YDRgdGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAn0KLRgNC40LPQtdGAINCy0LXRgNGB0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAn0KfQuCDQvNC+0LbQvdCwINGD0L3QuNC60L3Rg9GC0Lgg0LLQuNC60L7QvdCw0L3QvdGPIENvbmZpZ0l0ZW1BQ0wg0YjQu9GP0YXQvtC8INC/0LXRgNC10LLRltGA0LrQuCDQutC10YjQvtCy0LDQvdC40YUg0LfQsNC70LXQttC90L7RgdGC0LXQuSDQv9C+0LvRltCyLiDQptC1INC80L7QttC1INC/0L7QutGA0LDRidC40YLQuCDRh9Cw0YEg0LfQsNCy0LDQvdGC0LDQttC10L3QvdGPINGE0L7RgNC80YPQuywg0LDQu9C1INC50L7Qs9C+INGB0LvRltC0INCy0LjQvNC60L3Rg9GC0LgsINGP0LrRidC+IEFDTE0t0LzQvtC00YPQu9GWINCx0YPQtNC1INCy0LjQutC+0YDQuNGB0YLQsNC90L4g0LTQu9GPIElUU01Db25maWdJdGVtLSDRliBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAn0K/QutCwINC30LDQs9Cw0LvRjNC90LAg0ZbQvdGE0L7RgNC80LDRhtGW0Y8g0LLRltC00L7QsdGA0LDQttCw0ZTRgtGM0YHRjyDQsiDQt9Cw0LPQvtC70L7QstC60YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn0LrQu9Cw0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn0LPQu9C+0LHQsNC70YzQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICfQv9C+0YHRgtC/0YDQvtC00YPQutGC0LjQstC90LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAn0L/RgNC10L/RgNC+0LTRg9C60YLQuNCy0L3QuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICfQv9GA0L7QtNGD0LrRgtC40LLQvdC40LknOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUg0LTRjtC50LzRltCyICg0NCw0NSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSDQtNGO0LnQvCAoNTMsMzQg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUg0LTRjtC50LzQsCAoNjYsNjgg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1INC00Y7QudC80LAgKDgwLDAxINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LdC00Y7QudC80L7QstCwINGB0YLRltC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEsNzUg0LTRjtC50LzQsCAoNCw0NSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1INC00Y7QudC80ZbQsiAoODgsOSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS3QtNGO0LnQvNC+0LLQsCDRgdGC0ZbQudC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1INC00Y7QudC80ZbQsiAoOTcsNzkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMt0LTRjtC50LzQvtCy0LAg0YHRgtGW0LnQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiDQtNGO0LnQvNCwICg2MDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyINC00Y7QudC80LggKDEwNiw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUg0LTRjtC50LzRltCyICgxMjAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSDQtNGO0LnQvNCwICg4LDg5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUg0LTRjtC50LzQsCAoMTMzLDM1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSDQtNGO0LnQvNCwICg4MDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1INC00Y7QudC80ZbQsiAoMTQ2LDY4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCDQtNGO0LnQvNCwICg5MDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzINC00Y7QudC80LggKDE2MCwwMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0INC00Y7QudC80LAgKDEwMDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1INC00Y7QudC80ZbQsiAoMTczLDM1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUg0LTRjtC50LzQsCAoMTMsMzQg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSDQtNGO0LnQvNCwICgxODYsNjkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMg0LTRjtC50LzQsCAoMTEwMCDQvNC8KTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1INC00Y7QudC80ZbQsiAoMjAwLDAyINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIg0LTRjtC50LzQsCAoMTIwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQg0LTRjtC50LzQuCAoMjEzLDM2INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcg0LTRjtC50LzRltCyICgxNyw3OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1INC00Y7QudC80LAgKDIyLDIzINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLDUg0LTRjtC50LzRltCyICgyNiw2NyDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUg0LTRjtC50LzQsCAoMzEsMTIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0INC00Y7QudC80ZbQsiAoMzUsNTYg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1INC00Y7QudC80LAgKDQwLDAxINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAn0JHRg9GF0LPQsNC70YLQtdGA0YHRjNC60LjQuSDQvtCx0LvRltC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAn0J/RgNC40YHQstC+0ZTQvdC90Y8g0LDQtNGA0LXRgdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfQkNC00LzRltC90ZbRgdGC0YDQsNGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICfQkNC90LDQu9C+0LPQvtCy0LjQuSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ9Ci0LjQvyDQv9GA0LjQu9Cw0LTRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ9CE0LzQvdGW0YHRgtGMINCw0LrRg9C80YPQu9GP0YLQvtGA0LAgKNCQ0YcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ9Ci0LjQvyDQsdCw0YLQsNGA0LXRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ9Cx0YPQtNC40L3QvtC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfQhtC90YLQtdGA0YTQtdC50YEg0YjQuNC90LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ9Cf0KDQntCm0JXQodCe0KAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAn0JrQu9Cw0YEg0L/RgNC+0YbQtdGB0L7RgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICfQhNC80L3RltGB0YLRjCAo0JPQkSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICfQn9C+0YLRg9C20L3RltGB0YLRjCDQvdCwINC+0LTQvdGDINCy0ZbQtNC10L7QutCw0YDRgtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQutCw0YDRgtC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICfQl9GH0LjRgtGD0LLQsNGHINC60LDRgNGC0L7Quic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICfQotC40L8g0LrQsNGA0YLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICfQmtC70ZbRlNC90YLRgdGM0LrRliDRgdC10YDRgtC40YTRltC60LDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ9Ca0LvRltGU0L3RgtGB0YzQutC1INC/0YDQvtCz0YDQsNC80L3QtSDQt9Cw0LHQtdC30L/QtdGH0LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAn0JrQsNGC0LXQs9C+0YDRltGPINC60LvRltGU0L3RgtGW0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAn0KLQsNC60YLQvtCy0LAg0YfQsNGB0YLQvtGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ9Ci0LDQutGC0L7QstCwINGH0LDRgdGC0L7RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfQodC10YDRgtC40YTRltC60LDRgtC4INC60L7QtNC+0LLQvtCz0L4g0L/RltC00L/QuNGB0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ9Ca0L7QvdGE0LXRgNC10L3Rhi3RgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLRltGAINC/0YDQviDQvdCw0LTQsNC90L3RjyDQutC+0L3RgdGD0LvRjNGC0LDRhtGW0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ9Ca0L7QvdGC0LDQutGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ9CX0LJcJ9GP0LfQsNGC0LjRgdGPINC3INC00LjRgdGC0YDQuNCxXCfRjtGC0L7RgNC+0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICfQo9C/0YDQsNCy0LvRltC90L3RjyDQutC+0L3RgtC10LnQvdC10YDQsNC80LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICfQmtC+0L3RgtGA0LDQutGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICfQotC40L8g0LrQvtC90YLRgNCw0LrRgtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAn0J/QtdGA0ZbQvtC0INC00ZbRlyDQutC+0L3RgtGA0LDQutGC0YMg0LLRltC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ9Ci0LXRgNC80ZbQvSDQtNGW0Zcg0LrQvtC90YLRgNCw0LrRgtGDINC00L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAn0JHQtdC30LTRgNC+0YLQvtCy0LjQuSDRgtC10LvQtdGE0L7QvSAoREVDVC3RgtC10LvQtdGE0L7QvSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAn0J7QtNC40L3QuNGG0Y8g0LLQuNC80ZbRgNGDINCy0LjRgtGA0LDRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ9Ca0ZbQu9GM0LrRltGB0YLRjCDQu9GW0YbQtdC90LfRltC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICfQlNCw0YLQsCDRgdGC0LLQvtGA0LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ9Ch0L/QtdGG0ZbQsNC70YzQvdC40Lkg0YHRgtC10LvQsNC2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQINC30LDRgNC10LfQtdGA0LLQvtCy0LDQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMt0YHQtdGA0LLQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICfQlNCw0YLQsCDRltC90LLQvtC50YHRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAn0JTQsNGC0LAg0LfQsNC80L7QstC70LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ9CU0LDRgtCwINC/0L7Rh9Cw0YLQutGDINC00ZbRlyDQs9Cw0YDQsNC90YLRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ9CU0LDRgtCwINCy0LjQv9GD0YHQutGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfQoNC+0LHQvtGH0LjQuSDRgdGC0ZbQuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn0KHQtdGA0YLQuNGE0ZbQutCw0YLQuCDQv9GW0LTQv9C40YHQsNC90L3RjyDQtNC+0LrRg9C80LXQvdGC0ZbQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kgUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAn0KHQtdGA0YLQuNGE0ZbQutCw0YLQuCDQtdC70LXQutGC0YDQvtC90L3QvtGXINC/0L7RiNGC0LggKFMvTUlNRSDRgdC10YDRgtC40YTRltC60LDRgtC4KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICfQotGA0YPQtNC+0LLQuNC5INC00L7Qs9C+0LLRltGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAn0JrRltC90YbQtdCy0LAgSVAt0LDQtNGA0LXRgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAn0JrRltC90LXRhtGMINC/0ZbQtNGC0YDQuNC80LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ9Ci0LXRgNC80ZbQvSDQv9GA0LjQtNCw0YLQvdC+0YHRgtGWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICfQl9C+0LLQvdGW0YjQvdGW0Lkg0LbQvtGA0YHRgtC60LjQuSDQtNC40YHQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ9CR0YDQsNC90LTQvNCw0YPQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAn0J/RgNC+0YjQuNCy0LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ9Cd0LDQutC+0L/QuNGH0YPQstCw0Ycg0LXQvdC10YDQs9GW0Zcg0LzQsNGF0L7QstC40LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ9Ck0L7RgNC8LdGE0LDQutGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAn0JTQvtCz0L7QstGW0YAg0YTRgNCw0L3Rh9Cw0LnQt9C40L3Qs9GDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn0JHQtdC30LrQvtGI0YLQvtCy0L3QtSDQv9GA0L7Qs9GA0LDQvNC90LUg0LfQsNCx0LXQt9C/0LXRh9C10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ9CX0LDQs9Cw0LvRjNC90LAg0ZbQvdGE0L7RgNC80LDRhtGW0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICfQktGW0LTQtdC+0LrQsNGA0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAn0JLRltC00LXQvtC60LDRgNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICfQkNC/0LDRgNCw0YLQvdC1INC30LDQsdC10LfQv9C10YfQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ9Cc0L7QtNC10LvRjCDQvtCx0LvQsNC00L3QsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICfQktCw0LPQsCDQvtCx0LvQsNC00L3QsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAn0JPQsNGA0L3RltGC0YPRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAn0J/RgNC+0YLQvtC60L7QuyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICfQo9C/0YDQsNCy0LvRltC90L3RjyDRltC00LXQvdGC0LjRhNGW0LrQsNGG0ZbRlNGOINGC0LAg0LTQvtGB0YLRg9C/0L7QvCAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAn0IbQvdCy0LXQvdGC0LDRgNC90LjQuSDQvdC+0LzQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAn0IbQvdCy0LXRgdGC0LjRhtGW0LnQvdGWINCy0LjRgtGA0LDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDRgNCw0YXRg9C90LrRgy3RhNCw0LrRgtGD0YDQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ9Ca0LvQsNCy0ZbQsNGC0YPRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ9Cg0Jot0LzQvtC90ZbRgtC+0YAgKNGA0ZbQtNC60L7QutGA0LjRgdGC0LDQu9GW0YfQvdC40Lkg0LTQuNGB0L/Qu9C10LkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICfQodCy0ZbRgtC70L7QtNGW0L7QtNC90LjQuSDQvNC+0L3RltGC0L7RgCAo0YHQstGW0YLQu9C+0LTRltC+0LTQuCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAn0KHRgtCw0YbRltC+0L3QsNGA0L3QuNC5INGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ9Cd0L7Rg9GC0LHRg9C6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAn0KjQuNGA0L7RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAn0KDRltCy0LXQvdGMIDE6INCk0ZbQt9C40YfQvdC40Lkg0YDRltCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ9Cg0ZbQstC10L3RjCAyOiDQmtCw0L3QsNC70YzQvdC40Lkg0YDRltCy0LXQvdGMINC/0LXRgNC10LTQsNGH0ZYg0LTQsNC90LjRhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAn0KDRltCy0LXQvdGMIDM6INCc0LXRgNC10LbQtdCy0LjQuSDRgNGW0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAn0KDRltCy0LXQvdGMIDM6INCc0LXRgNC10LbQtdCy0LjQuSDRgNGW0LLQtdC90YwgKNGB0YPQv9C10YDQvNC10YDQtdC20LApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ9Cg0ZbQstC10L3RjCA0OiDQotGA0LDQvdGB0L/QvtGA0YLQvdC40Lkg0YDRltCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICfQoNGW0LLQtdC90YwgNTog0KDRltCy0LXQvdGMINGB0LXQsNC90YHRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICfQoNGW0LLQtdC90YwgNjog0KDRltCy0LXQvdGMINC/0YDQtdC30LXQvdGC0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICfQoNGW0LLQtdC90YwgNzog0L/RgNC40LrQu9Cw0LTQvdC40Lkg0YDRltCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLRltGAINC+0YDQtdC90LTQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ9Cb0ZbRhtC10L3Qt9GW0LnQvdCwINGD0LPQvtC00LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ9Cb0ZbRhtC10L3Qt9GW0LnQvdC40Lkg0LrQu9GO0YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAn0KLQuNC/INC70ZbRhtC10L3Qt9GW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ9Ci0LXRgNC80ZbQvSDQtNGW0Zcg0LvRltGG0LXQvdC30ZbRlyDQstGW0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICfQotC10YDQvNGW0L0g0LTRltGXINC70ZbRhtC10L3Qt9GW0Zcg0LTQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAn0JvRltGC0ZbQuS3Qt9Cw0LvRltC30L4t0YTQvtGB0YTQsNGC0L3QuNC5IChMaUZlUE80KSDQsNC60YPQvNGD0LvRj9GC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAn0JvRltGC0ZbQuS3RltC+0L3QvdC40LkgKExpLWlvbikg0LDQutGD0LzRg9C70Y/RgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICfQmtGA0LXQtNC40YLQvdC40Lkg0LTQvtCz0L7QstGW0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ9Cg0L7Qt9GC0LDRiNC+0LLQsNC90LjQuSDQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICfQlNC+0LLQs9C+0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ9CS0LjRgNC+0LHQvdC40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90LAg0L3QsNCy0LDQvdGC0LDQttGD0LLQsNC70YzQvdCwINC30LTQsNGC0L3RltGB0YLRjCAo0JLRgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAn0J/QsNC8XCfRj9GC0YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICfQotC40L8g0L/QsNC8XCfRj9GC0ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ9Cc0ZbQvdGWLdGB0YLQtdC70LDQtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQvNC+0LHRltC70YzQvdC+0LPQviDRgtC10LvQtdGE0L7QvdGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ9Cc0L7QsdGW0LvRjNC90LjQuS/QstCx0YPQtNC+0LLQsNC90LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ9Cc0L7QtNC10LvRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ9Ce0L/QuNGBINC80L7QtNC10LvRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICfQoNC+0LfQtNGW0LvRjNC90LAg0LfQtNCw0YLQvdGW0YHRgtGMINC80L7QvdGW0YLQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAn0KDQvtC30LzRltGAINC80L7QvdGW0YLQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfQnNC40YjQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ9Cc0LXRgNC10LbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICfQhtC90YTQvtGA0LzQsNGG0ZbRjyDQv9GA0L4g0LzQtdGA0LXQttGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICfQhtC90YTQvtGA0LzQsNGG0ZbRjyDQv9GA0L4g0LzQtdGA0LXQttGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICfQnNC10YDQtdC20LXQstC40Lkg0YDRltCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAn0J3RltC60LXQu9GMLdC60LDQtNC80ZbRlNCy0ZYgKE5pQ2QpINCw0LrRg9C80YPQu9GP0YLQvtGA0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICfQndGW0LrQtdC70Ywt0LzQtdGC0LDQuy3Qs9GW0LTRgNC40LTQvdC40LkgKE5pTUgpINCw0LrRg9C80YPQu9GP0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ9Cj0LPQvtC00LAg0L/RgNC+INC90LXRgNC+0LfQs9C+0LvQvtGI0LXQvdC90Y8gKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICfQkdC70L7QutC90L7Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ9Ca0ZbQu9GM0LrRltGB0YLRjCDQv9GA0L7RhtC10YHQvtGA0ZbQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICfQmtGW0LvRjNC60ZbRgdGC0Ywg0LzQvtC00YPQu9GW0LIg0L7Qv9C10YDQsNGC0LjQstC90L7RlyDQv9Cw0LxcJ9GP0YLRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICfQmtGW0LvRjNC60ZbRgdGC0Ywg0LLRltC00LXQvtC60LDRgNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVELdC80L7QvdGW0YLQvtGAICjQvtGA0LPQsNC90ZbRh9C90LjQuSDRgdCy0ZbRgtC70L7QtNGW0L7QtCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAn0J7Qv9C10YDQsNGG0ZbQudC90ZYg0LLQuNGC0YDQsNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQt9Cw0LzQvtCy0LvQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ9CG0L3RiNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfQoNC10LfRg9C70YzRgtCw0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICfQn9CG0J0t0JrQntCUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOLdCa0J7QlCAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ9CR0JvQrtCS0J7QotCQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAn0J/QsNGA0YLQvdC10YDRgdGM0LrQsCDRg9Cz0L7QtNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICfQotC40L8g0YLQtdC70LXRhNC+0L3Rgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ9Ck0ZbQt9C40YfQvdGWINGP0LTRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAn0J/QvtGB0YLQsNGH0LDQvdC90Y8g0LXQu9C10LrRgtGA0L7QtdC90LXRgNCz0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ9Cf0YDQuNC00LHQsNC90L4g0LfQsCDQsNC00YDQtdGB0L7Rjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAn0JPQu9C40LHQuNC90LAg0YHRgtGW0LnQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAn0KHRgtC10LvQsNC20L3RliDQsdC70L7QutC4IChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn0JrRltC80L3QsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0t0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNGW0LrQsNGC0LggU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ9CU0L7Qs9C+0LLRltGAINC60YPQv9GW0LLQu9GWLdC/0YDQvtC00LDQttGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ9Ch0YPQv9GD0YLQvdC40LrQvtCy0LjQuSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICfQk9C10YDQvNC10YLQuNGH0L3QuNC5INGB0LLQuNC90YbQtdCy0L4t0LrQuNGB0LvQvtGC0L3QuNC5IChTTEEpINCw0LrRg9C80YPQu9GP0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAn0KHQtdGA0ZbQudC90LjQuSDQvdC+0LzQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ9Ch0LXRgNCy0LXRgNC90LUg0L/RgNC+0LPRgNCw0LzQvdC1INC30LDQsdC10LfQv9C10YfQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLRltGAINC/0YDQviDQvdCw0LTQsNC90L3RjyDQv9C+0YHQu9GD0LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICfQodC10YDQstGW0YHQvdC40Lkg0YLQtdCzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ9Ci0LjQvyDRgNC+0LfQtdGC0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ9Cf0YDQvtCz0YDQsNC80L3QtSDQt9Cw0LHQtdC30L/QtdGH0LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICfQodC/0ZbQutC10YDQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfQodGC0LDQvdC00LDRgNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICfQn9C+0YfQsNGC0LrQvtCy0LAgSVAt0LDQtNGA0LXRgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICfQl9Cx0LXRgNGW0LPQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ9Cg0L7Qt9C00ZbQuyDQtNC70Y8g0LfQsdC10YDRltCz0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICfQlNC+0YfRltGA0L3RlCDQv9GW0LTQv9GA0LjRlNC80YHRgtCy0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ9Cf0ZbQtNGB0YPQvNC+0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICfQotC+0L3QutC40Lkg0LrQu9GW0ZTQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICfQndC40YLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAn0JHQu9C40YHQutCw0LLQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAn0JfQsNCz0LDQu9GM0L3QuNC5INC+0LHRgdGP0LMg0L7Qv9C10YDQsNGC0LjQstC90L7RlyDQv9Cw0LxcJ9GP0YLRliDQstGW0LTQtdC+0LrQsNGA0YLQuCAo0JPQkSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICfQl9Cw0LPQsNC70YzQvdCwINC+0L/QtdGA0LDRgtC40LLQvdCwINC/0LDQvFwn0Y/RgtGMICjQk9CRKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAn0KHQtdC90YHQvtGA0L3QuNC5INC80L7QvdGW0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAn0JLQtdC20LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQi3QutC+0L3RhtC10L3RgtGA0LDRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUi3Qs9Cw0YDQvdGW0YLRg9GA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUC3RgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAn0JLQtdCxLdC60LDQvNC10YDQsCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FkZCBhbGwnLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0FuIGl0ZW0gd2l0aCB0aGlzIG5hbWUgaXMgYWxyZWFkeSBwcmVzZW50LicsCiAgICAnQ2FuY2VsJywKICAgICdDb25maXJtJywKICAgICdEZWxldGUnLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</File>
        <File Location="Kernel/Language/vi_VN_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnZpX1ZOX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBSb2xlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdUcuG6oW5nIHRow6FpIHPhu7EgY+G7kSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdC4bqhbiBjw7MgdGjhuq10IHPhu7EgbXXhu5FuIHhvw6EgxJHDoXAgw6FuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUcuG6oW5nIHRow6FpIHRyaeG7g24ga2hhaSBj4bunYSDEkeG7kWkgdMaw4bujbmcgbsOgeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUcuG6oW5nIHRow6FpIHRyaeG7g24ga2hhaSBj4bunYSDEkeG7kWkgdMaw4bujbmcgbsOgeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnVHLhuqFuZyB0aMOhaSBz4buxIGPhu5EnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ1ThuqFvIGzhuqduIGPhuq1wIG5o4bqtdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0PhuqV1IGgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnVHLhuqFuZyB0aMOhaSBz4buxIGPhu5EgaGnhu4duIHRo4budaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdUaGF5IMSR4buVaSBs4bqnbiBjdeG7kWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnVGhheSDEkeG7lWkgbOG6p24gY3Xhu5FpJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5BQ0wKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBUeXBlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkR5bmFtaWNGaWVsZFNjcmVlbgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGJ5IG9iamVjdCB0eXBlJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdUaGFtIGNoaeG6v3UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdIb+G6oXQgxJHhu5luZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnQ+G6o25oIGLDoW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1Ry4bqhbmcgdGjDoWkgdHJp4buDbiBraGFpIGPhu6dhIMSR4buRaSB0xrDhu6NuZyBuw6B5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVHLhuqFuZyB0aMOhaSB0cmnhu4NuIGtoYWkgY+G7p2EgxJHhu5FpIHTGsOG7o25nIG7DoHknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdLaMO0bmcgY8OzIHF1eeG7gW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUcuG6oW5nIHRow6FpIHPhu7EgY+G7kSBoaeG7h24gdGjhu51pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0dp4buvYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnxJDDoyBo4bq/dCBo4bqhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0LhuqNvIHRyw6wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1RoZW8ga+G6vyBob+G6oWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1Phu61hIGNo4buvYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnS2jDtG5nIHPhu60gZOG7pW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Ro4bqpbSDEkeG7i25oJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdLaeG7g20gdHJhL0jhu49pIMSRw6FwJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnQ+G6pXUgaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnxJDhu4tuaCBuZ2jEqWEgbeG7mXQgbcO0LcSRdW4gdOG7lW5nIHF1w6F0IMSR4buDIGhp4buDbiB0aOG7iyBt4buZdCBkYW5oIHPDoWNoIGto4bqjbyBzw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdD4bqldSBoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdOaMOibiDEkcO0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnVHLhuqFuZyB0aMOhaSBz4buxIGPhu5EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ1Ry4bqhbmcgdGjDoWkgc+G7sSBj4buRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Thu5VuZyBxdWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdUaGFtIHPhu5EgY2hvIG5ow7NtIGPhuqVwIHBow6lwIGPhu6dhIHRodeG7mWMgdMOtbmggZGFuaCBt4bulYyBjaHVuZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHPhu61hIGto4bqjbyBzw6F0IHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHPhu61hIGto4bqjbyBzw6F0IHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHPhu61hIGto4bqjbyBzw6F0IHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHPhu61hIGto4bqjbyBzw6F0IHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0hp4buDbiB0aOG7iyBsacOqbiBr4bq/dCB0cm9uZyB0csOsbmggxJHGoW4gxJHhu4MgcXVheSBs4bqhaSB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnUXXhuqNuIGzDvSB0aOG7nWkgZ2lhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdUb8OgIG5ow6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0dpYW8gZGnhu4duJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdNw6F5IMSR4buDIGLDoG4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnUGjhuqduIG3hu4FtIG1p4buFbiBwaMOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdCw6BuIHBow61tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdNw6F5IHjDoWNoIHRheSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnQ2jhu6duZyBsb+G6oWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ0NodeG7mXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0tow6FjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdL4bq/dCBxdeG6oyB04burJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUGjDsm5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnVGhv4bqjIHRodeG6rW4gTeG7qWMgxJHhu5kgROG7i2NoIHbhu6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1Rpw6p1IGNodeG6qW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQWRkIGFsbCcsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJywKICAgICdDYW5jZWwnLAogICAgJ0NvbmZpcm0nLAogICAgJ0RlbGV0ZScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoaXMgaXRlbSBzdGlsbCBjb250YWlucyBzdWIgaXRlbXMuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtIGluY2x1ZGluZyBpdHMgc3ViIGl0ZW1zPycsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/zh_CN_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX0NOX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfkuIDoiKzov5DooYzmlbDmja4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ+aOpeaUtuivt+axguaVsOaNrueahOiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ+WkluWPkeWTjeW6lOaVsOaNrueahOiuvue9ric7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ+euoeeQhumFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+S/ruaUueexu+WumuS5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn5pu05pS56KeS6Imy5a6a5LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0IOexu+WMhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+WcqOi/memHjO+8jOaCqOWPr+S7peWvvOWFpSBSZWFkeTJJbXBvcnQg57G75o2G57uR5YyF77yM5YW25Lit5bGV56S65LqG5oiR5Lus5pyA5bi455So55qE6YWN572u6aG544CC6K+35rOo5oSP77yM5Y+v6IO96ZyA6KaB5LiA5Lqb6aKd5aSW55qE6YWN572u44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ+abtOaWsOeOsOacieWunuS9kyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ+WvvOWFpSBSZWFkeTJBZG9wdCDnsbvmjYbnu5HljIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfphY3nva7pobnnsbsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ+mFjee9rumhueS9nOeUqCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn57G76L+H5ruk5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+WFiOS7juWIl+ihqOS4remAieaLqeexu++8jOeEtuWQjuWIm+W7uuaWsOeahOmFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ+exuyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00g6YWN572u6aG5IOaJuemHj+aTjeS9nCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn6YOo572y54q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn5LqL5Lu254q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ+mTvuaOpeWIsOWFtuS7lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn5peg5pWI55qE6YWN572u6aG557yW5Y+377yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ+WwhuimgemTvuaOpeeahOWPpuWkluS4gOS4qumFjee9rumhuee8luWPt+OAgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ+S9oOecn+eahOaDs+imgeWIoOmZpOi/meS4qumFjee9rumhueWQlz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn5Li66L+Z5Liq6YWN572u6aG55ZG95ZCNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfnvJblj7fkuLoocyk6JXPnmoTphY3nva7pobnlt7Lnu4/kvb/nlKjkuobmraTlkI3lrZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfniYjmnKzlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+ivpemFjee9rumhueeahOeJiOacrOWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+eJiOacrOWPt+W3suiiq+mFjee9rumhueS9v+eUqO+8jOWFtue8luWPt+WmguS4i++8miVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfpg6jnvbLnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICfmlYXpmpznirbmgIEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ+mFjee9rumhue+8miVzIOeahOWOhuWPsuS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfljoblj7LlgLwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+WIm+W7uuaXtumXtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfor6bmg4Xop4blm74nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAn5q+P6aG16YWN572u6aG55Liq5pWwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfmnKrmib7liLDphY3nva7pobnmlbDmja7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfpgInmi6nor6XphY3nva7pobknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfmkJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn5ZCM5pe25pCc57Si5Lul5YmN55qE54mI5pys5ZCXPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ+mFjee9rumhueagkeW9ouinhuWbvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ+a3seW6puetiee6pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ+aUvuWkpy/nvKnlsI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQ29uZmlnSXRlbSDlt7Lovr7liLDmnIDlpKfpk77mjqXnuqfliKvvvIEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAn6YWN572u6aG55L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ+W9k+WJjeeahOmDqOe9sueKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn5b2T5YmN55qE5pWF6Zqc54q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ+acgOWQjuS/ruaUuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfmnIDlkI7kv67mlLnkuronOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICfmgqjnmoTphY3nva7pobknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAn6YWN572u6aG55pCc57SiJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICflr7nosaHnsbvlnosnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICfmjInnsbvlnovov4fmu6QnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICflsIblr7zlhaXku6XkuIvnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn5bCG5a+85YWl5Lul5LiL6KeS6ImyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ+ivt+azqOaEj++8jOS5n+S8muWIm+W7uuebuOW6lOeahOWKqOaAgeWtl+auteWSjCBHZW5lcmFsQ2F0YWxvZyDnsbvvvIzogIzkuJTkuI3kvJroh6rliqjliKDpmaTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfmgqjopoHnu6fnu63ov5vooYzlkJfvvJ8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAn6ZyA6KaB56S65L6L57G777yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ+WumuS5ieayoeacieacieaViOeahCBZQU1MIOWTiOW4jOWAvOOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU03phY3nva7pobnmpoLop4gnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ5oyH5a6a6YWN572u6aG5SUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfmgqjoh7PlsJHpnIDopoHkuIDkuKrpgInlrprnmoTphY3nva7pobnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICfkvaDmsqHmnInmraTphY3nva7pobnnmoTlhpnmnYPpmZDvvJolc+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICfmsqHmnInnsbsgJXPnmoTlrprkuYnvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ+WcqOaVsOaNruW6k+S4reaJvuS4jeWIsOmFjee9rumhueKAnCVz4oCd77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn5peg5rOV5Yig6Zmk6YWN572u6aG5SUQgJXPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ+aJvuS4jeWIsOmFjee9rumhuUlEJXPnmoTniYjmnKzvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ5oyH5a6a6YWN572u6aG5SUTjgIFEdXBsaWNhdGVJROaIlkNsYXNzSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ+ayoeacieiuv+mXruadg+mZkO+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfkuI3og73mmL7npLrljoblj7Lkv6Hmga/vvIzlm6DkuLrmsqHmnInmjIflrprphY3nva7poblJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+aXoOazleaYvuekuuWOhuWPsuiusOW9le+8jOWboOS4uuayoeacieiuv+mXruadg+mZkO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAn5paw5bu66YWN572u6aG577yISUQ9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ+aWsOW7uueJiOacrO+8iElEPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn6YOo572y54q25oCB5bey5pu05paw77yI5pawPSVz77yM5penPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ+aVhemanOeKtuaAgeW3suabtOaWsO+8iOaWsD0lc++8jOaXpz0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ+mFjee9rumhue+8iElEPSVz77yJ5bey5Yig6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAn5YiwJXPpk77mjqXnmoTvvIjnsbvlnos9JXPvvInlt7Lmt7vliqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ+WIsCVz6ZO+5o6l55qE77yI57G75Z6LPSVz77yJ5bey5Yig6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICfphY3nva7pobnlrprkuYnlt7Lmm7TmlrDvvIhJRD0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ+WQjeensOW3suabtOaWsO+8iOaWsD0lc++8jOaXpz0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ+WxnuaApyVz5bey5LuO4oCcJXPigJ3mm7TmlrDkuLrigJwlc+KAnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICfniYjmnKwlcyDlt7LliKDpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ5oyH5a6a6YWN572u6aG5SUTmiJbniYjmnKxJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfml6Dms5XmmL7npLrphY3nva7pobnvvIzlm6DkuLrmsqHmnInorr/pl67mnYPpmZDvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICflnKjmlbDmja7lupPkuK3mib7kuI3liLDphY3nva7poblJRCAlc++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfmiZPljbDkurrvvJolcyDvvIzmiZPljbDml6XmnJ/vvJolcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnQUNM6K6+572u5Y+C6ICDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAn5peg5pWI55qE57G7SUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfmsqHmnInmjIflrprnsbtJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ+ayoeaciei/meS4quaMh+Wumuexu+eahOiuv+mXruadg+mZkO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn5peg57uT5p6c77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAn6YWN572u6aG55pCc57Si57uT5p6cJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICfml6Dms5XmmL7npLrphY3nva7pobnvvIzlm6DkuLrmsqHmnInnu5nlrprphY3nva7pobnnmoTorr/pl67mnYPpmZDvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAn5pyq5om+5Yiw6YWN572u6aG577yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ+acquaJvuWIsOS7u+S9leeJiOacrO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ+ato+W4uCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAn6K2m5ZGKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAn5pWF6ZqcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfphY3nva7pobnpg6jnvbLnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfphY3nva7pobnmlYXpmpznirbmgIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfmsqHmnInmnYPpmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAn6L+H5ruk5Zmo5peg5pWI77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICfmkJzntKLlj4LmlbDml6DmlYjvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICflt7LmmL7npLrnmoTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn6YOo572y54q25oCB57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ+W9k+WJjeeahOaVhemanOeKtuaAgeexu+Weiyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfml7bpl7TljLrpl7QnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ+mFjee9rumhueeahOexu+WIq+mZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn6YCJ5oup5LiA5Liq5oiW5aSa5Liq57G75Yir5p2l6ZmQ5Yi25Y+v6YCJ5oup55qE6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfphY3nva7pobnnmoTnsbvliKvpmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfpgInmi6nkuIDkuKrmiJblpJrkuKrnsbvliKvmnaXpmZDliLblj6/pgInmi6nnmoTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICfliqjmgIHvvIhDb25maWdJdGVt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICfpnZnmgIHvvIjniYjmnKzvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAn6ZO+5o6l5byV55So57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ+atpOmTvuaOpemAgueUqOS6juW8leeUqOWvueixoeeahOmFjee9rumhuei/mOaYr+mdmeaAgeeJiOacrOOAguW9k+WJjeS6i+S7tueKtuaAgeiuoeeul+S7heWcqOWKqOaAgemTvuaOpeS4iuaJp+ihjOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ+mAieaLqeaQnOe0oumFjee9rumhueeahOWxnuaApyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ+WfuuehgOe7k+aehOaXoOaViOOAguivt+aPkOS+m+WMheWQqyBZQU1MIOagvOW8j+aVsOaNrueahOWTiOW4jOWAvOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ+W/hemhu+S7pSItLS0i5byA5aeLIFlBTUwg5a2X56ym5Liy44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ+aXoOazlea4hemZpOihqCBjb25maWdpdGVtX2xpbmvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ+acquaJvuWIsOebuOWFs+WKqOaAgeWtl+autSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ+aXoOazleaPkuWFpeihqCBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ+WQkeihqCBjb25maWdpdGVtX2xpbmsg5o+S5YWl5LqGIDAg5p2h6K6w5b2VJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ+WNleS4quWFg+e0oOeahOacgOWkp+aVsOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSknfSA9ICflr7zlhaUv5a+85Ye66ZmE5Lu277yI5L2c5Li65q+P6KGM55qE5pyA5ZCO5LiA5Liq5p2h55uu77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAn54mI5pys5a2X56ym5LiyJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ+WQjOatpeWumuS5ieaXtuWHuumUmeOAguivt+afpeeci+aXpeW/l+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ+aCqOeahCBJVFNNQ29uZmlnSXRlbSDlrprkuYnmnKrlkIzmraXjgILor7fpg6jnvbLmgqjnmoQgSVRTTUNvbmZpZ0l0ZW0g5Yqo5oCB5a2X5q615pu05pS544CCJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICflt7Lov4fmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfnu7TmiqQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICfor5XpqownOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ+W3suiuoeWIkic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfkv67lpI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ+aKpeW6nyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICflpI3lrqEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ+a1i+ivlS/lk4HotKjkv53or4EnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ+amgui/sOWSjOehruiupCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICflr7zlhaXnsbsv6KeS6Imy5Y+K5YW255u45YWz5a2X5q61JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAn57G75a+85YWl5pe25Y+R55Sf6ZSZ6K+v44CCJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSDpmpDol48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIOaYvuekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn5YWB6K645Zyo5Luj55CG55WM6Z2i55qE6YWN572u6aG55pCc57Si5Lit5L2/55So5omp5bGV5pCc57Si5p2h5Lu244CC5Yip55So6K+l5Yqf6IO977yM5oKo5Y+v5Lul5L2/55SoIigqa2V5MSomJiprZXkyKikgIuaIliIoKmtleTEqfHwqa2V5MiopICLnrYnmnaHku7bmkJzntKLphY3nva7pobnlkI3np7DjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn5YWB6K645Zyo5a6i5oi355WM6Z2i55qE6YWN572u6aG55pCc57Si5Lit5L2/55So5omp5bGV5pCc57Si5p2h5Lu244CC5Yip55So6K+l5Yqf6IO977yM5oKo5Y+v5Lul5L2/55SoIigqa2V5MSomJiprZXkyKikgIuaIliIoKmtleTEqfHwqa2V5MiopICLnrYnmnaHku7bmkJzntKLphY3nva7pobnlkI3np7DjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAn5bey5YiG6YWN55qE6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICflt7LliIbphY3nu5nlrqLmiLfljZXkvY3nmoTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICflt7LliIbphY3nu5nlrqLmiLfnlKjmiLfnmoTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNRELorr7nva4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ+ajgOafpeaYr+WQpuS4uuWUr+S4gOWQjeensOeahOiMg+WbtOaYr+S7heWcqFwnY2xhc3NcJ++8iOmFjee9rumhueexu++8ieWGhei/mOaYr1wnZ2xvYmFsXCco5YWo5bGAKe+8jOWwseaYr+WcqOafpeaJvumHjeWkjemFjee9rumhueWQjeensOaXtueahOiMg+WbtOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAn6YCJ5oup5LiA5Liq5qih5Z2X5p2l5omn6KGM5ZG95ZCN5pa55qGI44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICfpgInmi6nkuIDkuKrmqKHlnZfmnaXmiafooYzmlbDlrZfmlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAn6YCJ5oup5LiA5Liq5qih5Z2X5p2l5omn6KGM54mI5pys5a2X56ym5Liy5pa55qGI44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAn6YCJ5oup6Kem5Y+R5Yib5bu65paw54mI5pys55qE5bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ+mAieaLqeimgeWIhumFjee7meatpOmFjee9rumhueexu+WIq+eahOexu+WIq+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICfphY3nva7pobnmpoLop4jnmoTliJfphY3nva7pobnov4fmu6TlmajjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ+WPr+WcqOS7o+eQhueVjOmdoumFjee9rumhueamguiniOS4rei/h+a7pOeahOWIl+OAguazqOaEj++8muWPquWFgeiuuOS9v+eUqOmFjee9rumhueWxnuaAp+WSjOWKqOaAgeWtl+autSAoRHluYW1pY0ZpZWxkX05hbWVYKeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ+a3u+WKoOmFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ+e8lui+kemFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdoueUqOS6juiusOW9lemFjee9rumhueS6i+S7tuWIsOWOhuWPsueahOaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICfphY3nva7pobnkuovku7bmqKHlnZfvvIznlKjkuo7lsIbphY3nva7pobnmm7TmlrDkuLrlvZPliY3lrprkuYnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICfphY3nva7pobnljoblj7LjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAn5omT5Y2w6YWN572u6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAn6YWN572u6aG56K+m5oOF44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAn6YWN572u6aG55qCR5b2i6KeG5Zu+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ+mFjee9rumhueebrueJiOacrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfku6XkuIvnsbvliKvnmoTphY3nva7pobnlsIbkuI3kvJrlrZjlgqjlnKggRWxhc3RpY3NlYXJjaCDmnI3liqHlmajkuIrjgILopoHlsIbmraTlupTnlKjkuo7njrDmnInnmoQgQ0nvvIzlv4XpobvlnKjmm7TmlLnmraTpgInpobnlkI7pgJrov4fmjqfliLblj7Dov5DooYwgQ0kg6L+B56e744CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ+WFt+acieS7peS4i+mDqOe9sueKtuaAgeeahOmFjee9rumhueWwhuS4jeS8muWtmOWCqOWcqCBFbGFzdGljc2VhcmNoIOacjeWKoeWZqOS4iuOAguimgeWwhuatpOW6lOeUqOS6jueOsOacieeahCBDSe+8jOW/hemhu+WcqOabtOaUueatpOmAiemhueWQjumAmui/h+aOp+WItuWPsOi/kOihjCBDSSDov4Hnp7vjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn6YWN572u6aG56ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfmr4/kuKrpobXpnaLkuIrnmoTphY3nva7pobnpmZDliLbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ+mFjee9rueuoeeQhuaVsOaNruW6k+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAn6YWN572u6aG55om55aSE55CG5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdoueahOmFjee9rumhueaQnOe0ouWQjuerr+i3r+eUseOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfliJvlu7rlkoznrqHnkIbphY3nva7pobnlrprkuYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICflnKjnibnlrprml7bpl7TngrnkuLogQ29uZmlnSXRlbXMg5Yib5bu6IFRpY2tldHPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAn5a6i5oi35Y+v5Lul5p+l55yL5Y6G5Y+yIENJIOeJiOacrOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICflrqLmiLflj6/ku6XmiYvliqjliIfmjaLljoblj7IgQ0kg54mI5pys44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn5Zyo6YWN572u6aG55pCc57Si5bGP5bmV55qE5bGe5oCn5LiK5L2/55So55qE6buY6K6k5pWw5o2u44CC5L6L5aaC77yaIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7IuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ+WcqOmFjee9rumhueaQnOe0ouWxj+W5leeahOWxnuaAp+S4iuS9v+eUqOeahOm7mOiupOaVsOaNruOAguS+i+Wmgu+8miJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ+WumuS5iemTvuaOpeWvueixoeWwj+mDqOS7tihMaW5rT2JqZWN0OjpWaWV3TW9kZSA9IFwiY29tcGxleFwiKeiuvue9ruaMiemSruS4reeahOaTjeS9nOOAguivt+azqOaEj++8jOi/meS6m+aTjeS9nOW/hemhu+W3sue7j+WcqOS7peS4i0pT5ZKMQ1NT5paH5Lu25Lit5rOo5YaM77yaQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3PjgIFDb3JlLlVJLkFsbG9jYXRpb25MaXN0Lmpz44CBIENvcmUuVUkuVGFibGUuU29ydC5qc+OAgUNvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpz5ZKMQ29yZS5BZ2VudC5MaW5rT2JqZWN0Lmpz44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICfkuLrniYjmnKzlrZfnrKbkuLLlrprkuYnkuIDkuKogVGVtcGxhdGU6OlRvb2xraXQg5pa55qGI44CC5LuF5Zyo54mI5pys5a2X56ym5Liy5qih5Z2X6K6+572u5Li6IFRlbXBsYXRlVG9vbGtpdCDml7bkvb/nlKjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbGlzdCBvZiBkeW5hbWljIGZpZWxkIG9iamVjdCB0eXBlcyB3aGljaCBhcmUgYWxsb3dlZCB0byBiZSBhc3NpZ25lZCB0byBhY3Rpb25zIG9mIHRoaXMgcGFja2FnZSB2aWEgdGhlIGR5bmFtaWMgZmllbGQgc2NyZWVucyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICflrprkuYnkuIDnu4TlhYHorrjlrqLmiLfmn6XnnIvphY3nva7pobnnmoTmnaHku7bjgILlj6/pgInmi6nlsIbmnaHku7bpmZDliLbkuLrmn5DkupvlrqLmiLfnu4TjgILlkI3np7DmmK/llK/kuIDnmoTlvLrliLblsZ7mgKfjgILlpoLmnpzmsqHmnInnu5nlh7rlhbbku5bpgInpobnvvIzliJnor6XnsbvliKvkuIvnmoTmiYDmnInphY3nva7pobnpg73lsIblj6/op4HjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS9v+eUqOmAmueUqOaOpeWPo+WIoOmZpElUU03phY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS9v+eUqOmAmueUqOaOpeWPo+iOt+WPlklUU03phY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS9v+eUqOmAmueUqOaOpeWPo+aQnOe0oklUU03phY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS9v+eUqOmAmueUqOaOpeWPo+iuvue9riBJVFNNIOmFjee9rumhueaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICflrprkuYnmmL7npLrphY3nva7pobnliJfooajnroDmtIHop4blm77nmoTmpoLop4jmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAn5a6a5LmJ5piv5ZCm5b+F6aG75Zyo6IqC54K56L+e5o6l5Lit5pi+56S66ZO+5o6l57G75Z6L5qCH562+44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfkuLrmr4/kuKrphY3nva7pobnnsbvlrprkuYnni6znq4vnmoTmraPliJnooajovr7lvI/vvIzku6Xmo4Dmn6XphY3nva7pobnlkI3np7DlubbmmL7npLrnm7jlupTnmoTplJnor6/mtojmga/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfmoLnmja4gQ0kg57G75Yir5a6a5LmJ6YWN572u6aG55qaC6KeI5LitIENJIOeahOWPr+eUqOWIl+OAguavj+S4quadoeebruW/hemhu+WMheWQq+S4gOS4quexu+WQjeWSjOebuOW6lOexu+eahOWPr+eUqOWtl+auteaVsOe7hOOAguWKqOaAgeWtl+auteadoeebruW/hemhu+mBteWuiCBEeW5hbWljRmllbGRfRmllbGROYW1lIOaWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5Luj55CG55WM6Z2i6YWN572u6aG55pCc57Si57uT5p6c5Lit6YWN572u6aG55o6S5bqP55qE6buY6K6k6YWN572u6aG55bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnlrqLmiLfnlYzpnaLphY3nva7pobnmkJzntKLnu5PmnpzkuK3phY3nva7pobnmjpLluo/nmoTpu5jorqTphY3nva7pobnlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICflrprkuYnmraTmk43kvZznmoTphY3nva7pobnmkJzntKLnu5PmnpznmoTphY3nva7pobnmjpLluo/pu5jorqTphY3nva7pobnlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WumuS5ieS7o+eQhueVjOmdoumFjee9rumhueaQnOe0oue7k+aenOS4reeahOm7mOiupOmFjee9rumhuemhuuW6j+OAguS4iu+8muacgOaXp+eahOWcqOacgOWJjemdouOAguS4i++8muacgOaWsOeahOWcqOS4iuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5a6a5LmJ5a6i5oi355WM6Z2i6YWN572u6aG55pCc57Si57uT5p6c5Lit55qE6buY6K6k6YWN572u6aG56aG65bqP44CC5LiK77ya5pyA5pen55qE5Zyo5pyA5YmN6Z2i44CC5LiL77ya5pyA5paw55qE5Zyo5LiK44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WumuS5ieatpOaTjeS9nOeahOmFjee9rumhueaQnOe0oue7k+aenOS4reeahOm7mOiupOmFjee9rumhuemhuuW6j+OAguS4iu+8muacgOaXp+eahOWcqOacgOWJjemdouOAguS4i++8muacgOaWsOeahOWcqOS4iuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn5qC55o2uIENJIOexu+WumuS5iemFjee9rumhueamguiniOS4rem7mOiupOaYvuekuueahCBDSSDliJfjgILmr4/kuKrmnaHnm67lv4XpobvljIXlkKvkuIDkuKrnsbvlkI3lkoznm7jlupTnsbvnmoTlj6/nlKjlrZfmrrXmlbDnu4TjgILliqjmgIHlrZfmrrXmnaHnm67lv4XpobvpgbXlroggRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDmlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAn5a6a5LmJ6buY6K6k5pi+56S655qE5YWz57O75rex5bqm44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+WumuS5iemFjee9rumhueebruaQnOe0oueVjOmdoum7mOiupOaYvuekuueahOmFjee9rumhueebruaQnOe0ouWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn5a6a5LmJ6YWN572u6aG55pCc57Si5bGP5bmV6buY6K6k5pi+56S655qE6YWN572u6aG55pCc57Si5bGe5oCn44CCRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTpTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc077ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAx77ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNu+8m1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAw77ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMe+8m1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTnvvJtcJ+WSjOaIliBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ+WumuS5iVwnSVRTTUNvbmZpZ0l0ZW1cJ+exu+eahOm7mOiupOWtkOWvueixoeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn5qC55o2uIENJIOexu+WIq+WumuS5iemFjee9rumhueamguiniOS4rSBDSSDnmoTlj6/nlKjliJfjgILmr4/kuKrmnaHnm67lv4XpobvljIXlkKvkuIDkuKrnsbvlkI3lkoznm7jlupTnsbvnmoTlj6/nlKjlrZfmrrXmlbDnu4TjgILliqjmgIHlrZfmrrXmnaHnm67lv4XpobvpgbXlroggRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDmlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn5a6a5LmJ5pys5bGP5bmV5a+M5paH5pys57yW6L6R5Zmo57uE5Lu255qE6auY5bqm44CC6L6T5YWl5pWw5YC877yI5YOP57Sg5YC877yJ5oiW55m+5YiG5q+U5YC877yI55u45a+55YC877yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieWcqOezu+e7n+euoeeQhumdouadv+S4reS/ruaUuemFjee9rumhueWumuS5ieeahOe8lui+keWZqOeahOihjOaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICflrprkuYnmlYXpmpznirbmgIHku47pq5jvvIjlpoLntKfmgKXvvInliLDkvY7vvIjlpoLmraPluLjvvInnmoTpobrluo/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICflrprkuYnlhbPogZTnmoTpg6jnvbLnirbmgIHvvIzljbPpk77mjqXnmoTlt6XljZXlj6/ku6XlvbHlk43phY3nva7pobnnirbmgIHnmoTmg4XlhrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICflrprkuYlBZ2VudElUU01Db25maWdJdGVt77yI5pyN5Yqh5Lq65ZGY6YWN572u6aG577yJ56qX5Y+j55qE5pCc57Si6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaO+8iOacjeWKoeS6uuWRmOmFjee9rumhueaQnOe0ou+8ieeql+WPo+eahOaQnOe0oumZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ+WumuS5ieWuouaIt0lUU01Db25maWdJdGVtIOWxj+W5leeahOaQnOe0oumZkOWItuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+WumuS5ieWuouaIt0lUU01Db25maWdJdGVtU2VhcmNoIOWxj+W5leeahOaQnOe0oumZkOWItuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ+WcqOaJgOaciemFjee9rumhueexu+eahOmTvuaOpeihqOWkjeadguinhuWbvuS4reWumuS5ieimgeaYvuekuueahOmFjee9rumhueWtl+auteOAgiDlpoLmnpzmsqHmnInmnaHnm67vvIzliJnmmL7npLrpu5jorqTlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ+WumuS5iemTvuaOpeihqOWkjeWQiOinhuWbvuS4reaMiemFjee9rumhueexu+WIhuexu+aYvuekuueahOWtl+auteOAguavj+S4quadoeebruWdh+mcgOS7peexu+WQjeS4uuWJjee8gOWGjeWKoOS4iuWPjOWGkuWPt++8iOWmguiuoeeul+acujo677yJ44CC5pyJ5LiA5Lqb6YWN572u6aG55bGe5oCn5piv5omA5pyJ6YWN572u6aG56YO95pyJ55qE77yI5L6L5aaC77yM5a+55LqO6K6h566X5py657G777ya6K6h566X5py6OjrlkI3np7DjgIHorqHnrpfmnLo6OkN1ckRlcGxTdGF0ZeW9k+WJjemDqOe9sueKtuaAgeOAgeiuoeeul+acujo6Q3JlYXRlVGltZeWIm+W7uuaXtumXtO+8ieOAguimgeaYvuekuuWcqOmFjee9rumhueWumuS5ieS4reWumuS5ieeahOeLrOeJueeahOmFjee9rumhueWxnuaAp++8jOW/hemhu+S9v+eUqOS4i+mdoueahOaWueahiO+8iOS+i+Wmgu+8muWvueS6juiuoeeul+acuuexu++8muiuoeeul+acujo656Gs55uYOjox44CB6K6h566X5py6Ojrnoaznm5g6OuWuuemHjzo6MeOAgeiuoeeul+acujo656Gs55uYOjoy44CB6K6h566X5py6Ojrnoaznm5g6OjLorqHnrpfmnLo6OuehrOebmDo6Mu+8ieOAguWmguaenOS4gOS4qumFjee9rumhueexu+ayoeacieadoeebruWtmOWcqO+8jOWImeS9v+eUqOWcqElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5z5Lit6K6+572u55qE6buY6K6k5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn5a6a5LmJ5ZOq5Lqb6aG555uu5Y+v55So5LqOIElUU00gQ29uZmlnIOmhueebriBBQ0wg57uT5p6E56ys5LiJ5bGC5Lit55qEICLmk43kvZwi44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn5a6a5LmJIElUU00gQ29uZmlnIOmhueebriBBQ0wg57uT5p6E56ys5LiA5bGC5Lit55qE5Y+v55So6aG555uu44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ+WumuS5iSBJVFNNIENvbmZpZyDpobnnm64gQUNMIOe7k+aehOesrOS6jOWxguS4reeahOWPr+eUqOmhueebruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICflrprkuYnlk6rkuIDnsbso5LuO5bel5Y2V6KeS5bqm5ZG95ZCN55qEKemTvuaOpeWPr+S7peW9seWTjeS4gOS4qumTvuaOpeeahOmFjee9rumhueeahOeKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ+WumuS5ieWTquS4gOexu+W3peWNleWPr+S7peW9seWTjeS4gOS4qumTvuaOpeeahOmFjee9rumhueeahOeKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ+WumuS5ieabtOaWsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn5Yig6Zmk6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn6YOo572y54q25oCB55qE6aKc6ImyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ+mDqOe9sueKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICflpI3liLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICfliqjmgIHlrZfmrrXkuovku7bmqKHlnZfvvIznlKjkuo7lnKjljIXlkKvnmoTliqjmgIHlrZfmrrXlj5HnlJ/lj5jljJbml7blsIbphY3nva7pobnlrprkuYnmoIforrDkuLrkuI3lkIzmraXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoueahOmZhOWKoElUU03lrZfmrrXnqpflj6PkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6i5oi355WM6Z2i6YWN572u6aG555uu5qaC6KeI5bGP5bmV5Lit5pi+56S655qE5Yqo5oCB5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLnmoTphY3nva7pobnmkJzntKLlsY/luZXkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5ZCv55So6YWN572u6aG55om56YeP5pON5L2c5Yqf6IO977yM5Y+v5Lul5LiA5qyh5aSE55CG5aSa5Liq6YWN572u6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICflj6rmnInliJfooajkuK3nmoTnu4TmiY3mnInmnYPpmZDkvb/nlKjphY3nva7pobnmibnph4/mk43kvZzlip/og73jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAn5ZCv55SoL+emgeeUqOajgOafpSBJVFNNIOmFjee9rumhueaYr+WQpuWFt+acieWUr+S4gOWQjeensOeahOWKn+iDveOAguWQr+eUqOatpOmAiemhueWJje+8jOW6lOajgOafpeezu+e7n+S4reaYr+WQpuWtmOWcqOWQjeensOmHjeWkjeeahOmFjee9rumhueOAguaCqOWPr+S7peS9v+eUqOaOp+WItuWPsOWRveS7pCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMg6L+b6KGM5qOA5p+l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ+WcqOW3peWNlS3phY3nva7pobnnmoTpk77mjqXkuK3orr7nva7phY3nva7pobkt54q25oCB55qE5LqL5Lu25qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ+mFjee9rumhuee0ouW8leWtl+aute+8jOeUqOS6juWFqOaWh+aQnOe0ouOAguWtl+auteS5n+S8muiiq+WtmOWCqO+8jOS9huWvueS6juaVtOS9k+WKn+iDveadpeivtOW5tumdnuW/hemhu+OAguWPr+mAmui/h+Wwhuadoeebruiuvue9ruS4uiAwIOaIluWIoOmZpOadpeemgeeUqOmZhOS7tueahOWMheWQq+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAn5a2Y5YKo5Zyo6YWN572u6aG557Si5byV5Lit55qE5a2X5q6177yM6Zmk55So5LqO5YWo5paH5qOA57Si5aSW77yM6L+Y5Y+v55So5LqO5YW25LuW55So6YCU44CC5Li65LqG5a6e546w5a6M5pW055qE5Yqf6IO977yM5omA5pyJ5a2X5q616YO95piv5b+F5aGr5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAn5Y+v5Lul5Li65q+P5LiqIHdlYnNlcnZpY2XvvIjplK7vvInlrprkuYnkuIDkuKrnsbvvvIjlgLzvvInmlbDnu4TvvIzlnKjmraTln7rnoYDkuIrpmZDliLblr7zlhaXjgILlr7nkuo7miYDmnInpgInlrprnmoTnsbvmiJbmiYDmnInnjrDmnInnmoTnsbvvvIzlv4XpobvlnKjosIPnlKjogIXphY3nva7kuK3pgInmi6nor4bliKvlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn55So5LqOIENvbmZpZ0l0ZW1GZXRjaCDosIPnlKjlsYLnmoQgR2VuZXJpY0ludGVyZmFjZSDmqKHlnZfms6jlhozjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfnlKjkuo4gQ29uZmlnSXRlbUZldGNoIOiwg+eUqOWxgueahCBHZW5lcmljSW50ZXJmYWNlIOaooeWdl+azqOWGjOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfnlKjkuo4gQ29uZmlnSXRlbUZldGNoIOiwg+eUqOWxgueahCBHZW5lcmljSW50ZXJmYWNlIOaooeWdl+azqOWGjOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIOmFjee9rumhueebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU03phY3nva7pobnmpoLop4jjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAn54q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfkuovku7bnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i55qE6YWN572u6aG55pCc57Si5Lit5YyF5ZCr6YOo572y54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLfnlYzpnaLnmoTphY3nva7pobnnm67mkJzntKLkuK3ljIXlkKvkuovku7bnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ+WcqOatpOaTjeS9nOe7k+aenOS4reaYvuekuueahOmFjee9rumhueeahOacgOWkp+aVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ+eUqOS6juajgOafpemFjee9rumhueexu+eahOe7hOadg+mZkOeahOaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ+eUqOS6juajgOafpemFjee9rumhueeahOe7hOadg+mZkOeahOaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ+eUqOS6jueUn+aIkElUU03phY3nva7pobnnu5/orqHnmoTmqKHlnZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICflkI3np7DmqKHlnZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ+e8luWPt+aooeWdlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLmkJzntKLnu5PmnpznmoTmr4/kuIDpobXkuK3mmL7npLrnmoTphY3nva7pobnmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6i5oi355WM6Z2i5pCc57Si57uT5p6c5q+P6aG15pi+56S655qE6YWN572u6aG55pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAn6KaB5pCc57Si55qE5a+56LGh44CB5p2h55uu5pWw6YeP5Lul5Y+K6KaB5pi+56S655qE5bGe5oCn44CC6YWN572u6aG55bGe5oCn5b+F6aG76YCa6L+HIEVsYXN0aWNzZWFyY2gg5piO56Gu5a2Y5YKo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ+amguiniOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G75Yir55qE5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5bCP6YWN572u6aG555uu5qaC6KeI55qE5YiX6L+H5ruk5Zmo5Y+C5pWw44CC6K+35rOo5oSP77ya5bCGICJBY3RpdmXvvIjmtLvliqjvvIki6K6+572u5Li6IDAg5Y+q5Lya6Zi75q2i5Luj55CG5Zyo5YW25Liq5Lq65YGP5aW96K6+572u5Lit57yW6L6R6K+l57uE55qE6K6+572u77yM5L2G5LuN5YWB6K64566h55CG5ZGY57yW6L6R5YW25LuW55So5oi355qE6K6+572u44CC5L2/55SoICJQcmVmZXJlbmNlR3JvdXDvvIjlgY/lpb3nu4TvvIki5Y+v5o6n5Yi26L+Z5Lqb6K6+572u5bqU5pi+56S65Zyo55So5oi355WM6Z2i55qE5ZOq5Liq5Yy65Z+f44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLlgY/lpb3orr7nva7op4blm77kuK3nlKjkuo7pg6jnvbLnirbmgIHpopzoibLnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLlgY/lpb3orr7nva7op4blm77kuK3nlKjkuo7pg6jnvbLnirbmgIHnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn55uu5b2V5bGe5oCn5qC35L6LLeadg+mZkOe7hOeahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remFjee9rumhueexu+WQjeensOaooeWdl+eahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G75Yir55qE57yW5Y+35qih5Z2X5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ+aYvuekuumFjee9rumhueeahOmhtemdouWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvnmoTniYjmnKzlrZfnrKbkuLLmqKHlnZflj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfnlKjkuo7ku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvnmoTniYjmnKzlrZfnrKbkuLLmqKHmnb/lt6XlhbfljIXmqKHlnZflj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G755qE54mI5pys6Kem5Y+R5Zmo5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAn5Li65q+P5Liq6YWN572u55qEV0VC5pyN5Yqh55qE5q+P5Liq5LqL5Lu25omn6KGM6YWN572u5aW955qE5pON5L2c77yI5Lul6LCD55So56iL5bqP6KeS6Imy77yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfmnYPpmZDnu4QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55SoIElUU00g6YWN572u6aG555uu6ZmE5Lu25pON5L2c5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKhJVFNN6YWN572u6aG556qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i5L2/55SoSVRTTemFjee9rumhueaQnOe0oueql+WPo+mcgOimgeeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdouS9v+eUqCBJVFNNIOmFjee9rumhueebruaQnOe0ouWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqCBJVFNNIOmFjee9rumhueebruagkeinhuWbvuWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKhJVFNN6YWN572u6aG56K+m5oOF56qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i5L2/55So5re75YqgSVRTTemFjee9rumhueeql+WPo+mcgOimgeeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLkuK3kvb/nlKjmibnph48gSVRTTSDphY3nva7pobnnm67lsY/luZXmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i5L2/55So57yW6L6RSVRTTemFjee9rumhueeql+WPo+mcgOimgeeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKhJVFNN6YWN572u6aG55Y6G5Y+y56qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKhJVFNN6YWN572u6aG55omT5Y2w56qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfliKDpmaTphY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfmkJzntKLphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ+W9k+S4gOS4quW3peWNlemTvuaOpeWIsOS4gOS4qumFjee9rumhueaXtuiHquWKqOiuvue9rui/meS4qumFjee9rumhueeahOaVhemanOeKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueaJuemHj+aTjeS9nOeql+WPo+iuvue9rumDqOe9sueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnmibnph4/mk43kvZznqpflj6Porr7nva7kuovku7bnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnor6bmg4Xop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrlhYHorrjpk77mjqXphY3nva7pobnliLDlj6bkuIDlr7nosaHnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnmpoLop4jop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrlhYHorrjorr/pl67phY3nva7pobnljoblj7LnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG56K+m5oOF6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq5YWB6K646K6/6Zeu6YWN572u6aG55Y6G5Y+y55qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG56K+m5oOF6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq5Yig6Zmk6YWN572u6aG555qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICflnKjoj5zljZXkuK3mmL7npLrkuIDkuKrpk77mjqXvvIzku6XmoJHlvaLop4blm77mmL7npLrphY3nva7pobnpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnmpoLop4jop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrlpI3liLbphY3nva7pobnnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG56K+m5oOF6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq5aSN5Yi26YWN572u6aG555qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnor6bmg4Xop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrnvJbovpHphY3nva7pobnnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueivpuaDheinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4qui/lOWbnumTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueivpuaDheinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4quaJk+WNsOmFjee9rumhueeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueamguiniOinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4quafpeeci+mFjee9rumhueivpuaDheeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i5pi+56S66YWN572u6aG55Y6G5Y+y77yI5YCS5bqP77yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ+WmguaenOacqumAieaLqeS7u+S9leexu+WIq++8jOWImeaYvuekuum7mOiupOexu+WIq+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAn6YWN572u6aG55qCH6K+G56ym77yM5aaCQ29uZmlnSXRlbSPjgIFNeUNvbmZpZ0l0ZW0j77yM6buY6K6k5pivQ29uZmlnSXRlbSPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICfoh6rliqjop6blj5EgQ29uZmlnSXRlbUZldGNoIOiwg+eUqOWZqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAn54mI5pys5a2X56ym5Liy6KGo6L6+5byPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ+eJiOacrOWtl+espuS4suaooeWdlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICfniYjmnKzop6blj5HlmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAn5a2X5q615piv5ZCm6Ieq5Yqo5aGr5YWFKDEp77yMIOmCo+enjeaDheWGteS4i+WwhuS8muWcqOW3peWNleihqOS4remakOiXj+i1t+adpSgyKeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICfmmK/lkKblj6/ku6XpgJrov4fmo4Dmn6XnvJPlrZjnmoTlrZfmrrXkvp3otZblhbPns7vmnaXpgb/lhY3miafooYwgQ29uZmlnSXRlbUFDTOOAgui/meWPr+S7pee8qeefreihqOagvOeahOWKoOi9veaXtumXtO+8jOS9huWmguaenOimgeWcqCBJVFNNQ29uZmlnSXRlbSDlkowgRm9ybS1SZXR1cm5UeXBlIOS4reS9v+eUqCBBQ0wg5qih5Z2X77yM5YiZ5b+F6aG756aB55So44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICfmoIfpopjkuK3mmL7npLrkuoblk6rkupvkuIDoiKzkv6Hmga/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfnsbsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn5YWo5bGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn6Zey572uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICflh4blpIfmipXkuqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ+aKleS6pyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVe+8mjE3LjUg6Iux5a+477yINDQuNDUg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlXvvJoyMSDoi7Hlr7jvvIg1My4zNCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1Ve+8mjI2LjI1IOiLseWvuO+8iDY2LjY4IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFXvvJozMS41IOiLseWvuO+8iDgwLjAxIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOSDoi7Hlr7jmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFV77yaMS43NSDoi7Hlr7jvvIg0LjQ1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFXvvJozNSDoi7Hlr7jvvIg4OC45IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMSDoi7Hlr7jmlK/mnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJV77yaMzguNSDoi7Hlr7jvvIg5Ny43OSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMg6Iux5a+45py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMuNiDoi7Hlr7jvvIg2MDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRV77yaNDIg6Iux5a+477yIMTA2LjY4IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3Ve+8mjQ3LjI1IOiLseWvuO+8iDEyMC4wMiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlXvvJozLjUg6Iux5a+477yIOC44OSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVe+8mjUyLjUg6Iux5a+477yIMTMzLjM1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLjUg6Iux5a+477yIODAwIOavq+exs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVe+8mjU3Ljc1IOiLseWvuO+8iDE0Ni42OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNS40IOiLseWvuO+8iDkwMCDmr6vnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlXvvJo2MyDoi7Hlr7jvvIgxNjAuMDIg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LjQg6Iux5a+477yIMTAwMCDmr6vnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVXvvJo2OC4yNSDoi7Hlr7jvvIgxNzMuMzUg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1XvvJo1LjI1IOiLseWvuO+8iDEzLjM0IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJV77yaNzMuNSDoi7Hlr7jvvIgxODYuNjkg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0My4zIOiLseWvuO+8iDExMDAg5q+r57Gz77yJ77yaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVV77yaNzguNzUg6Iux5a+477yIMjAwLjAyIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0Ny4yIOiLseWvuO+8iDEyMDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhV77yaODQg6Iux5a+477yIMjEzLjM2IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRV77yaNyDoi7Hlr7jvvIgxNy43OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1Ve+8mjguNzUg6Iux5a+477yIMjIuMjMg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlXvvJoxMC41IOiLseWvuO+8iDI2LjY3IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3Ve+8mjEyLjI1IOiLseWvuO+8iDMxLjEyIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4Ve+8mjE0IOiLseWvuO+8iDM1LjU2IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5Ve+8mjE1Ljc1IOiLseWvuO+8iDQwLjAxIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ+S8muiuoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ+WcsOWdgOWIhumFjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn566h55CG5ZGYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ+aooeaLn+eUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ+iuvuWkh+exu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ+eUteaxoOWuuemHj++8iOWuieaXtu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICfnlLXmsaDnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICflpKfljqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ+aAu+e6v+aOpeWPoyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSDnrYnnuqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ+WuuemHj++8iEdC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn5q+P5Liq5Zu+5b2i5Y2h55qE5a656YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAn5Y2h5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAn6K+75Y2h5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ+WNoeeJh+exu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn5a6i5oi36K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ+WuouaIt+err+i9r+S7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICflrqLmiLfnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAn5pe26ZKf6aKR546HJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICfml7bpkp/pgJ/luqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ+S7o+eggeetvuWQjeivgeS5pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAn5Lya6K6u55S16K+dJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAn5ZKo6K+i5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICfogZTns7vmlrnlvI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ+iBlOezu+e7j+mUgOWVhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ+mbhuijheeuseeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ+WQiOWQjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAn5ZCI5ZCM57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAn5ZCI5ZCM5pyf5LuOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ+WQiOWQjOacn+iHsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICfml6Dnu7PnlLXor53vvIhERUNUIOeUteivne+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfmiJDmnKzljZXkvY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICforrjlj6/or4HmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ+WIm+W7uuaXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn5a6a5Yi25py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIOS/neeVmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TIOacjeWKoeWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn5Y+R56Wo5pel5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICforqLotK3ml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ+aOiOadg+aXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICflj5HluIPml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ+WPsOW8j+eUteiEkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn5paH5Lu2562+5ZCN6K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSDmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ+eUteWtkOmCruS7tuivgeS5pu+8iFMvTUlNRSDor4HkuabvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn6ZuH5L2j5ZCI5ZCMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAn57uI56uvIElQIOWcsOWdgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ+aUr+aMgee7k+adnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ+acieaViOacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAn5aSW572u56Gs55uYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAn6Ziy54Gr5aKZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAn5Zu65Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAn6aOe6L2u5YKo6IO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAn5aSW5b2i5bC65a+4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICfnibnorrjnu4/okKXljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICflhY3otLnova/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn5LiA6Iis5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAn5Zu+5b2i5Y2hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICflm77lvaLljaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICfnoazku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICfnoazku7blnovlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAn56Gs5Lu26YeN6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICfogLPmnLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCDljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAn6Lqr5Lu95ZKM6K6/6Zeu566h55CG77yISUFN77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICflupPlrZjnvJblj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICfovazmjaLmiJDmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICflj5Hnpajlj7fnoIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfplK7nm5gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEIOaYvuekuuWZqO+8iOa2suaZtuaYvuekuuWZqO+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVEIOaYvuekuuWZqO+8iOWPkeWFieS6jOaegeeuoe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICflm7rlrprnlLXor50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn56yU6K6w5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAn57qs5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAn56ysIDEg5bGC77ya54mp55CG5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ+esrCAyIOWxgu+8muaVsOaNrumTvui3r+Wxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAn56ysIDMg5bGC77ya572R57uc5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ+esrCAzIOWxgu+8mue9kee7nOWxgu+8iOi2hee6p+e9ke+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICfnrKwgNCDlsYLvvJrkvKDovpPlsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ+esrCA1IOWxgu+8muS8muivneWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICfnrKwgNiDlsYLvvJrmmL7npLrlsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICfnrKwgNyDlsYLvvJrlupTnlKjlsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAn56ef6LWB5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAn6K645Y+v5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICforrjlj6/or4Hlr4bpkqUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAn6K645Y+v6K+B57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICforrjlj6/or4HmnInmlYjmnJ/ku44nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICforrjlj6/or4HmnInmlYjmnJ/oh7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ+ejt+mFuOmTgemUgu+8iExpRmVQTzTvvInnlLXmsaAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ+mUguemu+WtkO+8iExpLUlvbu+8ieeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ+i0t+asvuWNj+iuric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAn5L2N5LqOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ+e7j+W6pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ+WItumAoOWVhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAn5pyA5aSn6LSf6L296IO95Yqb77yI55Om77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ+WGheWtmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ+WGheWtmOexu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAn6L+35L2g5py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICfmiYvmnLrlj7fnoIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAn56e75YqoL+W1jOWFpeW8jyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ+Wei+WPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ+Wei+WPt+ivtOaYjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICfmmL7npLrlmajliIbovqjnjocnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAn5pi+56S65Zmo5bC65a+4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAn6byg5qCHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICfnvZHnu5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAn572R57uc5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICfnvZHnu5zkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ+e9kee7nOWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ+mVjemVie+8iE5pQ2TvvInnlLXmsaAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICfplY3msKLvvIhOaU1I77yJ55S15rGgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ+S/neWvhuWNj+iuru+8iE5EQe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ+eslOiusOacrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ0NQVSDmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAn5YaF5a2Y5qih5Z2X5pWw6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ+WbvuW9ouWNoeaVsOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCDmmL7npLrlmajvvIjmnInmnLrlj5HlhYnkuozmnoHnrqHvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAn6L+Q6JCl5oiQ5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ+iuouWNleWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ+WFtuWugyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAn6L6T5Ye6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ+WvhueggSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ+WvhueggSAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ+WQiOS8meWNj+iuric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ+eUteivneWPt+eggSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAn55S16K+d57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAn54mp55CG56OB6IqvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAn55S15Yqb6L6T6YCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAn5ZyoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICfmnLrmnrbmt7HluqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICfmnLrmnrbljZXlhYMgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfmiL/pl7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0g5Y2hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUyDor4HkuaYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICfplIDllK7lkIjlkIwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAn5Y2r5pif55S16K+dJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ+WvhuWwgemThemFuCAoU0xBKSDnlLXmsaAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICfluo/liJflj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAn5pyN5Yqh5Zmo6L2v5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAn5pyN5Yqh5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAn5pyN5Yqh5qCH562+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ+aPkuW6p+exu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ+i9r+S7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ+WPkeiogOS6uic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfmoIflh4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ+WQr+WKqCBJUCDlnLDlnYAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ+WtmOWCqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ+WtmOWCqOWIhuWMuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ+mZhOWxnuacuuaehCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAn5pGY6KaBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAn55im5a6i5oi35py6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICfnur/nqIsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICfpm7fnlLUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ+aYvuWNoeaAu+WGheWtmO+8iEdC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAn5oC75YaF5a2Y77yIR0LvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ+inpuaRuOWxj+aYvuekuuWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ+WhlOalvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCIOmbhue6v+WZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICfomZrmi5/kuJPnlKjnvZEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSIOWktOeblCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ+iZmuaLn+mTvuaOpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAn572R57uc55S16K+dJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICfnvZHnu5zmkYTlg4/lpLQnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Language/zh_TW_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX1RXX0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfkuIDoiKzov5DooYzmlbDmja4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ+aOpeaUtuivt+axguaVsOaNrueahOiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ+WkluWPkeWTjeW6lOaVsOaNrueahOiuvue9ric7CgogICAgIyBUZW1wbGF0ZTogQWRtaW5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ+euoeeQhumFjee9rumghSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+S/ruaUuemhnuWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAn5pu05pS56KeS6Imy5a6a5LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlYWR5MkltcG9ydCBDbGFzcyBCdW5kbGVzJ30gPSAnUmVhZHkySW1wb3J0IOexu+WMhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZXJlIHlvdSBjYW4gaW1wb3J0IFJlYWR5MkltcG9ydCBjbGFzcyBidW5kbGVzIHNob3djYXNpbmcgb3VyIG1vc3QgdXN1YWwgY29uZmlnIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG1heSBiZSByZXF1aXJlZC4nfSA9CiAgICAgICAgJ+WcqOi/memHjO+8jOaCqOWPr+S7peWvvOWFpSBSZWFkeTJJbXBvcnQg57G75o2G57uR5YyF77yM5YW25Lit5bGV56S65LqG5oiR5Lus5pyA5bi455So55qE6YWN572u6aG544CC6K+35rOo5oSP77yM5Y+v6IO96ZyA6KaB5LiA5Lqb6aKd5aSW55qE6YWN572u44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VwZGF0ZSBleGlzdGluZyBlbnRpdGllcyd9ID0gJ+abtOaWsOeOsOacieWunuS9kyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQgUmVhZHkyQWRvcHQgY2xhc3MgYnVuZGxlcyd9ID0gJ+WvvOWFpSBSZWFkeTJBZG9wdCDnsbvmjYbnu5HljIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICfphY3nva7pobnnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ+mFjee9rumhueS9nOeUqCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfphY3nva7poIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn6YGO5r++6aGeJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+WFiOW+nuWIl+ihqOS4remBuOaTh+mhnuWIpe+8jOeEtuW+jOW7uueri+aWsOeahOmFjee9rumgheOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ+mhnuWIpSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00g6YWN572u6aG555uu5om56YeP5pON5L2cJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICfpg6jnvbLni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICfmlYXpmpzni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn5Y+m5LiA5Liq6ZO+5o6lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfphY3nva7pobnnm67nvJblj7fml6DmlYjvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAn6KaB6ZO+5o6l55qE5Y+m5LiA5Liq6YWN572u6aG555qE57yW5Y+344CCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRGVsZXRlCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAn5oKo55yf55qE5oOz5Yig6Zmk6L+Z5Liq6YWN572u6aG55ZCX77yfJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtRWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+eCuumAmeWAi+mFjee9rumgheWRveWQjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn5ZCN56ew5bey6KKr6YWN572u6aG55L2/55So77yM57yW5Y+35aaC5LiL77yaJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfniYjmnKzomZ/norwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBudW1iZXIgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+ivpemFjee9rumhueeahOeJiOacrOWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+eJiOacrOWPt+W3suiiq+mFjee9rumhueS9v+eUqO+8jOWFtue8luWPt+WmguS4i++8miVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfpg6jnvbLni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICfmlYXpmpzni4DmhYsnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ+mFjee9rumhueWOhuWPsu+8miAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfmrbflj7LlhoXlrrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+WJteW7uuaZgumWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfnvKnmlL7oppblnJYnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAn5q+P6aCB6YWN572u6aCF5YCL5pW4JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfmnKrmib7liLDphY3nva7pobnmlbDmja7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfpgInmi6nor6XphY3nva7pobknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfmkJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn5ZCM5pmC5pCc57Si5Lul5YmN55qE54mI5pysPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ+mFjee9rumhueagkeW9ouinhuWbvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ+a3seW6puetiee6pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ+aUvuWkpy/nvKnlsI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQ29uZmlnSXRlbSDlt7Lovr7liLDmnIDlpKfpk77mjqXnuqfliKvvvIEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfphY3nva7poIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAn6YWN572u6aCF5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ+eVtuWJjeeahOmDqOe9sueLgOaFiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn55W25YmN55qE5pWF6Zqc54uA5oWLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ+acgOW+jOS/ruaUuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfmnIDlvozkv67mlLnmlrwnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICfmgqjnmoTphY3nva7pobknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAn6YWN572u6aG55pCc57SiJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbkFDTAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IFR5cGUnfSA9ICflr7nosaHnsbvlnosnOwoKICAgICMgVGVtcGxhdGU6IEFkbWluRHluYW1pY0ZpZWxkU2NyZWVuCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgYnkgb2JqZWN0IHR5cGUnfSA9ICfmjInpoZ7lnovpgY7mv74nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICflsIblr7zlhaXku6XkuIvnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn5bCG5a+85YWl5Lul5LiL6KeS6ImyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ+ivt+azqOaEj++8jOS5n+S8muWIm+W7uuebuOW6lOeahOWKqOaAgeWtl+auteWSjCBHZW5lcmFsQ2F0YWxvZyDnsbvvvIzogIzkuJTkuI3kvJroh6rliqjliKDpmaTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfkvaDmg7Pnu6fnu63lkJfvvJ8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAn6ZyA6KaB56S65L6L57G777yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ+WumuS5ieayoeacieacieaViOeahCBZQU1MIOWTiOW4jOWAvOOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ+amgui/sO+8mklUU00g6YWN572u6aG555uuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ+acque7meWHuiBDb25maWdJdGVtSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfmgqjpnIDopoHoh7PlsJHkuIDkuKrpgInlrprnmoTphY3nva7pobnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICfmgqjmsqHmnInlhpnlhaXmraTphY3nva7pobnnmoTmnYPpmZDvvJolcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn5pyq5a6a5LmJICVzIOexu+eahOWumuS5ie+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn5pWw5o2u5bqT5Lit5pyq5Y+R546w6YWN572u6aG5ICIlcyLvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfml6Dms5XliKDpmaTphY3nva7pobkgSUQgJXPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ+a3u+WKoOmFjee9rumhueebruOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfmnKrnu5nlh7ogQ29uZmlnSXRlbUlE44CBRHVwbGljYXRlSUQg5oiWIENsYXNzSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ+acquaPkOS+m+iuv+mXruadg+mZkO+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfml6Dms5XmmL7npLrljoblj7LorrDlvZXvvIzlm6DkuLrmsqHmnInnu5nlh7ogQ29uZmlnSXRlbUlE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn5peg5rOV5pi+56S65Y6G5Y+y6K6w5b2V77yM5rKh5pyJ6K6/6Zeu5p2D6ZmQ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfmlrDphY3nva7pobnvvIhJRD0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAn5paw54mI5pys77yISUQ9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfpg6jnvbLnirbmgIHlt7Lmm7TmlrDvvIjmlrA9JXPvvIzml6c9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn5LqL5Lu254q25oCB5bey5pu05paw77yI5pawPSVz77yM5penPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn6YWN572u6aG555uu77yISUQ9JXPvvInlt7LliKDpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICflt7Lmt7vliqAgJXMgKHR5cGU9JXMpIOmTvuaOpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAn5oyH5ZCRICVzICh0eXBlPSVzKSDnmoTpk77mjqXlt7LliKDpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ+mFjee9rumhueWumuS5ieW3suabtOaWsO+8iElEPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn5ZCN56ew5bey5pu05paw77yI5pawPSVz77yM5penPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAn5bGe5oCnICVzIOS7jiIlcyAi5pu05paw5Li6IiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICfniYjmnKwgJXMg5bey5Yig6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ+acque7meWHuiBDb25maWdJdGVtSUQg5oiWIFZlcnNpb25JRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfml6Dms5XmmL7npLrphY3nva7pobnvvIzmnKrotYvkuojorr/pl67mnYPpmZDvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfmlbDmja7lupPkuK3mib7kuI3liLDphY3nva7pobnnm67nvJblj7cgJXPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ+mFjee9rumghSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAn55SxICVzIOWcqCAlcyDmiZPljbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ+ebuOmXnOWPguiAgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ+aXoOaViCBDbGFzc0lE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAn5pyq57uZ5Ye6IENsYXNzSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfor6XnsbvmsqHmnInorr/pl67mnYPpmZDvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ+aykuaciee1kOaenCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfphY3nva7poIXnm67mkJzlsIvntZDmnpwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ+aXoOazleaYvuekuumhueebru+8jOayoeaciee7meWumiBDb25maWdJdGVtIOeahOiuv+mXruadg+mZkO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICfmnKrmib7liLDphY3nva7pobnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAn5pyq5om+5Yiw5Lu75L2V54mI5pys77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn5Lia5YqhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICforablkYonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfkuovku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+mFjee9rumghemDqOe9sueLgOaFiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+mFjee9rumgheaVhemanOeLgOaFiyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ+aykuacieasiumZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICfov4fmu6Tlmajml6DmlYjvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ+aQnOe0ouWPguaVsOaXoOaViO+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ+aYvuekuueahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfpg6jnvbLni4DmhYvpoZ7lnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAn55W25YmN55qE5pWF6Zqc54uA5oWL6aGe5Z6LJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ+S5i+mXtCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn6YWN572u6aG555qE57G75Yir6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfpgInmi6nkuIDkuKrmiJblpJrkuKrnsbvliKvmnaXpmZDliLblj6/pgInmi6nnmoTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ+mFjee9rumhueeahOexu+WIq+mZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ+mAieaLqeS4gOS4quaIluWkmuS4quexu+WIq+adpemZkOWItuWPr+mAieaLqeeahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ+WKqOaAge+8iENvbmZpZ0l0ZW3vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ+mdmeaAge+8iOeJiOacrO+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICfpk77mjqXlvJXnlKjnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAn5q2k6ZO+5o6l6YCC55So5LqO5byV55So5a+56LGh55qE6YWN572u6aG56L+Y5piv6Z2Z5oCB54mI5pys44CC5b2T5YmN5LqL5Lu254q25oCB6K6h566X5LuF5Zyo5Yqo5oCB6ZO+5o6l5LiK5omn6KGM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAn6YCJ5oup5pCc57Si6YWN572u6aG555qE5bGe5oCnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAn5Z+656GA57uT5p6E5peg5pWI44CC6K+35o+Q5L6b5YyF5ZCrIFlBTUwg5qC85byP5pWw5o2u55qE5ZOI5biM5YC844CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAn5b+F6aG75LulIi0tLSLlvIDlp4sgWUFNTCDlrZfnrKbkuLLjgIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAn5peg5rOV5riF6Zmk6KGoIGNvbmZpZ2l0ZW1fbGlua+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAn5pyq5om+5Yiw55u45YWz5Yqo5oCB5a2X5q61JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn5peg5rOV5o+S5YWl6KGoIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn5ZCR6KGoIGNvbmZpZ2l0ZW1fbGluayDmj5LlhaXkuoYgMCDmnaHorrDlvZUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAn5q2k5YWD57Sg55qE5pyA5aSn5pW46YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnQvRXhwb3J0IGF0dGFjaG1lbnRzIChhcyB0aGUgbGFzdCBlbnRyaWVzIHBlciBsaW5lKSd9ID0gJ+WvvOWFpS/lr7zlh7rpmYTku7bvvIjkvZzkuLrmr4/ooYznmoTmnIDlkI7kuIDkuKrmnaHnm67vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICfniYjmnKzlrZfnrKbkuLInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAn5ZCM5q2l5a6a5LmJ5pe25Ye66ZSZ44CC6K+35p+l55yL5pel5b+X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAn5oKo55qEIElUU01Db25maWdJdGVtIOWumuS5ieacquWQjOatpeOAguivt+mDqOe9suaCqOeahCBJVFNNQ29uZmlnSXRlbSDliqjmgIHlrZfmrrXmm7TmlLnjgIInOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ+WIsOacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ+e2reittyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ+ippumplyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn5bey6KiI5YqDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ+S/ruW+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn5aCx5buiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ+ikh+WvqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn5rWL6KmmL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICfmpoLov7Dlkoznoa7orqQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAn5a+85YWl57G7L+inkuiJsuWPiuWFtuebuOWFs+Wtl+autSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ+exu+WvvOWFpeaXtuWPkeeUn+mUmeivr+OAgic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0g6ZqQ6JePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSDmmL7npLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ+WFgeiuuOWcqOS7o+eQhueVjOmdoueahOmFjee9rumhueaQnOe0ouS4reS9v+eUqOaJqeWxleaQnOe0ouadoeS7tuOAguWIqeeUqOivpeWKn+iDve+8jOaCqOWPr+S7peS9v+eUqCIoKmtleTEqJiYqa2V5MiopICLmiJYiKCprZXkxKnx8KmtleTIqKSAi562J5p2h5Lu25pCc57Si6YWN572u6aG55ZCN56ew44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ+WFgeiuuOWcqOWuouaIt+eVjOmdoueahOmFjee9rumhueaQnOe0ouS4reS9v+eUqOaJqeWxleaQnOe0ouadoeS7tuOAguWIqeeUqOivpeWKn+iDve+8jOaCqOWPr+S7peS9v+eUqCIoKmtleTEqJiYqa2V5MiopICLmiJYiKCprZXkxKnx8KmtleTIqKSAi562J5p2h5Lu25pCc57Si6YWN572u6aG55ZCN56ew44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ+WIhumFjeeahCBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAn5YiG6YWN57uZ5a6i5oi35YWs5Y+455qEIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAn5YiG6YWN57uZ5a6i5oi355So5oi355qEIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCIOiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn5LuF5Zyo5ZCM5LiAIENvbmZpZ0l0ZW0g57G777yIImNsYXNzIu+8ieaIluWFqOWxgO+8iCJnbG9iYWwi77yJ5YaF5qOA5p+l5ZSv5LiA5ZCN56ew77yM6L+Z5oSP5ZGz552A5Zyo5p+l5om+6YeN5aSN5pe277yM5q+P5Liq546w5pyJ55qEIENvbmZpZ0l0ZW0g6YO95Lya6KKr6ICD6JmR5Zyo5YaF44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICfpgInmi6nkuIDkuKrmqKHlnZfmnaXmiafooYzlkb3lkI3mlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ+mAieaLqeS4gOS4quaooeWdl+adpeaJp+ihjOaVsOWtl+aWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICfpgInmi6nkuIDkuKrmqKHlnZfmnaXmiafooYzniYjmnKzlrZfnrKbkuLLmlrnmoYjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfpgInmi6nop6blj5HliJvlu7rmlrDniYjmnKznmoTlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAn6YCJ5oup6KaB5YiG6YWN57uZ5q2k6YWN572u6aG557G75Yir55qE57G75Yir44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ+mFjee9rumhueamguiniOeahOWIl+mFjee9rumhuei/h+a7pOWZqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAn5Y+v5Zyo5Luj55CG55WM6Z2i6YWN572u6aG55qaC6KeI5Lit6L+H5ruk55qE5YiX44CC5rOo5oSP77ya5Y+q5YWB6K645L2/55So6YWN572u6aG55bGe5oCn5ZKM5Yqo5oCB5a2X5q61IChEeW5hbWljRmllbGRfTmFtZVgp44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ+mFjee9rumghSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn5re75Yqg6YWN572u6aG555uu44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn6YWN572u6aG555uu57yW6L6R44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6YWN572u6aG55LqL5Lu25qih5Z2X77yM5Y+v5bCG5pel5b+X6K6w5b2V5Yiw5Luj55CG55WM6Z2i55qE5Y6G5Y+y6K6w5b2V5Lit44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ+mFjee9rumhueS6i+S7tuaooeWdl++8jOeUqOS6juWwhumFjee9rumhueabtOaWsOS4uuW9k+WJjeWumuS5ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ+mFjee9rumhueebruWOhuWPsuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfphY3nva7pobnnm67miZPljbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICfphY3nva7pobnnm67nvKnmlL7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICfphY3nva7pobnmoJHlvaLop4blm74nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAn6YWN572u6aG555uu54mI5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ+S7peS4i+exu+WIq+eahOmFjee9rumhueWwhuS4jeS8muWtmOWCqOWcqCBFbGFzdGljc2VhcmNoIOacjeWKoeWZqOS4iuOAguimgeWwhuatpOW6lOeUqOS6jueOsOacieeahCBDSe+8jOW/hemhu+WcqOabtOaUueatpOmAiemhueWQjumAmui/h+aOp+WItuWPsOi/kOihjCBDSSDov4Hnp7vjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAn5YW35pyJ5Lul5LiL6YOo572y54q25oCB55qE6YWN572u6aG55bCG5LiN5Lya5a2Y5YKo5ZyoIEVsYXN0aWNzZWFyY2gg5pyN5Yqh5Zmo5LiK44CC6KaB5bCG5q2k5bqU55So5LqO546w5pyJ55qEIENJ77yM5b+F6aG75Zyo5pu05pS55q2k6YCJ6aG55ZCO6YCa6L+H5o6n5Yi25Y+w6L+Q6KGMIENJIOi/geenu+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfphY3nva7pobnnm67pmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ+avj+mhtemFjee9rumhueebrumZkOWItuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAn6YWN572u566h55CG5pWw5o2u5bqT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfphY3nva7pobnmibnph4/mqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6YWN572u6aG55pCc57Si5Luj55CG5o6l5Y+j55qE5ZCO56uv6Lev55Sx5Zmo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ+WJteW7uuWSjOeuoeeQhumFjee9rumgheWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ+WcqOeJueWumuaXtumXtOeCueS4uiBDb25maWdJdGVtcyDliJvlu7ogVGlja2V0c+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICflrqLmiLflj6/ku6Xmn6XnnIvljoblj7IgQ0kg54mI5pys44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ+WuouaIt+WPr+S7peaJi+WKqOWIh+aNouWOhuWPsiBDSSDniYjmnKzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICflnKjphY3nva7pobnmkJzntKLlsY/luZXnmoTlsZ7mgKfkuIrkvb/nlKjnmoTpu5jorqTmlbDmja7jgILkvovlpoLvvJoiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9Mjsi44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAn5Zyo6YWN572u6aG55pCc57Si5bGP5bmV55qE5bGe5oCn5LiK5L2/55So55qE6buY6K6k5pWw5o2u44CC5L6L5aaC77yaIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7IuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn5a6a5LmJ5Y+v5Zyo6ZO+5o6l5a+56LGhIHdpZGdldCDkuK3kvb/nlKjorr7nva7mjInpkq7nmoTmk43kvZzvvIhMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4Iu+8ieOAguivt+azqOaEj++8jOi/meS6m+aTjeS9nOW/hemhu+W3suazqOWGjOS7peS4iyBKUyDlkowgQ1NTIOaWh+S7tu+8mkNvcmUuQWxsb2NhdGlvbkxpc3QuY3Nz44CBQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qc+OAgUNvcmUuVUkuVGFibGUuU29ydC5qc+OAgUNvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIOWSjCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ+S4uueJiOacrOWtl+espuS4suWumuS5ieS4gOS4qiBUZW1wbGF0ZTo6VG9vbGtpdCDmlrnmoYjjgILku4XlnKjniYjmnKzlrZfnrKbkuLLmqKHlnZforr7nva7kuLogVGVtcGxhdGVUb29sa2l0IOaXtuS9v+eUqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBsaXN0IG9mIGR5bmFtaWMgZmllbGQgb2JqZWN0IHR5cGVzIHdoaWNoIGFyZSBhbGxvd2VkIHRvIGJlIGFzc2lnbmVkIHRvIGFjdGlvbnMgb2YgdGhpcyBwYWNrYWdlIHZpYSB0aGUgZHluYW1pYyBmaWVsZCBzY3JlZW5zIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ+WumuS5ieS4gOe7hOWFgeiuuOWuouaIt+afpeeci+mFjee9rumhueeahOadoeS7tuOAguWPr+mAieaLqeWwhuadoeS7tumZkOWItuS4uuafkOS6m+WuouaIt+e7hOOAguWQjeensOaYr+WUr+S4gOeahOW8uuWItuWxnuaAp+OAguWmguaenOayoeaciee7meWHuuWFtuS7lumAiemhue+8jOWImeivpeexu+WIq+S4i+eahOaJgOaciemFjee9rumhuemDveWwhuWPr+ingeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5L2/55So6YCa55So5o6l5Y+j5Yig6ZmkIElUU00g6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6Pojrflj5YgSVRTTSDphY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS9v+eUqOmAmueUqOaOpeWPo+aQnOe0oiBJVFNNIOmFjee9rumhueaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5L2/55So6YCa55So5o6l5Y+j6K6+572uIElUU00g6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ+WumuS5ieS4gOS4quamguiniOaooeWdl++8jOeUqOS6juaYvuekuumFjee9rumhueebruWIl+ihqOeahOWwj+inhuWbvuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICflrprkuYnmmK/lkKblv4XpobvlnKjoioLngrnov57mjqXkuK3mmL7npLrpk77mjqXnsbvlnovmoIfnrb7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ+S4uuavj+S4qiBDb25maWdJdGVtIOexu+WNleeLrOWumuS5ieato+WImeihqOi+vuW8j++8jOS7peajgOafpSBDb25maWdJdGVtIOWQjeensOW5tuaYvuekuuebuOW6lOeahOmUmeivr+S/oeaBr+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ+agueaNriBDSSDnsbvliKvlrprkuYnphY3nva7pobnmpoLop4jkuK0gQ0kg55qE5Y+v55So5YiX44CC5q+P5Liq5p2h55uu5b+F6aG75YyF5ZCr5LiA5Liq57G75ZCN5ZKM55u45bqU57G755qE5Y+v55So5a2X5q615pWw57uE44CC5Yqo5oCB5a2X5q615p2h55uu5b+F6aG76YG15a6IIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUg5pa55qGI44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnku6PnkIbnlYzpnaLphY3nva7pobnmkJzntKLnu5PmnpzkuK3phY3nva7pobnmjpLluo/nmoTpu5jorqTphY3nva7pobnlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieWuouaIt+eVjOmdoumFjee9rumhueaQnOe0oue7k+aenOS4remFjee9rumhueaOkuW6j+eahOm7mOiupOmFjee9rumhueWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ+WumuS5ieatpOaTjeS9nOeahOmFjee9rumhueaQnOe0oue7k+aenOeahOmFjee9rumhueaOkuW6j+m7mOiupOmFjee9rumhueWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5a6a5LmJ5Luj55CG55WM6Z2i6YWN572u6aG55pCc57Si57uT5p6c5Lit55qE6buY6K6k6YWN572u6aG56aG65bqP44CC5LiK77ya5pyA5pen55qE5Zyo5pyA5YmN6Z2i44CC5LiL77ya5pyA5paw55qE5Zyo5LiK44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICflrprkuYnlrqLmiLfnlYzpnaLphY3nva7pobnmkJzntKLnu5PmnpzkuK3nmoTpu5jorqTphY3nva7pobnpobrluo/jgILkuIrvvJrmnIDml6fnmoTlnKjmnIDliY3pnaLjgILkuIvvvJrmnIDmlrDnmoTlnKjkuIrjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5a6a5LmJ5q2k5pON5L2c55qE6YWN572u6aG55pCc57Si57uT5p6c5Lit55qE6buY6K6k6YWN572u6aG56aG65bqP44CC5LiK77ya5pyA5pen55qE5Zyo5pyA5YmN6Z2i44CC5LiL77ya5pyA5paw55qE5Zyo5LiK44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfmoLnmja4gQ0kg57G75a6a5LmJ6YWN572u6aG55qaC6KeI5Lit6buY6K6k5pi+56S655qEIENJIOWIl+OAguavj+S4quadoeebruW/hemhu+WMheWQq+S4gOS4quexu+WQjeWSjOebuOW6lOexu+eahOWPr+eUqOWtl+auteaVsOe7hOOAguWKqOaAgeWtl+auteadoeebruW/hemhu+mBteWuiCBEeW5hbWljRmllbGRfRmllbGROYW1lIOaWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICflrprkuYnpu5jorqTmmL7npLrnmoTlhbPns7vmt7HluqbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJ6YWN572u6aG555uu5pCc57Si55WM6Z2i6buY6K6k5pi+56S655qE6YWN572u6aG555uu5pCc57Si5bGe5oCn44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICflrprkuYnphY3nva7pobnmkJzntKLlsY/luZXpu5jorqTmmL7npLrnmoTphY3nva7pobnmkJzntKLlsZ7mgKfjgIJFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzTvvJtTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDHvvJtTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI277ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDDvvJtTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAx77ybU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01Oe+8m1wn5ZKM5oiWIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnO+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn5a6a5LmJICJJVFNNQ29uZmlnSXRlbSAi57G755qE6buY6K6k5a2Q5a+56LGh44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfmoLnmja4gQ0kg57G75Yir5a6a5LmJ6YWN572u6aG55qaC6KeI5LitIENJIOeahOWPr+eUqOWIl+OAguavj+S4quadoeebruW/hemhu+WMheWQq+S4gOS4quexu+WQjeWSjOebuOW6lOexu+eahOWPr+eUqOWtl+auteaVsOe7hOOAguWKqOaAgeWtl+auteadoeebruW/hemhu+mBteWuiCBEeW5hbWljRmllbGRfRmllbGROYW1lIOaWueahiOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICflrprkuYnor6XlsY/luZXlr4zmlofmnKznvJbovpHlmajnu4Tku7bnmoTpq5jluqbjgILovpPlhaXmlbDlrZfvvIjlg4/ntKDvvInmiJbnmb7liIbmr5TlgLzvvIjnm7jlr7nlgLzvvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ566h55CG55WM6Z2i5LitIENJIOWumuS5iee8lui+keWZqOeahOihjOaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICflrprkuYnkuovku7bnirbmgIHku47pq5jliLDkvY7vvIjlpoLnjq/nirbvvInnmoTpobrluo/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICflrprkuYnnm7jlhbPpg6jnvbLnirbmgIHvvIzlhbbkuK3pk77mjqXnmoTnpajljZXlj6/lvbHlk40gQ0kg55qE54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJIEFnZW50SVRTTUNvbmZpZ0l0ZW0g5bGP5bmV55qE5pCc57Si6ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gg5bGP5bmV55qE5pCc57Si6ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJ5a6i5oi3SVRTTUNvbmZpZ0l0ZW0g5bGP5bmV55qE5pCc57Si6ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJ5a6i5oi3SVRTTUNvbmZpZ0l0ZW1TZWFyY2gg5bGP5bmV55qE5pCc57Si6ZmQ5Yi244CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn5a6a5LmJ6ZO+5o6l6KGo5aSN5ZCI6KeG5Zu+5Lit5omA5pyJIENJIOexu+eahCBDSSDmmL7npLrliJfjgILlpoLmnpzmsqHmnInmnaHnm67vvIzliJnmmL7npLrpu5jorqTliJfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ+agueaNriBDSSDnsbvliKvvvIzlrprkuYnpk77mjqXooajlpI3lkIjop4blm77kuK3mmL7npLrnmoQgQ0kg5YiX44CC5q+P5Liq5p2h55uu6YO95b+F6aG75Lul57G75ZCN5ZKM5Y+M5YaS5Y+35Li65YmN57yA77yI5aaCIENvbXB1dGVyOjrvvInjgILmiYDmnIkgQ0kg6YO95pyJ5LiA5Lqb5YWx5ZCM55qEIENJIOWxnuaAp++8iOS7pSAi6K6h566X5py6ICLnsbvkuLrkvovvvJpDb21wdXRlcjo6TmFtZeOAgUNvbXB1dGVyOjpDdXJEZXBsU3RhdGXjgIFDb21wdXRlcjo6Q3JlYXRlVGltZe+8ieOAguimgeaYvuekuiBDSSDlrprkuYnkuK3lrprkuYnnmoTljZXkuKogQ0kg5bGe5oCn77yM5b+F6aG75L2/55So5Lul5LiL5pa55qGI77yI5Lul6K6h566X5py657G75Li65L6L77yJ77yaQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEu5aaC5p6c5rKh5pyJIENJIOexu+adoeebru+8jOWImeaYvuekuum7mOiupOWIl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ+WumuS5ieWTquS6m+mhueebruWPr+eUqOS6jiBJVFNNIENvbmZpZyDpobnnm64gQUNMIOe7k+aehOesrOS4ieWxguS4reeahCAi5pON5L2cIuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ+WumuS5iSBJVFNNIENvbmZpZyDpobnnm64gQUNMIOe7k+aehOesrOS4gOWxguS4reeahOWPr+eUqOmhueebruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICflrprkuYkgSVRTTSBDb25maWcg6aG555uuIEFDTCDnu5PmnoTnrKzkuozlsYLkuK3nmoTlj6/nlKjpobnnm67jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn5a6a5LmJ5ZOq56eN57G75Z6L55qE6ZO+5o6l77yI5LuO56Wo5o2u6KeS5bqm5ZG95ZCN77yJ5Lya5b2x5ZON6ZO+5o6lIENJIOeahOeKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ+WumuS5ieWTquenjeexu+Wei+eahOelqOWNleS8muW9seWTjemTvuaOpSBDSSDnmoTnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICflrprkuYnmm7TmlrAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+WIoOmZpOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ+mDqOe9sueKtuaAgeminOiJsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfpg6jnvbLnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn6KSH6KO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAn5Yqo5oCB5a2X5q615LqL5Lu25qih5Z2X77yM55So5LqO5Zyo5YyF5ZCr55qE5Yqo5oCB5a2X5q615Y+R55Sf5Y+Y5YyW5pe25bCG6YWN572u6aG55a6a5LmJ5qCH6K6w5Li65LiN5ZCM5q2l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLnmoTpmYTliqAgSVRTTSDlrZfmrrXlsY/luZXkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6i5oi355WM6Z2i6YWN572u6aG555uu5qaC6KeI5bGP5bmV5Lit5pi+56S655qE5Yqo5oCB5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLnmoTphY3nva7pobnmkJzntKLlsY/luZXkuK3mmL7npLrnmoTliqjmgIHlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn5ZCv55So6YWN572u6aG55om56YeP5pON5L2c5Yqf6IO977yM5L2/5Luj55CG5YmN5Y+w6IO95ZCM5pe25aSE55CG5aSa5Liq6YWN572u6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfku4Xlr7nliJflh7rnmoTnu4TlkK/nlKjphY3nva7pobnmibnph4/mk43kvZzlip/og73jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAn5ZCv55SoL+emgeeUqOajgOafpSBJVFNNIOmFjee9rumhueaYr+WQpuWFt+acieWUr+S4gOWQjeensOeahOWKn+iDveOAguWQr+eUqOatpOmAiemhueWJje+8jOW6lOajgOafpeezu+e7n+S4reaYr+WQpuWtmOWcqOWQjeensOmHjeWkjeeahOmFjee9rumhueOAguaCqOWPr+S7peS9v+eUqOaOp+WItuWPsOWRveS7pCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMg6L+b6KGM5qOA5p+l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ+WcqCB0aWNrZXQtY29uZmlnaXRlbS1saW5rIOS4iuiuvue9riBjb25maWdpdGVtLXN0YXR1cyDnmoTkuovku7bmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAn6YWN572u6aG557Si5byV5a2X5q6177yM55So5LqO5YWo5paH5pCc57Si44CC5a2X5q615Lmf5Lya6KKr5a2Y5YKo77yM5L2G5a+55LqO5pW05L2T5Yqf6IO95p2l6K+05bm26Z2e5b+F6aG744CC5Y+v6YCa6L+H5bCG5p2h55uu6K6+572u5Li6IDAg5oiW5Yig6Zmk5p2l56aB55So6ZmE5Lu255qE5YyF5ZCr44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICflrZjlgqjlnKjphY3nva7pobnntKLlvJXkuK3nmoTlrZfmrrXvvIzpmaTnlKjkuo7lhajmlofmo4DntKLlpJbvvIzov5jlj6/nlKjkuo7lhbbku5bnlKjpgJTjgILkuLrkuoblrp7njrDlrozmlbTnmoTlip/og73vvIzmiYDmnInlrZfmrrXpg73mmK/lv4XloavlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICflj6/ku6XkuLrmr4/kuKogd2Vic2VydmljZe+8iOmUru+8ieWumuS5ieS4gOS4quexu++8iOWAvO+8ieaVsOe7hO+8jOWcqOatpOWfuuehgOS4iumZkOWItuWvvOWFpeOAguWvueS6juaJgOaciemAieWumueahOexu+aIluaJgOacieeOsOacieeahOexu++8jOW/hemhu+WcqOiwg+eUqOiAhemFjee9ruS4remAieaLqeivhuWIq+WxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfnlKjkuo4gQ29uZmlnSXRlbUZldGNoIOiwg+eUqOWxgueahCBHZW5lcmljSW50ZXJmYWNlIOaooeWdl+azqOWGjOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+eUqOS6jiBDb25maWdJdGVtRmV0Y2gg6LCD55So5bGC55qEIEdlbmVyaWNJbnRlcmZhY2Ug5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+eUqOS6jiBDb25maWdJdGVtRmV0Y2gg6LCD55So5bGC55qEIEdlbmVyaWNJbnRlcmZhY2Ug5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00g6YWN572u6aG555uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTSDphY3nva7pobnnm67mpoLop4jjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAn54q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfkuovku7bnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i55qE6YWN572u6aG55pCc57Si5Lit5YyF5ZCr6YOo572y54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLfnlYzpnaLnmoTphY3nva7pobnnm67mkJzntKLkuK3ljIXlkKvkuovku7bnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ+WcqOatpOaTjeS9nOe7k+aenOS4reaYvuekuueahOmFjee9rumhueeahOacgOWkp+aVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ+ajgOafpei0n+i0o+ePree6p+eahOWwj+e7hOeahOaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ+aooeWdl++8jOeUqOS6juajgOafpei0n+i0o+mFjee9rumhueeahOe7hOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ+eUn+aIkCBJVFNNIOmFjee9rumhuee7n+iuoeaVsOaNrueahOaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ+WQjeensOaooeWdlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAn57yW5Y+35qih5Z2XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouaQnOe0oue7k+aenOeahOavj+S4gOmhteS4reaYvuekuueahOmFjee9rumhueaVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrqLmiLfnlYzpnaLmkJzntKLnu5Pmnpzmr4/pobXmmL7npLrnmoTphY3nva7pobnmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICfopoHmkJzntKLnmoTlr7nosaHjgIHmnaHnm67mlbDph4/ku6Xlj4ropoHmmL7npLrnmoTlsZ7mgKfjgILphY3nva7pobnlsZ7mgKflv4XpobvpgJrov4cgRWxhc3RpY3NlYXJjaCDmmI7noa7lrZjlgqjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn5qaC5rOBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvliKvnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflsI/phY3nva7pobnnm67mpoLop4jnmoTliJfov4fmu6Tlmajlj4LmlbDjgILor7fms6jmhI/vvJrlsIYgIkFjdGl2Ze+8iOa0u+WKqO+8iSLorr7nva7kuLogMCDlj6rkvJrpmLvmraLku6PnkIblnKjlhbbkuKrkurrlgY/lpb3orr7nva7kuK3nvJbovpHor6Xnu4TnmoTorr7nva7vvIzkvYbku43lhYHorrjnrqHnkIblkZjnvJbovpHlhbbku5bnlKjmiLfnmoTorr7nva7jgILkvb/nlKggIlByZWZlcmVuY2VHcm91cO+8iOWBj+Wlvee7hO+8iSLlj6/mjqfliLbov5nkupvorr7nva7lupTmmL7npLrlnKjnlKjmiLfnlYzpnaLnmoTlk6rkuKrljLrln5/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remDqOe9sueKtuaAgeminOiJsueahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remDqOe9sueKtuaAgeeahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfpgJrnlKjnm67lvZXlsZ7mgKfmnYPpmZDnu4TnpLrkvovnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvlkI3np7DmqKHlnZfnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remFjee9rumhueexu+WIq+eahOe8luWPt+aooeWdl+WPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfpobXpnaLvvIjmmL7npLrphY3nva7pobnnmoTpobXpnaLvvInlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G755qE54mI5pys5a2X56ym5Liy5qih5Z2X5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn55So5LqO5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G755qE54mI5pys5a2X56ym5Liy5qih5p2/5bel5YW35YyF5qih5Z2X5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remFjee9rumhueexu+eahOeJiOacrOinpuWPkeWZqOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ+S4uuavj+S4qumFjee9rueahCBXZWJzZXJ2aWNlIOeahOavj+S4quS6i+S7tu+8iOS9nOS4uuiwg+eUqOiAhe+8ieaJp+ihjOmFjee9rueahOaTjeS9nOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAn5p2D6ZmQ57uEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqCBJVFNNIOmFjee9rumhueebrumZhOS7tuaTjeS9nOaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55SoIElUU00g6YWN572u6aG555uu5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55SoIElUU00g6YWN572u6aG555uu5pCc57Si5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i5L2/55SoIElUU00g6YWN572u6aG555uu5pCc57Si5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55SoIElUU00g6YWN572u6aG555uu5qCR6KeG5Zu+5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqCBJVFNNIOmFjee9rumhueebrue8qeaUvuWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S9v+eUqOS7o+eQhueVjOmdouS4reeahOa3u+WKoCBJVFNNIOmFjee9rumhueebruWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLkuK3kvb/nlKjmibnph48gSVRTTSDphY3nva7pobnnm67lsY/luZXmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5L2/55So5Luj55CG55WM6Z2i5Lit55qE57yW6L6RIElUU00g6YWN572u6aG555uu5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqOWOhuWPsiBJVFNNIOmFjee9rumhueebruWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55So5omT5Y2wIElUU00g6YWN572u6aG555uu5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfliKDpmaTphY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfmkJzntKLphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ+W9k+elqOWNlemTvuaOpeWIsCBDSSDml7bvvIzoh6rliqjorr7nva4gQ0kg55qE5LqL5Lu254q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i55qE6YWN572u6aG55om56YeP5bGP5bmV5Lit6K6+572u6YOo572y54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoueahOmFjee9rumhueebruaJuemHj+eVjOmdouS4reiuvue9ruS6i+S7tueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aYvuekuuiPnOWNleS4reeahOmTvuaOpe+8jOWFgeiuuOWcqOS7o+eQhueVjOmdoueahOmFjee9rumhuee8qeaUvuinhuWbvuS4reWwhuS4gOS4qumFjee9rumhueS4juWPpuS4gOS4quWvueixoeebuOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoueahOmFjee9rumhueebruamguiniOS4reaYvuekuuS4gOS4quiPnOWNlemTvuaOpe+8jOeUqOS6juiuv+mXrumFjee9rumhueebrueahOWOhuWPsuiusOW9leOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmmL7npLroj5zljZXkuK3nmoTpk77mjqXvvIzku6Xkvr/lnKjku6PnkIbnlYzpnaLnmoTnvKnmlL7op4blm77kuK3orr/pl67phY3nva7pobnnmoTljoblj7LorrDlvZXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLnvKnmlL7op4blm77nmoToj5zljZXkuK3mmL7npLrliKDpmaTphY3nva7pobnnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ+WcqOiPnOWNleS4reaYvuekuuS4gOS4qumTvuaOpe+8jOS7peagkeW9ouinhuWbvuaYvuekuumFjee9rumhuemTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoueahOmFjee9rumhueebruamguiniOS4reaYvuekuuiPnOWNlemTvuaOpe+8jOS7peWkjeWItumFjee9rumhueebruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjoj5zljZXkuK3mmL7npLrkuIDkuKrpk77mjqXvvIznlKjkuo7lnKjku6PnkIbnlYzpnaLnmoTnvKnmlL7op4blm77kuK3lpI3liLbkuIDkuKrphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoueahOe8qeaUvuinhuWbvuS4reaYvuekuue8lui+kemFjee9rumhueeahOiPnOWNlemTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq6ZO+5o6l77yM55So5LqO6L+U5Zue5Luj55CG55WM6Z2i55qE6YWN572u6aG557yp5pS+6KeG5Zu+44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i55qE57yp5pS+6KeG5Zu+5Lit5pi+56S66I+c5Y2V6ZO+5o6l77yM5Lul5omT5Y2w6YWN572u6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq6ZO+5o6l77yM55So5LqO5pS+5aSn5Luj55CG55WM6Z2i6YWN572u6aG55qaC6KeI5Lit55qE6YWN572u6aG544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmmL7npLrku6PnkIbnlYzpnaLkuK3nmoTphY3nva7pobnnm67ljoblj7LorrDlvZXvvIjpgIbluo/vvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAn5aaC5p6c5pyq6YCJ5oup5Lu75L2V57G75Yir77yM5YiZ5pi+56S66buY6K6k57G75Yir44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfphY3nva7pobnnmoTmoIfor4bnrKbvvIzlpoIgQ29uZmlnSXRlbSPjgIFNeUNvbmZpZ0l0ZW0j44CC6buY6K6k5Li6IENvbmZpZ0l0ZW0j44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAn6Ieq5Yqo6Kem5Y+RIENvbmZpZ0l0ZW1GZXRjaCDosIPnlKjlmajjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ+eJiOacrOWtl+espuS4suihqOi+vuW8jyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICfniYjmnKzlrZfnrKbkuLLmqKHlnZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAn54mI5pys6Kem5Y+R5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICfmmK/lkKblj6/ku6XpgJrov4fmo4Dmn6XnvJPlrZjlrZfmrrXkvp3otZblhbPns7vmnaXpgb/lhY3miafooYwgQ29uZmlnSXRlbUFDTOOAgui/meWPr+S7pee8qeefreihqOagvOeahOWKoOi9veaXtumXtO+8jOS9huWmguaenOimgeWcqCBJVFNNQ29uZmlnSXRlbSDlkowgRm9ybS1SZXR1cm5UeXBlIOS4reS9v+eUqCBBQ0wg5qih5Z2X77yM5YiZ5b+F6aG756aB55So44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICfmoIfpopjkuK3mmL7npLrkuoblk6rkupvkuIDoiKzkv6Hmga/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfnsbsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn5YWo55CDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn5ZCO55Sf5LqnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfnlJ/mrpbliY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ+eUn+S6p+aApyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVe+8mjE3LjUg6Iux5a+477yINDQuNDUg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlXvvJoyMSDoi7Hlr7jvvIg1My4zNCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1Ve+8mjI2LjI1IOiLseWvuO+8iDY2LjY4IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFXvvJozMS41IOiLseWvuO+8iDgwLjAxIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOSDoi7Hlr7jmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFV77yaMS43NSDoi7Hlr7jvvIg0LjQ1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFXvvJozNSDoi7Hlr7jvvIg4OC45IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMSDoi7Hlr7jmlK/mnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJV77yaMzguNSDoi7Hlr7jvvIg5Ny43OSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMg6Iux5a+45py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMuNiDoi7Hlr7jvvIg2MDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRV77yaNDIg6Iux5a+477yIMTA2LjY4IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3Ve+8mjQ3LjI1IOiLseWvuO+8iDEyMC4wMiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlXvvJozLjUg6Iux5a+477yIOC44OSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVe+8mjUyLjUg6Iux5a+477yIMTMzLjM1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLjUg6Iux5a+477yIODAwIOavq+exs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVe+8mjU3Ljc1IOiLseWvuO+8iDE0Ni42OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNS40IOiLseWvuO+8iDkwMCDmr6vnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlXvvJo2MyDoi7Hlr7jvvIgxNjAuMDIg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LjQg6Iux5a+477yIMTAwMCDmr6vnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVXvvJo2OC4yNSDoi7Hlr7jvvIgxNzMuMzUg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1XvvJo1LjI1IOiLseWvuO+8iDEzLjM0IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJV77yaNzMuNSDoi7Hlr7jvvIgxODYuNjkg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0My4zIOiLseWvuO+8iDExMDAg5q+r57Gz77yJ77yaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVV77yaNzguNzUg6Iux5a+477yIMjAwLjAyIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0Ny4yIOiLseWvuO+8iDEyMDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhV77yaODQg6Iux5a+477yIMjEzLjM2IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRV77yaNyDoi7Hlr7jvvIgxNy43OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1Ve+8mjguNzUg6Iux5a+477yIMjIuMjMg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlXvvJoxMC41IOiLseWvuO+8iDI2LjY3IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3Ve+8mjEyLjI1IOiLseWvuO+8iDMxLjEyIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4Ve+8mjE0IOiLseWvuO+8iDM1LjU2IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5Ve+8mjE1Ljc1IOiLseWvuO+8iDQwLjAxIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ+S8muiuoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ+WcsOWdgOWIhumFjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn566h55CG5ZGYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ+aooeaLn+eUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ+iuvuWkh+exu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ+eUteaxoOWuuemHj++8iOWuieaXtu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICfnlLXmsaDnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICflpKflu4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ+aAu+e6v+aOpeWPoyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVSDnrYnnuqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ+WuuemHj++8iEdC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn5q+P5Liq5Zu+5b2i5Y2h55qE5a656YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAn5Y2h5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAn6K+75Y2h5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ+WNoeeJh+exu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn5a6i5oi36K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ+WuouaIt+err+i9r+S7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICflrqLmiLfnsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAn5pe26ZKf6aKR546HJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICfml7bpkp/pgJ/luqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ+S7o+eggeetvuWQjeivgeS5pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAn5Lya6K6u55S16K+dJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAn5ZKo6K+i5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICfogZTns7vmlrnlvI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ+iBlOezu+e7j+mUgOWVhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ+mbhuijheeuseeuoeeQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ+WQiOWQjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAn5ZCI5ZCM57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAn5ZCI5ZCM5pyf5LuOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ+WQiOWQjOacn+iHsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICfml6Dnu7PnlLXor53vvIhERUNUIOeUteivne+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfmiJDmnKzljZXkvY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICforrjlj6/or4HmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ+WIm+W7uuaXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn5a6a5Yi25py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIOS/neeVmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TIOacjeWKoeWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn5Y+R56Wo5pel5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICforqLotK3ml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ+aOiOadg+aXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICflj5HluIPml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ+ahjOS4iuWei+mbu+iFpic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn5paH5Lu2562+5ZCN6K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSDmnLrmnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ+eUteWtkOmCruS7tuivgeS5pu+8iFMvTUlNRSDor4HkuabvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAn6ZuH5L2j5ZCI5ZCMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAn57uI56uvIElQIOWcsOWdgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ+aUr+aMgee7k+adnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ+acieaViOacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAn5aSW572u56Gs55uYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAn6Ziy54Gr5aKZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAn5Zu65Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAn6aOe6L2u5YKo6IO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAn5aSW5b2i5bC65a+4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICfnibnorrjnu4/okKXljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICflhY3osrvou5/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn5LiA6Iis5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAn5Zu+5b2i5Y2hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICflm77lvaLljaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICfnoazku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICfnoazku7blnovlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAn56Gs5Lu26YeN6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICfogLPmnLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCDljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAn6Lqr5Lu95ZKM6K6/6Zeu566h55CG77yISUFN77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICflupPlrZjnvJblj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICfovazmjaLmiJDmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICflj5Hnpajlj7fnoIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfpjbXnm6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENEIOaYvuekuuWZqO+8iOa2suaZtuaYvuekuuWZqO+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVEIOaYvuekuuWZqO+8iOWPkeWFieS6jOaegeeuoe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICflm7rlrprnlLXor50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn562G6KiY5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAn57qs5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAn56ysIDEg5bGC77ya54mp55CG5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ+esrCAyIOWxgu+8muaVsOaNrumTvui3r+Wxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAn56ysIDMg5bGC77ya572R57uc5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ+esrCAzIOWxgu+8mue9kee7nOWxgu+8iOi2hee6p+e9ke+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICfnrKwgNCDlsYLvvJrkvKDovpPlsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ+esrCA1IOWxgu+8muS8muivneWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICfnrKwgNiDlsYLvvJrmmL7npLrlsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICfnrKwgNyDlsYLvvJrlupTnlKjlsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAn56ef6LWB5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAn6K645Y+v5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICforrjlj6/or4Hlr4bpkqUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAn6K645Y+v6K+B57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICforrjlj6/or4HmnInmlYjmnJ/ku44nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICforrjlj6/or4HmnInmlYjmnJ/oh7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ+ejt+mFuOmTgemUgu+8iExpRmVQTzTvvInnlLXmsaAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ+mUguemu+WtkO+8iExpLUlvbu+8ieeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ+i0t+asvuWNj+iuric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAn5L2N5LqOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ+e7j+W6pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ+WItumAoOWVhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAn5pyA5aSn6LSf6L296IO95Yqb77yI55Om77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ+WGheWtmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ+WGheWtmOexu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAn6L+35L2g5py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICfmiYvmnLrlj7fnoIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAn56e75YqoL+W1jOWFpeW8jyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ+Wei+iZnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ+Wei+WPt+ivtOaYjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICfmmL7npLrlmajliIbovqjnjocnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAn5pi+56S65Zmo5bC65a+4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAn5ruR6bygJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICfnvZHnu5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAn572R57uc5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICfnvZHnu5zkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ+e9kee7nOWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ+mVjemVie+8iE5pQ2TvvInnlLXmsaAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICfplY3msKLvvIhOaU1I77yJ55S15rGgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ+S/neWvhuWNj+iuru+8iE5EQe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ+eslOiusOacrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ0NQVSDmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAn5YaF5a2Y5qih5Z2X5pWw6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ+WbvuW9ouWNoeaVsOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCDmmL7npLrlmajvvIjmnInmnLrlj5HlhYnkuozmnoHnrqHvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAn6L+Q6JCl5oiQ5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ+iuouWNleWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ+WFtuWugyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAn6L6T5Ye6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ+WvhueggSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ+WvhueggSAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ+WQiOS8meWNj+iuric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ+eUteivneWPt+eggSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAn55S16K+d57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAn54mp55CG56OB6IqvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAn55S15Yqb6L6T6YCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAn5ZyoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICfmnLrmnrbmt7HluqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICfmnLrmnrbljZXlhYMgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfmiL/plpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0g5Y2hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUyDor4HkuaYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICfplIDllK7lkIjlkIwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAn5Y2r5pif55S16K+dJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ+WvhuWwgemThemFuCAoU0xBKSDnlLXmsaAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICfluo/liJflj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAn5pyN5Yqh5Zmo6L2v5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAn5pyN5Yqh5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAn5pyN5Yqh5qCH562+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ+aPkuW6p+exu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ+i9r+S7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ+WPkeiogOS6uic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfmqJnmupYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ+WQr+WKqCBJUCDlnLDlnYAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ+WtmOWCqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ+WtmOWCqOWIhuWMuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ+mZhOWxnuacuuaehCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAn5pGY6KaBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAn55im5a6i5oi35py6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICfnur/nqIsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICfpm7fnlLUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ+aYvuWNoeaAu+WGheWtmO+8iEdC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAn5oC75YaF5a2Y77yIR0LvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ+inpuaRuOWxj+aYvuekuuWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ+WhlOalvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCIOmbhue6v+WZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ+aYvuWDj+euoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICfomZrmi5/kuJPnlKjnvZEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSIOWktOeblCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ+iZmuaLn+mTvuaOpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAn572R57uc55S16K+dJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICfnvZHnu5zmkYTlg4/lpLQnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBZGQgYWxsJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdBbiBpdGVtIHdpdGggdGhpcyBuYW1lIGlzIGFscmVhZHkgcHJlc2VudC4nLAogICAgJ0NhbmNlbCcsCiAgICAnQ29uZmlybScsCiAgICAnRGVsZXRlJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhpcyBpdGVtIHN0aWxsIGNvbnRhaW5zIHN1YiBpdGVtcy4gQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0gaW5jbHVkaW5nIGl0cyBzdWIgaXRlbXM/JywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AdminGenericInterfaceInvokerConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5HZW5lcmljSW50ZXJmYWNlSW52b2tlckNvbmZpZ0l0ZW07Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkV2Vic2VydmljZUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ1dlYnNlcnZpY2VJRCcgKTsKICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoJFdlYnNlcnZpY2VJRCkgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTmVlZCBXZWJzZXJ2aWNlSUQhJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ1dlYnNlcnZpY2VJRCcsCiAgICAgICAgVmFsdWUgPT4gJFdlYnNlcnZpY2VJRAogICAgKTsKCiAgICBteSAkV2Vic2VydmljZURhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlR2V0KAogICAgICAgIElEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRXZWJzZXJ2aWNlRGF0YSkgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDb3VsZCBub3QgZ2V0IGRhdGEgZm9yIFdlYnNlcnZpY2VJRCAlcycsICRXZWJzZXJ2aWNlSUQgKSwKICAgICAgICApOwogICAgfQoKICAgICRTZWxmLT5fRXh0cmFTZXR0aW5ncygKICAgICAgICBXZWJzZXJ2aWNlID0+ICRXZWJzZXJ2aWNlRGF0YS0+e05hbWV9LAogICAgKTsKCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkJyApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9BZGQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkQWN0aW9uJyApIHsKCiAgICAgICAgIyBDaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbi4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIHJldHVybiAkU2VsZi0+X0FkZEFjdGlvbigKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBXZWJzZXJ2aWNlRGF0YSA9PiAkV2Vic2VydmljZURhdGEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2UnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+X0NoYW5nZSgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBXZWJzZXJ2aWNlRGF0YSA9PiAkV2Vic2VydmljZURhdGEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2VBY3Rpb24nICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fQ2hhbmdlQWN0aW9uKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgICAgIFdlYnNlcnZpY2VEYXRhID0+ICRXZWJzZXJ2aWNlRGF0YSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RlbGV0ZUFjdGlvbicgKSB7CgogICAgICAgICMgQ2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPl9EZWxldGVBY3Rpb24oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQWRkRXZlbnQnICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fQWRkRXZlbnQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlRXZlbnQnICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fRGVsZXRlRXZlbnQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdJbnZhbGlkIFN1YmFjdGlvbiEnKSwKICAgICk7Cn0KCnN1YiBfQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnSW52b2tlclR5cGUnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgICAgICBDaGVjayAgICAgPT4gJ0ludm9rZXJUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKICAgIGlmICggJEdldFBhcmFtLT57RXJyb3J9ICkgewogICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRHZXRQYXJhbS0+e0Vycm9yfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU2VsZi0+X1Nob3dTY3JlZW4oCiAgICAgICAgJVBhcmFtLAogICAgICAgIE1vZGUgICAgICAgICAgPT4gJ0FkZCcsCiAgICAgICAgSW52b2tlckNvbmZpZyA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJEdldFBhcmFtLT57SW52b2tlclR5cGV9LAogICAgICAgIH0sCiAgICApOwp9CgpzdWIgX0FkZEFjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15IEBFeHRyYVBhcmFtczsKICAgIGZvciBteSAkU2VjdGlvbiAocXcvR2VuZXJhbCBSZXF1ZXN0IFJlc3BvbnNlLykgewogICAgICAgIGlmICggJFNlbGYtPntTZXR0aW5nc30gJiYgJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259ICkgewogICAgICAgICAgICBwdXNoIEBFeHRyYVBhcmFtcywgJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259LT5AKjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnSW52b2tlclR5cGUnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgICAgICBDaGVjayAgICAgPT4gJ0ludm9rZXJUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnSW52b2tlcicsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgRGVmYXVsdCA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnRGVzY3JpcHRpb24nLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdNYXBwaW5nSW5ib3VuZCcsCiAgICAgICAgICAgICAgICBUeXBlICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIENoZWNrID0+ICdNYXBwaW5nVHlwZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdNYXBwaW5nT3V0Ym91bmQnLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnTWFwcGluZ1R5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBARXh0cmFQYXJhbXMsCiAgICAgICAgXSwKICAgICk7CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIGlmICggJEdldFBhcmFtLT57RXJyb3J9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkR2V0UGFyYW0tPntFcnJvcn0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkV2Vic2VydmljZURhdGEgPSAkUGFyYW17V2Vic2VydmljZURhdGF9OwogICAgbXkgJUVycm9yczsKICAgIGlmICggIUlzU3RyaW5nV2l0aERhdGEoICRHZXRQYXJhbS0+e0ludm9rZXJ9ICkgKSB7CiAgICAgICAgJEVycm9yc3tJbnZva2VyU2VydmVyRXJyb3J9ID0gJ1NlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIEludm9rZXIgd2l0aCBzYW1lIG5hbWUgYWxyZWFkeSBleGlzdHMuCiAgICBlbHNpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0gKSApIHsKICAgICAgICAkRXJyb3Jze0ludm9rZXJTZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgIG15ICRJbnZva2VyQ29uZmlnID0gewogICAgICAgIERlc2NyaXB0aW9uID0+ICRHZXRQYXJhbS0+e0Rlc2NyaXB0aW9ufSwKICAgICAgICBUeXBlICAgICAgICA9PiAkR2V0UGFyYW0tPntJbnZva2VyVHlwZX0sCiAgICB9OwoKICAgIGZvciBteSAkUGFyYW1Db25maWcgKEBFeHRyYVBhcmFtcykgewogICAgICAgIGlmICggZXhpc3RzICRQYXJhbUNvbmZpZy0+e0Vycm9yRnVuY3Rpb259ICkgewogICAgICAgICAgICBteSAkRXJyb3IgPSAkUGFyYW1Db25maWctPntFcnJvckZ1bmN0aW9ufS0+KAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgR2V0UGFyYW0gPT4gJEdldFBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRFcnJvcikgewogICAgICAgICAgICAgICAgJEVycm9yc3sgJFBhcmFtQ29uZmlnLT57TmFtZX0gLiAnU2VydmVyRXJyb3InIH0gPSAkRXJyb3I7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRJbnZva2VyQ29uZmlnLT57ICRQYXJhbUNvbmZpZy0+e05hbWV9IH0gPSAkR2V0UGFyYW0tPnsgJFBhcmFtQ29uZmlnLT57TmFtZX0gfTsKICAgIH0KCiAgICAjIFZhbGlkYXRpb24gZXJyb3JzLgogICAgaWYgKCVFcnJvcnMpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7JEdldFBhcmFtfSwKICAgICAgICAgICAgJUVycm9ycywKICAgICAgICAgICAgTW9kZSAgICAgICAgICA9PiAnQWRkJywKICAgICAgICAgICAgSW52b2tlckNvbmZpZyA9PiAkSW52b2tlckNvbmZpZywKICAgICAgICApOwogICAgfQoKICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgISRHZXRQYXJhbS0+eyREaXJlY3Rpb259OwoKICAgICAgICAjIE1hcHBpbmcgYWRkZWQsIGluaXRpYWxpemUgd2l0aCBlbXB0eSBjb25maWcuCiAgICAgICAgJEludm9rZXJDb25maWctPnskRGlyZWN0aW9ufSA9IHsKICAgICAgICAgICAgVHlwZSA9PiAkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSwKICAgICAgICB9OwogICAgfQoKICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57SW52b2tlcn0tPnsgJEdldFBhcmFtLT57SW52b2tlcn0gfSA9ICRJbnZva2VyQ29uZmlnOwoKICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKS0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAleyRXZWJzZXJ2aWNlRGF0YX0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDb3VsZCBub3QgdXBkYXRlIHdlYiBzZXJ2aWNlJyksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkUmVkaXJlY3RVUkwgPQogICAgICAgICdBY3Rpb249JwogICAgICAgIC4gJFNlbGYtPntBY3Rpb259CiAgICAgICAgLiAnO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPScKICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgLiAnO0ludm9rZXI9JwogICAgICAgIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJEdldFBhcmFtLT57SW52b2tlcn0gKQogICAgICAgIC4gJzsnOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAkUmVkaXJlY3RVUkwsCiAgICApOwp9CgpzdWIgX0NoYW5nZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRHZXRQYXJhbSA9ICRTZWxmLT5fUGFyYW1zR2V0KAogICAgICAgIERlZmluaXRpb24gPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ0ludm9rZXInLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0V2ZW50VHlwZScsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgRGVmYXVsdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgaWYgKCAkR2V0UGFyYW0tPntFcnJvcn0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRHZXRQYXJhbS0+e0Vycm9yfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRXZWJzZXJ2aWNlRGF0YSA9ICRQYXJhbXtXZWJzZXJ2aWNlRGF0YX07CiAgICBteSAkSW52b2tlckNvbmZpZyAgPSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH07CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkSW52b2tlckNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDb3VsZCBub3QgZGV0ZXJtaW5lIGNvbmZpZyBmb3IgaW52b2tlciAlcycsICRHZXRQYXJhbS0+e0ludm9rZXJ9ICksCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICVQYXJhbSwKICAgICAgICAleyRHZXRQYXJhbX0sCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgIEludm9rZXIgICAgICAgICA9PiAkR2V0UGFyYW0tPntJbnZva2VyfSwKICAgICAgICBJbnZva2VyQ29uZmlnICAgPT4gJEludm9rZXJDb25maWcsCiAgICAgICAgTWFwcGluZ0luYm91bmQgID0+ICRJbnZva2VyQ29uZmlnLT57TWFwcGluZ0luYm91bmR9LT57VHlwZX0sCiAgICAgICAgTWFwcGluZ091dGJvdW5kID0+ICRJbnZva2VyQ29uZmlnLT57TWFwcGluZ091dGJvdW5kfS0+e1R5cGV9LAogICAgKTsKfQoKc3ViIF9DaGFuZ2VBY3Rpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBARXh0cmFQYXJhbXM7CiAgICBmb3IgbXkgJFNlY3Rpb24gKHF3L0dlbmVyYWwgUmVxdWVzdCBSZXNwb25zZS8pIHsKICAgICAgICBpZiAoICRTZWxmLT57U2V0dGluZ3N9ICYmICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufSApIHsKICAgICAgICAgICAgcHVzaCBARXh0cmFQYXJhbXMsICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufS0+QCo7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRHZXRQYXJhbSA9ICRTZWxmLT5fUGFyYW1zR2V0KAogICAgICAgIERlZmluaXRpb24gPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ09sZEludm9rZXInLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0ludm9rZXInLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBEZWZhdWx0ID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ0luYm91bmQnLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnTWFwcGluZ1R5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ091dGJvdW5kJywKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ01hcHBpbmdUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnQ29udGludWVBZnRlclNhdmUnLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0V2ZW50VHlwZScsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgRGVmYXVsdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQEV4dHJhUGFyYW1zLAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhID0gJFBhcmFte1dlYnNlcnZpY2VEYXRhfTsKICAgIG15ICRJbnZva2VyQ29uZmlnICA9IGRlbGV0ZSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e09sZEludm9rZXJ9IH07CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkSW52b2tlckNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCBkZXRlcm1pbmUgY29uZmlnIGZvciBpbnZva2VyICVzJywgJEdldFBhcmFtLT57T2xkSW52b2tlcn0gKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICVFcnJvcnM7CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW0tPntJbnZva2VyfSApICkgewogICAgICAgICRFcnJvcnN7SW52b2tlclNlcnZlckVycm9yfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBJbnZva2VyIHdhcyByZW5hbWVkIGFuZCBuZXcgbmFtZSBhbHJlYWR5IGV4aXN0cy4KICAgIGVsc2lmICgKICAgICAgICAkR2V0UGFyYW0tPntPbGRJbnZva2VyfSBuZSAkR2V0UGFyYW0tPntJbnZva2VyfQogICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0gKQogICAgICAgICkKICAgIHsKICAgICAgICAkRXJyb3Jze0ludm9rZXJTZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgICRJbnZva2VyQ29uZmlnLT57RGVzY3JpcHRpb259ID0gJEdldFBhcmFtLT57RGVzY3JpcHRpb259OwoKICAgIGZvciBteSAkUGFyYW1Db25maWcgKEBFeHRyYVBhcmFtcykgewogICAgICAgIGlmICggZXhpc3RzICRQYXJhbUNvbmZpZy0+e0Vycm9yRnVuY3Rpb259ICkgewogICAgICAgICAgICBteSAkRXJyb3IgPSAkUGFyYW1Db25maWctPntFcnJvckZ1bmN0aW9ufS0+KAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgR2V0UGFyYW0gPT4gJEdldFBhcmFtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRFcnJvcikgewogICAgICAgICAgICAgICAgJEVycm9yc3sgJFBhcmFtQ29uZmlnLT57TmFtZX0gLiAnU2VydmVyRXJyb3InIH0gPSAkRXJyb3I7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRJbnZva2VyQ29uZmlnLT57ICRQYXJhbUNvbmZpZy0+e05hbWV9IH0gPSAkR2V0UGFyYW0tPnsgJFBhcmFtQ29uZmlnLT57TmFtZX0gfTsKICAgIH0KCiAgICBpZiAoJUVycm9ycykgewogICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dTY3JlZW4oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJXskR2V0UGFyYW19LAogICAgICAgICAgICAlRXJyb3JzLAogICAgICAgICAgICBNb2RlICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgICAgICBJbnZva2VyICAgICAgID0+ICRHZXRQYXJhbS0+e09sZEludm9rZXJ9LAogICAgICAgICAgICBJbnZva2VyQ29uZmlnID0+ICRJbnZva2VyQ29uZmlnLAogICAgICAgICAgICBOZXdJbnZva2VyICAgID0+ICRHZXRQYXJhbS0+e0ludm9rZXJ9LAogICAgICAgICk7CiAgICB9CgogICAgIyBJZiBtYXBwaW5nIHR5cGVzIHdlcmUgbm90IGNoYW5nZWQsIGtlZXAgdGhlIG1hcHBpbmcgY29uZmlndXJhdGlvbi4KICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CgogICAgICAgICMgTm8gbWFwcGluZyBzZXQsIG1ha2Ugc3VyZSBpdCBpcyBub3QgcHJlc2VudCBpbiB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICBpZiAoICEkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSApIHsKICAgICAgICAgICAgZGVsZXRlICRJbnZva2VyQ29uZmlnLT57JERpcmVjdGlvbn07CiAgICAgICAgICAgIG5leHQgRElSRUNUSU9OOwogICAgICAgIH0KCiAgICAgICAgIyBNYXBwaW5nIGFkZGVkIG9yIGNoYW5nZWQsIGluaXRpYWxpemUgd2l0aCBlbXB0eSBjb25maWcuCiAgICAgICAgbXkgJE9sZE1hcHBpbmcgPSAkSW52b2tlckNvbmZpZy0+eyREaXJlY3Rpb259LT57VHlwZX07CiAgICAgICAgaWYgKCAhJE9sZE1hcHBpbmcgfHwgKCAkT2xkTWFwcGluZyAmJiAkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSBuZSAkT2xkTWFwcGluZyApICkgewogICAgICAgICAgICAkSW52b2tlckNvbmZpZy0+eyREaXJlY3Rpb259ID0gewogICAgICAgICAgICAgICAgVHlwZSA9PiAkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBVcGRhdGUgaW52b2tlciBjb25maWcuCiAgICAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9LT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0gPSAkSW52b2tlckNvbmZpZzsKCiAgICAjIFRha2UgY2FyZSBvZiBlcnJvciBoYW5kbGVycyB3aXRoIGludm9rZXIgZmlsdGVycyBpZiBpbnZva2VyIHdhcyByZW5hbWVkLgogICAgaWYgKAogICAgICAgICRHZXRQYXJhbS0+e09sZEludm9rZXJ9IG5lICRHZXRQYXJhbS0+e0ludm9rZXJ9CiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57RXJyb3JIYW5kbGluZ30gKQogICAgICAgICkKICAgIHsKICAgICAgICBteSAkRXJyb3JIYW5kbGluZ0NvbmZpZyA9ICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57RXJyb3JIYW5kbGluZ307CgogICAgICAgIEVSUk9SSEFORExJTkc6CiAgICAgICAgZm9yIG15ICRFcnJvckhhbmRsaW5nICggc29ydCBrZXlzICV7JEVycm9ySGFuZGxpbmdDb25maWd9ICkgewogICAgICAgICAgICBuZXh0IEVSUk9SSEFORExJTkcgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkRXJyb3JIYW5kbGluZ0NvbmZpZy0+eyRFcnJvckhhbmRsaW5nfSApOwoKICAgICAgICAgICAgbXkgJEludm9rZXJGaWx0ZXIgPSAkRXJyb3JIYW5kbGluZ0NvbmZpZy0+eyRFcnJvckhhbmRsaW5nfS0+e0ludm9rZXJGaWx0ZXJ9OwogICAgICAgICAgICBuZXh0IEVSUk9SSEFORExJTkcgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkSW52b2tlckZpbHRlcik7CgogICAgICAgICAgICBuZXh0IEVSUk9SSEFORExJTkcgaWYgIWdyZXAgeyAkXyBlcSAkR2V0UGFyYW0tPntPbGRJbnZva2VyfSB9IEB7JEludm9rZXJGaWx0ZXJ9OwoKICAgICAgICAgICAgIyBSZW5hbWUgaW52b2tlciBpbiBlcnJvciBoYW5kbGluZyBpbnZva2VyIGZpbHRlciB0byBrZWVwIGNvbnNpc3RlbmN5LgogICAgICAgICAgICBteSBATmV3SW52b2tlckZpbHRlciA9IG1hcCB7ICRfIGVxICRHZXRQYXJhbS0+e09sZEludm9rZXJ9ID8gJEdldFBhcmFtLT57SW52b2tlcn0gOiAkXyB9IEB7JEludm9rZXJGaWx0ZXJ9OwogICAgICAgICAgICAkRXJyb3JIYW5kbGluZ0NvbmZpZy0+eyRFcnJvckhhbmRsaW5nfS0+e0ludm9rZXJGaWx0ZXJ9ID0gXEBOZXdJbnZva2VyRmlsdGVyOwogICAgICAgIH0KCiAgICAgICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntFcnJvckhhbmRsaW5nfSA9ICRFcnJvckhhbmRsaW5nQ29uZmlnOwogICAgfQoKICAgICMgYWRkZWQgZm9yIE9UT0JPVGlja2V0SW52b2tlcgoKICAgICMgVGFrZSBjYXJlIG9mIGludm9rZXIgZGVwZW5kZW50IGNvbmZpZ3VyYXRpb24gaWYgaW52b2tlciB3YXMgcmVuYW1lZC4KICAgIGlmICggJEdldFBhcmFtLT57T2xkSW52b2tlcn0gbmUgJEdldFBhcmFtLT57SW52b2tlcn0gKSB7CgogICAgICAgICMgSW52b2tlciBjb250cm9sbGVyIG1hcHBpbmcuCiAgICAgICAgaWYgKAogICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9CiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgIG15ICRJbnZva2VyQ29udHJvbGxlck1hcHBpbmdDb25maWcKICAgICAgICAgICAgICAgID0gJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntUcmFuc3BvcnR9LT57Q29uZmlnfS0+e0ludm9rZXJDb250cm9sbGVyTWFwcGluZ307CgogICAgICAgICAgICBJTlZPS0VSOgogICAgICAgICAgICBmb3IgbXkgJEludm9rZXIgKCBzb3J0IGtleXMgJXskSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nQ29uZmlnfSApIHsKICAgICAgICAgICAgICAgIG5leHQgSU5WT0tFUiBpZiAkSW52b2tlciBuZSAkR2V0UGFyYW0tPntPbGRJbnZva2VyfTsKCiAgICAgICAgICAgICAgICAkSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nQ29uZmlnLT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0KICAgICAgICAgICAgICAgICAgICA9IGRlbGV0ZSAkSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nQ29uZmlnLT57ICRHZXRQYXJhbS0+e09sZEludm9rZXJ9IH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9CiAgICAgICAgICAgICAgICA9ICRJbnZva2VyQ29udHJvbGxlck1hcHBpbmdDb25maWc7CiAgICAgICAgfQoKICAgICAgICAjIE91dGJvdW5kIGhlYWRlciBjb25maWcuCiAgICAgICAgaWYgKAogICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntPdXRib3VuZEhlYWRlcnN9LT57U3BlY2lmaWN9CiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgIG15ICRPdXRib3VuZEhlYWRlckNvbmZpZwogICAgICAgICAgICAgICAgPSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e1RyYW5zcG9ydH0tPntDb25maWd9LT57T3V0Ym91bmRIZWFkZXJzfS0+e1NwZWNpZmljfTsKCiAgICAgICAgICAgIElOVk9LRVI6CiAgICAgICAgICAgIGZvciBteSAkSW52b2tlciAoIHNvcnQga2V5cyAleyRPdXRib3VuZEhlYWRlckNvbmZpZ30gKSB7CiAgICAgICAgICAgICAgICBuZXh0IElOVk9LRVIgaWYgJEludm9rZXIgbmUgJEdldFBhcmFtLT57T2xkSW52b2tlcn07CgogICAgICAgICAgICAgICAgJE91dGJvdW5kSGVhZGVyQ29uZmlnLT57ICRHZXRQYXJhbS0+e0ludm9rZXJ9IH0KICAgICAgICAgICAgICAgICAgICA9IGRlbGV0ZSAkT3V0Ym91bmRIZWFkZXJDb25maWctPnsgJEdldFBhcmFtLT57T2xkSW52b2tlcn0gfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntUcmFuc3BvcnR9LT57Q29uZmlnfS0+e091dGJvdW5kSGVhZGVyc30tPntTcGVjaWZpY30KICAgICAgICAgICAgICAgID0gJE91dGJvdW5kSGVhZGVyQ29uZmlnOwogICAgICAgIH0KCiAgICB9CgogICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgICAgICV7JFdlYnNlcnZpY2VEYXRhfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCB1cGRhdGUgd2ViIHNlcnZpY2UnKSwKICAgICAgICApOwogICAgfQoKICAgICMgSWYgdGhlIHVzZXIgd291bGQgbGlrZSB0byBjb250aW51ZSBlZGl0aW5nIHRoZSBpbnZva2VyIGNvbmZpZywganVzdCByZWRpcmVjdCB0byB0aGUgZWRpdCBzY3JlZW4uCiAgICBteSAkUmVkaXJlY3RVUkw7CiAgICBpZiAoICRHZXRQYXJhbS0+e0NvbnRpbnVlQWZ0ZXJTYXZlfSBlcSAxICkgewogICAgICAgICRSZWRpcmVjdFVSTCA9CiAgICAgICAgICAgICdBY3Rpb249JwogICAgICAgICAgICAuICRTZWxmLT57QWN0aW9ufQogICAgICAgICAgICAuICc7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9JwogICAgICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgICAgIC4gJztJbnZva2VyPScKICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCAkR2V0UGFyYW0tPntJbnZva2VyfSApCiAgICAgICAgICAgIC4gJztFdmVudFR5cGU9JwogICAgICAgICAgICAuICRHZXRQYXJhbS0+e0V2ZW50VHlwZX0KICAgICAgICAgICAgLiAnOyc7CiAgICB9CgogICAgIyBPdGhlcndpc2UgcmV0dXJuIHRvIG92ZXJ2aWV3LgogICAgZWxzZSB7CiAgICAgICAgJFJlZGlyZWN0VVJMID0KICAgICAgICAgICAgJ0FjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VXZWJzZXJ2aWNlO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPScKICAgICAgICAgICAgLiAkUGFyYW17V2Vic2VydmljZUlEfQogICAgICAgICAgICAuICc7JzsKICAgIH0KCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgT1AgPT4gJFJlZGlyZWN0VVJMLAogICAgKTsKfQoKc3ViIF9EZWxldGVBY3Rpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkR2V0UGFyYW0gPSAkU2VsZi0+X1BhcmFtc0dldCgKICAgICAgICBEZWZpbml0aW9uID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdJbnZva2VyJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIGlmICggJEdldFBhcmFtLT57RXJyb3J9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAkR2V0UGFyYW0tPntFcnJvcn0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPl9KU09OUmVzcG9uc2UoIFN1Y2Nlc3MgPT4gMCApOwogICAgfQoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17V2Vic2VydmljZURhdGF9LT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntJbnZva2VyfS0+eyAkR2V0UGFyYW0tPntJbnZva2VyfSB9ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgZGV0ZXJtaW5lIGNvbmZpZyBmb3IgaW52b2tlciAiIC4gJEdldFBhcmFtLT57SW52b2tlcn0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPl9KU09OUmVzcG9uc2UoIFN1Y2Nlc3MgPT4gMCApOwogICAgfQoKICAgICMgUmVtb3ZlIGludm9rZXIgZnJvbSBjb25maWcuCiAgICBkZWxldGUgJFBhcmFte1dlYnNlcnZpY2VEYXRhfS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57SW52b2tlcn0tPnsgJEdldFBhcmFtLT57SW52b2tlcn0gfTsKICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKS0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAleyAkUGFyYW17V2Vic2VydmljZURhdGF9IH0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuICRTZWxmLT5fSlNPTlJlc3BvbnNlKCBTdWNjZXNzID0+ICRTdWNjZXNzICk7Cn0KCnN1YiBfQWRkRXZlbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkR2V0UGFyYW0gPSAkU2VsZi0+X1BhcmFtc0dldCgKICAgICAgICBEZWZpbml0aW9uID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdJbnZva2VyJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ05ld0V2ZW50JywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdBc3luY2hyb25vdXMnLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnRXZlbnRUeXBlJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBEZWZhdWx0ID0+ICdUaWNrZXQnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhID0gJFBhcmFte1dlYnNlcnZpY2VEYXRhfTsKICAgIG15ICRJbnZva2VyQ29uZmlnICA9ICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57SW52b2tlcn0tPnsgJEdldFBhcmFtLT57SW52b2tlcn0gfTsKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRJbnZva2VyQ29uZmlnKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ291bGQgbm90IGRldGVybWluZSBjb25maWcgZm9yIGludm9rZXIgJXMnLCAkR2V0UGFyYW0tPntJbnZva2VyfSApLAogICAgICAgICk7CiAgICB9CgogICAgIyBBZGQgdGhlIG5ldyBldmVudCB0byB0aGUgbGlzdC4KICAgIG15IEBFdmVudHMgPSBJc0FycmF5UmVmV2l0aERhdGEoICRJbnZva2VyQ29uZmlnLT57RXZlbnRzfSApID8gQHsgJEludm9rZXJDb25maWctPntFdmVudHN9IH0gOiAoKTsKICAgIHB1c2ggQEV2ZW50cywgewogICAgICAgIEFzeW5jaHJvbm91cyA9PiAkR2V0UGFyYW0tPntBc3luY2hyb25vdXN9LAogICAgICAgIEV2ZW50ICAgICAgICA9PiAkR2V0UGFyYW0tPntOZXdFdmVudH0sCiAgICB9OwoKICAgICRJbnZva2VyQ29uZmlnLT57RXZlbnRzfSA9IFxARXZlbnRzOwogICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntJbnZva2VyfS0+eyAkR2V0UGFyYW0tPntJbnZva2VyfSB9ID0gJEludm9rZXJDb25maWc7CgogICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgICAgICV7JFdlYnNlcnZpY2VEYXRhfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCB1cGRhdGUgd2ViIHNlcnZpY2UnKSwKICAgICAgICApOwogICAgfQoKICAgICMgU3RheSBpbiBlZGl0IG1vZGUuCiAgICBteSAkUmVkaXJlY3RVUkwgPQogICAgICAgICdBY3Rpb249JwogICAgICAgIC4gJFNlbGYtPntBY3Rpb259CiAgICAgICAgLiAnO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPScKICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgLiAnO0ludm9rZXI9JwogICAgICAgIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJEdldFBhcmFtLT57SW52b2tlcn0gKQogICAgICAgIC4gJztFdmVudFR5cGU9JwogICAgICAgIC4gJEdldFBhcmFtLT57RXZlbnRUeXBlfQogICAgICAgIC4gJzsnOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAkUmVkaXJlY3RVUkwsCiAgICApOwp9CgpzdWIgX0RlbGV0ZUV2ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnSW52b2tlcicsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdFdmVudE5hbWUnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICk7CgogICAgaWYgKCAkR2V0UGFyYW0tPntFcnJvcn0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRHZXRQYXJhbS0+e0Vycm9yfSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAwICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhID0gJFBhcmFte1dlYnNlcnZpY2VEYXRhfTsKICAgIG15ICRJbnZva2VyQ29uZmlnICA9ICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57SW52b2tlcn0tPnsgJEdldFBhcmFtLT57SW52b2tlcn0gfTsKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRJbnZva2VyQ29uZmlnKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBkZXRlcm1pbmUgY29uZmlnIGZvciBpbnZva2VyICRHZXRQYXJhbS0+e0ludm9rZXJ9ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPl9KU09OUmVzcG9uc2UoIFN1Y2Nlc3MgPT4gMCApOwogICAgfQoKICAgICMgZGVsZXRlIHNlbGVjdGVkIGV2ZW50IGZyb20gbGlzdCBvZiBldmVudHMuCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRJbnZva2VyQ29uZmlnLT57RXZlbnRzfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGZpbmQgZXZlbnQgdG8gZGVsZXRlIGluIGNvbmZpZyBjb25maWcgZm9yIGludm9rZXIgJEdldFBhcmFtLT57SW52b2tlcn0hIiwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAwICk7CiAgICB9CgogICAgQHsgJEludm9rZXJDb25maWctPntFdmVudHN9IH0gPSBncmVwIHsgJF8tPntFdmVudH0gbmUgJEdldFBhcmFtLT57RXZlbnROYW1lfSB9IEB7ICRJbnZva2VyQ29uZmlnLT57RXZlbnRzfSB9OwogICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1JlcXVlc3Rlcn0tPntJbnZva2VyfS0+eyAkR2V0UGFyYW0tPntJbnZva2VyfSB9ID0gJEludm9rZXJDb25maWc7CgogICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgICAgICV7JFdlYnNlcnZpY2VEYXRhfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ291bGQgbm90IHVwZGF0ZSB3ZWIgc2VydmljZScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFNlbGYtPl9KU09OUmVzcG9uc2UoIFN1Y2Nlc3MgPT4gMCApOwogICAgfQoKICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAxICk7Cn0KCnN1YiBfU2hvd1NjcmVlbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdJbnZva2VyJywKICAgICAgICBWYWx1ZSA9PiAkUGFyYW17SW52b2tlcn0sCiAgICApOwoKICAgIG15ICVUZW1wbGF0ZURhdGEgPSAoCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJFBhcmFte0ludm9rZXJDb25maWd9LT57RGVzY3JpcHRpb259LAogICAgICAgIEludm9rZXJUeXBlID0+ICRQYXJhbXtJbnZva2VyQ29uZmlnfS0+e1R5cGV9LAogICAgICAgIEludm9rZXIgICAgID0+ICRQYXJhbXtJbnZva2VyfSwKICAgICAgICBOZXdJbnZva2VyICA9PiAkUGFyYW17TmV3SW52b2tlcn0gLy8gJFBhcmFte0ludm9rZXJ9LAogICAgKTsKCiAgICAjIEhhbmRsZSBtYXBwaW5nLgogICAgbXkgJE1hcHBpbmdNb2R1bGVzICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpNYXBwaW5nOjpNb2R1bGUnKSB8fCB7fTsKICAgIG15IEBNYXBwaW5nTW9kdWxlTGlzdCA9IHNvcnQga2V5cyAleyRNYXBwaW5nTW9kdWxlc307CiAgICBESVJFQ1RJT046CiAgICBmb3IgbXkgJERpcmVjdGlvbiAocXcoTWFwcGluZ0luYm91bmQgTWFwcGluZ091dGJvdW5kKSkgewogICAgICAgIG15ICRPbGRNYXBwaW5nID0gJFBhcmFte0ludm9rZXJDb25maWd9LT57JERpcmVjdGlvbn0tPntUeXBlfTsKICAgICAgICBteSAkTWFwcGluZyAgICA9ICRQYXJhbXskRGlyZWN0aW9ufTsKCiAgICAgICAgJFRlbXBsYXRlRGF0YXsgJERpcmVjdGlvbiAuICdTdHJnJyB9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXEBNYXBwaW5nTW9kdWxlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkRGlyZWN0aW9uLAogICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRNYXBwaW5nLAogICAgICAgICAgICBTb3J0ICAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgPT4gMSwKICAgICAgICAgICAgQ2xhc3MgICAgICAgICA9PiAnTW9kZXJuaXplIFJlZ2lzdGVyQ2hhbmdlJywKICAgICAgICApOwoKICAgICAgICAjIE9ubHkgc2hvdyBjb25maWd1cmUgYnV0dG9uIGlmIHdlIGhhdmUgYW4gdW5jaGFuZ2VkIGV4aXN0aW5nIG1hcHBpbmcgdHlwZS4KICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAhJE9sZE1hcHBpbmc7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgISRNYXBwaW5nOwogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICRNYXBwaW5nIG5lICRPbGRNYXBwaW5nOwogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICEkTWFwcGluZ01vZHVsZXMtPnskTWFwcGluZ30tPntDb25maWdEaWFsb2d9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAkRGlyZWN0aW9uIC4gJ0NvbmZpZ3VyZUJ1dHRvbicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJERpcmVjdGlvbiAuIENvbmZpZ0RpYWxvZyA9PiAkTWFwcGluZ01vZHVsZXMtPnskTWFwcGluZ30tPntDb25maWdEaWFsb2d9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgU0VDVElPTjoKICAgIGZvciBteSAkU2VjdGlvbiAocXcvR2VuZXJhbCBSZXF1ZXN0IFJlc3BvbnNlLykgewogICAgICAgIG5leHQgU0VDVElPTiBpZiAhJFNlbGYtPntTZXR0aW5nc307CiAgICAgICAgbmV4dCBTRUNUSU9OIGlmICEkU2VsZi0+e1NldHRpbmdzfXskU2VjdGlvbn07CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICRTZWN0aW9uLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkU2V0dGluZyAoICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufS0+QCogKSB7CiAgICAgICAgICAgIG15ICRTZXR0aW5nSFRNTDsKICAgICAgICAgICAgaWYgKCAkU2V0dGluZy0+e1R5cGV9IGVxICdBcnJheScgKSB7CiAgICAgICAgICAgICAgICAkU2V0dGluZ0hUTUwgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgICAgICAgICAkU2V0dGluZy0+JSosCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17SW52b2tlckNvbmZpZ30tPnsgJFNldHRpbmctPntOYW1lfSB9IC8vICRTZXR0aW5nLT57U2VsZWN0ZWRJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NldHRpbmcnIC4gJFNlY3Rpb24sCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBTZXR0aW5nTmFtZSAgICAgICAgPT4gJFNldHRpbmctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBTZXR0aW5nTGFiZWwgICAgICAgPT4gJFNldHRpbmctPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgU2V0dGluZ0hUTUwgICAgICAgID0+ICRTZXR0aW5nSFRNTCwKICAgICAgICAgICAgICAgICAgICBTZXR0aW5nRXhwbGFuYXRpb24gPT4gJFNldHRpbmctPntFeHBsYW5hdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgU2VydmVyRXJyb3IgICAgICAgID0+ICRQYXJhbXsgJFNldHRpbmctPntOYW1lfSAuICdTZXJ2ZXJFcnJvcicgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQ2hhbmdlJyApIHsKCiAgICAgICAgIyBTaG93IGFsbCBpbnZva2VyIGV2ZW50IHRyaWdnZXJzLgogICAgICAgIG15ICRJbnZva2VyRXZlbnRzID0gJFBhcmFte0ludm9rZXJDb25maWd9LT57RXZlbnRzfSAvLyBbXTsKICAgICAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoJEludm9rZXJFdmVudHMpICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0aGUgZXZlbnQgdHJpZ2dlcnMgdGFibGUuCiAgICAgICAgbXkgQEV2ZW50czsKICAgICAgICBteSAlSW52b2tlckV2ZW50TG9va3VwOwogICAgICAgIG15ICVSZWdpc3RlcmVkRXZlbnRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkV2ZW50JyktPkV2ZW50TGlzdCgpOwogICAgICAgIGZvciBteSAkRXZlbnQgKCBAeyRJbnZva2VyRXZlbnRzfSApIHsKICAgICAgICAgICAgcHVzaCBARXZlbnRzLCAkRXZlbnQtPntFdmVudH07CgogICAgICAgICAgICAjIFRvIHN0b3JlIHRoZSBldmVudHMgdGhhdCBhcmUgYWxyZWFkeSBhc3NpZ25lZCB0byB0aGlzIGludm9rZXIKICAgICAgICAgICAgIyAgIHRoZSBzZWxlY3RzIHNob3VsZCBsb29rIGZvciB0aGlzIHZhbHVlcyBhbmQgb21pdCB0aGVtIGZyb20gdGhlaXIgbGlzdHMuCiAgICAgICAgICAgICRJbnZva2VyRXZlbnRMb29rdXB7ICRFdmVudC0+e0V2ZW50fSB9ID0gMTsKCiAgICAgICAgICAgICMgU2V0IHRoZSBldmVudCB0eXBlIChldmVudCBvYmplY3QgbGlrZSBBcnRpY2xlIG9yIFRpY2tldCkuCiAgICAgICAgICAgICMgVmFsdWUgbm90IGN1cnJlbnRseSBpbiB1c2UgYnV0IGtlcHQgYXMgaXQgbWlnaHQgYmUgbmVlZGVkIGluIHRoZSBmdXR1cmUuCiAgICAgICAgICAgIG15ICRFdmVudFR5cGU7CiAgICAgICAgICAgIEVWRU5UVFlQRToKICAgICAgICAgICAgZm9yIG15ICRUeXBlICggc29ydCBrZXlzICVSZWdpc3RlcmVkRXZlbnRzICkgewogICAgICAgICAgICAgICAgbmV4dCBFVkVOVFRZUEUgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSggJFJlZ2lzdGVyZWRFdmVudHN7JFR5cGV9ICk7CiAgICAgICAgICAgICAgICBuZXh0IEVWRU5UVFlQRSBpZiAhZ3JlcCB7ICRfIGVxICRFdmVudC0+e0V2ZW50fSB9IEB7ICRSZWdpc3RlcmVkRXZlbnRzeyRUeXBlfSB9OwoKICAgICAgICAgICAgICAgICRFdmVudFR5cGUgPSAkVHlwZTsKICAgICAgICAgICAgICAgIGxhc3QgRVZFTlRUWVBFOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0V2ZW50Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkUGFyYW17V2Vic2VydmljZUlEfSwKICAgICAgICAgICAgICAgICAgICBJbnZva2VyICAgICAgPT4gJFBhcmFte0ludm9rZXJ9LAogICAgICAgICAgICAgICAgICAgIEV2ZW50ICAgICAgICA9PiAkRXZlbnQtPntFdmVudH0sCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRFdmVudFR5cGUgLy8gJy0nLAogICAgICAgICAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAkRXZlbnQtPntBc3luY2hyb25vdXN9ICAgICAgICAgICAgICAgICAgID8gVHJhbnNsYXRhYmxlKCdZZXMnKSA6IFRyYW5zbGF0YWJsZSgnTm8nKSwKICAgICAgICAgICAgICAgICAgICBDb25kaXRpb24gICAgPT4gSXNIYXNoUmVmV2l0aERhdGEoICRFdmVudC0+e0NvbmRpdGlvbn0gKSA/IFRyYW5zbGF0YWJsZSgnWWVzJykgOiBUcmFuc2xhdGFibGUoJ05vJyksCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnRXZlbnRzJywKICAgICAgICAgICAgVmFsdWUgPT4gXEBFdmVudHMKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSBldmVudCB0cmlnZ2VyIHNlbGVjdG9ycyAob25lIGZvciBlYWNoIHR5cGUpLgogICAgICAgIG15IEBFdmVudFR5cGVMaXN0OwogICAgICAgIFRZUEU6CiAgICAgICAgZm9yIG15ICRUeXBlICggc29ydCBrZXlzICVSZWdpc3RlcmVkRXZlbnRzICkgewogICAgICAgICAgICBuZXh0IEVWRU5UVFlQRSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkUmVnaXN0ZXJlZEV2ZW50c3skVHlwZX0gKTsKCiAgICAgICAgICAgICMgUmVmcmVzaCBldmVudCBsaXN0IGZvciBlYWNoIGV2ZW50IHR5cGUuCiAgICAgICAgICAgIG15IEBFdmVudExpc3QgPSBncmVwIHsgISRJbnZva2VyRXZlbnRMb29rdXB7JF99IH0gQHsgJFJlZ2lzdGVyZWRFdmVudHN7JFR5cGV9IH07CgogICAgICAgICAgICAjIGhpZGUgaW5hY3RpdmUgZXZlbnQgbGlzdHMKICAgICAgICAgICAgbXkgJEV2ZW50TGlzdEhpZGRlbiA9ICcnOwogICAgICAgICAgICBpZiAoICRUeXBlIG5lICRQYXJhbXtFdmVudFR5cGV9ICkgewogICAgICAgICAgICAgICAgJEV2ZW50TGlzdEhpZGRlbiA9ICdIaWRkZW4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRXZlbnRTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXEBFdmVudExpc3QsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFR5cGUgLiAnRXZlbnQnLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMCwKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0V2ZW50JyksCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBFdmVudExpc3QgR2VuZXJpY0ludGVyZmFjZVNwYWNpbmcgJyAuICRFdmVudExpc3RIaWRkZW4sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0V2ZW50QWRkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEV2ZW50U3RyZyA9PiAkRXZlbnRTdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQEV2ZW50VHlwZUxpc3QsICRUeXBlOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgZXZlbnQgdHlwZSBzZWxlY3Rvci4KICAgICAgICAkVGVtcGxhdGVEYXRhe0V2ZW50VHlwZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXEBFdmVudFR5cGVMaXN0LAogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICdFdmVudFR5cGUnLAogICAgICAgICAgICBTb3J0ICAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0V2ZW50VHlwZX0sCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgPT4gMCwKICAgICAgICAgICAgQ2xhc3MgICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlVGVtcGxhdGVEYXRhLAogICAgICAgICAgICBXZWJzZXJ2aWNlTmFtZSA9PiAkUGFyYW17V2Vic2VydmljZURhdGF9LT57TmFtZX0sCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICB9LAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfUGFyYW1zR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAlR2V0UGFyYW07CiAgICBERUZJTklUSU9OOgogICAgZm9yIG15ICREZWZpbml0aW9uICggQHsgJFBhcmFte0RlZmluaXRpb259IH0gKSB7CiAgICAgICAgbXkgJE5hbWUgPSAkRGVmaW5pdGlvbi0+e05hbWV9OwoKICAgICAgICBpZiAoICREZWZpbml0aW9uLT57VHlwZX0gZXEgJ1N0cmluZycgKSB7CiAgICAgICAgICAgICRHZXRQYXJhbXskTmFtZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkTmFtZSApIC8vICREZWZpbml0aW9uLT57RGVmYXVsdH07CiAgICAgICAgICAgIG5leHQgREVGSU5JVElPTiBpZiBJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW17JE5hbWV9ICk7CgogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgISREZWZpbml0aW9uLT57TWFuZGF0b3J5fTsKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05lZWQgJXMnLCAoICREZWZpbml0aW9uLT57TGFiZWx9IHx8ICREZWZpbml0aW9uLT57TmFtZX0gKSApOwogICAgICAgICAgICByZXR1cm4gXCVHZXRQYXJhbTsKICAgICAgICB9CgogICAgICAgIGlmICggJERlZmluaXRpb24tPntUeXBlfSBlcSAnQXJyYXknICkgewogICAgICAgICAgICAkR2V0UGFyYW17JE5hbWV9ID0gWyAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkTmFtZSApIF07CiAgICAgICAgICAgIG5leHQgREVGSU5JVElPTiBpZiBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXskTmFtZX0gKTsKCiAgICAgICAgICAgIG5leHQgREVGSU5JVElPTiBpZiAhJERlZmluaXRpb24tPntNYW5kYXRvcnl9OwogICAgICAgICAgICAkR2V0UGFyYW17RXJyb3J9ID0gVHJhbnNsYXRhYmxlKCAnTmVlZCAlcycsICggJERlZmluaXRpb24tPntMYWJlbH0gfHwgJERlZmluaXRpb24tPntOYW1lfSApICk7CiAgICAgICAgICAgIHJldHVybiBcJUdldFBhcmFtOwogICAgICAgIH0KICAgIH0KCiAgICAjIFR5cGUgY2hlY2tzLgogICAgREVGSU5JVElPTjoKICAgIGZvciBteSAkRGVmaW5pdGlvbiAoIEB7ICRQYXJhbXtEZWZpbml0aW9ufSB9ICkgewogICAgICAgIG5leHQgREVGSU5JVElPTiBpZiAhJERlZmluaXRpb24tPntDaGVja307CgogICAgICAgIG15ICROYW1lID0gJERlZmluaXRpb24tPntOYW1lfTsKCiAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICFkZWZpbmVkICRHZXRQYXJhbXskTmFtZX07CgogICAgICAgIGlmICggJERlZmluaXRpb24tPntDaGVja30gZXEgJ0ludm9rZXJUeXBlJyApIHsKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICRTZWxmLT5fSW52b2tlclR5cGVDaGVjayggSW52b2tlclR5cGUgPT4gJEdldFBhcmFteyROYW1lfSApOwoKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0ludm9rZXJUeXBlICVzIGlzIG5vdCByZWdpc3RlcmVkJywgJEdldFBhcmFteyROYW1lfSApOwogICAgICAgICAgICByZXR1cm4gXCVHZXRQYXJhbTsKICAgICAgICB9CgogICAgICAgIGlmICggJERlZmluaXRpb24tPntDaGVja30gZXEgJ01hcHBpbmdUeXBlJyApIHsKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICFJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW17TmFtZX0gKTsKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICRTZWxmLT5fTWFwcGluZ1R5cGVDaGVjayggTWFwcGluZ1R5cGUgPT4gJEdldFBhcmFteyROYW1lfSApOwoKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ01hcHBpbmdUeXBlICVzIGlzIG5vdCByZWdpc3RlcmVkJywgJEdldFBhcmFteyROYW1lfSApOwogICAgICAgICAgICByZXR1cm4gXCVHZXRQYXJhbTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlR2V0UGFyYW07Cn0KCnN1YiBfSW52b2tlclR5cGVDaGVjayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte0ludm9rZXJUeXBlfTsKCiAgICBteSAkSW52b2tlcnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0dlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZScpOwogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkSW52b2tlcnMpOwoKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRJbnZva2Vycy0+eyAkUGFyYW17SW52b2tlclR5cGV9IH0gKTsKICAgIHJldHVybiAxOwp9CgpzdWIgX01hcHBpbmdUeXBlQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtNYXBwaW5nVHlwZX07CgogICAgbXkgJE1hcHBpbmdzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpNYXBwaW5nOjpNb2R1bGUnKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJE1hcHBpbmdzKTsKCiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkTWFwcGluZ3MtPnsgJFBhcmFte01hcHBpbmdUeXBlfSB9ICk7CiAgICByZXR1cm4gMTsKfQoKc3ViIF9KU09OUmVzcG9uc2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHJldHVybiBKU09OIG91dHB1dC4KICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkpTT05SZXBseSgKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAkUGFyYW17U3VjY2Vzc30gLy8gMCwKICAgICAgICB9LAogICAgKTsKfQoKc3ViIF9FeHRyYVNldHRpbmdzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENsYXNzTGlzdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KCBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnICk7CiAgICBteSAkQ2xhc3NSZXN0cmljdGlvbnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0dlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkNvbmZpZ0l0ZW1GZXRjaDo6Q2xhc3NlcycpOwogICAgbXkgQENsYXNzZXM7CgogICAgaWYgKCAkQ2xhc3NSZXN0cmljdGlvbnMgJiYgJENsYXNzUmVzdHJpY3Rpb25zLT57ICRQYXJhbXtXZWJzZXJ2aWNlfSB9ICkgewogICAgICAgIG15ICVDbGFzc0xvb2t1cCA9IHJldmVyc2UgJENsYXNzTGlzdC0+JSo7CiAgICAgICAgQENsYXNzZXMgPSBtYXAgeyAkQ2xhc3NMb29rdXB7JF99IH0gJENsYXNzUmVzdHJpY3Rpb25zLT57ICRQYXJhbXtXZWJzZXJ2aWNlfSB9LT5AKjsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBDbGFzc2VzID0ga2V5cyAkQ2xhc3NMaXN0LT4lKjsKICAgIH0KCiAgICAkU2VsZi0+e1NldHRpbmdzfXtSZXNwb25zZX0gPSBbCiAgICAgICAgbWFwIHsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTGFiZWwgICAgICAgPT4gJ0lkZW50aWZpZXIgZm9yICcgLiAkQ2xhc3NMaXN0LT57JF99LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0lkZW50aWZpZXInIC4gJF8sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnQXJyYXknLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgRXhwbGFuYXRpb24gPT4gJ1BsZWFzZSBzZWxlY3QgYW4gYXR0cmlidXRlIG9yIGEgY29tYmluYXRpb24gb2YgYXR0cmlidXRlcyB3aGljaCB1bmlxdWVseSBtYXAgdGhlIGNvbmZpZyBpdGVtcy4nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gJFNlbGYtPl9Qb3NzaWJsZVZhbHVlc0dldCggQ2xhc3NJRCA9PiAkXyApLAogICAgICAgICAgICB9CiAgICAgICAgfSBAQ2xhc3NlcywKICAgIF07CgogICAgcmV0dXJuOwp9CgpzdWIgX1Bvc3NpYmxlVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICk7CgogICAgcmV0dXJuIFsKICAgICAgICBxdy9DbGFzc2VzIENvbmZpZ0l0ZW1JRCBOdW1iZXIgTmFtZSBEZXBsU3RhdGVzLywKICAgICAgICBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXyB9IHNvcnQga2V5cyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqLAogICAgXTsKfQoKMTsK</File>
        <File Location="Kernel/Modules/AdminGenericInterfaceOperationConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uQ29uZmlnSXRlbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRXZWJzZXJ2aWNlSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnV2Vic2VydmljZUlEJyApOwogICAgaWYgKCAhSXNTdHJpbmdXaXRoRGF0YSgkV2Vic2VydmljZUlEKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdOZWVkIFdlYnNlcnZpY2VJRCEnKSwKICAgICAgICApOwogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnV2Vic2VydmljZUlEJywKICAgICAgICBWYWx1ZSA9PiAkV2Vic2VydmljZUlECiAgICApOwoKICAgIG15ICRXZWJzZXJ2aWNlRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyktPldlYnNlcnZpY2VHZXQoCiAgICAgICAgSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFdlYnNlcnZpY2VEYXRhKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCBnZXQgZGF0YSBmb3IgV2Vic2VydmljZUlEICVzJywgJFdlYnNlcnZpY2VJRCApLAogICAgICAgICk7CiAgICB9CgogICAgJFNlbGYtPl9FeHRyYVNldHRpbmdzKAogICAgICAgIFdlYnNlcnZpY2UgPT4gJFdlYnNlcnZpY2VEYXRhLT57TmFtZX0sCiAgICApOwoKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGQnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+X0FkZCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBXZWJzZXJ2aWNlRGF0YSA9PiAkV2Vic2VydmljZURhdGEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGRBY3Rpb24nICkgewoKICAgICAgICAjIENoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uLgogICAgICAgICRMYXlvdXRPYmplY3QtPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fQWRkQWN0aW9uKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgICAgIFdlYnNlcnZpY2VEYXRhID0+ICRXZWJzZXJ2aWNlRGF0YSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZScgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fQ2hhbmdlKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgICAgIFdlYnNlcnZpY2VEYXRhID0+ICRXZWJzZXJ2aWNlRGF0YSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZUFjdGlvbicgKSB7CgogICAgICAgICMgQ2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPl9DaGFuZ2VBY3Rpb24oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgV2Vic2VydmljZURhdGEgPT4gJFdlYnNlcnZpY2VEYXRhLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVsZXRlQWN0aW9uJyApIHsKCiAgICAgICAgIyBDaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbi4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIHJldHVybiAkU2VsZi0+X0RlbGV0ZUFjdGlvbigKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBXZWJzZXJ2aWNlRGF0YSA9PiAkV2Vic2VydmljZURhdGEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0ludmFsaWQgU3ViYWN0aW9uIScpLAogICAgKTsKfQoKc3ViIF9BZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkR2V0UGFyYW0gPSAkU2VsZi0+X1BhcmFtc0dldCgKICAgICAgICBEZWZpbml0aW9uID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdPcGVyYXRpb25UeXBlJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICAgICAgQ2hlY2sgICAgID0+ICdPcGVyYXRpb25UeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkR2V0UGFyYW0tPntFcnJvcn0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICVQYXJhbSwKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJ0FkZCcsCiAgICAgICAgT3BlcmF0aW9uQ29uZmlnID0+IHsKICAgICAgICAgICAgVHlwZSA9PiAkR2V0UGFyYW0tPntPcGVyYXRpb25UeXBlfSwKICAgICAgICB9LAogICAgKTsKfQoKc3ViIF9BZGRBY3Rpb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBARXh0cmFQYXJhbXM7CiAgICBmb3IgbXkgJFNlY3Rpb24gKHF3L0dlbmVyYWwgUmVxdWVzdCBSZXNwb25zZS8pIHsKICAgICAgICBpZiAoICRTZWxmLT57U2V0dGluZ3N9ICYmICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufSApIHsKICAgICAgICAgICAgcHVzaCBARXh0cmFQYXJhbXMsICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufS0+QCo7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRHZXRQYXJhbSA9ICRTZWxmLT5fUGFyYW1zR2V0KAogICAgICAgIERlZmluaXRpb24gPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ09wZXJhdGlvblR5cGUnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgTWFuZGF0b3J5ID0+IDEsCiAgICAgICAgICAgICAgICBDaGVjayAgICAgPT4gJ09wZXJhdGlvblR5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdPcGVyYXRpb24nLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBEZWZhdWx0ID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ0luYm91bmQnLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnTWFwcGluZ1R5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ091dGJvdW5kJywKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ01hcHBpbmdUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQEV4dHJhUGFyYW1zLAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhID0gJFBhcmFte1dlYnNlcnZpY2VEYXRhfTsKICAgIG15ICVFcnJvcnM7CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW0tPntPcGVyYXRpb259ICkgKSB7CiAgICAgICAgJEVycm9yc3tPcGVyYXRpb25TZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgICMgT3BlcmF0aW9uIHdpdGggc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzLgogICAgZWxzaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e09wZXJhdGlvbn0tPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9ICkgKSB7CiAgICAgICAgJEVycm9yc3tPcGVyYXRpb25TZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgIG15ICRPcGVyYXRpb25Db25maWcgPSB7CiAgICAgICAgRGVzY3JpcHRpb24gPT4gJEdldFBhcmFtLT57RGVzY3JpcHRpb259LAogICAgICAgIFR5cGUgICAgICAgID0+ICRHZXRQYXJhbS0+e09wZXJhdGlvblR5cGV9LAogICAgfTsKCiAgICBmb3IgbXkgJFBhcmFtQ29uZmlnIChARXh0cmFQYXJhbXMpIHsKICAgICAgICBpZiAoIGV4aXN0cyAkUGFyYW1Db25maWctPntFcnJvckZ1bmN0aW9ufSApIHsKICAgICAgICAgICAgbXkgJEVycm9yID0gJFBhcmFtQ29uZmlnLT57RXJyb3JGdW5jdGlvbn0tPigKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIEdldFBhcmFtID0+ICRHZXRQYXJhbSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkRXJyb3IpIHsKICAgICAgICAgICAgICAgICRFcnJvcnN7ICRQYXJhbUNvbmZpZy0+e05hbWV9IC4gJ1NlcnZlckVycm9yJyB9ID0gJEVycm9yOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkT3BlcmF0aW9uQ29uZmlnLT57ICRQYXJhbUNvbmZpZy0+e05hbWV9IH0gPSAkR2V0UGFyYW0tPnsgJFBhcmFtQ29uZmlnLT57TmFtZX0gfTsKICAgIH0KCiAgICAjIFZhbGlkYXRpb24gZXJyb3JzLgogICAgaWYgKCVFcnJvcnMpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7JEdldFBhcmFtfSwKICAgICAgICAgICAgJUVycm9ycywKICAgICAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdBZGQnLAogICAgICAgICAgICBPcGVyYXRpb25Db25maWcgPT4gJE9wZXJhdGlvbkNvbmZpZywKICAgICAgICApOwogICAgfQoKICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgISRHZXRQYXJhbS0+eyREaXJlY3Rpb259OwoKICAgICAgICAjIE1hcHBpbmcgYWRkZWQsIGluaXRpYWxpemUgd2l0aCBlbXB0eSBjb25maWcuCiAgICAgICAgJE9wZXJhdGlvbkNvbmZpZy0+eyREaXJlY3Rpb259ID0gewogICAgICAgICAgICBUeXBlID0+ICRHZXRQYXJhbS0+eyREaXJlY3Rpb259LAogICAgICAgIH07CiAgICB9CgogICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e09wZXJhdGlvbn0tPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9ID0gJE9wZXJhdGlvbkNvbmZpZzsKCiAgICBteSAkVXBkYXRlU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyktPldlYnNlcnZpY2VVcGRhdGUoCiAgICAgICAgJXskV2Vic2VydmljZURhdGF9LAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwogICAgaWYgKCAhJFVwZGF0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ291bGQgbm90IHVwZGF0ZSB3ZWIgc2VydmljZScpLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFJlZGlyZWN0VVJMID0KICAgICAgICAnQWN0aW9uPScKICAgICAgICAuICRTZWxmLT57QWN0aW9ufQogICAgICAgIC4gJztTdWJhY3Rpb249Q2hhbmdlO1dlYnNlcnZpY2VJRD0nCiAgICAgICAgLiAkUGFyYW17V2Vic2VydmljZUlEfQogICAgICAgIC4gJztPcGVyYXRpb249JwogICAgICAgIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJEdldFBhcmFtLT57T3BlcmF0aW9ufSApCiAgICAgICAgLiAnOyc7CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgIE9QID0+ICRSZWRpcmVjdFVSTCwKICAgICk7Cn0KCnN1YiBfQ2hhbmdlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnT3BlcmF0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFdlYnNlcnZpY2VEYXRhICA9ICRQYXJhbXtXZWJzZXJ2aWNlRGF0YX07CiAgICBteSAkT3BlcmF0aW9uQ29uZmlnID0gJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e09wZXJhdGlvbn0tPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9OwogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJE9wZXJhdGlvbkNvbmZpZykgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDb3VsZCBub3QgZGV0ZXJtaW5lIGNvbmZpZyBmb3Igb3BlcmF0aW9uICVzJywgJEdldFBhcmFtLT57T3BlcmF0aW9ufSApLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRTZWxmLT5fU2hvd1NjcmVlbigKICAgICAgICAlUGFyYW0sCiAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgIE9wZXJhdGlvbiAgICAgICA9PiAkR2V0UGFyYW0tPntPcGVyYXRpb259LAogICAgICAgIE9wZXJhdGlvbkNvbmZpZyA9PiAkT3BlcmF0aW9uQ29uZmlnLAogICAgICAgIE1hcHBpbmdJbmJvdW5kICA9PiAkT3BlcmF0aW9uQ29uZmlnLT57TWFwcGluZ0luYm91bmR9LT57VHlwZX0sCiAgICAgICAgTWFwcGluZ091dGJvdW5kID0+ICRPcGVyYXRpb25Db25maWctPntNYXBwaW5nT3V0Ym91bmR9LT57VHlwZX0sCiAgICApOwp9CgpzdWIgX0NoYW5nZUFjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15IEBFeHRyYVBhcmFtczsKICAgIGZvciBteSAkU2VjdGlvbiAocXcvR2VuZXJhbCBSZXF1ZXN0IFJlc3BvbnNlLykgewogICAgICAgIGlmICggJFNlbGYtPntTZXR0aW5nc30gJiYgJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259ICkgewogICAgICAgICAgICBwdXNoIEBFeHRyYVBhcmFtcywgJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259LT5AKjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEdldFBhcmFtID0gJFNlbGYtPl9QYXJhbXNHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnT2xkT3BlcmF0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIE1hbmRhdG9yeSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdPcGVyYXRpb24nLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBEZWZhdWx0ID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ0luYm91bmQnLAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnTWFwcGluZ1R5cGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnTWFwcGluZ091dGJvdW5kJywKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdTdHJpbmcnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ01hcHBpbmdUeXBlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnQ29udGludWVBZnRlclNhdmUnLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnU3RyaW5nJywKICAgICAgICAgICAgICAgIERlZmF1bHQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEBFeHRyYVBhcmFtcywKICAgICAgICBdLAogICAgKTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgaWYgKCAkR2V0UGFyYW0tPntFcnJvcn0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRHZXRQYXJhbS0+e0Vycm9yfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRXZWJzZXJ2aWNlRGF0YSAgPSAkUGFyYW17V2Vic2VydmljZURhdGF9OwogICAgbXkgJE9wZXJhdGlvbkNvbmZpZyA9IGRlbGV0ZSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UHJvdmlkZXJ9LT57T3BlcmF0aW9ufS0+eyAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259IH07CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkT3BlcmF0aW9uQ29uZmlnKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ291bGQgbm90IGRldGVybWluZSBjb25maWcgZm9yIG9wZXJhdGlvbiAlcycsICRHZXRQYXJhbS0+e09sZE9wZXJhdGlvbn0gKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICVFcnJvcnM7CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkR2V0UGFyYW0tPntPcGVyYXRpb259ICkgKSB7CiAgICAgICAgJEVycm9yc3tPcGVyYXRpb25TZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgICMgT3BlcmF0aW9uIHdhcyByZW5hbWVkIGFuZCBuZXcgbmFtZSBhbHJlYWR5IGV4aXN0cy4KICAgIGVsc2lmICgKICAgICAgICAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259IG5lICRHZXRQYXJhbS0+e09wZXJhdGlvbn0KICAgICAgICAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e09wZXJhdGlvbn0tPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9ICkKICAgICAgICApCiAgICB7CiAgICAgICAgJEVycm9yc3tPcGVyYXRpb25TZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgICRPcGVyYXRpb25Db25maWctPntEZXNjcmlwdGlvbn0gPSAkR2V0UGFyYW0tPntEZXNjcmlwdGlvbn07CgogICAgZm9yIG15ICRQYXJhbUNvbmZpZyAoQEV4dHJhUGFyYW1zKSB7CiAgICAgICAgaWYgKCBleGlzdHMgJFBhcmFtQ29uZmlnLT57RXJyb3JGdW5jdGlvbn0gKSB7CiAgICAgICAgICAgIG15ICRFcnJvciA9ICRQYXJhbUNvbmZpZy0+e0Vycm9yRnVuY3Rpb259LT4oCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBHZXRQYXJhbSA9PiAkR2V0UGFyYW0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJEVycm9yKSB7CiAgICAgICAgICAgICAgICAkRXJyb3JzeyAkUGFyYW1Db25maWctPntOYW1lfSAuICdTZXJ2ZXJFcnJvcicgfSA9ICRFcnJvcjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJE9wZXJhdGlvbkNvbmZpZy0+eyAkUGFyYW1Db25maWctPntOYW1lfSB9ID0gJEdldFBhcmFtLT57ICRQYXJhbUNvbmZpZy0+e05hbWV9IH07CiAgICB9CgogICAgaWYgKCVFcnJvcnMpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7JEdldFBhcmFtfSwKICAgICAgICAgICAgJUVycm9ycywKICAgICAgICAgICAgTW9kZSAgICAgICAgICAgID0+ICdDaGFuZ2UnLAogICAgICAgICAgICBPcGVyYXRpb24gICAgICAgPT4gJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSwKICAgICAgICAgICAgT3BlcmF0aW9uQ29uZmlnID0+ICRPcGVyYXRpb25Db25maWcsCiAgICAgICAgICAgIE5ld09wZXJhdGlvbiAgICA9PiAkR2V0UGFyYW0tPntPcGVyYXRpb259LAogICAgICAgICk7CiAgICB9CgogICAgIyBJZiBtYXBwaW5nIHR5cGVzIHdlcmUgbm90IGNoYW5nZWQsIGtlZXAgdGhlIG1hcHBpbmcgY29uZmlndXJhdGlvbi4KICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CgogICAgICAgICMgTm8gbWFwcGluZyBzZXQsIG1ha2Ugc3VyZSBpdCBpcyBub3QgcHJlc2VudCBpbiB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICBpZiAoICEkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSApIHsKICAgICAgICAgICAgZGVsZXRlICRPcGVyYXRpb25Db25maWctPnskRGlyZWN0aW9ufTsKICAgICAgICAgICAgbmV4dCBESVJFQ1RJT047CiAgICAgICAgfQoKICAgICAgICAjIE1hcHBpbmcgYWRkZWQgb3IgY2hhbmdlZCwgaW5pdGlhbGl6ZSB3aXRoIGVtcHR5IGNvbmZpZy4KICAgICAgICBteSAkT2xkTWFwcGluZyA9ICRPcGVyYXRpb25Db25maWctPnskRGlyZWN0aW9ufS0+e1R5cGV9OwogICAgICAgIGlmICggISRPbGRNYXBwaW5nIHx8ICggJE9sZE1hcHBpbmcgJiYgJEdldFBhcmFtLT57JERpcmVjdGlvbn0gbmUgJE9sZE1hcHBpbmcgKSApIHsKICAgICAgICAgICAgJE9wZXJhdGlvbkNvbmZpZy0+eyREaXJlY3Rpb259ID0gewogICAgICAgICAgICAgICAgVHlwZSA9PiAkR2V0UGFyYW0tPnskRGlyZWN0aW9ufSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBVcGRhdGUgb3BlcmF0aW9uIGNvbmZpZy4KICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntPcGVyYXRpb259LT57ICRHZXRQYXJhbS0+e09wZXJhdGlvbn0gfSA9ICRPcGVyYXRpb25Db25maWc7CgogICAgIyBUYWtlIGNhcmUgb2YgZXJyb3IgaGFuZGxlcnMgd2l0aCBvcGVyYXRpb24gZmlsdGVycyBpZiBvcGVyYXRpb24gd2FzIHJlbmFtZWQuCiAgICBpZiAoCiAgICAgICAgJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSBuZSAkR2V0UGFyYW0tPntPcGVyYXRpb259CiAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntFcnJvckhhbmRsaW5nfSApCiAgICAgICAgKQogICAgewogICAgICAgIG15ICRFcnJvckhhbmRsaW5nQ29uZmlnID0gJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e0Vycm9ySGFuZGxpbmd9OwoKICAgICAgICBFUlJPUkhBTkRMSU5HOgogICAgICAgIGZvciBteSAkRXJyb3JIYW5kbGluZyAoIHNvcnQga2V5cyAleyRFcnJvckhhbmRsaW5nQ29uZmlnfSApIHsKICAgICAgICAgICAgbmV4dCBFUlJPUkhBTkRMSU5HIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJEVycm9ySGFuZGxpbmdDb25maWctPnskRXJyb3JIYW5kbGluZ30gKTsKCiAgICAgICAgICAgIG15ICRPcGVyYXRpb25GaWx0ZXIgPSAkRXJyb3JIYW5kbGluZ0NvbmZpZy0+eyRFcnJvckhhbmRsaW5nfS0+e09wZXJhdGlvbkZpbHRlcn07CiAgICAgICAgICAgIG5leHQgRVJST1JIQU5ETElORyBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRPcGVyYXRpb25GaWx0ZXIpOwoKICAgICAgICAgICAgbmV4dCBFUlJPUkhBTkRMSU5HIGlmICFncmVwIHsgJF8gZXEgJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSB9IEB7JE9wZXJhdGlvbkZpbHRlcn07CgogICAgICAgICAgICAjIFJlbmFtZSBvcGVyYXRpb24gaW4gZXJyb3IgaGFuZGxpbmcgb3BlcmF0aW9uIGZpbHRlciB0byBrZWVwIGNvbnNpc3RlbmN5LgogICAgICAgICAgICBteSBATmV3T3BlcmF0aW9uRmlsdGVyID0gbWFwIHsgJF8gZXEgJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSA/ICRHZXRQYXJhbS0+e09wZXJhdGlvbn0gOiAkXyB9IEB7JE9wZXJhdGlvbkZpbHRlcn07CiAgICAgICAgICAgICRFcnJvckhhbmRsaW5nQ29uZmlnLT57JEVycm9ySGFuZGxpbmd9LT57T3BlcmF0aW9uRmlsdGVyfSA9IFxATmV3T3BlcmF0aW9uRmlsdGVyOwogICAgICAgIH0KCiAgICAgICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e0Vycm9ySGFuZGxpbmd9ID0gJEVycm9ySGFuZGxpbmdDb25maWc7CiAgICB9CgogICAgIyBhZGRlZCBmb3IgT1RPQk9UaWNrZXRJbnZva2VyCgogICAgIyBUYWtlIGNhcmUgb2Ygb3BlcmF0aW9uIGRlcGVuZGVudCBjb25maWd1cmF0aW9uIGlmIG9wZXJhdGlvbiB3YXMgcmVuYW1lZC4KICAgIGlmICggJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSBuZSAkR2V0UGFyYW0tPntPcGVyYXRpb259ICkgewoKICAgICAgICAjIFJvdXRlIG9wZXJhdGlvbiBtYXBwaW5nLgogICAgICAgIGlmICgKICAgICAgICAgICAgSXNIYXNoUmVmV2l0aERhdGEoICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntUcmFuc3BvcnR9LT57Q29uZmlnfS0+e1JvdXRlT3BlcmF0aW9uTWFwcGluZ30gKQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgbXkgJFJvdXRlT3BlcmF0aW9uTWFwcGluZwogICAgICAgICAgICAgICAgPSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UHJvdmlkZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntSb3V0ZU9wZXJhdGlvbk1hcHBpbmd9OwoKICAgICAgICAgICAgT1BFUkFUSU9OOgogICAgICAgICAgICBmb3IgbXkgJE9wZXJhdGlvbiAoIHNvcnQga2V5cyAleyRSb3V0ZU9wZXJhdGlvbk1hcHBpbmd9ICkgewogICAgICAgICAgICAgICAgbmV4dCBPUEVSQVRJT04gaWYgJE9wZXJhdGlvbiBuZSAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259OwoKICAgICAgICAgICAgICAgICRSb3V0ZU9wZXJhdGlvbk1hcHBpbmctPnsgJEdldFBhcmFtLT57T3BlcmF0aW9ufSB9CiAgICAgICAgICAgICAgICAgICAgPSBkZWxldGUgJFJvdXRlT3BlcmF0aW9uTWFwcGluZy0+eyAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259IH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRXZWJzZXJ2aWNlRGF0YS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntUcmFuc3BvcnR9LT57Q29uZmlnfS0+e1JvdXRlT3BlcmF0aW9uTWFwcGluZ30KICAgICAgICAgICAgICAgID0gJFJvdXRlT3BlcmF0aW9uTWFwcGluZzsKICAgICAgICB9CgogICAgICAgICMgT3V0Ym91bmQgaGVhZGVyIGNvbmZpZy4KICAgICAgICBpZiAoCiAgICAgICAgICAgIElzSGFzaFJlZldpdGhEYXRhKAogICAgICAgICAgICAgICAgJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e1RyYW5zcG9ydH0tPntDb25maWd9LT57T3V0Ym91bmRIZWFkZXJzfS0+e1NwZWNpZmljfQogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICBteSAkT3V0Ym91bmRIZWFkZXJDb25maWcKICAgICAgICAgICAgICAgID0gJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e1RyYW5zcG9ydH0tPntDb25maWd9LT57T3V0Ym91bmRIZWFkZXJzfS0+e1NwZWNpZmljfTsKCiAgICAgICAgICAgIE9QRVJBVElPTjoKICAgICAgICAgICAgZm9yIG15ICRPcGVyYXRpb24gKCBzb3J0IGtleXMgJXskT3V0Ym91bmRIZWFkZXJDb25maWd9ICkgewogICAgICAgICAgICAgICAgbmV4dCBPUEVSQVRJT04gaWYgJE9wZXJhdGlvbiBuZSAkR2V0UGFyYW0tPntPbGRPcGVyYXRpb259OwoKICAgICAgICAgICAgICAgICRPdXRib3VuZEhlYWRlckNvbmZpZy0+eyAkR2V0UGFyYW0tPntPcGVyYXRpb259IH0KICAgICAgICAgICAgICAgICAgICA9IGRlbGV0ZSAkT3V0Ym91bmRIZWFkZXJDb25maWctPnsgJEdldFBhcmFtLT57T2xkT3BlcmF0aW9ufSB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UHJvdmlkZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntPdXRib3VuZEhlYWRlcnN9LT57U3BlY2lmaWN9CiAgICAgICAgICAgICAgICA9ICRPdXRib3VuZEhlYWRlckNvbmZpZzsKICAgICAgICB9CgogICAgfQoKICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKS0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAleyRXZWJzZXJ2aWNlRGF0YX0sCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CiAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDb3VsZCBub3QgdXBkYXRlIHdlYiBzZXJ2aWNlJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIElmIHRoZSB1c2VyIHdvdWxkIGxpa2UgdG8gY29udGludWUgZWRpdGluZyB0aGUgb3BlcmF0aW9uIGNvbmZpZywganVzdCByZWRpcmVjdCB0byB0aGUgZWRpdCBzY3JlZW4uCiAgICBteSAkUmVkaXJlY3RVUkw7CiAgICBpZiAoICRHZXRQYXJhbS0+e0NvbnRpbnVlQWZ0ZXJTYXZlfSBlcSAxICkgewogICAgICAgICRSZWRpcmVjdFVSTCA9CiAgICAgICAgICAgICdBY3Rpb249JwogICAgICAgICAgICAuICRTZWxmLT57QWN0aW9ufQogICAgICAgICAgICAuICc7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9JwogICAgICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgICAgIC4gJztPcGVyYXRpb249JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRHZXRQYXJhbS0+e09wZXJhdGlvbn0gKQogICAgICAgICAgICAuICc7JzsKICAgIH0KCiAgICAjIE90aGVyd2lzZSByZXR1cm4gdG8gb3ZlcnZpZXcuCiAgICBlbHNlIHsKICAgICAgICAkUmVkaXJlY3RVUkwgPQogICAgICAgICAgICAnQWN0aW9uPUFkbWluR2VuZXJpY0ludGVyZmFjZVdlYnNlcnZpY2U7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9JwogICAgICAgICAgICAuICRQYXJhbXtXZWJzZXJ2aWNlSUR9CiAgICAgICAgICAgIC4gJzsnOwogICAgfQoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAkUmVkaXJlY3RVUkwsCiAgICApOwp9CgpzdWIgX0RlbGV0ZUFjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRHZXRQYXJhbSA9ICRTZWxmLT5fUGFyYW1zR2V0KAogICAgICAgIERlZmluaXRpb24gPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ09wZXJhdGlvbicsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1N0cmluZycsCiAgICAgICAgICAgICAgICBNYW5kYXRvcnkgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICBpZiAoICRHZXRQYXJhbS0+e0Vycm9yfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJEdldFBhcmFtLT57RXJyb3J9LAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRTZWxmLT5fSlNPTlJlc3BvbnNlKCBTdWNjZXNzID0+IDAgKTsKICAgIH0KCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte1dlYnNlcnZpY2VEYXRhfS0+e0NvbmZpZ30tPntQcm92aWRlcn0tPntPcGVyYXRpb259LT57ICRHZXRQYXJhbS0+e09wZXJhdGlvbn0gfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGRldGVybWluZSBjb25maWcgZm9yIG9wZXJhdGlvbiAkR2V0UGFyYW0tPntPcGVyYXRpb259IiwKICAgICAgICApOwogICAgICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAwICk7CiAgICB9CgogICAgIyBSZW1vdmUgb3BlcmF0aW9uIGZyb20gY29uZmlnLgogICAgZGVsZXRlICRQYXJhbXtXZWJzZXJ2aWNlRGF0YX0tPntDb25maWd9LT57UHJvdmlkZXJ9LT57T3BlcmF0aW9ufS0+eyAkR2V0UGFyYW0tPntPcGVyYXRpb259IH07CiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyktPldlYnNlcnZpY2VVcGRhdGUoCiAgICAgICAgJXsgJFBhcmFte1dlYnNlcnZpY2VEYXRhfSB9LAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkU2VsZi0+X0pTT05SZXNwb25zZSggU3VjY2VzcyA9PiAkU3VjY2VzcyApOwp9CgpzdWIgX1Nob3dTY3JlZW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnT3BlcmF0aW9uJywKICAgICAgICBWYWx1ZSA9PiAkUGFyYW17T3BlcmF0aW9ufSwKICAgICk7CgogICAgbXkgJVRlbXBsYXRlRGF0YSA9ICgKICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICRQYXJhbXtPcGVyYXRpb25Db25maWd9LT57RGVzY3JpcHRpb259LAogICAgICAgIE9wZXJhdGlvblR5cGUgPT4gJFBhcmFte09wZXJhdGlvbkNvbmZpZ30tPntUeXBlfSwKICAgICAgICBPcGVyYXRpb24gICAgID0+ICRQYXJhbXtPcGVyYXRpb259LAogICAgICAgIE5ld09wZXJhdGlvbiAgPT4gJFBhcmFte05ld09wZXJhdGlvbn0gLy8gJFBhcmFte09wZXJhdGlvbn0sCiAgICApOwoKICAgICMgSGFuZGxlIG1hcHBpbmcuCiAgICBteSAkTWFwcGluZ01vZHVsZXMgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0dlbmVyaWNJbnRlcmZhY2U6Ok1hcHBpbmc6Ok1vZHVsZScpIHx8IHt9OwogICAgbXkgQE1hcHBpbmdNb2R1bGVMaXN0ID0gc29ydCBrZXlzICV7JE1hcHBpbmdNb2R1bGVzfTsKICAgIERJUkVDVElPTjoKICAgIGZvciBteSAkRGlyZWN0aW9uIChxdyhNYXBwaW5nSW5ib3VuZCBNYXBwaW5nT3V0Ym91bmQpKSB7CiAgICAgICAgbXkgJE9sZE1hcHBpbmcgPSAkUGFyYW17T3BlcmF0aW9uQ29uZmlnfS0+eyREaXJlY3Rpb259LT57VHlwZX07CiAgICAgICAgbXkgJE1hcHBpbmcgICAgPSAkUGFyYW17JERpcmVjdGlvbn07CgogICAgICAgICRUZW1wbGF0ZURhdGF7ICREaXJlY3Rpb24gLiAnU3RyZycgfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFxATWFwcGluZ01vZHVsZUxpc3QsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJERpcmVjdGlvbiwKICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkTWFwcGluZywKICAgICAgICAgICAgU29ydCAgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZSBSZWdpc3RlckNoYW5nZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBPbmx5IHNob3cgY29uZmlndXJlIGJ1dHRvbiBpZiB3ZSBoYXZlIGFuIHVuY2hhbmdlZCBleGlzdGluZyBtYXBwaW5nIHR5cGUuCiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgISRPbGRNYXBwaW5nOwogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICEkTWFwcGluZzsKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAkTWFwcGluZyBuZSAkT2xkTWFwcGluZzsKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAhJE1hcHBpbmdNb2R1bGVzLT57JE1hcHBpbmd9LT57Q29uZmlnRGlhbG9nfTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJERpcmVjdGlvbiAuICdDb25maWd1cmVCdXR0b24nLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICREaXJlY3Rpb24gLiBDb25maWdEaWFsb2cgPT4gJE1hcHBpbmdNb2R1bGVzLT57JE1hcHBpbmd9LT57Q29uZmlnRGlhbG9nfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIFNFQ1RJT046CiAgICBmb3IgbXkgJFNlY3Rpb24gKHF3L0dlbmVyYWwgUmVxdWVzdCBSZXNwb25zZS8pIHsKICAgICAgICBuZXh0IFNFQ1RJT04gaWYgISRTZWxmLT57U2V0dGluZ3N9OwogICAgICAgIG5leHQgU0VDVElPTiBpZiAhJFNlbGYtPntTZXR0aW5nc317JFNlY3Rpb259OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAkU2VjdGlvbiwKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJFNldHRpbmcgKCBzb3J0IHsgJGEtPntOYW1lfSBjbXAgJGItPntOYW1lfSB9ICRTZWxmLT57U2V0dGluZ3N9eyRTZWN0aW9ufS0+QCogKSB7CiAgICAgICAgICAgIG15ICRTZXR0aW5nSFRNTDsKICAgICAgICAgICAgaWYgKCAkU2V0dGluZy0+e1R5cGV9IGVxICdBcnJheScgKSB7CiAgICAgICAgICAgICAgICAkU2V0dGluZ0hUTUwgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgICAgICAgICAkU2V0dGluZy0+JSosCiAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17T3BlcmF0aW9uQ29uZmlnfS0+eyAkU2V0dGluZy0+e05hbWV9IH0gLy8gJFNldHRpbmctPntTZWxlY3RlZElEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU2V0dGluZycgLiAkU2VjdGlvbiwKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFNldHRpbmdOYW1lICAgICAgICA9PiAkU2V0dGluZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIFNldHRpbmdMYWJlbCAgICAgICA9PiAkU2V0dGluZy0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICBTZXR0aW5nSFRNTCAgICAgICAgPT4gJFNldHRpbmdIVE1MLAogICAgICAgICAgICAgICAgICAgIFNldHRpbmdFeHBsYW5hdGlvbiA9PiAkU2V0dGluZy0+e0V4cGxhbmF0aW9ufSwKICAgICAgICAgICAgICAgICAgICBTZXJ2ZXJFcnJvciAgICAgICAgPT4gJFBhcmFteyAkU2V0dGluZy0+e05hbWV9IC4gJ1NlcnZlckVycm9yJyB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlVGVtcGxhdGVEYXRhLAogICAgICAgICAgICBXZWJzZXJ2aWNlTmFtZSA9PiAkUGFyYW17V2Vic2VydmljZURhdGF9LT57TmFtZX0sCgogICAgICAgICAgICAjIFRPRE86IENvcGllZCBmcm9tIENJSW52b2tlciAtIG1heWJlIHVubmVjZXNzYXJ5CiAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgfSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX1BhcmFtc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJUdldFBhcmFtOwogICAgREVGSU5JVElPTjoKICAgIGZvciBteSAkRGVmaW5pdGlvbiAoIEB7ICRQYXJhbXtEZWZpbml0aW9ufSB9ICkgewogICAgICAgIG15ICROYW1lID0gJERlZmluaXRpb24tPntOYW1lfTsKCiAgICAgICAgaWYgKCAkRGVmaW5pdGlvbi0+e1R5cGV9IGVxICdTdHJpbmcnICkgewogICAgICAgICAgICAkR2V0UGFyYW17JE5hbWV9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJE5hbWUgKSAvLyAkRGVmaW5pdGlvbi0+e0RlZmF1bHR9OwogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgSXNTdHJpbmdXaXRoRGF0YSggJEdldFBhcmFteyROYW1lfSApOwoKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICEkRGVmaW5pdGlvbi0+e01hbmRhdG9yeX07CiAgICAgICAgICAgICRHZXRQYXJhbXtFcnJvcn0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdOZWVkICVzJywgJE5hbWUgKTsKICAgICAgICAgICAgcmV0dXJuIFwlR2V0UGFyYW07CiAgICAgICAgfQoKICAgICAgICBlbHNpZiAoICREZWZpbml0aW9uLT57VHlwZX0gZXEgJ0FycmF5JyApIHsKICAgICAgICAgICAgJEdldFBhcmFteyROYW1lfSA9IFsgJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJE5hbWUgKSBdOwogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17JE5hbWV9ICk7CgogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgISREZWZpbml0aW9uLT57TWFuZGF0b3J5fTsKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9IFRyYW5zbGF0YWJsZSggJ05lZWQgJXMnLCAoICREZWZpbml0aW9uLT57TGFiZWx9IHx8ICREZWZpbml0aW9uLT57TmFtZX0gKSApOwogICAgICAgICAgICByZXR1cm4gXCVHZXRQYXJhbTsKICAgICAgICB9CiAgICB9CgogICAgIyBUeXBlIGNoZWNrcy4KICAgIERFRklOSVRJT046CiAgICBmb3IgbXkgJERlZmluaXRpb24gKCBAeyAkUGFyYW17RGVmaW5pdGlvbn0gfSApIHsKICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgISREZWZpbml0aW9uLT57Q2hlY2t9OwoKICAgICAgICBteSAkTmFtZSA9ICREZWZpbml0aW9uLT57TmFtZX07CiAgICAgICAgbmV4dCBERUZJTklUSU9OIGlmICFkZWZpbmVkICRHZXRQYXJhbXskTmFtZX07CgogICAgICAgIGlmICggJERlZmluaXRpb24tPntDaGVja30gZXEgJ09wZXJhdGlvblR5cGUnICkgewogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgJFNlbGYtPl9PcGVyYXRpb25UeXBlQ2hlY2soIE9wZXJhdGlvblR5cGUgPT4gJEdldFBhcmFteyROYW1lfSApOwoKICAgICAgICAgICAgJEdldFBhcmFte0Vycm9yfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ09wZXJhdGlvblR5cGUgJXMgaXMgbm90IHJlZ2lzdGVyZWQnLCAkR2V0UGFyYW17JE5hbWV9ICk7CiAgICAgICAgICAgIHJldHVybiBcJUdldFBhcmFtOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkRGVmaW5pdGlvbi0+e0NoZWNrfSBlcSAnTWFwcGluZ1R5cGUnICkgewogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgIUlzU3RyaW5nV2l0aERhdGEoICRHZXRQYXJhbXtOYW1lfSApOwogICAgICAgICAgICBuZXh0IERFRklOSVRJT04gaWYgJFNlbGYtPl9NYXBwaW5nVHlwZUNoZWNrKCBNYXBwaW5nVHlwZSA9PiAkR2V0UGFyYW17JE5hbWV9ICk7CgogICAgICAgICAgICAkR2V0UGFyYW17RXJyb3J9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTWFwcGluZ1R5cGUgJXMgaXMgbm90IHJlZ2lzdGVyZWQnLCAkR2V0UGFyYW17JE5hbWV9ICk7CiAgICAgICAgICAgIHJldHVybiBcJUdldFBhcmFtOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVHZXRQYXJhbTsKfQoKc3ViIF9PcGVyYXRpb25UeXBlQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtPcGVyYXRpb25UeXBlfTsKCiAgICBteSAkT3BlcmF0aW9ucyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGUnKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJE9wZXJhdGlvbnMpOwoKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRPcGVyYXRpb25zLT57ICRQYXJhbXtPcGVyYXRpb25UeXBlfSB9ICk7CiAgICByZXR1cm4gMTsKfQoKc3ViIF9NYXBwaW5nVHlwZUNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17TWFwcGluZ1R5cGV9OwoKICAgIG15ICRNYXBwaW5ncyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6TWFwcGluZzo6TW9kdWxlJyk7CiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRNYXBwaW5ncyk7CgogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJE1hcHBpbmdzLT57ICRQYXJhbXtNYXBwaW5nVHlwZX0gfSApOwogICAgcmV0dXJuIDE7Cn0KCnN1YiBfSlNPTlJlc3BvbnNlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyByZXR1cm4gSlNPTiBvdXRwdXQuCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5KU09OUmVwbHkoCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gJFBhcmFte1N1Y2Nlc3N9IC8vIDAsCiAgICAgICAgfSwKICAgICk7Cn0KCnN1YiBfRXh0cmFTZXR0aW5ncyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDbGFzc0xpc3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCggQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJyApOwogICAgbXkgJENsYXNzUmVzdHJpY3Rpb25zID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1VcHNlcnQ6OkNsYXNzZXMnKTsKICAgIG15IEBDbGFzc2VzOwoKICAgIGlmICggJENsYXNzUmVzdHJpY3Rpb25zICYmICRDbGFzc1Jlc3RyaWN0aW9ucy0+eyAkUGFyYW17V2Vic2VydmljZX0gfSApIHsKICAgICAgICBteSAlQ2xhc3NMb29rdXAgPSByZXZlcnNlICRDbGFzc0xpc3QtPiUqOwogICAgICAgIEBDbGFzc2VzID0gbWFwIHsgJENsYXNzTG9va3VweyRffSB9ICRDbGFzc1Jlc3RyaWN0aW9ucy0+eyAkUGFyYW17V2Vic2VydmljZX0gfS0+QCo7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBAQ2xhc3NlcyA9IGtleXMgJENsYXNzTGlzdC0+JSo7CiAgICB9CgogICAgJFNlbGYtPntTZXR0aW5nc317UmVxdWVzdH0gPSBbCiAgICAgICAgbWFwIHsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTGFiZWwgICAgICAgPT4gJ0lkZW50aWZpZXIgZm9yICcgLiAkQ2xhc3NMaXN0LT57JF99LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0lkZW50aWZpZXInIC4gJF8sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnQXJyYXknLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgRXhwbGFuYXRpb24gPT4gJ1BsZWFzZSBzZWxlY3QgYW4gYXR0cmlidXRlIG9yIGEgY29tYmluYXRpb24gb2YgYXR0cmlidXRlcyB3aGljaCB1bmlxdWVseSBtYXAgdGhlIGNvbmZpZyBpdGVtcy4nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gJFNlbGYtPl9Qb3NzaWJsZVZhbHVlc0dldCggQ2xhc3NJRCA9PiAkXyApLAogICAgICAgICAgICB9CiAgICAgICAgfSBAQ2xhc3NlcywKICAgIF07CgogICAgcmV0dXJuOwp9CgpzdWIgX1Bvc3NpYmxlVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICk7CgogICAgcmV0dXJuIFsKICAgICAgICBxdy9DbGFzc2VzIENvbmZpZ0l0ZW1JRCBOdW1iZXIgTmFtZSBEZXBsU3RhdGVzLywKICAgICAgICBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXyB9IHNvcnQga2V5cyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqLAogICAgXTsKfQoKMTsK</File>
        <File Location="Kernel/Modules/AdminITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWRtaW5JVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSBJc0hhc2hSZWZXaXRoRGF0YSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjcwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZXQgY2xhc3MgbGlzdCBhbmQgY2hlY2sgaXQKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbiB1bmxlc3MgJENsYXNzTGlzdDsKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbiB1bmxlc3MgcmVmICRDbGFzc0xpc3QgZXEgJ0hBU0gnOwoKICAgICMgZ2V0IHJvbGUgbGlzdCBhbmQgY2hlY2sgaXQsIHRoZSByb2xlIGxpc3QgbWF5IGJlIGVtcHR5CiAgICBteSAkUm9sZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpSb2xlJywKICAgICk7CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuIHVubGVzcyAkUm9sZUxpc3Q7CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4gdW5sZXNzIHJlZiAkUm9sZUxpc3QgZXEgJ0hBU0gnOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkUGFyYW1PYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkVXNlck9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgbXkgQEV4YW1wbGVDbGFzc2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RGlyZWN0b3J5UmVhZCgKICAgICAgICBEaXJlY3RvcnkgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJykgLiAnL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzJywKICAgICAgICBGaWx0ZXIgICAgPT4gJyoueW1sJywKICAgICk7CgogICAgIyBsb2FkIHRoZSBSZWFkeTJJbXBvcnQgc2VsZWN0aW9uIGxpc3Qgd2l0aCBleGFtcGxlIGNsYXNzZXMgKGZvciBSZWFkeTJJbXBvcnQgZmVhdHVyZSkKICAgIG15ICVFeGFtcGxlQ2xhc3NEYXRhOwoKICAgIGZvciBteSAkRXhhbXBsZUNsYXNzRmlsZW5hbWUgKEBFeGFtcGxlQ2xhc3NlcykgewogICAgICAgIG15ICRLZXkgPSAkRXhhbXBsZUNsYXNzRmlsZW5hbWU7CiAgICAgICAgJEtleSA9fiBze14uKi8oW14vXSspJH17JDF9c214OwogICAgICAgIG15ICRWYWx1ZSA9ICRLZXk7CiAgICAgICAgJFZhbHVlID1+IHN7XiguKykueW1sfXskMX1zbXg7CiAgICAgICAgJFZhbHVlID1+IHN7X317IH1zbXhnOwogICAgICAgICRFeGFtcGxlQ2xhc3NEYXRheyRLZXl9ID0gJFZhbHVlOwogICAgfQoKICAgICRQYXJhbXtFeGFtcGxlQ2xhc3NMaXN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdFeGFtcGxlQ2xhc3MnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJUV4YW1wbGVDbGFzc0RhdGEsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUgVmFsaWRhdGVfUmVxdWlyZWQnLAogICAgKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGNvbmZpZyBpdGVtIGNsYXNzIGltcG9ydDogbGlzdCBjbGFzc2VzIG9mIGZpbGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdGaWxlQ2xhc3NMaXN0JyApIHsKCiAgICAgICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICAgICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgICAgICBteSAkRXhhbXBsZUZpbGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRXhhbXBsZUZpbGUnICk7CgogICAgICAgIG15ICRDb250ZW50ID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvdmFyL2l0c20vY29uZmlnaXRlbWNsYXNzZXMvJEV4YW1wbGVGaWxlIiwKICAgICAgICAgICAgTW9kZSAgICAgPT4gJ3V0ZjgnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRDb250ZW50ICkgewogICAgICAgICAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvdWxkIG5vdCByZWFkICVzIScsICRFeGFtcGxlRmlsZSApLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSAkeyAkQ29udGVudCB8fCBcJycgfTsKCiAgICAgICAgJENvbnRlbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgICAgICk7CgogICAgICAgIGlmICggcmVmICRDb250ZW50IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgICAgIH0KCiAgICAgICAgbXkgJUltcG9ydEl0ZW1zID0gKAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJEl0ZW0gKCAkQ29udGVudC0+QCogKSB7CiAgICAgICAgICAgIGlmICggJEl0ZW0tPntDbGFzc30gKSB7CiAgICAgICAgICAgICAgICAkSW1wb3J0SXRlbXN7Q2xhc3Nlc30gLy89IFtdOwogICAgICAgICAgICAgICAgcHVzaCAkSW1wb3J0SXRlbXN7Q2xhc3Nlc30tPkAqLCAkSXRlbS0+e0NsYXNzfXtOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRJdGVtLT57Um9sZU5hbWV9ICkgewogICAgICAgICAgICAgICAgJEltcG9ydEl0ZW1ze1JvbGVzfSAvLz0gW107CiAgICAgICAgICAgICAgICBwdXNoICRJbXBvcnRJdGVtc3tSb2xlc30tPkAqLCAkSXRlbS0+e1JvbGVOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkpTT05SZXBseSgKICAgICAgICAgICAgRGF0YSA9PiBcJUltcG9ydEl0ZW1zLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjb25maWcgaXRlbSBjbGFzcyBpbXBvcnQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDbGFzc0ltcG9ydCcgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIG15ICRDb250ZW50OwoKICAgICAgICBteSAkSG9tZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpOwoKICAgICAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgICAgIG15ICRFeGFtcGxlQ2xhc3MgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRXhhbXBsZUNsYXNzJyApOwogICAgICAgIG15ICRGaWxlV2l0aG91dEV4dGVuc2lvbjsKCiAgICAgICAgbXkgJEV4YW1wbGVDbGFzc0ZpbGVuYW1lID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0V4YW1wbGVDbGFzcycgKTsKICAgICAgICAkRXhhbXBsZUNsYXNzRmlsZW5hbWUgPX4gc3svK3xcLnsyLH19e31zbXg7ICAgICMgcmVtb3ZlIHNsYXNoZXMgYW5kIC4uCgogICAgICAgIGlmICggISRFeGFtcGxlQ2xhc3NGaWxlbmFtZSApIHsKICAgICAgICAgICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdOZWVkIEV4YW1wbGVDbGFzc2VzIScpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBleHRyYWN0IGZpbGUgbmFtZSB3aXRob3V0IGV4dGVuc2lvbgogICAgICAgICgkRmlsZVdpdGhvdXRFeHRlbnNpb24pID0gJEV4YW1wbGVDbGFzc0ZpbGVuYW1lID1+IG17KC4qPylcLnltbCR9c214OwoKICAgICAgICAjIHJ1biBfcHJlLnBtIGlmIGF2YWlsYWJsZQogICAgICAgIGlmICggLWUgIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzLyIgLiAkRmlsZVdpdGhvdXRFeHRlbnNpb24gLiAiX3ByZS5wbSIgKSB7CgogICAgICAgICAgICBteSAkQmFja2VuZE5hbWUgPSAndmFyOjppdHNtOjpjb25maWdpdGVtY2xhc3Nlczo6JyAuICRGaWxlV2l0aG91dEV4dGVuc2lvbiAuICdfcHJlJzsKCiAgICAgICAgICAgIG15ICRMb2FkZWQgPSAkTWFpbk9iamVjdC0+UmVxdWlyZSgKICAgICAgICAgICAgICAgICRCYWNrZW5kTmFtZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkTG9hZGVkKSB7CiAgICAgICAgICAgICAgICBteSAkQmFja2VuZFByZSA9ICRLZXJuZWw6Ok9NLT5HZXQoCiAgICAgICAgICAgICAgICAgICAgJEJhY2tlbmROYW1lLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAlU3RhdHVzID0gJEJhY2tlbmRQcmUtPlJ1bigpOwogICAgICAgICAgICAgICAgaWYgKCAhJFN0YXR1c3tTdWNjZXNzfSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBzaG93IHRoZSBlcnJvciBzY3JlZW4KICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJFN0YXR1c3tFcnJvcn0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy8kRXhhbXBsZUNsYXNzRmlsZW5hbWUiLAogICAgICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENvbnRlbnQgKSB7CiAgICAgICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ291bGQgbm90IHJlYWQgJXMhJywgJEV4YW1wbGVDbGFzc0ZpbGVuYW1lICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICAgICAkQ29udGVudCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJENvbnRlbnQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCByZWYgJENvbnRlbnQgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAkQ29udGVudCA9IFskQ29udGVudF07CiAgICAgICAgfQoKICAgICAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoJENvbnRlbnQpICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRVcGRhdGVFeGlzdGluZ0VudGl0aWVzID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1VwZGF0ZUV4aXN0aW5nRW50aXRpZXMnICk7CgogICAgICAgICMgaW1wb3J0IHRoZSBjbGFzcyBZQU1MIGZpbGUKICAgICAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzSW1wb3J0KAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICAgICAgQ2xhc3NFeGlzdHMgPT4gJFVwZGF0ZUV4aXN0aW5nRW50aXRpZXMgPyAnVVBEQVRFJyA6ICdFUlJPUicsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFJlc3VsdC0+e1N1Y2Nlc3N9ICkgewoKICAgICAgICAgICAgIyByZXR1cm4gZXJyb3IKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkpTT05SZXBseSgKICAgICAgICAgICAgICAgIERhdGEgPT4gJFJlc3VsdCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICMgUnVuIF9wb3N0LnBtIGlmIGF2YWlsYWJsZS4KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJEV4YW1wbGVDbGFzcwogICAgICAgICAgICAgICAgJiYgLWUgIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzLyIgLiAkRmlsZVdpdGhvdXRFeHRlbnNpb24gLiAiX3Bvc3QucG0iCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG15ICRCYWNrZW5kTmFtZSA9ICd2YXI6Oml0c206OmNvbmZpZ2l0ZW1jbGFzc2VzOjonIC4gJEZpbGVXaXRob3V0RXh0ZW5zaW9uIC4gJ19wb3N0JzsKCiAgICAgICAgICAgICAgICBteSAkTG9hZGVkID0gJE1haW5PYmplY3QtPlJlcXVpcmUoCiAgICAgICAgICAgICAgICAgICAgJEJhY2tlbmROYW1lLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoJExvYWRlZCkgewoKICAgICAgICAgICAgICAgICAgICBteSAkQmFja2VuZFBvc3QgPSAkS2VybmVsOjpPTS0+R2V0KAogICAgICAgICAgICAgICAgICAgICAgICAkQmFja2VuZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJVN0YXR1cyA9ICRCYWNrZW5kUG9zdC0+UnVuKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFN0YXR1c3tTdWNjZXNzfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdyB0aGUgZXJyb3Igc2NyZWVuCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJFN0YXR1c3tFcnJvcn0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+SlNPTlJlcGx5KAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBsaXN0IG9mIHRoZSB2ZXJzaW9ucyBvZiB0aGUgZGVmaW5pdGlvbiBvZiBhIGNvbmZpZyBpdGVtIGNsYXNzCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2xhc3NEZWZpbml0aW9uTGlzdCcgKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGlkCiAgICAgICAgbXkgJENsYXNzSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2xhc3NJRCcgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSIgKSB1bmxlc3MgJENsYXNzSUQ7CgogICAgICAgICMgc2hvdyBzaWRlYmFyLCBhY3RpdmF0ZSB0aGUgJ092ZXJ2aWV3JyBibG9jawogICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgIE9yaWdpbmFsICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgQ2xhc3NMaXN0ICAgICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgICAgICBSb2xlTGlzdCAgICAgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3IHJlc3VsdAogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDbGFzc0RlZmluaXRpb25MaXN0JywKICAgICAgICApOwoKICAgICAgICAjIGdldCBkZWZpbml0aW9uIGxpc3QKICAgICAgICBteSAkRGVmaW5pdGlvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkxpc3QoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uICggcmV2ZXJzZSAkRGVmaW5pdGlvbkxpc3QtPkAqICkgewoKICAgICAgICAgICAgIyBnZXQgdXNlciBkYXRhCiAgICAgICAgICAgIG15ICRGdWxsTmFtZSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSgKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkRGVmaW5pdGlvbi0+e0NyZWF0ZUJ5fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0IGRlZmluaXRpb24KICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDbGFzc0RlZmluaXRpb25MaXN0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICREZWZpbml0aW9uLT4lKiwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzTGlzdC0+eyRDbGFzc0lEfSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeVVzZXIgPT4gJEZ1bGxOYW1lLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBsaXN0IG9mIHRoZSB2ZXJzaW9ucyBvZiB0aGUgZGVmaW5pdGlvbiBvZiBhIGNvbmZpZyBpdGVtIHJvbGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdSb2xlRGVmaW5pdGlvbkxpc3QnICkgewoKICAgICAgICAjIGdldCByb2xlIGlkCiAgICAgICAgbXkgJFJvbGVJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdSb2xlSUQnICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICkgdW5sZXNzICRSb2xlSUQ7CgogICAgICAgICMgc2hvdyBzaWRlYmFyLCBhY3RpdmF0ZSB0aGUgJ092ZXJ2aWV3JyBibG9jawogICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgIE9yaWdpbmFsICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgQ2xhc3NMaXN0ICAgICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgICAgICBSb2xlTGlzdCAgICAgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3IHJlc3VsdAogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb2xlRGVmaW5pdGlvbkxpc3QnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGxpc3Qgb2YgZGVmaW5pdGlvbnMgZm9yIHRoYXQgcm9sZSwga2VlcGluZyB0aGUgY2FsbCB0byBEZWZpbml0aW9uTGlzdCgpCiAgICAgICAgbXkgJERlZmluaXRpb25MaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uTGlzdCgKICAgICAgICAgICAgUm9sZUlEID0+ICRSb2xlSUQsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uICggcmV2ZXJzZSAkRGVmaW5pdGlvbkxpc3QtPkAqICkgewoKICAgICAgICAgICAgIyBnZXQgdXNlciBkYXRhCiAgICAgICAgICAgIG15ICRGdWxsTmFtZSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSgKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkRGVmaW5pdGlvbi0+e0NyZWF0ZUJ5fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0IGRlZmluaXRpb24KICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdSb2xlRGVmaW5pdGlvbkxpc3RSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJERlZmluaXRpb24tPiUqLAogICAgICAgICAgICAgICAgICAgIFJvbGUgICAgICAgICA9PiAkUm9sZUxpc3QtPnskUm9sZUlEfSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeVVzZXIgPT4gJEZ1bGxOYW1lLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjbGFzcyBkZWZpbml0aW9uIHZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDbGFzc0RlZmluaXRpb25WaWV3JyApIHsKCiAgICAgICAgIyBnZXQgZGVmaW5pdGlvbiBpZAogICAgICAgIG15ICREZWZpbml0aW9uSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRGVmaW5pdGlvbklEJyApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApIHVubGVzcyAkRGVmaW5pdGlvbklEOwoKICAgICAgICAjIGdldCBkZWZpbml0aW9uCiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgJFNlbGYtPl9TaG93U2lkZWJhcigKICAgICAgICAgICAgT3JpZ2luYWwgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICBDbGFzc0xpc3QgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIFJvbGVMaXN0ICAgICAgPT4gJFJvbGVMaXN0LAogICAgICAgICAgICBDbGFzc1NlbGVjdGVkID0+IHsKICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb24tPntDbGFzc0lEfSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gJERlZmluaXRpb24tPntDbGFzc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENsYXNzVmVyc2lvblNlbGVjdGVkID0+IHsKICAgICAgICAgICAgICAgIElEICAgICAgPT4gJERlZmluaXRpb25JRCwKICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gJERlZmluaXRpb24tPntWZXJzaW9ufSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvblN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFVzZXJOYW1lID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICBVc2VySUQgPT4gJERlZmluaXRpb24tPntDcmVhdGVCeX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0NsYXNzRGVmaW5pdGlvblZpZXcnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICREZWZpbml0aW9uLT4lKiwKICAgICAgICAgICAgICAgIENyZWF0ZUJ5VXNlciA9PiAkVXNlck5hbWUsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHJvbGUgZGVmaW5pdGlvbiB2aWV3CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnUm9sZURlZmluaXRpb25WaWV3JyApIHsKCiAgICAgICAgIyBnZXQgZGVmaW5pdGlvbiBpZAogICAgICAgIG15ICREZWZpbml0aW9uSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRGVmaW5pdGlvbklEJyApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApIHVubGVzcyAkRGVmaW5pdGlvbklEOwoKICAgICAgICAjIGdldCBkZWZpbml0aW9uCiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+Um9sZURlZmluaXRpb25HZXQoCiAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBzaWRlYmFyLCBhY3RpdmF0ZSB0aGUgJ092ZXJ2aWV3JyBibG9jawogICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgIE9yaWdpbmFsICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICBDbGFzc0xpc3QgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgUm9sZUxpc3QgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgUm9sZVNlbGVjdGVkID0+IHsKICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb24tPntSb2xlSUR9LAogICAgICAgICAgICAgICAgTmFtZSA9PiAkRGVmaW5pdGlvbi0+e1JvbGV9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBSb2xlVmVyc2lvblNlbGVjdGVkID0+IHsKICAgICAgICAgICAgICAgIElEICAgICAgPT4gJERlZmluaXRpb25JRCwKICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gJERlZmluaXRpb24tPntWZXJzaW9ufSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvblN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFVzZXJOYW1lID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICBVc2VySUQgPT4gJERlZmluaXRpb24tPntDcmVhdGVCeX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1JvbGVEZWZpbml0aW9uVmlldycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJERlZmluaXRpb24tPiUqLAogICAgICAgICAgICAgICAgQ3JlYXRlQnlVc2VyID0+ICRVc2VyTmFtZSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgY2xhc3MgZGVmaW5pdGlvbiBjaGFuZ2UKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDbGFzc0RlZmluaXRpb25DaGFuZ2UnICkgewoKICAgICAgICAjIGdldCBjbGFzcyBpZAogICAgICAgIG15ICRDbGFzc0lEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NsYXNzSUQnICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICkgdW5sZXNzICRDbGFzc0lEOwoKICAgICAgICAjIEFkZCBjb2RlIG1pcnJvciBsYW5ndWFnZSBtb2RlLgogICAgICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdFZGl0b3JMYW5ndWFnZU1vZGUnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJ3RleHQveC15YW1sJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGNsYXNzIGRlZmluaXRpb24KICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBzaWRlYmFyLCBhY3RpdmF0ZSB0aGUgJ092ZXJ2aWV3JyBibG9jawogICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgIE9yaWdpbmFsICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgQ2xhc3NMaXN0ICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgICAgICBSb2xlTGlzdCAgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgQ2xhc3NTZWxlY3RlZCA9PiB7CiAgICAgICAgICAgICAgICBJRCAgID0+ICREZWZpbml0aW9uLT57Q2xhc3NJRH0sCiAgICAgICAgICAgICAgICBOYW1lID0+ICREZWZpbml0aW9uLT57Q2xhc3N9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFZGl0ICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFNob3dPdmVydmlld0xpbmsgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQKICAgICAgICBteSAkRWRpdG9yUm93cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKS0+e0VkaXRvclJvd3N9IHx8IDMwOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDbGFzc0RlZmluaXRpb25DaGFuZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICV7JERlZmluaXRpb259LAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIENsYXNzICAgPT4gJENsYXNzTGlzdC0+eyRDbGFzc0lEfSwKICAgICAgICAgICAgICAgIFJvd3MgICAgPT4gJEVkaXRvclJvd3MsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHJvbGUgZGVmaW5pdGlvbiBjaGFuZ2UKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdSb2xlRGVmaW5pdGlvbkNoYW5nZScgKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGlkCiAgICAgICAgbXkgJFJvbGVJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdSb2xlSUQnICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICkgdW5sZXNzICRSb2xlSUQ7CgogICAgICAgICMgQWRkIGNvZGUgbWlycm9yIGxhbmd1YWdlIG1vZGUuCiAgICAgICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0VkaXRvckxhbmd1YWdlTW9kZScsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAndGV4dC94LXlhbWwnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgY2xhc3MgZGVmaW5pdGlvbgogICAgICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJFJvbGVJRCwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgc2lkZWJhciwgYWN0aXZhdGUgdGhlICdPdmVydmlldycgYmxvY2sKICAgICAgICAkU2VsZi0+X1Nob3dTaWRlYmFyKAogICAgICAgICAgICBPcmlnaW5hbCAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgQ2xhc3NMaXN0ICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIFJvbGVMaXN0ICAgICA9PiAkUm9sZUxpc3QsCiAgICAgICAgICAgIFJvbGVTZWxlY3RlZCA9PiB7CiAgICAgICAgICAgICAgICBJRCAgID0+ICREZWZpbml0aW9uLT57Q2xhc3NJRH0sCiAgICAgICAgICAgICAgICBOYW1lID0+ICREZWZpbml0aW9uLT57Q2xhc3N9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFZGl0ICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFNob3dPdmVydmlld0xpbmsgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQKICAgICAgICBteSAkRWRpdG9yUm93cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKS0+e0VkaXRvclJvd3N9IHx8IDMwOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb2xlRGVmaW5pdGlvbkNoYW5nZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJXskRGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICBSb2xlSUQgPT4gJFJvbGVJRCwKICAgICAgICAgICAgICAgIFJvbGUgICA9PiAkUm9sZUxpc3QtPnskUm9sZUlEfSwKICAgICAgICAgICAgICAgIFJvd3MgICA9PiAkRWRpdG9yUm93cywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgY2xhc3MgZGVmaW5pdGlvbiBzYXZlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2xhc3NEZWZpbml0aW9uU2F2ZScgKSB7CgogICAgICAgICMgZ2V0IGFuZCBjaGVjayBwYXJhbXMKICAgICAgICBteSAlRGVmaW5pdGlvbjsKICAgICAgICBmb3IgbXkgJEZvcm1QYXJhbSAocXcoQ2xhc3NJRCBEZWZpbml0aW9uKSkgewogICAgICAgICAgICAkRGVmaW5pdGlvbnskRm9ybVBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRGb3JtUGFyYW0gKSB8fCAnJzsKICAgICAgICB9CiAgICAgICAgZm9yIG15ICRGb3JtUGFyYW0gKHF3KENsYXNzSUQgRGVmaW5pdGlvbikpIHsKICAgICAgICAgICAgaWYgKCAhJERlZmluaXRpb257JEZvcm1QYXJhbX0gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRGb3JtUGFyYW0hIgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFZhbGlkYXRlIFlBTUwgY29kZSBieSBjb252ZXJ0aW5nIGl0IHRvIFBlcmwuCiAgICAgICAgbXkgJERlZmluaXRpb25SZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICREZWZpbml0aW9ue0RlZmluaXRpb259LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbiB1bmxlc3MgcmVmICREZWZpbml0aW9uUmVmIGVxICdIQVNIJzsKCiAgICAgICAgIyBhZGQgdG8gZGF0YWJhc2UKICAgICAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgICAgICVEZWZpbml0aW9uLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZGlzcGxheSBjaGFuZ2Ugc2NyZWVuIHdpdGggZXJyb3IgaWYgY2hlY2sgZmFpbGVkCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkUmVzdWx0KSAmJiAhJFJlc3VsdC0+e1N1Y2Nlc3N9ICkgewoKICAgICAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgICAgICBPcmlnaW5hbCAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICAgICBDbGFzc0xpc3QgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgICAgICBSb2xlTGlzdCAgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgICAgIENsYXNzU2VsZWN0ZWQgPT4gewogICAgICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb257Q2xhc3NJRH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkQ2xhc3NMaXN0LT57ICREZWZpbml0aW9ue0NsYXNzSUR9IH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgRWRpdCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgICAgIG15ICRFZGl0b3JSb3dzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpLT57RWRpdG9yUm93c30gfHwgMzA7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ2xhc3NEZWZpbml0aW9uQ2hhbmdlJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVEZWZpbml0aW9uLAogICAgICAgICAgICAgICAgICAgIEVycm9yICAgICAgICA9PiAkUmVzdWx0LT57RXJyb3J9LAogICAgICAgICAgICAgICAgICAgIEVycm9yQXJnMSAgICA9PiAkUmVzdWx0LT57RXJyb3JBcmdzfS0+WzBdLAogICAgICAgICAgICAgICAgICAgIEVycm9yQXJnMiAgICA9PiAkUmVzdWx0LT57RXJyb3JBcmdzfS0+WzFdLAogICAgICAgICAgICAgICAgICAgIEVycm9yQ2xhc3NlcyA9PiAnU2VydmVyRXJyb3IgRXJyb3InLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkRGVmaW5pdGlvbntDbGFzc0lEfSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkRGVmaW5pdGlvbntDbGFzc0lEfSB9LAogICAgICAgICAgICAgICAgICAgIFJvd3MgICAgICAgICA9PiAkRWRpdG9yUm93cywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7CiAgICAgICAgfQoKICAgICAgICBteSAkQ29udGludWVBZnRlclNhdmUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29udGludWVBZnRlclNhdmUnICk7CiAgICAgICAgaWYgKCRDb250aW51ZUFmdGVyU2F2ZSkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtTdWJhY3Rpb249Q2xhc3NEZWZpbml0aW9uQ2hhbmdlO0NsYXNzSUQ9JERlZmluaXRpb257Q2xhc3NJRH0iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSIgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHJvbGUgZGVmaW5pdGlvbiBzYXZlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnUm9sZURlZmluaXRpb25TYXZlJyApIHsKCiAgICAgICAgIyBnZXQgYW5kIGNoZWNrIHBhcmFtcwogICAgICAgIG15ICVEZWZpbml0aW9uOwogICAgICAgIGZvciBteSAkRm9ybVBhcmFtIChxdyhSb2xlSUQgRGVmaW5pdGlvbikpIHsKICAgICAgICAgICAgJERlZmluaXRpb257JEZvcm1QYXJhbX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkRm9ybVBhcmFtICkgfHwgJyc7CiAgICAgICAgfQogICAgICAgIGZvciBteSAkRm9ybVBhcmFtIChxdyhSb2xlSUQgRGVmaW5pdGlvbikpIHsKICAgICAgICAgICAgaWYgKCAhJERlZmluaXRpb257JEZvcm1QYXJhbX0gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRGb3JtUGFyYW0hIgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFZhbGlkYXRlIFlBTUwgY29kZSBieSBjb252ZXJ0aW5nIGl0IHRvIFBlcmwuCiAgICAgICAgbXkgJERlZmluaXRpb25SZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICREZWZpbml0aW9ue0RlZmluaXRpb259LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbiB1bmxlc3MgcmVmICREZWZpbml0aW9uUmVmIGVxICdIQVNIJzsKCiAgICAgICAgIyBhZGQgdG8gZGF0YWJhc2UKICAgICAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uQWRkKAogICAgICAgICAgICAlRGVmaW5pdGlvbiwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGRpc3BsYXkgY2hhbmdlIHNjcmVlbiB3aXRoIGVycm9yIGlmIGNoZWNrIGZhaWxlZAogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFJlc3VsdCkgJiYgJFJlc3VsdC0+e0Vycm9yfSApIHsKCiAgICAgICAgICAgICMgc2hvdyBzaWRlYmFyLCBhY3RpdmF0ZSB0aGUgJ092ZXJ2aWV3JyBibG9jawogICAgICAgICAgICAkU2VsZi0+X1Nob3dTaWRlYmFyKAogICAgICAgICAgICAgICAgT3JpZ2luYWwgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICAgICBDbGFzc0xpc3QgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgICAgIFJvbGVMaXN0ICAgICA9PiAkUm9sZUxpc3QsCiAgICAgICAgICAgICAgICBSb2xlU2VsZWN0ZWQgPT4gewogICAgICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb257Um9sZUlEfSwKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRSb2xlTGlzdC0+eyAkRGVmaW5pdGlvbntSb2xlSUR9IH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgRWRpdCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgICAgIG15ICRFZGl0b3JSb3dzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpLT57RWRpdG9yUm93c30gfHwgMzA7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUm9sZURlZmluaXRpb25DaGFuZ2UnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJURlZmluaXRpb24sCiAgICAgICAgICAgICAgICAgICAgRXJyb3IgICAgICAgID0+ICRSZXN1bHQtPntFcnJvcn0sCiAgICAgICAgICAgICAgICAgICAgRXJyb3JBcmcxICAgID0+ICRSZXN1bHQtPntFcnJvckFyZ3N9LT5bMF0sCiAgICAgICAgICAgICAgICAgICAgRXJyb3JBcmcyICAgID0+ICRSZXN1bHQtPntFcnJvckFyZ3N9LT5bMV0sCiAgICAgICAgICAgICAgICAgICAgRXJyb3JDbGFzc2VzID0+ICdTZXJ2ZXJFcnJvciBFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgUm9sZUlEICAgICAgID0+ICREZWZpbml0aW9ue1JvbGVJRH0sCiAgICAgICAgICAgICAgICAgICAgUm9sZSAgICAgICAgID0+ICRSb2xlTGlzdC0+eyAkRGVmaW5pdGlvbntSb2xlSUR9IH0sCiAgICAgICAgICAgICAgICAgICAgUm93cyAgICAgICAgID0+ICRFZGl0b3JSb3dzLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICAgICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgICAgICB9CgogICAgICAgIG15ICRDb250aW51ZUFmdGVyU2F2ZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb250aW51ZUFmdGVyU2F2ZScgKTsKICAgICAgICBpZiAoJENvbnRpbnVlQWZ0ZXJTYXZlKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgICAgIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259O1N1YmFjdGlvbj1Sb2xlRGVmaW5pdGlvbkNoYW5nZTtSb2xlSUQ9JERlZmluaXRpb257Um9sZUlEfSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgY2xhc3MgZXhwb3J0CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2xhc3NFeHBvcnQnICkgewoKICAgICAgICBteSBAQ2xhc3NJRExpc3QgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnRXhwb3J0SUQnICk7CgogICAgICAgICMgZXhwb3J0IHRoZSBjbGFzc2VzIHRvIGEgWUFNTCBzdHJpbmcKICAgICAgICBteSAkWUFNTENvbnRlbnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q2xhc3NFeHBvcnQoIEl0ZW1JRExpc3QgPT4gXEBDbGFzc0lETGlzdCApOwoKICAgICAgICBpZiAoICEkWUFNTENvbnRlbnQgKSB7CgogICAgICAgICAgICAjIHNob3cgdGhlIGVycm9yIHNjcmVlbgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICdDbGFzcyBleHBvcnQgZmFpbGVkLicsCiAgICAgICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sOyBjaGFyc2V0PScgLiAkTGF5b3V0T2JqZWN0LT57Q2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRZQU1MQ29udGVudCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAiRXhwb3J0Q2xhc3MueW1sIiwKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJEhUTUw7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjb25maWcgaXRlbSBjbGFzcyBvdmVydmlldyBpcyB0aGUgZGVmYXVsdAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKDEpIHsKCiAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgJFNlbGYtPl9TaG93U2lkZWJhcigKICAgICAgICAgICAgT3JpZ2luYWwgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICBDbGFzc0xpc3QgICAgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIFJvbGVMaXN0ICAgICAgICAgPT4gJFJvbGVMaXN0LAogICAgICAgICAgICBTaG93T3ZlcnZpZXdMaW5rID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0LCBmb3Igcm9sZXMgYW5kIGRlZmluaXRpb25zCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TGlzdCcsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRDbGFzc0lEICggc29ydCB7ICRDbGFzc0xpc3QtPnskYX0gY21wICRDbGFzc0xpc3QtPnskYn0gfSBrZXlzICRDbGFzc0xpc3QtPiUqICkgewoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld0RlZmluaXRpb25MaXN0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICA9PiAkQ2xhc3NMaXN0LT57JENsYXNzSUR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkUm9sZUlEICggc29ydCB7ICRSb2xlTGlzdC0+eyRhfSBjbXAgJFJvbGVMaXN0LT57JGJ9IH0ga2V5cyAkUm9sZUxpc3QtPiUqICkgewoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1JvbGVMaXN0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFJvbGVJRCA9PiAkUm9sZUlELAogICAgICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkUm9sZUxpc3QtPnskUm9sZUlEfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFBhcmFte09yaWdpbmFsfSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgfQp9CgpzdWIgX1Nob3dTaWRlYmFyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkQ2xhc3NEZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBnZW5lcmF0ZSBSb2xlT3B0aW9uU3RyZywgQ2xhc3NPcHRpb25TdHJnIGFuZCBDbGFzc09wdGlvbk11bHRTdHJnIHdoaWNoIGFyZSBuZWVkZWQgZm9yIHRoZSBzaWRlYm94CiAgICBteSAkUm9sZUlEICAgICAgICAgPSAkUGFyYW17Um9sZVNlbGVjdGVkfSA/ICRQYXJhbXtSb2xlU2VsZWN0ZWR9LT57SUR9IDogJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1JvbGVJRCcgKTsKICAgIG15ICRSb2xlT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkUGFyYW17Um9sZUxpc3R9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnUm9sZUlEJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFJvbGVJRCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwogICAgbXkgJENsYXNzSUQgICAgICAgICA9ICRQYXJhbXtDbGFzc1NlbGVjdGVkfSA/ICRQYXJhbXtDbGFzc1NlbGVjdGVkfS0+e0lEfSA6ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDbGFzc0lEJyApOwogICAgbXkgJENsYXNzT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkUGFyYW17Q2xhc3NMaXN0fSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NsYXNzSUQnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkQ2xhc3NJRCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgIG15IEBFeHBvcnRJRHMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnRXhwb3J0SUQnICk7CiAgICBteSAlQ2xhc3NMaXN0Rm9yTXVsdFNlbDsKICAgIGZvciBteSAkQ2xhc3NJRCAoIGtleXMgJXsgJFBhcmFte0NsYXNzTGlzdH0gfSApIHsKICAgICAgICBteSAkSGFzQ29udGVudCA9ICV7ICRDbGFzc0RlZmluaXRpb24tPkRlZmluaXRpb25HZXQoIENsYXNzSUQgPT4gJENsYXNzSUQgKSB9OwogICAgICAgIGlmICgkSGFzQ29udGVudCkgewogICAgICAgICAgICAkQ2xhc3NMaXN0Rm9yTXVsdFNlbHskQ2xhc3NJRH0gPSAkUGFyYW17Q2xhc3NMaXN0fS0+eyRDbGFzc0lEfTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENsYXNzT3B0aW9uTXVsdFN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJUNsYXNzTGlzdEZvck11bHRTZWwsCiAgICAgICAgICAgICRQYXJhbXtSb2xlTGlzdH0tPiUqLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0V4cG9ydElEJywKICAgICAgICBTZWxlY3RlZElEICA9PiBcQEV4cG9ydElEcywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUgVmFsaWRhdGVfUmVxdWlyZWQnLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICApOwoKICAgICMgdGhpcyB3aWxsIGJlIHBhc3NlZCB0byB0aGUgT3ZlcnZpZXcgYmxvY2sKICAgIG15ICVCbG9ja0RhdGEgPSAoCiAgICAgICAgUm9sZU9wdGlvblN0cmcgICAgICA9PiAkUm9sZU9wdGlvblN0cmcsCiAgICAgICAgQ2xhc3NPcHRpb25TdHJnICAgICA9PiAkQ2xhc3NPcHRpb25TdHJnLAogICAgICAgIENsYXNzT3B0aW9uTXVsdFN0cmcgPT4gJENsYXNzT3B0aW9uTXVsdFN0cmcsCiAgICAgICAgRXhhbXBsZUNsYXNzTGlzdCAgICA9PiAkUGFyYW17T3JpZ2luYWx9LT57RXhhbXBsZUNsYXNzTGlzdH0sCiAgICApOwoKICAgICMgdGhlcmUgbWlnaHQgYmUgYWRkaXRpb25hbCBkYXRhIGZvciB0aGUgT3ZlcnZpZXcgYmxvY2sKICAgIEtFWToKICAgIGZvciBteSAkS2V5IChxdyhDbGFzc1NlbGVjdGVkIENsYXNzVmVyc2lvblNlbGVjdGVkIFJvbGVTZWxlY3RlZCBSb2xlVmVyc2lvblNlbGVjdGVkIEVkaXQpKSB7CiAgICAgICAgbmV4dCBLRVkgdW5sZXNzIGRlZmluZWQgJFBhcmFteyRLZXl9OwoKICAgICAgICAkQmxvY2tEYXRheyRLZXl9ID0gJFBhcmFteyRLZXl9OwogICAgfQoKICAgICMgdGhlIE92ZXJ2aWV3IGJsb2NrIGlzIHRoZSBjb21wbGV0ZSBwYWdlCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlldycsCiAgICAgICAgRGF0YSA9PiBcJUJsb2NrRGF0YSwKICAgICk7CgogICAgaWYgKCAkUGFyYW17U2hvd092ZXJ2aWV3TGlua30gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0FjdGlvbk92ZXJ2aWV3JywKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AgentITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNBcnJheVJlZldpdGhEYXRhIElzSGFzaFJlZldpdGhEYXRhIElzU3RyaW5nV2l0aERhdGEpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7JVBhcmFtfSwgJFR5cGU7CgogICAgIyBzZXQgZGVidWcKICAgICRTZWxmLT57RGVidWd9ID0gMDsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgbXkgJFNvcnRCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0FnZSc7CgogICAgaWYgKCAkU29ydEJ5IGVxICdMYXN0Q2hhbmdlZCcgKSB7CiAgICAgICAgJFNvcnRCeSA9ICdDaGFuZ2VkJzsKICAgIH0KCiAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBvcmRlcmluZyB0byBiZSB1c2VkLgogICAgbXkgJERlZmF1bHRPcmRlckJ5ID0gJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ1VwJzsKCiAgICAjIFNldCB0aGUgc29ydCBvcmRlciBmcm9tIHRoZSByZXF1ZXN0IHBhcmFtZXRlcnMsIG9yIHRha2UgdGhlIGRlZmF1bHQuCiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgfHwgJERlZmF1bHRPcmRlckJ5OwoKICAgICMgZ2V0IHNlc3Npb24gb2JqZWN0CiAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICMgc3RvcmUgbGFzdCBxdWV1ZSBzY3JlZW4KICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICk7CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbgogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgIyBnZXQgZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgIG15ICRGaWx0ZXIgICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJ0FsbCc7CiAgICBteSAkQ2F0ZWdvcnlGaWx0ZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2F0ZWdvcnknICk7CgogICAgIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdAogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2F0ZWdvcnlMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3M6OkNhdGVnb3J5JywKICAgICk7CiAgICBteSAlVHJhbnNsYXRlZENhdGVnb3J5TGlzdCA9IG1hcCB7ICggJF8gPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkQ2F0ZWdvcnlMaXN0LT57JF99ICkgKSB9IGtleXMgJENhdGVnb3J5TGlzdC0+JSo7CiAgICBteSAlUmV2ZXJzZUNhdGVnb3J5TGlzdCAgICA9IHJldmVyc2UgJVRyYW5zbGF0ZWRDYXRlZ29yeUxpc3Q7CiAgICBteSAkRGVmYXVsdENhdGVnb3J5ICAgICAgICA9ICRDb25maWctPntEZWZhdWx0Q2F0ZWdvcnl9OwogICAgbXkgJERlZmF1bHRDYXRlZ29yeUlEOwogICAgaWYgKCAkRGVmYXVsdENhdGVnb3J5ICYmICRSZXZlcnNlQ2F0ZWdvcnlMaXN0eyAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJERlZmF1bHRDYXRlZ29yeSkgfSApIHsKICAgICAgICAkRGVmYXVsdENhdGVnb3J5SUQgPSAkUmV2ZXJzZUNhdGVnb3J5TGlzdHsgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkQ29uZmlnLT57RGVmYXVsdENhdGVnb3J5fSApIH07CiAgICAgICAgJENhdGVnb3J5RmlsdGVyIHx8PSAkRGVmYXVsdENhdGVnb3J5SUQ7CiAgICB9CgogICAgIyBnZXQgZmlsdGVycyBzdG9yZWQgaW4gdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRVc2VyT2JqZWN0LT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRTdG9yZWRGaWx0ZXJzS2V5ID0gJ1VzZXJTdG9yZWRGaWx0ZXJDb2x1bW5zLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkRmlsdGVyOwogICAgbXkgJEpTT05PYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpOwogICAgbXkgJFN0b3JlZEZpbHRlcnMgICAgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyRTdG9yZWRGaWx0ZXJzS2V5fSwKICAgICk7CgogICAgIyBkZWxldGUgc3RvcmVkIGZpbHRlcnMgaWYgbmVlZGVkCiAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdEZWxldGVGaWx0ZXJzJyApICkgewogICAgICAgICRTdG9yZWRGaWx0ZXJzID0ge307CiAgICB9CgogICAgIyBnZXQgdGhlIGNvbHVtbiBmaWx0ZXJzIGZyb20gdGhlIHdlYiByZXF1ZXN0IG9yIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVDb2x1bW5GaWx0ZXI7CiAgICBteSAlR2V0Q29sdW1uRmlsdGVyOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoCiAgICAgICAgcXcoRGVwbFN0YXRlIEN1ckRlcGxTdGF0ZSBJbmNpU3RhdGUgQ3VySW5jaVN0YXRlIENsYXNzKQogICAgICAgICkKICAgIHsKICAgICAgICAjIGdldCBjb2x1bW4gZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lICkKICAgICAgICAgICAgfHwgJyc7CgogICAgICAgICMgaWYgZmlsdGVyIGlzIG5vdCBwcmVzZW50IGluIHRoZSB3ZWIgcmVxdWVzdCwgdHJ5IHdpdGggdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgICAgICBpZiAoICRGaWx0ZXJWYWx1ZSBlcSAnJyApIHsKICAgICAgICAgICAgJEZpbHRlclZhbHVlID0gJFN0b3JlZEZpbHRlcnMtPnsgJENvbHVtbk5hbWUgLiAnSURzJyB9LT5bMF0gfHwgJyc7CiAgICAgICAgfQogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkRmlsdGVyVmFsdWUgZXEgJyc7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICRGaWx0ZXJWYWx1ZSBlcSAnRGVsZXRlRmlsdGVyJzsKCiAgICAgICAgcHVzaCBAeyAkQ29sdW1uRmlsdGVyeyAkQ29sdW1uTmFtZSAuICdJRHMnIH0gfSwgJEZpbHRlclZhbHVlOwogICAgICAgICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9ID0gJEZpbHRlclZhbHVlOwogICAgfQoKICAgICMgZ2V0IGFsbCBkeW5hbWljIGZpZWxkcwogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICk7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICMgZ2V0IGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0CiAgICAgICAgbXkgJEZpbHRlclZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgUGFyYW0gPT4gJ0NvbHVtbkZpbHRlckR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgKTsKCiAgICAgICAgIyBpZiBubyBmaWx0ZXIgZnJvbSB3ZWIgcmVxdWVzdCwgdHJ5IGZyb20gdXNlciBwcmVmZXJlbmNlcwogICAgICAgIGlmICggIWRlZmluZWQgJEZpbHRlclZhbHVlIHx8ICRGaWx0ZXJWYWx1ZSBlcSAnJyApIHsKICAgICAgICAgICAgJEZpbHRlclZhbHVlID0gJFN0b3JlZEZpbHRlcnMtPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0tPntFcXVhbHN9OwogICAgICAgIH0KCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIGRlZmluZWQgJEZpbHRlclZhbHVlOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRGaWx0ZXJWYWx1ZSBlcSAnJzsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRmlsdGVyVmFsdWUgZXEgJ0RlbGV0ZUZpbHRlcic7CgogICAgICAgICRDb2x1bW5GaWx0ZXJ7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gewogICAgICAgICAgICBFcXVhbHMgPT4gJEZpbHRlclZhbHVlLAogICAgICAgIH07CiAgICAgICAgJEdldENvbHVtbkZpbHRlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRmlsdGVyVmFsdWU7CiAgICB9CgogICAgIyBidWlsZCBOYXZpZ2F0aW9uQmFyICYgdG8gZ2V0IHRoZSBvdXRwdXQgZmFzdGVyIQogICAgbXkgJFJlZnJlc2ggPSAnJzsKICAgIGlmICggJFNlbGYtPntVc2VyUmVmcmVzaFRpbWV9ICkgewogICAgICAgICRSZWZyZXNoID0gNjAgKiAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX07CiAgICB9CgogICAgbXkgJE91dHB1dDsKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IG5lICdBSkFYRmlsdGVyVXBkYXRlJyApIHsKICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBSZWZyZXNoID0+ICRSZWZyZXNoLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICB9CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CiAgICBteSAlVHJhbnNsYXRlZENsYXNzTGlzdCA9IG1hcCB7ICggJF8gPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkQ2xhc3NMaXN0LT57JF99ICkgKSB9IGtleXMgJENsYXNzTGlzdC0+JSo7CgogICAgIyBnZXQgcG9zc2libGUgZGVwbG95bWVudCBzdGF0ZSBsaXN0IGZvciBjb25maWcgaXRlbXMgdG8gYmUgc2hvd24KICAgIG15ICRTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzICAgICAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSA9PiBbICdwcmVwcm9kdWN0aXZlJywgJ3Byb2R1Y3RpdmUnIF0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzZXQgdGhlIGRlcGxveW1lbnQgc3RhdGUgSURzIHBhcmFtZXRlciBmb3IgdGhlIHNlYXJjaAogICAgbXkgJERlcGxTdGF0ZUlEczsKICAgIGZvciBteSAkRGVwbFN0YXRlS2V5ICggc29ydCBrZXlzICV7JFN0YXRlTGlzdH0gKSB7CiAgICAgICAgcHVzaCBAeyREZXBsU3RhdGVJRHN9LCAkRGVwbFN0YXRlS2V5OwogICAgfQoKICAgICMgdmlld2FibGUgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15IEBWaWV3YWJsZURlcGxTdGF0ZUlEcyA9IGtleXMgJXsKICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApCiAgICB9OwoKICAgICMgZ2V0IHBlcm1pc3Npb25zCiAgICBteSAkUGVybWlzc2lvbiA9ICdydyc7CgogICAgIyBzb3J0IG9uIGRlZmF1bHQgYnkgdXNpbmcgYm90aCAoUHJpb3JpdHksIEFnZSkgZWxzZSB1c2Ugb25seSBvbmUgc29ydCBhcmd1bWVudAogICAgbXkgJVNvcnQ7CgogICAgIyBnZXQgaWYgc2VhcmNoIHJlc3VsdCBzaG91bGQgYmUgcHJlLXNvcnRlZCBieSBwcmlvcml0eQogICAgbXkgJFByZVNvcnRCeVByaW9yaXR5ID0gJENvbmZpZy0+eydQcmVTb3J0OjpCeVByaW9yaXR5J307CiAgICBpZiAoICEkUHJlU29ydEJ5UHJpb3JpdHkgKSB7CiAgICAgICAgJVNvcnQgPSAoCiAgICAgICAgICAgIFNvcnRCeSAgPT4gJFNvcnRCeSwKICAgICAgICAgICAgT3JkZXJCeSA9PiAkT3JkZXJCeSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJVNvcnQgPSAoCiAgICAgICAgICAgIFNvcnRCeSAgPT4gWyAnUHJpb3JpdHknLCAkU29ydEJ5IF0sCiAgICAgICAgICAgIE9yZGVyQnkgPT4gWyAnRG93bicsICAgICAkT3JkZXJCeSBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBteSBjb25maWcgaXRlbSBvYmplY3QKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyB0byBzdG9yZSB0aGUgTmF2QmFyIGZpbHRlcnMKICAgIG15ICVGaWx0ZXJzOwogICAgbXkgJUNhdGVnb3J5MkNsYXNzSUQ7CgogICAgQ0xBU1NJRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQgeyAkVHJhbnNsYXRlZENsYXNzTGlzdHskYX0gY21wICRUcmFuc2xhdGVkQ2xhc3NMaXN0eyRifSB9IGtleXMgJVRyYW5zbGF0ZWRDbGFzc0xpc3QgKSB7CgogICAgICAgICMgc2hvdyBtZW51IGxpbmsgb25seSBpZiB1c2VyIGhhcyBhY2Nlc3MgcmlnaHRzCiAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBUeXBlICAgID0+ICRDb25maWctPntQZXJtaXNzaW9ufSwKICAgICAgICApOwoKICAgICAgICBuZXh0IENMQVNTSUQgaWYgISRIYXNBY2Nlc3M7CgogICAgICAgICMgZmV0Y2ggY2xhc3MgcHJlZmVyZW5jZXMgdG8gcmV0cmlldmUgY2F0ZWdvcmllcyBmb3IgY2xhc3MKICAgICAgICBteSAlQ2xhc3NQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgIG5leHQgQ0xBU1NJRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkQ2xhc3NQcmVmZXJlbmNlc3tDYXRlZ29yaWVzfSApOwoKICAgICAgICBmb3IgbXkgJENhdGVnb3J5ICggJENsYXNzUHJlZmVyZW5jZXN7Q2F0ZWdvcmllc30tPkAqICkgewogICAgICAgICAgICBteSAkQ2F0ZWdvcnlJRCA9ICRSZXZlcnNlQ2F0ZWdvcnlMaXN0eyAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENhdGVnb3J5KSB9OwogICAgICAgICAgICBwdXNoIEB7ICRDYXRlZ29yeTJDbGFzc0lEeyRDYXRlZ29yeUlEfSB9LCAkQ2xhc3NJRDsKICAgICAgICB9CiAgICB9CgogICAgIyBvcmRlciB0aGUgY2F0ZWdvcnkgZmlsdGVycyBhbmQgLSBpZiBub3QgeWV0IHNldCAtIHNlbGVjdCB0aGUgY2F0ZWdwcnkgc2hvd24KICAgIG15ICVDYXRlZ29yeUZpbHRlcnM7CiAgICB7CiAgICAgICAgbXkgQFNvcnRlZENhdGVnb3JpZXMgPSBzb3J0IHsgJFRyYW5zbGF0ZWRDYXRlZ29yeUxpc3R7JGF9IGNtcCAkVHJhbnNsYXRlZENhdGVnb3J5TGlzdHskYn0gfSBrZXlzICVDYXRlZ29yeTJDbGFzc0lEOwoKICAgICAgICBteSAkUHJpbyA9IDI7CiAgICAgICAgJUNhdGVnb3J5RmlsdGVycyA9IG1hcCB7CiAgICAgICAgICAgICRfID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFRyYW5zbGF0ZWRDYXRlZ29yeUxpc3R7JF99LAogICAgICAgICAgICAgICAgUHJpbyA9PiAkUHJpbysrLAogICAgICAgICAgICB9CiAgICAgICAgfSBAU29ydGVkQ2F0ZWdvcmllczsKCiAgICAgICAgaWYgKCAkRGVmYXVsdENhdGVnb3J5SUQgJiYgJENhdGVnb3J5RmlsdGVyc3skRGVmYXVsdENhdGVnb3J5SUR9ICkgewogICAgICAgICAgICAkQ2F0ZWdvcnlGaWx0ZXJzeyREZWZhdWx0Q2F0ZWdvcnlJRH17UHJpb30gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aGUgY2xhc3MgZmlsdGVycyBmb3IgdGhlIHNlbGVjdGVkIGNhdGVnb3J5CiAgICBteSAkQ291bnRUb3RhbCA9IDA7CiAgICBteSBAQWxsQ3VycmVudENsYXNzZXM7CiAgICBpZiAoJENhdGVnb3J5RmlsdGVyKSB7CgogICAgICAgIG15ICRQcmlvID0gMjsKICAgICAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJFRyYW5zbGF0ZWRDbGFzc0xpc3R7JGF9IGNtcCAkVHJhbnNsYXRlZENsYXNzTGlzdHskYn0gfSAkQ2F0ZWdvcnkyQ2xhc3NJRHskQ2F0ZWdvcnlGaWx0ZXJ9LT5AKiApIHsKICAgICAgICAgICAgbXkgJENvdW50Q2xhc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyRDbGFzc0lEXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiAkRGVwbFN0YXRlSURzLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgICAgICAgICAgUGVybWlzc2lvbiAgID0+ICRQZXJtaXNzaW9uLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIFJlc3VsdCAgICAgICA9PiAnQ09VTlQnLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQ291bnRUb3RhbCArPSAkQ291bnRDbGFzczsKCiAgICAgICAgICAgIHB1c2ggQEFsbEN1cnJlbnRDbGFzc2VzLCAkQ2xhc3NJRDsKCiAgICAgICAgICAgICMgYWRkIGZpbHRlciB3aXRoIHBhcmFtcyBmb3IgdGhlIHNlYXJjaCBtZXRob2QKICAgICAgICAgICAgJEZpbHRlcnN7JENsYXNzSUR9ID0gewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICRUcmFuc2xhdGVkQ2xhc3NMaXN0eyRDbGFzc0lEfSwKICAgICAgICAgICAgICAgIFByaW8gICA9PiAkUHJpbysrLAogICAgICAgICAgICAgICAgQ291bnQgID0+ICRDb3VudENsYXNzLAogICAgICAgICAgICAgICAgU2VhcmNoID0+IHsKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyRDbGFzc0lEXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gJERlcGxTdGF0ZUlEcywKICAgICAgICAgICAgICAgICAgICAlU29ydCwKICAgICAgICAgICAgICAgICAgICBMaW1pdCAgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgICAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gJFBlcm1pc3Npb24sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGFkZCAiYWxsIiBmaWx0ZXIgaWYgdGhlcmUgaXMgbm90IG9ubHkgb25lIGN1cnJlbnQgZmlsdGVyLCBzZXQgdGhlIGZpbHRlciBpZiBub3QgcHJvdmlkZWQKICAgIGlmICggc2NhbGFyIGtleXMgJUZpbHRlcnMgPT0gMSApIHsKICAgICAgICAoJEZpbHRlcikgPSBrZXlzICVGaWx0ZXJzOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEZpbHRlcnN7QWxsfSA9IHsKICAgICAgICAgICAgTmFtZSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQWxsJyksCiAgICAgICAgICAgIFByaW8gICA9PiAxLAogICAgICAgICAgICBDb3VudCAgPT4gJENvdW50VG90YWwsCiAgICAgICAgICAgIFNlYXJjaCA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gXEBBbGxDdXJyZW50Q2xhc3NlcywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiAkRGVwbFN0YXRlSURzLAogICAgICAgICAgICAgICAgJVNvcnQsCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgICAgICAgICAgUGVybWlzc2lvbiA9PiAkUGVybWlzc2lvbiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICB9LAogICAgICAgIH07CgogICAgICAgIGlmICggISRGaWx0ZXIgfHwgISRGaWx0ZXJzeyRGaWx0ZXJ9ICkgewogICAgICAgICAgICAkRmlsdGVyID0gJ0FsbCc7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWaWV3ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZpZXcnICkgfHwgJyc7CgogICAgIyBsb29rdXAgbGF0ZXN0IHVzZWQgdmlldyBtb2RlCiAgICBpZiAoICEkVmlldyAmJiAkU2VsZi0+eyAnVXNlckNvbmZpZ0l0ZW1PdmVydmlldycgLiAkU2VsZi0+e0FjdGlvbn0gfSApIHsKICAgICAgICAkVmlldyA9ICRTZWxmLT57ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgb3RoZXJ3aXNlIHVzZSBQcmV2aWV3IGFzIGRlZmF1bHQgYXMgaW4gTGF5b3V0Q29uZmlnSXRlbQogICAgJFZpZXcgfHw9ICdTbWFsbCc7CgogICAgIyBDaGVjayBpZiBzZWxlY3RlZCB2aWV3IGlzIGF2YWlsYWJsZS4KICAgIG15ICRCYWNrZW5kcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpPdmVydmlldycpOwogICAgaWYgKCAhJEJhY2tlbmRzLT57JFZpZXd9ICkgewoKICAgICAgICAjIFRyeSB0byBmaW5kIGZhbGxiYWNrLCB0YWtlIGZpcnN0IGNvbmZpZ3VyZWQgdmlldyBtb2RlLgogICAgICAgIEtFWToKICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CiAgICAgICAgICAgICRWaWV3ID0gJEtleTsKICAgICAgICAgICAgbGFzdCBLRVk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHBlcnNvbmFsIHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSA9ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CiAgICBteSAkUGFnZVNob3duICAgICAgICAgICAgICAgPSAkU2VsZi0+e1Nlc3Npb259eyRQYWdlU2hvd25QcmVmZXJlbmNlc0tleX0gfHwgMTA7CgogICAgIyBkbyBzaG93biBjb25maWcgaXRlbSBsb29rdXAKICAgIG15ICRMaW1pdCA9IDFfMDAwOwoKICAgIG15ICRFbGVtZW50Q2hhbmdlZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdFbGVtZW50Q2hhbmdlZCcgKSB8fCAnJzsKICAgIG15ICRIZWFkZXJDb2x1bW4gICA9ICRFbGVtZW50Q2hhbmdlZDsKICAgICRIZWFkZXJDb2x1bW4gPX4gc3tcQSBDb2x1bW5GaWx0ZXIgfXt9bXN4ZzsKCiAgICAjIGdldCBkYXRhICh2aWV3YWJsZSBjb25maWcgaXRlbXMuLi4pCiAgICAjIHNlYXJjaCBhbGwgY29uZmlnIGl0ZW1zCiAgICBteSBAVmlld2FibGVDb25maWdJdGVtczsKICAgIG15IEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXM7CgogICAgaWYgKCBAVmlld2FibGVEZXBsU3RhdGVJRHMgJiYgQEFsbEN1cnJlbnRDbGFzc2VzICkgewoKICAgICAgICAjIGdldCBjb25maWcgaXRlbSB2YWx1ZXMKICAgICAgICBpZiAoCiAgICAgICAgICAgICFJc1N0cmluZ1dpdGhEYXRhKCRIZWFkZXJDb2x1bW4pCiAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgIElzU3RyaW5nV2l0aERhdGEoJEhlYWRlckNvbHVtbikKICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ09ubHlWYWx1ZXNPbkNvbmZpZ0l0ZW0nKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRGaWx0ZXJ9LT57U2VhcmNofSB9LAogICAgICAgICAgICAgICAgJUNvbHVtbkZpbHRlciwKICAgICAgICAgICAgICAgIExpbWl0ICA9PiAkTGltaXQsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRTdGFydCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxOwoKICAgICAgICAgICAgQFZpZXdhYmxlQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRGaWx0ZXJ9LT57U2VhcmNofSB9LAogICAgICAgICAgICAgICAgJUNvbHVtbkZpbHRlciwKICAgICAgICAgICAgICAgIExpbWl0ICA9PiAkU3RhcnQgKyAkUGFnZVNob3duIC0gMSwKICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICB9CgogICAgIyBUT0RPIE1heWJlIHRoZXJlIGlzIGEgbW9yZSBlbGVnYW50IHdheSB0byBkbyB0aGlzPwogICAgJFNlbGYtPntGaWx0ZXJ9ICAgICAgICAgID0gJEZpbHRlcjsKICAgICRTZWxmLT57RmlsdGVyc30gICAgICAgICA9IFwlRmlsdGVyczsKICAgICRTZWxmLT57Q2F0ZWdvcnlGaWx0ZXJzfSA9IFwlQ2F0ZWdvcnlGaWx0ZXJzOwogICAgJFNlbGYtPntDYXRlZ29yeUZpbHRlcn0gID0gJENhdGVnb3J5RmlsdGVyOwoKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYRmlsdGVyVXBkYXRlJyApIHsKCiAgICAgICAgbXkgJEZpbHRlckNvbnRlbnQgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgICAgICBGaWx0ZXJDb250ZW50T25seSAgICAgPT4gMSwKICAgICAgICAgICAgSGVhZGVyQ29sdW1uICAgICAgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgIEVsZW1lbnRDaGFuZ2VkICAgICAgICA9PiAkRWxlbWVudENoYW5nZWQsCiAgICAgICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiBcQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICAgICAgQWN0aW9uICAgICAgICAgICAgICAgID0+ICdBZ2VudElUU01Db25maWdJdGVtJywKICAgICAgICAgICAgRW52ICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLAogICAgICAgICAgICBWaWV3ICAgICAgICAgICAgICAgICAgPT4gJFZpZXcsCiAgICAgICAgICAgIEVuYWJsZUNvbHVtbkZpbHRlcnMgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRGaWx0ZXJDb250ZW50ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDYW5cJ3QgZ2V0IGZpbHRlciBjb250ZW50IGRhdGEgb2YgJXMhJywgJEhlYWRlckNvbHVtbiApLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpbHRlckNvbnRlbnQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBzdG9yZSBjb2x1bW4gZmlsdGVycwogICAgICAgIG15ICRTdG9yZWRGaWx0ZXJzID0gXCVDb2x1bW5GaWx0ZXI7CgogICAgICAgIG15ICRTdG9yZWRGaWx0ZXJzS2V5ID0gJ1VzZXJTdG9yZWRGaWx0ZXJDb2x1bW5zLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn07CiAgICAgICAgJFVzZXJPYmplY3QtPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBLZXkgICAgPT4gJFN0b3JlZEZpbHRlcnNLZXksCiAgICAgICAgICAgIFZhbHVlICA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBEYXRhID0+ICRTdG9yZWRGaWx0ZXJzICksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlTmF2QmFyRmlsdGVyID0gbWFwIHsKICAgICAgICAkQ2F0ZWdvcnlGaWx0ZXJzeyRffXtQcmlvfSA9PiB7CiAgICAgICAgICAgIENhdGVnb3J5RmlsdGVyID0+ICRfLAogICAgICAgICAgICAkQ2F0ZWdvcnlGaWx0ZXJzeyRffS0+JSosCiAgICAgICAgfQogICAgfSBrZXlzICVDYXRlZ29yeUZpbHRlcnM7CgogICAgbXkgJUNsYXNzRmlsdGVyID0gbWFwIHsKICAgICAgICAkRmlsdGVyc3skX317UHJpb30gPT4gewogICAgICAgICAgICBGaWx0ZXIgPT4gJF8sCiAgICAgICAgICAgICRGaWx0ZXJzeyRffS0+JSosCiAgICAgICAgfQogICAgfSBrZXlzICVGaWx0ZXJzOwoKICAgIG15ICRDb2x1bW5GaWx0ZXJMaW5rID0gJyc7CiAgICBDT0xVTU5OQU1FOgogICAgZm9yIG15ICRDb2x1bW5OYW1lICggc29ydCBrZXlzICVHZXRDb2x1bW5GaWx0ZXIgKSB7CgogICAgICAgIG5leHQgQ09MVU1OTkFNRSB1bmxlc3MgJENvbHVtbk5hbWU7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIHVubGVzcyBkZWZpbmVkICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9OwogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSBlcSAnJzsKCiAgICAgICAgJENvbHVtbkZpbHRlckxpbmsKICAgICAgICAgICAgLj0gJzsnIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lICkKICAgICAgICAgICAgLiAnPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSApOwogICAgfQoKICAgIG15ICRDYXRlZ29yeUZpbHRlclVSSSA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5DYXRlZ29yeUZpbHRlciB8IHVyaSAlXScsCiAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICBDYXRlZ29yeUZpbHRlciA9PiAkQ2F0ZWdvcnlGaWx0ZXIsCiAgICAgICAgfSwKICAgICk7CiAgICBteSAkTGlua1BhZ2UgPSAnRmlsdGVyPScKICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgLiAnO0NhdGVnb3J5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRDYXRlZ29yeUZpbHRlclVSSSApCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNvcnRCeSApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJE9yZGVyQnkgKQogICAgICAgIC4gJENvbHVtbkZpbHRlckxpbmsKICAgICAgICAuICc7JzsKCiAgICBteSAkTGlua1NvcnQgPSAnVmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnO0NhdGVnb3J5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRDYXRlZ29yeUZpbHRlclVSSSApCiAgICAgICAgLiAnO0ZpbHRlcj0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkRmlsdGVyICkKICAgICAgICAuICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExpbmtGaWx0ZXIgPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICkKICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExhc3RDb2x1bW5GaWx0ZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTGFzdENvbHVtbkZpbHRlcicgKSB8fCAnJzsKCiAgICBpZiAoICEkTGFzdENvbHVtbkZpbHRlciAmJiAkQ29sdW1uRmlsdGVyTGluayApIHsKCiAgICAgICAgIyBpcyBwbGFubmVkIHRvIGhhdmUgYSBsaW5rIHRvIGdvIGJhY2sgaGVyZQogICAgICAgICRMYXN0Q29sdW1uRmlsdGVyID0gMTsKICAgIH0KCiAgICAjIHNob3cgY29uZmlnIGl0ZW1zCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgRmlsdGVyICAgICAgICAgICAgICAgID0+ICRGaWx0ZXIsCiAgICAgICAgQ2F0ZWdvcnlGaWx0ZXIgICAgICAgID0+ICRDYXRlZ29yeUZpbHRlciwKICAgICAgICBGaWx0ZXJzICAgICAgICAgICAgICAgPT4gXCVDbGFzc0ZpbHRlciwKICAgICAgICBDYXRlZ29yeUZpbHRlcnMgICAgICAgPT4gXCVOYXZCYXJGaWx0ZXIsCiAgICAgICAgQ29uZmlnSXRlbUlEcyAgICAgICAgID0+IFxAVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gXEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgR2V0Q29sdW1uRmlsdGVyICAgICAgID0+IFwlR2V0Q29sdW1uRmlsdGVyLAogICAgICAgIExhc3RDb2x1bW5GaWx0ZXIgICAgICA9PiAkTGFzdENvbHVtbkZpbHRlciwKICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFRvdGFsICAgICAgICAgICAgICAgICA9PiBzY2FsYXIgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICBSZXF1ZXN0ZWRVUkwgICAgICAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgICAgIFZpZXcgICAgICAgICAgICAgICAgICA9PiAkVmlldywKICAgICAgICBCdWxrICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICBUaXRsZU5hbWUgICAgICAgICAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdPdmVydmlldzogSVRTTSBDb25maWdJdGVtJyksCiAgICAgICAgVGl0bGVWYWx1ZSAgICAgICAgICAgID0+ICRTZWxmLT57RmlsdGVyc317JEZpbHRlcn17TmFtZX0sCiAgICAgICAgRW52ICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLAogICAgICAgIExpbmtQYWdlICAgICAgICAgICAgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgTGlua1NvcnQgICAgICAgICAgICAgID0+ICRMaW5rU29ydCwKICAgICAgICBMaW5rRmlsdGVyICAgICAgICAgICAgPT4gJExpbmtGaWx0ZXIsCiAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgICA9PiAkU29ydEJ5LAogICAgICAgIEVuYWJsZUNvbHVtbkZpbHRlcnMgICA9PiAxLAogICAgICAgIENvbHVtbkZpbHRlckZvcm0gICAgICA9PiB7CiAgICAgICAgICAgIEZpbHRlciAgID0+ICRGaWx0ZXIgICAgICAgICB8fCAnJywKICAgICAgICAgICAgQ2F0ZWdvcnkgPT4gJENhdGVnb3J5RmlsdGVyIHx8ICcnLAogICAgICAgIH0sCgogICAgICAgICMgZG8gbm90IHByaW50IHRoZSByZXN1bHQgZWFybGllciwgYnV0IHJldHVybiBjb21wbGV0ZSBjb250ZW50CiAgICAgICAgT3V0cHV0ID0+IDEsCiAgICApOwoKICAgICMgZ2V0IHBhZ2UgZm9vdGVyCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpIGlmICRTZWxmLT57U3ViYWN0aW9ufSBuZSAnQUpBWEZpbHRlclVwZGF0ZSc7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemAdd.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbUFkZDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7JVBhcmFtfSwgJFR5cGU7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzCiAgICBDTEFTU19JRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQga2V5cyAleyRDbGFzc0xpc3R9ICkgewogICAgICAgIG15ICRIYXNBY2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+UGVybWlzc2lvbigKICAgICAgICAgICAgVHlwZSAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IiktPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBuZXh0IENMQVNTX0lEIGlmICRIYXNBY2Nlc3M7CgogICAgICAgICMgcmVtb3ZlIGZyb20gY2xhc3MgbGlzdCB3aGVuIGFjY2VzcyBpcyBkZW5pZWQKICAgICAgICBkZWxldGUgJENsYXNzTGlzdC0+eyRDbGFzc0lEfTsKICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgc2hvdyB0aGUgbGlzdCBvZiBDSSBjbGFzc2VzIHNvcnRlZCBieSBuYW1lCiAgICBmb3IgbXkgJEl0ZW1JRCAoCiAgICAgICAgc29ydCB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJHskQ2xhc3NMaXN0fXskYX0gKSBjbXAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkeyRDbGFzc0xpc3R9eyRifSApCiAgICAgICAgfSBrZXlzICV7JENsYXNzTGlzdH0KICAgICAgICApCiAgICB7CgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3IGl0ZW0gbGlzdAogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld0l0ZW1MaXN0JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRJdGVtSUQsCiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICRDbGFzc0xpc3QtPnskSXRlbUlEfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0FkZCcpLAogICAgICAgICksCiAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbUFkZCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKSwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemAttachment.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB2NS4yNDsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHslUGFyYW19LCAkVHlwZTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkTG9nT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgUGVybWlzc2lvbiBjaGVjay4KICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgSURzCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKICAgIG15ICRWZXJzaW9uSUQgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmVyc2lvbklEJyApOwoKICAgICMgY2hlY2sgcGFyYW0KICAgIGlmICggISRDb25maWdJdGVtSUQgfHwgISRWZXJzaW9uSUQgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ29uZmlnSXRlbUlEIGFuZCBWZXJzaW9uSUQgYXJlIG5lZWRlZCEnLAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBmZXRjaCBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgKTsKCiAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAhPSAkQ29uZmlnSXRlbUlEICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ1ZlcnNpb25JRCBkb2VzIG5vdCBiZWxvbmcgdG8gQ29uZmlnSXRlbUlEIScsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICk7CiAgICBpZiAoICEkSGFzQWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgIH0KCiAgICBteSAkSFRNTFV0aWxzT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEhUTUxWaWV3IFN1Yi1hY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnSFRNTFZpZXcnICkgewoKICAgICAgICAjIEdldCB0aGUgRmllbGQgY29udGVudC4KICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJENvbmZpZ0l0ZW0tPntEZXNjcmlwdGlvbn07CgogICAgICAgICMgIyBCdWlsZCBiYXNlIFVSTCBmb3IgaW4tbGluZSBpbWFnZXMuCiAgICAgICAgIyBteSAkU2Vzc2lvbklEID0gJyc7CiAgICAgICAgIyBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICMgICAgICRTZXNzaW9uSUQgPSAnOycgLiAkU2VsZi0+e1Nlc3Npb25OYW1lfSAuICc9JyAuICRTZWxmLT57U2Vzc2lvbklEfTsKICAgICAgICAjICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgIyAgICAgICAgIChBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtDb25maWdJdGVtSUQ9XGQrO0ZpbGVuYW1lPVx3KykKICAgICAgICAjICAgICB9eyQxJFNlc3Npb25JRH1nbXN4OwogICAgICAgICMgfQoKICAgICAgICAjIGZldGNoIGNvbmZpZyBpdGVtIGF0dGFjaG1lbnQgbGlzdCBmb3IgaGFuZGxpbmcgaW5saW5lIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICApOwoKICAgICAgICAjIGZldGNoIGF0dGFjaG1lbnQgZGF0YSBhbmQgc3RvcmUgaW4gaGFzaCBmb3IgUmljaFRleHREb2N1bWVudFNlcnZlCiAgICAgICAgbXkgJUF0dGFjaG1lbnRzOwogICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBBdHRhY2htZW50TGlzdCkgewogICAgICAgICAgICAkQXR0YWNobWVudHN7JEZpbGVuYW1lfSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQXR0YWNobWVudHN7JEZpbGVuYW1lfXtDb250ZW50SUR9ID0gJEF0dGFjaG1lbnRzeyRGaWxlbmFtZX17UHJlZmVyZW5jZXN9e0NvbnRlbnRJRH07CiAgICAgICAgfQoKICAgICAgICAjIG5lZWRlZCB0byBwcm92aWRlIG5lY2Vzc2FyeSBwYXJhbXMgZm9yIFJpY2hUZXh0RG9jdW1lbnRTZXJ2ZQogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sOyBjaGFyc2V0PSJ1dGYtOCInLAogICAgICAgICAgICBEaXNwb3NpdGlvbiA9PiAnaW5saW5lJywKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIGJhc2UgdXJsCiAgICAgICAgbXkgJFVSTCA9ICdBY3Rpb249JyAuICggJExheW91dE9iamVjdC0+e1VzZXJUeXBlfSBlcSAnVXNlcicgPyAnQWdlbnQnIDogJ0N1c3RvbWVyJyApIC4gJ0lUU01Db25maWdJdGVtQXR0YWNobWVudDtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50JwogICAgICAgICAgICAuICI7Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfTtWZXJzaW9uSUQ9JENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9O0ZpbGVuYW1lPSI7CgogICAgICAgICMgcmVmb3JtYXQgcmljaCB0ZXh0IGRvY3VtZW50IHRvIGhhdmUgY29ycmVjdCBjaGFyc2V0IGFuZCBsaW5rcyB0bwogICAgICAgICMgaW5saW5lIGRvY3VtZW50cwogICAgICAgICVEYXRhID0gJExheW91dE9iamVjdC0+UmljaFRleHREb2N1bWVudFNlcnZlKAogICAgICAgICAgICBEYXRhICAgICAgICAgICAgICAgPT4gXCVEYXRhLAogICAgICAgICAgICBVUkwgICAgICAgICAgICAgICAgPT4gJFVSTCwKICAgICAgICAgICAgQXR0YWNobWVudHMgICAgICAgID0+IFwlQXR0YWNobWVudHMsCiAgICAgICAgICAgIExvYWRFeHRlcm5hbEltYWdlcyA9PiAxLAogICAgICAgICk7CgogICAgICAgICRGaWVsZENvbnRlbnQgPSAkRGF0YXtDb250ZW50fTsKCiAgICAgICAgIyByZW1vdmUgYWN0aXZlIGh0bWwgY29udGVudCAoc2NyaXB0cywgYXBwbGV0cywgZXRjLi4uKQogICAgICAgIG15ICVTYWZlQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPlNhZmV0eSgKICAgICAgICAgICAgU3RyaW5nICAgICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIE5vQXBwbGV0ICAgICA9PiAxLAogICAgICAgICAgICBOb09iamVjdCAgICAgPT4gMSwKICAgICAgICAgICAgTm9FbWJlZCAgICAgID0+IDEsCiAgICAgICAgICAgIE5vSW50U3JjTG9hZCA9PiAwLAogICAgICAgICAgICBOb0V4dFNyY0xvYWQgPT4gMCwKICAgICAgICAgICAgTm9KYXZhU2NyaXB0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyB0YWtlIHRoZSBzYWZlIGNvbnRlbnQgaWYgbmVjY2Vzc2FyeQogICAgICAgIGlmICggJFNhZmVDb250ZW50e1JlcGxhY2V9ICkgewogICAgICAgICAgICAkRmllbGRDb250ZW50ID0gJFNhZmVDb250ZW50e1N0cmluZ307CiAgICAgICAgfQoKICAgICAgICAjIGRldGVjdCBhbGwgcGxhaW4gdGV4dCBsaW5rcyBhbmQgcHV0IHRoZW0gaW50byBhbiBIVE1MIDxhPiB0YWcKICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+TGlua1F1b3RlKAogICAgICAgICAgICBTdHJpbmcgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICApOwoKICAgICAgICAjIHNldCB0YXJnZXQ9Il9ibGFuayIgYXR0cmlidXRlIHRvIGFsbCBIVE1MIDxhPiB0YWdzCiAgICAgICAgIyB0aGUgTGlua1F1b3RlIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGNhbGxlZCBhZ2FpbgogICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgICAgIFN0cmluZyAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBUYXJnZXRBZGQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCBuZWVkZWQgSFRNTCBoZWFkZXJzCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgICAgIFN0cmluZyAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgQ2hhcnNldCA9PiAndXRmLTgnLAogICAgICAgICk7CgogICAgICAgICMgZXNjYXBlIHNpbmdsZSBxdW90ZXMKICAgICAgICAkRmllbGRDb250ZW50ID1+IHMvJy8mIzM5Oy9nOwoKICAgICAgICAjIFJldHVybiBjb21wbGV0ZSBIVE1MIGFzIGFuIGF0dGFjaG1lbnQuCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIERvd25sb2FkQXR0YWNobWVudCBTdWItYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Rvd25sb2FkQXR0YWNobWVudCcgKSB7CgogICAgICAgIG15ICRGaWxlbmFtZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWxlbmFtZScgKTsKCiAgICAgICAgIyBjaGVjayBwYXJhbQogICAgICAgIGlmICggISRGaWxlbmFtZSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0ZpbGVuYW1lIGlzIG5lZWRlZCEnLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYW4gYXR0YWNobWVudAogICAgICAgIG15ICREYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50R2V0KAogICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZSwKICAgICAgICApOwogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCREYXRhKSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEZpbGVuYW1lKS4iLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRGF0YSkgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KCAkRGF0YS0+JSogKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggYXR0YWNobWVudCAoJEZpbGVuYW1lKSEgTWF5IGJlIGFuIGF0dGFjayEhISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CiAgICB9CgogICAgIyBObyAoa25vd24pIHN1YmFjdGlvbgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdJbnZhbGlkIFN1YmFjdGlvbi4nKSwKICAgICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemBulk.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudElUU01Db25maWdJdGVtQnVsazsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZScpICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0J1bGsgZmVhdHVyZSBpcyBub3QgZW5hYmxlZCEnKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGludm9sdmVkIGNvbmZpZyBpdGVtcywgZmlsdGVyaW5nIGVtcHR5IENvbmZpZ0l0ZW1JRHMKICAgIG15IEBDb25maWdJdGVtSURzID0gZ3JlcCB7JF99CiAgICAgICAgJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhQENvbmZpZ0l0ZW1JRHMgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnKSwKICAgICAgICApOwogICAgfQogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICApOwoKICAgICMgZGVjbGFyZSB0aGUgdmFyaWFibGVzIGZvciBhbGwgdGhlIHBhcmFtZXRlcnMKICAgIG15ICVFcnJvcjsKCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBnZXQgY29uZmlnIGl0ZW0gb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZ2V0IGFsbCBwYXJhbWV0ZXJzIGFuZCBjaGVjayBmb3IgZXJyb3JzCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRG8nICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAjIGdldCBhbGwgcGFyYW1ldGVycwogICAgICAgIGZvciBteSAkS2V5ICgKICAgICAgICAgICAgcXcoIExpbmtUb2dldGhlciBMaW5rVG9nZXRoZXJBbm90aGVyIExpbmtUeXBlIExpbmtUb2dldGhlckxpbmtUeXBlIERlcGxTdGF0ZUlECiAgICAgICAgICAgIEluY2lTdGF0ZUlEICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApIHx8ICcnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkR2V0UGFyYW17J0xpbmtUb2dldGhlckFub3RoZXInfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNoZWNrSXRlbScpLT5TdHJpbmdDbGVhbigKICAgICAgICAgICAgICAgIFN0cmluZ1JlZiA9PiBcJEdldFBhcmFteydMaW5rVG9nZXRoZXJBbm90aGVyJ30sCiAgICAgICAgICAgICAgICBUcmltTGVmdCAgPT4gMSwKICAgICAgICAgICAgICAgIFRyaW1SaWdodCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRHZXRQYXJhbXsnTGlua1RvZ2V0aGVyQW5vdGhlcid9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgICAgICAgICAgJEVycm9yeydMaW5rVG9nZXRoZXJBbm90aGVySW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHByZXByb2Nlc3MgY29uZmlnIGl0ZW0KICAgIG15IEBTZWxlY3RlZENvbmZpZ0l0ZW1zOwogICAgbXkgJUNvbmZpZ0l0ZW1DbGFzc2VzOwoKICAgICMgZ2V0IGxpbmsgb2JqZWN0CiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgIyBsb29wIG92ZXIgY29uZmlnIGl0ZW1zIHRvIHByZWRldGVybWluZSBhY2Nlc3MgYW5kIGR5bmFtaWMgZmllbGQgaGFuZGxpbmcKICAgIENPTkZJR0lURU1fSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwoKICAgICAgICBuZXh0IENPTkZJR0lURU1fSUQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRDb25maWdJdGVtKTsKCiAgICAgICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgICAgIG15ICRBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkQWNjZXNzICkgewoKICAgICAgICAgICAgIyBlcnJvciBzY3JlZW4sIGRvbid0IHNob3cgY29uZmlnIGl0ZW0KICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgICAgICBEYXRhID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICAgICAnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJywKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1fSUQ7CiAgICAgICAgfQoKICAgICAgICAjIHJlbWVtYmVyIHNlbGVjdGVkIGNvbmZpZyBpdGVtIGNsYXNzZXMgYW5kIGlkcwogICAgICAgIHB1c2ggQFNlbGVjdGVkQ29uZmlnSXRlbXMsICRDb25maWdJdGVtOwogICAgICAgICRDb25maWdJdGVtQ2xhc3Nlc3sgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSA9ICRDb25maWdJdGVtLT57Q2xhc3NJRH07CiAgICB9CgogICAgIyBjaGVjayBpZiBkeW5hbWljIGZpZWxkcyBzaG91bGQgYmUgZGlzcGxheWVkIGFuZCB3aGljaCBvbmVzCiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdDsKICAgIG15ICVEeW5hbWljRmllbGRWYWx1ZXM7CiAgICBteSAlQUNMUmVkdWNpYmxlRHluYW1pY0ZpZWxkczsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGFyZSBvbmx5IGRpc3BsYXllZCBpZiBhbGwgY29uZmlnIGl0ZW1zIGFyZSBmcm9tIHRoZSBzYW1lIGNsYXNzCiAgICBpZiAoIHNjYWxhciBrZXlzICVDb25maWdJdGVtQ2xhc3NlcyA9PSAxICkgewogICAgICAgIG15ICRDbGFzcyAgICAgID0gKCBrZXlzICVDb25maWdJdGVtQ2xhc3NlcyApWzBdOwogICAgICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc2VzeyRDbGFzc30sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzIScsICRDbGFzcyApLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntEZWZpbml0aW9ufSA9ICREZWZpbml0aW9uOwogICAgICAgICAgICAkU2VsZi0+e0NsYXNzfSAgICAgID0gJENsYXNzOwogICAgICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdCAgID0gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9ID8gWyB2YWx1ZXMgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiBdIDogW107CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgZmV0Y2ggZHluYW1pYyBmaWVsZCB2YWx1ZXMKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJER5bmFtaWNGaWVsZExpc3QtPkAqICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFNlbGYtPntDb25maWd9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgd2ViIHJlcXVlc3QKICAgICAgICAkRHluYW1pY0ZpZWxkVmFsdWVzeyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9In0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICApOwoKICAgICAgICAjIHBlcmZvcm0gQUNMcyBvbiB2YWx1ZXMKICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJwogICAgICAgICk7CgogICAgICAgIGlmICgkSXNBQ0xSZWR1Y2libGUpIHsKICAgICAgICAgICAgJEFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgIyBwcm9jZXNzIGNvbmZpZyBpdGVtcwogICAgbXkgJEFjdGlvbkZsYWcgPSAwOwogICAgbXkgJENvdW50ZXIgICAgPSAxOwoKICAgIENPTkZJR0lURU1fSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW0gKEBTZWxlY3RlZENvbmZpZ0l0ZW1zKSB7CgogICAgICAgICMgZG8gc29tZSBhY3Rpb25zIG9uIENJcwogICAgICAgIGlmICggKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RvJyApICYmICggISVFcnJvciApICkgewoKICAgICAgICAgICAgIyBjaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgICAgICAjIGJ1bGsgYWN0aW9uIGNvbmZpZ2l0ZW0gdXBkYXRlCiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFZhbHVlcywKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGJ1bGsgYWN0aW9uIGxpbmtzCiAgICAgICAgICAgICMgbGluayBhbGwgY29uZmlnIGl0ZW1zIHRvIGFub3RoZXIgY29uZmlnIGl0ZW0KICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17J0xpbmtUb2dldGhlckFub3RoZXInfSApIHsKICAgICAgICAgICAgICAgIG15ICRNYWluQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkR2V0UGFyYW17J0xpbmtUb2dldGhlckFub3RoZXInfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzcGxpdCB0aGUgdHlwZSBpZGVudGlmaWVyCiAgICAgICAgICAgICAgICBteSBAVHlwZSA9IHNwbGl0IC86Oi8sICRHZXRQYXJhbXtMaW5rVHlwZX07CgogICAgICAgICAgICAgICAgaWYgKCAkVHlwZVswXSAmJiAkVHlwZVsxXSAmJiAoICRUeXBlWzFdIGVxICdTb3VyY2UnIHx8ICRUeXBlWzFdIGVxICdUYXJnZXQnICkgKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICRTb3VyY2VLZXkgPSAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICAgICAgbXkgJFRhcmdldEtleSA9ICRNYWluQ29uZmlnSXRlbUlEOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRUeXBlWzFdIGVxICdUYXJnZXQnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU291cmNlS2V5ID0gJE1haW5Db25maWdJdGVtSUQ7CiAgICAgICAgICAgICAgICAgICAgICAgICRUYXJnZXRLZXkgPSAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRFBhcnRuZXIgKCBtYXAgeyAkXy0+e0NvbmZpZ0l0ZW1JRH0gfSBAU2VsZWN0ZWRDb25maWdJdGVtcyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkTWFpbkNvbmZpZ0l0ZW1JRCBuZSAkQ29uZmlnSXRlbUlEUGFydG5lciApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkU291cmNlS2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGFyZ2V0S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkVHlwZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBsaW5rIHRvZ2V0aGVyCiAgICAgICAgICAgIGlmICggJEdldFBhcmFteydMaW5rVG9nZXRoZXInfSApIHsKCiAgICAgICAgICAgICAgICAjIHNwbGl0IHRoZSB0eXBlIGlkZW50aWZpZXIKICAgICAgICAgICAgICAgIG15IEBUeXBlID0gc3BsaXQgLzo6LywgJEdldFBhcmFte0xpbmtUb2dldGhlckxpbmtUeXBlfTsKCiAgICAgICAgICAgICAgICBpZiAoICRUeXBlWzBdICYmICRUeXBlWzFdICYmICggJFR5cGVbMV0gZXEgJ1NvdXJjZScgfHwgJFR5cGVbMV0gZXEgJ1RhcmdldCcgKSApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRFBhcnRuZXIgKCBtYXAgeyAkXy0+e0NvbmZpZ0l0ZW1JRH0gfSBAU2VsZWN0ZWRDb25maWdJdGVtcyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTb3VyY2VLZXkgPSAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRUYXJnZXRLZXkgPSAkQ29uZmlnSXRlbUlEUGFydG5lcjsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFR5cGVbMV0gZXEgJ1RhcmdldCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkU291cmNlS2V5ID0gJENvbmZpZ0l0ZW1JRFBhcnRuZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGFyZ2V0S2V5ID0gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSBuZSAkQ29uZmlnSXRlbUlEUGFydG5lciApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkU291cmNlS2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGFyZ2V0S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkVHlwZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkQWN0aW9uRmxhZyA9IDE7CiAgICAgICAgfQogICAgICAgICRDb3VudGVyKys7CiAgICB9CgogICAgIyByZWRpcmVjdAogICAgaWYgKCRBY3Rpb25GbGFnKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlBvcHVwQ2xvc2UoCiAgICAgICAgICAgIFVSTCA9PiAoICRTZWxmLT57TGFzdFNjcmVlbk92ZXJ2aWV3fSB8fCAnQWN0aW9uPUFnZW50RGFzaGJvYXJkJyApLAogICAgICAgICk7CiAgICB9CgogICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2soCiAgICAgICAgJVBhcmFtLAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGQgID0+IFwlRHluYW1pY0ZpZWxkVmFsdWVzLAogICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gWyBtYXAgeyAkXy0+e0NvbmZpZ0l0ZW1JRH0gfSBAU2VsZWN0ZWRDb25maWdJdGVtcyBdLAogICAgICAgIEVycm9ycyAgICAgICAgPT4gXCVFcnJvciwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICApOwogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfTWFzayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBwcmVwYXJlIGVycm9ycyEKICAgIGlmICggJFBhcmFte0Vycm9yc30gKSB7CiAgICAgICAgZm9yIG15ICRLZXlFcnJvciAoIHNvcnQga2V5cyAleyAkUGFyYW17RXJyb3JzfSB9ICkgewogICAgICAgICAgICAkUGFyYW17JEtleUVycm9yfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFBhcmFte0Vycm9yc30tPnskS2V5RXJyb3J9ICk7CiAgICAgICAgfQogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0J1bGtBY3Rpb24nLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyByZW1lbWJlciBjb25maWcgaXRlbSBpZHMKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRHN9ICkgewogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHsgJFBhcmFte0NvbmZpZ0l0ZW1JRHN9IH0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVXNlZENvbmZpZ0l0ZW1JRCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGRlcGxveW1lbnQgc3RhdGUKICAgIGlmICggJFNlbGYtPntDb25maWd9LT57RGVwbFN0YXRlfSApIHsKICAgICAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgRGVwbFN0YXRlU3RyZwogICAgICAgICRQYXJhbXtEZXBsU3RhdGVTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdEZXBsU3RhdGVJRCcsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0RlcGxTdGF0ZUlEfSwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgaW5jaWRlbnQgc3RhdGUKICAgIGlmICggJFNlbGYtPntDb25maWd9LT57SW5jaVN0YXRlfSApIHsKCiAgICAgICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+IFsgJ29wZXJhdGlvbmFsJywgJ2luY2lkZW50JyBdLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgSW5jaVN0YXRlU3RyZwogICAgICAgICRQYXJhbXtJbmNpU3RhdGVTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdJbmNpU3RhdGVJRCcsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGxpbmsgb2JqZWN0CiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgIyBsaW5rIHR5cGVzIGxpc3QKICAgICMgZ2V0IHBvc3NpYmxlIHR5cGVzIGxpc3QKICAgIG15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgICAgICBPYmplY3QxID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgT2JqZWN0MiA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGRlZmluZSBibGFuayBsaW5lIGVudHJ5CiAgICBteSAlQmxhbmtMaW5lID0gKAogICAgICAgIEtleSAgICAgID0+ICctJywKICAgICAgICBWYWx1ZSAgICA9PiAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScsCiAgICAgICAgRGlzYWJsZWQgPT4gMSwKICAgICk7CgogICAgIyBjcmVhdGUgdGhlIHNlbGVjdGFibGUgdHlwZSBsaXN0CiAgICBteSAkQ291bnRlciA9IDA7CiAgICBteSBAU2VsZWN0YWJsZVR5cGVzTGlzdDsKICAgIG15IEBMaW5rVG9nZXRoZXJUeXBlTGlzdDsKICAgIFBPU1NJQkxFVFlQRToKICAgIGZvciBteSAkUG9zc2libGVUeXBlICggc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IGtleXMgJVBvc3NpYmxlVHlwZXNMaXN0ICkgewoKICAgICAgICAjIGxvb2t1cCB0eXBlIGlkCiAgICAgICAgbXkgJFR5cGVJRCA9ICRMaW5rT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICBOYW1lICAgPT4gJFBvc3NpYmxlVHlwZSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0eXBlCiAgICAgICAgbXkgJVR5cGUgPSAkTGlua09iamVjdC0+VHlwZUdldCgKICAgICAgICAgICAgVHlwZUlEID0+ICRUeXBlSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyB0eXBlIGxpc3QgZm9yIGxpbmsgdG9nZXRoZXIgY2FuIGNvbnRhaW4gb25seQogICAgICAgICMgbGluayB0eXBlcyB3aGljaCBhcmUgbm90IGRpcmVjdGVkIChub3QgcG9pbnRlZCkKICAgICAgICBpZiAoICEkVHlwZXtQb2ludGVkfSApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIHRoZSBzb3VyY2UgbmFtZQogICAgICAgICAgICBteSAlU291cmNlTmFtZTsKICAgICAgICAgICAgJFNvdXJjZU5hbWV7S2V5fSAgID0gJFBvc3NpYmxlVHlwZSAuICc6OlNvdXJjZSc7CiAgICAgICAgICAgICRTb3VyY2VOYW1le1ZhbHVlfSA9ICRUeXBle1NvdXJjZU5hbWV9OwoKICAgICAgICAgICAgcHVzaCBATGlua1RvZ2V0aGVyVHlwZUxpc3QsIFwlU291cmNlTmFtZTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHRoZSBzb3VyY2UgbmFtZQogICAgICAgIG15ICVTb3VyY2VOYW1lOwogICAgICAgICRTb3VyY2VOYW1le0tleX0gICA9ICRQb3NzaWJsZVR5cGUgLiAnOjpTb3VyY2UnOwogICAgICAgICRTb3VyY2VOYW1le1ZhbHVlfSA9ICRUeXBle1NvdXJjZU5hbWV9OwoKICAgICAgICBwdXNoIEBTZWxlY3RhYmxlVHlwZXNMaXN0LCBcJVNvdXJjZU5hbWU7CgogICAgICAgIG5leHQgUE9TU0lCTEVUWVBFIGlmICEkVHlwZXtQb2ludGVkfTsKCiAgICAgICAgIyBjcmVhdGUgdGhlIHRhcmdldCBuYW1lCiAgICAgICAgbXkgJVRhcmdldE5hbWU7CiAgICAgICAgJFRhcmdldE5hbWV7S2V5fSAgID0gJFBvc3NpYmxlVHlwZSAuICc6OlRhcmdldCc7CiAgICAgICAgJFRhcmdldE5hbWV7VmFsdWV9ID0gJFR5cGV7VGFyZ2V0TmFtZX07CgogICAgICAgIHB1c2ggQFNlbGVjdGFibGVUeXBlc0xpc3QsIFwlVGFyZ2V0TmFtZTsKICAgIH0KICAgIGNvbnRpbnVlIHsKCiAgICAgICAgIyBhZGQgYmxhbmsgbGluZQogICAgICAgIHB1c2ggQFNlbGVjdGFibGVUeXBlc0xpc3QsIFwlQmxhbmtMaW5lOwoKICAgICAgICAkQ291bnRlcisrOwogICAgfQoKICAgICMgcmVtb3ZlZCBsYXN0IChlbXB0eSkgZW50cnkKICAgIHBvcCBAU2VsZWN0YWJsZVR5cGVzTGlzdDsKCiAgICAjIGFkZCBibGFuayBsaW5lcyBvbiB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgbGlzdCBpZiBtb3JlIHRoZW4gdHdvIGxpbmt0eXBlcwogICAgaWYgKCAkQ291bnRlciA+IDIgKSB7CiAgICAgICAgdW5zaGlmdCBAU2VsZWN0YWJsZVR5cGVzTGlzdCwgXCVCbGFua0xpbmU7CiAgICAgICAgcHVzaCBAU2VsZWN0YWJsZVR5cGVzTGlzdCwgXCVCbGFua0xpbmU7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBMaW5rVHlwZVN0cmcKICAgICRQYXJhbXtMaW5rVHlwZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcQFNlbGVjdGFibGVUeXBlc0xpc3QsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdMaW5rVHlwZScsCiAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtUeXBlSWRlbnRpZmllcn0gfHwgJ0FsdGVybmF0aXZlVG86OlNvdXJjZScsCiAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICApOwogICAgJFBhcmFte0xpbmtUb2dldGhlckxpbmtUeXBlU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFxATGlua1RvZ2V0aGVyVHlwZUxpc3QsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdMaW5rVG9nZXRoZXJMaW5rVHlwZScsCiAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtUeXBlSWRlbnRpZmllcn0gfHwgJ0FsdGVybmF0aXZlVG86OlNvdXJjZScsCiAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICApOwoKICAgICRQYXJhbXtMaW5rVG9nZXRoZXJZZXNOb09wdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgIERhdGEgICAgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdZZXNOb09wdGlvbnMnKSwKICAgICAgICBOYW1lICAgICAgID0+ICdMaW5rVG9nZXRoZXInLAogICAgICAgIFNlbGVjdGVkSUQgPT4gJFBhcmFte0xpbmtUb2dldGhlcn0gfHwgMCwKICAgICk7CgogICAgIyByZW5kZXIgZHluYW1pYyBmaWVsZHMKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57RGVmaW5pdGlvbn0gKSAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntEZWZpbml0aW9ufXtEZWZpbml0aW9uUmVmfSApICYmICRTZWxmLT57RGVmaW5pdGlvbn17RGVmaW5pdGlvblJlZn17U2VjdGlvbnN9ICkgewoKICAgICAgICAjIFRPRE86IEl0IHdvdWxkIGJlIG5pY2UgdG8gc3dpdGNoIGJldHdlZW4gcGFnZXMgZm9yIHRoZSBlZGl0IG1hc2ssIHRvby4gS2VlcGluZyB0aGUgZmllbGRzIGluIHN5bmMKICAgICAgICAjICAgICAgIHdoaWxlIGVkaXRpbmcgbmVlZHMgYSBiaXQgbW9yZSBwcmVwYXJhdGlvbiB0aG91Z2gKICAgICAgICAjIFRodXMgZm9yIG5vdyBtYWtlIHN1cmUgdG8gc2hvdyBkeW5hbWljIGZpZWxkcyBvbmx5IG9uY2UsIGV2ZW4gaWYgcHJlc2VudCBvbiBtdWx0aXBsZSBwYWdlcy9zZWN0aW9ucwogICAgICAgIG15ICRGaWVsZHNTZWVuID0ge307CgogICAgICAgIGZvciBteSAkUGFnZSAoICRTZWxmLT57RGVmaW5pdGlvbn17RGVmaW5pdGlvblJlZn17UGFnZXN9LT5AKiApIHsKCiAgICAgICAgICAgIFNFQ1RJT046CiAgICAgICAgICAgIGZvciBteSAkU2VjdGlvbkNvbmZpZyAoICRQYWdlLT57Q29udGVudH0tPkAqICkgewogICAgICAgICAgICAgICAgbXkgJFNlY3Rpb24gPSAkU2VsZi0+e0RlZmluaXRpb259e0RlZmluaXRpb25SZWZ9e1NlY3Rpb25zfXsgJFNlY3Rpb25Db25maWctPntTZWN0aW9ufSB9OwoKICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTiB1bmxlc3MgJFNlY3Rpb247CiAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT04gaWYgJFNlY3Rpb24tPntUeXBlfSAmJiAkU2VjdGlvbi0+e1R5cGV9IG5lICdEeW5hbWljRmllbGRzJzsKCiAgICAgICAgICAgICAgICAjIHdlZWQgb3V0IG11bHRpcGxlIG9jY3VyYW5jZXMgb2YgZHluYW1pYyBmaWVsZHMgLSBzZWUgY29tbWVudCBhYm92ZQogICAgICAgICAgICAgICAgJFNlY3Rpb24tPntDb250ZW50fSA9ICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICA9PiAkU2VjdGlvbi0+e0NvbnRlbnR9LAogICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyZWRERnMgPT4gJFNlbGYtPntDb25maWd9LT57RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICBTZWVuICAgICAgICAgID0+ICRGaWVsZHNTZWVuLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdCBwcm9jZWVkIGlmIGNvbnRlbnQgaXMgZW1wdHkKICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTiB1bmxlc3MgJFNlY3Rpb24tPntDb250ZW50fS0+QCo7CgogICAgICAgICAgICAgICAgJFBhcmFte0R5bmFtaWNGaWVsZEhUTUx9IC49ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpEeW5hbWljRmllbGQ6Ok1hc2snKS0+RWRpdFNlY3Rpb25SZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICAgICAgID0+ICRTZWN0aW9uLT57Q29udGVudH0sCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgID0+ICRTZWxmLT57RGVmaW5pdGlvbn17RHluYW1pY0ZpZWxkUmVmfSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZFZhbHVlcyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgICAgICAgICBBSkFYVXBkYXRhYmxlICAgICAgPT4gMCwKCiAgICAgICAgICAgICAgICAgICAgIyBUT0RPIGFzayBpZiB0aGlzIHNob3VsZCBiZSB1c2VkCiAgICAgICAgICAgICAgICAgICAgIyBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiBcJUR5bmFtaWNGaWVsZFBvc3NpYmxlVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICMgRXJyb3JzICAgICAgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRWYWxpZGF0aW9uUmVzdWx0LAogICAgICAgICAgICAgICAgICAgICMgVmlzaWJpbGl0eSAgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRWaXNpYmlsaXR5LAogICAgICAgICAgICAgICAgICAgIE9iamVjdCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICRTZWxmLT57Q2xhc3N9LAogICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkfS0+JSosCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgb3V0cHV0IGJhY2sKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtQnVsaycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICApOwp9CgpzdWIgX0Rpc2NhcmRGaWVsZHNTZWVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbnRlbnQ7CiAgICBteSAkUmVmID0gcmVmICRQYXJhbXtDb250ZW50fTsKCiAgICBpZiAoICRSZWYgZXEgJ0FSUkFZJyApIHsKICAgICAgICBteSBAQ2xlYW5lZEFycmF5OwoKICAgICAgICBFTEVNRU5UOgogICAgICAgIGZvciBteSAkRWxlbWVudCAoICRQYXJhbXtDb250ZW50fS0+QCogKSB7CiAgICAgICAgICAgIG15ICRSZWZFbGVtZW50ID0gcmVmICRFbGVtZW50OwoKICAgICAgICAgICAgaWYgKCAkUmVmRWxlbWVudCBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgcHVzaCBAQ2xlYW5lZEFycmF5LCAkU2VsZi0+X0Rpc2NhcmRGaWVsZHNTZWVuKAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgU2VlbiAgICA9PiAkUGFyYW17U2Vlbn0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzaWYgKCAkUmVmRWxlbWVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICBpZiAoICEkRWxlbWVudC0+e0RGfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDbGVhbmVkQXJyYXksICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlZW4gICAgPT4gJFBhcmFte1NlZW59LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICEkUGFyYW17Q29uZmlndXJlZERGc317ICRFbGVtZW50LT57REZ9IH0gfHwgJFBhcmFte1NlZW59eyAkRWxlbWVudC0+e0RGfSB9KysgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBDbGVhbmVkQXJyYXksICRFbGVtZW50OwogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSBcQENsZWFuZWRBcnJheTsKICAgIH0KCiAgICBlbHNpZiAoICRSZWYgZXEgJ0hBU0gnICkgewogICAgICAgIG15ICVDbGVhbmVkSGFzaDsKCiAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICRQYXJhbXtDb250ZW50fS0+JSogKSB7CiAgICAgICAgICAgICRDbGVhbmVkSGFzaHskS2V5fSA9ICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRQYXJhbXtDb250ZW50fXskS2V5fSwKICAgICAgICAgICAgICAgIFNlZW4gICAgPT4gJFBhcmFte1NlZW59LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSBcJUNsZWFuZWRIYXNoOwogICAgfQoKICAgIGVsc2UgewogICAgICAgICRDb250ZW50ID0gJFBhcmFte0NvbnRlbnR9OwogICAgfQoKICAgIHJldHVybiAkQ29udGVudDsKfQoKMTsK</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemDelete.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudElUU01Db25maWdJdGVtRGVsZXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIENvbmZpZ0l0ZW1JRAogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb25maWdJdGVtSUQnICk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtIG9iamVjdAogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEFjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBlcnJvciBzY3JlZW4KICAgIGlmICggISRBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnWW91IG5lZWQgJXMgcGVybWlzc2lvbnMhJywgJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0gKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgICMgY2hlY2sgaWYgY29uZmlnIGl0ZW0gaXMgZm91bmQKICAgIGlmICggISRDb25maWdJdGVtICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJywgJENvbmZpZ0l0ZW1JRCApLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDb25maWdJdGVtRGVsZXRlJyApIHsKCiAgICAgICAgIyBkZWxldGUgdGhlIGNvbmZpZyBpdGVtCiAgICAgICAgbXkgJENvdWxkRGVsZXRlQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJENvdWxkRGVsZXRlQ29uZmlnSXRlbSkgewoKICAgICAgICAgICAgIyByZWRpcmVjdCB0byBjb25maWcgaXRlbSBvdmVydmlldywgd2hlbiB0aGUgZGVsZXRpb24gd2FzIHN1Y2Nlc3NmdWwKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHNob3cgZXJyb3IgbWVzc2FnZSwgd2hlbiBkZWxldGUgZmFpbGVkCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnLCAkQ29uZmlnSXRlbUlEICksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggISRDb25maWdJdGVtLT57VmVyc2lvbklEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnLCAkQ29uZmlnSXRlbUlEICksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IHRoZSBkaWFsb2cgdHlwZS4gQXMgZGVmYXVsdCwgdGhlIGRpYWxvZyB3aWxsIGhhdmUgMiBidXR0b25zOiBZZXMgYW5kIE5vCiAgICBteSAkRGlhbG9nVHlwZSA9ICdDb25maXJtYXRpb24nOwoKICAgICMgb3V0cHV0IGNvbnRlbnQKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtRGVsZXRlJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgIH0sCiAgICApOwoKICAgICMgYnVpbGQgdGhlIHJldHVybmVkIGRhdGEgc3RydWN0dXJlCiAgICBteSAlRGF0YSA9ICgKICAgICAgICBIVE1MICAgICAgID0+ICRPdXRwdXQsCiAgICAgICAgRGlhbG9nVHlwZSA9PiAkRGlhbG9nVHlwZSwKICAgICk7CgogICAgIyByZXR1cm4gSlNPTi1TdHJpbmcgYmVjYXVzZSBvZiBBSkFYLU1vZGUKICAgIG15ICRPdXRwdXRKU09OID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSggRGF0YSA9PiBcJURhdGEgKTsKCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJExheW91dE9iamVjdC0+e0NoYXJzZXR9LAogICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXRKU09OLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemEdit.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBteSBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBjb25maWdpdGVtIGlkIGFuZCBjbGFzcyBpZAogICAgbXkgJENvbmZpZ0l0ZW0gID0ge307CiAgICBteSAkRHVwbGljYXRlSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRHVwbGljYXRlSUQnICkgfHwgMDsKICAgICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb25maWdJdGVtSUQnICkgfHwgMDsKICAgICRDb25maWdJdGVtLT57Q2xhc3NJRH0gICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDbGFzc0lEJyApICAgICAgfHwgMDsKCiAgICBteSAkSGFzQWNjZXNzOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJENvbmZpZ09iamVjdC0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgZ2V0IG5lZWRlZCBkYXRhCiAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAmJiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gbmUgJ05FVycgKSB7CgogICAgICAgICMgY2hlY2sgYWNjZXNzIGZvciBjb25maWcgaXRlbQogICAgICAgICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtCiAgICAgICAgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCREdXBsaWNhdGVJRCkgewoKICAgICAgICBteSAkVmVyc2lvbklEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZlcnNpb25JRCcgKTsKCiAgICAgICAgIyBUT0RPOiBDaGVjayBkdXBsaWNhdGlvbgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIHRvIGR1cGxpY2F0ZQogICAgICAgICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJER1cGxpY2F0ZUlELAogICAgICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGFjY2VzcyBmb3IgY29uZmlnIGl0ZW0KICAgICAgICAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICApOwoKICAgICAgICAjIHNldCBjb25maWcgaXRlbSBpZCBhbmQgbnVtYmVyCiAgICAgICAgJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9ID0gJ05FVyc7CiAgICAgICAgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9ICAgICAgID0gVHJhbnNsYXRhYmxlKCdOZXcnKTsKICAgIH0KICAgIGVsc2lmICggJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSApIHsKCiAgICAgICAgIyBzZXQgY29uZmlnIGl0ZW0gaWQgYW5kIG51bWJlcgogICAgICAgICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSA9ICdORVcnOwogICAgICAgICRDb25maWdJdGVtLT57TnVtYmVyfSAgICAgICA9IFRyYW5zbGF0YWJsZSgnTmV3Jyk7CgogICAgICAgICMgY2hlY2sgYWNjZXNzIGZvciBjb25maWcgaXRlbQogICAgICAgICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwogICAgICAgICRDb25maWdJdGVtLT57Q2xhc3N9ID0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9IH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgaWYgdXNlciBoYXMgbm8gYWNjZXNzIHJpZ2h0cyBzaG93IGVycm9yIHBhZ2UKICAgIGlmICggISRIYXNBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gYWNjZXNzIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEVkaXQgdGhlIGNvbmZpZyBpdGVtIHdpdGggdGhlIG5ld2VzdCBjb25maWcgaXRlbSBkZWZpbml0aW9uIG9mIHRoZSByZWxldmFudCBjbGFzcwogICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICApOwoKICAgICMgYWJvcnQsIGlmIG5vIGRlZmluaXRpb24gaXMgZGVmaW5lZAogICAgaWYgKCAhJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnLCAkQ29uZmlnSXRlbS0+e0NsYXNzfSApLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBmb3JtIGlkCiAgICBteSAkRm9ybUNhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6Rm9ybUNhY2hlJyk7CgogICAgJFNlbGYtPntGb3JtSUR9ID0gJEZvcm1DYWNoZU9iamVjdC0+UHJlcGFyZUZvcm1JRCgKICAgICAgICBQYXJhbU9iamVjdCAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgKTsKCiAgICBteSAlR2V0UGFyYW07CiAgICBteSAlRHluYW1pY0ZpZWxkVmFsdWVzOwogICAgbXkgJUFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHM7CiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdDsKCiAgICAjIGdldCBpbml0aWFsIHZhbHVlcyBmb3IgdGhlIGNvbmZpZ2l0ZW0KICAgIGlmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdCA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSA/IFsgdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogXSA6IFtdOwoKICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSBlcSAnTkVXJyApIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lOwoKICAgICAgICAgICAgaWYgKCREdXBsaWNhdGVJRCkgewoKICAgICAgICAgICAgICAgICMgZ2V0IERhdGEgZnJvbSBkdXBsaWNhdGUgQ0kKICAgICAgICAgICAgICAgIGZvciBteSAkUGFyYW0gKHF3KE5hbWUgVmVyc2lvblN0cmluZyBEZXBsU3RhdGVJRCBJbmNpU3RhdGVJRCBEZXNjcmlwdGlvbikpIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtfSA9ICRDb25maWdJdGVtLT57JFBhcmFtfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU5hbWUgPSAkR2V0UGFyYW17TmFtZX0gLiAnIChDb3B5KSc7CgogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCAkRHluYW1pY0ZpZWxkTGlzdC0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkVmFsdWVzeyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAgICAgICAgICAgICAjIHBlcmZvcm0gQUNMcyBvbiB2YWx1ZXMKICAgICAgICAgICAgICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJwogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkSXNBQ0xSZWR1Y2libGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKAogICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+JSosCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgZGVsZXRlICRHZXRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIyBnZXQgZ2VuZXJhbCBmb3JtIGRhdGEKICAgICAgICAgICAgZm9yIG15ICRQYXJhbSAocXcoTmFtZSBWZXJzaW9uU3RyaW5nIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEIERlc2NyaXB0aW9uKSkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRQYXJhbX0gPSAkQ29uZmlnSXRlbS0+eyRQYXJhbX07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCAkRHluYW1pY0ZpZWxkTGlzdC0+QCogKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKCiAgICAgICAgICAgICAgICAjIHBlcmZvcm0gQUNMcyBvbiB2YWx1ZXMKICAgICAgICAgICAgICAgIG15ICRJc0FDTFJlZHVjaWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJwogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoJElzQUNMUmVkdWNpYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgJEFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBlbHNlIHsKICAgICAgICBteSAkQWN0aXZlRmllbGRzID0gJEZvcm1DYWNoZU9iamVjdC0+R2V0Rm9ybURhdGEoCiAgICAgICAgICAgIEZvcm1JRCAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICBLZXkgICAgICAgICAgPT4gJ0FjdGl2ZUR5bmFtaWNGaWVsZHMnLAogICAgICAgICkgLy8gW107CgogICAgICAgIGZvciBteSAkRmllbGROYW1lICggJEFjdGl2ZUZpZWxkcy0+QCogKSB7CiAgICAgICAgICAgIHB1c2ggQHskRHluYW1pY0ZpZWxkTGlzdH0sICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskRmllbGROYW1lfTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGdlbmVyYWwgZm9ybSBkYXRhCiAgICAgICAgZm9yIG15ICRQYXJhbSAocXcoTmFtZSBWZXJzaW9uU3RyaW5nIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEIERlc2NyaXB0aW9uKSkgewogICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbSApOwogICAgICAgIH0KCiAgICAgICAgIyBzcGVjaWFsIGNhc2UgZm9yIGNsYXNzCiAgICAgICAgJEdldFBhcmFte0NsYXNzSUR9ID0gJENvbmZpZ0l0ZW0tPntDbGFzc0lEfTsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJER5bmFtaWNGaWVsZExpc3QtPkAqICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRDb25maWctPntSZWFkb25seX07CgogICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgd2ViIHJlcXVlc3QKICAgICAgICAgICAgJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgcGVyZm9ybSBBQ0xzIG9uIHZhbHVlcwogICAgICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJElzQUNMUmVkdWNpYmxlKSB7CiAgICAgICAgICAgICAgICAkQUNMUmVkdWNpYmxlRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15IEBVcGRhdGFibGVGaWVsZHMgPSBxdyhEZXBsU3RhdGVJRCBJbmNpU3RhdGVJRCBEZXNjcmlwdGlvbik7CiAgICBwdXNoIEBVcGRhdGFibGVGaWVsZHMsIGtleXMgJUFDTFJlZHVjaWJsZUR5bmFtaWNGaWVsZHM7CgogICAgIyBjb252ZXJ0IGR5bmFtaWMgZmllbGQgdmFsdWVzIGludG8gYSBzdHJ1Y3R1cmUgZm9yIEFDTHMKICAgIG15ICVEeW5hbWljRmllbGRBQ0xQYXJhbWV0ZXJzOwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBzb3J0IGtleXMgJUR5bmFtaWNGaWVsZFZhbHVlcyApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZDsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZFZhbHVlc3skRHluYW1pY0ZpZWxkfTsKCiAgICAgICAgJER5bmFtaWNGaWVsZEFDTFBhcmFtZXRlcnN7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQgfSA9ICREeW5hbWljRmllbGRWYWx1ZXN7JER5bmFtaWNGaWVsZH07CiAgICB9CiAgICAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfSA9IFwlRHluYW1pY0ZpZWxkQUNMUGFyYW1ldGVyczsKCiAgICAjIGdldCB1cGxvYWQgY2FjaGUgb2JqZWN0CiAgICBteSAkVXBsb2FkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZScpOwoKICAgICMgYXR0YWNobWVudHMgb2YgZXhpc3RpbmcgY29uZmlnIGl0ZW0gbmVlZHMgdG8gYmUgbG9hZGVkIGluIHR3byBjYXNlczoKICAgICMgICAxLiBhbiBleGlzdGluZyBjb25maWcgaXRlbSBpcyBlZGl0ZWQgLSBubyBjbGFzcyBpZCBwcmVzZW50IGluIEdldFBhcmFtCiAgICAjICAgMi4gYW4gZXhpc3RpbmcgY29uZmlnIGl0ZW0gaXMgZHVwbGljYXRlZAogICAgaWYgKCAhJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NsYXNzSUQnICkgfHwgJER1cGxpY2F0ZUlEICkgewoKICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgbWV0YSBkYXRhCiAgICAgICAgbXkgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJER1cGxpY2F0ZUlEIHx8ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICApOwoKICAgICAgICAjIGNvcHkgYWxsIGV4aXN0aW5nIGF0dGFjaG1lbnRzIHRvIHVwbG9hZCBjYWNoZQogICAgICAgIEZJTEVOQU1FOgogICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgZXhpc3RpbmcgYXR0YWNobWVudCBkYXRhCiAgICAgICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkRHVwbGljYXRlSUQgfHwgJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCBhdHRhY2htZW50IHRvIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgRm9ybUlEICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57Q29udGVudH0sCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQXR0YWNobWVudERhdGEtPntDb250ZW50VHlwZX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxvZyBvYmplY3QKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRGaWVsZFJlc3RyaWN0aW9uc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RmllbGRSZXN0cmljdGlvbnMnKTsKCiAgICBteSAkQXV0b3NlbGVjdCA9ICRDb25maWdPYmplY3QtPkdldCgnQ29uZmlnSXRlbUFDTDo6QXV0b3NlbGVjdCcpIHx8IHVuZGVmOwogICAgbXkgJEFDTFByZXNlbGVjdGlvbjsKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdDb25maWdJdGVtQUNMOjpBQ0xQcmVzZWxlY3Rpb24nKSApIHsKCiAgICAgICAgIyBnZXQgY2FjaGVkIHByZXNlbGVjdGlvbiBydWxlcwogICAgICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgICAgICRBQ0xQcmVzZWxlY3Rpb24gPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbUFDTCcsCiAgICAgICAgICAgIEtleSAgPT4gJ1ByZXNlbGVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkQUNMUHJlc2VsZWN0aW9uICkgewogICAgICAgICAgICAkQUNMUHJlc2VsZWN0aW9uID0gJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5TZXRBQ0xQcmVzZWxlY3Rpb25DYWNoZSgpOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRXJyb3I7CiAgICBteSAkTmFtZUR1cGxpY2F0ZXM7CiAgICBteSAkQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2U7CiAgICBteSAlRHluYW1pY0ZpZWxkVmFsaWRhdGlvblJlc3VsdDsKICAgIG15ICVEeW5hbWljRmllbGRQb3NzaWJsZVZhbHVlczsKICAgIG15ICVEeW5hbWljRmllbGRWaXNpYmlsaXR5OwoKICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9LAogICAgKTsKCiAgICBteSAkTmFtZU1vZHVsZSA9ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXN7TmFtZU1vZHVsZX1bMF0gOiAnJzsKICAgIGlmICgkTmFtZU1vZHVsZSkgewoKICAgICAgICAjIGNoZWNrIGlmIG5hbWUgbW9kdWxlIGV4aXN0cwogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JE5hbWVNb2R1bGUiKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgbmFtZSBtb2R1bGUgZm9yIGNsYXNzICRDb25maWdJdGVtLT57Q2xhc3N9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICROYW1lTW9kdWxlID0gdW5kZWY7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWZXJzaW9uU3RyaW5nTW9kdWxlID0gJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblN0cmluZ01vZHVsZX0gPyAkQ2xhc3NQcmVmZXJlbmNlc3tWZXJzaW9uU3RyaW5nTW9kdWxlfVswXSA6ICcnOwogICAgaWYgKCRWZXJzaW9uU3RyaW5nTW9kdWxlKSB7CgogICAgICAgICMgY2hlY2sgaWYgbmFtZSBtb2R1bGUgZXhpc3RzCiAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpWZXJzaW9uU3RyaW5nOjokVmVyc2lvblN0cmluZ01vZHVsZSIpICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgbG9hZCB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNsYXNzICRDb25maWdJdGVtLT57Q2xhc3N9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRWZXJzaW9uU3RyaW5nTW9kdWxlID0gdW5kZWY7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTYXZlJyApIHsKCiAgICAgICAgIyBnZXQgdGhlIHVwbG9hZGVkIGF0dGFjaG1lbnQKICAgICAgICBteSAlVXBsb2FkU3R1ZmYgPSAkUGFyYW1PYmplY3QtPkdldFVwbG9hZEFsbCgKICAgICAgICAgICAgUGFyYW0gID0+ICdGaWxlVXBsb2FkJywKICAgICAgICAgICAgU291cmNlID0+ICdzdHJpbmcnLAogICAgICAgICk7CgogICAgICAgIGlmICglVXBsb2FkU3R1ZmYpIHsKCiAgICAgICAgICAgICMgYWRkIGF0dGFjaG1lbnQgdG8gdGhlIHVwbG9hZCBjYWNoZQogICAgICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgJVVwbG9hZFN0dWZmLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJEFsbFJlcXVpcmVkID0gMTsKCiAgICAgICAgIyBnZXQgZ2VuZXJhbCBmb3JtIGRhdGEKICAgICAgICBmb3IgbXkgJFBhcmFtIChxdyhEZXBsU3RhdGVJRCBJbmNpU3RhdGVJRCBEZXNjcmlwdGlvbikpIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPnskUGFyYW19ID0gJEdldFBhcmFteyRQYXJhbX07CgogICAgICAgICAgICBpZiAoICEkQ29uZmlnSXRlbS0+eyRQYXJhbX0gKSB7CiAgICAgICAgICAgICAgICAkQWxsUmVxdWlyZWQgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkR2V0UGFyYW17RGVzY3JpcHRpb259IC8vPSAnJzsKCiAgICAgICAgIyBnZXQgbmFtZSBvbmx5IGlmIGl0IGlzIG5vdCBmaWxsZWQgYnkgYSBtb2R1bGUKICAgICAgICBpZiAoICEkTmFtZU1vZHVsZSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntOYW1lfSA9ICRHZXRQYXJhbXtOYW1lfTsKCiAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtLT57TmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkQWxsUmVxdWlyZWQgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCB2ZXJzaW9uIHN0cmluZyBvbmx5IGlmIGl0IGlzIG5vdCBmaWxsZWQgYnkgYSBtb2R1bGUKICAgICAgICBpZiAoICEkVmVyc2lvblN0cmluZ01vZHVsZSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntWZXJzaW9uU3RyaW5nfSA9ICRHZXRQYXJhbXtWZXJzaW9uU3RyaW5nfTsKCiAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtLT57VmVyc2lvblN0cmluZ30gKSB7CiAgICAgICAgICAgICAgICAkQWxsUmVxdWlyZWQgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrLCB3aGV0aGVyIHRoZSBmZWF0dXJlIHRvIGNoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIGlzIGVuYWJsZWQKICAgICAgICBpZiAoCiAgICAgICAgICAgIElzU3RyaW5nV2l0aERhdGEoICRDb25maWdJdGVtLT57TmFtZX0gKQogICAgICAgICAgICAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2hlY2tpbmcgZm9yIGR1cGxpY2F0ZSBuYW1lcyAoQ2xhc3NJRDogJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSwgIgogICAgICAgICAgICAgICAgICAgICAgICAuICJOYW1lOiAkQ29uZmlnSXRlbS0+e05hbWV9LCBDb25maWdJdGVtSUQ6ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSkiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJE5hbWVEdXBsaWNhdGVzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlVuaXF1ZU5hbWVDaGVjaygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzdG9wIHByb2Nlc3NpbmcgaWYgdGhlIG5hbWUgaXMgbm90IHVuaXF1ZQogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkTmFtZUR1cGxpY2F0ZXMpICkgewoKICAgICAgICAgICAgICAgICRBbGxSZXF1aXJlZCA9IDA7CgogICAgICAgICAgICAgICAgIyBidWlsZCBhIHN0cmluZyBvZiBhbGwgZHVwbGljYXRlIElEcwogICAgICAgICAgICAgICAgbXkgJE5hbWVEdXBsaWNhdGVzU3RyaW5nID0gam9pbiAnLCAnLCBAeyROYW1lRHVwbGljYXRlc307CgogICAgICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBuYW1lICRDb25maWdJdGVtLT57TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1JRChzKTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICROYW1lRHVwbGljYXRlc1N0cmluZywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSBjb25maWcgb3B0aW9uIGZvciB0aGUgbmFtZSByZWdleCBjaGVja3MKICAgICAgICBteSAkQ0lOYW1lUmVnZXhDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpDSU5hbWVSZWdleCIpOwoKICAgICAgICAjIGNoZWNrIGlmIHRoZSBDSSBuYW1lIGlzIGdpdmVuIGFuZCBzaG91bGQgYmUgY2hlY2tlZCB3aXRoIGEgcmVndWxhciBleHByZXNzaW9uCiAgICAgICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkQ29uZmlnSXRlbS0+e05hbWV9ICkgJiYgJENJTmFtZVJlZ2V4Q29uZmlnICkgewoKICAgICAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGUgY2xhc3MgbmFtZQogICAgICAgICAgICBteSAkQ2xhc3NOYW1lID0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9IH0gfHwgJyc7CgogICAgICAgICAgICAjIGdldCB0aGUgcmVnZXggZm9yIHRoaXMgY2xhc3MKICAgICAgICAgICAgbXkgJENJTmFtZVJlZ2V4ID0gJENJTmFtZVJlZ2V4Q29uZmlnLT57ICRDbGFzc05hbWUgLiAnOjonIC4gJ0NJTmFtZVJlZ2V4JyB9IHx8ICcnOwoKICAgICAgICAgICAgIyBpZiBhIHJlZ2V4IGlzIGRlZmluZWQgYW5kIHRoZSBDSSBuYW1lIGRvZXMgbm90IG1hdGNoIHRoZSByZWd1bGFyIGV4cHJlc3Npb24KICAgICAgICAgICAgaWYgKCAkQ0lOYW1lUmVnZXggJiYgJENvbmZpZ0l0ZW0tPntOYW1lfSAhfiBteyAkQ0lOYW1lUmVnZXggfXhtcyApIHsKCiAgICAgICAgICAgICAgICAkQWxsUmVxdWlyZWQgPSAwOwoKICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBlcnJvciBtZXNzYWdlIGZvciB0aGlzIGNsYXNzCiAgICAgICAgICAgICAgICAkQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UgPSAkQ0lOYW1lUmVnZXhDb25maWctPnsgJENsYXNzTmFtZSAuICc6OicgLiAnQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UnIH0gfHwgJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdHJhbnNmb3JtIGR5bmFtaWMgZmllbGQgZGF0YSBpbnRvIERGTmFtZSA9PiBERk5hbWUgcGFpcgogICAgICAgIG15ICVEeW5hbWljRmllbGRBY2wgPSBtYXAgeyAkXy0+e05hbWV9ID0+ICRfLT57TmFtZX0gfSAkRHluYW1pY0ZpZWxkTGlzdC0+QCo7CgogICAgICAgICMgY2FsbCB0aWNrZXQgQUNMcyBmb3IgRHluYW1pY0ZpZWxkcyB0byBjaGVjayBmaWVsZCB2aXNpYmlsaXR5CiAgICAgICAgbXkgJEFDTFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsKAogICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdGb3JtJywKICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnLScsCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRBY2wsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgaWYgKCRBQ0xSZXN1bHQpIHsKICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFZpc2liaWxpdHkgPSBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXy0+e05hbWV9ID0+IDAgfSAkRHluYW1pY0ZpZWxkTGlzdC0+QCo7CiAgICAgICAgICAgIG15ICVBY2xEYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2xEYXRhKCk7CiAgICAgICAgICAgIGZvciBteSAkRmllbGQgKCBzb3J0IGtleXMgJUFjbERhdGEgKSB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkVmlzaWJpbGl0eXsgJ0R5bmFtaWNGaWVsZF8nIC4gJEZpZWxkIH0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAlRHluYW1pY0ZpZWxkVmlzaWJpbGl0eSA9IG1hcCB7ICdEeW5hbWljRmllbGRfJyAuICRfLT57TmFtZX0gPT4gMSB9ICREeW5hbWljRmllbGRMaXN0LT5AKjsKICAgICAgICB9CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoICREeW5hbWljRmllbGRMaXN0LT5AKiApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzRmlsdGVyOwoKICAgICAgICAgICAgaWYgKCAkQUNMUmVkdWNpYmxlRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgUG9zc2libGVWYWx1ZXMKICAgICAgICAgICAgICAgIG15ICRQb3NzaWJsZVZhbHVlcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBmaWVsZCBoYXMgUG9zc2libGVWYWx1ZXMgcHJvcGVydHkgaW4gaXRzIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFBvc3NpYmxlVmFsdWVzKSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IHBvc3NpYmxlIHZhbHVlcyBrZXkgPT4gdmFsdWUgdG8ga2V5ID0+IGtleSBmb3IgQUNMcyB1c2luZyBhIEhhc2ggc2xpY2UKICAgICAgICAgICAgICAgICAgICBteSAlQWNsRGF0YSA9ICV7JFBvc3NpYmxlVmFsdWVzfTsKICAgICAgICAgICAgICAgICAgICBAQWNsRGF0YXsga2V5cyAlQWNsRGF0YSB9ID0ga2V5cyAlQWNsRGF0YTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgcG9zc2libGUgdmFsdWVzIGZpbHRlciBmcm9tIEFDTHMKICAgICAgICAgICAgICAgICAgICBteSAkQUNMID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVBY2xEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICVGaWx0ZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFjbERhdGEoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBGaWx0ZXIga2V5ID0+IGtleSBiYWNrIHRvIGtleSA9PiB2YWx1ZSB1c2luZyBtYXAKICAgICAgICAgICAgICAgICAgICAgICAgJXskUG9zc2libGVWYWx1ZXNGaWx0ZXJ9ID0gbWFwIHsgJF8gPT4gJFBvc3NpYmxlVmFsdWVzLT57JF99IH0ga2V5cyAlRmlsdGVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZFBvc3NpYmxlVmFsdWVzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRQb3NzaWJsZVZhbHVlc0ZpbHRlcjsKCiAgICAgICAgICAgICMgcGVyZm9ybSB2YWxpZGF0aW9uCiAgICAgICAgICAgIG15ICRWYWxpZGF0aW9uUmVzdWx0ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkVkaXRGaWVsZFZhbHVlVmFsaWRhdGUoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBvc3NpYmxlVmFsdWVzRmlsdGVyLAogICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgR2V0UGFyYW0gICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFZhbGlkYXRpb25SZXN1bHQpICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCJDb3VsZCBub3QgcGVyZm9ybSB2YWxpZGF0aW9uIG9uIGZpZWxkICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0hIiksCiAgICAgICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwcm9wYWdhdGUgdmFsaWRhdGlvbiBlcnJvciB0byB0aGUgRXJyb3IgdmFyaWFibGUgdG8gYmUgZGV0ZWN0ZWQgYnkgdGhlIGZyb250ZW5kCiAgICAgICAgICAgIGlmICggJFZhbGlkYXRpb25SZXN1bHQtPntTZXJ2ZXJFcnJvcn0gKSB7CiAgICAgICAgICAgICAgICAkRXJyb3J7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ICAgICAgICAgICAgICAgICAgICAgICAgPSAnIFNlcnZlckVycm9yJzsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRWYWxpZGF0aW9uUmVzdWx0eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRWYWxpZGF0aW9uUmVzdWx0OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkQWxsUmVxdWlyZWQgPSAlRXJyb3IgPyAwIDogMTsKCiAgICAgICAgIyBzYXZlIHZlcnNpb24gdG8gZGF0YWJhc2UKICAgICAgICBpZiAoJEFsbFJlcXVpcmVkKSB7CgogICAgICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgZnJvbSB1cGxvYWQgY2FjaGUKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc0RhdGEoCiAgICAgICAgICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBidWlsZCBhIGxvb2t1cCBsb29rdXAgaGFzaCBvZiB0aGUgbmV3IGF0dGFjaG1lbnRzCiAgICAgICAgICAgIG15ICVOZXdBdHRhY2htZW50OwogICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50cykgewoKICAgICAgICAgICAgICAgIG15ICRDb250ZW50SUQgPSAkQXR0YWNobWVudC0+e0NvbnRlbnRJRH07CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvbnRlbnRJRAogICAgICAgICAgICAgICAgICAgICYmICggJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0gPX4gL2ltYWdlL2kgKQogICAgICAgICAgICAgICAgICAgICYmICggJEF0dGFjaG1lbnQtPntEaXNwb3NpdGlvbn0gZXEgJ2lubGluZScgKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ29udGVudElESFRNTFF1b3RlID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCA9PiAkQ29udGVudElELAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgd29ya2Fyb3VuZCBmb3IgbGluayBlbmNvZGUgb2YgcmljaCB0ZXh0IGVkaXRvciwgc2VlIGJ1ZyM1MDUzCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbnRlbnRJRExpbmtFbmNvZGUgPSAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCRDb250ZW50SUQpOwogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtEZXNjcmlwdGlvbn0gPX4gcy8oQ29udGVudElEPSkkQ29udGVudElETGlua0VuY29kZS8kMSRDb250ZW50SUQvZzsKCiAgICAgICAgICAgICAgICAgICAgIyBpZ25vcmUgYXR0YWNobWVudCBpZiBub3QgbGlua2VkIGluIGJvZHkKICAgICAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgJEdldFBhcmFte0Rlc2NyaXB0aW9ufSAhfiAvKFxRJENvbnRlbnRJREhUTUxRdW90ZVxFfFxRJENvbnRlbnRJRFxFKS9pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdGhlIGtleSBpcyB0aGUgZmlsZW5hbWUgKyBmaWxlc2l6ZSArIGNvbnRlbnQgdHlwZQogICAgICAgICAgICAgICAgbXkgJEtleSA9ICRBdHRhY2htZW50LT57RmlsZW5hbWV9CiAgICAgICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudC0+e0ZpbGVzaXplfQogICAgICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX07CgogICAgICAgICAgICAgICAgIyBzdG9yZSBhbGwgb2YgdGhlIG5ldyBhdHRhY2htZW50IGRhdGEKICAgICAgICAgICAgICAgICROZXdBdHRhY2htZW50eyRLZXl9ID0gJEF0dGFjaG1lbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdmVyaWZ5IGh0bWwgZG9jdW1lbnQKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntEZXNjcmlwdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dERvY3VtZW50Q29tcGxldGUoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEdldFBhcmFte0Rlc2NyaXB0aW9ufSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZm9yIGV4aXN0aW5nIENvbmZpZ0l0ZW1zIGNvbXBhcmUgd2l0aCB0aGUgY3VycmVudCBkYXRhCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IG5lICdORVcnICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGF0dGFjaG1lbnRzIG1ldGEgZGF0YQogICAgICAgICAgICAgICAgbXkgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnRzCiAgICAgICAgICAgICAgICBGSUxFTkFNRToKICAgICAgICAgICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBleGlzdGluZyBhdHRhY2htZW50IGRhdGEKICAgICAgICAgICAgICAgICAgICBteSAkQXR0YWNobWVudERhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyB0aGUga2V5IGlzIHRoZSBmaWxlbmFtZSArIGZpbGVzaXplICsgY29udGVudCB0eXBlCiAgICAgICAgICAgICAgICAgICAgIyAobm8gY29udGVudCBpZCwgYXMgZXhpc3RpbmcgYXR0YWNobWVudHMgZG9uJ3QgaGF2ZSBpdCkKICAgICAgICAgICAgICAgICAgICBteSAkS2V5ID0gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnREYXRhLT57RmlsZXNpemV9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnREYXRhLT57Q29udGVudFR5cGV9OwoKICAgICAgICAgICAgICAgICAgICAjIGF0dGFjaG1lbnQgaXMgYWxyZWFkeSBleGlzdGluZywgd2UgY2FuIGRlbGV0ZSBpdCBmcm9tIHRoZSBuZXcgYXR0YWNobWVudCBoYXNoCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkTmV3QXR0YWNobWVudHskS2V5fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlICROZXdBdHRhY2htZW50eyRLZXl9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBleGlzdGluZyBhdHRhY2htZW50IGlzIG5vIGxvbmdlciBpbiBuZXcgYXR0YWNobWVudHMgaGFzaAogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBkZWxldGUgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJERlbGV0ZVN1Y2Nlc3NmdWwgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISREZWxldGVTdWNjZXNzZnVsICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdldCB2ZXJzaW9uIGF0dGFjaG1lbnRzIG1ldGEgZGF0YQogICAgICAgICAgICAgICAgbXkgQEV4aXN0aW5nVmVyc2lvbkF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHRoZSBleGlzdGluZyBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgRklMRU5BTUU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChARXhpc3RpbmdWZXJzaW9uQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgdGhlIGV4aXN0aW5nIGF0dGFjaG1lbnQgZGF0YQogICAgICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHRoZSBrZXkgaXMgdGhlIGZpbGVuYW1lICsgZmlsZXNpemUgKyBjb250ZW50IHR5cGUKICAgICAgICAgICAgICAgICAgICAjIChubyBjb250ZW50IGlkLCBhcyBleGlzdGluZyBhdHRhY2htZW50cyBkb24ndCBoYXZlIGl0KQogICAgICAgICAgICAgICAgICAgIG15ICRLZXkgPSAkQXR0YWNobWVudERhdGEtPntGaWxlbmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudERhdGEtPntGaWxlc2l6ZX0KICAgICAgICAgICAgICAgICAgICAgICAgLiAkQXR0YWNobWVudERhdGEtPntDb250ZW50VHlwZX07CgogICAgICAgICAgICAgICAgICAgICMgYXR0YWNobWVudCBpcyBhbHJlYWR5IGV4aXN0aW5nLCB3ZSBjYW4gZGVsZXRlIGl0IGZyb20gdGhlIG5ldyBhdHRhY2htZW50IGhhc2gKICAgICAgICAgICAgICAgICAgICBpZiAoICROZXdBdHRhY2htZW50eyRLZXl9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJE5ld0F0dGFjaG1lbnR7JEtleX07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGV4aXN0aW5nIGF0dGFjaG1lbnQgaXMgbm8gbG9uZ2VyIGluIG5ldyBhdHRhY2htZW50cyBoYXNoCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGRlbGV0ZSB0aGUgZXhpc3RpbmcgYXR0YWNobWVudAogICAgICAgICAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2Vzc2Z1bCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJERlbGV0ZVN1Y2Nlc3NmdWwgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFRPRE86IGJldHRlciBhbGlnbiB3aXRoIHRoZSBpbml0aWFsIEVkaXRGaWVsZFZhbHVlR2V0PwogICAgICAgICAgICAjIFRPRE86IFZpc2liaWxpdHkKICAgICAgICAgICAgIyBwcmVwYXJlIGR5bmFtaWMgZmllbGQgdmFsdWVzCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGQgKCAkRHluYW1pY0ZpZWxkTGlzdC0+QCogKSB7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZCk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkLT57UmVhZG9ubHl9OwoKICAgICAgICAgICAgICAgICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZFZhbHVlc3sgJER5bmFtaWNGaWVsZC0+e05hbWV9IH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IGVxICdORVcnICkgewoKICAgICAgICAgICAgICAgICMgZGVsZXRlIHRlbXBvcmFyeSBudW1iZXIgIyBUT0RPOiBjaGVjaywgd2hldGhlciBzZXR0aW5nIG5ldyBhcyBudW1iZXIgaXMgbmVjZXNzYXJ5IGluIHRoZSBmaXJzdCBwbGFjZQogICAgICAgICAgICAgICAgZGVsZXRlICRDb25maWdJdGVtLT57TnVtYmVyfTsKCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+JSosCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKCiAgICAgICAgICAgICAgICAgICAgIyBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LCAjIFRPRE86IHRoaXMgaXMgbm90IHVzZWQgeWV0CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+JSosCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGZldGNoIHVwZGF0ZWQgY29uZmlnIGl0ZW0gZGF0YSB0byBzZWN1cmUgdmVyc2lvbiBpZCBiZWluZyBwcmVzZW50CiAgICAgICAgICAgIG15ICROZXdDb25maWdJdGVtRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHdyaXRlIHRoZSBuZXcgYXR0YWNobWVudHMKICAgICAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50ICggdmFsdWVzICVOZXdBdHRhY2htZW50ICkgewoKICAgICAgICAgICAgICAgICMgYWRkIGF0dGFjaG1lbnQKICAgICAgICAgICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntEaXNwb3NpdGlvbn0gJiYgJEF0dGFjaG1lbnQtPntEaXNwb3NpdGlvbn0gZXEgJ2lubGluZScgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnRBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEF0dGFjaG1lbnR9LAogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJE5ld0NvbmZpZ0l0ZW1EYXRhLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGFsc28gd3JpdGUgYXR0YWNobWVudHMgdG8gbGFzdCB2ZXJzaW9uIGlmIGl0IGRpZmZlcnMgYmVjYXVzZSB3ZSBkZWxldGVkIHRoZW0gcHJldmlvdXNseQogICAgICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9ICYmICRDb25maWdJdGVtLT57VmVyc2lvbklEfSAhPSAkTmV3Q29uZmlnSXRlbURhdGEtPntWZXJzaW9uSUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICV7JEF0dGFjaG1lbnR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgICAgICAgICAleyRBdHRhY2htZW50fSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJlbW92ZSBhbGwgZm9ybSBkYXRhCiAgICAgICAgICAgICRGb3JtQ2FjaGVPYmplY3QtPkZvcm1JRFJlbW92ZSggRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSApOwoKICAgICAgICAgICAgIyByZWRpcmVjdCB0byB6b29tIG1hc2sKICAgICAgICAgICAgbXkgJFNjcmVlblR5cGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2NyZWVuVHlwZScgKSB8fCAwOwogICAgICAgICAgICBpZiAoJFNjcmVlblR5cGUpIHsKCiAgICAgICAgICAgICAgICBteSAkVVJMID0gIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IjsKCiAgICAgICAgICAgICAgICAjIHJldHVybiB0byBvdmVydmlldyBvciBzZWFyY2ggcmVzdWx0cyBpbnN0ZWFkIGlmIGNhbGxlZCBEdXBsaWNhdGUgZnJvbSByb3cgYWN0aW9uCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTZXNzaW9ufXtMYXN0U2NyZWVuVmlld30gZXEgJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtJwogICAgICAgICAgICAgICAgICAgIHx8ICRTZWxmLT57U2Vzc2lvbn17TGFzdFNjcmVlblZpZXd9ID1+IG17XEEgQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW0oPzogU2VhcmNoKT87fW1zeAogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkVVJMID0gJFNlbGYtPntTZXNzaW9ufXtMYXN0U2NyZWVuVmlld307CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlBvcHVwQ2xvc2UoCiAgICAgICAgICAgICAgICAgICAgVVJMID0+ICRVUkwsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgICAgIE9QID0+ICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FKQVhVcGRhdGUnICkgewogICAgICAgIG15ICRFbGVtZW50Q2hhbmdlZCAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRWxlbWVudENoYW5nZWQnICkgfHwgJyc7CiAgICAgICAgbXkgJUNoYW5nZWRFbGVtZW50cyA9ICRFbGVtZW50Q2hhbmdlZCA/ICggJEVsZW1lbnRDaGFuZ2VkID0+IDEgKSA6ICgpOwogICAgICAgIG15ICRMb29wUHJvdGVjdGlvbiAgPSAxMDA7CgogICAgICAgICMgZ2V0IHZhbHVlcyBhbmQgdmlzaWJpbGl0eSBvZiBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVEeW5GaWVsZFN0YXRlcyA9ICRGaWVsZFJlc3RyaWN0aW9uc09iamVjdC0+R2V0RmllbGRTdGF0ZXMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1PYmplY3QgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1PYmplY3QsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgICAgICAgICAgICAgPT4gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LAogICAgICAgICAgICBEeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0+ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LAogICAgICAgICAgICBDaGFuZ2VkRWxlbWVudHMgICAgICAgICAgID0+IFwlQ2hhbmdlZEVsZW1lbnRzLCAgICAgICAgICAgICAgICAjIG9wdGlvbmFsIHRvIHJlZHVjZSBBQ0wgZXZhbHVhdGlvbgogICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICBGb3JtSUQgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgR2V0UGFyYW0gICAgICAgICAgICAgICAgICA9PiB7JUdldFBhcmFtfSwKICAgICAgICAgICAgQXV0b3NlbGVjdCAgICAgICAgICAgICAgICA9PiAkQXV0b3NlbGVjdCwKICAgICAgICAgICAgQUNMUHJlc2VsZWN0aW9uICAgICAgICAgICA9PiAkQUNMUHJlc2VsZWN0aW9uLAogICAgICAgICAgICBMb29wUHJvdGVjdGlvbiAgICAgICAgICAgID0+IFwkTG9vcFByb3RlY3Rpb24sCiAgICAgICAgKTsKCiAgICAgICAgIyBzdG9yZSBuZXcgdmFsdWVzCiAgICAgICAgJEdldFBhcmFte0R5bmFtaWNGaWVsZH0gPSB7CiAgICAgICAgICAgICV7ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9IH0sCiAgICAgICAgICAgICV7ICREeW5GaWVsZFN0YXRlc3tOZXdWYWx1ZXN9IH0sCiAgICAgICAgfTsKCiAgICAgICAgIyB1cGRhdGUgRHluYW1pYyBGaWVsZHMgUG9zc2libGUgVmFsdWVzIHZpYSBBSkFYCiAgICAgICAgbXkgQER5bmFtaWNGaWVsZEFKQVg7CgogICAgICAgICMgY3ljbGUgdGhyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJE5hbWUgKCBrZXlzICV7ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9IH0gKSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JE5hbWV9OwoKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSAmJiByZWYgJEdldFBhcmFte0R5bmFtaWNGaWVsZH17IkR5bmFtaWNGaWVsZF8kTmFtZSJ9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJGkgKCAwIC4uICQjeyAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyROYW1lIn0gfSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtOb3RBQ0xSZWR1Y2libGV9CiAgICAgICAgICAgICAgICAgICAgICAgID8gKCAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyROYW1lIn1bJGldIC8vICcnICkKICAgICAgICAgICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiBbICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJE5hbWUifVskaV0gXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtQb3NzaWJsZVZhbHVlc30KICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCB0byB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdXBkYXRlCiAgICAgICAgICAgICAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkQUpBWCwgewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAkTmFtZSAuICdfJyAuICRpLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkRGF0YVZhbHVlcywKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEdldFBhcmFte0R5bmFtaWNGaWVsZH17IkR5bmFtaWNGaWVsZF8kTmFtZSJ9WyRpXSwKICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYWRkIHRlbXBsYXRlIHZhbHVlIGZvciBrZWVwaW5nIHRlbXBsYXRlcyBpbiBsaW5lIHdpdGggQUNMcwogICAgICAgICAgICAgICAgaWYgKCAhJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e05vdEFDTFJlZHVjaWJsZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJERhdGFWYWx1ZXMgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+IFsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfSAvLyAnJyBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e1Bvc3NpYmxlVmFsdWVzfQogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGR5bmFtaWMgZmllbGQgdG8gdGhlIGxpc3Qgb2YgZmllbGRzIHRvIHVwZGF0ZQogICAgICAgICAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19UZW1wbGF0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtEZWZhdWx0VmFsdWV9IC8vICcnLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtOb3RBQ0xSZWR1Y2libGV9CiAgICAgICAgICAgICAgICA/ICggJEdldFBhcmFte0R5bmFtaWNGaWVsZH17IkR5bmFtaWNGaWVsZF8kTmFtZSJ9IC8vICcnICkKICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyROYW1lIn0sCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHx8ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtQb3NzaWJsZVZhbHVlc30KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkQUpBWCwgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkRGF0YVZhbHVlcywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJE5hbWUifSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57VHJhbnNsYXRhYmxlVmFsdWVzfSB8fCAwLAogICAgICAgICAgICAgICAgTWF4ICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICRTZXRGaWVsZCAoIHZhbHVlcyAkRHluRmllbGRTdGF0ZXN7U2V0c30tPiUqICkgewogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFNldEZpZWxkLT57RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICAgICAgICAgICMgdGhlIGZyb250ZW5kIG5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIGlubmVyIGZpZWxkIGluY2x1ZGluZyBpdHMgaW5kZXggb3IgdGhlICdfVGVtcGxhdGUnIHN1ZmZpeAogICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgIGZvciBteSAkRnJvbnRlbmROYW1lICgga2V5cyAkU2V0RmllbGQtPntGaWVsZFN0YXRlc30tPiUqICkgewoKICAgICAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317TXVsdGlWYWx1ZX0gJiYgcmVmICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJGkgKCAwIC4uICQjeyAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e05vdEFDTFJlZHVjaWJsZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKCAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9WyRpXSAvLyAnJyApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gWyAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9WyRpXSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCB0byB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdXBkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdEeW5hbWljRmllbGRfJyAuICRGcm9udGVuZE5hbWUgLiAiXyRpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFNldEZpZWxkLT57VmFsdWVzfXskRnJvbnRlbmROYW1lfVskaV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e1RyYW5zbGF0YWJsZVZhbHVlc30gfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgYWRkIHRlbXBsYXRlIHZhbHVlIGZvciBrZWVwaW5nIHRlbXBsYXRlcyBpbiBsaW5lIHdpdGggQUNMcwogICAgICAgICAgICAgICAgICAgIGlmICggISRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtOb3RBQ0xSZWR1Y2libGV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+IFsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfSAvLyAnJyBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9CiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkQUpBWCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19UZW1wbGF0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkRGF0YVZhbHVlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0RlZmF1bHRWYWx1ZX0gLy8gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXggICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtOb3RBQ0xSZWR1Y2libGV9CiAgICAgICAgICAgICAgICAgICAgPyAoICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX0gLy8gJycgKQogICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICAgICA9PiAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgfHwgJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e1Bvc3NpYmxlVmFsdWVzfQogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCB0byB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdXBkYXRlCiAgICAgICAgICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRBSkFYLCB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJEZyb250ZW5kTmFtZSwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkRGF0YVZhbHVlcywKICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9LAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57VHJhbnNsYXRhYmxlVmFsdWVzfSB8fCAwLAogICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICREeW5GaWVsZFN0YXRlc3tWaXNpYmlsaXR5fSApICkgewogICAgICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRBSkFYLCB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdSZXN0cmljdGlvbnNfVmlzaWJpbGl0eScsCiAgICAgICAgICAgICAgICBEYXRhID0+ICREeW5GaWVsZFN0YXRlc3tWaXNpYmlsaXR5fSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIG15ICRKU09OID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb25KU09OKAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICBARHluYW1pY0ZpZWxkQUpBWCwKICAgICAgICAgICAgXSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEpTT04sCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgbXkgJExvb3BQcm90ZWN0aW9uID0gMTAwOwoKICAgICAgICAjIGdldCB2YWx1ZXMgYW5kIHZpc2liaWxpdHkgb2YgZHluYW1pYyBmaWVsZHMKICAgICAgICBteSAlRHluRmllbGRTdGF0ZXMgPSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPkdldEZpZWxkU3RhdGVzKAogICAgICAgICAgICBDb25maWdJdGVtT2JqZWN0ICAgICAgICAgID0+ICRDb25maWdJdGVtT2JqZWN0LAogICAgICAgICAgICBEeW5hbWljRmllbGRzICAgICAgICAgICAgID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9PiAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCwKICAgICAgICAgICAgQWN0aW9uICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgIEdldFBhcmFtICAgICAgICAgICAgICAgICAgPT4geyVHZXRQYXJhbX0sCiAgICAgICAgICAgIEF1dG9zZWxlY3QgICAgICAgICAgICAgICAgPT4gJEF1dG9zZWxlY3QsCiAgICAgICAgICAgIEFDTFByZXNlbGVjdGlvbiAgICAgICAgICAgPT4gJEFDTFByZXNlbGVjdGlvbiwKICAgICAgICAgICAgTG9vcFByb3RlY3Rpb24gICAgICAgICAgICA9PiBcJExvb3BQcm90ZWN0aW9uLAogICAgICAgICk7CgogICAgICAgICMgc3RvcmUgbmV3IHZhbHVlcwogICAgICAgICRHZXRQYXJhbXtEeW5hbWljRmllbGR9ID0gewogICAgICAgICAgICAleyAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfSB9LAogICAgICAgICAgICAleyAkRHluRmllbGRTdGF0ZXN7TmV3VmFsdWVzfSB9LAogICAgICAgIH07CgogICAgICAgICVEeW5hbWljRmllbGRWaXNpYmlsaXR5ICAgICA9ICREeW5GaWVsZFN0YXRlc3tWaXNpYmlsaXR5fS0+JSo7CiAgICAgICAgJUR5bmFtaWNGaWVsZFBvc3NpYmxlVmFsdWVzID0gbWFwIHsgJ0R5bmFtaWNGaWVsZF8nIC4gJF8gPT4gJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JF99e1Bvc3NpYmxlVmFsdWVzfSB9IGtleXMgJER5bkZpZWxkU3RhdGVze0ZpZWxkc30tPiUqOwogICAgfQoKICAgIG15ICROYW1lRWRpdGFibGUgICA9ICROYW1lTW9kdWxlID8gMCA6IDE7CiAgICBteSAkUm93TmFtZUludmFsaWQgPSAkQ29uZmlnSXRlbS0+e05hbWV9CgogICAgICAgICMgSWYgYSBuYW1lIGV4aXN0cyB0aGVuIG1hcmsgcmVnZXggYW5kIGR1cGxpY2F0ZSBlcnJvcnMuCiAgICAgICAgPyAoICggJENJTmFtZVJlZ2V4RXJyb3JNZXNzYWdlIHx8IElzQXJyYXlSZWZXaXRoRGF0YSgkTmFtZUR1cGxpY2F0ZXMpICkgPyAnU2VydmVyRXJyb3InIDogdW5kZWYgKQoKICAgICAgICAjIElmIHRoZSBuYW1lIGRvZXMgbm90IGV4aXN0IGJ1dCBzaG91bGQgZXhpc3QgdGhlbiBtYXJrIGl0LgogICAgICAgIDogKCAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2F2ZScgJiYgJE5hbWVFZGl0YWJsZSApID8gJ1NlcnZlckVycm9yJyA6IHVuZGVmICk7CgogICAgIyBvdXRwdXQgbmFtZSBibG9jawogICAgaWYgKCAkQ29uZmlnSXRlbS0+e05hbWV9IHx8ICROYW1lRWRpdGFibGUgKSB7CgogICAgICAgICMgb3V0cHV0IG5hbWUgYmxvY2sKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm93TmFtZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgUm93TmFtZUludmFsaWQgPT4gJFJvd05hbWVJbnZhbGlkLAogICAgICAgICAgICAgICAgUmVhZG9ubHkgICAgICAgPT4gISROYW1lRWRpdGFibGUsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgc3BlY2lmaWMgZXJyb3JzCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkTmFtZUR1cGxpY2F0ZXMpICkgewoKICAgICAgICAjIGJ1aWxkIGFycmF5IHdpdGggQ0ktTnVtYmVycwogICAgICAgIG15IEBOYW1lRHVwbGljYXRlc0J5Q0lOdW1iZXI7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyROYW1lRHVwbGljYXRlc30gKSB7CgogICAgICAgICAgICAjIGxvb2t1cCB0aGUgQ0kgbnVtYmVyCiAgICAgICAgICAgIG15ICRDSU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBOYW1lRHVwbGljYXRlc0J5Q0lOdW1iZXIsICRDSU51bWJlcjsKICAgICAgICB9CgogICAgICAgIG15ICREdXBsaWNhdGVTdHJpbmcgPSBqb2luICcsICcsIEBOYW1lRHVwbGljYXRlc0J5Q0lOdW1iZXI7CgogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJSZW5kZXJpbmcgYmxvY2sgZm9yIGR1cGxpY2F0ZXMgKENJLU51bWJlcnM6ICREdXBsaWNhdGVTdHJpbmcpIGVycm9yIG1lc3NhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Jvd05hbWVFcnJvckR1cGxpY2F0ZXMnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIER1cGxpY2F0ZXMgPT4gJER1cGxpY2F0ZVN0cmluZywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCRDSU5hbWVSZWdleEVycm9yTWVzc2FnZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3dOYW1lRXJyb3JSZWdFeCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgUmVnRXhFcnJvck1lc3NhZ2UgPT4gJENJTmFtZVJlZ2V4RXJyb3JNZXNzYWdlLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoJFJvd05hbWVJbnZhbGlkKSB7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT57RGVidWd9ID4gMCApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJSZW5kZXJpbmcgZGVmYXVsdCBlcnJvciBibG9jayIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm93TmFtZUVycm9yRGVmYXVsdCcsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkVmVyc2lvblN0cmluZ0VkaXRhYmxlICAgPSAkVmVyc2lvblN0cmluZ01vZHVsZSA/IDAgOiAxOwogICAgbXkgJFZlcnNpb25TdHJpbmdEdXBsaWNhdGVzID0gW107CiAgICBteSAkUm93VmVyc2lvblN0cmluZ0ludmFsaWQgPSAkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9CgogICAgICAgICMgSWYgYSB2ZXJzaW9uIHN0cmluZyBleGlzdHMgdGhlbiBtYXJrIGR1cGxpY2F0ZSBlcnJvcnMuCiAgICAgICAgPyAoIElzQXJyYXlSZWZXaXRoRGF0YSgkVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXMpID8gJ1NlcnZlckVycm9yJyA6IHVuZGVmICkKCiAgICAgICAgIyBJZiB0aGUgdmVyc2lvbiBzdHJpbmcgZG9lcyBub3QgZXhpc3QgYnV0IHNob3VsZCBleGlzdCB0aGVuIG1hcmsgaXQuCiAgICAgICAgOiAoICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTYXZlJyAmJiAkVmVyc2lvblN0cmluZ0VkaXRhYmxlICkgPyAnU2VydmVyRXJyb3InIDogdW5kZWYgKTsKCiAgICAjIG91dHB1dCB2ZXJzaW9uIHN0cmluZyBibG9jawogICAgaWYgKCRWZXJzaW9uU3RyaW5nRWRpdGFibGUpIHsKCiAgICAgICAgIyBvdXRwdXQgdmVyc2lvbiBzdHJpbmcgYmxvY2sKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm93VmVyc2lvblN0cmluZycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgUm93VmVyc2lvblN0cmluZ0ludmFsaWQgPT4gJFJvd1ZlcnNpb25TdHJpbmdJbnZhbGlkLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzaG93IHNwZWNpZmljIGVycm9ycwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFZlcnNpb25TdHJpbmdEdXBsaWNhdGVzKSApIHsKCiAgICAgICAgIyBidWlsZCBhcnJheSB3aXRoIENJLU51bWJlcnMKICAgICAgICBteSBAVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXNCeUNJTnVtYmVyOwogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXN9ICkgewoKICAgICAgICAgICAgIyBsb29rdXAgdGhlIENJIG51bWJlcgogICAgICAgICAgICBteSAkQ0lOdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBAVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXNCeUNJTnVtYmVyLCAkQ0lOdW1iZXI7CiAgICAgICAgfQoKICAgICAgICBteSAkRHVwbGljYXRlU3RyaW5nID0gam9pbiAnLCAnLCBAVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXNCeUNJTnVtYmVyOwoKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPntEZWJ1Z30gPiAwICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiUmVuZGVyaW5nIGJsb2NrIGZvciBkdXBsaWNhdGVzIChDSS1OdW1iZXJzOiAkRHVwbGljYXRlU3RyaW5nKSBlcnJvciBtZXNzYWdlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3dWZXJzaW9uU3RyaW5nRXJyb3JEdXBsaWNhdGVzJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBEdXBsaWNhdGVzID0+ICREdXBsaWNhdGVTdHJpbmcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICgkUm93VmVyc2lvblN0cmluZ0ludmFsaWQpIHsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPntEZWJ1Z30gPiAwICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlJlbmRlcmluZyBkZWZhdWx0IGVycm9yIGJsb2NrIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3dWZXJzaW9uU3RyaW5nRXJyb3JEZWZhdWx0JywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdAogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgKTsKCiAgICAjIG91dHB1dCBkZXBsb3ltZW50IHN0YXRlIGludmFsaWQgYmxvY2sKICAgIG15ICRSb3dEZXBsU3RhdGVJbnZhbGlkID0gJyc7CiAgICBpZiAoICEkQ29uZmlnSXRlbS0+e0RlcGxTdGF0ZUlEfSAmJiAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NhdmUnICkgewogICAgICAgICRSb3dEZXBsU3RhdGVJbnZhbGlkID0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBEZXBsU3RhdGVPcHRpb25TdHJnCiAgICBteSAkRGVwbFN0YXRlT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0RlcGxTdGF0ZUlEJywKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ0Zvcm1VcGRhdGUgVmFsaWRhdGVfUmVxdWlyZWQgTW9kZXJuaXplJyAuICRSb3dEZXBsU3RhdGVJbnZhbGlkLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkR2V0UGFyYW17RGVwbFN0YXRlSUR9LAogICAgKTsKCiAgICAjIG91dHB1dCBkZXBsb3ltZW50IHN0YXRlIGJsb2NrCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdSb3dEZXBsU3RhdGUnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBEZXBsU3RhdGVPcHRpb25TdHJnID0+ICREZXBsU3RhdGVPcHRpb25TdHJnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyAgICAgICA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+IFsgJ29wZXJhdGlvbmFsJywgJ2luY2lkZW50JyBdLAogICAgICAgIH0sCiAgICApOwoKICAgICMgb3V0cHV0IGluY2lkZW50IHN0YXRlIGludmFsaWQgYmxvY2sKICAgIG15ICRSb3dJbmNpU3RhdGVJbnZhbGlkID0gJyc7CiAgICBpZiAoICEkQ29uZmlnSXRlbS0+e0luY2lTdGF0ZUlEfSAmJiAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NhdmUnICkgewogICAgICAgICRSb3dJbmNpU3RhdGVJbnZhbGlkID0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBJbmNpU3RhdGVPcHRpb25TdHJnCiAgICBteSAkSW5jaVN0YXRlT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0luY2lTdGF0ZUlEJywKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ0Zvcm1VcGRhdGUgVmFsaWRhdGVfUmVxdWlyZWQgTW9kZXJuaXplJyAuICRSb3dJbmNpU3RhdGVJbnZhbGlkLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkR2V0UGFyYW17SW5jaVN0YXRlSUR9LAogICAgKTsKCiAgICAjIG91dHB1dCBpbmNpZGVudCBzdGF0ZSBibG9jawogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnUm93SW5jaVN0YXRlJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgSW5jaVN0YXRlT3B0aW9uU3RyZyA9PiAkSW5jaVN0YXRlT3B0aW9uU3RyZywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdlbmVyYXRlIGJhc2UgdXJsCiAgICBteSAkVVJMID0gIkFjdGlvbj1QaWN0dXJlVXBsb2FkO0Zvcm1JRD0kU2VsZi0+e0Zvcm1JRH07Q29udGVudElEPSI7CgogICAgIyByZXBsYWNlIGxpbmtzIHRvIGlubGluZSBpbWFnZXMgaW4gaHRtbCBjb250ZW50CiAgICBteSBASW5saW5lQXR0YWNobWVudExpc3Q7CiAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSBuZSAnTkVXJyApIHsKICAgICAgICBASW5saW5lQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICBWZXJzaW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBmZXRjaCBhdHRhY2htZW50IGRhdGEgYW5kIHN0b3JlIGluIGhhc2ggZm9yIFJpY2hUZXh0RG9jdW1lbnRTZXJ2ZQogICAgbXkgJUlubGluZUF0dGFjaG1lbnRzOwogICAgRklMRU5BTUU6CiAgICBmb3IgbXkgJEZpbGVuYW1lIChASW5saW5lQXR0YWNobWVudExpc3QpIHsKICAgICAgICBteSAkRmlsZURhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgIEZpbGVuYW1lICA9PiAkRmlsZW5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgJElubGluZUF0dGFjaG1lbnRzeyAkRmlsZURhdGEtPntQcmVmZXJlbmNlc317Q29udGVudElEfSB9ID0gJEZpbGVEYXRhOwogICAgICAgICRJbmxpbmVBdHRhY2htZW50c3sgJEZpbGVEYXRhLT57UHJlZmVyZW5jZXN9e0NvbnRlbnRJRH0gfS0+e0NvbnRlbnRJRH0gPSAkRmlsZURhdGEtPntQcmVmZXJlbmNlc317Q29udGVudElEfTsKCiAgICAgICAgIyBhZGQgdXBsb2FkZWQgZmlsZSB0byB1cGxvYWQgY2FjaGUKICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgIEZvcm1JRCAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEZpbGVEYXRhLT57RmlsZW5hbWV9LAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmlsZURhdGEtPntDb250ZW50fSwKICAgICAgICAgICAgQ29udGVudElEICAgPT4gJEZpbGVEYXRhLT57UHJlZmVyZW5jZXN9e0NvbnRlbnRJRH0sCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICRGaWxlRGF0YS0+e0NvbnRlbnRUeXBlfSwKCiAgICAgICAgICAgICMgY3VycmVudGx5LCBvbmx5IGlubGluZSBpbWFnZXMgZm9yIGRlc2NyaXB0aW9uIGFyZSBzdG9yZWQgYXQgdGhlIGNvbmZpZ2l0ZW0gdmVyc2lvbgogICAgICAgICAgICAjICAgc28gd2UgY2FuIHJlbHkgdXBvbiBkZWFsaW5nIHdpdGggaW5saW5lIGltYWdlcyBoZXJlCiAgICAgICAgICAgIERpc3Bvc2l0aW9uID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBuZWVkZWQgdG8gcHJvdmlkZSBuZWNlc3NhcnkgcGFyYW1zIGZvciBSaWNoVGV4dERvY3VtZW50U2VydmUKICAgIG15ICRGaWVsZENvbnRlbnQgPSAkQ29uZmlnSXRlbS0+e0Rlc2NyaXB0aW9ufTsKICAgIG15ICVEYXRhICAgICAgICAgPSAoCiAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCAvLyAnJywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sOyBjaGFyc2V0PSJ1dGYtOCInLAogICAgICAgIERpc3Bvc2l0aW9uID0+ICdpbmxpbmUnLAogICAgKTsKCiAgICAjIHJlZm9ybWF0IHJpY2ggdGV4dCBkb2N1bWVudCB0byBoYXZlIGNvcnJlY3QgY2hhcnNldCBhbmQgbGlua3MgdG8KICAgICMgaW5saW5lIGRvY3VtZW50cwogICAgJURhdGEgPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dERvY3VtZW50U2VydmUoCiAgICAgICAgRGF0YSAgICAgICAgICAgICAgID0+IFwlRGF0YSwKICAgICAgICBVUkwgICAgICAgICAgICAgICAgPT4gJFVSTCwKICAgICAgICBBdHRhY2htZW50cyAgICAgICAgPT4gXCVJbmxpbmVBdHRhY2htZW50cywKICAgICAgICBMb2FkRXh0ZXJuYWxJbWFnZXMgPT4gMSwKICAgICk7CgogICAgJEZpZWxkQ29udGVudCA9ICREYXRhe0NvbnRlbnR9OwoKICAgICMgcmVtb3ZlIGFjdGl2ZSBodG1sIGNvbnRlbnQgKHNjcmlwdHMsIGFwcGxldHMsIGV0Yy4uLikKICAgIG15ICRIVE1MVXRpbHNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyk7CiAgICBteSAlU2FmZUNvbnRlbnQgICAgID0gJEhUTUxVdGlsc09iamVjdC0+U2FmZXR5KAogICAgICAgIFN0cmluZyAgICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgIE5vQXBwbGV0ICAgICA9PiAxLAogICAgICAgIE5vT2JqZWN0ICAgICA9PiAxLAogICAgICAgIE5vRW1iZWQgICAgICA9PiAxLAogICAgICAgIE5vSW50U3JjTG9hZCA9PiAwLAogICAgICAgIE5vRXh0U3JjTG9hZCA9PiAwLAogICAgICAgIE5vSmF2YVNjcmlwdCA9PiAxLAogICAgKTsKCiAgICAjIHRha2UgdGhlIHNhZmUgY29udGVudCBpZiBuZWNlc3NhcnkKICAgIGlmICggJFNhZmVDb250ZW50e1JlcGxhY2V9ICkgewogICAgICAgICRGaWVsZENvbnRlbnQgPSAkU2FmZUNvbnRlbnR7U3RyaW5nfTsKICAgIH0KCiAgICAjIGRldGVjdCBhbGwgcGxhaW4gdGV4dCBsaW5rcyBhbmQgcHV0IHRoZW0gaW50byBhbiBIVE1MIDxhPiB0YWcKICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgU3RyaW5nID0+ICRGaWVsZENvbnRlbnQsCiAgICApOwoKICAgICMgc2V0IHRhcmdldD0iX2JsYW5rIiBhdHRyaWJ1dGUgdG8gYWxsIEhUTUwgPGE+IHRhZ3MKICAgICMgdGhlIExpbmtRdW90ZSBmdW5jdGlvbiBuZWVkcyB0byBiZSBjYWxsZWQgYWdhaW4KICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgU3RyaW5nICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgVGFyZ2V0QWRkID0+IDEsCiAgICApOwoKICAgICMgYWRkIG5lZWRlZCBIVE1MIGhlYWRlcnMKICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgIFN0cmluZyAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICBDaGFyc2V0ID0+ICd1dGYtOCcsCiAgICApOwoKICAgICMgZXNjYXBlIHNpbmdsZSBxdW90ZXMKICAgICRGaWVsZENvbnRlbnQgPX4gcy8nLyYjMzk7L2c7CgogICAgIyByZW5kZXIgZHluYW1pYyBmaWVsZHMKICAgIG15ICREeW5hbWljRmllbGRIVE1MOwogICAgbXkgJUdyb3VwTG9va3VwOwogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfSApICYmICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn17U2VjdGlvbnN9ICkgewoKICAgICAgICAjIFRPRE86IGxvb2sgd2hhdCB0aGlzIHdhcy9pcyBhYm91dAogICAgICAgICMgICAgICAgICRTZWxmLT57Q3VzdG9tZXJTZWFyY2hJdGVtSURzfSA9IFtdOwoKICAgICAgICAjIFRPRE86IEl0IHdvdWxkIGJlIG5pY2UgdG8gc3dpdGNoIGJldHdlZW4gcGFnZXMgZm9yIHRoZSBlZGl0IG1hc2ssIHRvby4gS2VlcGluZyB0aGUgZmllbGRzIGluIHN5bmMKICAgICAgICAjICAgICAgIHdoaWxlIGVkaXRpbmcgbmVlZHMgYSBiaXQgbW9yZSBwcmVwYXJhdGlvbiB0aG91Z2gKICAgICAgICAjIFRodXMgZm9yIG5vdyBtYWtlIHN1cmUgdG8gc2hvdyBkeW5hbWljIGZpZWxkcyBvbmx5IG9uY2UsIGV2ZW4gaWYgcHJlc2VudCBvbiBtdWx0aXBsZSBwYWdlcy9zZWN0aW9ucwogICAgICAgIG15ICRGaWVsZHNTZWVuID0ge307CiAgICAgICAgbXkgJFNob3dEZXNjcmlwdGlvbjsKICAgICAgICBteSBAUGFnZUhUTUw7CiAgICAgICAgbXkgJFNlY3Rpb25IZWFkZXJUZW1wbGF0ZSA9ICc8ZGl2IGNsYXNzPSJSb3cgUm93X1NlY3Rpb25IZWFkZXIiPjxoMz5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08L2gzPjwvZGl2Pic7CgogICAgICAgIFBBR0U6CiAgICAgICAgZm9yIG15ICRQYWdlICggJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtQYWdlc30tPkAqICkgewoKICAgICAgICAgICAgIyBJbnRlcmZhY2VzIGlzIG9wdGlvbmFsLCBlZmZlY3RpdmVseSBkZWZhdWx0IHRvIFsgJ0FnZW50JyBdCiAgICAgICAgICAgIGlmICggJFBhZ2UtPntJbnRlcmZhY2VzfSApIHsKICAgICAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgYW55IHsgJF8gZXEgJ0FnZW50JyB9ICRQYWdlLT57SW50ZXJmYWNlc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKICAgICAgICAgICAgICAgIGlmICggISVHcm91cExvb2t1cCApIHsKICAgICAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdyYW50IGFjY2VzcyB0byB0aGUgcGFnZSBvbmx5IHdoZW4gdGhlIHVzZXIgaXMgaW4gb25lIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXBzCiAgICAgICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRHcm91cExvb2t1cHskX30gfSAkUGFnZS0+e0dyb3Vwc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkUGFnZUR5bmFtaWNGaWVsZEhUTUw7CgogICAgICAgICAgICBTRUNUSU9OOgogICAgICAgICAgICBmb3IgbXkgJFNlY3Rpb25Db25maWcgKCAkUGFnZS0+e0NvbnRlbnR9LT5AKiApIHsKICAgICAgICAgICAgICAgIG15ICRTZWN0aW9uID0gJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtTZWN0aW9uc317ICRTZWN0aW9uQ29uZmlnLT57U2VjdGlvbn0gfTsKCiAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT04gdW5sZXNzICRTZWN0aW9uOwogICAgICAgICAgICAgICAgaWYgKCAkU2VjdGlvbi0+e1R5cGV9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSBlcSAnRGVzY3JpcHRpb24nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU2hvd0Rlc2NyaXB0aW9uID0gMTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VjdGlvbi0+e1R5cGV9IG5lICdEeW5hbWljRmllbGRzJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHdlZWQgb3V0IG11bHRpcGxlIG9jY3VycmVuY2VzIG9mIGR5bmFtaWMgZmllbGRzIC0gc2VlIGNvbW1lbnQgYWJvdmUKICAgICAgICAgICAgICAgICRTZWN0aW9uLT57Q29udGVudH0gPSAkU2VsZi0+X0Rpc2NhcmRGaWVsZHNTZWVuKAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJFNlY3Rpb24tPntDb250ZW50fSwKICAgICAgICAgICAgICAgICAgICBTZWVuICAgID0+ICRGaWVsZHNTZWVuLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdCBwcm9jZWVkIGlmIGNvbnRlbnQgaXMgZW1wdHkKICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTiB1bmxlc3MgJFNlY3Rpb24tPntDb250ZW50fS0+QCo7CgogICAgICAgICAgICAgICAgbXkgJEhUTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RHluYW1pY0ZpZWxkOjpNYXNrJyktPkVkaXRTZWN0aW9uUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgICAgID0+ICRTZWN0aW9uLT57Q29udGVudH0sCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgICAgPT4gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LAogICAgICAgICAgICAgICAgICAgIFVwZGF0YWJsZUZpZWxkcyAgICAgID0+IFxAVXBkYXRhYmxlRmllbGRzLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgPT4gJFBhcmFtT2JqZWN0LAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZFZhbHVlcyAgID0+ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9LAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzRmlsdGVyID0+IFwlRHluYW1pY0ZpZWxkUG9zc2libGVWYWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JzICAgICAgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRWYWxpZGF0aW9uUmVzdWx0LAogICAgICAgICAgICAgICAgICAgIFZpc2liaWxpdHkgICAgICAgICAgID0+IFwlRHluYW1pY0ZpZWxkVmlzaWJpbGl0eSwKICAgICAgICAgICAgICAgICAgICBPYmplY3QgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICRDb25maWdJdGVtLT57Q2xhc3N9LAogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfS0+JSosCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OIHVubGVzcyAkSFRNTCA9fiAvXHcvOwoKICAgICAgICAgICAgICAgIG15ICgkU2VjdGlvbkhlYWRlcikgPSBncmVwIHsgJF8tPntIZWFkZXJ9IH0gJFNlY3Rpb24tPntDb250ZW50fS0+QCo7CiAgICAgICAgICAgICAgICBpZiAoJFNlY3Rpb25IZWFkZXIpIHsKICAgICAgICAgICAgICAgICAgICAkUGFnZUR5bmFtaWNGaWVsZEhUTUwgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAkU2VjdGlvbkhlYWRlclRlbXBsYXRlLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRTZWN0aW9uSGVhZGVyLT57SGVhZGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRQYWdlRHluYW1pY0ZpZWxkSFRNTCAuPSAkSFRNTDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyAkUGFnZUR5bmFtaWNGaWVsZEhUTUw7CgogICAgICAgICAgICBwdXNoIEBQYWdlSFRNTCwgewogICAgICAgICAgICAgICAgSFRNTCA9PiAkUGFnZUR5bmFtaWNGaWVsZEhUTUwsCiAgICAgICAgICAgICAgICBOYW1lID0+ICRQYWdlLT57TmFtZX0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBteSBAQWN0aXZlRHluYW1pY0ZpZWxkcyA9ICgga2V5cyAkRmllbGRzU2Vlbi0+JSogKTsKCiAgICAgICAgIyBzdG9yZSB0aGUgYWN0aXZlIGR5bmFtaWMgZmllbGRzLCB0byBvbmx5IHZhbGlkYXRlIHRob3NlCiAgICAgICAgJEZvcm1DYWNoZU9iamVjdC0+U2V0Rm9ybURhdGEoCiAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICBLZXkgICAgICAgICAgPT4gJ0FjdGl2ZUR5bmFtaWNGaWVsZHMnLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgPT4gXEBBY3RpdmVEeW5hbWljRmllbGRzLAogICAgICAgICk7CgogICAgICAgIGlmICggc2NhbGFyIEBQYWdlSFRNTCA+IDEgKSB7CiAgICAgICAgICAgIG15ICRIZWFkZXJUZW1wbGF0ZSA9CiAgICAgICAgICAgICAgICAnPHN1bW1hcnk+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3cgUm93X1BhZ2VIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgICAgIDxoci8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9zdW1tYXJ5Pic7CgogICAgICAgICAgICBmb3IgbXkgJFBhZ2UgKEBQYWdlSFRNTCkgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUwgLj0gJzxkZXRhaWxzIGNsYXNzPSJQYWdlQ29udGVudCI+JzsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MIC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAkSGVhZGVyVGVtcGxhdGUsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRQYWdlLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTCAuPSAkUGFnZS0+e0hUTUx9OwogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUwgLj0gJzwvZGV0YWlscz4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJFNob3dEZXNjcmlwdGlvbikgewogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUwgLj0gJzxkZXRhaWxzIGNsYXNzPSJQYWdlQ29udGVudCI+JzsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MIC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAkSGVhZGVyVGVtcGxhdGUsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdEZXNjcmlwdGlvbicsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKEBQYWdlSFRNTCkgewogICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTCAuPSAkUGFnZUhUTUxbMF17SFRNTH07CiAgICAgICAgfQoKICAgICAgICBpZiAoJFNob3dEZXNjcmlwdGlvbikgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1Jvd0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICRGaWVsZENvbnRlbnQgLy8gJycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgbWV0YSBkYXRhCiAgICBteSBAQWxsQXR0YWNobWVudHNMaXN0ID0gJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICk7CgogICAgIyBleGNsdWRlIGlubGluZSBhdHRhY2htZW50cyBhcyB0aGV5IGFyZSBoYW5kbGVkIHNlcGFyYXRlbHkKICAgICRQYXJhbXtBdHRhY2htZW50TGlzdH0gPSBbIGdyZXAgeyAkXy0+e0Rpc3Bvc2l0aW9ufSBuZSAnaW5saW5lJyB9IEBBbGxBdHRhY2htZW50c0xpc3QgXTsKCiAgICAjIFRPRE8gbWF5YmUgcmVzdHJpY3QgdGhpcyB0byBvbmx5IGlmIGRmIHJpY2h0ZXh0IGFyZSB0byBiZSBkaXNwbGF5ZWQKICAgICMgYWRkIHJpY2ggdGV4dCBlZGl0b3IKICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CgogICAgICAgICMgdXNlIGhlaWdodC93aWR0aCBkZWZpbmVkIGZvciB0aGlzIHNjcmVlbgogICAgICAgICRQYXJhbXtSaWNoVGV4dEhlaWdodH0gPSAkU2VsZi0+e0NvbmZpZ317UmljaFRleHRIZWlnaHR9IHx8IDA7CiAgICAgICAgJFBhcmFte1JpY2hUZXh0V2lkdGh9ICA9ICRTZWxmLT57Q29uZmlnfXtSaWNoVGV4dFdpZHRofSAgfHwgMDsKCiAgICAgICAgIyBzZXQgdXAgcmljaCB0ZXh0IGVkaXRvcgogICAgICAgICRMYXlvdXRPYmplY3QtPlNldFJpY2hUZXh0UGFyYW1ldGVycygKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAmJiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gbmUgJ05FVycgKSB8fCAkRHVwbGljYXRlSUQgKSB7CgogICAgICAgICMgb3V0cHV0IGJsb2NrCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXJ0U21hbGwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ0VuZFNtYWxsJyApOwoKICAgICAgICAjIG91dHB1dCBoZWFkZXIKICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFZGl0JyksCiAgICAgICAgICAgICAgICBUeXBlICA9PiAnU21hbGwnLAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZEhUTUwgPT4gJER5bmFtaWNGaWVsZEhUTUwsCiAgICAgICAgICAgICAgICAgICAgRHVwbGljYXRlSUQgICAgICA9PiAkRHVwbGljYXRlSUQsCiAgICAgICAgICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgTmVjZXNzYXJ5IHN0dWZmIGZvciBBZGQgTmV3CiAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgICAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IGtleXMgJXskQ2xhc3NMaXN0fSApIHsKICAgICAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgICAgIFNjb3BlICAgPT4gJ0NsYXNzJywKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGRlbGV0ZSAkQ2xhc3NMaXN0LT57JENsYXNzSUR9IGlmICEkSGFzQWNjZXNzOwogICAgICAgIH0KCiAgICAgICAgIyBnZW5lcmF0ZSBDbGFzc09wdGlvblN0cmcKICAgICAgICBteSAkQ2xhc3NPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NsYXNzSUQnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnVzEwMHBjJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBFbmQgTmVjZXNzYXJ5IHN0dWZmIGZvciBBZGQgTmV3CgogICAgICAgICMgb3V0cHV0IGJsb2NrCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXJ0Tm9ybWFsJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc09wdGlvblN0cmcgPT4gJENsYXNzT3B0aW9uU3RyZywKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdFbmROb3JtYWwnICk7CgogICAgICAgICMgb3V0cHV0IGhlYWRlcgogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0VkaXQnKSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtRWRpdCcsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyRDb25maWdJdGVtfSwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRIVE1MID0+ICREeW5hbWljRmllbGRIVE1MLAogICAgICAgICAgICAgICAgICAgIER1cGxpY2F0ZUlEICAgICAgPT4gJER1cGxpY2F0ZUlELAogICAgICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgfQp9CgpzdWIgX0Rpc2NhcmRGaWVsZHNTZWVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbnRlbnQ7CiAgICBteSAkUmVmID0gcmVmICRQYXJhbXtDb250ZW50fTsKCiAgICBpZiAoICRSZWYgZXEgJ0FSUkFZJyApIHsKICAgICAgICBteSBAQ2xlYW5lZEFycmF5OwoKICAgICAgICBFTEVNRU5UOgogICAgICAgIGZvciBteSAkRWxlbWVudCAoICRQYXJhbXtDb250ZW50fS0+QCogKSB7CiAgICAgICAgICAgIG15ICRSZWZFbGVtZW50ID0gcmVmICRFbGVtZW50OwoKICAgICAgICAgICAgaWYgKCAkUmVmRWxlbWVudCBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgcHVzaCBAQ2xlYW5lZEFycmF5LCAkU2VsZi0+X0Rpc2NhcmRGaWVsZHNTZWVuKAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgU2VlbiAgICA9PiAkUGFyYW17U2Vlbn0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzaWYgKCAkUmVmRWxlbWVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICBpZiAoICEkRWxlbWVudC0+e0RGfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDbGVhbmVkQXJyYXksICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlZW4gICAgPT4gJFBhcmFte1NlZW59LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtTZWVufXsgJEVsZW1lbnQtPntERn0gfSsrICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAQ2xlYW5lZEFycmF5LCAkRWxlbWVudDsKICAgICAgICB9CgogICAgICAgICRDb250ZW50ID0gXEBDbGVhbmVkQXJyYXk7CiAgICB9CgogICAgZWxzaWYgKCAkUmVmIGVxICdIQVNIJyApIHsKICAgICAgICBteSAlQ2xlYW5lZEhhc2g7CgogICAgICAgIGZvciBteSAkS2V5ICgga2V5cyAkUGFyYW17Q29udGVudH0tPiUqICkgewogICAgICAgICAgICAkQ2xlYW5lZEhhc2h7JEtleX0gPSAkU2VsZi0+X0Rpc2NhcmRGaWVsZHNTZWVuKAogICAgICAgICAgICAgICAgQ29udGVudCA9PiAkUGFyYW17Q29udGVudH17JEtleX0sCiAgICAgICAgICAgICAgICBTZWVuICAgID0+ICRQYXJhbXtTZWVufSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRDb250ZW50ID0gXCVDbGVhbmVkSGFzaDsKICAgIH0KCiAgICBlbHNlIHsKICAgICAgICAkQ29udGVudCA9ICRQYXJhbXtDb250ZW50fTsKICAgIH0KCiAgICByZXR1cm4gJENvbnRlbnQ7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemHistory.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHslUGFyYW19LCAkVHlwZTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGdldCBhbmQgY2hlY2sgY29uZmlnIGl0ZW0gSUQKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICkgdW5sZXNzICRDb25maWdJdGVtSUQ7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICRDb25maWdPYmplY3QtPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKS0+e1Blcm1pc3Npb259LAogICAgKTsKCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJyksCiAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgKSB1bmxlc3MgJEhhc0FjY2VzczsKCiAgICAjIERlZmluZSB0cmFuc2xhdGFibGUgaGlzdG9yeSBzdHJpbmdzLgogICAgbXkgJUhpc3RvcnlTdHJpbmdzID0gKAogICAgICAgICdDSUhpc3Rvcnk6OkNvbmZpZ0l0ZW1DcmVhdGUnICAgICAgPT4gVHJhbnNsYXRhYmxlKCdOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6VmVyc2lvbkNyZWF0ZScgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ05ldyB2ZXJzaW9uIChJRD0lcyknKSwKICAgICAgICAnQ0lIaXN0b3J5OjpEZXBsb3ltZW50U3RhdGVVcGRhdGUnID0+IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknKSwKICAgICAgICAnQ0lIaXN0b3J5OjpJbmNpZGVudFN0YXRlVXBkYXRlJyAgID0+IFRyYW5zbGF0YWJsZSgnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6Q29uZmlnSXRlbURlbGV0ZScgICAgICA9PiBUcmFuc2xhdGFibGUoJ0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6TGlua0FkZCcgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6TGlua0RlbGV0ZScgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnKSwKICAgICAgICAnQ0lIaXN0b3J5OjpEZWZpbml0aW9uVXBkYXRlJyAgICAgID0+IFRyYW5zbGF0YWJsZSgnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKScpLAogICAgICAgICdDSUhpc3Rvcnk6Ok5hbWVVcGRhdGUnICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKScpLAogICAgICAgICdDSUhpc3Rvcnk6OlZhbHVlVXBkYXRlJyAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIicpLAogICAgICAgICdDSUhpc3Rvcnk6OlZlcnNpb25EZWxldGUnICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdWZXJzaW9uICVzIGRlbGV0ZWQnKSwKICAgICAgICAnQ0lIaXN0b3J5OjpBdHRhY2htZW50QWRkJyAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRmlsZSAiJXMiIHVwbG9hZGVkJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6QXR0YWNobWVudERlbGV0ZScgICAgICA9PiBUcmFuc2xhdGFibGUoJ0ZpbGUgIiVzIiByZW1vdmVkJyksCiAgICApOwoKICAgICMgZ2V0IGFsbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwogICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9OwoKICAgICMgZ2V0IGFsbCBlbnRyaWVzIGluIHRoZSBoaXN0b3J5IGZvciB0aGlzIGNvbmZpZyBpdGVtCiAgICBteSAkTGluZXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+SGlzdG9yeUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgIyBnZXQgc2hvd24gdXNlciBpbmZvCiAgICBteSBATmV3TGluZXMgPSBAeyRMaW5lc307CiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpIaXN0b3J5T3JkZXInKSBlcSAncmV2ZXJzZScgKSB7CiAgICAgICAgQE5ld0xpbmVzID0gcmV2ZXJzZSBAeyRMaW5lc307CiAgICB9CgogICAgbXkgJFZlcnNpb24gPSAwOwogICAgZm9yIG15ICREYXRhVG1wIChATmV3TGluZXMpIHsKICAgICAgICBteSAlRGF0YSA9ICgKICAgICAgICAgICAgJXskRGF0YVRtcH0sCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbiwKICAgICAgICApOwoKICAgICAgICAjIHRyaW0gdGhlIGNvbW1lbnQgdG8gb25seSBzaG93IHZlcnNpb24gbnVtYmVyCiAgICAgICAgaWYgKCAkRGF0YXtIaXN0b3J5VHlwZX0gZXEgJ1ZlcnNpb25DcmVhdGUnICkgewogICAgICAgICAgICAkRGF0YXtDb21tZW50fSA9fiBzL1xELy9nOwogICAgICAgICAgICAkRGF0YXtWZXJzaW9uSUR9ID0gJERhdGF7Q29tbWVudH07CiAgICAgICAgICAgICRWZXJzaW9uID0gJERhdGF7Q29tbWVudH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJERhdGF7SGlzdG9yeVR5cGV9IGVxICdEZXBsb3ltZW50U3RhdGVVcGRhdGUnICkgewoKICAgICAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzaG93IG5hbWVzLCBmaXJzdCBzcGxpdCB0aGUgcmVhc3NlbWJsZQogICAgICAgICAgICAkRGF0YXtDb21tZW50fSA9CiAgICAgICAgICAgICAgICBqb2luICclJScsCiAgICAgICAgICAgICAgICBtYXAgeyAkRGVwbFN0YXRlTGlzdC0+eyRffSB8fCAnJyB9CiAgICAgICAgICAgICAgICBzcGxpdCBtLyUlLywgJERhdGF7Q29tbWVudH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJERhdGF7SGlzdG9yeVR5cGV9IGVxICdJbmNpZGVudFN0YXRlVXBkYXRlJyApIHsKCiAgICAgICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdAogICAgICAgICAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNob3cgbmFtZXMsIGZpcnN0IHNwbGl0IHRoZSByZWFzc2VtYmxlCiAgICAgICAgICAgICREYXRhe0NvbW1lbnR9ID0KICAgICAgICAgICAgICAgIGpvaW4gJyUlJywKICAgICAgICAgICAgICAgIG1hcCB7ICRJbmNpU3RhdGVMaXN0LT57JF99IHx8ICcnIH0KICAgICAgICAgICAgICAgIHNwbGl0IG0vJSUvLCAkRGF0YXtDb21tZW50fTsKICAgICAgICB9CgogICAgICAgICMgcmVwbGFjZSB0ZXh0CiAgICAgICAgaWYgKCAkRGF0YXtDb21tZW50fSApIHsKICAgICAgICAgICAgJERhdGF7Q29tbWVudH0gPX4gc3sgXEEgJSUgfXt9eG1zZzsKICAgICAgICAgICAgbXkgQFZhbHVlcyA9IHNwbGl0IC8lJS8sICREYXRhe0NvbW1lbnR9OwoKICAgICAgICAgICAgJERhdGF7Q29tbWVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAkSGlzdG9yeVN0cmluZ3N7ICdDSUhpc3Rvcnk6OicgLiAkRGF0YXtIaXN0b3J5VHlwZX0gfSwKICAgICAgICAgICAgICAgIEBWYWx1ZXMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJlbW92ZSBub3QgbmVlZGVkIHBsYWNlIGhvbGRlcgogICAgICAgICAgICAkRGF0YXtDb21tZW50fSA9fiBzL1wlcy8vZzsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3cnLAogICAgICAgICAgICBEYXRhID0+IHslRGF0YX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGJ1aWxkIHBhZ2UKICAgIHJldHVybiBqb2luICcnLAogICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgICAgICBUeXBlICA9PiAnU21hbGwnCiAgICAgICAgKSwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnknLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgID0+ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWZXJzaW9uSUQnICksCiAgICAgICAgICAgIH0sCiAgICAgICAgKSwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemPrint.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVByaW50OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgICBxdyhJc0FycmF5UmVmV2l0aERhdGEpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwogICAgbXkgJFZlcnNpb25JRCAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWZXJzaW9uSUQnICk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCB8fCAhJFZlcnNpb25JRCApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzCiAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFR5cGUgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IiktPntQZXJtaXNzaW9ufSwKICAgICk7CgogICAgaWYgKCAhJEhhc0FjY2VzcyApIHsKCiAgICAgICAgIyBlcnJvciBwYWdlCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtCiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKICAgIGlmICggISRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJywgJENvbmZpZ0l0ZW1JRCApLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBsYXN0IHZlcnNpb24KICAgIG15ICRMYXN0VmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKICAgICRDb25maWdJdGVtLT57Q3VycmVudE5hbWV9ID0gJExhc3RWZXJzaW9uLT57TmFtZX07CgogICAgIyBnZXQgdmVyc2lvbiBsaXN0CiAgICBteSAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgIG15ICRWZXJzaW9uTnVtYmVyID0gMTsKICAgIExJU1RWRVJTSU9OSUQ6CiAgICBmb3IgbXkgJExpc3RWZXJzaW9uSUQgKCBAeyRWZXJzaW9uTGlzdH0gKSB7CgogICAgICAgIGxhc3QgTElTVFZFUlNJT05JRCBpZiAkVmVyc2lvbklEIGVxICRMaXN0VmVyc2lvbklEOwogICAgICAgICRWZXJzaW9uTnVtYmVyKys7CiAgICB9CgogICAgIyBnZXQgdXNlciBvYmplY3QKICAgIG15ICRVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICAjIGdldCBjcmVhdGUgJiBjaGFuZ2UgdXNlciBkYXRhCiAgICBmb3IgbXkgJEtleSAocXcoQ3JlYXRlIENoYW5nZSkpIHsKICAgICAgICAkQ29uZmlnSXRlbS0+eyAkS2V5IC4gJ0J5TmFtZScgfSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSgKICAgICAgICAgICAgVXNlcklEID0+ICRDb25maWdJdGVtLT57ICRLZXkgLiAnQnknIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB1c2VyIGRhdGEgb2YgdmVyc2lvbiAoY3JlYXRlIGJ5KQogICAgJENvbmZpZ0l0ZW0tPntDcmVhdGVCeU5hbWV9ID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgIFVzZXJJRCA9PiAkQ29uZmlnSXRlbS0+e0NyZWF0ZUJ5fSwKICAgICk7CgogICAgIyBnZXQgbGlua2VkIG9iamVjdHMKICAgIG15ICRMaW5rT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKCiAgICBteSAkTGlua0xpc3RXaXRoRGF0YSA9ICRMaW5rT2JqZWN0LT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGxpbmsgdHlwZSBsaXN0CiAgICBteSAlTGlua1R5cGVMaXN0ID0gJExpbmtPYmplY3QtPlR5cGVMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBsaW5rIGRhdGEKICAgIG15ICVMaW5rRGF0YTsKICAgIGlmICggJExpbmtMaXN0V2l0aERhdGEgJiYgcmVmICRMaW5rTGlzdFdpdGhEYXRhIGVxICdIQVNIJyAmJiAleyRMaW5rTGlzdFdpdGhEYXRhfSApIHsKICAgICAgICAlTGlua0RhdGEgPSAkTGF5b3V0T2JqZWN0LT5MaW5rT2JqZWN0VGFibGVDcmVhdGUoCiAgICAgICAgICAgIExpbmtMaXN0V2l0aERhdGEgPT4gJExpbmtMaXN0V2l0aERhdGEsCiAgICAgICAgICAgIFZpZXdNb2RlICAgICAgICAgPT4gJ1NpbXBsZVJhdycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBhdHRhY2htZW50cwogICAgbXkgQEF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgIyBnZXQgcGRmIG9iamVjdAogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIGdlbmVyYXRlIHBkZiBvdXRwdXQKICAgIG15ICVQYWdlOwoKICAgICMgZ2V0IG1heGltdW0gbnVtYmVyIG9mIHBhZ2VzCiAgICAkUGFnZXtNYXhQYWdlc30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1BERjo6TWF4UGFnZXMnKTsKICAgIGlmICggISRQYWdle01heFBhZ2VzfSB8fCAkUGFnZXtNYXhQYWdlc30gPCAxIHx8ICRQYWdle01heFBhZ2VzfSA+IDEwMDAgKSB7CiAgICAgICAgJFBhZ2V7TWF4UGFnZXN9ID0gMTAwOwogICAgfQoKICAgIG15ICRUaXRsZSA9ICRDb25maWdJdGVtLT57Q3VycmVudE5hbWV9OwoKICAgICRQYWdle01hcmdpblRvcH0gICAgPSAzMDsKICAgICRQYWdle01hcmdpblJpZ2h0fSAgPSA0MDsKICAgICRQYWdle01hcmdpbkJvdHRvbX0gPSA0MDsKICAgICRQYWdle01hcmdpbkxlZnR9ICAgPSA0MDsKICAgICRQYWdle0hlYWRlclJpZ2h0fSAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NvbmZpZ0l0ZW0nKSAuICcjJwogICAgICAgIC4gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9OwogICAgJFBhZ2V7SGVhZGxpbmVMZWZ0fSA9ICRDb25maWdJdGVtLT57TmFtZX07CiAgICAkUGFnZXtQYWdlVGV4dH0gICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdQYWdlJyk7CiAgICAkUGFnZXtQYWdlQ291bnR9ICAgID0gMTsKCiAgICAjIGNyZWF0ZSBuZXcgcGRmIGRvY3VtZW50CiAgICAkUERGT2JqZWN0LT5Eb2N1bWVudE5ldygKICAgICAgICBUaXRsZSAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdQcm9kdWN0JykgLiAnOicgLiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgIEVuY29kZSA9PiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBmaXJzdCBwZGYgcGFnZQogICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAlUGFnZSwKICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgKTsKICAgICRQYWdle1BhZ2VDb3VudH0rKzsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC02LAogICAgKTsKCiAgICAjIG91dHB1dCB0aXRsZQogICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICBUZXh0ICAgICA9PiAkVGl0bGUsCiAgICAgICAgRm9udFNpemUgPT4gMTMsCiAgICApOwoKICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTYsCiAgICApOwoKICAgICMgb3V0cHV0ICJwcmludGVkIGJ5IgogICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICBUZXh0ID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgJ3ByaW50ZWQgYnkgJXMgYXQgJXMnLAogICAgICAgICAgICAkU2VsZi0+e1VzZXJGdWxsbmFtZX0sCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntUaW1lfSwKICAgICAgICApLAogICAgICAgIEZvbnRTaXplID0+IDksCiAgICApOwoKICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE0LAogICAgKTsKCiAgICAjIG91dHB1dCBnZW5lcmFsIGluZm9ybWF0aW9uCiAgICAkU2VsZi0+X1BERk91dHB1dEdlbmVyYWxJbmZvcygKICAgICAgICBQYWdlICAgICAgID0+IFwlUGFnZSwKICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgKTsKCiAgICBteSAlU2VjdGlvbnMgPSAkU2VsZi0+X0dldENJU2VjdGlvbnMoCiAgICAgICAgQ29uZmlnSXRlbSA9PiAkQ29uZmlnSXRlbSwKICAgICk7CgogICAgIyBvdXRwdXQgdmVyc2lvbiBpbmZvcwogICAgJFNlbGYtPl9QREZPdXRwdXRWZXJzaW9uSW5mb3MoCiAgICAgICAgUGFnZSAgICAgICAgICA9PiBcJVBhZ2UsCiAgICAgICAgVmVyc2lvbiAgICAgICA9PiAkQ29uZmlnSXRlbSwKICAgICAgICBWZXJzaW9uTnVtYmVyID0+ICRWZXJzaW9uTnVtYmVyLAogICAgICAgIERGU2VjdGlvbnMgICAgPT4gJFNlY3Rpb25ze0RGU2VjdGlvbnN9LAogICAgICAgIERlc2NyaXB0aW9uICAgPT4gJFNlY3Rpb25ze0Rlc2NyaXB0aW9ufSwKICAgICk7CgogICAgIyBvdXRwdXQgYXR0YWNobWVudHMKICAgIGlmIChAQXR0YWNobWVudHMpIHsKICAgICAgICAkU2VsZi0+X1BERk91dHB1dEF0dGFjaG1lbnRzKAogICAgICAgICAgICBQYWdlRGF0YSAgICAgICA9PiBcJVBhZ2UsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEF0dGFjaG1lbnREYXRhID0+IFxAQXR0YWNobWVudHMsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG91dHB1dCBpbnRlcm5hbCBiYWNrIGxpbmtzCiAgICAkU2VsZi0+X1BERk91dHB1dEJhY2tsaW5rcygKICAgICAgICBQYWdlICAgICAgICAgPT4gXCVQYWdlLAogICAgICAgIENvbmZpZ0l0ZW0gICA9PiAkQ29uZmlnSXRlbSwKICAgICAgICBMaW5rU2VjdGlvbnMgPT4gJFNlY3Rpb25ze0xpbmtTZWN0aW9uc30sCiAgICApOwoKICAgICMgb3V0cHV0IGxpbmtlZCBvYmplY3RzCiAgICBpZiAoJUxpbmtEYXRhKSB7CiAgICAgICAgJFNlbGYtPl9QREZPdXRwdXRMaW5rZWRPYmplY3RzKAogICAgICAgICAgICBQYWdlRGF0YSAgICAgPT4gXCVQYWdlLAogICAgICAgICAgICBMaW5rRGF0YSAgICAgPT4gXCVMaW5rRGF0YSwKICAgICAgICAgICAgTGlua1R5cGVMaXN0ID0+IFwlTGlua1R5cGVMaXN0LAogICAgICAgICk7CiAgICB9CgogICAgIyBHZXQgY3VycmVudCBzeXN0ZW0gZGF0ZXRpbWUgb2JqZWN0LgogICAgbXkgJEN1cnJlbnRTeXN0ZW1EVE9iaiA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwoKICAgICMgY3JlYXRlIGZpbGUgbmFtZQogICAgbXkgJEZpbGVuYW1lID0gc3ByaW50ZigKICAgICAgICAnY29uZmlnaXRlbV8lc18lcy5wZGYnLAogICAgICAgICRDb25maWdJdGVtLT57TnVtYmVyfSwKICAgICAgICAkQ3VycmVudFN5c3RlbURUT2JqLT5Gb3JtYXQoIEZvcm1hdCA9PiAnJUZfJUgtJU0nICksCiAgICApOwogICAgbXkgJENsZWFuZWRGaWxlbmFtZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPkZpbGVuYW1lQ2xlYW5VcCgKICAgICAgICBGaWxlbmFtZSA9PiAkRmlsZW5hbWUsCiAgICAgICAgVHlwZSAgICAgPT4gJ0F0dGFjaG1lbnQnLAogICAgKTsKCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBGaWxlbmFtZSAgICA9PiAkQ2xlYW5lZEZpbGVuYW1lLAogICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9wZGYnLAogICAgICAgIENvbnRlbnQgICAgID0+ICRQREZPYmplY3QtPkRvY3VtZW50T3V0cHV0KCksCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICApOwp9CgpzdWIgX1BERk91dHB1dEdlbmVyYWxJbmZvcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhQYWdlIENvbmZpZ0l0ZW0pKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNyZWF0ZSBsZWZ0IHRhYmxlCiAgICBteSAkVGFibGVMZWZ0ID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDbGFzcycpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17Q29uZmlnSXRlbX0tPntDbGFzc30sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ29uZmlnSXRlbScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17Q29uZmlnSXRlbX0tPntDdXJyZW50TmFtZX0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtfS0+e0N1ckRlcGxTdGF0ZX0sCiAgICAgICAgICAgICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAkUGFyYW17Q29uZmlnSXRlbX0tPntDdXJJbmNpU3RhdGV9LAogICAgICAgICAgICApLAogICAgICAgIH0sCiAgICBdOwoKICAgICMgY3JlYXRlIHJpZ2h0IHRhYmxlCiAgICBteSAkVGFibGVSaWdodCA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3JlYXRlZCcpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gXCV7ICRQYXJhbXtDb25maWdJdGVtfSB9LAogICAgICAgICAgICApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NyZWF0ZWQgYnknKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFBhcmFte0NvbmZpZ0l0ZW19LT57Q3JlYXRlQnlOYW1lfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdMYXN0IGNoYW5nZWQnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJ1slIERhdGEuQ2hhbmdlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdJywKICAgICAgICAgICAgICAgIERhdGEgICAgID0+IFwleyAkUGFyYW17Q29uZmlnSXRlbX0gfSwKICAgICAgICAgICAgKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdMYXN0IGNoYW5nZWQgYnknKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFBhcmFte0NvbmZpZ0l0ZW19LT57Q2hhbmdlQnlOYW1lfSwKICAgICAgICB9LAogICAgXTsKCiAgICBteSAkUm93cyA9IEB7JFRhYmxlTGVmdH07CiAgICBpZiAoIEB7JFRhYmxlUmlnaHR9ID4gJFJvd3MgKSB7CiAgICAgICAgJFJvd3MgPSBAeyRUYWJsZVJpZ2h0fTsKICAgIH0KCiAgICBteSAlVGFibGVQYXJhbTsKICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAkUm93LS07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57VmFsdWV9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtDb250ZW50fSAgICAgICAgID0gJyAnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNGRkZGRkYnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzRde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57VmFsdWV9OwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gMTcwLjU7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsyXXtXaWR0aH0gPSA0OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bM117V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVs0XXtXaWR0aH0gPSAxNzAuNTsKICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3JFdmVufSAgPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgICA9IDM7CgogICAgIyBnZXQgcGRmIG9iamVjdAogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgUEFHRToKICAgIGZvciAoICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0gLi4gJFBhcmFte1BhZ2V9LT57TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCVUYWJsZVBhcmFtKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgbGFzdCBQQUdFIGlmICRUYWJsZVBhcmFte1N0YXRlfTsKCiAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgJXsgJFBhcmFte1BhZ2V9IH0sCiAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYXJhbXtQYWdlfS0+e1BhZ2VUZXh0fSAuICcgJyAuICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0sCiAgICAgICAgKTsKICAgICAgICAkUGFyYW17UGFnZX0tPntQYWdlQ291bnR9Kys7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0TGlua2VkT2JqZWN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgTGlua0RhdGEgTGlua1R5cGVMaXN0KSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlUGFnZSAgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVHlwZUxpc3QgPSAleyAkUGFyYW17TGlua1R5cGVMaXN0fSB9OwogICAgbXkgJVRhYmxlUGFyYW07CiAgICBteSAkUm93ID0gMDsKCiAgICAjIG15IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgZm9yIG15ICRMaW5rVHlwZUxpbmtEaXJlY3Rpb24gKCBzb3J0IHsgbGMgJGEgY21wIGxjICRiIH0ga2V5cyAleyAkUGFyYW17TGlua0RhdGF9IH0gKSB7CgogICAgICAgICMgaW52ZXN0aWdhdGUgbGluayB0eXBlIG5hbWUKICAgICAgICBteSBATGlua0RhdGEgICAgID0gc3BsaXQgLzo6LywgJExpbmtUeXBlTGlua0RpcmVjdGlvbjsKICAgICAgICBteSAkTGlua1R5cGVOYW1lID0gJFR5cGVMaXN0eyAkTGlua0RhdGFbMF0gfS0+eyAkTGlua0RhdGFbMV0gLiAnTmFtZScgfTsKICAgICAgICAkTGlua1R5cGVOYW1lID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMaW5rVHlwZU5hbWUpOwoKICAgICAgICAjIGRlZmluZSBoZWFkbGluZQogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtDb250ZW50fSA9ICRMaW5rVHlwZU5hbWUgLiAnOic7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSA9ICcnOwoKICAgICAgICAjIGV4dHJhY3Qgb2JqZWN0IGxpc3QKICAgICAgICBteSAkT2JqZWN0TGlzdCA9ICRQYXJhbXtMaW5rRGF0YX0tPnskTGlua1R5cGVMaW5rRGlyZWN0aW9ufTsKCiAgICAgICAgZm9yIG15ICRPYmplY3QgKCBzb3J0IHsgbGMgJGEgY21wIGxjICRiIH0ga2V5cyAleyRPYmplY3RMaXN0fSApIHsKCiAgICAgICAgICAgIGZvciBteSAkSXRlbSAoIEB7ICRPYmplY3RMaXN0LT57JE9iamVjdH0gfSApIHsKCiAgICAgICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gfHw9ICcnOwogICAgICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ID0gJEl0ZW0tPntUaXRsZX0gfHwgJyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29udGludWUgewogICAgICAgICAgICAgICAgJFJvdysrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gNDMxOwoKICAgICMgZ2V0IHBkZiBvYmplY3QKICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC0xNSwKICAgICk7CgogICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdMaW5rZWQgT2JqZWN0cycpLAogICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTQsCiAgICApOwoKICAgICMgdGFibGUgcGFyYW1zCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgUEFHRToKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCVUYWJsZVBhcmFtKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0QXR0YWNobWVudHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUGFnZURhdGEgQ29uZmlnSXRlbUlEIEF0dGFjaG1lbnREYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskQXJndW1lbnR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVQYWdlID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwogICAgbXkgJVRhYmxlUGFyYW07CiAgICBteSAkUm93ID0gMDsKCiAgICAjIGF0dGFjaG1lbnRzIGFyZSByZW5kZXJlZCBpbnRvIGEgc2VwYXJhdGUgcm93CiAgICBBVFRBQ0hNRU5UOgogICAgZm9yIG15ICRBdHRhY2htZW50ICggQHsgJFBhcmFte0F0dGFjaG1lbnREYXRhfSB9ICkgewoKICAgICAgICAjIGdldCB0aGUgbWV0YWRhdGEgb2YgdGhlIGN1cnJlbnQgYXR0YWNobWVudAogICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnQsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWZpbmUgYXR0YWNobWVudCBsaW5lCiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ID0gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9IC4gJyAgKCcgLiAkQXR0YWNobWVudERhdGEtPntGaWxlc2l6ZX0gLiAnKSc7CgogICAgICAgICRSb3crKzsKICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDQzMTsKCiAgICAjIGdldCBwZGYgb2JqZWN0CiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTUsCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdBdHRhY2htZW50cycpLAogICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTQsCiAgICApOwoKICAgICMgdGFibGUgcGFyYW1zCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgUEFHRToKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCVUYWJsZVBhcmFtKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfR2V0Q0lTZWN0aW9ucyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRQYXJhbXtDb25maWdJdGVtfXtEZWZpbml0aW9uSUR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfTsKICAgIHJldHVybiBpZiAhJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfTsKCiAgICBteSAkRGVzY3JpcHRpb247CiAgICBteSBATGlua1NlY3Rpb25zOwogICAgbXkgQERGU2VjdGlvbnM7CiAgICBteSAlU2VjdGlvbnNTZWVuOwogICAgbXkgJUdyb3VwTG9va3VwOwoKICAgIFBBR0U6CiAgICBmb3IgbXkgJFBhZ2UgKCAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1BhZ2VzfS0+QCogKSB7CgogICAgICAgICMgSW50ZXJmYWNlcyBpcyBvcHRpb25hbCwgZWZmZWN0aXZlbHkgZGVmYXVsdCB0byBbICdBZ2VudCcgXQogICAgICAgIGlmICggJFBhZ2UtPntJbnRlcmZhY2VzfSApIHsKICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkXyBlcSAnQWdlbnQnIH0gJFBhZ2UtPntJbnRlcmZhY2VzfS0+QCo7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKICAgICAgICAgICAgaWYgKCAhJUdyb3VwTG9va3VwICkgewogICAgICAgICAgICAgICAgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+UGVybWlzc2lvblVzZXJHZXQoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ3JhbnQgYWNjZXNzIHRvIHRoZSBwYWdlIG9ubHkgd2hlbiB0aGUgdXNlciBpcyBpbiBvbmUgb2YgdGhlIHNwZWNpZmllZCBncm91cHMKICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkR3JvdXBMb29rdXB7JF99IH0gJFBhZ2UtPntHcm91cHN9LT5AKjsKICAgICAgICB9CgogICAgICAgIFNFQ1RJT046CiAgICAgICAgZm9yIG15ICRTZWN0aW9uQ29uZmlnICggJFBhZ2UtPntDb250ZW50fS0+QCogKSB7CiAgICAgICAgICAgIG15ICRTZWN0aW9uID0gJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtTZWN0aW9uc317ICRTZWN0aW9uQ29uZmlnLT57U2VjdGlvbn0gfTsKCiAgICAgICAgICAgIG5leHQgU0VDVElPTiBpZiAkU2VjdGlvbnNTZWVueyAkU2VjdGlvbkNvbmZpZy0+e1NlY3Rpb259IH0rKzsKICAgICAgICAgICAgbmV4dCBTRUNUSU9OIHVubGVzcyAkU2VjdGlvbjsKCiAgICAgICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSAmJiAkU2VjdGlvbi0+e1R5cGV9IG5lICdEeW5hbWljRmllbGRzJyApIHsKICAgICAgICAgICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSBlcSAnRGVzY3JpcHRpb24nICkgewogICAgICAgICAgICAgICAgICAgICREZXNjcmlwdGlvbiA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWN0aW9uLT57VHlwZX0gZXEgJ0NvbmZpZ0l0ZW1MaW5rcycgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBATGlua1NlY3Rpb25zLCAkU2VjdGlvbjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHB1c2ggQERGU2VjdGlvbnMsICRTZWN0aW9uOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAoCiAgICAgICAgRGVzY3JpcHRpb24gID0+ICREZXNjcmlwdGlvbiwKICAgICAgICBERlNlY3Rpb25zICAgPT4gXEBERlNlY3Rpb25zLAogICAgICAgIExpbmtTZWN0aW9ucyA9PiBcQExpbmtTZWN0aW9ucywKICAgICk7Cn0KCnN1YiBfUERGT3V0cHV0VmVyc2lvbkluZm9zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFBhZ2UgVmVyc2lvbiBWZXJzaW9uTnVtYmVyKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgcGRmIG9iamVjdAogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE1LAogICAgKTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdWZXJzaW9uJykgLiAnICcKICAgICAgICAgICAgLiAkUGFyYW17VmVyc2lvbk51bWJlcn0sCiAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICBUeXBlICAgICA9PiAnQ3V0JywKICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICApOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNCwKICAgICk7CgogICAgIyBjcmVhdGUgdGFibGUKICAgIG15ICRUYWJsZSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3JlYXRlZCcpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gXCV7ICRQYXJhbXtWZXJzaW9ufSB9LAogICAgICAgICAgICApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NyZWF0ZWQgYnknKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFBhcmFte1ZlcnNpb259LT57Q3JlYXRlQnlOYW1lfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJyAnLAogICAgICAgICAgICBWYWx1ZSA9PiAnICcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTmFtZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17VmVyc2lvbn0tPntOYW1lfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXBsb3ltZW50IFN0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFBhcmFte1ZlcnNpb259LT57RGVwbFN0YXRlfSApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0luY2lkZW50IFN0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFBhcmFte1ZlcnNpb259LT57SW5jaVN0YXRlfSApLAogICAgICAgIH0sCiAgICBdOwoKICAgIGlmICggJFBhcmFte0Rlc2NyaXB0aW9ufSAmJiAkUGFyYW17VmVyc2lvbn17RGVzY3JpcHRpb259ICkgewogICAgICAgIG15ICRQbGFpbkRlc2NyaXB0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKCBTdHJpbmcgPT4gJFBhcmFte1ZlcnNpb259e0Rlc2NyaXB0aW9ufSApOwogICAgICAgICRQbGFpbkRlc2NyaXB0aW9uICAgID1+IHMvXltcblxyXSsvLzsKICAgICAgICAkUGxhaW5EZXNjcmlwdGlvbiAgICA9fiBzL1tcblxyXSskLy87CgogICAgICAgIHB1c2ggJFRhYmxlLT5AKiwgKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAnICcsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAnICcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRGVzY3JpcHRpb24nKSAuICc6JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRQbGFpbkRlc2NyaXB0aW9uLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBhZGQgZHluYW1pYyBmaWVsZCBkYXRhIHRvIHRhYmxlCiAgICAkU2VsZi0+X1BERk91dHB1dERGT3V0cHV0KAogICAgICAgIENvbmZpZ0l0ZW0gPT4gJFBhcmFte1ZlcnNpb259LAogICAgICAgIERGU2VjdGlvbnMgPT4gJFBhcmFte0RGU2VjdGlvbnN9LAogICAgICAgIFRhYmxlRGF0YSAgPT4gJFRhYmxlLAogICAgKTsKCiAgICBteSAlVGFibGVQYXJhbTsKICAgIG15ICRSb3dzID0gQHskVGFibGV9OwoKICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAkUm93LS07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ID0gJFRhYmxlLT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gPSAkVGFibGUtPlskUm93XS0+e1ZhbHVlfTsKICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSAxMDA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsxXXtXaWR0aH0gPSA0MTE7CiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgICAgICA9IDA7CiAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSAgICAgID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICAgPSAzOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBQQUdFOgogICAgZm9yICggJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSAuLiAkUGFyYW17UGFnZX0tPntNYXhQYWdlc30gKSB7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoJVRhYmxlUGFyYW0pOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBsYXN0IFBBR0UgaWYgJFRhYmxlUGFyYW17U3RhdGV9OwoKICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAleyAkUGFyYW17UGFnZX0gfSwKICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhcmFte1BhZ2V9LT57UGFnZVRleHR9IC4gJyAnIC4gJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSwKICAgICAgICApOwogICAgICAgICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0rKzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRERk91dHB1dCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRQYXJhbXtDb25maWdJdGVtfXtEZWZpbml0aW9uSUR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfTsKICAgIHJldHVybiBpZiAhJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfTsKCiAgICBteSBAREZPcmRlcmVkOwogICAgbXkgJURGU2VlbjsKICAgIG15ICRHcmVwREY7CiAgICAkR3JlcERGID0gc3ViIHsKICAgICAgICBFTlRSWToKICAgICAgICBmb3IgbXkgJEVudHJ5IChAXykgewogICAgICAgICAgICBpZiAoICRFbnRyeS0+e0RGfSApIHsKICAgICAgICAgICAgICAgIG5leHQgRU5UUlkgaWYgJERGU2VlbnsgJEVudHJ5LT57REZ9IH0rKzsKCiAgICAgICAgICAgICAgICBwdXNoIEBERk9yZGVyZWQsICRFbnRyeS0+e0RGfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRFbnRyeS0+e0dyaWR9ICYmICRFbnRyeS0+e0dyaWR9e1Jvd3N9ICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKCAkRW50cnktPntHcmlkfXtSb3dzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgJEdyZXBERi0+KCAkUm93LT5AKiApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICBTRUNUSU9OOgogICAgZm9yIG15ICRTZWN0aW9uICggQHsgJFBhcmFte0RGU2VjdGlvbnN9IC8vIFtdIH0gKSB7CiAgICAgICAgbmV4dCBTRUNUSU9OIGlmICEkU2VjdGlvbi0+e0NvbnRlbnR9OwoKICAgICAgICAkR3JlcERGLT4oICRTZWN0aW9uLT57Q29udGVudH0tPkAqICk7CiAgICB9CgogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBERk5BTUU6CiAgICBmb3IgbXkgJERGTmFtZSAoQERGT3JkZXJlZCkgewogICAgICAgIG5leHQgREZOQU1FIHVubGVzcyAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRERk5hbWUgfTsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskREZOYW1lfTsKCiAgICAgICAgbXkgJERpc3BsYXlWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkREZOYW1lIH0sCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICk7CgogICAgICAgIG15ICRWYWx1ZSA9ICREaXNwbGF5VmFsdWUtPntWYWx1ZX07CgogICAgICAgICMgcmVwbGFjZSBuZXdsaW5lcyB3aXRoIDxici8+IChmaXggZm9yIGJ1ZyMgNTkyOCkKICAgICAgICAkVmFsdWUgPX4gc3sgXG4gfXs8YnIvPn1neG1zOwoKICAgICAgICAjIGNvbnZlcnQgdmFsdWUgdG8gYXNjaWkKICAgICAgICAkVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoIFN0cmluZyA9PiAkVmFsdWUgKTsKCiAgICAgICAgIyBuZXcgcm93CiAgICAgICAgbXkgJE5ld1JvdyA9IHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkLT57TGFiZWx9ICkgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZSwKICAgICAgICB9OwoKICAgICAgICAjIGFkZCByb3cgZGF0YQogICAgICAgIHB1c2ggQHsgJFBhcmFte1RhYmxlRGF0YX0gfSwgJE5ld1JvdzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRCYWNrbGlua3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUGFnZSBDb25maWdJdGVtKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0RlZmluaXRpb25JRH0sCiAgICApOwoKICAgIG15IEBCYWNrbGlua1NlY3Rpb25zID0gQHsgJFBhcmFte0xpbmtTZWN0aW9uc30gLy8gW10gfTsKCiAgICByZXR1cm4gaWYgISREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn07CiAgICByZXR1cm4gMSBpZiAhQEJhY2tsaW5rU2VjdGlvbnM7CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRQREZPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJERlZmF1bHRIZWFkZXIgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1JlZmVyZW5jZWQgYnknKTsKCiAgICBTRUNUSU9OOgogICAgZm9yIG15ICRTZWN0aW9uICggQEJhY2tsaW5rU2VjdGlvbnMgKSB7CgogICAgICAgIG15ICREaXJlY3Rpb24gPSAkU2VjdGlvbi0+e0xpbmtlZEFzfSB8fCAnU291cmNlJzsKICAgICAgICBteSAkVHlwZXMgICAgID0gSXNBcnJheVJlZldpdGhEYXRhKCAkU2VjdGlvbi0+e0xpbmtUeXBlc30gKSA/ICRTZWN0aW9uLT57TGlua1R5cGVzfSA6IHVuZGVmOwogICAgICAgIG15ICRIZWFkZXIgICAgPSAkU2VjdGlvbi0+e0hlYWRlcn0gPyAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRTZWN0aW9uLT57SGVhZGVyfSApIDogJERlZmF1bHRIZWFkZXI7CgogICAgICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtfXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJERpcmVjdGlvbiwKICAgICAgICAgICAgVHlwZXMgICAgICAgID0+ICRUeXBlcywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBTRUNUSU9OIGlmICFAeyAkTGlua2VkQ29uZmlnSXRlbXMgLy8gW10gfTsKCiAgICAgICAgbXkgJUxpbmtlZENsYXNzZXM7CgogICAgICAgIGZvciBteSAkTGluayAoICRMaW5rZWRDb25maWdJdGVtcy0+QCogKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJExpbmstPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBAeyAkTGlua2VkQ2xhc3Nlc3sgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSB9LCB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTGluay0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTE1LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAgICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICAgICAgVGV4dCAgICAgPT4gJEhlYWRlciwKICAgICAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgICAgICk7CgogICAgICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtNCwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0YWJsZQogICAgICAgIG15ICRUYWJsZSA9IFtdOwoKICAgICAgICBmb3IgbXkgJENsYXNzICgga2V5cyAlTGlua2VkQ2xhc3NlcyApIHsKICAgICAgICAgICAgcHVzaCAkVGFibGUtPkAqLCB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRDbGFzcyApLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJExpbmtlZENsYXNzZXN7ICRDbGFzcyB9WzBde05hbWV9LAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZm9yIG15ICRpICggMSAuLiAkI3sgJExpbmtlZENsYXNzZXN7ICRDbGFzcyB9IH0gKSB7CiAgICAgICAgICAgICAgICBwdXNoICRUYWJsZS0+QCosIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAnICcsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJExpbmtlZENsYXNzZXN7ICRDbGFzcyB9WyRpXXtOYW1lfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVUYWJsZVBhcmFtOwogICAgICAgIG15ICRSb3dzID0gQHskVGFibGV9OwoKICAgICAgICBmb3IgbXkgJFJvdyAoIDEgLi4gJFJvd3MgKSB7CiAgICAgICAgICAgICRSb3ctLTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ID0gJFRhYmxlLT5bJFJvd10tPntLZXl9OwogICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSA9ICRUYWJsZS0+WyRSb3ddLT57VmFsdWV9OwogICAgICAgIH0KCiAgICAgICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gMTAwOwogICAgICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDQxMTsKICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgICAgICAgPSAwOwogICAgICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgICA9IDY7CiAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSAgICAgID0gJyNEREREREQnOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgICAgICA9IDE7CiAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICAgICAgID0gMzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICAgPSAzOwoKICAgICAgICAjIG91dHB1dCB0YWJsZQogICAgICAgIFBBR0U6CiAgICAgICAgZm9yICggJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSAuLiAkUGFyYW17UGFnZX0tPntNYXhQYWdlc30gKSB7CgogICAgICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSglVGFibGVQYXJhbSk7CgogICAgICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICAgICAgbGFzdCBQQUdFIGlmICRUYWJsZVBhcmFte1N0YXRlfTsKCiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAleyAkUGFyYW17UGFnZX0gfSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYXJhbXtQYWdlfS0+e1BhZ2VUZXh0fSAuICcgJyAuICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSB1bmlxKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IG5lY2Vzc2FyeSBvYmplY3RzCiAgICBteSAkQmFja2VuZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRTZWFyY2hQcm9maWxlT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZWFyY2hQcm9maWxlJyk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJENvbmZpZ09iamVjdC0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgdXNlIGNvbHVtbiBjb25maWdzIGZyb20gQWdlbnRJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntDb25maWd9e0NsYXNzQ29sdW1uc0F2YWlsYWJsZX0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbScpLT57Q2xhc3NDb2x1bW5zQXZhaWxhYmxlfTsKICAgICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNEZWZhdWx0fSAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0nKS0+e0NsYXNzQ29sdW1uc0RlZmF1bHR9OwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAkU2VsZi0+e1N0YXJ0SGl0fSAgICA9IGludCggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKICAgICRTZWxmLT57U2VhcmNoTGltaXR9ID0gJFNlbGYtPntDb25maWd9LT57U2VhcmNoTGltaXR9IHx8IDEwMDAwOwogICAgJFNlbGYtPntTb3J0Qnl9ICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ051bWJlcic7CiAgICAkU2VsZi0+e09yZGVyQnl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKICAgICRTZWxmLT57UHJvZmlsZX0gICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Byb2ZpbGUnICkgICAgIHx8ICcnOwogICAgJFNlbGYtPntTYXZlUHJvZmlsZX0gICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2F2ZVByb2ZpbGUnICkgfHwgJyc7CiAgICAkU2VsZi0+e1Rha2VMYXN0U2VhcmNofSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUYWtlTGFzdFNlYXJjaCcgKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzIG9uIHRoZSBjbGFzc2VzCiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IGtleXMgJXskQ2xhc3NMaXN0fSApIHsKICAgICAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFR5cGUgICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgIFNjb3BlICAgPT4gJ0NsYXNzJywKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgZGVsZXRlICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0gaWYgISRIYXNBY2Nlc3M7CiAgICB9CgogICAgIyBnZXQgY2xhc3MgaWQKICAgIG15ICRDbGFzc0lEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NsYXNzSUQnICk7CgogICAgIyBjaGVjayBpZiBjbGFzcyBpZCBpcyB2YWxpZAogICAgaWYgKCAkQ2xhc3NJRCAmJiAhJENsYXNzTGlzdC0+eyRDbGFzc0lEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdJbnZhbGlkIENsYXNzSUQhJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHNpbmdsZSBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgIG15ICREZWZpbml0aW9uOwoKICAgIGlmICgkQ2xhc3NJRCkgewoKICAgICAgICAjIHNldCBmaWx0ZXIgcGFyYW1zIGZvciBzaG93aW5nIGNvcnJlY3QgY29sdW1ucwogICAgICAgICRTZWxmLT57RmlsdGVyfSA9ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH07CiAgICAgICAgJFNlbGYtPntGaWx0ZXJzfS0+JSogPSBtYXAgewogICAgICAgICAgICAkXyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICRfLAogICAgICAgICAgICB9CiAgICAgICAgfSB2YWx1ZXMgJENsYXNzTGlzdC0+JSo7CgogICAgICAgICMgZ2V0IGN1cnJlbnQgZGVmaW5pdGlvbgogICAgICAgICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBhYm9ydCwgaWYgbm8gZGVmaW5pdGlvbiBpcyBkZWZpbmVkCiAgICAgICAgaWYgKCAhJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJywgJENsYXNzSUQgKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVTZXRJbm5lckZpZWxkczsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCB2YWx1ZXMgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiApIHsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdTZXQnOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfSApOwoKICAgICAgICAgICAgIyBpdGVyYXRlIHRoZSBlbnRpcmUgSW5jbHVkZSBzdHJ1Y3R1cmUgdG8gZ2V0IHRoZSB2ZXJzaW9uZWQgZHluYW1pYyBmaWVsZCBjb25maWdzCiAgICAgICAgICAgIElOQ0xVREVFTEVNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEluY2x1ZGVFbGVtZW50ICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317SW5jbHVkZX0tPkAqICkgewoKICAgICAgICAgICAgICAgIGlmICggJEluY2x1ZGVFbGVtZW50LT57REZ9ICkgewogICAgICAgICAgICAgICAgICAgICRJbmNsdWRlRWxlbWVudC0+e0RlZmluaXRpb259e0xhYmVsfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfSApIC4gJzo6JwogICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEluY2x1ZGVFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ICk7CiAgICAgICAgICAgICAgICAgICAgJFNldElubmVyRmllbGRzeyAkSW5jbHVkZUVsZW1lbnQtPntERn0gfSA9ICRJbmNsdWRlRWxlbWVudC0+e0RlZmluaXRpb259OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkSW5jbHVkZUVsZW1lbnQtPntHcmlkfSApIHsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBJTkNMVURFRUxFTUVOVCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9ICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBJTkNMVURFRUxFTUVOVCB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCAkSW5jbHVkZUVsZW1lbnQtPntHcmlkfXtSb3dzfSApOwoKICAgICAgICAgICAgICAgICAgICBST1c6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKCAkSW5jbHVkZUVsZW1lbnQtPntHcmlkfXtSb3dzfS0+QCogKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IFJPVyB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCRSb3cpOwoKICAgICAgICAgICAgICAgICAgICAgICAgUk9XRUxFTUVOVDoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRSb3dFbGVtZW50ICggJFJvdy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRSb3dFbGVtZW50LT57REZ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSb3dFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9ICkgLiAnOjonCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkUm93RWxlbWVudC0+e0RlZmluaXRpb259e0xhYmVsfSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTZXRJbm5lckZpZWxkc3sgJFJvd0VsZW1lbnQtPntERn0gfSA9ICRSb3dFbGVtZW50LT57RGVmaW5pdGlvbn07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSA9IHsKICAgICAgICAgICAgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiwKICAgICAgICAgICAgJVNldElubmVyRmllbGRzLAogICAgICAgIH07CgogICAgICAgICMgbG9hZCBwcm9maWxlcyBzdHJpbmcgcGFyYW1zCiAgICAgICAgaWYgKCAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnTG9hZFByb2ZpbGUnICYmICRTZWxmLT57UHJvZmlsZX0gKSB8fCAkU2VsZi0+e1Rha2VMYXN0U2VhcmNofSApIHsKICAgICAgICAgICAgJUdldFBhcmFtID0gJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVHZXQoCiAgICAgICAgICAgICAgICBCYXNlICAgICAgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnIC4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNvbnZlcnQgYXR0cmlidXRlcwogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtTaG93bkF0dHJpYnV0ZXN9ICYmIHJlZiAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gPSBqb2luICc7JywgQHsgJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgZGVmYXVsdCBwYXJhbXMgb2YgZGVmYXVsdCBhdHRyaWJ1dGVzCiAgICAgICAgICAgIGlmICggJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfSApIHsKICAgICAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAhJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0R5bmFtaWNGaWVsZCc7CgogICAgICAgICAgICAgICAgICAgIGlmICggJEtleSA9fiAvXihDb25maWdJdGVtKShDcmVhdGV8Q2hhbmdlKS8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15IEBJdGVtcyA9IHNwbGl0IC87LywgJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEl0ZW0gKEBJdGVtcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCAkS2V5LCAkVmFsdWUgKSA9IHNwbGl0IC89LywgJEl0ZW07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gfHw9ICRWYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9IHx8PSAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoTnVtYmVyIE5hbWUgUHJldmlvdXNWZXJzaW9uU2VhcmNoIFJlc3VsdEZvcm0gU2hvd25BdHRyaWJ1dGVzKSkgewoKICAgICAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBzdHJpbmcgcGFyYW1zIChnZXQgc3VibWl0dGVkIHBhcmFtcykKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskS2V5fSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRLZXkgKTsKCiAgICAgICAgICAgICAgICAjIHJlbW92ZSB3aGl0ZSBzcGFjZSBvbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9ID1+IHMvXHMrJC8vZzsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gPX4gcy9eXHMrLy9nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBhcnJheSBwYXJhbXMKICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KERlcGxTdGF0ZUlEcyBJbmNpU3RhdGVJRHMpKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGFycmF5IHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgICAgICAgICBteSBAQXJyYXkgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkS2V5ICk7CiAgICAgICAgICAgICAgICBpZiAoQEFycmF5KSB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gXEBBcnJheTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgRHluYW1pYyBmaWVsZHMgZnJvbSBwYXJhbSBvYmplY3QKICAgICAgICAgICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewoKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFNlbGYtPntDb25maWd9e0R5bmFtaWNGaWVsZH17ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICAgICAjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZnJvbSB0aGUgd2ViIHJlcXVlc3QKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuUHJvZmlsZVN0cnVjdHVyZSA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHNldCB0aGUgY29tcGxldGUgdmFsdWUgc3RydWN0dXJlIGluIEdldFBhcmFtIHRvIHN0b3JlIGl0IGxhdGVyIGluIHRoZSBzZWFyY2ggcHJvZmlsZQogICAgICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZFZhbHVlKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKCAlR2V0UGFyYW0sICV7JER5bmFtaWNGaWVsZFZhbHVlfSApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGRlbGV0ZSBzZWFyY2ggcHJvZmlsZXMKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYUHJvZmlsZURlbGV0ZScgKSB7CgogICAgICAgICMgcmVtb3ZlIG9sZCBwcm9maWxlIHN0dWZmCiAgICAgICAgJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVEZWxldGUoCiAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcgLiAkQ2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgKTsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSgKICAgICAgICAgICAgRGF0YSA9PiAxLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgaW5pdCBzZWFyY2ggZGlhbG9nIChzZWxlY3QgY2xhc3MpCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUpBWCcgKSB7CgogICAgICAgIG15ICRFbXB0eVNlYXJjaCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdFbXB0eVNlYXJjaCcgKTsKICAgICAgICBpZiAoICEkU2VsZi0+e1Byb2ZpbGV9ICkgewogICAgICAgICAgICAkRW1wdHlTZWFyY2ggPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgZGVmYXVsdCBwYXJhbXMgb2YgZGVmYXVsdCBhdHRyaWJ1dGVzCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9ICkgewoKICAgICAgICAgICAgS0VZOgogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAhJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnRHluYW1pY0ZpZWxkJzsKCiAgICAgICAgICAgICAgICBpZiAoICRLZXkgPX4gL14oQ29uZmlnSXRlbSkoQ3JlYXRlfENoYW5nZSkvICkgewogICAgICAgICAgICAgICAgICAgIG15IEBJdGVtcyA9IHNwbGl0IC87LywgJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbSAoQEl0ZW1zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICggJEtleSwgJFZhbHVlICkgPSBzcGxpdCAvPS8sICRJdGVtOwogICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gfHw9ICRWYWx1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gfHw9ICRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZW5lcmF0ZSBkcm9wZG93biBmb3Igc2VsZWN0aW5nIHRoZSBjbGFzcwogICAgICAgICMgYXV0b21hdGljYWxseSBzaG93IHNlYXJjaCBtYXNrIGFmdGVyIHNlbGVjdGluZyBhIGNsYXNzIHZpYSBBSkFYCiAgICAgICAgbXkgJENsYXNzT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdTZWFyY2hDbGFzc0lEJywKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkQ2xhc3NJRCB8fCAnJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAjIGh0bWwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaEFKQVgnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzT3B0aW9uU3RyZyA9PiAkQ2xhc3NPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBFbXB0eVNlYXJjaCAgICAgPT4gJEVtcHR5U2VhcmNoLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IHRlbXBsYXRlCiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzZXQgc2VhcmNoIGZpZWxkcyBmb3Igc2VsZWN0ZWQgY2xhc3MKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYVXBkYXRlJyB8fCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0xvYWRQcm9maWxlJyApIHsKCiAgICAgICAgIyBDbGFzc0lEIGlzIHJlcXVpcmVkIGZvciB0aGUgc2VhcmNoIG1hc2sgYW5kIGZvciBhY3R1YWwgc2VhcmNoaW5nCiAgICAgICAgaWYgKCAhJENsYXNzSUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDbGFzc0lEIGlzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiB1c2VyIGlzIGFsbG93ZWQgdG8gc2VhcmNoIGNsYXNzCiAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBlcnJvciBzY3JlZW4KICAgICAgICBpZiAoICEkSGFzQWNjZXNzICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IGRlZmF1bHQgcGFyYW1zIG9mIGRlZmF1bHQgYXR0cmlidXRlcwogICAgICAgIGlmICggJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfSApIHsKCiAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXsgJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgISRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0R5bmFtaWNGaWVsZCc7CgogICAgICAgICAgICAgICAgaWYgKCAkS2V5ID1+IC9eKENvbmZpZ0l0ZW0pKENyZWF0ZXxDaGFuZ2UpLyApIHsKICAgICAgICAgICAgICAgICAgICBteSBASXRlbXMgPSBzcGxpdCAvOy8sICRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30tPnskS2V5fTsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEl0ZW0gKEBJdGVtcykgewogICAgICAgICAgICAgICAgICAgICAgICBteSAoICRLZXksICRWYWx1ZSApID0gc3BsaXQgLz0vLCAkSXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9IHx8PSAkVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9IHx8PSAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY29udmVydCBhdHRyaWJ1dGVzCiAgICAgICAgICAgIGlmICggJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gJiYgcmVmICRHZXRQYXJhbXtTaG93bkF0dHJpYnV0ZXN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSA9IGpvaW4gJzsnLCBAeyAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSB9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFRPRE8gbWF5YmUgbmljZXIgdG8gaGF2ZSB0aGlzIGFsc28gaW4gYSBzeXNjb25maWcgc2V0dGluZwogICAgICAgICMgaW5pdGlhbGl6aW5nIHdpdGggY29tbW9uIGF0dHJpYnV0ZXMKICAgICAgICBteSBAQXR0cmlidXRlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ051bWJlcicpLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ05hbWUnKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUnKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0luY2lkZW50IFN0YXRlJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyB3YWxrIHRocm91Z2ggZGVmaW5pdGlvbiB0byBjaGVjayBwZXJtaXNzaW9ucyBvbiBwYWdlcyB3aGljaCBjb250YWluIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgICAgICBteSAlUGVybWl0dGVkRHluYW1pY0ZpZWxkczsKICAgICAgICBteSAlR3JvdXBMb29rdXA7CgogICAgICAgIFBBR0U6CiAgICAgICAgZm9yIG15ICRQYWdlICggJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtQYWdlc30tPkAqICkgewoKICAgICAgICAgICAgIyBJbnRlcmZhY2VzIGlzIG9wdGlvbmFsLCBlZmZlY3RpdmVseSBkZWZhdWx0IHRvIFsgJ0FnZW50JyBdCiAgICAgICAgICAgIGlmICggJFBhZ2UtPntJbnRlcmZhY2VzfSApIHsKICAgICAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgYW55IHsgJF8gZXEgJ0FnZW50JyB9ICRQYWdlLT57SW50ZXJmYWNlc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKICAgICAgICAgICAgICAgIGlmICggISVHcm91cExvb2t1cCApIHsKICAgICAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdyYW50IGFjY2VzcyB0byB0aGUgcGFnZSBvbmx5IHdoZW4gdGhlIHVzZXIgaXMgaW4gb25lIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXBzCiAgICAgICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRHcm91cExvb2t1cHskX30gfSAkUGFnZS0+e0dyb3Vwc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBTRUNUSU9OOgogICAgICAgICAgICBmb3IgbXkgJFNlY3Rpb25Db25maWcgKCAkUGFnZS0+e0NvbnRlbnR9LT5AKiApIHsKICAgICAgICAgICAgICAgIG15ICRTZWN0aW9uID0gJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtTZWN0aW9uc317ICRTZWN0aW9uQ29uZmlnLT57U2VjdGlvbn0gfTsKCiAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT04gdW5sZXNzICRTZWN0aW9uOwogICAgICAgICAgICAgICAgaWYgKCAkU2VjdGlvbi0+e1R5cGV9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSBuZSAnRHluYW1pY0ZpZWxkcycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkbyBub3QgcHJvY2VlZCBpZiBjb250ZW50IGlzIGVtcHR5CiAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT04gdW5sZXNzICRTZWN0aW9uLT57Q29udGVudH0tPkAqOwoKICAgICAgICAgICAgICAgIG15ICRTZWN0aW9uREZzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdE1hc2soCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkU2VjdGlvbi0+e0NvbnRlbnR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VjdGlvbkRGcykgKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRERk5hbWUgKCAkU2VjdGlvbkRGcy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRQZXJtaXR0ZWREeW5hbWljRmllbGRzeyRERk5hbWV9ID0gMTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgYWxzbyBpbmNsdWRlIFNldC1pbm5lciBmaWVsZHMKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JERGTmFtZX17RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTZXRJbm5lckZpZWxkcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RNYXNrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyRERk5hbWV9e0NvbmZpZ317SW5jbHVkZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCRTZXRJbm5lckZpZWxkcykgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRJbm5lckRGICggJFNldElubmVyRmllbGRzLT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBlcm1pdHRlZER5bmFtaWNGaWVsZHN7JElubmVyREZ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZHluYW1pYyBmaWVsZHMKICAgICAgICBteSAkRHluYW1pY0ZpZWxkU2VwYXJhdG9yID0gMTsKCiAgICAgICAgIyBjcmVhdGUgZHluYW1pYyBmaWVsZHMgc2VhcmNoIG9wdGlvbnMgZm9yIGF0dHJpYnV0ZSBzZWxlY3QKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIGRlZmluaXRpb24KICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBzb3J0IHsgJGEtPntMYWJlbH0gY21wICRiLT57TGFiZWx9IH0gdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkU2VsZi0+e0NvbmZpZ317RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkUGVybWl0dGVkRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICAgICAjIGNyZWF0ZSBhIHNlcGFyYXRvciBmb3IgZHluYW1pYyBmaWVsZHMgYXR0cmlidXRlcwogICAgICAgICAgICBpZiAoJER5bmFtaWNGaWVsZFNlcGFyYXRvcikgewogICAgICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgKAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgID0+ICctJywKICAgICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZWQgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZXBhcmF0b3IgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgZHluYW1pYyBmaWVsZCBsYWJlbAogICAgICAgICAgICBteSAkVHJhbnNsYXRlZER5bmFtaWNGaWVsZExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICMgdHJhbnNsYXRlIHRoZSBzdWZmaXgKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkU3VmZml4ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICRQcmVmZXJlbmNlLT57TGFiZWxTdWZmaXh9LAogICAgICAgICAgICAgICAgKSB8fCAnJzsKCiAgICAgICAgICAgICAgICBpZiAoJFRyYW5zbGF0ZWRTdWZmaXgpIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFN1ZmZpeCA9ICcgKCcgLiAkVHJhbnNsYXRlZFN1ZmZpeCAuICcpJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBBdHRyaWJ1dGVzLCAoCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1NlYXJjaF9EeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFRyYW5zbGF0ZWREeW5hbWljRmllbGRMYWJlbCAuICRUcmFuc2xhdGVkU3VmZml4LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBIVE1MIHN0cmluZ3MgZm9yIGFsbCBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVEeW5hbWljRmllbGRIVE1MOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFNlbGYtPntDb25maWd9e0R5bmFtaWNGaWVsZH17ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFBlcm1pdHRlZER5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzRmlsdGVyOwoKICAgICAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkSXNBQ0xSZWR1Y2libGUpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzID0gJEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIGhhcyBQb3NzaWJsZVZhbHVlcyBwcm9wZXJ0eSBpbiBpdHMgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkUG9zc2libGVWYWx1ZXMpICkgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBoaXN0b3JpY2FsIHZhbHVlcyBmcm9tIGRhdGFiYXNlCiAgICAgICAgICAgICAgICAgICAgbXkgJEhpc3RvcmljYWxWYWx1ZXMgPSAkQmFja2VuZE9iamVjdC0+SGlzdG9yaWNhbFZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJERhdGEgPSAkUG9zc2libGVWYWx1ZXM7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGhpc3RvcmljIHZhbHVlcyB0byBjdXJyZW50IHZhbHVlcyAoaWYgdGhleSBkb24ndCBleGlzdCBhbnltb3JlKQogICAgICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJEhpc3RvcmljYWxWYWx1ZXMpICkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRIaXN0b3JpY2FsVmFsdWVzfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISREYXRhLT57JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGEtPnskS2V5fSA9ICRIaXN0b3JpY2FsVmFsdWVzLT57JEtleX07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY29udmVydCBwb3NzaWJsZSB2YWx1ZXMga2V5ID0+IHZhbHVlIHRvIGtleSA9PiBrZXkgZm9yIEFDTHMgdXNpbmcgYSBIYXNoIHNsaWNlCiAgICAgICAgICAgICAgICAgICAgbXkgJUFjbERhdGEgPSAleyREYXRhfTsKICAgICAgICAgICAgICAgICAgICBAQWNsRGF0YXsga2V5cyAlQWNsRGF0YSB9ID0ga2V5cyAlQWNsRGF0YTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgcG9zc2libGUgdmFsdWVzIGZpbHRlciBmcm9tIEFDTHMKICAgICAgICAgICAgICAgICAgICBteSAkQUNMID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlQWNsRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAlRmlsdGVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2xEYXRhKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgRmlsZXIga2V5ID0+IGtleSBiYWNrIHRvIGtleSA9PiB2YWx1ZSB1c2luZyBtYXAKICAgICAgICAgICAgICAgICAgICAgICAgJXskUG9zc2libGVWYWx1ZXNGaWx0ZXJ9ID0gbWFwIHsgJF8gPT4gJERhdGEtPnskX30gfSBrZXlzICVGaWx0ZXI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBIVE1MCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9ID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgICAgPT4gXCVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiAkUG9zc2libGVWYWx1ZXNGaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlICAgICAgICAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfXtEeW5hbWljRmllbGR9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYnVpbGQgYXR0cmlidXRlcyBzdHJpbmcgZm9yIGF0dHJpYnV0ZXMgbGlzdAogICAgICAgICRQYXJhbXtBdHRyaWJ1dGVzU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcQEF0dHJpYnV0ZXMsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnQXR0cmlidXRlJywKICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDAsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIGF0dHJpYnV0ZXMgc3RyaW5nIGZvciByZWNvdmVyeSBvbiBhZGQgb3Igc3VidHJhY3Qgc2VhcmNoIGZpZWxkcwogICAgICAgICRQYXJhbXtBdHRyaWJ1dGVzT3JpZ1N0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXEBBdHRyaWJ1dGVzLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0F0dHJpYnV0ZU9yaWcnLAogICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMCwKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgIG15ICVQcm9maWxlcyA9ICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlTGlzdCgKICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDb25maWdJdGVtU2VhcmNoJyAuICRDbGFzc0lELAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICk7CgogICAgICAgICRQYXJhbXtQcm9maWxlc1N0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVByb2ZpbGVzLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1Byb2ZpbGUnLAogICAgICAgICAgICBJRCAgICAgICAgICAgPT4gJ1NlYXJjaFByb2ZpbGUnLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgICAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyB0aGUgd2FudGVkIGRlcGxveW1lbnQgc3RhdGVzCiAgICAgICAgbXkgJEN1ckRlcGxTdGF0ZU9wdGlvblN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkRGVwbFN0YXRlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnRGVwbFN0YXRlSURzJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17RGVwbFN0YXRlSURzfSB8fCBbXSwKICAgICAgICAgICAgU2l6ZSAgICAgICA9PiA1LAogICAgICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyB0aGUgd2FudGVkIGluY2lkZW50IHN0YXRlcwogICAgICAgIG15ICRDdXJJbmNpU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgPT4gJEluY2lTdGF0ZUxpc3QsCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte0luY2lTdGF0ZUlEc30gfHwgW10sCiAgICAgICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgUHJldmlvdXNWZXJzaW9uT3B0aW9uU3RyZwogICAgICAgIG15ICRQcmV2aW91c1ZlcnNpb25PcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIE5hbWUgPT4gJ1ByZXZpb3VzVmVyc2lvblNlYXJjaCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgMCA9PiBUcmFuc2xhdGFibGUoJ05vJyksCiAgICAgICAgICAgICAgICAxID0+IFRyYW5zbGF0YWJsZSgnWWVzJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte1ByZXZpb3VzVmVyc2lvblNlYXJjaH0gfHwgJzAnLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgb3V0cHV0IGZvcm1hdCBzdHJpbmcKICAgICAgICAkUGFyYW17UmVzdWx0Rm9ybVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTm9ybWFsID0+IFRyYW5zbGF0YWJsZSgnTm9ybWFsJyksCiAgICAgICAgICAgICAgICBQcmludCAgPT4gVHJhbnNsYXRhYmxlKCdQcmludCcpLAogICAgICAgICAgICAgICAgQ1NWICAgID0+IFRyYW5zbGF0YWJsZSgnQ1NWJyksCiAgICAgICAgICAgICAgICBFeGNlbCAgPT4gVHJhbnNsYXRhYmxlKCdFeGNlbCcpLAogICAgICAgICAgICB9LAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdSZXN1bHRGb3JtJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gfHwgJ05vcm1hbCcsCiAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0FKQVhDb250ZW50JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZyAgICA9PiAkQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZU9wdGlvblN0cmcgICAgPT4gJEN1ckluY2lTdGF0ZU9wdGlvblN0cmcsCiAgICAgICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25PcHRpb25TdHJnID0+ICRQcmV2aW91c1ZlcnNpb25PcHRpb25TdHJnLAogICAgICAgICAgICAgICAgQXR0cmlidXRlc1N0cmcgICAgICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlc1N0cmd9LAogICAgICAgICAgICAgICAgQXR0cmlidXRlc09yaWdTdHJnICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlc09yaWdTdHJnfSwKICAgICAgICAgICAgICAgIFJlc3VsdEZvcm1TdHJnICAgICAgICAgICAgPT4gJFBhcmFte1Jlc3VsdEZvcm1TdHJnfSwKICAgICAgICAgICAgICAgIFByb2ZpbGVzU3RyZyAgICAgICAgICAgICAgPT4gJFBhcmFte1Byb2ZpbGVzU3RyZ30sCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgID0+ICRHZXRQYXJhbXtOdW1iZXJ9IHx8ICcnLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICA9PiAkR2V0UGFyYW17TmFtZX0gICB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBEeW5hbWljIGZpZWxkcyBibG9ja3MKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFNlbGYtPntDb25maWd9e0R5bmFtaWNGaWVsZH17ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFBlcm1pdHRlZER5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBza2lwIGZpZWxkcyB0aGF0IEhUTUwgY291bGQgbm90IGJlIHJldHJpZXZlZAogICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPntGaWVsZH0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYXR0cmlidXRlcyBmb3Igc2VhcmNoCiAgICAgICAgbXkgQFNlYXJjaEF0dHJpYnV0ZXM7CgogICAgICAgIG15ICVHZXRQYXJhbUJhY2t1cCA9ICVHZXRQYXJhbTsKCiAgICAgICAgIyBzaG93IGF0dHJpYnV0ZXMKICAgICAgICBteSBAU2hvd25BdHRyaWJ1dGVzOwogICAgICAgIGlmICggJEdldFBhcmFtQmFja3Vwe1Nob3duQXR0cmlidXRlc30gKSB7CiAgICAgICAgICAgIEBTaG93bkF0dHJpYnV0ZXMgPSBzcGxpdCAvOy8sICRHZXRQYXJhbUJhY2t1cHtTaG93bkF0dHJpYnV0ZXN9OwogICAgICAgIH0KICAgICAgICBteSAlQWxyZWFkeVNob3duOwoKICAgICAgICBpZiAoJENsYXNzSUQpIHsKICAgICAgICAgICAgSVRFTToKICAgICAgICAgICAgZm9yIG15ICRJdGVtIChAQXR0cmlidXRlcykgewogICAgICAgICAgICAgICAgbXkgJEtleSA9ICRJdGVtLT57S2V5fTsKICAgICAgICAgICAgICAgIG5leHQgSVRFTSBpZiAhJEtleTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHNob3duCiAgICAgICAgICAgICAgICBpZiAoQFNob3duQXR0cmlidXRlcykgewogICAgICAgICAgICAgICAgICAgIG15ICRTaG93ID0gMDsKICAgICAgICAgICAgICAgICAgICBTSE9XTl9BVFRSSUJVVEU6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRTaG93bkF0dHJpYnV0ZSAoQFNob3duQXR0cmlidXRlcykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICdMYWJlbCcgLiAkS2V5IGVxICRTaG93bkF0dHJpYnV0ZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTaG93ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgU0hPV05fQVRUUklCVVRFOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG5leHQgSVRFTSBpZiAhJFNob3c7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAjIFNraXAgdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgbmV4dCBJVEVNIGlmICFkZWZpbmVkICRHZXRQYXJhbUJhY2t1cHskS2V5fTsKCiAgICAgICAgICAgICAgICAgICAgIyBTa2lwIGVtcHR5IHN0cmluZ3MKICAgICAgICAgICAgICAgICAgICBuZXh0IElURU0gaWYgJEdldFBhcmFtQmFja3VweyRLZXl9IGVxICcnOwoKICAgICAgICAgICAgICAgICAgICAjIFNraXAgZW1wdHkgYXJyYXlzCiAgICAgICAgICAgICAgICAgICAgaWYgKCByZWYgJEdldFBhcmFtQmFja3VweyRLZXl9IGVxICdBUlJBWScgJiYgIUB7ICRHZXRQYXJhbUJhY2t1cHskS2V5fSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IElURU07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc2hvdyBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgIG5leHQgSVRFTSBpZiAkQWxyZWFkeVNob3dueyRLZXl9OwogICAgICAgICAgICAgICAgJEFscmVhZHlTaG93bnskS2V5fSA9IDE7CgogICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoQXR0cmlidXRlcywgJEtleTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBObyBwcm9maWxlLCBzaG93IGRlZmF1bHQgc2NyZWVuCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIE1lcmdlIHJlZ3VsYXIgc2hvdy9oaWRlIHNldHRpbmdzIGFuZCB0aGUgc2V0dGluZ3MgZm9yIHRoZSBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBteSAlRGVmYXVsdHMgPSAleyAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9IHx8IHt9IH07CiAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkcyAoIHNvcnQga2V5cyAleyAkU2VsZi0+e0NvbmZpZ317RHluYW1pY0ZpZWxkfSB8fCB7fSB9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317RHluYW1pY0ZpZWxkfS0+eyREeW5hbWljRmllbGRzfSA9PSAyICkgewogICAgICAgICAgICAgICAgICAgICREZWZhdWx0c3siU2VhcmNoX0R5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkcyJ9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgQE9yZGVyZWREZWZhdWx0czsKICAgICAgICAgICAgaWYgKCVEZWZhdWx0cykgewoKICAgICAgICAgICAgICAgICMgb3JkZXJpbmcgYXR0cmlidXRlcyBvbiB0aGUgc2FtZSBvcmRlciBsaWtlIGluIEF0dHJpYnV0ZXMKICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbSAoQEF0dHJpYnV0ZXMpIHsKICAgICAgICAgICAgICAgICAgICBteSAkS2V5QXRyID0gJEl0ZW0tPntLZXl9OwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVEZWZhdWx0cyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkS2V5IGVxICRLZXlBdHIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBPcmRlcmVkRGVmYXVsdHMsICRLZXk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgS0VZOgogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKEBPcmRlcmVkRGVmYXVsdHMpIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAkS2V5IGVxICdEeW5hbWljRmllbGQnOyAgICAjIElnbm9yZSBlbnRyeSBmb3IgREYgY29uZmlnCiAgICAgICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgJEFscmVhZHlTaG93bnskS2V5fTsKICAgICAgICAgICAgICAgICAgICAkQWxyZWFkeVNob3dueyRLZXl9ID0gMTsKCiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoQXR0cmlidXRlcywgJEtleTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBJZiBubyBhdHRyaWJ1dGUgaXMgc2hvd24sIHNob3cgZnVsbHRleHQgc2VhcmNoLgogICAgICAgICAgICBpZiAoICFrZXlzICVBbHJlYWR5U2hvd24gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBTZWFyY2hBdHRyaWJ1dGVzLCAnRnVsbHRleHQnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSBAUHJvZmlsZUF0dHJpYnV0ZXM7CgogICAgICAgICMgc2hvdyBhdHRyaWJ1dGVzCiAgICAgICAgbXkgJEF0dHJpYnV0ZUlzVXNlZCA9IDA7CiAgICAgICAgS0VZOgogICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVHZXRQYXJhbSApIHsKICAgICAgICAgICAgbmV4dCBLRVkgaWYgISRLZXk7CiAgICAgICAgICAgIG5leHQgS0VZIGlmICFkZWZpbmVkICRHZXRQYXJhbXskS2V5fTsKICAgICAgICAgICAgbmV4dCBLRVkgaWYgJEdldFBhcmFteyRLZXl9IGVxICcnOwogICAgICAgICAgICBuZXh0IEtFWSBpZiByZWYgJEdldFBhcmFteyRLZXl9IGVxICdBUlJBWScgJiYgISRHZXRQYXJhbXskS2V5fS0+QCo7CgogICAgICAgICAgICAkQXR0cmlidXRlSXNVc2VkID0gMTsKCiAgICAgICAgICAgIHB1c2ggQFByb2ZpbGVBdHRyaWJ1dGVzLCAkS2V5OwogICAgICAgIH0KCiAgICAgICAgIyBpZiBubyBhdHRyaWJ1dGUgaXMgc2hvd24sIHNob3cgY29uZmlnaXRlbSBudW1iZXIKICAgICAgICBpZiAoICEkU2VsZi0+e1Byb2ZpbGV9ICkgewoKICAgICAgICAgICAgIyBtZXJnZSBzZWFyY2ggYW5kIHByb2ZpbGUgYXR0cmlidXRlcwogICAgICAgICAgICBpZiAoQFNlYXJjaEF0dHJpYnV0ZXMpIHsKICAgICAgICAgICAgICAgIEBQcm9maWxlQXR0cmlidXRlcyA9IHVuaXEoIEBQcm9maWxlQXR0cmlidXRlcywgQFNlYXJjaEF0dHJpYnV0ZXMgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIEBQcm9maWxlQXR0cmlidXRlcyA9IHVuaXEoIEBQcm9maWxlQXR0cmlidXRlcywgJ051bWJlcicgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnSVRTTVNlYXJjaFByb2ZpbGVBdHRyaWJ1dGVzJywKICAgICAgICAgICAgVmFsdWUgPT4gXEBQcm9maWxlQXR0cmlidXRlcywKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCB0ZW1wbGF0ZQogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIEFKQVggICAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHBlcmZvcm0gc2VhcmNoCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2VhcmNoJyApIHsKCiAgICAgICAgbXkgJFNlYXJjaERpYWxvZyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTZWFyY2hEaWFsb2cnICk7CgogICAgICAgICMgZmlsbCB1cCBwcm9maWxlIG5hbWUgKGUuZy4gd2l0aCBsYXN0LXNlYXJjaCkKICAgICAgICBpZiAoICEkU2VsZi0+e1Byb2ZpbGV9IHx8ICEkU2VsZi0+e1NhdmVQcm9maWxlfSApIHsKICAgICAgICAgICAgJFNlbGYtPntQcm9maWxlfSA9ICdsYXN0LXNlYXJjaCc7CiAgICAgICAgfQoKICAgICAgICAjIHN0b3JlIGxhc3Qgb3ZlcnZpZXcgc2NyZWVuCiAgICAgICAgbXkgJFVSTCA9ICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaDtQcm9maWxlPSRTZWxmLT57UHJvZmlsZX07IgogICAgICAgICAgICAuICJUYWtlTGFzdFNlYXJjaD0xO1N0YXJ0SGl0PSRTZWxmLT57U3RhcnRIaXR9O1N1YmFjdGlvbj1TZWFyY2g7IgogICAgICAgICAgICAuICJPcmRlckJ5PSRTZWxmLT57T3JkZXJCeX07U29ydEJ5PSRTZWxmLT57U29ydEJ5fSI7CgogICAgICAgIGlmICgkQ2xhc3NJRCkgewogICAgICAgICAgICAkVVJMIC49ICI7Q2xhc3NJRD0kQ2xhc3NJRCI7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBzZXNzaW9uIG9iamVjdAogICAgICAgIG15ICRTZXNzaW9uT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyk7CgogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKICAgICAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGFzc0lEIGlzIHJlcXVpcmVkIGZvciB0aGUgc2VhcmNoIG1hc2sgYW5kIGZvciBhY3R1YWwgc2VhcmNoaW5nCiAgICAgICAgaWYgKCAhJENsYXNzSUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDbGFzc0lEIGlzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiB1c2VyIGlzIGFsbG93ZWQgdG8gc2VhcmNoIGNsYXNzCiAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBlcnJvciBzY3JlZW4KICAgICAgICBpZiAoICEkSGFzQWNjZXNzICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGN1cnJlbnQgZGVmaW5pdGlvbgogICAgICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBhYm9ydCwgaWYgbm8gZGVmaW5pdGlvbiBpcyBkZWZpbmVkCiAgICAgICAgaWYgKCAhJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJywgJENsYXNzSUQgKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICAgICAgbXkgJVNldElubmVyRmllbGRzOwogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ1NldCc7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0luY2x1ZGV9ICk7CgogICAgICAgICAgICAjIGl0ZXJhdGUgdGhlIGVudGlyZSBJbmNsdWRlIHN0cnVjdHVyZSB0byBnZXQgdGhlIHZlcnNpb25lZCBkeW5hbWljIGZpZWxkIGNvbmZpZ3MKICAgICAgICAgICAgSU5DTFVERUVMRU1FTlQ6CiAgICAgICAgICAgIGZvciBteSAkSW5jbHVkZUVsZW1lbnQgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfS0+QCogKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkSW5jbHVkZUVsZW1lbnQtPntERn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEluY2x1ZGVFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9ICkgLiAnOjonCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkSW5jbHVkZUVsZW1lbnQtPntEZWZpbml0aW9ufXtMYWJlbH0gKTsKICAgICAgICAgICAgICAgICAgICAkU2V0SW5uZXJGaWVsZHN7ICRJbmNsdWRlRWxlbWVudC0+e0RGfSB9ID0gJEluY2x1ZGVFbGVtZW50LT57RGVmaW5pdGlvbn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9ICkgewoKICAgICAgICAgICAgICAgICAgICBuZXh0IElOQ0xVREVFTEVNRU5UIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9ICk7CgogICAgICAgICAgICAgICAgICAgIFJPVzoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFJvdyAoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9e1Jvd3N9LT5AKiApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgUk9XIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJFJvdyk7CgogICAgICAgICAgICAgICAgICAgICAgICBST1dFTEVNRU5UOgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFJvd0VsZW1lbnQgKCAkUm93LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFJvd0VsZW1lbnQtPntERn0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFJvd0VsZW1lbnQtPntEZWZpbml0aW9ufXtMYWJlbH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0gKSAuICc6OicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRSb3dFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNldElubmVyRmllbGRzeyAkUm93RWxlbWVudC0+e0RGfSB9ID0gJFJvd0VsZW1lbnQtPntEZWZpbml0aW9ufTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9ID0gewogICAgICAgICAgICAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqLAogICAgICAgICAgICAlU2V0SW5uZXJGaWVsZHMsCiAgICAgICAgfTsKCiAgICAgICAgIyB3YWxrIHRocm91Z2ggZGVmaW5pdGlvbiB0byBjaGVjayBwZXJtaXNzaW9ucyBvbiBwYWdlcyB3aGljaCBjb250YWluIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJVBlcm1pdHRlZER5bmFtaWNGaWVsZHM7CiAgICAgICAgbXkgJUdyb3VwTG9va3VwOwoKICAgICAgICBQQUdFOgogICAgICAgIGZvciBteSAkUGFnZSAoICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn17UGFnZXN9LT5AKiApIHsKCiAgICAgICAgICAgICMgSW50ZXJmYWNlcyBpcyBvcHRpb25hbCwgZWZmZWN0aXZlbHkgZGVmYXVsdCB0byBbICdBZ2VudCcgXQogICAgICAgICAgICBpZiAoICRQYWdlLT57SW50ZXJmYWNlc30gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRfIGVxICdBZ2VudCcgfSAkUGFnZS0+e0ludGVyZmFjZXN9LT5AKjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkUGFnZS0+e0dyb3Vwc30gKSB7CiAgICAgICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+UGVybWlzc2lvblVzZXJHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBncmFudCBhY2Nlc3MgdG8gdGhlIHBhZ2Ugb25seSB3aGVuIHRoZSB1c2VyIGlzIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGdyb3VwcwogICAgICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkR3JvdXBMb29rdXB7JF99IH0gJFBhZ2UtPntHcm91cHN9LT5AKjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgU0VDVElPTjoKICAgICAgICAgICAgZm9yIG15ICRTZWN0aW9uQ29uZmlnICggJFBhZ2UtPntDb250ZW50fS0+QCogKSB7CiAgICAgICAgICAgICAgICBteSAkU2VjdGlvbiA9ICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn17U2VjdGlvbnN9eyAkU2VjdGlvbkNvbmZpZy0+e1NlY3Rpb259IH07CgogICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OIHVubGVzcyAkU2VjdGlvbjsKICAgICAgICAgICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWN0aW9uLT57VHlwZX0gbmUgJ0R5bmFtaWNGaWVsZHMnICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT047CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZG8gbm90IHByb2NlZWQgaWYgY29udGVudCBpcyBlbXB0eQogICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OIHVubGVzcyAkU2VjdGlvbi0+e0NvbnRlbnR9LT5AKjsKCiAgICAgICAgICAgICAgICBteSAkU2VjdGlvbkRGcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RNYXNrKAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJFNlY3Rpb24tPntDb250ZW50fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFNlY3Rpb25ERnMpICkgewogICAgICAgICAgICAgICAgICAgIGZvciBteSAkREZOYW1lICggJFNlY3Rpb25ERnMtPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICAkUGVybWl0dGVkRHluYW1pY0ZpZWxkc3skREZOYW1lfSA9IDE7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGFsc28gaW5jbHVkZSBTZXQtaW5uZXIgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyRERk5hbWV9e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkU2V0SW5uZXJGaWVsZHMgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0TWFzaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskREZOYW1lfXtDb25maWd9e0luY2x1ZGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkU2V0SW5uZXJGaWVsZHMpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkSW5uZXJERiAoICRTZXRJbm5lckZpZWxkcy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRQZXJtaXR0ZWREeW5hbWljRmllbGRzeyRJbm5lckRGfSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNvbnZlcnQgYXR0cmlidXRlcwogICAgICAgIGlmICggJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gJiYgcmVmICRHZXRQYXJhbXtTaG93bkF0dHJpYnV0ZXN9IGVxICcnICkgewogICAgICAgICAgICAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSA9IFsgc3BsaXQgLzsvLCAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSBdOwogICAgICAgIH0KCiAgICAgICAgIyBzYXZlIHNlYXJjaCBwcm9maWxlICh1bmRlciBsYXN0LXNlYXJjaCBvciByZWFsIHByb2ZpbGUgbmFtZSkKICAgICAgICAkU2VsZi0+e1NhdmVQcm9maWxlfSA9IDE7CgogICAgICAgICMgcmVtZW1iZXIgbGFzdCBzZWFyY2ggdmFsdWVzIG9ubHkgaWYgc2VhcmNoIGlzIGNhbGxlZCBmcm9tIGEgc2VhcmNoIGRpYWxvZwogICAgICAgICMgbm90IGZyb20gcmVzdWx0cyBwYWdlCiAgICAgICAgaWYgKCAkU2VsZi0+e1NhdmVQcm9maWxlfSAmJiAkU2VsZi0+e1Byb2ZpbGV9ICYmICRTZWFyY2hEaWFsb2cgKSB7CgogICAgICAgICAgICAjIHJlbW92ZSBvbGQgcHJvZmlsZSBzdHVmZgogICAgICAgICAgICAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZURlbGV0ZSgKICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcgLiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgaW5zZXJ0IG5ldyBwcm9maWxlIHBhcmFtcwogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlR2V0UGFyYW0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskS2V5fSAmJiAkS2V5IG5lICdXaGF0JyApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZUFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDb25maWdJdGVtU2VhcmNoJyAuICRDbGFzc0lELAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgID0+ICRLZXksCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkR2V0UGFyYW17JEtleX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJUF0dHJpYnV0ZUxvb2t1cDsKCiAgICAgICAgIyBjcmVhdGUgYXR0cmlidXRlIGxvb2t1cCB0YWJsZQogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggQHsgJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gfHwgW10gfSApIHsKICAgICAgICAgICAgJEF0dHJpYnV0ZUxvb2t1cHskQXR0cmlidXRlfSA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGR5bmFtaWMgZmllbGRzIHNlYXJjaCBwYXJhbWV0ZXJzIGZvciB0aWNrZXQgc2VhcmNoCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnM7CgogICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkU2VsZi0+e0NvbmZpZ317RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkUGVybWl0dGVkRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgISRBdHRyaWJ1dGVMb29rdXB7CiAgICAgICAgICAgICAgICAgICAgICAgICdMYWJlbFNlYXJjaF9EeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFByZWZlcmVuY2UtPntUeXBlfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBwcm9maWxlCiAgICAgICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVyID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkU2VhcmNoUGFyYW1ldGVyICkgewogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSBAU2VhcmNoUmVzdWx0TGlzdDsKCiAgICAgICAgIyBzdGFydCBzZWFyY2ggaWYgY2FsbGVkIGZyb20gYSBzZWFyY2ggZGlhbG9nIG9yIGZyb20gYSByZXN1bHRzIHBhZ2UKICAgICAgICBpZiAoICRTZWFyY2hEaWFsb2cgfHwgJFNlbGYtPntUYWtlTGFzdFNlYXJjaH0gKSB7CgogICAgICAgICAgICAjIHN0YXJ0IHNlYXJjaAogICAgICAgICAgICBAU2VhcmNoUmVzdWx0TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMsCiAgICAgICAgICAgICAgICBPcmRlckJ5ICA9PiBbICRTZWxmLT57T3JkZXJCeX0gXSwKICAgICAgICAgICAgICAgIFNvcnRCeSAgID0+IFsgJFNlbGYtPntTb3J0Qnl9IF0sCiAgICAgICAgICAgICAgICBMaW1pdCAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgICAgIENsYXNzSURzID0+IFskQ2xhc3NJRF0sCiAgICAgICAgICAgICAgICBSZXN1bHQgICA9PiAnQVJSQVknLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIGNvbmZjb25maWcgaXRlbSBkeW5hbWljIGZpZWxkcyBmb3IgQ1NWIGRpc3BsYXkKICAgICAgICBteSAkQ1NWRHluYW1pY0ZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgICAgICBPYmplY3RUeXBlICA9PiBbJ0lUU01Db25maWdJdGVtJ10sCiAgICAgICAgICAgIEZpZWxkRmlsdGVyID0+ICRTZWxmLT57Q29uZmlnfXtTZWFyY2hDU1ZEeW5hbWljRmllbGR9IHx8IHt9LAogICAgICAgICk7CgogICAgICAgICMgQ1NWIG91dHB1dAogICAgICAgIGlmICgKICAgICAgICAgICAgJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdDU1YnCiAgICAgICAgICAgIHx8CiAgICAgICAgICAgICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnRXhjZWwnCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICMgY3JlYXRlIGhlYWQgKGFjdHVhbCBoZWFkIGFuZCBoZWFkIGZvciBkYXRhIGZpbGwpCiAgICAgICAgICAgIG15IEBUbXBDU1ZIZWFkID0gQHsgJFNlbGYtPntDb25maWd9e1NlYXJjaENTVkRhdGF9IH07CiAgICAgICAgICAgIG15IEBDU1ZIZWFkICAgID0gQHsgJFNlbGYtPntDb25maWd9e1NlYXJjaENTVkRhdGF9IH07CgogICAgICAgICAgICAjIGluY2x1ZGUgdGhlIHNlbGVjdGVkIGR5bmFtaWMgZmllbGRzIGluIENWUyByZXN1bHRzCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyRDU1ZEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSBlcSAnJzsKCiAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSBAQ1NWRGF0YTsKCiAgICAgICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBTZWFyY2hSZXN1bHRMaXN0KSB7CgogICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgYWNjZXNzIHJpZ2h0cwogICAgICAgICAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkSGFzQWNjZXNzOwoKICAgICAgICAgICAgICAgICMgZ2V0IHZlcnNpb24KICAgICAgICAgICAgICAgIG15ICRMYXN0VmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY3N2IHF1b3RlCiAgICAgICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgICAgICBAQ1NWSGVhZCA9IEB7ICRTZWxmLT57Q29uZmlnfS0+e1NlYXJjaENTVkRhdGF9IH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzdG9yZSBkYXRhCiAgICAgICAgICAgICAgICBteSBARGF0YTsKICAgICAgICAgICAgICAgIGZvciBteSAkSGVhZGVyIChAVG1wQ1NWSGVhZCkgewoKICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGhlYWRlciBpcyBhIGR5bmFtaWMgZmllbGQgYW5kIGdldCB0aGUgdmFsdWUgZnJvbSBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgICAgICAgICAgIyBiYWNrZW5kCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyID1+IG17XEEgRHluYW1pY0ZpZWxkXyAoIFthLXpBLVpcZFwtXSsgKSBcen14bXMgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGxvb3Agb3ZlciB0aGUgZHluYW1pYyBmaWVsZHMgY29uZmlndXJlZCBmb3IgQ1NWIG91dHB1dAogICAgICAgICAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBza2lwIGFsbCBmaWVsZHMgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aXRoIGN1cnJlbnQgZmllbGQgbmFtZSAoJDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGggb3V0IHRoZSAnRHluYW1pY0ZpZWxkXycgcHJlZml4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gbmUgJDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgdGhlIHZhbHVlIGFzIGZvciBwcmludCAodG8gY29ycmVjdGx5IGRpc3BsYXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJExhc3RWZXJzaW9uLT57JEhlYWRlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJFZhbHVlU3RyZy0+e1ZhbHVlfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRlcm1pbmF0ZSB0aGUgRFlOQU1JQ0ZJRUxEIGxvb3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSByZXRyaWV2ZSBkYXRhIGZyb20gYXJ0aWNsZQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkTGFzdFZlcnNpb24tPnskSGVhZGVyfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZEYXRhLCBcQERhdGE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY3N2IHF1b3RlCiAgICAgICAgICAgICMgdHJhbnNsYXRlIG5vbiBleGlzdGluZyBoZWFkZXIgbWF5IHJlc3VsdCBpbiBhIGdhcmJhZ2UgZmlsZQogICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgIEBDU1ZIZWFkID0gQHsgJFNlbGYtPntDb25maWd9LT57U2VhcmNoQ1NWRGF0YX0gfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0cmFuc2xhdGUgaGVhZGVycwogICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKCiAgICAgICAgICAgICAgICAjIHJlcGxhY2UgQ29uZmlnSXRlbU51bWJlciBoZWFkZXIgd2l0aCB0aGUgY3VycmVudCBDb25maWdJdGVtTnVtYmVyIGhvb2sgZnJvbSBzeXNjb25maWcKICAgICAgICAgICAgICAgIGlmICggJEhlYWRlciBlcSAnQ29uZmlnSXRlbU51bWJlcicgKSB7CiAgICAgICAgICAgICAgICAgICAgJEhlYWRlciA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06Okhvb2snKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEhlYWRlcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgR2V0IFNlcGFyYXRvciBmcm9tIGxhbmd1YWdlIGZpbGUuCiAgICAgICAgICAgIG15ICRVc2VyQ1NWU2VwYXJhdG9yID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+e1NlcGFyYXRvcn07CgogICAgICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKS0+e0NTVlNlcGFyYXRvcn0tPntBY3RpdmV9ICkgewogICAgICAgICAgICAgICAgbXkgJVVzZXJEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICRVc2VyRGF0YXtVc2VyQ1NWU2VwYXJhdG9yfSApIHsKICAgICAgICAgICAgICAgICAgICAkVXNlckNTVlNlcGFyYXRvciA9ICRVc2VyRGF0YXtVc2VyQ1NWU2VwYXJhdG9yfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJENTVk9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNTVicpOwogICAgICAgICAgICBteSAkQ3VyU3lzRFRPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ0NTVicgKSB7CgogICAgICAgICAgICAgICAgIyBBc3NlbWJsZSBDU1YgZGF0YS4KICAgICAgICAgICAgICAgIG15ICRDU1YgPSAkQ1NWT2JqZWN0LT5BcnJheTJDU1YoCiAgICAgICAgICAgICAgICAgICAgSGVhZCAgICAgID0+IFxAQ1NWSGVhZCwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgPT4gXEBDU1ZEYXRhLAogICAgICAgICAgICAgICAgICAgIFNlcGFyYXRvciA9PiAkVXNlckNTVlNlcGFyYXRvciwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBSZXR1cm4gQ1NWIHRvIGRvd25sb2FkLgogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgPT4gc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5nZV9zZWFyY2hfJXMuY3N2JywKICAgICAgICAgICAgICAgICAgICAgICAgJEN1clN5c0RUT2JqZWN0LT5Gb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQgPT4gJyVGXyVILSVNJywKICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICJ0ZXh0L2NzdjsgY2hhcnNldD0iIC4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ1NWLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnRXhjZWwnICkgewoKICAgICAgICAgICAgICAgICMgQXNzZW1ibGUgRXhjZWwgZGF0YS4KICAgICAgICAgICAgICAgIG15ICRFeGNlbCA9ICRDU1ZPYmplY3QtPkFycmF5MkNTVigKICAgICAgICAgICAgICAgICAgICBIZWFkICAgPT4gXEBDU1ZIZWFkLAogICAgICAgICAgICAgICAgICAgIERhdGEgICA9PiBcQENTVkRhdGEsCiAgICAgICAgICAgICAgICAgICAgRm9ybWF0ID0+ICdFeGNlbCcsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgUmV0dXJuIEV4Y2VsIHRvIGRvd25sb2FkLgogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgPT4gc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5nZV9zZWFyY2hfJXMueGxzeCcsCiAgICAgICAgICAgICAgICAgICAgICAgICRDdXJTeXNEVE9iamVjdC0+Rm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0ID0+ICclRl8lSC0lTScsCiAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQiLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRFeGNlbCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcHJpbnQgUERGIG91dHB1dAogICAgICAgIGVsc2lmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdQcmludCcgKSB7CgogICAgICAgICAgICBteSBAUERGRGF0YTsKCiAgICAgICAgICAgICMgZ2V0IHBkZiBvYmplY3QKICAgICAgICAgICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAgICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBTZWFyY2hSZXN1bHRMaXN0KSB7CgogICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgYWNjZXNzIHJpZ2h0cwogICAgICAgICAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkSGFzQWNjZXNzOwoKICAgICAgICAgICAgICAgICMgZ2V0IHZlcnNpb24KICAgICAgICAgICAgICAgIG15ICRMYXN0VmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCBwZGYgcm93cwogICAgICAgICAgICAgICAgbXkgQFBERlJvdzsKICAgICAgICAgICAgICAgIGZvciBteSAkU3RvcmVEYXRhIChxdyhDbGFzcyBJbmNpU3RhdGUgTmFtZSBOdW1iZXIgRGVwbFN0YXRlIFZlcnNpb25JRCBDcmVhdGVUaW1lKSkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgJExhc3RWZXJzaW9uLT57JFN0b3JlRGF0YX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBQREZEYXRhLCBcQFBERlJvdzsKCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgUERGIE91dHB1dAogICAgICAgICAgICBteSAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NvbmZpZ3VyYXRpb24gSXRlbScpIC4gJyAnCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnU2VhcmNoJyk7CiAgICAgICAgICAgIG15ICRQcmludGVkQnkgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ3ByaW50ZWQgYnknKTsKICAgICAgICAgICAgbXkgJFBhZ2UgICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUGFnZScpOwogICAgICAgICAgICBteSAkVGltZSAgICAgID0gJExheW91dE9iamVjdC0+e1RpbWV9OwoKICAgICAgICAgICAgIyBnZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMKICAgICAgICAgICAgbXkgJE1heFBhZ2VzID0gJENvbmZpZ09iamVjdC0+R2V0KCdQREY6Ok1heFBhZ2VzJyk7CiAgICAgICAgICAgIGlmICggISRNYXhQYWdlcyB8fCAkTWF4UGFnZXMgPCAxIHx8ICRNYXhQYWdlcyA+IDEwMDAgKSB7CiAgICAgICAgICAgICAgICAkTWF4UGFnZXMgPSAxMDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY3JlYXRlIHRoZSBoZWFkZXIKICAgICAgICAgICAgbXkgJENlbGxEYXRhOwoKICAgICAgICAgICAgIyBvdXRwdXQgJ05vIFJlc3VsdCcsIGlmIG5vIGNvbnRlbnQgd2FzIGdpdmVuCiAgICAgICAgICAgIGlmIChAUERGRGF0YSkgewogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDbGFzcycpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsxXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsxXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsyXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdOYW1lJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzJdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzNdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ051bWJlcicpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlszXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPls0XS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzRdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzVdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1ZlcnNpb24nKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bNV0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bNl0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3JlYXRlIFRpbWUnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bNl0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgY29udGVudCBhcnJheQogICAgICAgICAgICAgICAgbXkgJENvdW50ZXJSb3cgPSAxOwogICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKEBQREZEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJENvdW50ZXJDb2x1bW4gPSAwOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29udGVudCAoIEB7JFJvd30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WyRDb3VudGVyUm93XS0+WyRDb3VudGVyQ29sdW1uXS0+e0NvbnRlbnR9ID0gJENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICRDb3VudGVyQ29sdW1uKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRDb3VudGVyUm93Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ05vIFJlc3VsdCEnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwYWdlIHBhcmFtcwogICAgICAgICAgICBteSAlUGFnZVBhcmFtOwogICAgICAgICAgICAkUGFnZVBhcmFte1BhZ2VPcmllbnRhdGlvbn0gPSAnbGFuZHNjYXBlJzsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5Ub3B9ICAgICAgID0gMzA7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luUmlnaHR9ICAgICA9IDQwOwogICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpbkJvdHRvbX0gICAgPSA0MDsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5MZWZ0fSAgICAgID0gNDA7CiAgICAgICAgICAgICRQYWdlUGFyYW17SGVhZGVyUmlnaHR9ICAgICA9ICRUaXRsZTsKCiAgICAgICAgICAgICMgdGFibGUgcGFyYW1zCiAgICAgICAgICAgIG15ICVUYWJsZVBhcmFtOwogICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX0gICAgICAgICAgICA9ICRDZWxsRGF0YTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgICAgICA9IDA7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvckV2ZW59ID0gJyNEREREREQnOwogICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICA9IDE7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgICAgID0gMzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICAgICAgPSAzOwoKICAgICAgICAgICAgIyBjcmVhdGUgbmV3IHBkZiBkb2N1bWVudAogICAgICAgICAgICAkUERGT2JqZWN0LT5Eb2N1bWVudE5ldygKICAgICAgICAgICAgICAgIFRpdGxlICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3QnKSAuICc6ICcgLiAkVGl0bGUsCiAgICAgICAgICAgICAgICBFbmNvZGUgPT4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc3RhcnQgdGFibGUgb3V0cHV0CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZVBhcmFtLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2UgLiAnIDEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTYsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCB0aXRsZQogICAgICAgICAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgICAgICAgICAgVGV4dCAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgRm9udFNpemUgPT4gMTMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICAgICAgWSAgICA9PiAtNiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0ICJwcmludGVkIGJ5IgogICAgICAgICAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgICAgICAgICAgVGV4dCA9PiAkUHJpbnRlZEJ5IC4gJyAnCiAgICAgICAgICAgICAgICAgICAgLiAkU2VsZi0+e1VzZXJGdWxsbmFtZX0gLiAnICcKICAgICAgICAgICAgICAgICAgICAuICRUaW1lLAogICAgICAgICAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgICAgICBZICAgID0+IC0xNCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFBBR0U6CiAgICAgICAgICAgIGZvciBteSAkQ291bnQgKCAyIC4uICRNYXhQYWdlcyApIHsKCiAgICAgICAgICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoJVRhYmxlUGFyYW0pOwoKICAgICAgICAgICAgICAgICMgc3RvcCBvdXRwdXQgb3IgYW5vdGhlciBwYWdlCiAgICAgICAgICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICAgICAlUGFnZVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZSAuICcgJyAuICRDb3VudCwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJldHVybiB0aGUgcGRmIGRvY3VtZW50CiAgICAgICAgICAgIG15ICRDdXJyZW50U3lzdGVtRFRPYmogPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAgICAgbXkgJFBERlN0cmluZyAgICAgICAgICA9ICRQREZPYmplY3QtPkRvY3VtZW50T3V0cHV0KCk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAgICAgRmlsZW5hbWUgPT4gc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAnY29uZmlnaXRlbV9zZWFyY2hfJXNfJXMucGRmJywKICAgICAgICAgICAgICAgICAgICAkQ3VycmVudFN5c3RlbURUT2JqLT5Gb3JtYXQoIEZvcm1hdCA9PiAnJUZfJUgtJU0nICksCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gImFwcGxpY2F0aW9uL3BkZiIsCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkUERGU3RyaW5nLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIG5vcm1hbCBIVE1MIG91dHB1dAogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBzdGFydCBodG1sIHBhZ2UKICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgICAgICMgdXNlIGNsYXNzbmFtZSBhcyBmaWx0ZXIKICAgICAgICAgICAgJFNlbGYtPntGaWx0ZXJ9ID0gJENsYXNzTGlzdC0+eyRDbGFzc0lEfSAgICAgICAgICAgICAgICAgICAgfHwgJ0FsbCc7CiAgICAgICAgICAgICRTZWxmLT57Vmlld30gICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApIHx8ICcnOwoKICAgICAgICAgICAgIyBzaG93IGNvbmZpZyBpdGVtcwogICAgICAgICAgICBteSAkTGlua1BhZ2UgPSAnRmlsdGVyPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e0ZpbHRlcn0gKQogICAgICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntWaWV3fSApCiAgICAgICAgICAgICAgICAuICc7U29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57U29ydEJ5fSApCiAgICAgICAgICAgICAgICAuICc7T3JkZXJCeT0nCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntPcmRlckJ5fSApCiAgICAgICAgICAgICAgICAuICc7UHJvZmlsZT0nIC4gJFNlbGYtPntQcm9maWxlfSAuICc7VGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoJwogICAgICAgICAgICAgICAgLiAnO0NsYXNzSUQ9JyAuICRDbGFzc0lECiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtTb3J0ID0gJ0ZpbHRlcj0nCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntGaWx0ZXJ9ICkKICAgICAgICAgICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57Vmlld30gKQogICAgICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRTZWxmLT57UHJvZmlsZX0gLiAnO1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaCcKICAgICAgICAgICAgICAgIC4gJztDbGFzc0lEPScgLiAkQ2xhc3NJRAogICAgICAgICAgICAgICAgLiAnOyc7CiAgICAgICAgICAgIG15ICRMaW5rRmlsdGVyID0gJ1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaDtQcm9maWxlPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e1Byb2ZpbGV9ICkKICAgICAgICAgICAgICAgIC4gJztDbGFzc0lEPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkQ2xhc3NJRCApCiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtCYWNrID0gJ1N1YmFjdGlvbj1Mb2FkUHJvZmlsZTtQcm9maWxlPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e1Byb2ZpbGV9ICkKICAgICAgICAgICAgICAgIC4gJztDbGFzc0lEPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkQ2xhc3NJRCApCiAgICAgICAgICAgICAgICAuICc7VGFrZUxhc3RTZWFyY2g9MTsnOwoKICAgICAgICAgICAgbXkgJENsYXNzTmFtZSA9ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH07CiAgICAgICAgICAgIG15ICRUaXRsZSAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJykKICAgICAgICAgICAgICAgIC4gJyAnCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ2xhc3MnKQogICAgICAgICAgICAgICAgLiAnICcKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRDbGFzc05hbWUpOwoKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiBcQFNlYXJjaFJlc3VsdExpc3QsCiAgICAgICAgICAgICAgICBUb3RhbCAgICAgICAgID0+IHNjYWxhciBAU2VhcmNoUmVzdWx0TGlzdCwKICAgICAgICAgICAgICAgIFZpZXcgICAgICAgICAgPT4gJFNlbGYtPntWaWV3fSwKICAgICAgICAgICAgICAgIEZpbHRlciAgICAgICAgPT4gJENsYXNzTmFtZSwKICAgICAgICAgICAgICAgIEVudiAgICAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgICAgICAgICBMaW5rUGFnZSAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICAgICAgICAgIExpbmtTb3J0ICAgICAgPT4gJExpbmtTb3J0LAogICAgICAgICAgICAgICAgTGlua0ZpbHRlciAgICA9PiAkTGlua0ZpbHRlciwKICAgICAgICAgICAgICAgIExpbmtCYWNrICAgICAgPT4gJExpbmtCYWNrLAogICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgVGl0bGVOYW1lICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgID0+ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntTb3J0Qnl9ICksCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgID0+ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntPcmRlckJ5fSApLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIFJlcXVlc3RVUkwgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgICAgICAgICAgICAgQnVsayAgICAgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgICAgICBQcm9maWxlID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBBY3Rpb24gID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGJ1aWxkIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgY2FsbCBzZWFyY2ggZGlhbG9nIGZyb20gc2VhcmNoIGVtcHR5IHNjcmVlbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzZSB7CgogICAgICAgICMgc2hvdyBkZWZhdWx0IHNlYXJjaCBzY3JlZW4KICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtT3BlblNlYXJjaERpYWxvZycsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgIFByb2ZpbGUgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBBY3Rpb24gID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCB0ZW1wbGF0ZQogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKMTsK</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemTreeView.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHslUGFyYW19LCAkVHlwZTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQYXJhbU9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZ2V0IG5lZWRlZCBwYXJhbWV0ZXJzLAogICAgIyBvbmx5IHRoZSBWZXJzaW9uSUQgaXMgbmVlZGVkIGFzIHRoZSBWZXJzaW9uSUQgZGV0ZXJtaW5lcyB0aGUgQ29uZmlnSXRlbUlECiAgICBteSAlR2V0UGFyYW07CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVmVyc2lvbklEKSkgewogICAgICAgICRHZXRQYXJhbXskTmVlZGVkfSAvLz0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJE5lZWRlZCApOwogICAgICAgIGlmICggISRHZXRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdOZWVkICVzJywgJE5lZWRlZCApLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmVyc2lvbklEICAgID0gJEdldFBhcmFte1ZlcnNpb25JRH07CiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25Db25maWdJdGVtSURHZXQoIFZlcnNpb25JRCA9PiAkVmVyc2lvbklEICk7CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEZyb250ZW5kQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwogICAgbXkgJEFjY2VzcyAgICAgICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgVHlwZSAgID0+ICRGcm9udGVuZENvbmZpZy0+e1Blcm1pc3Npb259LAogICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGVycm9yIHNjcmVlbgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICBNZXNzYWdlICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ1lvdSBuZWVkICVzIHBlcm1pc3Npb25zIScsICRGcm9udGVuZENvbmZpZy0+e1Blcm1pc3Npb259ICksCiAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICkgdW5sZXNzICRBY2Nlc3M7CgogICAgbXkgJERlcHRoID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0RlcHRoJyApCiAgICAgICAgfHwKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkNNREJUcmVlVmlldzo6RGVmYXVsdERlcHRoIikKICAgICAgICB8fAogICAgICAgIDE7CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0xvYWRUcmVlVmlldycgKSB7CgogICAgICAgICMgdGhlIEhUTUwgY29udGFpbnMgdGhlIGluZm9ybWF0aW9uIGZvciBkcmF3aW5nIHRoZSBncmFwaAogICAgICAgIG15ICRDYW52YXNIVE1MID0gJExheW91dE9iamVjdC0+R2VuZXJhdGVIaWVyYXJjaHlHcmFwaCgKICAgICAgICAgICAgRGVwdGggICAgICAgID0+ICREZXB0aCwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICBTZXNzaW9uSUQgICAgPT4gJFNlbGYtPntTZXNzaW9uSUR9CiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ2FudmFzSFRNTCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuYW1lIGFuZCBudW1iZXIgZm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgQ2FjaGUgICAgICAgID0+IDEsCiAgICApOwoKICAgICMgVGhlIGFjdHVhbCB0cmVlIHdpbGwgYmUgd3JpdHRlbiBsYXRlciBpbnRvIHRoZSBkaXYgd2l0aCB0aGUgSUQgJ0NhbnZhcycuCiAgICAjIFRoZSBpbmZvcm1hdGlvbiBmb3IgZHJhd2luZyB0aGUgZ3JhcGggd2lsbCBiZSBmZXRjaGVkIHdpdGggJ0xvYWRUcmVlVmlldycuCiAgICAjIFNlZSB2YXIvaHR0cGQvaHRkb2NzL2pzL0NvcmUuQWdlbnQuVHJlZVZpZXcuanMgZm9yIHRoZSBmdW5jdGlvbiBVcGRhdGVUcmVlKCkuCiAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICAgICApLAogICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgICAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbU5hbWUgICA9PiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICBEZXB0aCAgICAgICAgICAgID0+ICREZXB0aCwKICAgICAgICAgICAgICAgIFNlc3Npb25JRCAgICAgICAgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICAgICAgU2hvd0xpbmtMYWJlbHMgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIkNNREJUcmVlVmlldzo6U2hvd0xpbmtMYWJlbHMiKSB8fCAnWWVzJywKICAgICAgICAgICAgfSwKICAgICAgICApLAogICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlciggVHlwZSA9PiAnU21hbGwnICk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemZoom.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAkQ29uZmlnSXRlbUlEICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwogICAgbXkgJEdldFBhcmFtVmVyc2lvbklEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZlcnNpb25JRCcgKTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdAogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzCiAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFR5cGUgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IiktPntQZXJtaXNzaW9ufSwKICAgICk7CgogICAgaWYgKCAhJEhhc0FjY2VzcyApIHsKCiAgICAgICAgIyBlcnJvciBwYWdlCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbnRlbnQKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJEdldFBhcmFtVmVyc2lvbklELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CiAgICBpZiAoICEkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NvbmZpZ0l0ZW0gbm90IGZvdW5kIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB2ZXJzaW9uIGxpc3QKICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uWm9vbUxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSgkVmVyc2lvbkxpc3QpICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdObyB2ZXJzaW9ucyBmb3VuZCEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBUT0RPOiBDb21wYXJlIHdpdGggbGVnYWN5IGNvZGUgdG8gY2hlY2sgd2hldGhlciB0aGlzIGlzIGEgZ29vZCBwbGFjZS4gTGluZSAyNTYgdGhyb3dzIGFuIGVycm9yIGlmIG5vdCBzZXQsIGVsc2UKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH07CgogICAgIyBydW4gY29uZmlnIGl0ZW0gbWVudSBtb2R1bGVzCiAgICBpZiAoIHJlZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6TWVudU1vZHVsZScpIGVxICdIQVNIJyApIHsKICAgICAgICBteSAlTWVudXMgICA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlJykgfTsKICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgZm9yIG15ICRNZW51ICggc29ydCBrZXlzICVNZW51cyApIHsKCiAgICAgICAgICAgICMgbG9hZCBtb2R1bGUKICAgICAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAkTWVudXN7JE1lbnV9LT57TW9kdWxlfSApICkgewoKICAgICAgICAgICAgICAgIG15ICRPYmplY3QgPSAkTWVudXN7JE1lbnV9LT57TW9kdWxlfS0+bmV3KAogICAgICAgICAgICAgICAgICAgICV7JFNlbGZ9LAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkU2VsZi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IGNsYXNzZXMKICAgICAgICAgICAgICAgIGlmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gZXEgJ1BvcFVwJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE1lbnVzeyRNZW51fS0+e01lbnVDbGFzc30gPSAnQXNQb3B1cCc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gZXEgJ0JhY2snICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTWVudXN7JE1lbnV9LT57TWVudUNsYXNzfSA9ICdIaXN0b3J5QmFjayc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHJ1biBtb2R1bGUKICAgICAgICAgICAgICAgICRDb3VudGVyID0gJE9iamVjdC0+UnVuKAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgICAgICAgICAgICAgICAgIENvdW50ZXIgICAgPT4gJENvdW50ZXIsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnICAgICA9PiAkTWVudXN7JE1lbnV9LAogICAgICAgICAgICAgICAgICAgIE1lbnVJRCAgICAgPT4gJE1lbnUsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBpbmNpZGVudCBzaWduYWwKICAgIG15ICVJbmNpU2lnbmFscyA9ICgKICAgICAgICBUcmFuc2xhdGFibGUoJ29wZXJhdGlvbmFsJykgPT4gJ2dyZWVubGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ3dhcm5pbmcnKSAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCdpbmNpZGVudCcpICAgID0+ICdyZWRsZWQnLAogICAgKTsKCiAgICAjIHRvIHN0b3JlIHRoZSBjb2xvciBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzCiAgICBteSAlRGVwbFNpZ25hbHM7CgogICAgIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdAogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgbGlzdCBvZiBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJERlcGxveW1lbnRTdGF0ZXNMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgIyBzZXQgZGVwbG95bWVudCBzdHlsZSBjb2xvcnMKICAgIG15ICRTdHlsZUNsYXNzZXMgPSAnJzsKCiAgICBJVEVNSUQ6CiAgICBmb3IgbXkgJEl0ZW1JRCAoIHNvcnQga2V5cyAleyREZXBsb3ltZW50U3RhdGVzTGlzdH0gKSB7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgcHJlZmVyZW5jZXMKICAgICAgICBteSAlUHJlZmVyZW5jZXMgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYSBjb2xvciBpcyBkZWZpbmVkIGluIHByZWZlcmVuY2VzCiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRQcmVmZXJlbmNlc3tDb2xvcn07CiAgICAgICAgbXkgKCRDb2xvcikgPSAkUHJlZmVyZW5jZXN7Q29sb3J9LT5AKjsKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJENvbG9yOwoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlCiAgICAgICAgbXkgJERlcGxTdGF0ZSA9ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9OwoKICAgICAgICAjIHJlbW92ZSBhbnkgbm9uIGFzY2lpIHdvcmQgY2hhcmFjdGVycwogICAgICAgICREZXBsU3RhdGUgPX4gc3sgW15hLXpBLVowLTldIH17X31tc3hnOwoKICAgICAgICAjIHN0b3JlIHRoZSBvcmlnaW5hbCBkZXBsb3ltZW50IHN0YXRlIGFzIGtleQogICAgICAgICMgYW5kIHRoZSBzcyBzYWZlIGNvdmVydGVkIGRlcGxveW1lbnQgc3RhdGUgYXMgdmFsdWUKICAgICAgICAkRGVwbFNpZ25hbHN7ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9IH0gPSAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvdmVydCB0byBsb3dlciBjYXNlCiAgICAgICAgbXkgJERlcGxTdGF0ZUNvbG9yID0gbGMoJENvbG9yKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgIyBhZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcKICAgICAgICAkU3R5bGVDbGFzc2VzIC49ICIKICAgICAgICAgICAgLkZsYWcgc3Bhbi4kRGVwbFN0YXRlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMkRGVwbFN0YXRlQ29sb3I7CiAgICAgICAgICAgIH0KICAgICAgICAiOwogICAgfQoKICAgICMgd3JhcCBpbnRvIHN0eWxlIHRhZ3MKICAgIGlmICgkU3R5bGVDbGFzc2VzKSB7CiAgICAgICAgJFN0eWxlQ2xhc3NlcyA9ICI8c3R5bGU+JFN0eWxlQ2xhc3Nlczwvc3R5bGU+IjsKICAgIH0KCiAgICAjIGJ1aWxkIHZlcnNpb24gc2VsZWN0aW9uCiAgICBteSAkQmFzZUxpbmsgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGUgPT4gJ1slIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTsnCiAgICAgICAgICAgIC4gIkNvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07IgogICAgKTsKCiAgICBteSBAVmVyc2lvblNlbGVjdGlvbkRhdGEgPSBtYXAgewogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gKCAkQmFzZUxpbmsgLiAiVmVyc2lvbklEPSRfLT57VmVyc2lvbklEfSIgKSwKICAgICAgICAgICAgVmFsdWUgPT4gKAogICAgICAgICAgICAgICAgIlZlcnNpb24gIiAuICggJF8tPntWZXJzaW9uU3RyaW5nfSB8fCAkXy0+e1ZlcnNpb25JRH0gKQogICAgICAgICAgICApLAogICAgICAgIH0KICAgIH0gJFZlcnNpb25MaXN0LT5AKjsKCiAgICBteSAkVmVyc2lvblNlbGVjdGlvbiA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcQFZlcnNpb25TZWxlY3Rpb25EYXRhLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnVmVyc2lvblNlbGVjdGlvbicsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkVmVyc2lvbklEID8gJEJhc2VMaW5rIC4gIlZlcnNpb25JRD0kVmVyc2lvbklEIiA6IHVuZGVmLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTZWxlY3Rpb25Sb3cnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uU2VsZWN0aW9uID0+ICRWZXJzaW9uU2VsZWN0aW9uLAogICAgICAgIH0sCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlciggVmFsdWUgPT4gIkNJIyRDb25maWdJdGVtLT57TnVtYmVyfSIgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICMgaWYgYSB2ZXJzaW9uIGFscmVhZHkgZXhpc3RzIChUT0RPOiBXaGVuIGRvZXMgaXQgbm90PykKICAgIGlmICggJENvbmZpZ0l0ZW0tPntOYW1lfSApIHsKCiAgICAgICAgIyB0cmFuc2Zvcm0gYXNjaWkgdG8gaHRtbAogICAgICAgIG15ICRDb25maWdJdGVtTmFtZSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgIFRleHQgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57TmFtZX0sCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgIExpbmtGZWF0dXJlICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgbmFtZQogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEYXRhJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ05hbWUnKSwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+IFRyYW5zbGF0YWJsZSgnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbScpLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgICAgICAgICAgSWRlbnRhdGlvbiAgPT4gMTAsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgZGVwbG95bWVudCBzdGF0ZQogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEYXRhJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUnKSwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+IFRyYW5zbGF0YWJsZSgnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbScpLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtLT57RGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBJZGVudGF0aW9uID0+IDEwLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGluY2lkZW50IHN0YXRlCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RhdGEnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnSW5jaWRlbnQgU3RhdGUnKSwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+IFRyYW5zbGF0YWJsZSgnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nKSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0luY2lTdGF0ZX0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgSWRlbnRhdGlvbiA9PiAxMCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntEZWZpbml0aW9uSUR9LAogICAgICAgICk7CgogICAgICAgIG15ICVHcm91cExvb2t1cDsKICAgICAgICBteSBAUGFnZXM7CiAgICAgICAgbXkgJFBhZ2VTaG93bjsKICAgICAgICBteSAkUGFnZVJlcXVlc3RlZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdQYWdlJyApOwogICAgICAgIFBBR0U6CiAgICAgICAgZm9yIG15ICRQYWdlICggJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtQYWdlc30tPkAqICkgewoKICAgICAgICAgICAgIyBJbnRlcmZhY2VzIGlzIG9wdGlvbmFsLCBlZmZlY3RpdmVseSBkZWZhdWx0IHRvIFsgJ0FnZW50JyBdCiAgICAgICAgICAgIGlmICggJFBhZ2UtPntJbnRlcmZhY2VzfSApIHsKICAgICAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgYW55IHsgJF8gZXEgJ0FnZW50JyB9ICRQYWdlLT57SW50ZXJmYWNlc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKICAgICAgICAgICAgICAgIGlmICggISVHcm91cExvb2t1cCApIHsKICAgICAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgID0+ICdybycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGdyYW50IGFjY2VzcyB0byB0aGUgcGFnZSBvbmx5IHdoZW4gdGhlIHVzZXIgaXMgaW4gb25lIG9mIHRoZSBzcGVjaWZpZWQgZ3JvdXBzCiAgICAgICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRHcm91cExvb2t1cHskX30gfSAkUGFnZS0+e0dyb3Vwc30tPkAqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBQYWdlcywgJFBhZ2U7CgogICAgICAgICAgICBpZiAoICRQYWdlUmVxdWVzdGVkICYmICRQYWdlLT57TmFtZX0gZXEgJFBhZ2VSZXF1ZXN0ZWQgKSB7CiAgICAgICAgICAgICAgICAkUGFnZVNob3duID0gJFBhZ2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAkUGFnZVNob3duIC8vPSBAUGFnZXMgPyAkUGFnZXNbMF0gOiB1bmRlZjsKCiAgICAgICAgaWYgKCBzY2FsYXIgQFBhZ2VzID09IDEgKSB7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1BhZ2VOYW1lJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFBhZ2VOYW1lID0+ICRQYWdlc1swXXtOYW1lfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBmb3IgbXkgJFBhZ2UgKEBQYWdlcykgewoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1BhZ2VMaW5rJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgUGFnZU5hbWUgICAgID0+ICRQYWdlLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCAgICA9PiAkR2V0UGFyYW1WZXJzaW9uSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkICAgICA9PiAkUGFnZS0+e05hbWV9IGVxICRQYWdlU2hvd24tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKEBQYWdlcykgewogICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0R5bmFtaWNGaWVsZEhUTUx9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpEeW5hbWljRmllbGQnKS0+UGFnZVJlbmRlcigKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLAogICAgICAgICAgICAgICAgUGFnZVJlZiAgICA9PiAkUGFnZVNob3duIC8vICRQYWdlc1swXSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgfQoKICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgIyBnZXQgY3JlYXRlICYgY2hhbmdlIHVzZXIgZGF0YQogICAgZm9yIG15ICRLZXkgKHF3KENyZWF0ZSBDaGFuZ2UpKSB7CiAgICAgICAgJENvbmZpZ0l0ZW0tPnsgJEtleSAuICdCeVVzZXJGdWxsTmFtZScgfSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSgKICAgICAgICAgICAgVXNlcklEID0+ICRDb25maWdJdGVtLT57ICRLZXkgLiAnQnknIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG91dHB1dCBtZXRhIGJsb2NrCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdNZXRhJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJXskQ29uZmlnSXRlbX0sCiAgICAgICAgICAgIEN1ckluY2lTaWduYWwgPT4gJEluY2lTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZVR5cGV9IH0sCiAgICAgICAgICAgIEN1ckRlcGxTaWduYWwgPT4gJERlcGxTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCBsaW5rZWQgb2JqZWN0cwogICAgbXkgJExpbmtMaXN0V2l0aERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGxpbmsgdGFibGUgdmlldyBtb2RlCiAgICBteSAkTGlua1RhYmxlVmlld01vZGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0xpbmtPYmplY3Q6OlZpZXdNb2RlJyk7CgogICAgIyBjcmVhdGUgdGhlIGxpbmsgdGFibGUKICAgIG15ICRMaW5rVGFibGVTdHJnID0gJExheW91dE9iamVjdC0+TGlua09iamVjdFRhYmxlQ3JlYXRlKAogICAgICAgIExpbmtMaXN0V2l0aERhdGEgPT4gJExpbmtMaXN0V2l0aERhdGEsCiAgICAgICAgVmlld01vZGUgICAgICAgICA9PiAkTGlua1RhYmxlVmlld01vZGUsCiAgICAgICAgT2JqZWN0ICAgICAgICAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgIyBvdXRwdXQgdGhlIGxpbmsgdGFibGUKICAgIGlmICgkTGlua1RhYmxlU3RyZykgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMaW5rVGFibGUnIC4gJExpbmtUYWJsZVZpZXdNb2RlLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExpbmtUYWJsZVN0cmcgPT4gJExpbmtUYWJsZVN0cmcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBAQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICBteSBATm9uSW5saW5lQXR0YWNobWVudHM7CgogICAgQVRUQUNITUVOVDoKICAgIGZvciBteSAkQXR0YWNobWVudCAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICMgZ2V0IHRoZSBtZXRhZGF0YSBvZiB0aGUgY3VycmVudCBhdHRhY2htZW50CiAgICAgICAgbXkgJEF0dGFjaG1lbnREYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRBdHRhY2htZW50LAogICAgICAgICk7CiAgICAgICAgcHVzaCBATm9uSW5saW5lQXR0YWNobWVudHMsICRBdHRhY2htZW50RGF0YTsKICAgIH0KCiAgICBpZiAoQE5vbklubGluZUF0dGFjaG1lbnRzKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50cycsCiAgICAgICAgKTsKCiAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnREYXRhIChATm9uSW5saW5lQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgICAgIEZpbGVzaXplICAgICA9PiAkQXR0YWNobWVudERhdGEtPntGaWxlc2l6ZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGhhbmRsZSBEb3dubG9hZEF0dGFjaG1lbnQKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIGdldCBkYXRhIGZvciBhdHRhY2htZW50CiAgICAgICAgbXkgJEZpbGVuYW1lICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVuYW1lJyApOwogICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gZXJyb3IgaWYgZmlsZSBkb2VzIG5vdCBleGlzdAogICAgICAgIGlmICggISRBdHRhY2htZW50RGF0YSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAleyRBdHRhY2htZW50RGF0YX0sCiAgICAgICAgICAgIFR5cGUgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnVXNlckNvbmZpZ0l0ZW1ab29tVGFibGVIZWlnaHQnLAogICAgICAgIFZhbHVlID0+ICRTZWxmLT57U2Vzc2lvbn17VXNlckNvbmZpZ0l0ZW1ab29tVGFibGVIZWlnaHR9LAogICAgKTsKCiAgICAjIHN0YXJ0IHRlbXBsYXRlIG91dHB1dAogICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgJE91dHB1dCwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20nLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAkSW5jaVNpZ25hbHN7ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlVHlwZX0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTaWduYWwgPT4gJERlcGxTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZX0gfSwKICAgICAgICAgICAgICAgIFN0eWxlQ2xhc3NlcyAgPT4gJFN0eWxlQ2xhc3NlcywKICAgICAgICAgICAgfSwKICAgICAgICApLAogICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKfQoKMTsK</File>
        <File Location="Kernel/Modules/CustomerITSMConfigItemAttachment.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB2NS4yNDsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHslUGFyYW19LCAkVHlwZTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkTG9nT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgUGVybWlzc2lvbiBjaGVjay4KICAgIGlmICggISRTZWxmLT57QWNjZXNzUm99ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgbmVlZCBybyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgSURzCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKICAgIG15ICRWZXJzaW9uSUQgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmVyc2lvbklEJyApOwoKICAgICMgY2hlY2sgcGFyYW0KICAgIGlmICggISRDb25maWdJdGVtSUQgfHwgISRWZXJzaW9uSUQgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ29uZmlnSXRlbUlEIGFuZCBWZXJzaW9uSUQgYXJlIG5lZWRlZCEnLAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBmZXRjaCBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgKTsKCiAgICBpZiAoICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSAhPSAkQ29uZmlnSXRlbUlEICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ1ZlcnNpb25JRCBkb2VzIG5vdCBiZWxvbmcgdG8gQ29uZmlnSXRlbUlEIScsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5DdXN0b21lclBlcm1pc3Npb24oCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIGlmICggISRIYXNBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKCBXaXRoSGVhZGVyID0+ICd5ZXMnICk7CiAgICB9CgogICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBIVE1MVmlldyBTdWItYWN0aW9uCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0hUTUxWaWV3JyApIHsKCiAgICAgICAgIyBHZXQgdGhlIEZpZWxkIGNvbnRlbnQuCiAgICAgICAgbXkgJEZpZWxkQ29udGVudCA9ICRDb25maWdJdGVtLT57RGVzY3JpcHRpb259OwoKICAgICAgICAjICMgQnVpbGQgYmFzZSBVUkwgZm9yIGluLWxpbmUgaW1hZ2VzLgogICAgICAgICMgbXkgJFNlc3Npb25JRCA9ICcnOwogICAgICAgICMgaWYgKCAkU2VsZi0+e1Nlc3Npb25JRH0gJiYgISRTZWxmLT57U2Vzc2lvbklEQ29va2llfSApIHsKICAgICAgICAjICAgICAkU2Vzc2lvbklEID0gJzsnIC4gJFNlbGYtPntTZXNzaW9uTmFtZX0gLiAnPScgLiAkU2VsZi0+e1Nlc3Npb25JRH07CiAgICAgICAgIyAgICAgJEZpZWxkQ29udGVudCA9fiBzewogICAgICAgICMgICAgICAgICAoQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50O1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7Q29uZmlnSXRlbUlEPVxkKztGaWxlbmFtZT1cdyspCiAgICAgICAgIyAgICAgfXskMSRTZXNzaW9uSUR9Z21zeDsKICAgICAgICAjIH0KCiAgICAgICAgIyBmZXRjaCBjb25maWcgaXRlbSBhdHRhY2htZW50IGxpc3QgZm9yIGhhbmRsaW5nIGlubGluZSBhdHRhY2htZW50cwogICAgICAgIG15IEBBdHRhY2htZW50TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmZXRjaCBhdHRhY2htZW50IGRhdGEgYW5kIHN0b3JlIGluIGhhc2ggZm9yIFJpY2hUZXh0RG9jdW1lbnRTZXJ2ZQogICAgICAgIG15ICVBdHRhY2htZW50czsKICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudExpc3QpIHsKICAgICAgICAgICAgJEF0dGFjaG1lbnRzeyRGaWxlbmFtZX0gPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJEF0dGFjaG1lbnRzeyRGaWxlbmFtZX17Q29udGVudElEfSA9ICRBdHRhY2htZW50c3skRmlsZW5hbWV9e1ByZWZlcmVuY2VzfXtDb250ZW50SUR9OwogICAgICAgIH0KCiAgICAgICAgIyBuZWVkZWQgdG8gcHJvdmlkZSBuZWNlc3NhcnkgcGFyYW1zIGZvciBSaWNoVGV4dERvY3VtZW50U2VydmUKICAgICAgICBteSAlRGF0YSA9ICgKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbDsgY2hhcnNldD0idXRmLTgiJywKICAgICAgICAgICAgRGlzcG9zaXRpb24gPT4gJ2lubGluZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZW5lcmF0ZSBiYXNlIHVybAogICAgICAgIG15ICRVUkwgPSAnQWN0aW9uPScgLiAoICRMYXlvdXRPYmplY3QtPntVc2VyVHlwZX0gZXEgJ1VzZXInID8gJ0FnZW50JyA6ICdDdXN0b21lcicgKSAuICdJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudCcKICAgICAgICAgICAgLiAiO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07VmVyc2lvbklEPSRDb25maWdJdGVtLT57VmVyc2lvbklEfTtGaWxlbmFtZT0iOwoKICAgICAgICAjIHJlZm9ybWF0IHJpY2ggdGV4dCBkb2N1bWVudCB0byBoYXZlIGNvcnJlY3QgY2hhcnNldCBhbmQgbGlua3MgdG8KICAgICAgICAjIGlubGluZSBkb2N1bWVudHMKICAgICAgICAlRGF0YSA9ICRMYXlvdXRPYmplY3QtPlJpY2hUZXh0RG9jdW1lbnRTZXJ2ZSgKICAgICAgICAgICAgRGF0YSAgICAgICAgICAgICAgID0+IFwlRGF0YSwKICAgICAgICAgICAgVVJMICAgICAgICAgICAgICAgID0+ICRVUkwsCiAgICAgICAgICAgIEF0dGFjaG1lbnRzICAgICAgICA9PiBcJUF0dGFjaG1lbnRzLAogICAgICAgICAgICBMb2FkRXh0ZXJuYWxJbWFnZXMgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkRmllbGRDb250ZW50ID0gJERhdGF7Q29udGVudH07CgogICAgICAgICMgcmVtb3ZlIGFjdGl2ZSBodG1sIGNvbnRlbnQgKHNjcmlwdHMsIGFwcGxldHMsIGV0Yy4uLikKICAgICAgICBteSAlU2FmZUNvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5TYWZldHkoCiAgICAgICAgICAgIFN0cmluZyAgICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBOb0FwcGxldCAgICAgPT4gMSwKICAgICAgICAgICAgTm9PYmplY3QgICAgID0+IDEsCiAgICAgICAgICAgIE5vRW1iZWQgICAgICA9PiAxLAogICAgICAgICAgICBOb0ludFNyY0xvYWQgPT4gMCwKICAgICAgICAgICAgTm9FeHRTcmNMb2FkID0+IDAsCiAgICAgICAgICAgIE5vSmF2YVNjcmlwdCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgdGFrZSB0aGUgc2FmZSBjb250ZW50IGlmIG5lY2Nlc3NhcnkKICAgICAgICBpZiAoICRTYWZlQ29udGVudHtSZXBsYWNlfSApIHsKICAgICAgICAgICAgJEZpZWxkQ29udGVudCA9ICRTYWZlQ29udGVudHtTdHJpbmd9OwogICAgICAgIH0KCiAgICAgICAgIyBkZXRlY3QgYWxsIHBsYWluIHRleHQgbGlua3MgYW5kIHB1dCB0aGVtIGludG8gYW4gSFRNTCA8YT4gdGFnCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkxpbmtRdW90ZSgKICAgICAgICAgICAgU3RyaW5nID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgdGFyZ2V0PSJfYmxhbmsiIGF0dHJpYnV0ZSB0byBhbGwgSFRNTCA8YT4gdGFncwogICAgICAgICMgdGhlIExpbmtRdW90ZSBmdW5jdGlvbiBuZWVkcyB0byBiZSBjYWxsZWQgYWdhaW4KICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+TGlua1F1b3RlKAogICAgICAgICAgICBTdHJpbmcgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgVGFyZ2V0QWRkID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgbmVlZGVkIEhUTUwgaGVhZGVycwogICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICBTdHJpbmcgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIENoYXJzZXQgPT4gJ3V0Zi04JywKICAgICAgICApOwoKICAgICAgICAjIGVzY2FwZSBzaW5nbGUgcXVvdGVzCiAgICAgICAgJEZpZWxkQ29udGVudCA9fiBzLycvJiMzOTsvZzsKCiAgICAgICAgIyBSZXR1cm4gY29tcGxldGUgSFRNTCBhcyBhbiBhdHRhY2htZW50LgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBEb3dubG9hZEF0dGFjaG1lbnQgU3ViLWFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICBteSAkRmlsZW5hbWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsZW5hbWUnICk7CgogICAgICAgICMgY2hlY2sgcGFyYW0KICAgICAgICBpZiAoICEkRmlsZW5hbWUgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdGaWxlbmFtZSBpcyBuZWVkZWQhJywKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGFuIGF0dGFjaG1lbnQKICAgICAgICBteSAkRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEdldCgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICA9PiAkRmlsZW5hbWUsCiAgICAgICAgKTsKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkRGF0YSkgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRGaWxlbmFtZSkuIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJERhdGEpICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCggJERhdGEtPiUqICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRGaWxlbmFtZSkhIE1heSBiZSBhbiBhdHRhY2shISEiLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQogICAgfQoKICAgICMgTm8gKGtub3duKSBzdWJhY3Rpb24KICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnSW52YWxpZCBTdWJhY3Rpb24uJyksCiAgICApOwp9CgoxOwo=</File>
        <File Location="Kernel/Modules/CustomerITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBzZXQgZGVidWcKICAgICRTZWxmLT57RGVidWd9ID0gMDsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgbXkgJFNvcnRCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ0FnZSc7CgogICAgaWYgKCAkU29ydEJ5IGVxICdMYXN0Q2hhbmdlZCcgKSB7CiAgICAgICAgJFNvcnRCeSA9ICdDaGFuZ2VkJzsKICAgIH0KCiAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBvcmRlcmluZyB0byBiZSB1c2VkLgogICAgbXkgJERlZmF1bHRPcmRlckJ5ID0gJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ1VwJzsKCiAgICAjIFNldCB0aGUgc29ydCBvcmRlciBmcm9tIHRoZSByZXF1ZXN0IHBhcmFtZXRlcnMsIG9yIHRha2UgdGhlIGRlZmF1bHQuCiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgfHwgJERlZmF1bHRPcmRlckJ5OwoKICAgICMgZ2V0IHNlc3Npb24gb2JqZWN0CiAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICMgc3RvcmUgbGFzdCBxdWV1ZSBzY3JlZW4KICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICk7CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbgogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKCiAgICAjIGdldCBmaWx0ZXIgZnJvbSB3ZWIgcmVxdWVzdAogICAgbXkgJEZpbHRlciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJyc7CgogICAgIyBnZXQgZmlsdGVycyBzdG9yZWQgaW4gdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRVc2VyT2JqZWN0LT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKICAgIG15ICRTdG9yZWRGaWx0ZXJzS2V5ID0gJ1VzZXJTdG9yZWRGaWx0ZXJDb2x1bW5zLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkRmlsdGVyOwogICAgbXkgJEpTT05PYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpOwogICAgbXkgJFN0b3JlZEZpbHRlcnMgICAgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyRTdG9yZWRGaWx0ZXJzS2V5fSwKICAgICk7CgogICAgIyBkZWxldGUgc3RvcmVkIGZpbHRlcnMgaWYgbmVlZGVkCiAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdEZWxldGVGaWx0ZXJzJyApICkgewogICAgICAgICRTdG9yZWRGaWx0ZXJzID0ge307CiAgICB9CgogICAgIyBnZXQgdGhlIGNvbHVtbiBmaWx0ZXJzIGZyb20gdGhlIHdlYiByZXF1ZXN0IG9yIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVDb2x1bW5GaWx0ZXI7CiAgICBteSAlR2V0Q29sdW1uRmlsdGVyOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoCiAgICAgICAgcXcoRGVwbFN0YXRlIEN1ckRlcGxTdGF0ZSBJbmNpU3RhdGUgQ3VySW5jaVN0YXRlIENsYXNzKQogICAgICAgICkKICAgIHsKICAgICAgICAjIGdldCBjb2x1bW4gZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lICkKICAgICAgICAgICAgfHwgJyc7CgogICAgICAgICMgaWYgZmlsdGVyIGlzIG5vdCBwcmVzZW50IGluIHRoZSB3ZWIgcmVxdWVzdCwgdHJ5IHdpdGggdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgICAgICBpZiAoICRGaWx0ZXJWYWx1ZSBlcSAnJyApIHsKICAgICAgICAgICAgJEZpbHRlclZhbHVlID0gJFN0b3JlZEZpbHRlcnMtPnsgJENvbHVtbk5hbWUgLiAnSURzJyB9LT5bMF0gfHwgJyc7CiAgICAgICAgfQogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkRmlsdGVyVmFsdWUgZXEgJyc7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICRGaWx0ZXJWYWx1ZSBlcSAnRGVsZXRlRmlsdGVyJzsKCiAgICAgICAgcHVzaCBAeyAkQ29sdW1uRmlsdGVyeyAkQ29sdW1uTmFtZSAuICdJRHMnIH0gfSwgJEZpbHRlclZhbHVlOwogICAgICAgICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9ID0gJEZpbHRlclZhbHVlOwogICAgfQoKICAgICMgZ2V0IGFsbCBkeW5hbWljIGZpZWxkcwogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICk7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBnZXQgZmlsdGVyIGZyb20gd2ViIHJlcXVlc3QKICAgICAgICBteSAkRmlsdGVyVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKAogICAgICAgICAgICBQYXJhbSA9PiAnQ29sdW1uRmlsdGVyRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICApOwoKICAgICAgICAjIGlmIG5vIGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0LCB0cnkgZnJvbSB1c2VyIHByZWZlcmVuY2VzCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkRmlsdGVyVmFsdWUgfHwgJEZpbHRlclZhbHVlIGVxICcnICkgewogICAgICAgICAgICAkRmlsdGVyVmFsdWUgPSAkU3RvcmVkRmlsdGVycy0+eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfS0+e0VxdWFsc307CiAgICAgICAgfQoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhZGVmaW5lZCAkRmlsdGVyVmFsdWU7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJEZpbHRlclZhbHVlIGVxICcnOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRGaWx0ZXJWYWx1ZSBlcSAnRGVsZXRlRmlsdGVyJzsKCiAgICAgICAgJENvbHVtbkZpbHRlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSB7CiAgICAgICAgICAgIEVxdWFscyA9PiAkRmlsdGVyVmFsdWUsCiAgICAgICAgfTsKICAgICAgICAkR2V0Q29sdW1uRmlsdGVyeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRGaWx0ZXJWYWx1ZTsKICAgIH0KCiAgICAjIGJ1aWxkIE5hdmlnYXRpb25CYXIgJiB0byBnZXQgdGhlIG91dHB1dCBmYXN0ZXIhCiAgICBteSAkUmVmcmVzaCA9ICcnOwogICAgaWYgKCAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gKSB7CiAgICAgICAgJFJlZnJlc2ggPSA2MCAqICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfTsKICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRPdXRwdXQ7CiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBuZSAnQUpBWEZpbHRlclVwZGF0ZScgKSB7CiAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgICAgICBSZWZyZXNoID0+ICRSZWZyZXNoLAogICAgICAgICk7CiAgICB9CgogICAgIyBzb3J0IG9uIGRlZmF1bHQgYnkgdXNpbmcgYm90aCAoUHJpb3JpdHksIEFnZSkgZWxzZSB1c2Ugb25seSBvbmUgc29ydCBhcmd1bWVudAogICAgbXkgJVNvcnQ7CgogICAgIyBnZXQgaWYgc2VhcmNoIHJlc3VsdCBzaG91bGQgYmUgcHJlLXNvcnRlZCBieSBwcmlvcml0eQogICAgbXkgJFByZVNvcnRCeVByaW9yaXR5ID0gJENvbmZpZy0+eydQcmVTb3J0OjpCeVByaW9yaXR5J307CiAgICBpZiAoICEkUHJlU29ydEJ5UHJpb3JpdHkgKSB7CiAgICAgICAgJVNvcnQgPSAoCiAgICAgICAgICAgIFNvcnRCeSAgPT4gJFNvcnRCeSwKICAgICAgICAgICAgT3JkZXJCeSA9PiAkT3JkZXJCeSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJVNvcnQgPSAoCiAgICAgICAgICAgIFNvcnRCeSAgPT4gWyAnUHJpb3JpdHknLCAkU29ydEJ5IF0sCiAgICAgICAgICAgIE9yZGVyQnkgPT4gWyAnRG93bicsICAgICAkT3JkZXJCeSBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBteSBjb25maWcgaXRlbSBvYmplY3QKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBkZWZpbmUgcG9zaXRpb24gb2YgdGhlIGZpbHRlciBpbiB0aGUgZnJvbnRlbmQKICAgIG15ICRQcmlvQ291bnRlciA9IDEwMDA7CgogICAgIyB0byBzdG9yZSB0aGUgTmF2QmFyIGZpbHRlcnMKICAgIG15ICVGaWx0ZXJzOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7CgogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgIG15IEBWaWV3YWJsZURlcGxTdGF0ZUlEczsKICAgIG15IEBWaWV3YWJsZUNsYXNzSURzOwoKICAgICMgZmV0Y2ggZmlsdGVycyBmcm9tIGNvbmZpZwogICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMnKTsKICAgIG15ICVHcm91cExvb2t1cDsKCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZykgKSB7CiAgICAgICAgUEVSTUNPTkY6CiAgICAgICAgZm9yIG15ICRDb25maWdJZGVudGlmaWVyICggc29ydCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZy0+JSogKSB7CiAgICAgICAgICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnID0gJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnLT57JENvbmZpZ0lkZW50aWZpZXJ9OwogICAgICAgICAgICBuZXh0IFBFUk1DT05GIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyk7CgogICAgICAgICAgICAjIGNoZWNrIGZvciBncm91cCBwZXJtaXNzaW9uCiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0dyb3Vwc30gKSApIHsKCiAgICAgICAgICAgICAgICAjIHByZXBhcmUgZ3JvdXAgbG9va3VwIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgaWYgKCAhJUdyb3VwTG9va3VwICkgewogICAgICAgICAgICAgICAgICAgICVHcm91cExvb2t1cCA9IHJldmVyc2UgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyR3JvdXAnKS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdIQVNIJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRBY2Nlc3NPayA9IDA7CiAgICAgICAgICAgICAgICBHUk9VUDoKICAgICAgICAgICAgICAgIGZvciBteSAkR3JvdXBOYW1lICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntHcm91cHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEdST1VQIGlmICEkR3JvdXBMb29rdXB7JEdyb3VwTmFtZX07CgogICAgICAgICAgICAgICAgICAgICRBY2Nlc3NPayA9IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbmV4dCBQRVJNQ09ORiB1bmxlc3MgJEFjY2Vzc09rOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNldCBhcyBzZWxlY3RlZCBmaWx0ZXIgaWYgbm90IHByZXNlbnQKICAgICAgICAgICAgJEZpbHRlciB8fD0gJENvbmZpZ0lkZW50aWZpZXI7CgogICAgICAgICAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZCBzZWFyY2ggcGFyYW1zCiAgICAgICAgICAgIG15ICVERlNlYXJjaFBhcmFtczsKICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9ICkgKSB7CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfS0+JSogKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRERlNlYXJjaFBhcmFtc3siRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9IGVxICcnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkREZTZWFyY2hQYXJhbXN7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbXB0eSA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJVBlcm1pc3Npb25Db25kaXRpb25TZWFyY2hQYXJhbXM7CiAgICAgICAgICAgIGlmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgJFBlcm1pc3Npb25Db25kaXRpb25TZWFyY2hQYXJhbXN7IkR5bmFtaWNGaWVsZF8kUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0N1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZH0ifSA9IHsKICAgICAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJFNlbGYtPntDdXN0b21lcklEfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICAkUGVybWlzc2lvbkNvbmRpdGlvblNlYXJjaFBhcmFtc3siRHluYW1pY0ZpZWxkXyRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkfSJ9ID0gewogICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAlRmlsdGVyU2VhcmNoID0gKAogICAgICAgICAgICAgICAgQ2xhc3NlcyAgICA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0NsYXNzZXN9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9LAogICAgICAgICAgICAgICAgJURGU2VhcmNoUGFyYW1zLAogICAgICAgICAgICAgICAgJVBlcm1pc3Npb25Db25kaXRpb25TZWFyY2hQYXJhbXMsCiAgICAgICAgICAgICAgICAlU29ydCwKICAgICAgICAgICAgICAgIExpbWl0ID0+ICRTZWxmLT57U2VhcmNoTGltaXR9IC8vICcxMDAwJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYXBwbHkgZmlsdGVyIHJlc3RyaWN0aW9ucyB0byBzZWFyY2ggZm9yCiAgICAgICAgICAgIGlmICggJEdldENvbHVtbkZpbHRlcntDbGFzc30gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgIGlmICggYW55IHsgJENsYXNzTGlzdC0+eyAkR2V0Q29sdW1uRmlsdGVye0NsYXNzfSB9IGVxICRfIH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBWaWV3YWJsZUNsYXNzSURzID0gKCAkR2V0Q29sdW1uRmlsdGVye0NsYXNzfSApOwogICAgICAgICAgICAgICAgICAgICAgICAkRmlsdGVyU2VhcmNoe0NsYXNzZXN9ID0gWyAkQ2xhc3NMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7Q2xhc3N9IH0gXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBAVmlld2FibGVDbGFzc0lEcyA9ICggJEdldENvbHVtbkZpbHRlcntDbGFzc30gKTsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyU2VhcmNoe0NsYXNzZXN9ID0gWyAkQ2xhc3NMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7Q2xhc3N9IH0gXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIEBWaWV3YWJsZUNsYXNzSURzID0gc29ydCBrZXlzICRDbGFzc0xpc3QtPiUqOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJEdldENvbHVtbkZpbHRlcntEZXBsU3RhdGV9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIGFueSB7ICREZXBsU3RhdGVMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7RGVwbFN0YXRlfSB9IGVxICRfIH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEBWaWV3YWJsZURlcGxTdGF0ZUlEcyA9ICggJEdldENvbHVtbkZpbHRlcntEZXBsU3RhdGV9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWx0ZXJTZWFyY2h7RGVwbFN0YXRlc30gPSBbICREZXBsU3RhdGVMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7RGVwbFN0YXRlfSB9IF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgQFZpZXdhYmxlRGVwbFN0YXRlSURzID0gKCAkR2V0Q29sdW1uRmlsdGVye0RlcGxTdGF0ZX0gKTsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyU2VhcmNoe0RlcGxTdGF0ZXN9ID0gWyAkRGVwbFN0YXRlTGlzdC0+eyAkR2V0Q29sdW1uRmlsdGVye0RlcGxTdGF0ZX0gfSBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgQFZpZXdhYmxlRGVwbFN0YXRlSURzID0gc29ydCBrZXlzICREZXBsU3RhdGVMaXN0LT4lKjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICAgICAgaWYgKCBAVmlld2FibGVDbGFzc0lEcyAmJiBAVmlld2FibGVEZXBsU3RhdGVJRHMgKSB7CiAgICAgICAgICAgICAgICAkQ291bnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICAgICAlRmlsdGVyU2VhcmNoLAogICAgICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdDT1VOVCcsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkRmlsdGVyc3skQ29uZmlnSWRlbnRpZmllcn0gPSB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIFByaW8gICA9PiAkUHJpb0NvdW50ZXIsCiAgICAgICAgICAgICAgICBDb3VudCAgPT4gJENvdW50LAogICAgICAgICAgICAgICAgU2VhcmNoID0+IFwlRmlsdGVyU2VhcmNoLAogICAgICAgICAgICB9OwogICAgICAgICAgICAkUHJpb0NvdW50ZXIrKzsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBvbmx5IG9uZSBmaWx0ZXIgZXhpc3RzCiAgICBpZiAoIHNjYWxhciBrZXlzICVGaWx0ZXJzID09IDEgKSB7CgogICAgICAgICMgZ2V0IHRoZSBuYW1lIG9mIHRoZSBvbmx5IGZpbHRlcgogICAgICAgIG15ICgkRmlsdGVyTmFtZSkgPSBrZXlzICVGaWx0ZXJzOwoKICAgICAgICAjIGFjdGl2YXRlIHRoaXMgZmlsdGVyCiAgICAgICAgJEZpbHRlciA9ICRGaWx0ZXJOYW1lOwogICAgfQoKICAgICMgY2hlY2sgaWYgZmlsdGVyIGlzIHZhbGlkCiAgICBpZiAoICRGaWx0ZXIgJiYgIWV4aXN0cyAkRmlsdGVyc3skRmlsdGVyfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0ludmFsaWQgRmlsdGVyOiAlcyEnLCAkRmlsdGVyICksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgaGVhZGVyIGZpbHRlcgogICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUZpbHRlcnMgKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWx0ZXJIZWFkZXInLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRLZXl9IH0sCiAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJEtleSwKICAgICAgICAgICAgICAgIENsYXNzQSA9PiAkS2V5IGVxICRGaWx0ZXIgPyAnU2VsZWN0ZWQnIDogJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgZmlsdGVyIGRlbGV0ZSBpZiBuZWVkZWQKICAgIGlmICglR2V0Q29sdW1uRmlsdGVyKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpbHRlckRlbGV0ZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRmlsdGVyID0+ICRGaWx0ZXIsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkVmlldyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApIHx8ICcnOwoKICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgaWYgKCAhJFZpZXcgJiYgJFNlbGYtPnsgJ1VzZXJDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgJFZpZXcgPSAkU2VsZi0+eyAnVXNlckNvbmZpZ0l0ZW1PdmVydmlldycgLiAkU2VsZi0+e0FjdGlvbn0gfTsKICAgIH0KCiAgICAjIG90aGVyd2lzZSB1c2UgUHJldmlldyBhcyBkZWZhdWx0IGFzIGluIExheW91dENvbmZpZ0l0ZW0KICAgICRWaWV3IHx8PSAnU21hbGwnOwoKICAgICMgQ2hlY2sgaWYgc2VsZWN0ZWQgdmlldyBpcyBhdmFpbGFibGUuCiAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJPdmVydmlldycpOwogICAgaWYgKCAhJEJhY2tlbmRzLT57JFZpZXd9ICkgewoKICAgICAgICAjIFRyeSB0byBmaW5kIGZhbGxiYWNrLCB0YWtlIGZpcnN0IGNvbmZpZ3VyZWQgdmlldyBtb2RlLgogICAgICAgIEtFWToKICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CiAgICAgICAgICAgICRWaWV3ID0gJEtleTsKICAgICAgICAgICAgbGFzdCBLRVk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGN1c3RvbWVyIHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd24gPSAkQmFja2VuZHMtPnskVmlld30gPyAkQmFja2VuZHMtPnskVmlld30tPntQYWdlU2hvd259IDogMTA7CiAgICBteSAlUGFnZU5hdjsKCiAgICAjIGRvIHNob3duIGNvbmZpZyBpdGVtIGxvb2t1cAogICAgbXkgJExpbWl0ID0gMV8wMDA7CgogICAgbXkgJEVsZW1lbnRDaGFuZ2VkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VsZW1lbnRDaGFuZ2VkJyApIHx8ICcnOwogICAgbXkgJEhlYWRlckNvbHVtbiAgID0gJEVsZW1lbnRDaGFuZ2VkOwogICAgJEhlYWRlckNvbHVtbiA9fiBze1xBIENvbHVtbkZpbHRlciB9e31tc3hnOwoKICAgICMgZ2V0IGRhdGEgKHZpZXdhYmxlIGNvbmZpZyBpdGVtcy4uLikKICAgICMgc2VhcmNoIGFsbCBjb25maWcgaXRlbXMKICAgIG15IEBWaWV3YWJsZUNvbmZpZ0l0ZW1zOwogICAgbXkgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtczsKCiAgICAjIGJ1aWxkIGxpbmtzCiAgICBteSAkQ29sdW1uRmlsdGVyTGluayA9ICcnOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQga2V5cyAlR2V0Q29sdW1uRmlsdGVyICkgewogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJENvbHVtbk5hbWU7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICFkZWZpbmVkICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9OwogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSBlcSAnJzsKICAgICAgICAkQ29sdW1uRmlsdGVyTGluawogICAgICAgICAgICAuPSAnOycgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICdDb2x1bW5GaWx0ZXInIC4gJENvbHVtbk5hbWUgKQogICAgICAgICAgICAuICc9JyAuICRMYXlvdXRPYmplY3QtPkxpbmtFbmNvZGUoICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9ICk7CiAgICB9CgogICAgbXkgJExpbmtQYWdlID0gJ0ZpbHRlcj0nCiAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRGaWx0ZXIgKQogICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICkKICAgICAgICAuICc7U29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICkKICAgICAgICAuICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExpbmtTb3J0ID0gJ1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJztGaWx0ZXI9JwogICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkRmlsdGVyICkKICAgICAgICAuICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExpbmtGaWx0ZXIgPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICkKICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExhc3RDb2x1bW5GaWx0ZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTGFzdENvbHVtbkZpbHRlcicgKSB8fCAnJzsKCiAgICBpZiAoICEkTGFzdENvbHVtbkZpbHRlciAmJiAkQ29sdW1uRmlsdGVyTGluayApIHsKCiAgICAgICAgIyBpcyBwbGFubmVkIHRvIGhhdmUgYSBsaW5rIHRvIGdvIGJhY2sgaGVyZQogICAgICAgICRMYXN0Q29sdW1uRmlsdGVyID0gMTsKICAgIH0KCiAgICBpZiAoIEBWaWV3YWJsZURlcGxTdGF0ZUlEcyAmJiBAVmlld2FibGVDbGFzc0lEcyApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gdmFsdWVzCiAgICAgICAgaWYgKAogICAgICAgICAgICAhSXNTdHJpbmdXaXRoRGF0YSgkSGVhZGVyQ29sdW1uKQogICAgICAgICAgICB8fCAoCiAgICAgICAgICAgICAgICBJc1N0cmluZ1dpdGhEYXRhKCRIZWFkZXJDb2x1bW4pCiAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdPbmx5VmFsdWVzT25Db25maWdJdGVtJykKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyfS0+e1NlYXJjaH0gfSwKICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICBMaW1pdCAgPT4gJExpbWl0LAogICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkU3RhcnRIaXQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3RhcnRIaXQnICkgfHwgMTsKCiAgICAgICAgICAgICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICAgICAgICAgIExpbWl0ICAgICA9PiAxMDAwMCwKICAgICAgICAgICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICAgICAgICAgIEFsbEhpdHMgICA9PiBzY2FsYXIgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICAgICAgICAgIEFjdGlvbiAgICA9PiAnQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgTGluayAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICAgICAgICAgIElEUHJlZml4ICA9PiAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBAVmlld2FibGVDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgJXsgJEZpbHRlcnN7JEZpbHRlcn0tPntTZWFyY2h9IH0sCiAgICAgICAgICAgICAgICAlQ29sdW1uRmlsdGVyLAogICAgICAgICAgICAgICAgTGltaXQgID0+ICRTdGFydEhpdCArICRQYWdlU2hvd24gLSAxLAogICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgIH0KCiAgICAjIFRPRE8gTWF5YmUgdGhlcmUgaXMgYSBtb3JlIGVsZWdhbnQgd2F5IHRvIGRvIHRoaXM/CiAgICAkU2VsZi0+e0ZpbHRlcn0gID0gJEZpbHRlcjsKICAgICRTZWxmLT57RmlsdGVyc30gPSBcJUZpbHRlcnM7CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FKQVhGaWx0ZXJVcGRhdGUnICkgewoKICAgICAgICBteSAkRmlsdGVyQ29udGVudCA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgICAgIEZpbHRlckNvbnRlbnRPbmx5ICAgICA9PiAxLAogICAgICAgICAgICBIZWFkZXJDb2x1bW4gICAgICAgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgRWxlbWVudENoYW5nZWQgICAgICAgID0+ICRFbGVtZW50Q2hhbmdlZCwKICAgICAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+IFxAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBFbnYgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgICAgIFZpZXcgICAgICAgICAgICAgICAgICA9PiAkVmlldywKICAgICAgICAgICAgRW5hYmxlQ29sdW1uRmlsdGVycyAgID0+IDEsCiAgICAgICAgICAgIEZyb250ZW5kICAgICAgICAgICAgICA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICBGaWx0ZXIgICAgICAgICAgICAgICAgPT4gJEZpbHRlciwKICAgICAgICAgICAgRmlsdGVycyAgICAgICAgICAgICAgID0+IFwlRmlsdGVycywKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRmlsdGVyQ29udGVudCApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ2FuXCd0IGdldCBmaWx0ZXIgY29udGVudCBkYXRhIG9mICVzIScsICRIZWFkZXJDb2x1bW4gKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWx0ZXJDb250ZW50LAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgc3RvcmUgY29sdW1uIGZpbHRlcnMKICAgICAgICBteSAkU3RvcmVkRmlsdGVycyA9IFwlQ29sdW1uRmlsdGVyOwoKICAgICAgICBteSAkU3RvcmVkRmlsdGVyc0tleSA9ICdVc2VyU3RvcmVkRmlsdGVyQ29sdW1ucy0nIC4gJFNlbGYtPntBY3Rpb259IC4gJy0nIC4gJFNlbGYtPntGaWx0ZXJ9OwoKICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAkU3RvcmVkRmlsdGVyc0tleSwKICAgICAgICAgICAgVmFsdWUgID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gJFN0b3JlZEZpbHRlcnMgKSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDb3VudFRvdGFsID0gMDsKICAgIG15ICVOYXZCYXJGaWx0ZXI7CiAgICBmb3IgbXkgJEZpbHRlckNvbHVtbiAoIHNvcnQga2V5cyAlRmlsdGVycyApIHsKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGlmIChAVmlld2FibGVEZXBsU3RhdGVJRHMpIHsKICAgICAgICAgICAgJENvdW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyQ29sdW1ufS0+e1NlYXJjaH0gfSwKICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0NPVU5UJywKICAgICAgICAgICAgKSB8fCAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkRmlsdGVyQ29sdW1uIGVxICRGaWx0ZXIgKSB7CiAgICAgICAgICAgICRDb3VudFRvdGFsID0gJENvdW50OwogICAgICAgIH0KCiAgICAgICAgJE5hdkJhckZpbHRlcnsgJEZpbHRlcnN7JEZpbHRlckNvbHVtbn0tPntQcmlvfSB9ID0gewogICAgICAgICAgICBDb3VudCAgPT4gJENvdW50LAogICAgICAgICAgICBGaWx0ZXIgPT4gJEZpbHRlckNvbHVtbiwKICAgICAgICAgICAgJXsgJEZpbHRlcnN7JEZpbHRlckNvbHVtbn0gfSwKICAgICAgICB9OwogICAgfQoKICAgICMgc2hvdyBjb25maWcgaXRlbXMKICAgIG15ICRDb25maWdJdGVtTGlzdEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgIEZpbHRlciAgICAgICAgICAgICAgICA9PiAkRmlsdGVyLAogICAgICAgIEZpbHRlcnMgICAgICAgICAgICAgICA9PiBcJU5hdkJhckZpbHRlciwKICAgICAgICBDb25maWdJdGVtSURzICAgICAgICAgPT4gXEBWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiBcQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICBHZXRDb2x1bW5GaWx0ZXIgICAgICAgPT4gXCVHZXRDb2x1bW5GaWx0ZXIsCiAgICAgICAgTGFzdENvbHVtbkZpbHRlciAgICAgID0+ICRMYXN0Q29sdW1uRmlsdGVyLAogICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICA9PiAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgVG90YWwgICAgICAgICAgICAgICAgID0+ICRDb3VudFRvdGFsLAogICAgICAgIFJlcXVlc3RlZFVSTCAgICAgICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICAgICAgVmlldyAgICAgICAgICAgICAgICAgID0+ICRWaWV3LAogICAgICAgIFRpdGxlTmFtZSAgICAgICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nKSwKICAgICAgICBUaXRsZVZhbHVlICAgICAgICAgICAgPT4gJFNlbGYtPntGaWx0ZXJzfXskRmlsdGVyfS0+e05hbWV9LAogICAgICAgIEVudiAgICAgICAgICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgICAgICAgICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgIExpbmtTb3J0ICAgICAgICAgICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgTGlua0ZpbHRlciAgICAgICAgICAgID0+ICRMaW5rRmlsdGVyLAogICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICAgPT4gJFNvcnRCeSwKICAgICAgICBFbmFibGVDb2x1bW5GaWx0ZXJzICAgPT4gMSwKICAgICAgICBDb2x1bW5GaWx0ZXJGb3JtICAgICAgPT4gewogICAgICAgICAgICBGaWx0ZXIgPT4gJEZpbHRlciB8fCAnJywKICAgICAgICB9LAogICAgICAgIEZyb250ZW5kID0+ICdDdXN0b21lcicsCgogICAgICAgICMgZG8gbm90IHByaW50IHRoZSByZXN1bHQgZWFybGllciwgYnV0IHJldHVybiBjb21wbGV0ZSBjb250ZW50CiAgICAgICAgT3V0cHV0ID0+IDEsCiAgICApOwoKICAgIGlmICggZGVmaW5lZCAkQ29uZmlnT2JqZWN0LT5HZXQoIkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSIpLT57IkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gifSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2VhcmNoQm94JywKICAgICAgICApOwogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1MaXN0SFRNTCA9PiAkQ29uZmlnSXRlbUxpc3RIVE1MLAogICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGJ1aWxkIE5hdmlnYXRpb25CYXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJOYXZpZ2F0aW9uQmFyKCk7CgogICAgIyBnZXQgcGFnZSBmb290ZXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK</File>
        <File Location="Kernel/Modules/CustomerITSMConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQmFja2VuZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRTZXNzaW9uT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbgogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZ3VyZWQgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSAgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIEZpZWxkRmlsdGVyID0+ICRDb25maWctPntEeW5hbWljRmllbGR9LAogICAgKTsKCiAgICBteSBAU2V0SW5uZXJGaWVsZHM7CiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdTZXQnOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0luY2x1ZGV9ICk7CgogICAgICAgICMgZmV0Y2ggdGhlIGxpc3Qgb2YgaW5jbHVkZWQgZHluYW1pYyBmaWVsZCBuYW1lcyB0byBnZXQgdGhlIGNvbmZpZ3MKICAgICAgICBteSAkU2V0SW5uZXJGaWVsZE5hbWVzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdE1hc2soCiAgICAgICAgICAgIENvbnRlbnQgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317SW5jbHVkZX0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFNldElubmVyRmllbGROYW1lcykgKSB7CiAgICAgICAgICAgIG15ICRJbm5lckZpZWxkQ29uZmlncyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRmllbGRGaWx0ZXIgPT4geyBtYXAgeyAoICRfID0+IDEgKSB9ICRTZXRJbm5lckZpZWxkTmFtZXMtPkAqIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkSW5uZXJGaWVsZENvbmZpZ3MpICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRJbm5lckZpZWxkQ29uZmlnUmVmICggJElubmVyRmllbGRDb25maWdzLT5AKiApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBuZWNlc3NhcnkgdG8gbm90IG92ZXJ3cml0ZSBjYWNoZWQgZGF0YSBvZiBmaWVsZCBjb25maWcgYnkgYWx0ZXJpbmcgdGhlIHJlZmVyZW5jZQogICAgICAgICAgICAgICAgICAgIG15ICVJbm5lckZpZWxkQ29uZmlnID0gJElubmVyRmllbGRDb25maWdSZWYtPiUqOwoKICAgICAgICAgICAgICAgICAgICAkSW5uZXJGaWVsZENvbmZpZ3tMYWJlbH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0gKSAuICc6OicKICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRJbm5lckZpZWxkQ29uZmlne0xhYmVsfSApOwogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNldElubmVyRmllbGRzLCBcJUlubmVyRmllbGRDb25maWc7CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1c2ggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0sIEBTZXRJbm5lckZpZWxkczsKCiAgICAjIGJ1aWxkIE5hdmlnYXRpb25CYXIgJiB0byBnZXQgdGhlIG91dHB1dCBmYXN0ZXIhCiAgICBteSAkUmVmcmVzaCA9ICcnOwogICAgaWYgKCAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gKSB7CiAgICAgICAgJFJlZnJlc2ggPSA2MCAqICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfTsKICAgIH0KCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgUmVmcmVzaCA9PiAkUmVmcmVzaCwKICAgICk7CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgICMgZ2V0IGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0CiAgICBteSAkRmlsdGVyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Blcm1pc3Npb25Db25kaXRpb24nICkgfHwgJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fCAnJzsKCiAgICAjIGZldGNoIGZpbHRlcnMgZnJvbSBjb25maWcKICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncyA9ICRDb25maWdPYmplY3QtPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJyk7CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MpICkgewogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdFcnJvcicpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcGVybWlzc2lvbicpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyA9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlncy0+eyBzcHJpbnRmKCAiJTAyZCIsICRGaWx0ZXIgKSB9OwogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25Db25maWcpICkgewoKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0ZpbHRlciBpbnZhbGlkIScpLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIGdyb3VwIHBlcm1pc3Npb24gY2hlY2sKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0dyb3Vwc30gKSApIHsKICAgICAgICBteSAkQWNjZXNzT2sgPSAwOwoKICAgICAgICAjIGZldGNoIGdyb3VwcyBvZiBjdXN0b21lciB1c2VyCiAgICAgICAgbXkgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICk7CgogICAgICAgIEdST1VQOgogICAgICAgIGZvciBteSAkUGVybWlzc2lvbkdyb3VwICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntHcm91cHN9LT5AKiApIHsKICAgICAgICAgICAgaWYgKCAkR3JvdXBMb29rdXB7JFBlcm1pc3Npb25Hcm91cH0gKSB7CiAgICAgICAgICAgICAgICAkQWNjZXNzT2sgPSAxOwogICAgICAgICAgICAgICAgbGFzdCBHUk9VUDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJEFjY2Vzc09rICkgewogICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBwZXJtaXNzaW9uJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KICAgIH0KCiAgICBteSAlUGFnZU5hdjsKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTZWFyY2hBY3Rpb24nICkgewoKICAgICAgICBteSAkU29ydEJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvcnRCeScgKQogICAgICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgICAgIHx8ICdBZ2UnOwoKICAgICAgICBpZiAoICRTb3J0QnkgZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgJFNvcnRCeSA9ICdDaGFuZ2VkJzsKICAgICAgICB9CgogICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IG9yZGVyaW5nIHRvIGJlIHVzZWQuCiAgICAgICAgbXkgJERlZmF1bHRPcmRlckJ5ID0gJENvbmZpZy0+eydPcmRlcjo6RGVmYXVsdCd9CiAgICAgICAgICAgIHx8ICdVcCc7CgogICAgICAgICMgU2V0IHRoZSBzb3J0IG9yZGVyIGZyb20gdGhlIHJlcXVlc3QgcGFyYW1ldGVycywgb3IgdGFrZSB0aGUgZGVmYXVsdC4KICAgICAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgICAgIHx8ICREZWZhdWx0T3JkZXJCeTsKCiAgICAgICAgIyBzb3J0IG9uIGRlZmF1bHQgYnkgdXNpbmcgYm90aCAoUHJpb3JpdHksIEFnZSkgZWxzZSB1c2Ugb25seSBvbmUgc29ydCBhcmd1bWVudAogICAgICAgIG15ICVTb3J0OwoKICAgICAgICAjIGdldCBpZiBzZWFyY2ggcmVzdWx0IHNob3VsZCBiZSBwcmUtc29ydGVkIGJ5IHByaW9yaXR5CiAgICAgICAgbXkgJFByZVNvcnRCeVByaW9yaXR5ID0gJENvbmZpZy0+eydQcmVTb3J0OjpCeVByaW9yaXR5J307CiAgICAgICAgaWYgKCAhJFByZVNvcnRCeVByaW9yaXR5ICkgewogICAgICAgICAgICAlU29ydCA9ICgKICAgICAgICAgICAgICAgIFNvcnRCeSAgPT4gJFNvcnRCeSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAlU29ydCA9ICgKICAgICAgICAgICAgICAgIFNvcnRCeSAgPT4gWyAnUHJpb3JpdHknLCAkU29ydEJ5IF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ID0+IFsgJ0Rvd24nLCAgICAgJE9yZGVyQnkgXSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRWaWV3ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZpZXcnICkgfHwgJyc7CgogICAgICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgICAgIGlmICggISRWaWV3ICYmICRTZWxmLT57ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9ICkgewogICAgICAgICAgICAkVmlldyA9ICRTZWxmLT57ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9OwogICAgICAgIH0KCiAgICAgICAgIyBvdGhlcndpc2UgdXNlIFByZXZpZXcgYXMgZGVmYXVsdCBhcyBpbiBMYXlvdXRDb25maWdJdGVtCiAgICAgICAgJFZpZXcgfHw9ICdTbWFsbCc7CgogICAgICAgIG15ICRMaW5rUGFnZSA9ICdGaWx0ZXI9JwogICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgICAgIC4gJztTdWJhY3Rpb249JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntTdWJhY3Rpb259ICkKICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgICAgICAuICc7U29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgICAgICAuICc7T3JkZXJCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkT3JkZXJCeSApOwoKICAgICAgICBteSAkTGlua1NvcnQgPSAnRmlsdGVyPScKICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRGaWx0ZXIgKQogICAgICAgICAgICAuICc7U3ViYWN0aW9uPScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57U3ViYWN0aW9ufSApCiAgICAgICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICk7CgogICAgICAgICMgZ2V0IHNlYXJjaCBwYXJhbXMgZnJvbSB3ZWIgcmVxdWVzdAogICAgICAgIG15ICVHZXRQYXJhbTsKICAgICAgICBmb3IgbXkgJFNlYXJjaFBhcmFtIChxdyhOdW1iZXIgTmFtZSkpIHsKCiAgICAgICAgICAgICMgZmV0Y2ggc2luZ2xlIHZhbHVlIHBhcmFtcwogICAgICAgICAgICAkR2V0UGFyYW17JFNlYXJjaFBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRTZWFyY2hQYXJhbSApOwogICAgICAgICAgICAkTGlua1BhZ2UgLj0gIjskU2VhcmNoUGFyYW09IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEdldFBhcmFteyRTZWFyY2hQYXJhbX0gKTsKICAgICAgICAgICAgJExpbmtTb3J0IC49ICI7JFNlYXJjaFBhcmFtPSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRHZXRQYXJhbXskU2VhcmNoUGFyYW19ICk7CiAgICAgICAgfQoKICAgICAgICBteSBAQXJyYXlTZWFyY2hQYXJhbXMgPSBxdyhDbGFzc0lEcyk7CgogICAgICAgIGlmICggJENvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZX0gKSB7CiAgICAgICAgICAgIHB1c2ggQEFycmF5U2VhcmNoUGFyYW1zLCAnRGVwbFN0YXRlSURzJzsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e0luY2lkZW50U3RhdGV9ICkgewogICAgICAgICAgICBwdXNoIEBBcnJheVNlYXJjaFBhcmFtcywgJ0luY2lTdGF0ZUlEcyc7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFNlYXJjaFBhcmFtQXJyYXkgKEBBcnJheVNlYXJjaFBhcmFtcykgewoKICAgICAgICAgICAgIyBmZXRjaCBtdWx0aSB2YWx1ZSBwYXJhbXMKICAgICAgICAgICAgbXkgQEFycmF5ID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJFNlYXJjaFBhcmFtQXJyYXkgKTsKICAgICAgICAgICAgaWYgKCBncmVwIHskX30gQEFycmF5ICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRTZWFyY2hQYXJhbUFycmF5fSA9IFxAQXJyYXk7CiAgICAgICAgICAgICAgICAkTGlua1BhZ2UgLj0gam9pbiggJycsIG1hcCB7ICI7JFNlYXJjaFBhcmFtQXJyYXk9IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJF8gKSB9IEBBcnJheSApOwogICAgICAgICAgICAgICAgJExpbmtTb3J0IC49IGpvaW4oICcnLCBtYXAgeyAiOyRTZWFyY2hQYXJhbUFycmF5PSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRfICkgfSBAQXJyYXkgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJVNlYXJjaENvbmZpZzsKICAgICAgICBteSAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVyczsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJFNlbGYtPntEeW5hbWljRmllbGR9LT5AKiApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHdlYiByZXF1ZXN0CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgUmV0dXJuUHJvZmlsZVN0cnVjdHVyZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHRoZSBjb21wbGV0ZSB2YWx1ZSBzdHJ1Y3R1cmUgaW4gR2V0UGFyYW0gdG8gc3RvcmUgaXQgbGF0ZXIgaW4gdGhlIHNlYXJjaAogICAgICAgICAgICAgICAgIyBwcm9maWxlCiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRWYWx1ZSkgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKCAlR2V0UGFyYW0sICV7JER5bmFtaWNGaWVsZFZhbHVlfSApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBwcm9maWxlCiAgICAgICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVyID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkU2VhcmNoUGFyYW1ldGVyICkgewoKICAgICAgICAgICAgICAgICAgICAjIGFwcGVuZCBzZWFyY2ggcGFyYW1zIHRvIGxpbmtzCiAgICAgICAgICAgICAgICAgICAgaWYgKCByZWYgJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn17RXF1YWxzfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTGlua1BhZ2UgLj0gam9pbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwIHsgIjtTZWFyY2hfRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkXyApIH0gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn17RXF1YWxzfS0+QCoKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJExpbmtTb3J0IC49IGpvaW4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCB7ICI7U2VhcmNoX0R5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX09IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJF8gKSB9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9e0VxdWFsc30tPkAqCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGlua1BhZ2UgLj0gIjtTZWFyY2hfRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfXtFcXVhbHN9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rU29ydCAuPSAiO1NlYXJjaF9EeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9PSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9e0VxdWFsc30gKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnN7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJExpbmtQYWdlIC49ICc7JzsKICAgICAgICAkTGlua1NvcnQgLj0gJzsnOwoKICAgICAgICAlU2VhcmNoQ29uZmlnID0gKAogICAgICAgICAgICAlU2VhcmNoQ29uZmlnLAogICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICAgICAgJVNvcnQsCiAgICAgICAgKTsKCiAgICAgICAgIyBtZXJnZSBmaWx0ZXJlZCBjbGFzc2VzIHdpdGggcGVybWlzc2lvbiBjb25kaXRpb24gY2xhc3NlcwogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17Q2xhc3NJRHN9ICkgKSB7CiAgICAgICAgICAgIG15IEBTZWFyY2hDbGFzc2VzOwogICAgICAgICAgICBmb3IgbXkgJENsYXNzSUQgKCAkR2V0UGFyYW17Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgIGlmICggYW55IHsgJF8gZXEgJENsYXNzTGlzdC0+eyRDbGFzc0lEfSB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaENsYXNzZXMsICRDbGFzc0xpc3QtPnskQ2xhc3NJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3tDbGFzc2VzfSA9IFxAU2VhcmNoQ2xhc3NlczsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7Q2xhc3Nlc30gPSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0NsYXNzZXN9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJFNlYXJjaENvbmZpZ3tDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24nKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIG1lcmdlIGZpbHRlcmVkIGRlcGxveW1lbnQgc3RhdGVzIHdpdGggcGVybWlzc2lvbiBjb25kaXRpb24gZGVwbG95bWVudCBzdGF0ZXMKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdldFBhcmFte0RlcGxTdGF0ZUlEc30gKSApIHsKICAgICAgICAgICAgbXkgQFNlYXJjaERlcGxTdGF0ZXM7CiAgICAgICAgICAgIGZvciBteSAkRGVwbFN0YXRlSUQgKCAkR2V0UGFyYW17RGVwbFN0YXRlSURzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfSApICkgewogICAgICAgICAgICAgICAgICAgIGlmICggYW55IHsgJF8gZXEgJERlcGxTdGF0ZUxpc3QtPnskRGVwbFN0YXRlSUR9IH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaERlcGxTdGF0ZXMsICREZXBsU3RhdGVMaXN0LT57JERlcGxTdGF0ZUlEfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTZWFyY2hEZXBsU3RhdGVzLCAkRGVwbFN0YXRlTGlzdC0+eyREZXBsU3RhdGVJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggIUBTZWFyY2hEZXBsU3RhdGVzICkgewogICAgICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgICAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24nKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWFyY2hDb25maWd7RGVwbFN0YXRlc30gPSBcQFNlYXJjaERlcGxTdGF0ZXM7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9ICkgKSB7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7RGVwbFN0YXRlc30gPSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9OwogICAgICAgIH0KCiAgICAgICAgIyBtYXAgZmlsdGVyZWQgaW5jaWRlbnQgc3RhdGUgaWRzCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXtJbmNpU3RhdGVJRHN9ICkgKSB7CiAgICAgICAgICAgIG15IEBTZWFyY2hJbmNpU3RhdGVzID0gbWFwIHsgJEluY2lTdGF0ZUxpc3QtPnskX30gfSAkR2V0UGFyYW17SW5jaVN0YXRlSURzfS0+QCo7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7SW5jaVN0YXRlc30gPSBcQFNlYXJjaEluY2lTdGF0ZXM7CiAgICAgICAgfQoKICAgICAgICAkU2VhcmNoQ29uZmlne051bWJlcn0gPSAkR2V0UGFyYW17TnVtYmVyfSA/ICRHZXRQYXJhbXtOdW1iZXJ9IDogdW5kZWY7CiAgICAgICAgJFNlYXJjaENvbmZpZ3tOYW1lfSAgID0gJEdldFBhcmFte05hbWV9ICAgPyAkR2V0UGFyYW17TmFtZX0gICA6IHVuZGVmOwoKICAgICAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZCBzZWFyY2ggcGFyYW1zCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9ICkgKSB7CgogICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgIGZvciBteSAkRmllbGROYW1lICgga2V5cyAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc30tPiUqICkgewoKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkRmllbGROYW1lLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgICAgIGlmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9ICkgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hDb25maWd7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9IGVxICcnICkgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hDb25maWd7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyByZXN0cmljdCBzZWFyY2ggYnkgcGVybWlzc2lvbiBjb25kaXRpb24gY3VzdG9tZXIgY29tcGFueSBhbmQgY3VzdG9tZXIgdXNlcgogICAgICAgICMgTk9URSB0aGlzIG92ZXJ3cml0ZXMgcHJldmlvdXNseSBzZXQgc2VhcmNoIHBhcmFtcyBmb3IgdGhlIGNvbmZpZ3VyZWQgZHluYW1pYyBmaWVsZHMKICAgICAgICBpZiAoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3siRHluYW1pY0ZpZWxkXyRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSJ9ID0gewogICAgICAgICAgICAgICAgRXF1YWxzID0+ICRTZWxmLT57Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGlmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDdXN0b21lclVzZXJEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAkU2VhcmNoQ29uZmlneyJEeW5hbWljRmllbGRfJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDdXN0b21lclVzZXJEeW5hbWljRmllbGR9In0gPSB7CiAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgbXkgJUZpbHRlcnMgPSAoCiAgICAgICAgICAgICRGaWx0ZXIgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICBQcmlvICAgPT4gMTAwMCwKICAgICAgICAgICAgICAgIFNlYXJjaCA9PiBcJVNlYXJjaENvbmZpZywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICElU2VhcmNoQ29uZmlnICkgewogICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdTZWFyY2ggcGFyYW1zIGludmFsaWQhJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayBpZiBzZWxlY3RlZCB2aWV3IGlzIGF2YWlsYWJsZS4KICAgICAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJPdmVydmlldycpOwogICAgICAgIGlmICggISRCYWNrZW5kcy0+eyRWaWV3fSApIHsKCiAgICAgICAgICAgICMgVHJ5IHRvIGZpbmQgZmFsbGJhY2ssIHRha2UgZmlyc3QgY29uZmlndXJlZCB2aWV3IG1vZGUuCiAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskQmFja2VuZHN9ICkgewogICAgICAgICAgICAgICAgJFZpZXcgPSAkS2V5OwogICAgICAgICAgICAgICAgbGFzdCBLRVk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IGN1c3RvbWVyIHBhZ2Ugc2hvd24gY291bnQKICAgICAgICBteSAkUGFnZVNob3duID0gJEJhY2tlbmRzLT57JFZpZXd9ID8gJEJhY2tlbmRzLT57JFZpZXd9LT57UGFnZVNob3dufSA6IDEwOwoKICAgICAgICAjIGRvIHNob3duIGNvbmZpZyBpdGVtIGxvb2t1cAogICAgICAgIG15ICRMaW1pdCA9IDFfMDAwOwoKICAgICAgICAjIGdldCBkYXRhICh2aWV3YWJsZSBjb25maWcgaXRlbXMuLi4pCiAgICAgICAgIyBzZWFyY2ggYWxsIGNvbmZpZyBpdGVtcwogICAgICAgIG15IEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgJVNlYXJjaENvbmZpZywKICAgICAgICAgICAgTGltaXQgID0+ICRMaW1pdCwKICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRvdGFsID0gc2NhbGFyIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXM7CgogICAgICAgIG15ICRTdGFydEhpdCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxOwoKICAgICAgICBteSBAVmlld2FibGVDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAlU2VhcmNoQ29uZmlnLAogICAgICAgICAgICBMaW1pdCAgPT4gJFN0YXJ0SGl0ICsgJFBhZ2VTaG93biAtIDEsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAogICAgICAgICk7CgogICAgICAgICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICAgICAgTGltaXQgICAgID0+IDEwMDAwLAogICAgICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICAgICAgQWxsSGl0cyAgID0+IHNjYWxhciBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICBBY3Rpb24gICAgPT4gJ0FjdGlvbj1DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgTGluayAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICAgICAgSURQcmVmaXggID0+ICdDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICApOwoKICAgICAgICAjIFRPRE8gTWF5YmUgdGhlcmUgaXMgYSBtb3JlIGVsZWdhbnQgd2F5IHRvIGRvIHRoaXM/CiAgICAgICAgJFNlbGYtPntGaWx0ZXJ9ICA9ICRGaWx0ZXI7CiAgICAgICAgJFNlbGYtPntGaWx0ZXJzfSA9IFwlRmlsdGVyczsKCiAgICAgICAgIyBzaG93IGNvbmZpZyBpdGVtcwogICAgICAgIG15ICRDb25maWdJdGVtTGlzdEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgICAgICBGaWx0ZXIgICAgICAgICAgICAgICAgPT4gJEZpbHRlciwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEcyAgICAgICAgID0+IFxAVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+IFxAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBMaW5rUGFnZSAgICAgICAgICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgICAgICBMaW5rU29ydCAgICAgICAgICAgICAgPT4gJExpbmtTb3J0LAogICAgICAgICAgICBFbmFibGVDb2x1bW5GaWx0ZXIgICAgPT4gMCwKICAgICAgICAgICAgVmlldyAgICAgICAgICAgICAgICAgID0+ICRWaWV3LAogICAgICAgICAgICBUb3RhbCAgICAgICAgICAgICAgICAgPT4gJFRvdGFsLAogICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgICA9PiAkU29ydEJ5LAogICAgICAgICAgICBFbnYgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgICAgIEZyb250ZW5kICAgICAgICAgICAgICA9PiAnQ3VzdG9tZXInLAoKICAgICAgICAgICAgIyBkbyBub3QgcHJpbnQgdGhlIHJlc3VsdCBlYXJsaWVyLCBidXQgcmV0dXJuIGNvbXBsZXRlIGNvbnRlbnQKICAgICAgICAgICAgT3V0cHV0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaFJlc3VsdCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1MaXN0SFRNTCA9PiAkQ29uZmlnSXRlbUxpc3RIVE1MLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggZGVmaW5lZCAkQ29uZmlnT2JqZWN0LT5HZXQoIkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSIpLT57IkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gifSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hCb3gnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKCiAgICAgICAgIyBzdG9yZSBkcm9wZG93biByZXN0cmljdGlvbnMgZnJvbSBwZXJtaXNzaW9uIGNvbmRpdGlvbgogICAgICAgIG15ICVTZWFyY2hhYmxlUGFyYW1zID0gKAogICAgICAgICAgICBJbmNpU3RhdGUgPT4gJEluY2lTdGF0ZUxpc3QsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgc2VhcmNoYWJsZSBwYXJhbXMKICAgICAgICBteSAlQ2xhc3NMb29rdXAgPSByZXZlcnNlICRDbGFzc0xpc3QtPiUqOwogICAgICAgICRTZWFyY2hhYmxlUGFyYW1ze0NsYXNzfSA9IHsKICAgICAgICAgICAgbWFwIHsKICAgICAgICAgICAgICAgICRDbGFzc0xvb2t1cHskX30KICAgICAgICAgICAgICAgICAgICA/ICggJENsYXNzTG9va3VweyRffSA9PiAkXyApCiAgICAgICAgICAgICAgICAgICAgOiAoKQogICAgICAgICAgICB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q2xhc3Nlc30tPkAqCiAgICAgICAgfTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc30gKSApIHsKICAgICAgICAgICAgbXkgJURlcGxTdGF0ZUxvb2t1cCA9IHJldmVyc2UgJERlcGxTdGF0ZUxpc3QtPiUqOwogICAgICAgICAgICAkU2VhcmNoYWJsZVBhcmFtc3tEZXBsU3RhdGV9ID0gewogICAgICAgICAgICAgICAgbWFwIHsKICAgICAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTG9va3VweyRffQogICAgICAgICAgICAgICAgICAgICAgICA/ICggJERlcGxTdGF0ZUxvb2t1cHskX30gPT4gJF8gKQogICAgICAgICAgICAgICAgICAgICAgICA6ICgpCiAgICAgICAgICAgICAgICB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc30tPkAqCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VhcmNoYWJsZVBhcmFtc3tEZXBsU3RhdGV9ID0gJERlcGxTdGF0ZUxpc3Q7CiAgICAgICAgfQoKICAgICAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0N1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucycpOwoKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MpICkgewogICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hGb3JtJywKICAgICAgICApOwoKICAgICAgICBteSAlRGVmYXVsdHM7CiAgICAgICAgaWYgKCAkQ29uZmlnLT57RGVmYXVsdHN9ICkgewogICAgICAgICAgICBLRVk6CiAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRDb25maWctPntEZWZhdWx0c30gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICEkQ29uZmlnLT57RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAkS2V5IGVxICdEeW5hbWljRmllbGQnOwoKICAgICAgICAgICAgICAgIGlmICggJEtleSA9fiAvXkNvbmZpZ0l0ZW0oQ3JlYXRlfENoYW5nZSkvICkgewogICAgICAgICAgICAgICAgICAgIG15IEBJdGVtcyA9IHNwbGl0IC87LywgJENvbmZpZy0+e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbSAoQEl0ZW1zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICggJEtleSwgJFZhbHVlICkgPSBzcGxpdCAvPS8sICRJdGVtOwogICAgICAgICAgICAgICAgICAgICAgICAkRGVmYXVsdHN7JEtleX0gPSAkVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJERlZmF1bHRzeyRLZXl9ID0gJENvbmZpZy0+e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdlbmVyYXRlIGRyb3Bkb3duIGZvciBzZWxlY3RpbmcgdGhlIHBlcm1pc3Npb24gY29uZGl0aW9uCiAgICAgICAgbXkgJVBlcm1pc3Npb25Db25kaXRpb25EYXRhID0gbWFwIHsgaW50KCRfKSA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MtPnskX30tPntOYW1lfSB9IGtleXMgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWdzLT4lKjsKICAgICAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvblN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gXCVQZXJtaXNzaW9uQ29uZGl0aW9uRGF0YSwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1Blcm1pc3Npb25Db25kaXRpb24nLAogICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkRmlsdGVyIHx8ICcnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUGVybWlzc2lvbkNvbmRpdGlvbicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgUGVybWlzc2lvbkNvbmRpdGlvblN0cmcgPT4gJFBlcm1pc3Npb25Db25kaXRpb25TdHJnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJFNlbGYtPntEeW5hbWljRmllbGR9LT5AKiApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzRmlsdGVyOwoKICAgICAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkSXNBQ0xSZWR1Y2libGUpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzID0gJEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIGhhcyBQb3NzaWJsZVZhbHVlcyBwcm9wZXJ0eSBpbiBpdHMgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkUG9zc2libGVWYWx1ZXMpICkgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBoaXN0b3JpY2FsIHZhbHVlcyBmcm9tIGRhdGFiYXNlCiAgICAgICAgICAgICAgICAgICAgbXkgJEhpc3RvcmljYWxWYWx1ZXMgPSAkQmFja2VuZE9iamVjdC0+SGlzdG9yaWNhbFZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJERhdGEgPSAkUG9zc2libGVWYWx1ZXM7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGhpc3RvcmljIHZhbHVlcyB0byBjdXJyZW50IHZhbHVlcyAoaWYgdGhleSBkb24ndCBleGlzdCBhbnltb3JlKQogICAgICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJEhpc3RvcmljYWxWYWx1ZXMpICkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRIaXN0b3JpY2FsVmFsdWVzfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISREYXRhLT57JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGEtPnskS2V5fSA9ICRIaXN0b3JpY2FsVmFsdWVzLT57JEtleX07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY29udmVydCBwb3NzaWJsZSB2YWx1ZXMga2V5ID0+IHZhbHVlIHRvIGtleSA9PiBrZXkgZm9yIEFDTHMgdXNpbmcgYSBIYXNoIHNsaWNlCiAgICAgICAgICAgICAgICAgICAgbXkgJUFjbERhdGEgPSAleyREYXRhfTsKICAgICAgICAgICAgICAgICAgICBAQWNsRGF0YXsga2V5cyAlQWNsRGF0YSB9ID0ga2V5cyAlQWNsRGF0YTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgcG9zc2libGUgdmFsdWVzIGZpbHRlciBmcm9tIEFDTHMKICAgICAgICAgICAgICAgICAgICBteSAkQUNMID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuVHlwZSAgICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgICA9PiBcJUFjbERhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICVGaWx0ZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFjbERhdGEoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBGaWxlciBrZXkgPT4ga2V5IGJhY2sgdG8ga2V5ID0+IHZhbHVlIHVzaW5nIG1hcAogICAgICAgICAgICAgICAgICAgICAgICAleyRQb3NzaWJsZVZhbHVlc0ZpbHRlcn0gPSBtYXAgeyAkXyA9PiAkRGF0YS0+eyRffSB9IGtleXMgJUZpbHRlcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIEhUTUwKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRIVE1MID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBvc3NpYmxlVmFsdWVzRmlsdGVyLAogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICAgID0+IHt9LAogICAgICAgICAgICAgICAgICAgIERlZmF1bHRWYWx1ZSAgICAgICAgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWctPntEZWZhdWx0c317RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkID0+ICREeW5hbWljRmllbGRIVE1MLT57RmllbGR9LAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ051bWJlcicsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05hbWUnLAogICAgICAgICk7CgogICAgICAgIG15ICRDbGFzc1N0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRTZWFyY2hhYmxlUGFyYW1ze0NsYXNzfSwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDbGFzc0lEcycsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICREZWZhdWx0c3tDbGFzc0lEc30sCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQ2xhc3MnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzU3RyZyA9PiAkQ2xhc3NTdHJnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggJENvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZX0gKSB7CgogICAgICAgICAgICAjIGdlbmVyYXRlIGRyb3Bkb3duIGZvciBzZWxlY3RpbmcgdGhlIHdhbnRlZCBkZXBsb3ltZW50IHN0YXRlcwogICAgICAgICAgICBteSAkQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRTZWFyY2hhYmxlUGFyYW1ze0RlcGxTdGF0ZX0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJERlZmF1bHRze0RlcGxveW1lbnRTdGF0ZUlEc30sCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVPcHRpb25TdHJnID0+ICRDdXJEZXBsU3RhdGVPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e0luY2lkZW50U3RhdGV9ICkgewoKICAgICAgICAgICAgIyBnZW5lcmF0ZSBkcm9wZG93biBmb3Igc2VsZWN0aW5nIHRoZSB3YW50ZWQgaW5jaWRlbnQgc3RhdGVzCiAgICAgICAgICAgIG15ICRDdXJJbmNpU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFNlYXJjaGFibGVQYXJhbXN7SW5jaVN0YXRlfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnSW5jaVN0YXRlSURzJywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkRGVmYXVsdHN7SW5jaWRlbnRTdGF0ZUlEc30sCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVPcHRpb25TdHJnID0+ICRDdXJJbmNpU3RhdGVPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24hJyksCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBidWlsZCBOYXZpZ2F0aW9uQmFyCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTmF2aWdhdGlvbkJhcigpOwoKICAgICMgZ2V0IHBhZ2UgZm9vdGVyCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/CustomerITSMConfigItemZoom.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVpvb207Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3MgeyVQYXJhbX0sICRUeXBlOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgcGFyYW1zCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKICAgIG15ICRWZXJzaW9uSUQgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmVyc2lvbklEJyApOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q3VzdG9tZXJQZXJtaXNzaW9uKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggISRIYXNBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTm9QZXJtaXNzaW9uKCBXaXRoSGVhZGVyID0+ICd5ZXMnICk7CiAgICB9CgogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtWm9vbScpIC8vIHt9OwoKICAgIGlmICggISRDb25maWctPntWZXJzaW9uc0VuYWJsZWR9ICkgewogICAgICAgICRWZXJzaW9uSUQgPSB1bmRlZjsKICAgIH0KCiAgICAjIGdldCBjb250ZW50CiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKICAgIGlmICggISRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSApIHsKCiAgICAgICAgIyBhZGRpdGlvbmFsIHNhbmV0eSBjaGVjayAtIEN1c3RvbWVyUGVybWlzc2lvbiBzaG91bGQgaGFuZGxlIHRoaXMgY2FzZSB1c3VhbGx5CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDb25maWdJdGVtIG5vdCBmb3VuZCEnKSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IGluY2lkZW50IHNpZ25hbAogICAgbXkgJUluY2lTaWduYWxzID0gKAogICAgICAgIFRyYW5zbGF0YWJsZSgnb3BlcmF0aW9uYWwnKSA9PiAnZ3JlZW5sZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnd2FybmluZycpICAgICA9PiAneWVsbG93bGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ2luY2lkZW50JykgICAgPT4gJ3JlZGxlZCcsCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIGNvbG9yIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15ICVEZXBsU2lnbmFsczsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBsaXN0IG9mIGRlcGxveW1lbnQgc3RhdGVzCiAgICBteSAkRGVwbG95bWVudFN0YXRlc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgKTsKCiAgICAjIHNldCBkZXBsb3ltZW50IHN0eWxlIGNvbG9ycwogICAgbXkgJFN0eWxlQ2xhc3NlcyA9ICcnOwoKICAgIElURU1JRDoKICAgIGZvciBteSAkSXRlbUlEICggc29ydCBrZXlzICV7JERlcGxveW1lbnRTdGF0ZXNMaXN0fSApIHsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIG15ICVQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIGNvbG9yIGlzIGRlZmluZWQgaW4gcHJlZmVyZW5jZXMKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJFByZWZlcmVuY2Vze0NvbG9yfTsKICAgICAgICBteSAoJENvbG9yKSA9ICRQcmVmZXJlbmNlc3tDb2xvcn0tPkAqOwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkQ29sb3I7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUKICAgICAgICBteSAkRGVwbFN0YXRlID0gJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH07CgogICAgICAgICMgcmVtb3ZlIGFueSBub24gYXNjaWkgd29yZCBjaGFyYWN0ZXJzCiAgICAgICAgJERlcGxTdGF0ZSA9fiBzeyBbXmEtekEtWjAtOV0gfXtffW1zeGc7CgogICAgICAgICMgc3RvcmUgdGhlIG9yaWdpbmFsIGRlcGxveW1lbnQgc3RhdGUgYXMga2V5CiAgICAgICAgIyBhbmQgdGhlIHNzIHNhZmUgY292ZXJ0ZWQgZGVwbG95bWVudCBzdGF0ZSBhcyB2YWx1ZQogICAgICAgICREZXBsU2lnbmFsc3sgJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH0gfSA9ICdDb2xvcicgLiAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvdmVydCB0byBsb3dlciBjYXNlCiAgICAgICAgbXkgJERlcGxTdGF0ZUNvbG9yID0gbGMoJENvbG9yKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgIyBhZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcKICAgICAgICAkU3R5bGVDbGFzc2VzIC49ICIKICAgICAgICAgICAgLkNvbG9yJERlcGxTdGF0ZSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjJERlcGxTdGF0ZUNvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgIjsKICAgIH0KCiAgICAjIHdyYXAgaW50byBzdHlsZSB0YWdzCiAgICBpZiAoJFN0eWxlQ2xhc3NlcykgewogICAgICAgICRTdHlsZUNsYXNzZXMgPSAiPHN0eWxlPiRTdHlsZUNsYXNzZXM8L3N0eWxlPiI7CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoIFZhbHVlID0+ICRDb25maWdJdGVtLT57TnVtYmVyfSApOwoKICAgIGlmICggJENvbmZpZy0+e0dlbmVyYWxJbmZvfSApIHsKICAgICAgICBpZiAoICRDb25maWctPntHZW5lcmFsSW5mb317TnVtYmVyfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdGdWxsU3ViJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgID0+ICRDb25maWctPntHZW5lcmFsSW5mb317Q2xhc3N9ID8gJENvbmZpZ0l0ZW0tPntDbGFzc30gOiAnQ29uZmlnSXRlbScKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJENvbmZpZy0+e0dlbmVyYWxJbmZvfXtDbGFzc30gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ2xhc3NTdWInLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc30sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGVDb2xvckNsYXNzfSA9ICREZXBsU2lnbmFsc3sgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGV9IH07CiAgICAgICAgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGVDb2xvckNsYXNzfSA9ICRJbmNpU2lnbmFsc3sgJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGVUeXBlfSB9OwoKICAgICAgICBJTkZPOgogICAgICAgIGZvciBteSAkSW5mbyAocXcvRGVwbG95bWVudFN0YXRlIEluY2lkZW50U3RhdGUgQ3JlYXRlZFRpbWUgTGFzdENoYW5nZWRUaW1lLykgewogICAgICAgICAgICBuZXh0IElORk8gaWYgISRDb25maWctPntHZW5lcmFsSW5mb317JEluZm99OwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICRJbmZvLAogICAgICAgICAgICAgICAgRGF0YSA9PiAkQ29uZmlnSXRlbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBhIHZlcnNpb24gYWxyZWFkeSBleGlzdHMgKFRPRE86IFdoZW4gZG9lcyBpdCBub3Q/KQogICAgaWYgKCAkQ29uZmlnSXRlbS0+e05hbWV9ICkgewogICAgICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJUdyb3VwTG9va3VwOwogICAgICAgIG15IEBQYWdlczsKICAgICAgICBteSAkUGFnZVNob3duOwogICAgICAgIG15ICRQYWdlUmVxdWVzdGVkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1BhZ2UnICk7CiAgICAgICAgUEFHRToKICAgICAgICBmb3IgbXkgJFBhZ2UgKCAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1BhZ2VzfS0+QCogKSB7CiAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgJFBhZ2UtPntJbnRlcmZhY2VzfTsKICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkXyBlcSAnQ3VzdG9tZXInIH0gJFBhZ2UtPntJbnRlcmZhY2VzfS0+QCo7CgogICAgICAgICAgICAjIHJlc3RyaWN0aW9uIGJ5IEdyb3VwcyBpcyBvcHRpb25hbAogICAgICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKCiAgICAgICAgICAgICAgICAjIGZldGNoIHRoZSBncm91cHMgd2hlcmUgdGhlIHVzZXIgaGFzIHJlYWQgYWNjZXNzCiAgICAgICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBncmFudCBhY2Nlc3MgdG8gdGhlIHBhZ2Ugb25seSB3aGVuIHRoZSB1c2VyIGlzIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGdyb3VwcwogICAgICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkR3JvdXBMb29rdXB7JF99IH0gJFBhZ2UtPntHcm91cHN9LT5AKjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAUGFnZXMsICRQYWdlOwoKICAgICAgICAgICAgaWYgKCAkUGFnZVJlcXVlc3RlZCAmJiAkUGFnZS0+e05hbWV9IGVxICRQYWdlUmVxdWVzdGVkICkgewogICAgICAgICAgICAgICAgJFBhZ2VTaG93biA9ICRQYWdlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkUGFnZVNob3duIC8vPSBAUGFnZXMgPyAkUGFnZXNbMF0gOiB1bmRlZjsKCiAgICAgICAgaWYgKCBzY2FsYXIgQFBhZ2VzID09IDEgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUGFnZU5hbWUnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgUGFnZU5hbWUgPT4gJFBhZ2VzWzBde05hbWV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGZvciBteSAkUGFnZSAoQFBhZ2VzKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdQYWdlTGluaycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFBhZ2VOYW1lICAgICA9PiAkUGFnZS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWQgICAgID0+ICRQYWdlLT57TmFtZX0gZXEgJFBhZ2VTaG93bi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoQFBhZ2VzKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtLT57RHluYW1pY0ZpZWxkSFRNTH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkR5bmFtaWNGaWVsZCcpLT5QYWdlUmVuZGVyKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiAkQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgICAgICAgICBQYWdlUmVmICAgID0+ICRQYWdlU2hvd24sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgdmVyc2lvbiBsaXN0CiAgICAgICAgaWYgKCAkQ29uZmlnLT57VmVyc2lvbnNFbmFibGVkfSAmJiAkQ29uZmlnLT57VmVyc2lvbnNTZWxlY3RhYmxlfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHZlcnNpb24gbGlzdAogICAgICAgICAgICBteSAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkQmFzZUxpbmsgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tOycKICAgICAgICAgICAgICAgICAgICAuICJDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9O1BhZ2U9WyUgRGF0YS5OYW1lIHwgdXJpICVdOyIsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRQYWdlU2hvd24gPyAkUGFnZVNob3duLT57TmFtZX0gOiAnJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAVmVyc2lvblNlbGVjdGlvbkRhdGEgPSBtYXAgewogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICggJEJhc2VMaW5rIC4gIlZlcnNpb25JRD0kXy0+e1ZlcnNpb25JRH0iICksCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gKAogICAgICAgICAgICAgICAgICAgICAgICAiJF8tPntOYW1lfSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICggJF8tPntWZXJzaW9uU3RyaW5nfSB8fCAkXy0+e1ZlcnNpb25JRH0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiICgkXy0+e0NyZWF0ZVRpbWV9KSIKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9ICRWZXJzaW9uTGlzdC0+QCo7CgogICAgICAgICAgICBteSAkVmVyc2lvblNlbGVjdGlvbiA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFxAVmVyc2lvblNlbGVjdGlvbkRhdGEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1ZlcnNpb25TZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUgQWxpZ25Ecm9wZG93blJpZ2h0JywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkVmVyc2lvbklEID8gJEJhc2VMaW5rIC4gIlZlcnNpb25JRD0kVmVyc2lvbklEIiA6IHVuZGVmLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1ZlcnNpb25zJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlcnNpb25TZWxlY3Rpb24gPT4gJFZlcnNpb25TZWxlY3Rpb24sCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxpbmtlZCBvYmplY3RzCiAgICBteSAkTGlua0xpc3RXaXRoRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5ICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgU3RhdGUgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgbGluayB0YWJsZSB2aWV3IG1vZGUKICAgIG15ICRMaW5rVGFibGVWaWV3TW9kZSA9ICRDb25maWdPYmplY3QtPkdldCgnTGlua09iamVjdDo6Vmlld01vZGUnKTsKCiAgICAjIGNyZWF0ZSB0aGUgbGluayB0YWJsZQogICAgbXkgJExpbmtUYWJsZVN0cmcgPSAkTGF5b3V0T2JqZWN0LT5MaW5rT2JqZWN0VGFibGVDcmVhdGUoCiAgICAgICAgTGlua0xpc3RXaXRoRGF0YSA9PiAkTGlua0xpc3RXaXRoRGF0YSwKICAgICAgICBWaWV3TW9kZSAgICAgICAgID0+ICRMaW5rVGFibGVWaWV3TW9kZSwKICAgICAgICBPYmplY3QgICAgICAgICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5ICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIG91dHB1dCB0aGUgbGluayB0YWJsZQogICAgaWYgKCRMaW5rVGFibGVTdHJnKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0xpbmtUYWJsZScgLiAkTGlua1RhYmxlVmlld01vZGUsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTGlua1RhYmxlU3RyZyA9PiAkTGlua1RhYmxlU3RyZywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIG15IEBBdHRhY2htZW50cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgIGlmIChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0F0dGFjaG1lbnRzJywKICAgICAgICApOwoKICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgIGZvciBteSAkQXR0YWNobWVudCAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgbWV0YWRhdGEgb2YgdGhlIGN1cnJlbnQgYXR0YWNobWVudAogICAgICAgICAgICBteSAkQXR0YWNobWVudERhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkQXR0YWNobWVudCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgICAgIEZpbGVzaXplICAgICA9PiAkQXR0YWNobWVudERhdGEtPntGaWxlc2l6ZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGhhbmRsZSBEb3dubG9hZEF0dGFjaG1lbnQKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEb3dubG9hZEF0dGFjaG1lbnQnICkgewoKICAgICAgICAjIGdldCBkYXRhIGZvciBhdHRhY2htZW50CiAgICAgICAgbXkgJEZpbGVuYW1lICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVuYW1lJyApOwogICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgIyByZXR1cm4gZXJyb3IgaWYgZmlsZSBkb2VzIG5vdCBleGlzdAogICAgICAgIGlmICggISRBdHRhY2htZW50RGF0YSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAleyRBdHRhY2htZW50RGF0YX0sCiAgICAgICAgICAgIFR5cGUgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzdGFydCB0ZW1wbGF0ZSBvdXRwdXQKICAgIHJldHVybiBqb2luICcnLAogICAgICAgICRPdXRwdXQsCiAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtLT4lKiwKICAgICAgICAgICAgICAgIEN1ckluY2lTaWduYWwgPT4gJEluY2lTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZVR5cGV9IH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU2lnbmFsID0+ICREZXBsU2lnbmFsc3sgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGV9IH0sCiAgICAgICAgICAgICAgICBTdHlsZUNsYXNzZXMgID0+ICRTdHlsZUNsYXNzZXMsCiAgICAgICAgICAgIH0sCiAgICAgICAgKSwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5DdXN0b21lck5hdmlnYXRpb25CYXIsCiAgICAgICAgJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXI7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/Dashboard/ITSMConfigItemGeneric.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmQ6OklUU01Db25maWdJdGVtR2VuZXJpYzsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0gXCVQYXJhbTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBuZWVkZWQgcGFyYW1ldGVycwogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZyBOYW1lIFVzZXJJRCkpIHsKICAgICAgICBkaWUgIkdvdCBubyAkTmVlZGVkISIgaWYgKCAhJFNlbGYtPnskTmVlZGVkfSApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRSZW1vdmVGaWx0ZXJzID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1JlbW92ZUZpbHRlcnMnICkgfHwgJFBhcmFte1JlbW92ZUZpbHRlcnN9IHx8IDA7CgogICAgIyBnZXQgc29ydGluZyBwYXJhbXMKICAgIGZvciBteSAkSXRlbSAocXcoU29ydEJ5IE9yZGVyQnkpKSB7CiAgICAgICAgJFNlbGYtPnskSXRlbX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkSXRlbSApIHx8ICRQYXJhbXskSXRlbX07CiAgICB9CgogICAgIyBHZXQgYWRkIGZpbHRlcnMgcGFyYW0uCiAgICAkU2VsZi0+e0FkZEZpbHRlcnN9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0FkZEZpbHRlcnMnICkgfHwgJFBhcmFte0FkZEZpbHRlcnN9IHx8IDA7CiAgICAkU2VsZi0+e1RhYkFjdGlvbn0gID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1RhYkFjdGlvbicgKSAgfHwgJFBhcmFte1RhYkFjdGlvbn0gIHx8IDA7CgogICAgIyBHZXQgcHJldmlvdXMgc29ydGluZyBjb2x1bW4uCiAgICAkU2VsZi0+e1NvcnRpbmdDb2x1bW59ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvcnRpbmdDb2x1bW4nICkgfHwgJFBhcmFte1NvcnRpbmdDb2x1bW59OwoKICAgICMgc2V0IGZpbHRlciBzZXR0aW5ncwogICAgZm9yIG15ICRJdGVtIChxdyhDb2x1bW5GaWx0ZXIgR2V0Q29sdW1uRmlsdGVyIEdldENvbHVtbkZpbHRlclNlbGVjdCkpIHsKICAgICAgICAkU2VsZi0+eyRJdGVtfSA9ICRQYXJhbXskSXRlbX07CiAgICB9CgogICAgIyBzYXZlIGNvbHVtbiBmaWx0ZXJzCiAgICAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzfSAgICAgICAgID0gJ1VzZXJEYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW5GaWx0ZXJzJyAuICRTZWxmLT57TmFtZX07CiAgICAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzUmVhbEtleXN9ID0gJ1VzZXJEYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW5GaWx0ZXJzUmVhbEtleXMnIC4gJFNlbGYtPntOYW1lfTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJEpTT05PYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRVc2VyT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgIGlmICgkUmVtb3ZlRmlsdGVycykgewogICAgICAgICRVc2VyT2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgS2V5ICAgID0+ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnN9LAogICAgICAgICAgICBWYWx1ZSAgPT4gJycsCiAgICAgICAgKTsKICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzUmVhbEtleXN9LAogICAgICAgICAgICBWYWx1ZSAgPT4gJycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGp1c3QgaW4gY2FzZSBuZXcgZmlsdGVyIHZhbHVlcyBhcnJpdmUKICAgIGVsc2lmICgKICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJ9ICkKICAgICAgICAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9ICkKICAgICAgICAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntDb2x1bW5GaWx0ZXJ9ICkKICAgICAgICApCiAgICB7CgogICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnRGVtb1N5c3RlbScpICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGUgdXNlciBoYXMgZmlsdGVyIHByZWZlcmVuY2VzIGZvciB0aGlzIHdpZGdldAogICAgICAgICAgICBteSAlUHJlZmVyZW5jZXMgPSAkVXNlck9iamVjdC0+R2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkQ29sdW1uUHJlZlZhbHVlczsKICAgICAgICAgICAgaWYgKCAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgICAgICAkQ29sdW1uUHJlZlZhbHVlcyA9ICRKU09OT2JqZWN0LT5EZWNvZGUoCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnN9IH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBQUkVGVkFMVUVTOgogICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoIHNvcnQga2V5cyAleyAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gfSApIHsKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9LT57JENvbHVtbn0gZXEgJ0RlbGV0ZUZpbHRlcicgKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRDb2x1bW5QcmVmVmFsdWVzLT57JENvbHVtbn07CiAgICAgICAgICAgICAgICAgICAgbmV4dCBQUkVGVkFMVUVTOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJENvbHVtblByZWZWYWx1ZXMtPnskQ29sdW1ufSA9ICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fS0+eyRDb2x1bW59OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnN9LAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gJENvbHVtblByZWZWYWx1ZXMgKSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2F2ZSByZWFsIGtleSdzIG5hbWUKICAgICAgICAgICAgbXkgJENvbHVtblByZWZSZWFsS2V5c1ZhbHVlczsKICAgICAgICAgICAgaWYgKCAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnNSZWFsS2V5c30gfSApIHsKICAgICAgICAgICAgICAgICRDb2x1bW5QcmVmUmVhbEtleXNWYWx1ZXMgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzUmVhbEtleXN9IH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIFJFQUxLRVlWQUxVRVM6CiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uICggc29ydCBrZXlzICV7ICRTZWxmLT57Q29sdW1uRmlsdGVyfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBSRUFMS0VZVkFMVUVTIGlmICEkQ29sdW1uOwoKICAgICAgICAgICAgICAgIG15ICREZWxldGVGaWx0ZXIgPSAwOwogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAnRGVsZXRlRmlsdGVyJyB9IEB7ICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICREZWxldGVGaWx0ZXIgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59ICkgKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgYW55IHsgJFNlbGYtPntDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0tPnskX30gZXEgJ0RlbGV0ZUZpbHRlcicgfQogICAgICAgICAgICAgICAgICAgICAgICBrZXlzICV7ICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IH0KICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJERlbGV0ZUZpbHRlciA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkRGVsZXRlRmlsdGVyKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRDb2x1bW5QcmVmUmVhbEtleXNWYWx1ZXMtPnskQ29sdW1ufTsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJFNlbGYtPntDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn07CiAgICAgICAgICAgICAgICAgICAgbmV4dCBSRUFMS0VZVkFMVUVTOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJENvbHVtblByZWZSZWFsS2V5c1ZhbHVlcy0+eyRDb2x1bW59ID0gJFNlbGYtPntDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFVzZXJPYmplY3QtPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIEtleSAgICA9PiAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzUmVhbEtleXN9LAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gJENvbHVtblByZWZSZWFsS2V5c1ZhbHVlcyApLAogICAgICAgICAgICApOwoKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiB0aGUgdXNlciBoYXMgZmlsdGVyIHByZWZlcmVuY2VzIGZvciB0aGlzIHdpZGdldAogICAgbXkgJVByZWZlcmVuY2VzID0gJFVzZXJPYmplY3QtPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGNvbHVtbiBuYW1lcyBmcm9tIFByZWZlcmVuY2VzCiAgICBteSAkUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzOwogICAgaWYgKCAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnN9IH0gKSB7CiAgICAgICAgJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVycyA9ICRKU09OT2JqZWN0LT5EZWNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzfSB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCRQcmVmZXJlbmNlc0NvbHVtbkZpbHRlcnMpIHsKICAgICAgICAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gPSAkUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzOwogICAgICAgIG15IEBDb2x1bW5GaWx0ZXJzID0ga2V5cyAleyRQcmVmZXJlbmNlc0NvbHVtbkZpbHRlcnN9OwogICAgICAgIGZvciBteSAkRmllbGQgKEBDb2x1bW5GaWx0ZXJzKSB7CiAgICAgICAgICAgICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyfS0+eyAkRmllbGQgLiAkU2VsZi0+e05hbWV9IH0gPSAkUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzLT57JEZpZWxkfTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgY29sdW1uIHJlYWwgbmFtZXMgZnJvbSBQcmVmZXJlbmNlcwogICAgbXkgJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyc1JlYWxLZXlzOwogICAgaWYgKCAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnNSZWFsS2V5c30gfSApIHsKICAgICAgICAkUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzUmVhbEtleXMgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc1JlYWxLZXlzfSB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCRQcmVmZXJlbmNlc0NvbHVtbkZpbHRlcnNSZWFsS2V5cykgewogICAgICAgIG15IEBDb2x1bW5GaWx0ZXJzUmVhbCA9IGtleXMgJXskUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzUmVhbEtleXN9OwogICAgICAgIGZvciBteSAkRmllbGQgKEBDb2x1bW5GaWx0ZXJzUmVhbCkgewogICAgICAgICAgICAkU2VsZi0+e0NvbHVtbkZpbHRlcn0tPnskRmllbGR9ID0gJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyc1JlYWxLZXlzLT57JEZpZWxkfTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgY3VycmVudCBmaWx0ZXIKICAgIG15ICROYW1lICAgICAgICAgICAgICAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTmFtZScgKSB8fCAnJzsKICAgIG15ICRQcmVmZXJlbmNlc0tleSAgICAgICAgICAgPSAnVXNlckRhc2hib2FyZElUU01Db25maWdJdGVtR2VuZXJpY0ZpbHRlcicgLiAkU2VsZi0+e05hbWV9OwogICAgbXkgJEFkZGl0aW9uYWxQcmVmZXJlbmNlc0tleSA9ICdVc2VyRGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljQWRkaXRpb25hbEZpbHRlcicgLiAkU2VsZi0+e05hbWV9OwogICAgaWYgKCAkU2VsZi0+e05hbWV9IGVxICROYW1lICkgewogICAgICAgICRTZWxmLT57RmlsdGVyfSAgICAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsdGVyJyApICAgICAgICAgICB8fCAnJzsKICAgICAgICAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0FkZGl0aW9uYWxGaWx0ZXInICkgfHwgJyc7CiAgICB9CgogICAgIyBSZW1lbWJlciB0aGUgc2VsZWN0ZWQgZmlsdGVyIGluIHRoZSBzZXNzaW9uLgogICAgaWYgKCAkU2VsZi0+e0ZpbHRlcn0gKSB7CgogICAgICAgICMgdXBkYXRlIHNlc3Npb24KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJFByZWZlcmVuY2VzS2V5LAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntGaWx0ZXJ9LAogICAgICAgICk7CgogICAgICAgICMgdXBkYXRlIHByZWZlcmVuY2VzCiAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdEZW1vU3lzdGVtJykgKSB7CiAgICAgICAgICAgICRVc2VyT2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgPT4gJFByZWZlcmVuY2VzS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gPSAkU2VsZi0+eyRQcmVmZXJlbmNlc0tleX0gfHwgJFNlbGYtPntDb25maWd9LT57RmlsdGVyfSB8fCAnQXNzaWduZWRUb0VudGl0eSc7CiAgICB9CgogICAgIyBSZW1lbWJlciB0aGUgc2VsZWN0ZWQgZmlsdGVyIGluIHRoZSBzZXNzaW9uLgogICAgaWYgKCAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ICkgewoKICAgICAgICAjIHVwZGF0ZSBzZXNzaW9uCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICRBZGRpdGlvbmFsUHJlZmVyZW5jZXNLZXksCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9LAogICAgICAgICk7CgogICAgICAgICMgdXBkYXRlIHByZWZlcmVuY2VzCiAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdEZW1vU3lzdGVtJykgKSB7CiAgICAgICAgICAgICRVc2VyT2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgPT4gJEFkZGl0aW9uYWxQcmVmZXJlbmNlc0tleSwKICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gPSAkU2VsZi0+eyRBZGRpdGlvbmFsUHJlZmVyZW5jZXNLZXl9IHx8ICRTZWxmLT57Q29uZmlnfS0+e0FkZGl0aW9uYWxGaWx0ZXJ9IHx8ICdBc3NpZ25lZFRvRW50aXR5JzsKICAgIH0KCiAgICAkU2VsZi0+e1ByZWZLZXlTaG93bn0gICA9ICdVc2VyRGFzaGJvYXJkUHJlZicgLiAkU2VsZi0+e05hbWV9IC4gJy1TaG93bic7CiAgICAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSA9ICdVc2VyRGFzaGJvYXJkUHJlZicgLiAkU2VsZi0+e05hbWV9IC4gJy1Db2x1bW5zJzsKICAgICRTZWxmLT57UGFnZVNob3dufSAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT57ICRTZWxmLT57UHJlZktleVNob3dufSB9CiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57TGltaXR9OwogICAgJFNlbGYtPntTdGFydEhpdH0gPSBpbnQoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CgogICAgIyBoYXNoIHdpdGggYWxsIHZhbGlkIHNvcnRhYmxlIGNvbHVtbnMgKHRha2VuIGZyb20gSVRTTUNvbmZpZ0l0ZW1TZWFyY2gpCiAgICAjIFNvcnRCeSAgPT4gJ0FnZScsICAgIyBDcmVhdGVkfE51bWJlcnxDaGFuZ2VkfE5hbWV8RGVwbFN0YXRlfEN1ckRlcGxTdGF0ZQogICAgIyB8SW5jaVN0YXRlfEN1ckluY2lTdGF0ZQogICAgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30gPSB7CiAgICAgICAgJ0FnZScgICAgICAgICAgPT4gMSwKICAgICAgICAnTnVtYmVyJyAgICAgICA9PiAxLAogICAgICAgICdOYW1lJyAgICAgICAgID0+IDEsCiAgICAgICAgJ0NyZWF0ZWQnICAgICAgPT4gMSwKICAgICAgICAnTGFzdENoYW5nZWQnICA9PiAxLAogICAgICAgICdEZXBsU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckRlcGxTdGF0ZScgPT4gMSwKICAgICAgICAnSW5jaVN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJJbmNpU3RhdGUnID0+IDEsCiAgICB9OwoKICAgICMgZGVmaW5lIGZpbHRlcmFibGUgY29sdW1ucwogICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9ID0gewogICAgICAgICdDbGFzcycgICAgICAgID0+IDEsCiAgICAgICAgJ0RlcGxTdGF0ZScgICAgPT4gMSwKICAgICAgICAnQ3VyRGVwbFN0YXRlJyA9PiAxLAogICAgICAgICdJbmNpU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckluY2lTdGF0ZScgPT4gMSwKICAgIH07CgogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317Q29uZmlnSXRlbUtleX0gKSB7CiAgICAgICAgJFNlbGYtPntDb25maWdJdGVtS2V5fSA9ICRTZWxmLT57Q29uZmlnfXtDb25maWdJdGVtS2V5fTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBQcmVmZXJlbmNlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY29uZmlndXJlIGNvbHVtbnMKICAgIG15IEBDb2x1bW5zRW5hYmxlZDsKICAgIG15IEBDb2x1bW5zQXZhaWxhYmxlOwogICAgbXkgQENvbHVtbnNBdmFpbGFibGVOb3RFbmFibGVkOwoKICAgICMgY2hlY2sgZm9yIGRlZmF1bHQgc2V0dGluZ3MKICAgIGlmICgKICAgICAgICAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30KICAgICAgICAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9ICkKICAgICAgICApCiAgICB7CiAgICAgICAgQENvbHVtbnNBdmFpbGFibGUgPSBncmVwIHsgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9LT57JF99IH0KICAgICAgICAgICAga2V5cyAleyAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gfTsKICAgICAgICBAQ29sdW1uc0VuYWJsZWQgPSBncmVwIHsgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9LT57JF99IGVxICcyJyB9CiAgICAgICAgICAgIHNvcnQgeyAkU2VsZi0+X0RlZmF1bHRDb2x1bW5Tb3J0KCkgfSBrZXlzICV7ICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfSB9OwogICAgfQoKICAgICMgY2hlY2sgaWYgdGhlIHVzZXIgaGFzIGZpbHRlciBwcmVmZXJlbmNlcyBmb3IgdGhpcyB3aWRnZXQKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IEpTT04gb2JqZWN0CiAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CgogICAgIyBpZiBwcmVmZXJlbmNlIHNldHRpbmdzIGFyZSBhdmFpbGFibGUsIHRha2UgdGhlbQogICAgaWYgKCAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbnN9IH0gKSB7CgogICAgICAgIG15ICRDb2x1bW5zRW5hYmxlZCA9ICRKU09OT2JqZWN0LT5EZWNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT57ICRTZWxmLT57UHJlZktleUNvbHVtbnN9IH0sCiAgICAgICAgKTsKCiAgICAgICAgQENvbHVtbnNFbmFibGVkID0gZ3JlcCB7ICRDb2x1bW5zRW5hYmxlZC0+e0NvbHVtbnN9LT57JF99ID09IDEgfQogICAgICAgICAgICBrZXlzICV7ICRDb2x1bW5zRW5hYmxlZC0+e0NvbHVtbnN9IH07CgogICAgICAgIGlmICggJENvbHVtbnNFbmFibGVkLT57T3JkZXJ9ICYmIEB7ICRDb2x1bW5zRW5hYmxlZC0+e09yZGVyfSB9ICkgewogICAgICAgICAgICBAQ29sdW1uc0VuYWJsZWQgPSBAeyAkQ29sdW1uc0VuYWJsZWQtPntPcmRlcn0gfTsKICAgICAgICB9CgogICAgICAgICMgcmVtb3ZlIGR1cGxpY2F0ZSBjb2x1bW5zCiAgICAgICAgbXkgJVVuaXF1ZUNvbHVtbnM7CiAgICAgICAgbXkgQENvbHVtbnNFbmFibGVkQXV4OwoKICAgICAgICBmb3IgbXkgJENvbHVtbiAoQENvbHVtbnNFbmFibGVkKSB7CiAgICAgICAgICAgIGlmICggISRVbmlxdWVDb2x1bW5zeyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgcHVzaCBAQ29sdW1uc0VuYWJsZWRBdXgsICRDb2x1bW47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFVuaXF1ZUNvbHVtbnN7JENvbHVtbn0gPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgZmlsdGVyZWQgY29sdW1uIGxpc3QKICAgICAgICBAQ29sdW1uc0VuYWJsZWQgPSBAQ29sdW1uc0VuYWJsZWRBdXg7CiAgICB9CgogICAgbXkgJUNvbHVtbnM7CiAgICBmb3IgbXkgJENvbHVtbk5hbWUgKCBzb3J0IHsgJGEgY21wICRiIH0gQENvbHVtbnNBdmFpbGFibGUgKSB7CiAgICAgICAgJENvbHVtbnN7Q29sdW1uc30tPnskQ29sdW1uTmFtZX0gPSAoIGdyZXAgeyAkQ29sdW1uTmFtZSBlcSAkXyB9IEBDb2x1bW5zRW5hYmxlZCApID8gMSA6IDA7CiAgICAgICAgaWYgKCBub25lIHsgJF8gZXEgJENvbHVtbk5hbWUgfSBAQ29sdW1uc0VuYWJsZWQgKSB7CiAgICAgICAgICAgIHB1c2ggQENvbHVtbnNBdmFpbGFibGVOb3RFbmFibGVkLCAkQ29sdW1uTmFtZTsKICAgICAgICB9CiAgICB9CgogICAgbXkgQFBhcmFtcyA9ICgKICAgICAgICB7CiAgICAgICAgICAgIERlc2MgID0+IFRyYW5zbGF0YWJsZSgnU2hvd24gY29uZmlnIGl0ZW1zJyksCiAgICAgICAgICAgIE5hbWUgID0+ICRTZWxmLT57UHJlZktleVNob3dufSwKICAgICAgICAgICAgQmxvY2sgPT4gJ09wdGlvbicsCiAgICAgICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgICAgIDUgID0+ICcgNScsCiAgICAgICAgICAgICAgICAxMCA9PiAnMTAnLAogICAgICAgICAgICAgICAgMTUgPT4gJzE1JywKICAgICAgICAgICAgICAgIDIwID0+ICcyMCcsCiAgICAgICAgICAgICAgICAyNSA9PiAnMjUnLAogICAgICAgICAgICAgICAgNTAgPT4gJzUwJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFNlbGYtPntQYWdlU2hvd259LAogICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBEZXNjICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU2hvd24gQ29sdW1ucycpLAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICRTZWxmLT57UHJlZktleUNvbHVtbnN9LAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdBbGxvY2F0aW9uTGlzdCcsCiAgICAgICAgICAgIENvbHVtbnMgICAgICAgICAgPT4gJEpTT05PYmplY3QtPkVuY29kZSggRGF0YSA9PiBcJUNvbHVtbnMgKSwKICAgICAgICAgICAgQ29sdW1uc0VuYWJsZWQgICA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBEYXRhID0+IFxAQ29sdW1uc0VuYWJsZWQgKSwKICAgICAgICAgICAgQ29sdW1uc0F2YWlsYWJsZSA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBEYXRhID0+IFxAQ29sdW1uc0F2YWlsYWJsZU5vdEVuYWJsZWQgKSwKICAgICAgICAgICAgVHJhbnNsYXRpb24gICAgICA9PiAxLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiBAUGFyYW1zOwp9CgpzdWIgQ29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBpZiBmcm9udGVuZCBtb2R1bGUgb2YgbGluayBpcyB1c2VkCiAgICBpZiAoICRTZWxmLT57Q29uZmlnfS0+e0xpbmt9ICYmICRTZWxmLT57Q29uZmlnfS0+e0xpbmt9ID1+IC9BY3Rpb249KC4rPykoWyY7XS4rP3wpJC8gKSB7CiAgICAgICAgbXkgJEFjdGlvbiA9ICQxOwogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57JEFjdGlvbn0gKSB7CiAgICAgICAgICAgICRTZWxmLT57Q29uZmlnfS0+e0xpbmt9ID0gJyc7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAoCiAgICAgICAgJXsgJFNlbGYtPntDb25maWd9IH0sCgogICAgICAgICMgRG9uJ3QgY2FjaGUgdGhpcyBnbG9iYWxseSBhcyBpdCBjb250YWlucyBKUyB0aGF0IGlzIG5vdCBpbnNpZGUgb2YgdGhlIEhUTUwuCiAgICAgICAgQ2FjaGVUVEwgPT4gdW5kZWYsCiAgICAgICAgQ2FjaGVLZXkgPT4gdW5kZWYsCiAgICApOwp9CgpzdWIgRmlsdGVyQ29udGVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte0ZpbHRlckNvbHVtbn07CgogICAgbXkgJEhlYWRlckNvbHVtbiA9ICRQYXJhbXtGaWx0ZXJDb2x1bW59OwogICAgbXkgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtczsKCiAgICBpZiAoCiAgICAgICAgIyBUT0RPIGNoZWNrCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdPbmx5VmFsdWVzT25Db25maWdJdGVtJykKICAgICAgICApCiAgICB7CiAgICAgICAgbXkgJVNlYXJjaFBhcmFtcyAgICAgICAgICAgID0gJFNlbGYtPl9TZWFyY2hQYXJhbXNHZXQoJVBhcmFtKTsKICAgICAgICBteSAlQ29uZmlnSXRlbVNlYXJjaCAgICAgICAgPSAleyAkU2VhcmNoUGFyYW1ze0NvbmZpZ0l0ZW1TZWFyY2h9IH07CiAgICAgICAgbXkgJUNvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5ID0gJXsgJFNlYXJjaFBhcmFtc3tDb25maWdJdGVtU2VhcmNoU3VtbWFyeX0gfTsKCiAgICAgICAgIyBBZGQgdGhlIGFkZGl0aW9uYWwgZmlsdGVyIHRvIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcGFyYW0uCiAgICAgICAgaWYgKCAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ICkgewogICAgICAgICAgICAlQ29uZmlnSXRlbVNlYXJjaCA9ICgKICAgICAgICAgICAgICAgICVDb25maWdJdGVtU2VhcmNoLAogICAgICAgICAgICAgICAgJXsgJENvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5eyAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9IH0gfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkSGVhZGVyQ29sdW1uID1+IG0vXkR5bmFtaWNGaWVsZF8vICYmICFkZWZpbmVkICRTZWxmLT57RHluYW1pY0ZpZWxkfSApIHsKCiAgICAgICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbHVtbiB2YWx1ZXMgZm9yIHRvIGJ1aWxkIHRoZSBmaWx0ZXJzIGxhdGVyCiAgICBteSAkQ29sdW1uVmFsdWVzID0gJFNlbGYtPl9HZXRDb2x1bW5WYWx1ZXMoCiAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+IFxAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgIEhlYWRlckNvbHVtbiAgICAgICAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgKTsKCiAgICAjIG1ha2Ugc3VyZSB0aGF0IGV2ZW4gYSB2YWx1ZSBvZiAwIGlzIHBhc3NlZCBhcyBhIFNlbGVjdGVkIHZhbHVlLCBlLmcuIFVuY2hlY2tlZCB2YWx1ZSBvZiBhCiAgICAjIGNoZWNrLWJveCBkeW5hbWljIGZpZWxkLgogICAgbXkgJFNlbGVjdGVkVmFsdWUgPSBkZWZpbmVkICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyfS0+eyAkSGVhZGVyQ29sdW1uIC4gJFNlbGYtPntOYW1lfSB9CiAgICAgICAgPyAkU2VsZi0+e0dldENvbHVtbkZpbHRlcn0tPnsgJEhlYWRlckNvbHVtbiAuICRTZWxmLT57TmFtZX0gfQogICAgICAgIDogJyc7CgogICAgbXkgJExhYmVsQ29sdW1uID0gJEhlYWRlckNvbHVtbjsKICAgIGlmICggJExhYmVsQ29sdW1uID1+IG17IFxBIER5bmFtaWNGaWVsZF8gfXhtcyApIHsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAkTGFiZWxDb2x1bW4gPX4gc3tcQSBEeW5hbWljRmllbGRfIH17fXhtczsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRERkNvbmZpZy0+e05hbWV9IG5lICRMYWJlbENvbHVtbjsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpICkgewogICAgICAgICAgICAkTGFiZWxDb2x1bW4gPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkU2VsZi0+X0NvbHVtbkZpbHRlckpTT04oCiAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsQ29sdW1uLAogICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59LAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFNlbGVjdGVkVmFsdWUsCiAgICAgICAgRGFzaGJvYXJkTmFtZSA9PiAkU2VsZi0+e05hbWV9LAogICAgKTsKCiAgICByZXR1cm4gJENvbHVtbkZpbHRlckpTT047Cgp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJVNlYXJjaFBhcmFtcyAgICAgICAgICAgID0gJFNlbGYtPl9TZWFyY2hQYXJhbXNHZXQoJVBhcmFtKTsKICAgIG15IEBDb2x1bW5zICAgICAgICAgICAgICAgICA9IEB7ICRTZWFyY2hQYXJhbXN7Q29sdW1uc30gfTsKICAgIG15ICVDb25maWdJdGVtU2VhcmNoICAgICAgICA9ICV7ICRTZWFyY2hQYXJhbXN7Q29uZmlnSXRlbVNlYXJjaH0gfTsKICAgIG15ICVDb25maWdJdGVtU2VhcmNoU3VtbWFyeSA9ICV7ICRTZWFyY2hQYXJhbXN7Q29uZmlnSXRlbVNlYXJjaFN1bW1hcnl9IH07CgogICAgIyBkZWZpbmUgaW5jaWRlbnQgc2lnbmFscwogICAgbXkgJUluY2lTaWduYWxzID0gKAogICAgICAgIFRyYW5zbGF0YWJsZSgnb3BlcmF0aW9uYWwnKSA9PiAnZ3JlZW5sZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnd2FybmluZycpICAgICA9PiAneWVsbG93bGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ2luY2lkZW50JykgICAgPT4gJ3JlZGxlZCcsCiAgICApOwoKICAgICMgc3RvcmUgZGVwbG95bWVudCBzaWduYWxzCiAgICBteSAlRGVwbFNpZ25hbHM7CgogICAgIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdAogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgbGlzdCBvZiBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJERlcGxveW1lbnRTdGF0ZXNMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgIyBzZXQgZGVwbG95bWVudCBzdHlsZSBjb2xvcnMKICAgIG15ICRTdHlsZUNsYXNzZXMgPSAnJzsKCiAgICBJVEVNSUQ6CiAgICBmb3IgbXkgJEl0ZW1JRCAoIHNvcnQga2V5cyAleyREZXBsb3ltZW50U3RhdGVzTGlzdH0gKSB7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgcHJlZmVyZW5jZXMKICAgICAgICBteSAlR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIGNvbG9yIGlzIGRlZmluZWQgaW4gcHJlZmVyZW5jZXMKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJEdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXN7Q29sb3J9OwoKICAgICAgICBteSAoJENvbG9yKSA9ICRHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2Vze0NvbG9yfS0+QCo7CgogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkQ29sb3I7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUKICAgICAgICBteSAkRGVwbFN0YXRlID0gJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH07CgogICAgICAgICMgcmVtb3ZlIGFueSBub24gYXNjaWkgd29yZCBjaGFyYWN0ZXJzCiAgICAgICAgJERlcGxTdGF0ZSA9fiBzeyBbXmEtekEtWjAtOV0gfXtffW1zeGc7CgogICAgICAgICMgc3RvcmUgdGhlIG9yaWdpbmFsIGRlcGxveW1lbnQgc3RhdGUgYXMga2V5CiAgICAgICAgIyBhbmQgdGhlIHNzIHNhZmUgY29udmVydGVkIGRlcGxveW1lbnQgc3RhdGUgYXMgdmFsdWUKICAgICAgICAkRGVwbFNpZ25hbHN7ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9IH0gPSAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvbnZlcnQgdG8gbG93ZXIgY2FzZQogICAgICAgIG15ICREZXBsU3RhdGVDb2xvciA9IGxjICRDb2xvciA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgIyBhZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcKICAgICAgICAkU3R5bGVDbGFzc2VzIC49ICIKICAgICAgICAgICAgLkZsYWcgc3Bhbi4kRGVwbFN0YXRlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMkRGVwbFN0YXRlQ29sb3I7CiAgICAgICAgICAgIH0KICAgICAgICAiOwogICAgfQoKICAgICMgd3JhcCBpbnRvIHN0eWxlIHRhZ3MKICAgIGlmICgkU3R5bGVDbGFzc2VzKSB7CiAgICAgICAgJFN0eWxlQ2xhc3NlcyA9ICI8c3R5bGU+JFN0eWxlQ2xhc3Nlczwvc3R5bGU+IjsKICAgIH0KCiAgICBteSAkQ2FjaGVLZXkgICAgID0gam9pbiAnLScsICRTZWxmLT57TmFtZX0sICRTZWxmLT57QWN0aW9ufSwgJFNlbGYtPntQYWdlU2hvd259LCAkU2VsZi0+e1N0YXJ0SGl0fSwgJFNlbGYtPntVc2VySUR9OwogICAgbXkgJENhY2hlQ29sdW1ucyA9IGpvaW4oCiAgICAgICAgJywnLAogICAgICAgIG1hcCB7ICRfIC4gJz0+JyAuICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fS0+eyRffSB9IHNvcnQga2V5cyAleyAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gfQogICAgKTsKICAgICRDYWNoZUtleSAuPSAnLScgLiAkQ2FjaGVDb2x1bW5zIGlmICRDYWNoZUNvbHVtbnM7CgogICAgIyBJZiBTb3J0QnkgcGFyYW1ldGVyIGlzIG5vdCBkZWZpbmVkLCBzZXQgdG8gdmFsdWUgZnJvbSAlQ29uZmlnSXRlbVNlYXJjaCwgb3RoZXJ3aXNlIHNldCB0byBkZWZhdWx0IHZhbHVlICdBZ2UnLgogICAgaWYgKCAhZGVmaW5lZCAkU2VsZi0+e1NvcnRCeX0gKSB7CiAgICAgICAgaWYgKCBkZWZpbmVkICRDb25maWdJdGVtU2VhcmNoe1NvcnRCeX0gJiYgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnsgJENvbmZpZ0l0ZW1TZWFyY2h7U29ydEJ5fSB9ICkgewogICAgICAgICAgICAkU2VsZi0+e1NvcnRCeX0gPSAkQ29uZmlnSXRlbVNlYXJjaHtTb3J0Qnl9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntTb3J0Qnl9ID0gJ0FnZSc7CiAgICAgICAgfQogICAgfQoKICAgICRDYWNoZUtleSAuPSAnLScgLiAkU2VsZi0+e1NvcnRCeX0gaWYgZGVmaW5lZCAkU2VsZi0+e1NvcnRCeX07CgogICAgIyBTZXQgT3JkZXJCeSBwYXJhbWV0ZXIgdG8gdGhlIHNlYXJjaC4KICAgIG15ICRJc0NhY2hlRm9yVXNlID0gMDsKICAgIGlmICggJFNlbGYtPntPcmRlckJ5fSApIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRTZWxmLT57QWRkRmlsdGVyc30KICAgICAgICAgICAgfHwgJFNlbGYtPntUYWJBY3Rpb259CiAgICAgICAgICAgIHx8ICFkZWZpbmVkICRTZWxmLT57U29ydGluZ0NvbHVtbn0KICAgICAgICAgICAgfHwgJFNlbGYtPntTb3J0aW5nQ29sdW1ufSBuZSAkU2VsZi0+e1NvcnRCeX0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0gPSAkU2VsZi0+e09yZGVyQnl9OwogICAgICAgICAgICAkSXNDYWNoZUZvclVzZSA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSA9ICRTZWxmLT57T3JkZXJCeX0gZXEgJ1VwJyA/ICdEb3duJyA6ICdVcCc7CiAgICAgICAgfQogICAgfQoKICAgICMgU2V0IG9yZGVyIGZvciBibG9ja3MuCiAgICAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSA9ICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9IHx8ICdEb3duJzsKCiAgICAjIFNldCBwcmV2aW91cyBzb3J0aW5nIGNvbHVtbiBwYXJhbWV0ZXIgZm9yIGFsbCBjb2x1bW5zLgogICAgJFBhcmFte1NvcnRpbmdDb2x1bW59ID0gJFNlbGYtPntTb3J0Qnl9OwoKICAgICRDYWNoZUtleSAuPSAnLScgLiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSBpZiBkZWZpbmVkICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9OwoKICAgICMgQ3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlciBzaG93cyBkYXRhIHBlciBDdXN0b21lcklECiAgICBpZiAoICRQYXJhbXtDdXN0b21lcklEfSApIHsKICAgICAgICAkQ2FjaGVLZXkgLj0gJy0nIC4gJFBhcmFte0N1c3RvbWVySUR9OwogICAgfQoKICAgICMgQ3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXIgc2hvd3MgZGF0YSBwZXIgQ3VzdG9tZXJVc2VySUQKICAgIGlmICggJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAkQ2FjaGVLZXkgLj0gJy0nIC4gJFBhcmFte0N1c3RvbWVyVXNlcklEfTsKICAgIH0KCiAgICAjIEFkZCB0aGUgYWRkaXRpb25hbCBmaWx0ZXIgYWx3YXlzIHRvIHRoZSBjYWNoZSBrZXksIGlmIGEgYWRkaXRpb25hbCBmaWx0ZXIgZXhpc3RzLgogICAgaWYgKCAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ICkgewogICAgICAgICRDYWNoZUtleSAuPSAnLScgLiAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9OwogICAgfQoKICAgICMgZ2V0IGNhY2hlIG9iamVjdAogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENvbmZpZ0l0ZW1JRHMgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICdEYXNoYm9hcmQnLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5IC4gJy0nIC4gJFNlbGYtPntGaWx0ZXJ9IC4gJy1MaXN0JywKICAgICk7CgogICAgIyBmaW5kIGFuZCBzaG93IGNvbmZpZyBpdGVtIGxpc3QKICAgIG15ICRDYWNoZVVzZWQgPSAxOwoKICAgICMgZ2V0IHRpY2tldCBvYmplY3QKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRHMgKSB7CgogICAgICAgICMgYWRkIHNvcnQgYnkgcGFyYW1ldGVyIHRvIHRoZSBzZWFyY2gKICAgICAgICBpZiAoICFkZWZpbmVkICRDb25maWdJdGVtU2VhcmNoe1NvcnRCeX0gfHwgISRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57ICRDb25maWdJdGVtU2VhcmNoe1NvcnRCeX0gfSApIHsKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1NvcnRCeX0gJiYgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnsgJFNlbGYtPntTb3J0Qnl9IH0gKSB7CiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbVNlYXJjaHtTb3J0Qnl9ID0gJFNlbGYtPntTb3J0Qnl9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1TZWFyY2h7U29ydEJ5fSA9ICdBZ2UnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkQ2FjaGVVc2VkID0gJElzQ2FjaGVGb3JVc2UgPyAxIDogMDsKCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1JRHNBcnJheTsKCiAgICAgICAgIyBUT0RPIHVuZGVyc3RhbmQKICAgICAgICBpZiAoICEkU2VsZi0+e0NvbmZpZ30tPntJc1Byb2Nlc3NXaWRnZXR9IHx8IElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntQcm9jZXNzTGlzdH0gKSApIHsKCiAgICAgICAgICAgICMgQ29weSBvcmlnaW5hbCBjb2x1bW4gZmlsdGVyLgogICAgICAgICAgICBteSAlQ29sdW1uRmlsdGVyID0gJXsgJFNlbGYtPntDb2x1bW5GaWx0ZXJ9IHx8IHt9IH07CgogICAgICAgICAgICAjIEV4ZWN1dGUgc2VhcmNoLgogICAgICAgICAgICBpZiAoICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gJiYgSXNIYXNoUmVmV2l0aERhdGEoICRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXsgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSB9ICkgKSB7CgogICAgICAgICAgICAgICAgIyBpZiBjbGFzc2VzIGFyZSBmaWx0ZXJlZCwgYWRqdXN0IHNlYXJjaCBjb25maWcgYWNjb3JkaW5nbHkKICAgICAgICAgICAgICAgIGlmICggJENvbHVtbkZpbHRlcntDbGFzc0lEc30gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQEZpbHRlcmVkQ2xhc3NJRHM7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDbGFzc0lEICggJENvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5eyAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9IH0tPntDbGFzc0lEc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGFueSB7ICRfID09ICRDbGFzc0lEIH0gJENvbHVtbkZpbHRlcntDbGFzc0lEc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARmlsdGVyZWRDbGFzc0lEcywgJENsYXNzSUQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5eyAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9IH0tPntDbGFzc0lEc30gPSBcQEZpbHRlcmVkQ2xhc3NJRHM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgQENvbmZpZ0l0ZW1JRHNBcnJheSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAogICAgICAgICAgICAgICAgICAgICVDb25maWdJdGVtU2VhcmNoLAogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXsgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSB9LT4lKiwKICAgICAgICAgICAgICAgICAgICAlQ29sdW1uRmlsdGVyLAogICAgICAgICAgICAgICAgICAgIExpbWl0ID0+ICRTZWxmLT57UGFnZVNob3dufSArICRTZWxmLT57U3RhcnRIaXR9IC0gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJENvbmZpZ0l0ZW1JRHMgPSBcQENvbmZpZ0l0ZW1JRHNBcnJheTsKICAgIH0KCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkU3VtbWFyeSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0Rhc2hib2FyZCcsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXkgLiAnLVN1bW1hcnknLAogICAgKSAvLyB7fTsKCiAgICAjIElmIG5vIGNhY2hlIG9yIG5ldyBsaXN0IHJlc3VsdCwgZG8gY291bnQgbG9va3VwLgogICAgaWYgKCAhJFN1bW1hcnktPiUqIHx8ICEkQ2FjaGVVc2VkICkgewoKICAgICAgICBUWVBFOgogICAgICAgIGZvciBteSAkVHlwZSAoIHNvcnQga2V5cyAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnkgKSB7CgogICAgICAgICAgICBuZXh0IFRZUEUgaWYgISRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXskVHlwZX07CgogICAgICAgICAgICAjIENvcHkgb3JpZ2luYWwgY29sdW1uIGZpbHRlci4KICAgICAgICAgICAgbXkgJUNvbHVtbkZpbHRlciA9ICV7ICRTZWxmLT57Q29sdW1uRmlsdGVyfSB8fCB7fSB9OwoKICAgICAgICAgICAgIyBMb29wIHRocm91Z2ggYWxsIGNvbHVtbiBmaWx0ZXIgZWxlbWVudHMuCiAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoIHNvcnQga2V5cyAlQ29sdW1uRmlsdGVyICkgewoKICAgICAgICAgICAgICAgICMgVmVyaWZ5IGlmIGN1cnJlbnQgY29sdW1uIGZpbHRlciBlbGVtZW50IGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoCiAgICAgICAgICAgICAgICAjICAgc3VtbWFyeSwgdG8gZGVsZXRlIGl0IGZyb20gdGhlIGNvbHVtbiBmaWx0ZXIgaGFzaC4KICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSAmJiAkQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnl7ICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gfXskRWxlbWVudH0gKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRDb2x1bW5GaWx0ZXJ7JEVsZW1lbnR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkU3VtbWFyeS0+eyRUeXBlfSA9IDA7CgogICAgICAgICAgICBpZiAoICEkU2VsZi0+e0NvbmZpZ30tPntJc1Byb2Nlc3NXaWRnZXR9IHx8IElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntQcm9jZXNzTGlzdH0gKSApIHsKCiAgICAgICAgICAgICAgICAjIEV4ZWN1dGUgc2VhcmNoLgogICAgICAgICAgICAgICAgJFN1bW1hcnktPnskVHlwZX0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0NPVU5UJywKICAgICAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbVNlYXJjaCwKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnl7ICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gfS0+JSosCiAgICAgICAgICAgICAgICAgICAgJUNvbHVtbkZpbHRlciwKICAgICAgICAgICAgICAgICkgfHwgMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBjYWNoZQogICAgaWYgKCAhJENhY2hlVXNlZCAmJiAkU2VsZi0+e0NvbmZpZ30tPntDYWNoZVRUTExvY2FsfSApIHsKICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0Rhc2hib2FyZCcsCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSAuICctU3VtbWFyeScsCiAgICAgICAgICAgIFZhbHVlID0+ICRTdW1tYXJ5LAogICAgICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntDYWNoZVRUTExvY2FsfSAqIDYwLAogICAgICAgICk7CiAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICdEYXNoYm9hcmQnLAogICAgICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXkgLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn0gLiAnLUxpc3QnLAogICAgICAgICAgICBWYWx1ZSA9PiAkQ29uZmlnSXRlbUlEcywKICAgICAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDb25maWd9LT57Q2FjaGVUVExMb2NhbH0gKiA2MCwKICAgICAgICApOwogICAgfQoKICAgICMgU2V0IHRoZSBjc3MgY2xhc3MgZm9yIHRoZSBzZWxlY3RlZCBmaWx0ZXIgYW5kIGFkZGl0aW9uYWwgZmlsdGVyLgogICAgJFN1bW1hcnktPnsgJFNlbGYtPntGaWx0ZXJ9IC4gJzo6U2VsZWN0ZWQnIH0gPSAnU2VsZWN0ZWQnOwogICAgaWYgKCAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ICkgewogICAgICAgICRTdW1tYXJ5LT57ICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gLiAnOjpTZWxlY3RlZCcgfSA9ICdTZWxlY3RlZCc7CiAgICB9CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGFkZCBwYWdlIG5hdiBiYXIgLSBvbmx5IHBhZ2luYXRpb24gaXMgbmVlZGVkCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlcicsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJXsgJFNlbGYtPntDb25maWd9IH0sCiAgICAgICAgICAgIE5hbWUgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgJXskU3VtbWFyeX0sCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJFRvdGFsICAgICAgICAgICAgPSAkU3VtbWFyeS0+eyAkU2VsZi0+e0ZpbHRlcn0gfSB8fCAwOwogICAgbXkgJUdldENvbHVtbkZpbHRlciAgPSAkU2VsZi0+e0dldENvbHVtbkZpbHRlcn0gPyAleyAkU2VsZi0+e0dldENvbHVtbkZpbHRlcn0gfSA6ICgpOwogICAgbXkgJENvbHVtbkZpbHRlckxpbmsgPSAnJzsKICAgIENPTFVNTk5BTUU6CiAgICBmb3IgbXkgJENvbHVtbk5hbWUgKCBzb3J0IGtleXMgJUdldENvbHVtbkZpbHRlciApIHsKICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgISRDb2x1bW5OYW1lOwogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJEdldENvbHVtbkZpbHRlcnskQ29sdW1uTmFtZX07CiAgICAgICAgJENvbHVtbkZpbHRlckxpbmsKICAgICAgICAgICAgLj0gJzsnIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lICkKICAgICAgICAgICAgLiAnPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSApOwogICAgfQoKICAgIG15ICRMaW5rUGFnZSA9CiAgICAgICAgJ1N1YmFjdGlvbj1FbGVtZW50O05hbWU9JyAuICRTZWxmLT57TmFtZX0KICAgICAgICAuICc7RmlsdGVyPScgLiAkU2VsZi0+e0ZpbHRlcn0KICAgICAgICAuICc7QWRkaXRpb25hbEZpbHRlcj0nIC4gKCAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ICB8fCAnJyApCiAgICAgICAgLiAnO1NvcnRCeT0nIC4gICAgICAgICAgICggJFNlbGYtPntTb3J0Qnl9ICAgICAgICAgICAgfHwgJycgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAgICAgICAgICAoICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9IHx8ICcnICkKICAgICAgICAuICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgLiAnOyc7CgogICAgaWYgKCAkUGFyYW17Q3VzdG9tZXJJRH0gKSB7CiAgICAgICAgJExpbmtQYWdlIC49ICJDdXN0b21lcklEPSRQYXJhbXtDdXN0b21lcklEfTsiOwogICAgfQogICAgaWYgKCAkUGFyYW17Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICRMaW5rUGFnZSAuPSAiQ3VzdG9tZXJVc2VySUQ9JFBhcmFte0N1c3RvbWVyVXNlcklEfTsiOwogICAgfQoKICAgIG15ICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICBTdGFydEhpdCAgICA9PiAkU2VsZi0+e1N0YXJ0SGl0fSwKICAgICAgICBQYWdlU2hvd24gICA9PiAkU2VsZi0+e1BhZ2VTaG93bn0sCiAgICAgICAgQWxsSGl0cyAgICAgPT4gJFRvdGFsIHx8IDEsCiAgICAgICAgQWN0aW9uICAgICAgPT4gJ0FjdGlvbj0nIC4gJExheW91dE9iamVjdC0+e0FjdGlvbn0sCiAgICAgICAgTGluayAgICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgIEFKQVhSZXBsYWNlID0+ICdEYXNoYm9hcmQnIC4gJFNlbGYtPntOYW1lfSwKICAgICAgICBJRFByZWZpeCAgICA9PiAnRGFzaGJvYXJkJyAuICRTZWxmLT57TmFtZX0sCiAgICAgICAgQUpBWCAgICAgICAgPT4gJFBhcmFte0FKQVh9LAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljRmlsdGVyTmF2QmFyJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJXsgJFNlbGYtPntDb25maWd9IH0sCiAgICAgICAgICAgIE5hbWUgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzaG93IHRhYmxlIGhlYWRlcgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXInLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwoKICAgICMgcmVtb3ZlICgtKSBmcm9tIG5hbWUgZm9yIEpTIGNvbmZpZwogICAgbXkgJFdpZGdldE5hbWUgPSAkU2VsZi0+e05hbWV9OwogICAgJFdpZGdldE5hbWUgPX4gc3stfXt9ZzsKCiAgICAjIHNob3cgbm9uLWxhYmVsZWQgdGFibGUgaGVhZGVycwogICAgbXkgJENTUyA9ICcnOwoKICAgICMgU2VuZCBkYXRhIHRvIEpTIGZvciBpbml0IGNvbnRhaW5lci4KICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnSW5pdENvbnRhaW5lckRhc2hib2FyZCcgLiAkU2VsZi0+e05hbWV9LAogICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgU29ydEJ5ICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJ0FnZScsCiAgICAgICAgICAgIE9yZGVyQnkgPT4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnSGVhZGVyQ29sdW1uJyAuICRXaWRnZXROYW1lLAogICAgICAgIFZhbHVlID0+IFxAQ29sdW1ucwogICAgKTsKCiAgICAjIHNob3cgYWxsIG5lZWRlZCBoZWFkZXJzCiAgICBIRUFERVJDT0xVTU46CiAgICBmb3IgbXkgJEhlYWRlckNvbHVtbiAoQENvbHVtbnMpIHsKCiAgICAgICAgaWYgKCAkSGVhZGVyQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CgogICAgICAgICAgICAkQ1NTID0gJyc7CiAgICAgICAgICAgIG15ICRUaXRsZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkSGVhZGVyQ29sdW1uKTsKCiAgICAgICAgICAgICMgU2V0IHRpdGxlIGRlc2NyaXB0aW9uLgogICAgICAgICAgICBpZiAoICRTZWxmLT57U29ydEJ5fSAmJiAkU2VsZi0+e1NvcnRCeX0gZXEgJEhlYWRlckNvbHVtbiApIHsKICAgICAgICAgICAgICAgIG15ICRUaXRsZURlc2MgPSAnJzsKICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0gZXEgJ0Rvd24nICkgewogICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0RGVzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgZGVzY2VuZGluZycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGFzY2VuZGluZycpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywgJyAuICRUaXRsZURlc2M7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdHJhbnNsYXRlIHRoZSBjb2x1bW4gbmFtZSB0byB3cml0ZSBpdCBpbiB0aGUgY3VycmVudCBsYW5ndWFnZQogICAgICAgICAgICBteSAkVHJhbnNsYXRlZFdvcmQ7CiAgICAgICAgICAgIGlmICggJEhlYWRlckNvbHVtbiBlcSAnRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEhlYWRlckNvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJyB8fCAkSGVhZGVyQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdDdXJEZXBsU3RhdGVUeXBlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBTdGF0ZSBUeXBlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdJbmNpU3RhdGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEhlYWRlckNvbHVtbiBlcSAnQ3VySW5jaVN0YXRlJyB8fCAkSGVhZGVyQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEhlYWRlckNvbHVtbiBlcSAnQ3VySW5jaVN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEhlYWRlckNvbHVtbiBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdMYXN0IGNoYW5nZWQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkSGVhZGVyQ29sdW1uKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgc3Vycm91bmRpbmcgY29udGFpbmVyCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3SGVhZGVyJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbmZpZ0l0ZW1IZWFkZXInLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZSAgICAgPSAkVHJhbnNsYXRlZFdvcmQ7CiAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBub3QgYWN0aXZlJyk7CiAgICAgICAgICAgIGlmICggJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9ICYmICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fS0+eyRIZWFkZXJDb2x1bW59ICkgewogICAgICAgICAgICAgICAgJENTUyAuPSAnIEZpbHRlckFjdGl2ZSc7CiAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgYWN0aXZlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmlsdGVyVGl0bGVEZXNjKTsKICAgICAgICAgICAgJEZpbHRlclRpdGxlIC49ICcsICcgLiAkRmlsdGVyVGl0bGVEZXNjOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkSGVhZGVyQ29sdW1uICAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgSGVhZGVyTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUyAgICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBmaWx0ZXJhYmxlIGFuZCBzb3J0YWJsZQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59CiAgICAgICAgICAgICAgICAmJiAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskSGVhZGVyQ29sdW1ufQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbXkgJENzczsKCiAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgIENzcyAgICAgICAgPT4gJENzcywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAnQ29sdW1uRmlsdGVyU29ydCcgLiAkSGVhZGVyQ29sdW1uIC4gJFdpZGdldE5hbWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJ0FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRpbmdDb2x1bW4gICAgPT4gJFBhcmFte1NvcnRpbmdDb2x1bW59LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGluaycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9IHx8ICdBZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGp1c3QgZmlsdGVyYWJsZQogICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgIG15ICRDc3M7CgogICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICBDc3MgICAgICAgID0+ICRDc3MsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkSGVhZGVyQ29sdW1uIC4gJFdpZGdldE5hbWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJ0FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXInLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBqdXN0IHNvcnRhYmxlCiAgICAgICAgICAgIGVsc2lmICggJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskSGVhZGVyQ29sdW1ufSApIHsKCiAgICAgICAgICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5Tb3J0YWJsZScgLiAkSGVhZGVyQ29sdW1uIC4gJFdpZGdldE5hbWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydGluZ0NvbHVtbiAgICA9PiAkUGFyYW17U29ydGluZ0NvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5MaW5rJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkVtcHR5JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIER5bmFtaWMgZmllbGRzCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRIZWFkZXJDb2x1bW47CiAgICAgICAgICAgICRERkNvbHVtbiA9fiBzL0R5bmFtaWNGaWVsZF8vL2c7CiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICRERkNvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRERkNvbmZpZzsKICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG5leHQgSEVBREVSQ09MVU1OIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgIG15ICRMYWJlbCA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CgogICAgICAgICAgICBteSAkVHJhbnNsYXRlZExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7CgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkTmFtZSA9ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgIG15ICRDU1MgICAgICAgICAgICAgPSAnJzsKICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlICAgICA9ICRMYWJlbDsKICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIG5vdCBhY3RpdmUnKTsKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gJiYgZGVmaW5lZCAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkQ1NTIC49ICdGaWx0ZXJBY3RpdmUgJzsKICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBhY3RpdmUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRGaWx0ZXJUaXRsZURlc2MpOwogICAgICAgICAgICAkRmlsdGVyVGl0bGUgLj0gJywgJyAuICRGaWx0ZXJUaXRsZURlc2M7CgogICAgICAgICAgICAjIGdldCBmaWVsZCBzb3J0YWJsZSBjb25kaXRpb24KICAgICAgICAgICAgbXkgJElzU29ydGFibGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzU29ydGFibGUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGl0bGUKICAgICAgICAgICAgbXkgJFRpdGxlID0gJExhYmVsOwoKICAgICAgICAgICAgIyBhZGQgc3Vycm91bmRpbmcgY29udGFpbmVyCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3SGVhZGVyJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbmZpZ0l0ZW1IZWFkZXInLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAgICAgbXkgJFRpdGxlRGVzYyA9ICcnOwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRTZWxmLT57U29ydEJ5fQogICAgICAgICAgICAgICAgICAgICYmICggJFNlbGYtPntTb3J0Qnl9IGVxICggJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ICkgKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9IGVxICdEb3duJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgZGVzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBhc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAgICAgJFRpdGxlIC49ICcsICcgLiAkVGl0bGVEZXNjOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICA9PiAkQ1NTICAgICAgICAgICAgICB8fCAnJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSBkeW5hbWljIGZpZWxkIGlzIHNvcnRhYmxlIGFuZCBmaWx0ZXJhYmxlIChzb3J0YWJsZSBjaGVjayB3YXMgbWFkZSBiZWZvcmUpCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5GaWx0ZXJTb3J0JyAuICREeW5hbWljRmllbGROYW1lIC4gJFdpZGdldE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAnQWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0aW5nQ29sdW1uICAgID0+ICRQYXJhbXtTb3J0aW5nQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIG91dHB1dCBzb3J0YWJsZSBhbmQgZmlsdGVyYWJsZSBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRMYWJlbCB8fCAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJ0FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBvdGhlcndpc2UgdGhlIGR5bmFtaWMgZmllbGQgaXMgb25seSBzb3J0YWJsZSAoc29ydGFibGUgY2hlY2sgd2FzIG1hZGUgYmVmb3JlKQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAnQ29sdW1uU29ydGFibGUnIC4gJER5bmFtaWNGaWVsZE5hbWUgLiAkV2lkZ2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9IHx8ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRpbmdDb2x1bW4gICAgPT4gJFBhcmFte1NvcnRpbmdDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgb3V0cHV0IHNvcnRhYmxlIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5MaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZExhYmVsIHx8ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgdGhlIGR5bmFtaWMgZmllbGQgd2FzIG5vdCBzb3J0YWJsZSAoY2hlY2sgd2FzIG1hZGUgYW5kIGZhaWwgYmVmb3JlKQogICAgICAgICAgICAjIGl0IG1pZ2h0IGJlIGZpbHRlcmFibGUKICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW4nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgID0+ICRDU1MgICAgICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAnQ29sdW1uRmlsdGVyJyAuICREeW5hbWljRmllbGROYW1lIC4gJFdpZGdldE5hbWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9IHx8ICdBZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgb3V0cHV0IGZpbHRlcmFibGUgKG5vdCBzb3J0YWJsZSkgZHluYW1pYyBmaWVsZAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXInLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZExhYmVsIHx8ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb3RoZXJ3aXNlIHRoZSBmaWVsZCBpcyBub3QgZmlsdGVyYWJsZSBhbmQgbm90IHNvcnRhYmxlCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICA9PiAkQ1NTICAgICAgICAgICAgICB8fCAnJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIG91dHB1dCBwbGFpbiBkeW5hbWljIGZpZWxkIGhlYWRlciAobm90IGZpbHRlcmFibGUsIG5vdCBzb3J0YWJsZSkKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRW1wdHknLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkTGFiZWwgfHwgJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBzaG93IHRpY2tldHMKICAgIG15ICRDb3VudCA9IDA7CiAgICBDT05GSUdJVEVNSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIEB7JENvbmZpZ0l0ZW1JRHN9ICkgewogICAgICAgICRDb3VudCsrOwoKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkQ291bnQgPCAkU2VsZi0+e1N0YXJ0SGl0fTsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgKTsKICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtUmVmLT4lKjsKCiAgICAgICAgIyBzZXQgZGVwbG95bWVudCBhbmQgaW5jaWRlbnQgc2lnbmFscwogICAgICAgICRDb25maWdJdGVte0N1ckRlcGxTaWduYWx9ID0gJERlcGxTaWduYWxzeyAkQ29uZmlnSXRlbXtDdXJEZXBsU3RhdGV9IH07CiAgICAgICAgJENvbmZpZ0l0ZW17Q3VySW5jaVNpZ25hbH0gPSAkSW5jaVNpZ25hbHN7ICRDb25maWdJdGVte0N1ckluY2lTdGF0ZVR5cGV9IH07CgogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICElQ29uZmlnSXRlbTsKCiAgICAgICAgIyBzZXQgYSBkZWZhdWx0IHRpdGxlIGlmIGNvbmZpZyBpdGVtIGhhcyBubyB0aXRsZQogICAgICAgIGlmICggISRDb25maWdJdGVte1RpdGxlfSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW17VGl0bGV9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgJ1RoaXMgdGlja2V0IGhhcyBubyB0aXRsZSBvciBzdWJqZWN0JwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IGNvbmZpZyBpdGVtCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljUm93JywKICAgICAgICAgICAgRGF0YSA9PiBcJUNvbmZpZ0l0ZW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzYXZlIGNvbHVtbiBjb250ZW50CiAgICAgICAgbXkgJERhdGFWYWx1ZTsKCiAgICAgICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgIyBzaG93IGFsbCBuZWVkZWQgY29sdW1ucwogICAgICAgIENPTFVNTjoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1Db2x1bW4gKEBDb2x1bW5zKSB7CgogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0NvbmZpZ0l0ZW1Db2x1bW4nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRCbG9ja1R5cGUgPSAnJzsKICAgICAgICAgICAgICAgIG15ICRDU1NDbGFzcyAgPSAnJzsKCiAgICAgICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uIGVxICdOdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0NvbmZpZ0l0ZW1OdW1iZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVDb25maWdJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJENvbmZpZ0l0ZW17TnVtYmVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQWdlJyApIHsKICAgICAgICAgICAgICAgICAgICAkRGF0YVZhbHVlID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJBZ2UoCiAgICAgICAgICAgICAgICAgICAgICAgIEFnZSAgID0+ICRDb25maWdJdGVte0FnZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNwYWNlID0+ICcgJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ0N1ckRlcGwnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ0N1ckluY2knOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZCcgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0NoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRDb25maWdJdGVteyRDb25maWdJdGVtQ29sdW1ufTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXskQ29uZmlnSXRlbUNvbHVtbn07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnVGl0bGUnICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICJDb250ZW50TGFyZ2VDb25maWdJdGVtVGl0bGUiLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgPT4gIiREYXRhVmFsdWUgIiB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdob2xlVGl0bGUgPT4gIkR1bWIgdGl0bGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAkQ1NTQ2xhc3MgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckRlcGxTaWduYWwnIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAiQ29udGVudExhcmdlQ29uZmlnSXRlbVNpZ25hbCIsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgID0+ICRDb25maWdJdGVteyAkQmxvY2tUeXBlIC4gJ1N0YXRlJyB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2lnbmFsID0+ICRDb25maWdJdGVteyAkQmxvY2tUeXBlIC4gJ1NpZ25hbCcgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzICA9PiAkQ1NTQ2xhc3MgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW4kQmxvY2tUeXBlIiwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljVmFsdWUgPT4gJERhdGFWYWx1ZSB8fCAnLScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENTU0NsYXNzICB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb25maWdJdGVtQ29sdW1uOwogICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIHZhbHVlCiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVte1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDIwLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkVmFsdWVTdHJnLT57TGlua30gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljRHluYW1pY0ZpZWxkTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljRHluYW1pY0ZpZWxkUGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgIH0KCiAgICAjIHNob3cgIm5vbmUiIGlmIG5vIGNvbmZpZyBpdGVtIGlzIGF2YWlsYWJsZQogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRHMgfHwgIUB7JENvbmZpZ0l0ZW1JRHN9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY05vbmUnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgcmVmcmVzaCB0aW1lCiAgICBteSAkUmVmcmVzaCA9ICcnOwogICAgaWYgKCAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gKSB7CiAgICAgICAgJFJlZnJlc2ggPSA2MCAqICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfTsKCiAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdXaWRnZXRSZWZyZXNoJyAuICRXaWRnZXROYW1lLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgTmFtZUhUTUwgICAgICAgPT4gJFdpZGdldE5hbWUsCiAgICAgICAgICAgICAgICBSZWZyZXNoVGltZSAgICA9PiAkUmVmcmVzaCwKICAgICAgICAgICAgICAgIEN1c3RvbWVySUQgICAgID0+ICRQYXJhbXtDdXN0b21lcklEfSwKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRQYXJhbXtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBhY3RpdmUgZmlsdGVycyBhbmQgYWRkIGEgJ3JlbW92ZSBmaWx0ZXJzJyBidXR0b24gdG8gdGhlIHdpZGdldCBoZWFkZXIKICAgIG15ICRGaWx0ZXJBY3RpdmUgPSAwOwogICAgaWYgKCAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gJiYgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fSApICkgewogICAgICAgICRGaWx0ZXJBY3RpdmUgPSAxOwogICAgfQoKICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ1dpZGdldENvbnRhaW5lcicgLiAkV2lkZ2V0TmFtZSwKICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgIEN1c3RvbWVySUQgICAgID0+ICRQYXJhbXtDdXN0b21lcklEfSwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFBhcmFte0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgRmlsdGVyQWN0aXZlICAgPT4gJEZpbHRlckFjdGl2ZSwKICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9IHx8ICdBZ2UnLAogICAgICAgICAgICBPcmRlckJ5ICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgU29ydGluZ0NvbHVtbiAgPT4gJFBhcmFte1NvcnRpbmdDb2x1bW59LAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRDb250ZW50ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnREYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWMnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICV7ICRTZWxmLT57Q29uZmlnfSB9LAogICAgICAgICAgICBOYW1lID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICV7JFN1bW1hcnl9LAogICAgICAgICAgICBGaWx0ZXJWYWx1ZSAgICAgID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICAgICAgQWRkaXRpb25hbEZpbHRlciA9PiAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9LAogICAgICAgICAgICBDdXN0b21lcklEICAgICAgID0+ICRTZWxmLT57Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEICAgPT4gJFNlbGYtPntDdXN0b21lclVzZXJJRH0sCiAgICAgICAgfSwKICAgICAgICBBSkFYID0+ICRQYXJhbXtBSkFYfSwKICAgICk7CgogICAgcmV0dXJuICRDb250ZW50Owp9CgpzdWIgX0luaXRpYWxDb2x1bW5GaWx0ZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtDb2x1bW5OYW1lfTsKICAgIHJldHVybiBpZiAhJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57ICRQYXJhbXtDb2x1bW5OYW1lfSB9OwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJExhYmVsID0gJFBhcmFte0xhYmVsfSB8fCAkUGFyYW17Q29sdW1uTmFtZX07CiAgICAkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAjIHNldCBmaXhlZCB2YWx1ZXMKICAgIG15ICREYXRhID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJycsCiAgICAgICAgICAgIFZhbHVlID0+IHVjICRMYWJlbCwKICAgICAgICB9LAogICAgXTsKCiAgICAjIGRlZmluZSBpZiBjb2x1bW4gZmlsdGVyIHZhbHVlcyBzaG91bGQgYmUgdHJhbnNsYXRhYmxlCiAgICBteSAkVHJhbnNsYXRpb25PcHRpb24gPSAwOwoKICAgIGlmICgKICAgICAgICAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0RlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckRlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0luY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0NsYXNzJwogICAgICAgICkKICAgIHsKICAgICAgICAkVHJhbnNsYXRpb25PcHRpb24gPSAxOwogICAgfQoKICAgIG15ICRDbGFzcyA9ICdDb2x1bW5GaWx0ZXInOwogICAgaWYgKCAkUGFyYW17Q3NzfSApIHsKICAgICAgICAkQ2xhc3MgLj0gJyAnIC4gJFBhcmFte0Nzc307CiAgICB9CgogICAgIyBidWlsZCBzZWxlY3QgSFRNTAogICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnQ29sdW1uRmlsdGVyJyAuICRQYXJhbXtDb2x1bW5OYW1lfSAuICRTZWxmLT57TmFtZX0sCiAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGEsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJENsYXNzLAogICAgICAgIFRyYW5zbGF0aW9uID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICBTZWxlY3RlZElEICA9PiAnJywKICAgICk7CiAgICByZXR1cm4gJENvbHVtbkZpbHRlckhUTUw7Cn0KCnN1YiBfR2V0Q29sdW1uVmFsdWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17SGVhZGVyQ29sdW1ufSApOwoKICAgIG15ICRIZWFkZXJDb2x1bW4gPSAkUGFyYW17SGVhZGVyQ29sdW1ufTsKICAgIG15ICVDb2x1bW5GaWx0ZXJWYWx1ZXM7CiAgICBteSAkQ29uZmlnSXRlbUlEczsKCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEcyA9ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9OwogICAgfQoKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBtL15EeW5hbWljRmllbGRfLyApIHsKICAgICAgICBteSAkRnVuY3Rpb25OYW1lID0gJEhlYWRlckNvbHVtbiAuICdGaWx0ZXJWYWx1ZXNHZXQnOwoKICAgICAgICAkQ29sdW1uRmlsdGVyVmFsdWVzeyRIZWFkZXJDb2x1bW59ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb2x1bW5GaWx0ZXInKS0+JEZ1bmN0aW9uTmFtZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiAkQ29uZmlnSXRlbUlEcywKICAgICAgICAgICAgSGVhZGVyQ29sdW1uICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICBteSAkRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJEZpZWxkTmFtZSBuZSAkSGVhZGVyQ29sdW1uOwoKICAgICAgICAgICAgIyBnZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdAogICAgICAgICAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgICAgIG15ICRJc0ZpbHRyYWJsZSA9ICRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0ZpbHRyYWJsZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJElzRmlsdHJhYmxlOwoKICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JEhlYWRlckNvbHVtbn0gPSAkSXNGaWx0cmFibGU7CiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCRDb25maWdJdGVtSURzKSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgaGlzdG9yaWNhbCB2YWx1ZXMgZm9yIHRoZSBmaWVsZAogICAgICAgICAgICAgICAgJENvbHVtbkZpbHRlclZhbHVlc3skSGVhZGVyQ29sdW1ufSA9ICRCYWNrZW5kT2JqZWN0LT5Db2x1bW5GaWx0ZXJWYWx1ZXNHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzICAgICAgPT4gJENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgZ2V0IFBvc3NpYmxlVmFsdWVzCiAgICAgICAgICAgICAgICAkQ29sdW1uRmlsdGVyVmFsdWVzeyRIZWFkZXJDb2x1bW59ID0gJEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlQ29sdW1uRmlsdGVyVmFsdWVzOwp9CgojID1oZWFkMiBfQ29sdW1uRmlsdGVySlNPTigpCgojICAgICBjcmVhdGVzIGEgSlNPTiBzZWxlY3QgZmlsdGVyIGZvciBjb2x1bW4gaGVhZGVyCgojICAgICBteSAkQ29sdW1uRmlsdGVySlNPTiA9ICRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGxPYmplY3QtPl9Db2x1bW5GaWx0ZXJKU09OKAojICAgICAgICAgQ29sdW1uTmFtZSA9PiAnUXVldWUnLAojICAgICAgICAgTGFiZWwgICAgICA9PiAnUXVldWUnLAojICAgICAgICAgQ29sdW1uVmFsdWVzID0+IHsKIyAgICAgICAgICAgICAxID0+ICdQb3N0TWFzdGVyJywKIyAgICAgICAgICAgICAyID0+ICdKdW5rJywKIyAgICAgICAgIH0sCiMgICAgICAgICBTZWxlY3RlZFZhbHVlICcxJywKIyAgICAgKTsKCiMgPWN1dAoKc3ViIF9Db2x1bW5GaWx0ZXJKU09OIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17Q29sdW1uTmFtZX07CiAgICByZXR1cm4gaWYgISRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRMYWJlbCA9ICRQYXJhbXtMYWJlbH07CiAgICAkTGFiZWwgPX4gc3sgXEEgRHluYW1pY0ZpZWxkXyB9e31neG1zOwogICAgJExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7CgogICAgIyBzZXQgZml4ZWQgdmFsdWVzCiAgICBteSAkRGF0YSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdEZWxldGVGaWx0ZXInLAogICAgICAgICAgICBWYWx1ZSA9PiB1YyAkTGFiZWwsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICctJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJy0nLAogICAgICAgICAgICBEaXNhYmxlZCA9PiAxLAogICAgICAgIH0sCiAgICBdOwoKICAgIGlmICggJFBhcmFte0NvbHVtblZhbHVlc30gJiYgcmVmICRQYXJhbXtDb2x1bW5WYWx1ZXN9IGVxICdIQVNIJyApIHsKCiAgICAgICAgbXkgJVZhbHVlcyA9ICV7ICRQYXJhbXtDb2x1bW5WYWx1ZXN9IH07CgogICAgICAgICMgU2V0IHBvc3NpYmxlIHZhbHVlcy4KICAgICAgICBmb3IgbXkgJFZhbHVlS2V5ICggc29ydCB7IGxjICRWYWx1ZXN7JGF9IGNtcCBsYyAkVmFsdWVzeyRifSB9IGtleXMgJVZhbHVlcyApIHsKICAgICAgICAgICAgcHVzaCBAeyREYXRhfSwgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFZhbHVlS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlc3skVmFsdWVLZXl9LAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlZmluZSBpZiBjb2x1bW4gZmlsdGVyIHZhbHVlcyBzaG91bGQgYmUgdHJhbnNsYXRhYmxlCiAgICBteSAkVHJhbnNsYXRpb25PcHRpb24gPSAwOwoKICAgIGlmICgKICAgICAgICAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0RlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckRlcGxTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0luY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICB8fCAkUGFyYW17Q29sdW1uTmFtZX0gZXEgJ0NsYXNzJwogICAgICAgICkKICAgIHsKICAgICAgICAkVHJhbnNsYXRpb25PcHRpb24gPSAxOwogICAgfQoKICAgICMgYnVpbGQgc2VsZWN0IEhUTUwKICAgIG15ICRKU09OID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb25KU09OKAogICAgICAgIFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDb2x1bW5GaWx0ZXInIC4gJFBhcmFte0NvbHVtbk5hbWV9IC4gJFBhcmFte0Rhc2hib2FyZE5hbWV9LAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICREYXRhLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdDb2x1bW5GaWx0ZXInLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNLZXknLAogICAgICAgICAgICAgICAgVHJlZVZpZXcgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1NlbGVjdGVkVmFsdWV9LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICAgICAgICAgIEF1dG9Db21wbGV0ZSA9PiAnb2ZmJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCiAgICByZXR1cm4gJEpTT047Cn0KCnN1YiBfU2VhcmNoUGFyYW1zR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgYWxsIHNlYXJjaCBiYXNlIGF0dHJpYnV0ZXMKICAgIG15ICVDb25maWdJdGVtU2VhcmNoOwogICAgbXkgJUR5bmFtaWNGaWVsZHNQYXJhbWV0ZXJzOwogICAgbXkgQFBhcmFtcyA9IHNwbGl0IC87LywgJFNlbGYtPntDb25maWd9LT57QXR0cmlidXRlc307CgogICAgIyByZWFkIHVzZXIgcHJlZmVyZW5jZXMgYW5kIGNvbmZpZyB0byBnZXQgY29sdW1ucyB0aGF0CiAgICAjIHNob3VsZCBiZSBzaG93biBpbiB0aGUgZGFzaGJvYXJkIHdpZGdldCAodGhlIHByZWZlcmVuY2VzCiAgICAjIGhhdmUgcHJlY2VkZW5jZSkKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGNvbHVtbiBuYW1lcyBmcm9tIFByZWZlcmVuY2VzCiAgICBteSAkUHJlZmVyZW5jZXNDb2x1bW4gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5EZWNvZGUoCiAgICAgICAgRGF0YSA9PiAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbnN9IH0sCiAgICApOwoKICAgICMgY2hlY2sgZm9yIGRlZmF1bHQgc2V0dGluZ3MKICAgIG15IEBDb2x1bW5zOwogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gJiYgSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfSApICkgewogICAgICAgIEBDb2x1bW5zID0gZ3JlcCB7ICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfS0+eyRffSBlcSAnMicgfQogICAgICAgICAgICBzb3J0IHsgJFNlbGYtPl9EZWZhdWx0Q29sdW1uU29ydCgpIH0ga2V5cyAleyAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gfTsKICAgIH0KICAgIGlmICgkUHJlZmVyZW5jZXNDb2x1bW4pIHsKICAgICAgICBpZiAoICRQcmVmZXJlbmNlc0NvbHVtbi0+e0NvbHVtbnN9ICYmICV7ICRQcmVmZXJlbmNlc0NvbHVtbi0+e0NvbHVtbnN9IH0gKSB7CiAgICAgICAgICAgIEBDb2x1bW5zID0gZ3JlcCB7CiAgICAgICAgICAgICAgICBkZWZpbmVkICRQcmVmZXJlbmNlc0NvbHVtbi0+e0NvbHVtbnN9LT57JF99CiAgICAgICAgICAgICAgICAgICAgJiYgJFByZWZlcmVuY2VzQ29sdW1uLT57Q29sdW1uc30tPnskX30gZXEgJzEnCiAgICAgICAgICAgIH0gc29ydCB7ICRTZWxmLT5fRGVmYXVsdENvbHVtblNvcnQoKSB9IGtleXMgJXsgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IH07CiAgICAgICAgfQogICAgICAgIGlmICggJFByZWZlcmVuY2VzQ29sdW1uLT57T3JkZXJ9ICYmIEB7ICRQcmVmZXJlbmNlc0NvbHVtbi0+e09yZGVyfSB9ICkgewogICAgICAgICAgICBAQ29sdW1ucyA9IEB7ICRQcmVmZXJlbmNlc0NvbHVtbi0+e09yZGVyfSB9OwogICAgICAgIH0KCiAgICAgICAgIyByZW1vdmUgZHVwbGljYXRlIGNvbHVtbnMKICAgICAgICBteSAlVW5pcXVlQ29sdW1uczsKICAgICAgICBteSBAQ29sdW1uc0VuYWJsZWRBdXg7CgogICAgICAgIGZvciBteSAkQ29sdW1uIChAQ29sdW1ucykgewogICAgICAgICAgICBpZiAoICEkVW5pcXVlQ29sdW1uc3skQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQENvbHVtbnNFbmFibGVkQXV4LCAkQ29sdW1uOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRVbmlxdWVDb2x1bW5zeyRDb2x1bW59ID0gMTsKICAgICAgICB9CgogICAgICAgICMgc2V0IGZpbHRlcmVkIGNvbHVtbiBsaXN0CiAgICAgICAgQENvbHVtbnMgPSBAQ29sdW1uc0VuYWJsZWRBdXg7CiAgICB9CgogICAgewoKICAgICAgICAjIGxvb3AgdGhyb3VnaCBhbGwgdGhlIGR5bmFtaWMgZmllbGRzIHRvIGdldCB0aGUgb25lcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgIERZTkFNSUNGSUVMRE5BTUU6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGROYW1lIChAQ29sdW1ucykgewoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEROQU1FIGlmICREeW5hbWljRmllbGROYW1lICF+IG17IER5bmFtaWNGaWVsZF8gfXhtczsKCiAgICAgICAgICAgICMgcmVtb3ZlIGR5bmFtaWMgZmllbGQgcHJlZml4CiAgICAgICAgICAgIG15ICRGaWVsZE5hbWUgPSAkRHluYW1pY0ZpZWxkTmFtZTsKICAgICAgICAgICAgJEZpZWxkTmFtZSA9fiBzL0R5bmFtaWNGaWVsZF8vL2dpOwogICAgICAgICAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZEZpbHRlcn0tPnskRmllbGROYW1lfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICAgICBGaWVsZEZpbHRlciA9PiAkU2VsZi0+e0R5bmFtaWNGaWVsZEZpbHRlcn0gfHwge30sCiAgICApOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgZ2V0IGZpbHRlcmFibGUgRHluYW1pYyBmaWVsZHMKICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgbXkgJElzRmlsdHJhYmxlID0gJEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0ZpbHRyYWJsZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBpZiB0aGUgZHluYW1pYyBmaWVsZCBpcyBmaWx0ZXJhYmxlIGFkZCBpdCB0byB0aGUgVmFsaWRGaWx0cmFibGVDb2x1bW5zIGhhc2gKICAgICAgICBpZiAoJElzRmlsdHJhYmxlKSB7CiAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHNvcnRhYmxlIER5bmFtaWMgZmllbGRzCiAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgIG15ICRJc1NvcnRhYmxlID0gJEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc1NvcnRhYmxlJywKICAgICAgICApOwoKICAgICAgICAjIGlmIHRoZSBkeW5hbWljIGZpZWxkIGlzIHNvcnRhYmxlIGFkZCBpdCB0byB0aGUgVmFsaWRTb3J0YWJsZUNvbHVtbnMgaGFzaAogICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIFNUUklORzoKICAgIGZvciBteSAkU3RyaW5nIChAUGFyYW1zKSB7CiAgICAgICAgbmV4dCBTVFJJTkcgaWYgISRTdHJpbmc7CiAgICAgICAgbXkgKCAkS2V5LCAkVmFsdWUgKSA9IHNwbGl0IC89LywgJFN0cmluZzsKCiAgICAgICAgIyBwdXNoIEFSUkFZUkVGIGF0dHJpYnV0ZXMgZGlyZWN0bHkgaW4gYW4gQVJSQVlSRUYKICAgICAgICBpZiAoCiAgICAgICAgICAgICRLZXkKICAgICAgICAgICAgPX4gL14oU3RhdGVUeXBlfFN0YXRlVHlwZUlEc3xTdGF0ZXN8U3RhdGVJRHN8QXJjaGl2ZUZsYWdzfENyZWF0ZWRVc2VySURzfENyZWF0ZWRTdGF0ZXN8Q3JlYXRlZFN0YXRlSURzKSQvCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIGlmICggJFZhbHVlID1+IG17LH1zbXggKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRDb25maWdJdGVtU2VhcmNoeyRLZXl9IH0sIHNwbGl0KCAvLC8sICRWYWx1ZSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcHVzaCBAeyAkQ29uZmlnSXRlbVNlYXJjaHskS2V5fSB9LCAkVmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgcGFyYW1ldGVyIGlzIGEgZHluYW1pYyBmaWVsZCBhbmQgY2FwdHVyZSBkeW5hbWljIGZpZWxkIG5hbWUgKHdpdGggRHluYW1pY0ZpZWxkXykKICAgICAgICAjIGluICQxIGFuZCB0aGUgT3BlcmF0b3IgaW4gJDIKICAgICAgICAjIHBvc3NpYmxlIER5bmFtaWMgRmllbGRzIG9wdGlvbnMgaW5jbHVkZToKICAgICAgICAjICAgRHluYW1pY0ZpZWxkX05hbWVYX0VxdWFscz0xMjM7CiAgICAgICAgIyAgIER5bmFtaWNGaWVsZF9OYW1lWF9MaWtlPXZhbHVlKjsKICAgICAgICAjICAgRHluYW1pY0ZpZWxkX05hbWVYX0dyZWF0ZXJUaGFuPTIwMDEtMDEtMDEgMDE6MDE6MDE7CiAgICAgICAgIyAgIER5bmFtaWNGaWVsZF9OYW1lWF9HcmVhdGVyVGhhbkVxdWFscz0yMDAxLTAxLTAxIDAxOjAxOjAxOwogICAgICAgICMgICBEeW5hbWljRmllbGRfTmFtZVhfU21hbGxlclRoYW49MjAwMi0wMi0wMiAwMjowMjowMjsKICAgICAgICAjICAgRHluYW1pY0ZpZWxkX05hbWVYX1NtYWxsZXJUaGFuRXF1YWxzPTIwMDItMDItMDIgMDI6MDI6MDI7CiAgICAgICAgZWxzaWYgKCAkS2V5ID1+IG17XEEgKER5bmFtaWNGaWVsZF8uKz8pIF8gKC4rPykgXHp9c3htICkgewogICAgICAgICAgICBwdXNoIEB7ICREeW5hbWljRmllbGRzUGFyYW1ldGVyc3skMX0tPnskMn0gfSwgJFZhbHVlOwogICAgICAgIH0KCiAgICAgICAgZWxzaWYgKCAhZGVmaW5lZCAkQ29uZmlnSXRlbVNlYXJjaHskS2V5fSApIHsKCiAgICAgICAgICAgICMgY2hhbmdlIHNvcnQgYnksIGlmIG5lZWRlZAogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkS2V5IGVxICdTb3J0QnknCiAgICAgICAgICAgICAgICAmJiAkU2VsZi0+e1NvcnRCeX0KICAgICAgICAgICAgICAgICYmICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57ICRTZWxmLT57U29ydEJ5fSB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRWYWx1ZSA9ICRTZWxmLT57U29ydEJ5fTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRLZXkgZXEgJ1NvcnRCeScgJiYgISRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JFZhbHVlfSApIHsKICAgICAgICAgICAgICAgICRWYWx1ZSA9ICdBZ2UnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRDb25maWdJdGVtU2VhcmNoeyRLZXl9ID0gJFZhbHVlOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICFyZWYgJENvbmZpZ0l0ZW1TZWFyY2h7JEtleX0gKSB7CiAgICAgICAgICAgIG15ICRWYWx1ZVRtcCA9ICRDb25maWdJdGVtU2VhcmNoeyRLZXl9OwogICAgICAgICAgICAkQ29uZmlnSXRlbVNlYXJjaHskS2V5fSA9IFskVmFsdWVUbXBdOwogICAgICAgICAgICBwdXNoIEB7ICRDb25maWdJdGVtU2VhcmNoeyRLZXl9IH0sICRWYWx1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHB1c2ggQHsgJENvbmZpZ0l0ZW1TZWFyY2h7JEtleX0gfSwgJFZhbHVlOwogICAgICAgIH0KICAgIH0KICAgICVDb25maWdJdGVtU2VhcmNoID0gKAogICAgICAgICVDb25maWdJdGVtU2VhcmNoLAogICAgICAgICVEeW5hbWljRmllbGRzUGFyYW1ldGVycywKCiAgICAgICAgIyBUT0RPIGNoZWNrIGlmIHBlcm1pc3Npb24gaXMgbmVlZGVkCiAgICAgICAgUGVybWlzc2lvbiA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSB8fCAncm8nLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICBteSAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnk7CiAgICBpZiAoICRTZWxmLT57QWN0aW9ufSBlcSAnQWdlbnRDdXN0b21lclVzZXJJbmZvcm1hdGlvbkNlbnRlcicgKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ0l0ZW1LZXl9ICkgewogICAgICAgICAgICAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnkgPSAoCiAgICAgICAgICAgICAgICBBc3NpZ25lZFRvRW50aXR5ID0+IHsKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkXyRTZWxmLT57Q29uZmlnSXRlbUtleX0iID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRQYXJhbXtDdXN0b21lclVzZXJJRH0gLy8gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e0FjdGlvbn0gZXEgJ0FnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcicgKSB7CiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ0l0ZW1LZXl9ICkgewogICAgICAgICAgICAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnkgPSAoCiAgICAgICAgICAgICAgICBBc3NpZ25lZFRvRW50aXR5ID0+IHsKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkXyRTZWxmLT57Q29uZmlnSXRlbUtleX0iID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRQYXJhbXtDdXN0b21lcklEfSAvLyB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57Q29uZmlnfXtTaG93bkNsYXNzZXN9ICkgKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CiAgICAgICAgbXkgJVJldmVydGVkQ2xhc3NMaXN0ID0gcmV2ZXJzZSAkQ2xhc3NMaXN0LT4lKjsKCiAgICAgICAgbXkgQENsYXNzSURzOwogICAgICAgIGZvciBteSAkQ2xhc3NOYW1lICggJFNlbGYtPntDb25maWd9e1Nob3duQ2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICBpZiAoICRSZXZlcnRlZENsYXNzTGlzdHskQ2xhc3NOYW1lfSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQENsYXNzSURzLCAkUmV2ZXJ0ZWRDbGFzc0xpc3R7JENsYXNzTmFtZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXtBc3NpZ25lZFRvRW50aXR5fXtDbGFzc0lEc30gPSBcQENsYXNzSURzOwogICAgfQoKICAgIHJldHVybiAoCiAgICAgICAgQ29sdW1ucyAgICAgICAgICAgICAgICAgPT4gXEBDb2x1bW5zLAogICAgICAgIENvbmZpZ0l0ZW1TZWFyY2ggICAgICAgID0+IFwlQ29uZmlnSXRlbVNlYXJjaCwKICAgICAgICBDb25maWdJdGVtU2VhcmNoU3VtbWFyeSA9PiBcJUNvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5LAogICAgKTsKfQoKc3ViIF9EZWZhdWx0Q29sdW1uU29ydCB7CgogICAgbXkgJURlZmF1bHRDb2x1bW5zID0gKAogICAgICAgIEN1ckRlcGxTaWduYWwgPT4gMTEwLAogICAgICAgIEN1ckluY2lTaWduYWwgPT4gMTExLAogICAgICAgIENsYXNzICAgICAgICAgPT4gMTEyLAogICAgICAgIE51bWJlciAgICAgICAgPT4gMTEzLAogICAgICAgIE5hbWUgICAgICAgICAgPT4gMTE0LAogICAgICAgIEN1ckRlcGxTdGF0ZSAgPT4gMTE1LAogICAgICAgIEN1ckluY2lTdGF0ZSAgPT4gMTE2LAogICAgICAgIExhc3RDaGFuZ2VkICAgPT4gMTE3LAogICAgKTsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGNhbiBub3QgYmUgb24gdGhlIERlZmF1bHRDb2x1bW5zIHNvcnRpbmcgaGFzaAogICAgIyB3aGVuIGNvbXBhcmluZyAyIGR5bmFtaWMgZmllbGRzIHNvcnRpbmcgbXVzdCBiZSBhbHBoYWJldGljYWwKICAgIGlmICggISREZWZhdWx0Q29sdW1uc3skYX0gJiYgISREZWZhdWx0Q29sdW1uc3skYn0gKSB7CiAgICAgICAgcmV0dXJuICRhIGNtcCAkYjsKICAgIH0KCiAgICAjIHdoZW4gYSBkeW5hbWljIGZpZWxkIGlzIGNvbXBhcmVkIHRvIGEgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGl0IG11c3QgYmUgaGlnaGVyCiAgICBlbHNpZiAoICEkRGVmYXVsdENvbHVtbnN7JGF9ICkgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgd2hlbiBhIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBpcyBjb21wYXJlZCB0byBhIGR5bmFtaWMgZmllbGQgaXQgbXVzdCBiZSBsb3dlcgogICAgZWxzaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRifSApIHsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgIyBvdGhlcndpc2UgZG8gYSBudW1lcmljYWwgY29tcGFyaXNvbiB3aXRoIHRoZSBjb25maWcgaXRlbSBhdHRyaWJ1dGVzCiAgICByZXR1cm4gJERlZmF1bHRDb2x1bW5zeyRhfSA8PT4gJERlZmF1bHRDb2x1bW5zeyRifTsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/DynamicField.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIFRPRE86IE1heWJlIHJlbmFtZSB0byBBZ2VudFpvb20gb3Igc2ltaWxhcgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6RHluYW1pY0ZpZWxkOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgcXcoZmlyc3QpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEgSXNBcnJheVJlZldpdGhEYXRhKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6RHluYW1pY0ZpZWxkIC0gY29uZmlnaXRlbSBzcGVjaWZpYyBkeW5hbWljIGZpZWxkIG91dHB1dAoKPWhlYWQxIERFU0NSSVBUSU9OCgpGdW5jdGlvbnMgdG8gZ2VuZXJhdGUgRHluYW1pY0ZpZWxkIEhUTUwgZm9yIENvbmZpZ0l0ZW1zCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYSBEeW5hbWljRmllbGRPdXRwdXQgb2JqZWN0LiBEbyBub3QgdXNlIGl0IGRpcmVjdGx5LCBpbnN0ZWFkIHVzZToKCiAgICBteSAkRHluYW1pY0ZpZWxkT3V0cHV0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpEeW5hbWljRmllbGQnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gYmxlc3Mge30sICRUeXBlOwp9Cgo9aGVhZDIgUGFnZVJlbmRlcigpCgpSZXR1cm5zIHRoZSBIVE1MIGZvciBhIHBhZ2Ugb2YgQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KCiAgICBteSAkRHluYW1pY0ZpZWxkSFRNTCA9ICREeW5hbWljRmllbGRPdXRwdXRPYmplY3QoCiAgICAgICAgQ29uZmlnSXRlbSA9PiAkQ29uZmlnSXRlbSwKICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLAogICAgICAgIFBhZ2VSZWYgICAgPT4gJFBhZ2UsICAgICAgICAjIGVpdGhlciBQYWdlUmVmIG9yIFBhZ2UgaXMgcmVxdWlyZWQKICAgICAgICBQYWdlICAgICAgID0+ICdOYW1lJywKICAgICk7Cgo9Y3V0CgpzdWIgUGFnZVJlbmRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQ2hlY2sgbmVlZGVkIHN0dWZmLgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW0gRGVmaW5pdGlvbikpIHsKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJERlZmluaXRpb25SZWYgPSAkUGFyYW17RGVmaW5pdGlvbn17RGVmaW5pdGlvblJlZn07CiAgICBteSAkUGFnZSAgICAgICAgICA9ICRQYXJhbXtQYWdlUmVmfSAvLyBmaXJzdCB7ICRfLT57TmFtZX0gZXEgJFBhcmFte1BhZ2V9IH0gJERlZmluaXRpb25SZWYtPntQYWdlc30tPkAqOwogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFBhZ2UpIHx8ICFJc0FycmF5UmVmV2l0aERhdGEoICRQYWdlLT57Q29udGVudH0gKSApIHsKICAgICAgICBteSAkRXJyb3JNZXNzYWdlID0gZGVmaW5lZCAkUGFyYW17UGFnZVJlZn0KICAgICAgICAgICAgPyAnUGFnZVJlZiBub3QgdmFsaWQuJwogICAgICAgICAgICA6ICRQYXJhbXtQYWdlfSA/ICJQYWdlICRQYXJhbXtQYWdlfSBub3QgdmFsaWQgZm9yIERlZmluaXRpb25JRCAkUGFyYW17RGVmaW5pdGlvbn17RGVmaW5pdGlvbklEfSBvZiBjbGFzcyAkUGFyYW17RGVmaW5pdGlvbn17Q2xhc3N9LiIKICAgICAgICAgICAgOiAgICAgICAgICAgICAgICAnTmVlZCBQYWdlIG9yIFBhZ2VSZWYhJzsKCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRFcnJvck1lc3NhZ2UsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVMYXlvdXQ7CiAgICBpZiAoICRQYWdlLT57TGF5b3V0fSApIHsKICAgICAgICAkTGF5b3V0e0NvbHVtbnN9ID0gJFBhZ2UtPntMYXlvdXR9e0NvbHVtbnN9ID8gaW50KCAkUGFnZS0+e0xheW91dH17Q29sdW1uc30gKSA6IDE7CgogICAgICAgICMgYmFzaWMgY29ycmVjdGlvbnMgZm9yIGdyaWQtdGVtcGxhdGUtcm93cwogICAgICAgIG15IEBXaWR0aHMgPSAkUGFnZS0+e0xheW91dH17Q29sdW1uV2lkdGh9ID8gKCAkUGFnZS0+e0xheW91dH17Q29sdW1uV2lkdGh9ID1+IC8oW1xkXC5dKlx3KykvZyApIDogKCk7CgogICAgICAgIGlmICggQFdpZHRocyA8ICRMYXlvdXR7Q29sdW1uc30gKSB7CiAgICAgICAgICAgIHB1c2ggQFdpZHRocywgKCcxZnInKSB4ICggJExheW91dHtDb2x1bW5zfSAtIEBXaWR0aHMgKTsKICAgICAgICB9CgogICAgICAgICRMYXlvdXR7V2lkdGhzfSA9IGpvaW4oICcgJywgQFdpZHRoc1sgMCAuLiAkTGF5b3V0e0NvbHVtbnN9IC0gMSBdICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAlTGF5b3V0ID0gKAogICAgICAgICAgICBDb2x1bW5zID0+IDEsCiAgICAgICAgICAgIFdpZHRocyAgPT4gJzFmcicsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIHsKICAgICAgICBteSAkU2VjdGlvbnMgPSAkRGVmaW5pdGlvblJlZi0+e1NlY3Rpb25zfSAvLyB7fTsKICAgICAgICBteSAlS2V5VG9Dc3MgPSBxdy9Sb3cgcm93IENvbHVtbiBjb2x1bW4vOwoKICAgICAgICBDT05URU5UQkxPQ0s6CiAgICAgICAgZm9yIG15ICRDb250ZW50QmxvY2sgKCAkUGFnZS0+e0NvbnRlbnR9LT5AKiApIHsKCiAgICAgICAgICAgICMgVGhlIHJvbGUgaXMgaW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gbmFtZQogICAgICAgICAgICBteSAkU2VjdGlvbiA9ICRTZWN0aW9ucy0+eyAkQ29udGVudEJsb2NrLT57U2VjdGlvbn0gfTsKCiAgICAgICAgICAgIG5leHQgQ09OVEVOVEJMT0NLIHVubGVzcyAkU2VjdGlvbjsKCiAgICAgICAgICAgIG15ICRHcmlkQXJlYTsKICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3L1JvdyBDb2x1bW4vKSB7CiAgICAgICAgICAgICAgICBpZiAoICRDb250ZW50QmxvY2stPnsgJEtleSAuICdTdGFydCcgfSApIHsKICAgICAgICAgICAgICAgICAgICAkR3JpZEFyZWEgLj0gJ2dyaWQtJyAuICRLZXlUb0Nzc3skS2V5fSAuICctc3RhcnQ6JyAuIGludCggJENvbnRlbnRCbG9jay0+eyAkS2V5IC4gJ1N0YXJ0JyB9ICkgLiAnOyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICRDb250ZW50QmxvY2stPnsgJEtleSAuICdTcGFuJyB9ICkgewogICAgICAgICAgICAgICAgICAgICRHcmlkQXJlYSAuPSAnZ3JpZC0nIC4gJEtleVRvQ3NzeyRLZXl9IC4gJy1lbmQ6c3BhbiAnIC4gaW50KCAkQ29udGVudEJsb2NrLT57ICRLZXkgLiAnU3BhbicgfSApIC4gJzsnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRDZWxsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEdyaWRBcmVhID0+ICRHcmlkQXJlYSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICA9PiAkU2VjdGlvbi0+e1R5cGV9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGYtPl9TZWN0aW9uUmVuZGVyKAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICBTZWN0aW9uICAgICAgPT4gJFNlY3Rpb24sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdJVFNNQ29uZmlnSXRlbURldGFpbHMnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJUxheW91dCwKICAgICk7Cn0KCnN1YiBfU2VjdGlvblJlbmRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggJFBhcmFte1NlY3Rpb259e1R5cGV9ICkgewogICAgICAgIGlmICggJFBhcmFte1NlY3Rpb259e1R5cGV9IGVxICdDb25maWdJdGVtTGlua3MnICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPl9SZW5kZXJDSUxpbmtzKCVQYXJhbSk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBhcmFte1NlY3Rpb259e1R5cGV9IGVxICdSZWZlcmVuY2VkU2VjdGlvbicgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X1JlbmRlclJlZmVyZW5jZWRTZWN0aW9uKCVQYXJhbSk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBhcmFte1NlY3Rpb259e1R5cGV9IGVxICdEZXNjcmlwdGlvbicgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X1JlbmRlckRlc2NyaXB0aW9uU2VjdGlvbiglUGFyYW0pOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtTZWN0aW9ufXtUeXBlfSBuZSAnRHluYW1pY0ZpZWxkcycgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHNlY3Rpb24gdHlwZSAnJFBhcmFte1NlY3Rpb259e1R5cGV9JyEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIEdldCBIVE1MIGZyb20gYWRkaXRpb25hbCBtb2R1bGVzCiAgICBlbHNpZiAoICRQYXJhbXtTZWN0aW9ufXtNb2R1bGV9ICkgewogICAgICAgIG15ICRNb2R1bGUgPSAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpTZWN0aW9uOjonIC4gJFBhcmFte1NlY3Rpb259e01vZHVsZX07CgogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoJE1vZHVsZSkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIHNlY3Rpb24gbW9kdWxlICckTW9kdWxlJyIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICBteSAkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgkTW9kdWxlKTsKICAgICAgICBteSAkSFRNTCAgID0gJE9iamVjdC0+UnVuKCVQYXJhbSk7CiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdHZW5lcmljSFRNTCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSFRNTCA9PiAkSFRNTCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBteSAkUm93SGFzVmFsdWUgPSBzdWIgewogICAgICAgIHJldHVybiAxIGlmIGdyZXAgeyBkZWZpbmVkICRQYXJhbXtDb25maWdJdGVtfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJF8tPntERn0gfSB9ICRfWzBdLT5AKjsKICAgICAgICByZXR1cm4gMDsKICAgIH07CiAgICBteSAkR3JpZEhhc1ZhbHVlID0gc3ViIHsKICAgICAgICBmb3IgbXkgJFJvdyAoICRfWzBdLT5AKiApIHsKICAgICAgICAgICAgcmV0dXJuIDEgaWYgJFJvd0hhc1ZhbHVlLT4oJFJvdyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwogICAgfTsKCiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdDsKCiAgICBST1c6CiAgICBmb3IgbXkgJFJvdyAoICRQYXJhbXtTZWN0aW9ufXtDb250ZW50fS0+QCogKSB7CiAgICAgICAgaWYgKCAkUm93LT57SGVhZGVyfSApIHsKICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyUm93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEhlYWRlciA9PiAkUm93LT57SGVhZGVyfSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRMaXN0ID0gMDsKICAgICAgICB9CgogICAgICAgIGVsc2lmICggJFJvdy0+e0RGfSApIHsKICAgICAgICAgICAgbmV4dCBST1cgaWYgIWRlZmluZWQgJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkUm93LT57REZ9IH07CgogICAgICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkTGlzdCApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlSb3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBXaWR0aHMgPT4gJzFmciAxZnInLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZExpc3QgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJFBhcmFte0RlZmluaXRpb259e0R5bmFtaWNGaWVsZFJlZn17ICRSb3ctPntERn0gfTsKCiAgICAgICAgICAgIG5leHQgUk9XIGlmICEkRHluYW1pY0ZpZWxkOwoKICAgICAgICAgICAgbXkgJERpc3BsYXlWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRSb3ctPntERn0gfSwKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgIEhUTUxPdXRwdXQgICAgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICA9PiAkUm93LT57TGFiZWx9IHx8ICREeW5hbWljRmllbGQtPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0xhYmVsJywKICAgICAgICAgICAgICAgICAgICBDU1NDbGFzcyA9PiAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnU2V0JyA/ICdEeW5hbWljRmllbGRTZXRMYWJlbCcgOiB1bmRlZiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnIHx8ICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdSaWNoVGV4dCcgKSB7CiAgICAgICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWUtPiUqLAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICdGdWxsUm93JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICREaXNwbGF5VmFsdWUtPntMaW5rfSApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e05hbWV9ID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtfS0+JSosCiAgICAgICAgICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWUtPiUqLAoKICAgICAgICAgICAgICAgICAgICAgICAgIyBJbmNsdWRlIHVuaXF1ZSBwYXJhbWV0ZXIgd2l0aCBkeW5hbWljIGZpZWxkIG5hbWUgaW4gY2FzZSBvZiBjb2xsaXNpb24gd2l0aCBvdGhlcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICMgICBQbGVhc2Ugc2VlIGJ1ZyMxMzM2MiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkLT57TmFtZX0iID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVmFsdWVMaW5rJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdBdHRhY2htZW50JyApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJERpc3BsYXlWYWx1ZS0+JSosCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1ZhbHVlUmF3JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJERpc3BsYXlWYWx1ZS0+JSosCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1ZhbHVlJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZWxzaWYgKCAkUm93LT57R3JpZH0gKSB7CiAgICAgICAgICAgIG5leHQgUk9XIGlmICEkR3JpZEhhc1ZhbHVlLT4oICRSb3ctPntHcmlkfXtSb3dzfSApOwoKICAgICAgICAgICAgbXkgJENvbHVtbnMgPSBpbnQoICRSb3ctPntHcmlkfXtDb2x1bW5zfSApOwoKICAgICAgICAgICAgIyBiYXNpYyBjb3JyZWN0aW9ucyBmb3IgZ3JpZC10ZW1wbGF0ZS1yb3dzCiAgICAgICAgICAgIG15IEBXaWR0aHMgPSAkUm93LT57R3JpZH17Q29sdW1uV2lkdGh9ID8gKCAkUm93LT57R3JpZH17Q29sdW1uV2lkdGh9ID1+IC8oW1xkXC5dKlx3KykvZyApIDogKCk7CgogICAgICAgICAgICBpZiAoIEBXaWR0aHMgPCAkQ29sdW1ucyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFdpZHRocywgKCcxZnInKSB4ICggJENvbHVtbnMgLSBAV2lkdGhzICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheVJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBXaWR0aHMgPT4gam9pbiggJyAnLCBAV2lkdGhzWyAwIC4uICRDb2x1bW5zIC0gMSBdICksCgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgR1JJRFJPVzoKICAgICAgICAgICAgZm9yIG15ICRHcmlkUm93ICggJFJvdy0+e0dyaWR9e1Jvd3N9LT5AKiApIHsKICAgICAgICAgICAgICAgIG5leHQgR1JJRFJPVyBpZiAhJFJvd0hhc1ZhbHVlLT4oJEdyaWRSb3cpOwoKICAgICAgICAgICAgICAgIG15ICRDb2x1bW5JbmRleCA9IDA7CiAgICAgICAgICAgICAgICBteSBARGlzcGxheVZhbHVlczsKICAgICAgICAgICAgICAgIEZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICRGaWVsZCAoICRHcmlkUm93LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEZJRUxEIGlmICEkRmllbGQtPntERn07CgogICAgICAgICAgICAgICAgICAgICRDb2x1bW5JbmRleCsrOwoKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJFBhcmFte0RlZmluaXRpb259e0R5bmFtaWNGaWVsZFJlZn17ICRGaWVsZC0+e0RGfSB9OwoKICAgICAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlc1skQ29sdW1uSW5kZXhdID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRGaWVsZC0+e0RGfSB9LAogICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJFBhcmFte0xheW91dE9iamVjdH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhUTUxPdXRwdXQgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgVE9ETzogZ3JpZCBjb2x1bW4gZnJvbSBkZWZpbml0aW9uCiAgICAgICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgID0+ICRGaWVsZC0+e0xhYmVsfSB8fCAkRHluYW1pY0ZpZWxkLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JpZENvbHVtbiA9PiAiZ3JpZC1jb2x1bW4tc3RhcnQ6ICRDb2x1bW5JbmRleDsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICA9PiAnTGFiZWwnLAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmb3IgbXkgJEluZGV4ICggMSAuLiAkQ29sdW1uSW5kZXggKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlc1skSW5kZXhdLT4lKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyaWRDb2x1bW4gPT4gImdyaWQtY29sdW1uLXN0YXJ0OiAkSW5kZXg7IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgPT4gJ1ZhbHVlJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdCA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1JlbmRlckNJTGlua3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIG15ICREaXJlY3Rpb24gPSAkUGFyYW17U2VjdGlvbn17TGlua2VkQXN9IHx8ICdTb3VyY2UnOwogICAgbXkgJFR5cGVzICAgICA9IElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte1NlY3Rpb259e0xpbmtUeXBlc30gKSA/ICRQYXJhbXtTZWN0aW9ufXtMaW5rVHlwZXN9IDogdW5kZWY7CgogICAgbXkgJExpbmtlZENvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkxpbmtlZENvbmZpZ0l0ZW1zKAoKICAgICAgICAjIFRPRE86IFdoYXQgYWJvdXQgdmVyc2lvbnMKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgRGlyZWN0aW9uICAgID0+ICREaXJlY3Rpb24sCiAgICAgICAgVHlwZXMgICAgICAgID0+ICRUeXBlcywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkTGlua2VkQ29uZmlnSXRlbXM7CgogICAgbXkgJUxpbmtlZENsYXNzZXM7CgogICAgZm9yIG15ICRMaW5rICggJExpbmtlZENvbmZpZ0l0ZW1zLT5AKiApIHsKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJExpbmstPntDb25maWdJdGVtSUR9LAogICAgICAgICk7CgogICAgICAgICMgVE9ETzogVGhpbmsgYWJvdXQgc29ydGluZwogICAgICAgIHB1c2ggQHsgJExpbmtlZENsYXNzZXN7ICRDb25maWdJdGVtLT57Q2xhc3N9IH0gfSwgewogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRMaW5rLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICB9OwogICAgfQoKICAgICMgVE9ETzogQWNjZXNzIHJpZ2h0czsgY2xhc3NlcyBmb3IgYWdlbnRzOyBmb3IgY3VzdG9tZXJzPwogICAgIyBUT0RPOiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSB0aWxlOyBjbGFzcyByZXN0cmljdGlvbnMsIGRmIHJlc3RyaWN0aW9ucywgPwoKICAgIGlmICggJFBhcmFte1NlY3Rpb259e0hlYWRlcn0gKSB7CiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJSb3cnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEhlYWRlciA9PiAkUGFyYW17U2VjdGlvbn17SGVhZGVyfSwKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgbXkgJEFjdGlvbiA9ICRQYXJhbXtMYXlvdXRPYmplY3R9e1VzZXJUeXBlfSAmJiAkUGFyYW17TGF5b3V0T2JqZWN0fXtVc2VyVHlwZX0gZXEgJ0N1c3RvbWVyJwogICAgICAgID8gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tJwogICAgICAgIDogJ0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tJzsKCiAgICBmb3IgbXkgJENsYXNzICggc29ydCBrZXlzICVMaW5rZWRDbGFzc2VzICkgewogICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Um93JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBXaWR0aHMgPT4gJzFmciAxZnInLAogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBMYWJlbCA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICBUeXBlICA9PiAnTGFiZWwnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkQ0kgKCBzb3J0IHsgJGEtPntOYW1lfSBjbXAgJGItPntOYW1lfSB9ICRMaW5rZWRDbGFzc2VzeyRDbGFzc30tPkAqICkgewogICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgPT4gJENJLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICA9PiAkQ0ktPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBMaW5rICAgICAgID0+ICRQYXJhbXtMYXlvdXRPYmplY3R9e0Jhc2VsaW5rfSAuICJBY3Rpb249JEFjdGlvbjtDb25maWdJdGVtSUQ9JENJLT57Q29uZmlnSXRlbUlEfSIsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICA9PiAnVmFsdWVMaW5rJywKICAgICAgICAgICAgICAgICAgICBHcmlkQ29sdW1uID0+ICdncmlkLWNvbHVtbi1zdGFydDoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1JlbmRlckRlc2NyaXB0aW9uU2VjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdIZWFkZXJSb3cnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBIZWFkZXIgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICB9LAogICAgKTsKCiAgICAjIHJlbmRlciBkZXNjcmlwdGlvbiByaWNodGV4dCBlZGl0b3IKICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlSb3cnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBXaWR0aHMgPT4gJzFmcicsCiAgICAgICAgfSwKICAgICk7CgogICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFZlcnNpb25JRCAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17VmVyc2lvbklEfSwKICAgICAgICAgICAgRnJvbnRlbmQgICAgID0+ICRQYXJhbXtMYXlvdXRPYmplY3R9e1VzZXJUeXBlfSBlcSAnVXNlcicgPyAnQWdlbnQnIDogJ0N1c3RvbWVyJywKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdJZnJhbWUnLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgpzdWIgX1JlbmRlclJlZmVyZW5jZWRTZWN0aW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17TGF5b3V0T2JqZWN0fTsKCiAgICBteSAkUmVmZXJlbmNlZENvbmZpZ0l0ZW0gPSAkU2VsZi0+X1JlZmVyZW5jZWRDb25maWdJdGVtR2V0KAogICAgICAgIFNlY3Rpb24gICAgPT4gJFBhcmFte1NlY3Rpb259LAogICAgICAgIENvbmZpZ0l0ZW0gPT4gJFBhcmFte0NvbmZpZ0l0ZW19LAogICAgKTsKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJFJlZmVyZW5jZWRDb25maWdJdGVtKTsKCiAgICAjIGdldCBkZWZpbml0aW9uIG9mIHJlZmVyZW5jZWQgY29uZmlnIGl0ZW0gYW5kIHBhc3MgaXQgb24gdG8gX1NlY3Rpb25SZW5kZXIKICAgIG15ICRSZWZlcmVuY2VkQ0lEZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRSZWZlcmVuY2VkQ29uZmlnSXRlbS0+e0RlZmluaXRpb25JRH0sCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJFJlZmVyZW5jZWRDSURlZmluaXRpb24tPntEZWZpbml0aW9uSUR9OwoKICAgIGlmICggJFBhcmFte1NlY3Rpb259e0ZpZWxkTGlzdFByZX0gJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17U2VjdGlvbn17RmllbGRMaXN0UHJlfSApICkgewogICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheVJvdycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgV2lkdGhzID0+ICcxZnIgMWZyJywKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIGZvciBteSAkREZFbnRyeSAoICRQYXJhbXtTZWN0aW9ufXtGaWVsZExpc3RQcmV9LT5AKiApIHsKICAgICAgICAgICAgJFNlbGYtPl9SZW5kZXJERigKICAgICAgICAgICAgICAgIFJvdyAgICAgICAgICAgICAgICAgICAgICAgPT4gJERGRW50cnksCiAgICAgICAgICAgICAgICBDb25maWdJdGVtICAgICAgICAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfSwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gICAgICAgICAgICAgICAgPT4gJFBhcmFte0RlZmluaXRpb259LAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPT4gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICRTZWxmLT5fU2VjdGlvblJlbmRlcigKICAgICAgICBDb25maWdJdGVtICAgPT4gJFJlZmVyZW5jZWRDb25maWdJdGVtLAogICAgICAgIERlZmluaXRpb24gICA9PiAkUmVmZXJlbmNlZENJRGVmaW5pdGlvbiwKICAgICAgICBTZWN0aW9uICAgICAgPT4gJFJlZmVyZW5jZWRDSURlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtTZWN0aW9uc317ICRQYXJhbXtTZWN0aW9ufXtTZWN0aW9uTmFtZX0gfSwKICAgICAgICBMYXlvdXRPYmplY3QgPT4gJFBhcmFte0xheW91dE9iamVjdH0sCiAgICApOwoKICAgIGlmICggJFBhcmFte1NlY3Rpb259e0ZpZWxkTGlzdFBvc3R9ICYmIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte1NlY3Rpb259e0ZpZWxkTGlzdFBvc3R9ICkgKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Um93JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBXaWR0aHMgPT4gJzFmciAxZnInLAogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRERkVudHJ5ICggJFBhcmFte1NlY3Rpb259e0ZpZWxkTGlzdFBvc3R9LT5AKiApIHsKICAgICAgICAgICAgJFNlbGYtPl9SZW5kZXJERigKICAgICAgICAgICAgICAgIFJvdyAgICAgICAgICAgICAgICAgICAgICAgPT4gJERGRW50cnksCiAgICAgICAgICAgICAgICBDb25maWdJdGVtICAgICAgICAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfSwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gICAgICAgICAgICAgICAgPT4gJFBhcmFte0RlZmluaXRpb259LAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPT4gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1JlZmVyZW5jZWRDb25maWdJdGVtR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgcGFyYW1zCiAgICByZXR1cm4gdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17Q29uZmlnSXRlbX0gKTsKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtTZWN0aW9ufSApOwoKICAgICMgZmV0Y2ggY29uZmlnIG9mIHJlZmVyZW5jZWQgZmllbGQKICAgIG15ICRSZWZlcmVuY2VkRmllbGRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBOYW1lID0+ICRQYXJhbXtTZWN0aW9ufXtSZWZlcmVuY2VGaWVsZH0sCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJFJlZmVyZW5jZWRGaWVsZENvbmZpZyk7CgogICAgIyBmZXRjaCBjb25maWcgaXRlbSBkZXBlbmRpbmcgb24gZmllbGQgdHlwZQogICAgbXkgJUNvbmZpZ0l0ZW1HZXRQYXJhbXMgPSAoCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKICAgIGlmICggJFJlZmVyZW5jZWRGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0NvbmZpZ0l0ZW0nICkgewogICAgICAgICRDb25maWdJdGVtR2V0UGFyYW1ze0NvbmZpZ0l0ZW1JRH0gPSAkUGFyYW17Q29uZmlnSXRlbX17IkR5bmFtaWNGaWVsZF8kUmVmZXJlbmNlZEZpZWxkQ29uZmlnLT57TmFtZX0ifVswXTsKICAgIH0KICAgIGVsc2lmICggJFJlZmVyZW5jZWRGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0NvbmZpZ0l0ZW1WZXJzaW9uJyApIHsKICAgICAgICAkQ29uZmlnSXRlbUdldFBhcmFtc3tWZXJzaW9uSUR9ID0gJFBhcmFte0NvbmZpZ0l0ZW19eyJEeW5hbWljRmllbGRfJFJlZmVyZW5jZWRGaWVsZENvbmZpZy0+e05hbWV9In1bMF07CiAgICB9CgogICAgcmV0dXJuIHVubGVzcyAoICRDb25maWdJdGVtR2V0UGFyYW1ze0NvbmZpZ0l0ZW1JRH0gfHwgJENvbmZpZ0l0ZW1HZXRQYXJhbXN7VmVyc2lvbklEfSApOwoKICAgICMgcmV0dXJuIHJlZmVyZW5jZWQgY29uZmlnIGl0ZW0KICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICAlQ29uZmlnSXRlbUdldFBhcmFtcywKICAgICk7Cn0KCnN1YiBfUmVuZGVyREYgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtSb3d9e0RGfTsKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtSb3d9e0RGfSB9OwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkUGFyYW17RGVmaW5pdGlvbn17RHluYW1pY0ZpZWxkUmVmfXsgJFBhcmFte1Jvd317REZ9IH07CgogICAgcmV0dXJuIGlmICEkRHluYW1pY0ZpZWxkOwoKICAgIG15ICREaXNwbGF5VmFsdWUgPSAkUGFyYW17RHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdH0tPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17Um93fXtERn0gfSwKICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJFBhcmFte0xheW91dE9iamVjdH0sCiAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDEsCiAgICApOwoKICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTGFiZWwgPT4gJFBhcmFte1Jvd317TGFiZWx9IHx8ICREeW5hbWljRmllbGQtPntMYWJlbH0sCiAgICAgICAgICAgIFR5cGUgID0+ICdMYWJlbCcsCiAgICAgICAgfSwKICAgICk7CgogICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnU2V0JyB8fCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnUmljaFRleHQnICkgewogICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJERpc3BsYXlWYWx1ZS0+JSosCiAgICAgICAgICAgICAgICBUeXBlID0+ICdGdWxsUm93JywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkRGlzcGxheVZhbHVlLT57TGlua30gKSB7CiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57TmFtZX0gPT4gJERpc3BsYXlWYWx1ZS0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtfS0+JSosCiAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlLT4lKiwKCiAgICAgICAgICAgICAgICAjIEluY2x1ZGUgdW5pcXVlIHBhcmFtZXRlciB3aXRoIGR5bmFtaWMgZmllbGQgbmFtZSBpbiBjYXNlIG9mIGNvbGxpc2lvbiB3aXRoIG90aGVycy4KICAgICAgICAgICAgICAgICMgICBQbGVhc2Ugc2VlIGJ1ZyMxMzM2MiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZC0+e05hbWV9IiA9PiAkRGlzcGxheVZhbHVlLT57VGl0bGV9LAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdWYWx1ZUxpbmsnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdBdHRhY2htZW50JyApIHsKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWUtPiUqLAogICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWVSYXcnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWUtPiUqLAogICAgICAgICAgICAgICAgVHlwZSA9PiAnVmFsdWUnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutCustomer.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q3VzdG9tZXI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEN1c3RvbWVyIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGN1c3RvbWVyIG9iamVjdHMKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRDdXN0b21lci0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIE91dHB1dFN0cmluZ0NyZWF0ZSgpCgpjcmVhdGUgb3V0cHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBPdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAkUGFyYW17VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5Bc2NpaTJIdG1sKAogICAgICAgIFRleHQgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0gfHwgJycsCiAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICk7CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBGb3JtRGF0YUdldCgpCgpnZXQgZm9ybSBkYXRhIGFzIGhhc2ggcmVmZXJlbmNlCgogICAgbXkgJEZvcm1EYXRhUmVmID0gJEJhY2tlbmRPYmplY3QtPkZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVGb3JtRGF0YTsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBzZWxlY3RlZCBjdXN0b21lciB1c2VyCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIGNoZWNrIHNlYXJjaCBidXR0b24KICAgIGlmICggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpCdXR0b25TZWFyY2gnICkgKSB7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1NlYXJjaH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlNlYXJjaCcgKTsKICAgIH0KCiAgICAjIGNoZWNrIHNlbGVjdCBidXR0b24KICAgIGVsc2lmICggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpCdXR0b25TZWxlY3QnICkgKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6U2VsZWN0JyApOwogICAgfQoKICAgICMgY2hlY2sgY2xlYXIgYnV0dG9uCiAgICBlbHNpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6QnV0dG9uQ2xlYXInICkgKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICcnOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgcmVzZXQgdmFsdWUgaWYgc2VhcmNoIGZpZWxkIGlzIGVtcHR5CiAgICAgICAgaWYgKAogICAgICAgICAgICAhJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpTZWFyY2gnICkKICAgICAgICAgICAgJiYgZGVmaW5lZCAkRm9ybURhdGF7VmFsdWV9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAnJzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVxdWlyZWQgb3B0aW9uCiAgICAgICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICAgICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUZvcm1EYXRhOwp9Cgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSAgID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSAgPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmFsdWUgPSAnJzsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKICAgIH0KICAgIG15ICRDbGFzcyAgICA9ICdXNTBwYyBJVFNNQ3VzdG9tZXJTZWFyY2gnOwogICAgbXkgJFNlYXJjaCAgID0gJyc7CiAgICBteSAkUmVxdWlyZWQgPSAkUGFyYW17UmVxdWlyZWR9IHx8ICcnOwogICAgbXkgJEludmFsaWQgID0gJFBhcmFte0ludmFsaWR9ICB8fCAnJzsKICAgIG15ICRJdGVtSWQgICA9ICRQYXJhbXtJdGVtSWR9ICAgfHwgJyc7CgogICAgaWYgKCRSZXF1aXJlZCkgewogICAgICAgICRDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAkQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBjcmVhdGUgY3VzdG9tZXIgc3RyaW5nCiAgICBpZiAoJFZhbHVlKSB7CgogICAgICAgICMgZ2V0IGN1c3RvbWVyIGRhdGEKICAgICAgICBteSAlQ3VzdG9tZXJTZWFyY2hMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpLT5DdXN0b21lclNlYXJjaCgKICAgICAgICAgICAgU2VhcmNoID0+ICRWYWx1ZSwKICAgICAgICApOwoKICAgICAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAgICAgJFNlYXJjaCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QXNjaWkySHRtbCgKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJEN1c3RvbWVyU2VhcmNoTGlzdHskVmFsdWV9IHx8ICcnLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBjcmVhdGUgc3RyaW5nCiAgICBteSAkU3RyaW5nID0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicKICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgLiAnIiB2YWx1ZT0iJwogICAgICAgIC4gJFZhbHVlCiAgICAgICAgLiAnIiBpZD0iJwogICAgICAgIC4gJEl0ZW1JZCAuICdTZWxlY3RlZCcKICAgICAgICAuICciLz4nCiAgICAgICAgLiAnPGlucHV0IHR5cGU9InRleHQiIG5hbWU9IicKICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgLiAnOjpTZWFyY2giIGNsYXNzPSInCiAgICAgICAgLiAkQ2xhc3MKICAgICAgICAuICciIGlkPSInCiAgICAgICAgLiAkSXRlbUlkCiAgICAgICAgLiAnIiB2YWx1ZT0iJwogICAgICAgIC4gJFNlYXJjaCAuICciLz4nOwoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgU2VhcmNoRm9ybURhdGFHZXQoKQoKZ2V0IHNlYXJjaCBmb3JtIGRhdGEKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17S2V5fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgS2V5IScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkVmFsdWU7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CiAgICB9CiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBoYXNoIHdpdGggdmFsdWVzIGZvciB0aGUgaW5wdXQgZmllbGQKICAgIG15ICVGb3JtRGF0YTsKCiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CgogICAgIyBjcmVhdGUgaW5wdXQgZmllbGQKICAgIG15ICRJbnB1dFN0cmluZyA9ICRTZWxmLT5JbnB1dENyZWF0ZSgKICAgICAgICAlRm9ybURhdGEsCiAgICAgICAgS2V5ICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIEl0ZW0gICA9PiAkUGFyYW17SXRlbX0sCiAgICAgICAgSXRlbUlkID0+ICRQYXJhbXtLZXl9LAogICAgKTsKCiAgICByZXR1cm4gJElucHV0U3RyaW5nOwp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutCustomerCompany.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q3VzdG9tZXJDb21wYW55OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRDdXN0b21lckNvbXBhbnkgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGxheW91dCBmdW5jdGlvbnMgb2YgY3VzdG9tZXIgY29tcGFueSBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q3VzdG9tZXJDb21wYW55LT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIE91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICRQYXJhbXtWYWx1ZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkFzY2lpMkh0bWwoCiAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFBhcmFte1ZhbHVlfSB8fCAnJywKICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgIyBzZXQgaW52YWxpZCBwYXJhbQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgfQoKICAgIHJldHVybiBcJUZvcm1EYXRhOwp9Cgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSAgID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSAgPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkU2VsZWN0ZWRJRCA9ICRQYXJhbXtWYWx1ZX0gfHwgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fSB8fCAnJzsKCiAgICBteSAkQ1NTQ2xhc3MgPSAnTW9kZXJuaXplJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlkfTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENTU0NsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDU1NDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAlQ29tcGFueUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJDb21wYW55JyktPkN1c3RvbWVyQ29tcGFueUxpc3QoCiAgICAgICAgTGltaXQgPT4gMCwgICAgIyBEaXNwbGF5IGFsbCBDdXN0b21lciBDb21wYW5pZXMKICAgICk7CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcJUNvbXBhbnlMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBJRCAgICAgICAgICAgPT4gJEl0ZW1JZCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFNlbGVjdGVkSUQsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDU1NDbGFzcywKICAgICk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBTZWFyY2hGb3JtRGF0YUdldCgpCgpnZXQgc2VhcmNoIGZvcm0gZGF0YQoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBLZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15IEBWYWx1ZXM7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgQFZhbHVlcyA9IEB7ICRQYXJhbXtWYWx1ZX0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBWYWx1ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwogICAgfQoKICAgIHJldHVybiBcQFZhbHVlczsKfQoKPWhlYWQyIFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWYWx1ZXMgPSAkU2VsZi0+U2VhcmNoRm9ybURhdGFHZXQoJVBhcmFtKTsKCiAgICAjIGdldCBjb21wYW55IGRhdGEKICAgIG15ICVDb21wYW55TGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lckNvbXBhbnknKS0+Q3VzdG9tZXJDb21wYW55TGlzdCgKICAgICAgICBMaW1pdCA9PiAwLAogICAgKTsKCiAgICAjIGdlbmVyYXRlIHN0cmluZwogICAgbXkgJFN0cmluZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVDb21wYW55TGlzdCwKICAgICAgICBOYW1lICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBTaXplICAgICAgICA9PiA1LAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBTZWxlY3RlZElEICA9PiAkVmFsdWVzLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutDate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RGF0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXREYXRlIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGRhdGUgb2JqZWN0cy4KCj1jdXQKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXREYXRlLT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAnMjAwNy0wMS0wMScsICAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICcnIGlmICEkUGFyYW17VmFsdWV9OwoKICAgICRQYXJhbXtWYWx1ZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5EYXRlIHwgTG9jYWxpemUoIkRhdGUiKSAlXScsCiAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICBEYXRlID0+ICRQYXJhbXtWYWx1ZX0gLiAnIDAwOjAwOjAwJywKICAgICAgICB9LAogICAgKTsKICAgICRQYXJhbXtWYWx1ZX0gPX4gcy8wMDowMDowMC8vOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9IHx8ICcnOwp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkRGF5ICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OkRheScgKTsKICAgIG15ICRNb250aCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6TW9udGgnICk7CiAgICBteSAkWWVhciAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlllYXInICk7CgogICAgaWYgKCAkRGF5ICYmICRNb250aCAmJiAkWWVhciApIHsKICAgICAgICAkRm9ybURhdGF7VmFsdWV9ID0gc3ByaW50ZiAnJTAyZC0lMDJkLSUwMmQnLCAkWWVhciwgJE1vbnRoLCAkRGF5OwogICAgfQoKICAgICMgc2V0IGludmFsaWQgcGFyYW0KICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVxdWlyZWR9ICYmICEkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgIH0KCiAgICAjIFNhbml0eSBjaGVjayBvZiB0aGUgYXNzZW1ibGVkIHRpbWVzdGFtcAogICAgaWYgKCAkRm9ybURhdGF7VmFsdWV9ICkgewoKICAgICAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkRm9ybURhdGF7VmFsdWV9IC4gJyAwMDowMDowMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJERhdGVUaW1lT2JqZWN0ICkgewogICAgICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+ICcyMDA3LTAzLTI2JywgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEludmFsaWQgPSAkUGFyYW17SW52YWxpZH07CgogICAgbXkgJVZhbHVlczsKICAgIG15ICRDbGFzczsKICAgIGlmICggJFBhcmFte1ZhbHVlfSB8fCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9ICkgewogICAgICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX0gfHwgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKCiAgICAgICAgaWYgKCAkVmFsdWUgPX4gL14oXGRcZFxkXGQpLShcZFxkfFxkKS0oXGRcZHxcZCkkL2kgKSB7CiAgICAgICAgICAgICRWYWx1ZXN7ICRQYXJhbXtLZXl9IC4gJzo6WWVhcicgfSAgPSAkMTsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpNb250aCcgfSA9ICQyOwogICAgICAgICAgICAkVmFsdWVzeyAkUGFyYW17S2V5fSAuICc6OkRheScgfSAgID0gJDM7CgogICAgICAgICAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAgICAgICAgICRDbGFzcyA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJFN0cmluZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgIFByZWZpeCAgICAgICAgICAgPT4gJFBhcmFte0tleX0gLiAnOjonLAogICAgICAgIEZvcm1hdCAgICAgICAgICAgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgWWVhclBlcmlvZFBhc3QgICA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntZZWFyUGVyaW9kUGFzdH0gICB8fCAxMCwKICAgICAgICBZZWFyUGVyaW9kRnV0dXJlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1llYXJQZXJpb2RGdXR1cmV9IHx8IDEwLAogICAgICAgICVWYWx1ZXMsCiAgICAgICAgJFBhcmFte0tleX0gLiAnOjonIC4gJ0NsYXNzJyA9PiAkQ2xhc3MsCiAgICAgICAgVmFsaWRhdGUgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgIE92ZXJyaWRlVGltZVpvbmUgICAgICAgICAgICAgPT4gJFBhcmFte092ZXJyaWRlVGltZVpvbmV9LAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgbXkgJFVzZWQ7CiAgICBteSAkU3RhcnREYXk7CiAgICBteSAkU3RhcnRNb250aDsKICAgIG15ICRTdGFydFllYXI7CiAgICBteSAkU3RvcERheTsKICAgIG15ICRTdG9wTW9udGg7CiAgICBteSAkU3RvcFllYXI7CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgaWYgKCAkUGFyYW17VmFsdWV9ICYmIHJlZiAkUGFyYW17VmFsdWV9IGVxICdIQVNIJyApIHsKICAgICAgICAkVXNlZCAgICAgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gfTsKICAgICAgICAkU3RhcnREYXkgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OkRheScgfTsKICAgICAgICAkU3RhcnRNb250aCA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6Ok1vbnRoJyB9OwogICAgICAgICRTdGFydFllYXIgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6WWVhcicgfTsKICAgICAgICAkU3RvcERheSAgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6RGF5JyB9OwogICAgICAgICRTdG9wTW9udGggID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpNb250aCcgfTsKICAgICAgICAkU3RvcFllYXIgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6WWVhcicgfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRVc2VkICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgICAgICAkU3RhcnREYXkgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpEYXknICk7CiAgICAgICAgJFN0YXJ0TW9udGggPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6TW9udGgnICk7CiAgICAgICAgJFN0YXJ0WWVhciAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6WWVhcicgKTsKICAgICAgICAkU3RvcERheSAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OkRheScgKTsKICAgICAgICAkU3RvcE1vbnRoICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6Ok1vbnRoJyApOwogICAgICAgICRTdG9wWWVhciAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6WWVhcicgKTsKICAgIH0KICAgIGlmICgKICAgICAgICAkVXNlZAogICAgICAgICYmICRTdGFydERheSAmJiAkU3RhcnRNb250aCAmJiAkU3RhcnRZZWFyCiAgICAgICAgJiYgJFN0b3BEYXkgICYmICRTdG9wTW9udGggICYmICRTdG9wWWVhcgogICAgICAgICkKICAgIHsKICAgICAgICBteSAkU3RhcnREYXRlID0gc3ByaW50ZiAnJTAyZC0lMDJkLSUwMmQnLCAkU3RhcnRZZWFyLCAkU3RhcnRNb250aCwgJFN0YXJ0RGF5OwogICAgICAgIG15ICRTdG9wRGF0ZSAgPSBzcHJpbnRmICclMDJkLSUwMmQtJTAyZCcsICRTdG9wWWVhciwgICRTdG9wTW9udGgsICAkU3RvcERheTsKCiAgICAgICAgcmV0dXJuIHsgJy1iZXR3ZWVuJyA9PiBbICRTdGFydERhdGUsICRTdG9wRGF0ZSBdIH07CiAgICB9CgogICAgcmV0dXJuIFtdOyAgICAjIG5vIGNvbmRpdGlvbnMgYnkgZGVmYXVsdAp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgICAgICA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSAgICAgPT4gJEl0ZW1SZWYsCiAgICAgICAgT3B0aW9uYWwgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgbXkgJEtleSAgICAgICAgID0gJFBhcmFte0tleX07CiAgICBteSAkUHJlZml4U3RhcnQgPSAkS2V5IC4gJzo6VGltZVN0YXJ0OjonOwogICAgbXkgJFByZWZpeFN0b3AgID0gJEtleSAuICc6OlRpbWVTdG9wOjonOwoKICAgICMgZ2V0IHRpbWUgcmVsYXRlZCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJUdldFBhcmFtID0gJXsgJFBhcmFte1ZhbHVlfSB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApOwogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCAkUHJlZml4U3RhcnQsICRQcmVmaXhTdG9wICkgewogICAgICAgICAgICBmb3IgbXkgJFBhcnQgKHF3KCBZZWFyIE1vbnRoIERheSApKSB7CiAgICAgICAgICAgICAgICBteSAkUGFyYW1LZXkgPSAkVGltZVR5cGUgLiAkUGFydDsKICAgICAgICAgICAgICAgIG15ICRQYXJhbVZhbCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbUtleSApOwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlIHNwYWNlIG9uIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAgICAgICBpZiAoJFBhcmFtVmFsKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxzKyBceiB9e314bXM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzdG9yZSBpbiAlR2V0UGFyYW0KICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1LZXl9ID0gJFBhcmFtVmFsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBCdWlsZCBzZWxlY3Rpb24gZm9yIHRoZSBzdGFydCBhbmQgc3RvcCB0aW1lLgogICAgIyBOb3RlIHRoYXQgc2VhcmNoaW5nIGlzIGJ5IGRhdGUsIHdoaWxlIGlucHV0IGlzIGJ5IHRpbWUgYXMgd2VsbAogICAgbXkgJFRpbWVTdGFydFNlbGVjdGlvblN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBQcmVmaXggICAgICAgICAgID0+ICRQcmVmaXhTdGFydCwKICAgICAgICBGb3JtYXQgICAgICAgICAgID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgIFllYXJQZXJpb2RQYXN0ICAgPT4gMTAsCiAgICAgICAgWWVhclBlcmlvZEZ1dHVyZSA9PiAxMCwKICAgICAgICAlR2V0UGFyYW0sCiAgICApOwogICAgbXkgJFRpbWVTdG9wU2VsZWN0aW9uU3RyaW5nID0gJExheW91dE9iamVjdC0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgIE9wdGlvbmFsICAgICAgICAgPT4gMCwKICAgICAgICBQcmVmaXggICAgICAgICAgID0+ICRQcmVmaXhTdG9wLAogICAgICAgIEZvcm1hdCAgICAgICAgICAgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgWWVhclBlcmlvZFBhc3QgICA9PiAxMCwKICAgICAgICBZZWFyUGVyaW9kRnV0dXJlID0+IDEwLAogICAgICAgICVHZXRQYXJhbSwKICAgICk7CgogICAgbXkgJENoZWNrYm94ID0gcXF7PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJEtleSIgdmFsdWU9IjEiLz59OwogICAgaWYgKCAkUGFyYW17T3B0aW9uYWx9ICkgewogICAgICAgICRDaGVja2JveCA9IHFxezxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iJEtleSIgdmFsdWU9IjEiLz59OwogICAgfQoKICAgIG15ICRCZXR3ZWVuID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdCZXR3ZWVuJyk7CiAgICBteSAkQW5kICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnYW5kJyk7CgogICAgcmV0dXJuICI8ZGl2PiAkQ2hlY2tib3ggJEJldHdlZW4gJFRpbWVTdGFydFNlbGVjdGlvblN0cmluZyA8L2Rpdj4iCiAgICAgICAgLiAiPHNwYW4gc3R5bGU9XCJtYXJnaW4tbGVmdDogMjdweDtcIj4kQW5kPC9zcGFuPiAkVGltZVN0b3BTZWxlY3Rpb25TdHJpbmciOwp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutDateTime.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RGF0ZVRpbWU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dERhdGVUaW1lIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGRhdGV0aW1lIG9iamVjdHMuCgo9Y3V0Cgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RGF0ZVRpbWUtPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+ICcyMDA3LTAxLTAxIDEyOjAwJywgICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBPdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1ZX07CgogICAgJFBhcmFte1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlID0+ICdbJSBEYXRhLkRhdGUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXScsCiAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICBEYXRlID0+ICRQYXJhbXtWYWx1ZX0gLiAnOjAwJywKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfSB8fCAnJzsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgbXkgJERheSAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6RGF5JyApOwogICAgbXkgJE1vbnRoICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6TW9udGgnICk7CiAgICBteSAkWWVhciAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpZZWFyJyApOwogICAgbXkgJEhvdXIgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6SG91cicgKSAgIHx8IDA7CiAgICBteSAkTWludXRlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpNaW51dGUnICkgfHwgMDsKCiAgICBteSAlUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgWWVhciAgICAgPT4gJFllYXIsCiAgICAgICAgICAgIE1vbnRoICAgID0+ICRNb250aCwKICAgICAgICAgICAgRGF5ICAgICAgPT4gJERheSwKICAgICAgICAgICAgSG91ciAgICAgPT4gJEhvdXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1pZG5pZ2h0CiAgICAgICAgICAgIE1pbnV0ZSAgID0+ICRNaW51dGUsCiAgICAgICAgICAgIFRpbWVab25lID0+ICRQcmVmZXJlbmNlc3tVc2VyVGltZVpvbmV9IHx8ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpLT5Vc2VyRGVmYXVsdFRpbWVab25lR2V0KCksCiAgICAgICAgfSwKICAgICk7CgogICAgIyBDb252ZXJ0IHN0YXJ0IHRpbWUgdG8gbG9jYWwgc3lzdGVtIHRpbWUgem9uZS4KICAgICREYXRlVGltZU9iamVjdC0+VG9PVE9CT1RpbWVab25lKCk7CiAgICBteSAkRGF0ZVRpbWVTZXR0aW5ncyA9ICREYXRlVGltZU9iamVjdC0+R2V0KCk7CgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRGF0ZVRpbWVTZXR0aW5ncykgKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9IHNwcmludGYgJyUwMmQtJTAyZC0lMDJkICUwMmQ6JTAyZCcsICREYXRlVGltZVNldHRpbmdzLT57WWVhcn0sICREYXRlVGltZVNldHRpbmdzLT57TW9udGh9LCAkRGF0ZVRpbWVTZXR0aW5ncy0+e0RheX0sCiAgICAgICAgICAgICREYXRlVGltZVNldHRpbmdzLT57SG91cn0sICREYXRlVGltZVNldHRpbmdzLT57TWludXRlfTsKICAgIH0KCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJEZvcm1EYXRhe1ZhbHVlfSApIHsKICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICB9CgogICAgIyBTYW5pdHkgY2hlY2sgb2YgdGhlIGFzc2VtYmxlZCB0aW1lc3RhbXAKICAgIGlmICggJEZvcm1EYXRhe1ZhbHVlfSApIHsKCiAgICAgICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEZvcm1EYXRhe1ZhbHVlfSAuICc6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggISREYXRlVGltZU9iamVjdCApIHsKICAgICAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1oZWFkMiBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAnMjAwNy0wMy0yNiAxMjowMCcsICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEludmFsaWQgPSAkUGFyYW17SW52YWxpZH07CgogICAgbXkgJVZhbHVlczsKICAgIG15ICRDbGFzczsKICAgIGlmICggJFBhcmFte1ZhbHVlfSB8fCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9ICkgewogICAgICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX0gfHwgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKCiAgICAgICAgaWYgKCAkVmFsdWUgPX4gL14oXGRcZFxkXGQpLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKSQvaSApIHsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpZZWFyJyB9ICAgPSAkMTsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpNb250aCcgfSAgPSAkMjsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpEYXknIH0gICAgPSAkMzsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpIb3VyJyB9ICAgPSAkNDsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpNaW51dGUnIH0gPSAkNTsKCiAgICAgICAgICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICAgICAgICAgJENsYXNzID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAkU3RyaW5nID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgUHJlZml4ICAgICAgICAgICA9PiAkUGFyYW17S2V5fSAuICc6OicsCiAgICAgICAgRm9ybWF0ICAgICAgICAgICA9PiAnRGF0ZUlucHV0Rm9ybWF0TG9uZycsCiAgICAgICAgWWVhclBlcmlvZFBhc3QgICA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntZZWFyUGVyaW9kUGFzdH0gICB8fCAxMCwKICAgICAgICBZZWFyUGVyaW9kRnV0dXJlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1llYXJQZXJpb2RGdXR1cmV9IHx8IDEwLAogICAgICAgICVWYWx1ZXMsCiAgICAgICAgJFBhcmFte0tleX0gLiAnOjonIC4gJ0NsYXNzJyA9PiAkQ2xhc3MsCiAgICAgICAgVmFsaWRhdGUgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRVc2VkOwogICAgbXkgJFN0YXJ0TWludXRlOwogICAgbXkgJFN0YXJ0SG91cjsKICAgIG15ICRTdGFydERheTsKICAgIG15ICRTdGFydE1vbnRoOwogICAgbXkgJFN0YXJ0WWVhcjsKICAgIG15ICRTdG9wTWludXRlOwogICAgbXkgJFN0b3BIb3VyOwogICAgbXkgJFN0b3BEYXk7CiAgICBteSAkU3RvcE1vbnRoOwogICAgbXkgJFN0b3BZZWFyOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgaWYgKCAkUGFyYW17VmFsdWV9ICYmIHJlZiAkUGFyYW17VmFsdWV9IGVxICdIQVNIJyApIHsKICAgICAgICAkVXNlZCAgICAgICAgPSAkUGFyYW17VmFsdWV9LT57ICRQYXJhbXtLZXl9IH07CiAgICAgICAgJFN0YXJ0TWludXRlID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6TWludXRlJyB9OwogICAgICAgICRTdGFydEhvdXIgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OkhvdXInIH07CiAgICAgICAgJFN0YXJ0RGF5ICAgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6RGF5JyB9OwogICAgICAgICRTdGFydE1vbnRoICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6Ok1vbnRoJyB9OwogICAgICAgICRTdGFydFllYXIgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OlllYXInIH07CiAgICAgICAgJFN0b3BNaW51dGUgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpNaW51dGUnIH07CiAgICAgICAgJFN0b3BIb3VyICAgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpIb3VyJyB9OwogICAgICAgICRTdG9wRGF5ICAgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6RGF5JyB9OwogICAgICAgICRTdG9wTW9udGggICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6TW9udGgnIH07CiAgICAgICAgJFN0b3BZZWFyICAgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpZZWFyJyB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFVzZWQgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgICAgICAkU3RhcnRNaW51dGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6TWludXRlJyApIHx8IDAwOwogICAgICAgICRTdGFydEhvdXIgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpIb3VyJyApCiAgICAgICAgICAgIHx8IDAwOwogICAgICAgICRTdGFydERheSAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OkRheScgKTsKICAgICAgICAkU3RhcnRNb250aCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpNb250aCcgKTsKICAgICAgICAkU3RhcnRZZWFyICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpZZWFyJyApOwogICAgICAgICRTdG9wTWludXRlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6TWludXRlJyApCiAgICAgICAgICAgIHx8IDU5OwogICAgICAgICRTdG9wSG91ciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OkhvdXInICkKICAgICAgICAgICAgfHwgMjM7CiAgICAgICAgJFN0b3BEYXkgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OkRheScgKTsKICAgICAgICAkU3RvcE1vbnRoID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6TW9udGgnICk7CiAgICAgICAgJFN0b3BZZWFyICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OlllYXInICk7CiAgICB9CgogICAgaWYgKAogICAgICAgICRVc2VkCiAgICAgICAgJiYgJFN0YXJ0TWludXRlICYmICRTdGFydEhvdXIgJiYgJFN0YXJ0RGF5ICYmICRTdGFydE1vbnRoICYmICRTdGFydFllYXIKICAgICAgICAmJiAkU3RvcE1pbnV0ZSAgJiYgJFN0b3BIb3VyICAmJiAkU3RvcERheSAgJiYgJFN0b3BNb250aCAgJiYgJFN0b3BZZWFyCiAgICAgICAgKQogICAgewoKICAgICAgICAjIGFkZCBob3VyLCBtaW51dGVzIGFuZCBzZWNvbmRzLAogICAgICAgICMgc28gdGhhdCB0aGF0IHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QgZGF5IGlzIHNlbGVjdGVkIGFzIHdlbGwKICAgICAgICBteSAkU3RhcnREYXRlID0gc3ByaW50ZiAnJTAyZC0lMDJkLSUwMmQgJTAyZDolMDJkOjAwJwogICAgICAgICAgICAsICRTdGFydFllYXIsICRTdGFydE1vbnRoLCAkU3RhcnREYXksICRTdGFydEhvdXIsICRTdGFydE1pbnV0ZTsKICAgICAgICBteSAkU3RvcERhdGUgPSBzcHJpbnRmICclMDJkLSUwMmQtJTAyZCAlMDJkOiUwMmQ6NTknCiAgICAgICAgICAgICwgJFN0b3BZZWFyLCAkU3RvcE1vbnRoLCAkU3RvcERheSwgJFN0b3BIb3VyLCAkU3RvcE1pbnV0ZTsKCiAgICAgICAgcmV0dXJuIHsgJy1iZXR3ZWVuJyA9PiBbICRTdGFydERhdGUsICRTdG9wRGF0ZSBdIH07CiAgICB9CgogICAgcmV0dXJuIFtdOyAgICAjIG5vIGNvbmRpdGlvbnMgYnkgZGVmYXVsdAp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgICAgICA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSAgICAgPT4gJEl0ZW1SZWYsCiAgICAgICAgT3B0aW9uYWwgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgbXkgJEtleSAgICAgICAgID0gJFBhcmFte0tleX07CiAgICBteSAkUHJlZml4U3RhcnQgPSAkS2V5IC4gJzo6VGltZVN0YXJ0OjonOwogICAgbXkgJFByZWZpeFN0b3AgID0gJEtleSAuICc6OlRpbWVTdG9wOjonOwoKICAgICMgZ2V0IHRpbWUgcmVsYXRlZCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJUdldFBhcmFtID0gJXsgJFBhcmFte1ZhbHVlfSB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApOwogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCAkUHJlZml4U3RhcnQsICRQcmVmaXhTdG9wICkgewogICAgICAgICAgICBmb3IgbXkgJFBhcnQgKHF3KCBZZWFyIE1vbnRoIERheSApKSB7CiAgICAgICAgICAgICAgICBteSAkUGFyYW1LZXkgPSAkVGltZVR5cGUgLiAkUGFydDsKICAgICAgICAgICAgICAgIG15ICRQYXJhbVZhbCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbUtleSApOwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlIHNwYWNlIG9uIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAgICAgICBpZiAoJFBhcmFtVmFsKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxzKyBceiB9e314bXM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzdG9yZSBpbiAlR2V0UGFyYW0KICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1LZXl9ID0gJFBhcmFtVmFsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBCdWlsZCBzZWxlY3Rpb24gZm9yIHRoZSBzdGFydCBhbmQgc3RvcCB0aW1lLgogICAgbXkgJFRpbWVTdGFydFNlbGVjdGlvblN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBQcmVmaXggICAgICAgICAgID0+ICRQcmVmaXhTdGFydCwKICAgICAgICBGb3JtYXQgICAgICAgICAgID0+ICdEYXRlSW5wdXRGb3JtYXRMb25nJywKICAgICAgICBZZWFyUGVyaW9kUGFzdCAgID0+IDEwLAogICAgICAgIFllYXJQZXJpb2RGdXR1cmUgPT4gMTAsCiAgICAgICAgJUdldFBhcmFtLAogICAgKTsKICAgIG15ICRUaW1lU3RvcFNlbGVjdGlvblN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBPcHRpb25hbCAgICAgICAgID0+IDAsCiAgICAgICAgUHJlZml4ICAgICAgICAgICA9PiAkUHJlZml4U3RvcCwKICAgICAgICBGb3JtYXQgICAgICAgICAgID0+ICdEYXRlSW5wdXRGb3JtYXRMb25nJywKICAgICAgICBZZWFyUGVyaW9kUGFzdCAgID0+IDEwLAogICAgICAgIFllYXJQZXJpb2RGdXR1cmUgPT4gMTAsCiAgICAgICAgJUdldFBhcmFtLAogICAgKTsKCiAgICBteSAkQ2hlY2tib3ggPSBxcXs8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSIkS2V5IiB2YWx1ZT0iMSIvPn07CiAgICBpZiAoICRQYXJhbXtPcHRpb25hbH0gKSB7CiAgICAgICAgJENoZWNrYm94ID0gcXF7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSIkS2V5IiB2YWx1ZT0iMSIvPn07CiAgICB9CgogICAgbXkgJEJldHdlZW4gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0JldHdlZW4nKTsKICAgIG15ICRBbmQgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdhbmQnKTsKCiAgICByZXR1cm4gIjxkaXY+ICRDaGVja2JveCAkQmV0d2VlbiAkVGltZVN0YXJ0U2VsZWN0aW9uU3RyaW5nIDwvZGl2PiIKICAgICAgICAuICI8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAyN3B4O1wiPiAkQW5kIDwvc3Bhbj4gJFRpbWVTdG9wU2VsZWN0aW9uU3RyaW5nIjsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutDummy.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RHVtbXk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6OkNvbmZpZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXREdW1teSAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBkdW1teSBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RHVtbXktPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKCk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtJdGVtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSXRlbSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkUGFyYW17VmFsdWV9ID0gJyc7CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHRyYW5zbGF0ZQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0gKSB7CiAgICAgICAgJFBhcmFte1ZhbHVlfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFBhcmFte1ZhbHVlfSApOwogICAgfQoKICAgIG15ICRMaW5rRmVhdHVyZSA9IDE7CgogICAgIyBkbyBub3QgdHJhbnNmb3JtIGxpbmtzIGluIHByaW50IHZpZXcKICAgIGlmICggJFBhcmFte1ByaW50fSApIHsKICAgICAgICAkTGlua0ZlYXR1cmUgPSAwOwogICAgfQoKICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICRQYXJhbXtWYWx1ZX0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgIFRleHQgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAkTGlua0ZlYXR1cmUsCiAgICApOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgpOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJEZvcm1EYXRhe1ZhbHVlfSApIHsKICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICB9CgogICAgcmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1oZWFkMiBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnOwogICAgfQoKICAgIG15ICRDbGFzcyAgICA9ICcnOwogICAgbXkgJFNpemUgICAgID0gJ1c1MHBjJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlkfTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KICAgICRDbGFzcyAuPSAnICcgLiAkU2l6ZTsKICAgIG15ICRTdHJpbmcgPSAiPHNwYW4gc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGhlaWdodDogMS4zZW07XCI+IjsKICAgICRTdHJpbmcKICAgICAgICAuPSAiPGlucHV0IHN0eWxlPVwiZGlzcGxheTpub25lO1wiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIiRQYXJhbXtLZXl9XCIgY2xhc3M9XCIkQ2xhc3NcIiAiOwoKICAgIGlmICgkSXRlbUlkKSB7CiAgICAgICAgJFN0cmluZyAuPSAiaWQ9XCIkSXRlbUlkXCIgIjsKICAgIH0KCiAgICBpZiAoJFZhbHVlKSB7CgogICAgICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgICAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICAgICAjIHRyYW5zbGF0ZQogICAgICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFZhbHVlKTsKICAgICAgICB9CgogICAgICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAkU3RyaW5nIC49ICJ2YWx1ZT1cIiRWYWx1ZVwiICI7CgogICAgIyBhZGQgbWF4aW11bSBsZW5ndGgKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57TWF4TGVuZ3RofSApIHsKICAgICAgICAkU3RyaW5nIC49ICJtYXhsZW5ndGg9XCIkUGFyYW17SXRlbX0tPntJbnB1dH0tPntNYXhMZW5ndGh9XCIgIjsKICAgIH0KCiAgICAkU3RyaW5nIC49ICcvPiA8L3NwYW4+JzsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KCk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgcmV0dXJuIFtdOwp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgpOwoKPWN1dAoKc3ViIFNlYXJjaElucHV0Q3JlYXRlIHsKICAgIHJldHVybiAnJm5ic3A7JzsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutGeneralCatalog.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0R2VuZXJhbENhdGFsb2c7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRHZW5lcmFsQ2F0YWxvZyAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgJEJhY2tlbmRPYmplY3QgPSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEdlbmVyYWxDYXRhbG9nLT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtJdGVtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSXRlbSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICRQYXJhbXtWYWx1ZX0gLy89ICcnOwoKICAgICMgdHJhbnNsYXRlCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1RyYW5zbGF0aW9ufSApIHsKICAgICAgICAkUGFyYW17VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRQYXJhbXtWYWx1ZX0gKTsKICAgIH0KCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgIyBzZXQgaW52YWxpZCBwYXJhbQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgfQoKICAgIHJldHVybiBcJUZvcm1EYXRhOwp9Cgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ1NTQ2xhc3MgPSAnTW9kZXJuaXplJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlkfTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENTU0NsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDU1NDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIHRyYW5zbGF0aW9uIG9uIG9yIG9mZgogICAgbXkgJFRyYW5zbGF0aW9uID0gMDsKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICRUcmFuc2xhdGlvbiA9IDE7CiAgICB9CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDbGFzc30gfHwgJycsCiAgICApOwoKICAgICMgcmV2ZXJzZSB0aGUgY2xhc3MgbGlzdAogICAgbXkgJVJldmVyc2VDbGFzc0xpc3QgPSByZXZlcnNlICV7JENsYXNzTGlzdH07CgogICAgbXkgJFNlbGVjdGVkSUQ7CgogICAgIyBnZXQgdGhlIGN1cnJlbnQgdmFsdWUKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRTZWxlY3RlZElEID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KCiAgICAjIGdldCB0aGUgZGVmYXVsdCBpZCBieSBkZWZhdWx0IHZhbHVlCiAgICBlbHNlIHsKICAgICAgICAkU2VsZWN0ZWRJRCA9ICRSZXZlcnNlQ2xhc3NMaXN0eyAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnIH0gfHwgJyc7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBJRCAgICAgICAgICAgPT4gJEl0ZW1JZCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gJFRyYW5zbGF0aW9uLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkU2VsZWN0ZWRJRCwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJENTU0NsYXNzLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBLZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15IEBWYWx1ZXM7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgQFZhbHVlcyA9IEB7ICRQYXJhbXtWYWx1ZX0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBWYWx1ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwogICAgfQoKICAgIHJldHVybiBcQFZhbHVlczsKfQoKPWhlYWQyIFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFZhbHVlcyA9ICRTZWxmLT5TZWFyY2hGb3JtRGF0YUdldCglUGFyYW0pOwoKICAgICMgdHJhbnNsYXRpb24gb24gb3Igb2ZmCiAgICBteSAkVHJhbnNsYXRpb24gPSAwOwogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0gKSB7CiAgICAgICAgJFRyYW5zbGF0aW9uID0gMTsKICAgIH0KCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e0NsYXNzfSB8fCAnJywKICAgICk7CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uID0+ICRUcmFuc2xhdGlvbiwKICAgICAgICBTZWxlY3RlZElEICA9PiAkVmFsdWVzLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutInteger.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0SW50ZWdlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRJbnRlZ2VyIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGludGVnZXIgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgJEJhY2tlbmRPYmplY3QgPSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEludGVnZXItPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRQYXJhbXtWYWx1ZX0gPSAnJzsKICAgIH0KCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgIyBzZXQgaW52YWxpZCBwYXJhbQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgISRGb3JtRGF0YXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgfQoKICAgIHJldHVybiBcJUZvcm1EYXRhOwp9Cgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBtaW4sIG1heCBhbmQgZGVmYXVsdAogICAgbXkgJFZhbHVlTWluID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVNaW59IC8vIDE7CiAgICBteSAkVmFsdWVNYXggPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZU1heH0gLy8gMTsKICAgIGlmICggJFZhbHVlTWluID4gJFZhbHVlTWF4ICkgewogICAgICAgICRWYWx1ZU1pbiA9ICRWYWx1ZU1heDsKICAgIH0KICAgIGlmICgKICAgICAgICAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9CiAgICAgICAgJiYgKAogICAgICAgICAgICAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IDwgJFZhbHVlTWluCiAgICAgICAgICAgIHx8ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gPiAkVmFsdWVNYXgKICAgICAgICApCiAgICAgICAgKQogICAgewogICAgICAgICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gPSAnJzsKICAgIH0KCiAgICAjIGNyZWF0ZSBkYXRhIGFycmF5CiAgICBteSAkSW50ZWdlckxpc3QgPSBbXTsKICAgIGZvciBteSAkQ291bnRlciAoICRWYWx1ZU1pbiAuLiAkVmFsdWVNYXggKSB7CiAgICAgICAgcHVzaCBAeyRJbnRlZ2VyTGlzdH0sICRDb3VudGVyOwogICAgfQoKICAgICMgZ2VuZXJhdGUgc3RyaW5nCiAgICBteSAkU3RyaW5nID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gJEludGVnZXJMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1ZhbHVlfSB8fCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnLAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBTZWFyY2hGb3JtRGF0YUdldCgpCgpnZXQgc2VhcmNoIGZvcm0gZGF0YQoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17S2V5fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgS2V5IScKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15IEBWYWx1ZXM7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgQFZhbHVlcyA9IEB7ICRQYXJhbXtWYWx1ZX0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBWYWx1ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwogICAgfQoKICAgIHJldHVybiBcQFZhbHVlczsKfQoKPWhlYWQyIFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgbWluLCBtYXgKICAgIG15ICRWYWx1ZU1pbiA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlTWlufSAvLyAxOwogICAgbXkgJFZhbHVlTWF4ID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVNYXh9IC8vIDE7CiAgICBpZiAoICRWYWx1ZU1pbiA+ICRWYWx1ZU1heCApIHsKICAgICAgICAkVmFsdWVNaW4gPSAkVmFsdWVNYXg7CiAgICB9CgogICAgIyBzZXQgcHJlc2VsZWN0ZWQgdmFsdWUsIGVpdGhlciBmcm9tIHByZXZpb3VzIHNlbGVjdGlvbiBvciB0aGUgZGVmYXVsdAogICAgbXkgJFZhbHVlcyA9ICRTZWxmLT5TZWFyY2hGb3JtRGF0YUdldCglUGFyYW0pOwoKICAgICMgY2hlY2sgd2hldGhlciB0aGUgcHJlc2VsZWN0ZWQgdmFsdWUgaXMgd2l0aGluIHRoZSB2YWxpZCByYW5nZQogICAgbXkgQEZpbHRlcmVkVmFsdWVzOwogICAgVkFMVUU6CiAgICBmb3IgbXkgJFZhbHVlICggQHskVmFsdWVzfSApIHsKICAgICAgICBuZXh0IFZBTFVFIGlmICFkZWZpbmVkICRWYWx1ZTsKICAgICAgICBuZXh0IFZBTFVFIGlmICEkVmFsdWU7CiAgICAgICAgbmV4dCBWQUxVRSBpZiAkVmFsdWUgPCAkVmFsdWVNaW47CiAgICAgICAgbmV4dCBWQUxVRSBpZiAkVmFsdWUgPiAkVmFsdWVNYXg7CgogICAgICAgIHB1c2ggQEZpbHRlcmVkVmFsdWVzLCAkVmFsdWU7CiAgICB9CgogICAgIyBjcmVhdGUgZGF0YSBhcnJheQogICAgbXkgQEludGVnZXJMaXN0ID0gKCAkVmFsdWVNaW4gLi4gJFZhbHVlTWF4ICk7CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFxASW50ZWdlckxpc3QsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgID0+IFxARmlsdGVyZWRWYWx1ZXMsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutText.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VGV4dDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JwopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VGV4dCAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiB0ZXh0IG9iamVjdHMKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRUZXh0LT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtJdGVtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSXRlbSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkUGFyYW17VmFsdWV9ID0gJyc7CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHRyYW5zbGF0ZQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0gKSB7CiAgICAgICAgJFBhcmFte1ZhbHVlfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFBhcmFte1ZhbHVlfSApOwogICAgfQoKICAgIG15ICRMaW5rRmVhdHVyZSA9IDE7CgogICAgIyBkbyBub3QgdHJhbnNmb3JtIGxpbmtzIGluIHByaW50IHZpZXcKICAgIGlmICggJFBhcmFte1ByaW50fSApIHsKICAgICAgICAkTGlua0ZlYXR1cmUgPSAwOwogICAgfQoKICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICRQYXJhbXtWYWx1ZX0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgIFRleHQgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAkTGlua0ZlYXR1cmUsCiAgICApOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhZGVmaW5lZCAkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgIH0KCiAgICAjIHZhbHVlIHdhcyBlbnRlcmVkIGluIHRoZSBmb3JtLCBhIHJlZ2V4IGlzIGRlZmluZWQgYW5kIHRoZSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnZXgKICAgIGlmICgKICAgICAgICAkRm9ybURhdGF7VmFsdWV9CiAgICAgICAgJiYgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVnRXh9CiAgICAgICAgJiYgJEZvcm1EYXRhe1ZhbHVlfSAhfiBteyAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWdFeH0gfXhtcwogICAgICAgICkKICAgIHsKCiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ICAgICAgICAgICA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1JlZ0V4RXJyb3JNZXNzYWdlfSA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlZ0V4RXJyb3JNZXNzYWdlfTsKICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnOwogICAgfQoKICAgIG15ICRDbGFzcyAgICA9ICcnOwogICAgbXkgJFNpemUgICAgID0gJ1c1MHBjJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlkfTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KICAgICRDbGFzcyAuPSAnICcgLiAkU2l6ZTsKICAgIG15ICRTdHJpbmcgPSAiPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIiRQYXJhbXtLZXl9XCIgY2xhc3M9XCIkQ2xhc3NcIiAiOwoKICAgIGlmICgkSXRlbUlkKSB7CiAgICAgICAgJFN0cmluZyAuPSAiaWQ9XCIkSXRlbUlkXCIgIjsKICAgIH0KCiAgICBpZiAoJFZhbHVlKSB7CgogICAgICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgICAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICAgICAjIHRyYW5zbGF0ZQogICAgICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFZhbHVlKTsKICAgICAgICB9CgogICAgICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAkU3RyaW5nIC49ICJ2YWx1ZT1cIiRWYWx1ZVwiICI7CgogICAgIyBhZGQgbWF4aW11bSBsZW5ndGgKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57TWF4TGVuZ3RofSApIHsKICAgICAgICAkU3RyaW5nIC49ICJtYXhsZW5ndGg9XCIkUGFyYW17SXRlbX0tPntJbnB1dH0tPntNYXhMZW5ndGh9XCIgIjsKICAgIH0KCiAgICAkU3RyaW5nIC49ICcvPiAnOwoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgU2VhcmNoRm9ybURhdGFHZXQoKQoKZ2V0IHNlYXJjaCBmb3JtIGRhdGEKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17S2V5fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgS2V5IScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkVmFsdWU7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CiAgICB9CiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmFsdWUgPSAkU2VsZi0+U2VhcmNoRm9ybURhdGFHZXQoJVBhcmFtKTsKICAgIGlmICggIWRlZmluZWQgJFZhbHVlICkgewogICAgICAgICRWYWx1ZSA9ICcnOwogICAgfQoKICAgIG15ICRTdHJpbmcgPSBxcXs8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iJFBhcmFte0tleX0iIHZhbHVlPSIkVmFsdWUiIGNsYXNzPSJXNTBwYyIgPn07CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/LayoutTextArea.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VGV4dEFyZWE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dFRleHRBcmVhIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIHRleHRhcmVhIG9iamVjdHMKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRUZXh0QXJlYS0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIE91dHB1dFN0cmluZ0NyZWF0ZSgpCgpjcmVhdGUgb3V0cHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIE91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17SXRlbX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFBhcmFte1ZhbHVlfSA9ICcnOwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyB0cmFuc2xhdGUKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICRQYXJhbXtWYWx1ZX0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRQYXJhbXtWYWx1ZX0gKTsKICAgIH0KCiAgICBteSAkTGlua0ZlYXR1cmUgICAgPSAxOwogICAgbXkgJEhUTUxSZXN1bHRNb2RlID0gMTsKCiAgICAjIGRvIG5vdCB0cmFuc2Zvcm0gbGlua3MgaW4gcHJpbnQgdmlldwogICAgaWYgKCAkUGFyYW17UHJpbnR9ICkgewogICAgICAgICRMaW5rRmVhdHVyZSAgICA9IDA7CiAgICAgICAgJEhUTUxSZXN1bHRNb2RlID0gMDsKICAgIH0KCiAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAkUGFyYW17VmFsdWV9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkUGFyYW17VmFsdWV9LAogICAgICAgIEhUTUxSZXN1bHRNb2RlID0+ICRIVE1MUmVzdWx0TW9kZSwKICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAkTGlua0ZlYXR1cmUsCiAgICApOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhZGVmaW5lZCAkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgIH0KCiAgICAjIHZhbHVlIHdhcyBlbnRlcmVkIGluIHRoZSBmb3JtLCBhIHJlZ2V4IGlzIGRlZmluZWQgYW5kIHRoZSB2YWx1ZSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnZXgKICAgIGlmICgKICAgICAgICAkRm9ybURhdGF7VmFsdWV9CiAgICAgICAgJiYgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVnRXh9CiAgICAgICAgJiYgJEZvcm1EYXRhe1ZhbHVlfSAhfiBteyAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWdFeH0gfXhtcwogICAgICAgICkKICAgIHsKCiAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ICAgICAgICAgICA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1JlZ0V4RXJyb3JNZXNzYWdlfSA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlZ0V4RXJyb3JNZXNzYWdlfTsKICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbHMgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDb2xzfSB8fCA1ODsKICAgIG15ICRSb3dzID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57Um93c30gfHwgMTA7CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnOwogICAgfQoKICAgIG15ICRDbGFzcyAgICA9ICdXNTBwYyc7CiAgICBteSAkUmVxdWlyZWQgPSAkUGFyYW17UmVxdWlyZWR9OwogICAgbXkgJEludmFsaWQgID0gJFBhcmFte0ludmFsaWR9OwogICAgbXkgJEl0ZW1JZCAgID0gJFBhcmFte0l0ZW1JZH07CgogICAgaWYgKCRSZXF1aXJlZCkgewogICAgICAgICRDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAkQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyB0cmFuc2xhdGUKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRWYWx1ZSk7CiAgICB9CiAgICBteSAkU3RyaW5nID0gIjx0ZXh0YXJlYSBuYW1lPVwiJFBhcmFte0tleX1cIiBpZD1cIiRJdGVtSWRcIiBjb2xzPVwiJENvbHNcIiByb3dzPVwiJFJvd3NcIiBjbGFzcz1cIiRDbGFzc1wiPiRWYWx1ZTwvdGV4dGFyZWE+IjsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBLZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15ICRWYWx1ZTsKICAgIGlmICggJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgIH0KICAgIHJldHVybiAkVmFsdWU7Cn0KCj1oZWFkMiBTZWFyY2hJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBzZWFyY2ggaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWYWx1ZSA9ICRTZWxmLT5TZWFyY2hGb3JtRGF0YUdldCglUGFyYW0pOwogICAgaWYgKCAhZGVmaW5lZCAkVmFsdWUgKSB7CiAgICAgICAgJFZhbHVlID0gJyc7CiAgICB9CgogICAgbXkgJFN0cmluZyA9IHFxezxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSIkUGFyYW17S2V5fSIgdmFsdWU9IiRWYWx1ZSIgY2xhc3M9Ilc1MHBjIj59OwoKICAgIHJldHVybiAkU3RyaW5nOwp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/MenuGeneric.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpCYXNlJyk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpMYW5ndWFnZScsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKKTsKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW19ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb25maWdJdGVtIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ3JhbnQgYWNjZXNzIGJ5IGRlZmF1bHQKICAgIG15ICRBY2Nlc3MgPSAxOwoKICAgICMgZ2V0IGFjdGlvbgogICAgbXkgJEFjdGlvbiA9ICRQYXJhbXtDb25maWd9LT57QWN0aW9ufTsKICAgIGlmICggJEFjdGlvbiBlcSAnQWdlbnRMaW5rT2JqZWN0JyApIHsKCiAgICAgICAgIyBUaGUgTGluay1saW5rIGlzIGEgc3BlY2lhbCBjYXNlLCBhcyBpdCBpcyBub3Qgc3BlY2lmaWMgdG8gSVRTTUNvbmZpZ0l0ZW0uCiAgICAgICAgIyBBcyBhIHdvcmthcm91bmQgd2UgaGFyZGNvZGUgdGhhdCBBZ2VudExpbmtPYmplY3QgaXMgdHJlYXRlZCBsaWtlIEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAgICAgJEFjdGlvbiA9ICdBZ2VudElUU01Db25maWdJdGVtRWRpdCc7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgZ3JvdXBzCiAgICBteSAkR3JvdXBzUm8gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+eyRBY3Rpb259LT57R3JvdXBSb30gfHwgW107CiAgICBteSAkR3JvdXBzUncgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+eyRBY3Rpb259LT57R3JvdXB9ICAgfHwgW107CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgIGlmICggJEFjdGlvbiAmJiAoIEB7JEdyb3Vwc1JvfSB8fCBAeyRHcm91cHNSd30gKSApIHsKCiAgICAgICAgIyBkZW55IGFjY2VzcyBieSBkZWZhdWx0LCB3aGVuIHRoZXJlIGFyZSBncm91cHMgdG8gY2hlY2sKICAgICAgICAkQWNjZXNzID0gMDsKCiAgICAgICAgIyBjaGVjayByZWFkIG9ubHkgZ3JvdXBzCiAgICAgICAgUk9HUk9VUDoKICAgICAgICBmb3IgbXkgJFJvR3JvdXAgKCBAeyRHcm91cHNSb30gKSB7CgogICAgICAgICAgICBuZXh0IFJPR1JPVVAgaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uQ2hlY2soCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRSb0dyb3VwLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdybycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCBhY2Nlc3MKICAgICAgICAgICAgJEFjY2VzcyA9IDE7CiAgICAgICAgICAgIGxhc3QgUk9HUk9VUDsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVhZCB3cml0ZSBncm91cHMKICAgICAgICBSV0dST1VQOgogICAgICAgIGZvciBteSAkUndHcm91cCAoIEB7JEdyb3Vwc1J3fSApIHsKCiAgICAgICAgICAgIG5leHQgUldHUk9VUCBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJFJ3R3JvdXAsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2V0IGFjY2VzcwogICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgbGFzdCBSV0dST1VQOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFBhcmFte0NvdW50ZXJ9IGlmICEkQWNjZXNzOwoKICAgICMgb3V0cHV0IG1lbnUgYmxvY2sKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdNZW51JyApOwoKICAgICMgb3V0cHV0IG1lbnUgaXRlbQogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWVudUl0ZW0nLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7ICRQYXJhbXtDb25maWdJdGVtfSB9LAogICAgICAgICAgICAleyAkUGFyYW17Q29uZmlnfSB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgY2hlY2sgaWYgYSBkaWFsb2cgaGFzIHRvIGJlIHNob3duCiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57RGlhbG9nVGl0bGV9ICkgewogICAgICAgIG15ICRDb25maWdPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAgICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICAgICAjIFJlcGxhY2UgdGhlIHRlbXBsYXRlIHRvb2xraXQgZXhwcmVzc2lvbnMgd2l0aCB0aGUgZmluYWwgdmFsdWUuCiAgICAgICAgbXkgJUpTRGF0YSA9ICgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAleyAkUGFyYW17Q29uZmlnSXRlbX0gfSwKICAgICAgICAgICAgJXsgJFBhcmFte0NvbmZpZ30gfSwKICAgICAgICApOwoKICAgICAgICBkZWxldGUgJEpTRGF0YXtDb25maWd9OwogICAgICAgIGRlbGV0ZSAkSlNEYXRhe0NvbmZpZ0l0ZW19OwoKICAgICAgICAkSlNEYXRhe0VsZW1lbnRTZWxlY3Rvcn0gICAgICAgICAgICA9fiBzL1xbJVxzKkRhdGFcLk1lbnVJRFxzKlx8XHMqaHRtbFxzKiVcXS8kSlNEYXRhe01lbnVJRH0vaTsKICAgICAgICAkSlNEYXRhe0RpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZ30gICA9fiBzL1xbJVxzKkRhdGFcLkNvbmZpZ0l0ZW1JRFxzKlx8XHMqaHRtbFxzKiVcXS8kSlNEYXRhe0NvbmZpZ0l0ZW1JRH0vaTsKICAgICAgICAkSlNEYXRhe0NvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nfSA9fiBzL1xbJVxzKkRhdGFcLkNvbmZpZ0l0ZW1JRFxzKlx8XHMqaHRtbFxzKiVcXS8kSlNEYXRhe0NvbmZpZ0l0ZW1JRH0vaTsKCiAgICAgICAgJEpTRGF0YXtEaWFsb2dUaXRsZX0gPX4gcy9cWyVccypUcmFuc2xhdGVcKCIoLiopIlwpXHMqXHxccypodG1sXHMqJVxdLyRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCQxKS9laTsKICAgICAgICAkSlNEYXRhe0RpYWxvZ1RpdGxlfSA9fiBzL1xbJVxzKkNvbmZpZ1woIiguKikiXClccyolXF0vJENvbmZpZ09iamVjdC0+R2V0KCQxKS9laTsKICAgICAgICAkSlNEYXRhe0RpYWxvZ1RpdGxlfSA9fiBzL1xbJVxzKkRhdGEuTnVtYmVyXHMqXHxccypodG1sXHMqJVxdLyRKU0RhdGF7TnVtYmVyfS9laTsKCiAgICAgICAgJEpTRGF0YXtNZW51SUR9ID0gJ01lbnUnIC4gJEpTRGF0YXtNZW51SUR9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNU2hvd0NvbmZpcm1EaWFsb2cuJyAuICRQYXJhbXtNZW51SUR9LAogICAgICAgICAgICBWYWx1ZSA9PiBcJUpTRGF0YSwKICAgICAgICApOwogICAgfQoKICAgICRQYXJhbXtDb3VudGVyfSsrOwoKICAgIHJldHVybiAkUGFyYW17Q291bnRlcn07Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/CustomerOverviewSmall.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6Q3VzdG9tZXJPdmVydmlld1NtYWxsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6Okxhbmd1YWdlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SlNPTicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb2x1bW5GaWx0ZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBcJVBhcmFtOwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBzZXQgcHJlZiBmb3IgY29sdW1ucyBrZXkKICAgICRTZWxmLT57UHJlZktleUNvbHVtbnN9ID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZCcgLiAnLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn07CgogICAgIyBsb2FkIGJhY2tlbmQgY29uZmlnCiAgICBteSAkQmFja2VuZENvbmZpZ0tleSA9ICdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OicgLiAkU2VsZi0+e0FjdGlvbn07CiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJEJhY2tlbmRDb25maWdLZXkpOwoKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+R2V0UHJlZmVyZW5jZXMoCiAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzZXQgc3RvcmVkIGZpbHRlcnMgaWYgcHJlc2VudAogICAgbXkgJFN0b3JlZEZpbHRlcnNLZXkgPSAnVXNlclN0b3JlZEZpbHRlckNvbHVtbnMtJyAuICRTZWxmLT57QWN0aW9ufSAuICctJyAuICRTZWxmLT57RmlsdGVyfTsKICAgIGlmICggJFByZWZlcmVuY2VzeyRTdG9yZWRGaWx0ZXJzS2V5fSApIHsKICAgICAgICBteSAkU3RvcmVkRmlsdGVycyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyktPkRlY29kZSgKICAgICAgICAgICAgRGF0YSA9PiAkUHJlZmVyZW5jZXN7JFN0b3JlZEZpbHRlcnNLZXl9LAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfSA9ICRTdG9yZWRGaWx0ZXJzOwogICAgfQoKICAgICMgY2hlY2sgZm9yIGZpbHRlcgogICAgbXkgJEZpbHRlck5hbWUgPSBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntGaWx0ZXJzfS0+eyAkU2VsZi0+e0ZpbHRlcn0gfSApID8gJFNlbGYtPntGaWx0ZXJzfS0+eyAkU2VsZi0+e0ZpbHRlcn0gfS0+e05hbWV9IDogJ0FsbCc7CgogICAgIyBnZXQgcGVybWlzc2lvbiBjb25kaXRpb24gZm9yIGZpbHRlcgogICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnICA9ICRDb25maWdPYmplY3QtPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJyk7CiAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zID0gJENvbmZpZ09iamVjdC0+R2V0KCdDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMnKTsKICAgIG15ICVHcm91cExvb2t1cDsKCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZykgKSB7CiAgICAgICAgUEVSTUNPTkY6CiAgICAgICAgZm9yIG15ICRDb25maWdJZGVudGlmaWVyICggc29ydCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZy0+JSogKSB7CiAgICAgICAgICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnID0gJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnLT57JENvbmZpZ0lkZW50aWZpZXJ9OwogICAgICAgICAgICBuZXh0IFBFUk1DT05GIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyk7CgogICAgICAgICAgICAjIGNoZWNrIGZvciBncm91cCBwZXJtaXNzaW9uCiAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57R3JvdXBzfSApICkgewoKICAgICAgICAgICAgICAgICMgcHJlcGFyZSBncm91cCBsb29rdXAgaWYgbmVjZXNzYXJ5CiAgICAgICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0hBU0gnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEFjY2Vzc09rID0gMDsKICAgICAgICAgICAgICAgIEdST1VQOgogICAgICAgICAgICAgICAgZm9yIG15ICRHcm91cE5hbWUgKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0dyb3Vwc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgR1JPVVAgaWYgISRHcm91cExvb2t1cHskR3JvdXBOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgJEFjY2Vzc09rID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBuZXh0IFBFUk1DT05GIHVubGVzcyAkQWNjZXNzT2s7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJEZpbHRlck5hbWUgZXEgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntOYW1lfSAmJiBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zKSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0gPSAkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zLT57JENvbmZpZ0lkZW50aWZpZXJ9IC8vIFtdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9LT5AKiAmJiBJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbnNDb2x1bW5zKSApIHsKICAgICAgICAgICAgJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfSA9ICRDb25maWdPYmplY3QtPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zJyktPntEZWZhdWx0fSAvLyBbXTsKICAgICAgICB9CiAgICAgICAgJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0gPSAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9OwogICAgfQoKICAgICMgaWYgcHJlZmVyZW5jZSBzZXR0aW5ncyBhcmUgYXZhaWxhYmxlLCBvdmVyd3JpdGUgZW5hYmxlZCBjb2x1bW5zIHdpdGggcHJlZmVyZW5jZXMKICAgIGlmICggJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSB9ICkgewoKICAgICAgICBteSAkQ29sdW1uc0VuYWJsZWQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5EZWNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSB9LAogICAgICAgICk7CgogICAgICAgICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9ID0gSXNBcnJheVJlZldpdGhEYXRhKCRDb2x1bW5zRW5hYmxlZCkgPyAkQ29sdW1uc0VuYWJsZWQgOiBbXTsKICAgIH0KCiAgICAjIGFsd2F5cyBzZXQgY29uZmlnIGl0ZW0gbnVtYmVyCiAgICBpZiAoICFncmVwIHsgJF8gZXEgJ051bWJlcicgfSAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfS0+QCogKSB7CiAgICAgICAgdW5zaGlmdCAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfS0+QCosICdOdW1iZXInOwogICAgfQogICAgaWYgKCAhZ3JlcCB7ICRfIGVxICdOdW1iZXInIH0gJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCogKSB7CiAgICAgICAgdW5zaGlmdCAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9LT5AKiwgJ051bWJlcic7CiAgICB9CgogICAgIyBnZXQgbmVjZXNzYXJ5IGR5bmFtaWMgZmllbGQgb2JqZWN0cwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZHMgYW5kIHNldCBhdmFpbGFibGUgYW5kIHZhbGlkIGZpbHRlciBhbmQgc29ydGFibGUgY29sdW1ucwogICAgRFlOQU1JQ0ZJRUxETkFNRToKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0tPkAqICkgewoKICAgICAgICBteSAkRmllbGROYW1lOwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZE5hbWUgPX4gbXsgRHluYW1pY0ZpZWxkXyg/PEZpZWxkTmFtZT5bQS1aYS16MC05XC1dKykgfXhtcyApIHsKICAgICAgICAgICAgJEZpZWxkTmFtZSA9ICQre0ZpZWxkTmFtZX07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRE5BTUU7CiAgICAgICAgfQoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIHN0b3JlIGZpZWxkIGNvbmZpZwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IGVxICdJVFNNQ29uZmlnSXRlbScgKSB7CiAgICAgICAgICAgIHB1c2ggJFNlbGYtPntEeW5hbWljRmllbGR9LT5AKiwgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZmlsdHJhYmxlIGFuZCBzb3J0YWJsZSBiZWhhdmlvcnMKICAgICAgICBmb3IgbXkgJEJlaGF2aW9yIChxdyhGaWx0cmFibGUgU29ydGFibGUpKSB7CgogICAgICAgICAgICBteSAkSGFzQmVoYXZpb3IgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAiSXMkQmVoYXZpb3IiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRIYXNCZWhhdmlvcikgewogICAgICAgICAgICAgICAgJFNlbGYtPnsiQXZhaWxhYmxlJHtCZWhhdmlvcn1Db2x1bW5zIn17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGhhc2ggd2l0aCBhbGwgdmFsaWQgc29ydGFibGUgY29sdW1ucyAodGFrZW4gZnJvbSBJVFNNQ29uZmlnSXRlbVNlYXJjaCkKICAgICMgU29ydEJ5ICA9PiAnQWdlJywgICAjIENyZWF0ZWR8TnVtYmVyfENoYW5nZWR8TmFtZXxEZXBsU3RhdGV8Q3VyRGVwbFN0YXRlCiAgICAjIHxJbmNpU3RhdGV8Q3VySW5jaVN0YXRlCiAgICAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfSA9IHsKICAgICAgICAnQWdlJyAgICAgICAgICA9PiAxLAogICAgICAgICdOdW1iZXInICAgICAgID0+IDEsCiAgICAgICAgJ05hbWUnICAgICAgICAgPT4gMSwKICAgICAgICAnQ3JlYXRlZCcgICAgICA9PiAxLAogICAgICAgICdMYXN0Q2hhbmdlZCcgID0+IDEsCiAgICAgICAgJ0RlcGxTdGF0ZScgICAgPT4gMSwKICAgICAgICAnQ3VyRGVwbFN0YXRlJyA9PiAxLAogICAgICAgICdJbmNpU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckluY2lTdGF0ZScgPT4gMSwKICAgIH07CgogICAgJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfSA9IHsKICAgICAgICBkZWZpbmVkICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30KICAgICAgICA/ICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30tPiUqCiAgICAgICAgOiAoKSwKICAgICAgICAnQ2xhc3MnICAgICAgICA9PiAxLAogICAgICAgICdEZXBsU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckRlcGxTdGF0ZScgPT4gMSwKICAgICAgICAnSW5jaVN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJJbmNpU3RhdGUnID0+IDEsCiAgICB9OwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIEFjdGlvblJvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBpZiBidWxrIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgbXkgJEJ1bGtGZWF0dXJlID0gMDsKICAgIGlmICggJFBhcmFte0J1bGt9ICYmICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZScpICkgewogICAgICAgIG15IEBHcm91cHM7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcpICkgewogICAgICAgICAgICBAR3JvdXBzID0gQHsgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSB9OwogICAgICAgIH0KICAgICAgICBpZiAoICFAR3JvdXBzICkgewogICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CiAgICAgICAgICAgIEdST1VQOgogICAgICAgICAgICBmb3IgbXkgJEdyb3VwIChAR3JvdXBzKSB7CiAgICAgICAgICAgICAgICBteSAkSGFzUGVybWlzc2lvbiA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRHcm91cCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoJEhhc1Blcm1pc3Npb24pIHsKICAgICAgICAgICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgR1JPVVA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRBY3Rpb25Sb3cnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgaWYgKCRCdWxrRmVhdHVyZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEb2N1bWVudEFjdGlvblJvd0J1bGsnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRhYmxlKCdCdWxrJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZXJlIHdhcyBhIGNvbHVtbiBmaWx0ZXIgYW5kIG5vIHJlc3VsdHMsIGFuZCBwcmludCBhIGxpbmsgdG8gYmFjawogICAgaWYgKCBzY2FsYXIgQHsgJFBhcmFte0NvbmZpZ0l0ZW1JRHN9IH0gPT0gMCAmJiAkUGFyYW17TGFzdENvbHVtbkZpbHRlcn0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50QWN0aW9uUm93TGFzdENvbHVtbkZpbHRlcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIHJlZ3VsYXIgY29sdW1ucwogICAgbXkgJENvbHVtbnMgPSAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9OwogICAgaWYgKCAkQ29sdW1ucyAmJiBJc0FycmF5UmVmV2l0aERhdGEoJENvbHVtbnMpICkgewoKICAgICAgICBDT0xVTU46CiAgICAgICAgZm9yIG15ICRDb2x1bW4gKCAkQ29sdW1ucy0+QCogKSB7CgogICAgICAgICAgICAjIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgdHJhbnNsYXRlZCBpbiB0aGUgbmV4dCBibG9jawogICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAkQ29sdW1uID1+IG17IFxBIER5bmFtaWNGaWVsZF8gfXhtczsKCiAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZCA9ICRDb2x1bW47CiAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJyB8fCAkQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJEZXBsU3RhdGVUeXBlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBTdGF0ZSBUeXBlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdJbmNpU3RhdGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlJyB8fCAkQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdMYXN0IGNoYW5nZWQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NvbHVtbicgLiAkQ29sdW1uLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJExhbmd1YWdlT2JqZWN0LT5UcmFuc2xhdGUoJFRyYW5zbGF0ZWRXb3JkKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgdHJhbnNsYXRpb25zIGZvciB0aGUgYWxsb2NhdGlvbiBsaXN0cyBmb3IgZHluYW1pYyBmaWVsZCBjb2x1bW5zCiAgICBteSAkQ29sdW1uc0R5bmFtaWNGaWVsZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ0lUU01Db25maWdJdGVtJ10sCiAgICApOwoKICAgIGlmICggJENvbHVtbnNEeW5hbWljRmllbGQgJiYgSXNBcnJheVJlZldpdGhEYXRhKCRDb2x1bW5zRHluYW1pY0ZpZWxkKSApIHsKCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwoKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGQgKCBzb3J0IEB7JENvbHVtbnNEeW5hbWljRmllbGR9ICkgewoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGQ7CgogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NvbHVtbkR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJExhbmd1YWdlT2JqZWN0LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGQtPntMYWJlbH0gKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBTb3J0T3JkZXJCYXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJyc7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIElmICRQYXJhbXtFbmFibGVDb2x1bW5GaWx0ZXJzfSBpcyBub3Qgc2VudCwgd2Ugd2FudCB0byBkaXNhYmxlIGFsbCBmaWx0ZXJzCiAgICAjICAgZm9yIHRoZSBjdXJyZW50IHNjcmVlbi4gV2UgbG9jYWxpemUgdGhlIHNldHRpbmcgZm9yIHRoaXMgc3ViIGFuZCBjaGFuZ2UgaXQKICAgICMgICBhZnRlciB0aGF0LCBpZiBuZWVkZWQuIFRoZSBvcmlnaW5hbCB2YWx1ZSB3aWxsIGJlIHJlc3RvcmVkIGFmdGVyIHRoaXMgZnVuY3Rpb24uCiAgICBsb2NhbCAkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9ID0gJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfTsKICAgIGlmICggISRQYXJhbXtFbmFibGVDb2x1bW5GaWx0ZXJzfSApIHsKICAgICAgICAkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9ID0ge307ICAgICMgZGlzYWJsZSBhbGwgY29sdW1uIGZpbHRlcnMKICAgIH0KCiAgICBmb3IgbXkgJEl0ZW0gKHF3KENvbmZpZ0l0ZW1JRHMgUGFnZVNob3duIFN0YXJ0SGl0KSkgewogICAgICAgIGlmICggISRQYXJhbXskSXRlbX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRJdGVtISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWZpbmUgaW5jaWRlbnQgc2lnbmFscwogICAgbXkgJUluY2lTaWduYWxzID0gKAogICAgICAgIFRyYW5zbGF0YWJsZSgnb3BlcmF0aW9uYWwnKSA9PiAnZ3JlZW5sZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnd2FybmluZycpICAgICA9PiAneWVsbG93bGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ2luY2lkZW50JykgICAgPT4gJ3JlZGxlZCcsCiAgICApOwoKICAgICMgc3RvcmUgZGVwbG95bWVudCBzaWduYWxzCiAgICBteSAlRGVwbFNpZ25hbHM7CgogICAgIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdAogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgbGlzdCBvZiBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJERlcGxveW1lbnRTdGF0ZXNMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgIyBzZXQgZGVwbG95bWVudCBzdHlsZSBjb2xvcnMKICAgIG15ICRTdHlsZUNsYXNzZXMgPSAnJzsKCiAgICBJVEVNSUQ6CiAgICBmb3IgbXkgJEl0ZW1JRCAoIHNvcnQga2V5cyAleyREZXBsb3ltZW50U3RhdGVzTGlzdH0gKSB7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgcHJlZmVyZW5jZXMKICAgICAgICBteSAlR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIGNvbG9yIGlzIGRlZmluZWQgaW4gcHJlZmVyZW5jZXMKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJEdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXN7Q29sb3J9OwogICAgICAgIG15ICgkQ29sb3IpID0gJEdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXN7Q29sb3J9LT5AKjsKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJENvbG9yOwoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlCiAgICAgICAgbXkgJERlcGxTdGF0ZSA9ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9OwoKICAgICAgICAjIHJlbW92ZSBhbnkgbm9uIGFzY2lpIHdvcmQgY2hhcmFjdGVycwogICAgICAgICREZXBsU3RhdGUgPX4gc3sgW15hLXpBLVowLTldIH17X31tc3hnOwoKICAgICAgICAjIHN0b3JlIHRoZSBvcmlnaW5hbCBkZXBsb3ltZW50IHN0YXRlIGFzIGtleQogICAgICAgICMgYW5kIHRoZSBzcyBzYWZlIGNvbnZlcnRlZCBkZXBsb3ltZW50IHN0YXRlIGFzIHZhbHVlCiAgICAgICAgJERlcGxTaWduYWxzeyAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfSB9ID0gJERlcGxTdGF0ZTsKCiAgICAgICAgIyBjb252ZXJ0IHRvIGxvd2VyIGNhc2UKICAgICAgICBteSAkRGVwbFN0YXRlQ29sb3IgPSAoIGxjICRDb2xvciApID1+IHMvW14wLTlhLWZdLy9tc2dyOwoKICAgICAgICAjIGFkZCB0byBzdHlsZSBjbGFzc2VzIHN0cmluZwogICAgICAgICRTdHlsZUNsYXNzZXMgLj0gIgogICAgICAgICAgICAuRmxhZyBzcGFuLiREZXBsU3RhdGUgewogICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIyREZXBsU3RhdGVDb2xvcjsKICAgICAgICAgICAgfQogICAgICAgICI7CiAgICB9CgogICAgIyB3cmFwIGludG8gc3R5bGUgdGFncwogICAgaWYgKCRTdHlsZUNsYXNzZXMpIHsKICAgICAgICAkU3R5bGVDbGFzc2VzID0gIjxzdHlsZT4kU3R5bGVDbGFzc2VzPC9zdHlsZT4iOwogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBpZiBidWxrIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgbXkgJEJ1bGtGZWF0dXJlID0gMDsKICAgIGlmICggJFBhcmFte0J1bGt9ICYmICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZScpICkgewogICAgICAgIG15IEBHcm91cHM7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcpICkgewogICAgICAgICAgICBAR3JvdXBzID0gQHsgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSB9OwogICAgICAgIH0KICAgICAgICBpZiAoICFAR3JvdXBzICkgewogICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CiAgICAgICAgICAgIEdST1VQOgogICAgICAgICAgICBmb3IgbXkgJEdyb3VwIChAR3JvdXBzKSB7CiAgICAgICAgICAgICAgICBteSAkSGFzUGVybWlzc2lvbiA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRHcm91cCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoJEhhc1Blcm1pc3Npb24pIHsKICAgICAgICAgICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgR1JPVVA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJENvdW50ZXIgPSAwOwogICAgbXkgQENvbmZpZ0l0ZW1Cb3g7CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIEB7ICRQYXJhbXtDb25maWdJdGVtSURzfSB9ICkgewogICAgICAgICRDb3VudGVyKys7CiAgICAgICAgaWYgKCAkQ291bnRlciA+PSAkUGFyYW17U3RhcnRIaXR9ICYmICRDb3VudGVyIDwgKCAkUGFyYW17UGFnZVNob3dufSArICRQYXJhbXtTdGFydEhpdH0gKSApIHsKCiAgICAgICAgICAgICMgR2V0IGNvbmZpZyBpdGVtIGRhdGEuCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICVDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1SZWYtPiUqOwoKICAgICAgICAgICAgIyBzZXQgZGVwbG95bWVudCBhbmQgaW5jaWRlbnQgc2lnbmFscwogICAgICAgICAgICAkQ29uZmlnSXRlbXtDdXJEZXBsU2lnbmFsfSA9ICREZXBsU2lnbmFsc3sgJENvbmZpZ0l0ZW17Q3VyRGVwbFN0YXRlfSB9OwogICAgICAgICAgICAkQ29uZmlnSXRlbXtDdXJJbmNpU2lnbmFsfSA9ICRJbmNpU2lnbmFsc3sgJENvbmZpZ0l0ZW17Q3VySW5jaVN0YXRlVHlwZX0gfTsKCiAgICAgICAgICAgICMgZmlsbCBjb2x1bW4gbmFtZSBhdHRyaWJ1dGUgd2l0aCBjb3JyZXNwb25kaW5nIGl0ZW0gYXR0cmlidXRlCiAgICAgICAgICAgICRDb25maWdJdGVte0NyZWF0ZWR9ICAgICA9ICRDb25maWdJdGVte0NyZWF0ZVRpbWV9OwogICAgICAgICAgICAkQ29uZmlnSXRlbXtMYXN0Q2hhbmdlZH0gPSAkQ29uZmlnSXRlbXtDaGFuZ2VUaW1lfTsKCiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1Cb3gsIFwlQ29uZmlnSXRlbTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBjb2x1bW5zZW5hYmxlZCBpcyBhIGZpbGxlZCBhcnJheSByZWZlcmVuY2UKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfSApICkgewoKICAgICAgICAjIGNoZWNrIGlmIGNvbHVtbiBpcyByZWFsbHkgZmlsdGVyYWJsZQogICAgICAgIENPTFVNTk5BTUU6CiAgICAgICAgZm9yIG15ICRDb2x1bW5OYW1lICggQHsgJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbk5hbWV9OwogICAgICAgICAgICAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1uTmFtZX0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQ29sdW1uVmFsdWVzID0gJFNlbGYtPl9HZXRDb2x1bW5WYWx1ZXMoCiAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9LAogICAgKTsKCiAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdMaW5rUGFnZScsCiAgICAgICAgVmFsdWUgPT4gJFBhcmFte0xpbmtQYWdlfSwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRDb250ZW50JywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgYXJyYXkgdG8gc2F2ZSB0aGUgY29sdW1uIG5hbWVzIHRvIGRvIHRoZSBxdWVyeQogICAgbXkgQENvbCA9IEB7ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9IH07CgogICAgIyBkZWZpbmUgc3BlY2lhbCBjb25maWcgaXRlbSBjb2x1bW5zCiAgICBteSAlU3BlY2lhbENvbHVtbnMgPSAoCiAgICAgICAgTnVtYmVyICAgICAgICA9PiAxLAogICAgICAgIEN1ckRlcGxTaWduYWwgPT4gMSwKICAgICAgICBDdXJJbmNpU2lnbmFsID0+IDEsCiAgICApOwoKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICRQYXJhbXtPcmRlckJ5fSA9ICRQYXJhbXtPcmRlckJ5fSB8fCAnVXAnOwogICAgJFBhcmFte1NvcnRCeX0gID0gJFBhcmFte1NvcnRCeX0gIHx8ICdOdW1iZXInOwoKICAgIG15ICRDb25maWdJdGVtRGF0YSA9IHNjYWxhciBAQ29uZmlnSXRlbUJveDsKICAgIGlmICgkQ29uZmlnSXRlbURhdGEpIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3VGFibGUnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFN0eWxlQ2xhc3NlcyA9PiAkU3R5bGVDbGFzc2VzLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1RhYmxlSGVhZGVyJyApOwoKICAgICAgICBpZiAoJEJ1bGtGZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3SGVhZGVyJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdCdWxrTmF2QmFyJywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRDU1MgPSAnJzsKCiAgICAgICAgIyBzaG93IHNwZWNpYWwgY29uZmlnIGl0ZW0gY29sdW1ucywgaWYgbmVlZGVkCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgIENPTFVNTjoKICAgICAgICBmb3IgbXkgJENvbHVtbiAoQENvbCkgewogICAgICAgICAgICBteSAkU3RhdGljQ29sdW1uID0gISRDb3VudGVyOwogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXInLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENTUyA9ICRDb2x1bW4gLiAoICRTdGF0aWNDb2x1bW4gPyAnIFN0YXRpY0NvbHVtbicgOiAnJyApOwogICAgICAgICAgICBteSAkVGl0bGUgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKICAgICAgICAgICAgbXkgJE9yZGVyQnkgPSAkUGFyYW17T3JkZXJCeX07CgogICAgICAgICAgICAjIFRyYW5zZm9ybSBmaWx0ZXIgbmFtZSB0byBjb2x1bW4gbmFtZQogICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9IGVxICdDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtTb3J0Qnl9ID0gJ0xhc3RDaGFuZ2VkJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRwdXQgb3ZlcmFsbCBibG9jayBzbyBOdW1iZXIgYXMgd2VsbCBhcyBvdGhlciBjb2x1bW5zIGNhbiBiZSBvcmRlcmVkCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29uZmlnSXRlbUhlYWRlcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkU3BlY2lhbENvbHVtbnN7JENvbHVtbn0gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICRDb2x1bW4gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBvcmRlciBmb3Igc29ydGluZyBjb2x1bW4uCiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAkT3JkZXJCeSBlcSAnVXAnID8gJ0Rvd24nIDogJ1VwJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgY29sdW1uIG5hbWUgdG8gd3JpdGUgaXQgaW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnQ3VyRGVwbFNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlICAgICA9ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBub3QgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfSAmJgogICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRDb2x1bW59IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnsgJENvbHVtbiAuICdJRHMnIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBGaWx0ZXJBY3RpdmUnOwogICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBhY3RpdmUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEZpbHRlclRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGUgLj0gJywgJyAuICRGaWx0ZXJUaXRsZURlc2M7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAiT3ZlcnZpZXdOYXZCYXJQYWdlJENvbHVtbiIsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4gICAgICAgICB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUyAgICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBmaWx0ZXJhYmxlIGFuZCBzb3J0YWJsZQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgJiYgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskQ29sdW1ufQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIGh0bWwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMgZmlsdGVyYWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1ufSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMgc29ydGFibGUKICAgICAgICAgICAgICAgIGVsc2lmICggJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRW1wdHknLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiAhfiBte1xBIER5bmFtaWNGaWVsZF99eG1zICkgewoKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gJiYgKCAkUGFyYW17U29ydEJ5fSBlcSAkQ29sdW1uICkgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAgICAgIyBDaGFuZ2Ugb3JkZXIgZm9yIHNvcnRpbmcgY29sdW1uLgogICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJE9yZGVyQnkgZXEgJ1VwJyA/ICdEb3duJyA6ICdVcCc7CgogICAgICAgICAgICAgICAgICAgIGlmICggJE9yZGVyQnkgZXEgJ0Rvd24nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGFzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgZGVzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywgJyAuICRUaXRsZURlc2M7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB0cmFuc2xhdGUgdGhlIGNvbHVtbiBuYW1lIHRvIHdyaXRlIGl0IGluIHRoZSBjdXJyZW50IGxhbmd1YWdlCiAgICAgICAgICAgICAgICBteSAkVHJhbnNsYXRlZFdvcmQ7CiAgICAgICAgICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ0RlcGxTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZScgfHwgJENvbHVtbiBlcSAnQ3VyRGVwbFNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXBsb3ltZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnSW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0luY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScgfHwgJENvbHVtbiBlcSAnQ3VySW5jaVNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZVR5cGUnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhc3QgY2hhbmdlZCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRDb2x1bW4pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZSAgICAgPSAkVHJhbnNsYXRlZFdvcmQ7CiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgbm90IGFjdGl2ZScpOwogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9ICYmICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnsgJENvbHVtbiAuICdJRHMnIH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIEZpbHRlckFjdGl2ZSc7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIGFjdGl2ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmlsdGVyVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZSAuPSAnLCAnIC4gJEZpbHRlclRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW4nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBmaWx0ZXJhYmxlIGFuZCBzb3J0YWJsZQogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgJiYgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskQ29sdW1ufQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlckxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGp1c3QgZmlsdGVyYWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1ufSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBzb3J0YWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5MaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5FbXB0eScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNob3cgdGhlIERGcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgICAgICAgICAgbXkgJERGQ29sdW1uID0gJENvbHVtbjsKICAgICAgICAgICAgICAgICRERkNvbHVtbiA9fiBzL0R5bmFtaWNGaWVsZF8vL2c7CiAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgJERGQ29uZmlnLT57TmFtZX0gbmUgJERGQ29sdW1uOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgIG15ICRMYWJlbCA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CiAgICAgICAgICAgICAgICAkVGl0bGUgPSAkTGFiZWw7CiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGUgPSAkTGFiZWw7CgogICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgc29ydGFibGUgY29uZGl0aW9uCiAgICAgICAgICAgICAgICBteSAkSXNTb3J0YWJsZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzU29ydGFibGUnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoJElzU29ydGFibGUpIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ1NTID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFte1NvcnRCeX0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAkUGFyYW17U29ydEJ5fSBlcSAoICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSApICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgQ2hhbmdlIG9yZGVyIGZvciBzb3J0aW5nIGNvbHVtbi4KICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAkT3JkZXJCeSBlcSAnVXAnID8gJ0Rvd24nIDogJ1VwJzsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJE9yZGVyQnkgZXEgJ0Rvd24nICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgZGVzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywgJyAuICRUaXRsZURlc2M7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgbm90IGFjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntTdG9yZWRGaWx0ZXJzfSAmJiAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JENvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBGaWx0ZXJBY3RpdmUnOwogICAgICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEZpbHRlclRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlIC49ICcsICcgLiAkRmlsdGVyVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkTmFtZSA9ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskRHluYW1pY0ZpZWxkTmFtZX0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZEZpbHRyYWJsZVNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkU29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskRHluYW1pY0ZpZWxkTmFtZX0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ19GaWx0cmFibGVTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ19Tb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgIG15ICRDU1MgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZE5hbWU7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JER5bmFtaWNGaWVsZE5hbWV9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVOb3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgZXhhbXBsZSBvZiBkeW5hbWljIGZpZWxkcyBvcmRlciBjdXN0b21pemF0aW9uCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyREeW5hbWljRmllbGROYW1lfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ19GaWx0cmFibGVOb3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdfTm90U29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnVGFibGVCb2R5JyApOwoKICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdOb0NvbmZpZ0l0ZW1Gb3VuZCcgKTsKICAgIH0KCiAgICAjIGJhY2sgbGluawogICAgaWYgKCAkUGFyYW17TGlua0JhY2t9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VCYWNrJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICBQcm9maWxlID0+ICRQYXJhbXtQcm9maWxlfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBmaWx0ZXIgc2VsZWN0aW9uCiAgICBpZiAoICRQYXJhbXtGaWx0ZXJzfSApIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpbHRlcnMnLAogICAgICAgICk7CgogICAgICAgIG15IEBOYXZCYXJGaWx0ZXJzOwogICAgICAgIGZvciBteSAkUHJpbyAoIHNvcnQga2V5cyAleyAkUGFyYW17RmlsdGVyc30gfSApIHsKICAgICAgICAgICAgcHVzaCBATmF2QmFyRmlsdGVycywgJFBhcmFte0ZpbHRlcnN9LT57JFByaW99OwogICAgICAgIH0KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlcicsCiAgICAgICAgKTsKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGZvciBteSAkRmlsdGVyIChATmF2QmFyRmlsdGVycykgewogICAgICAgICAgICAkQ291bnQrKzsKICAgICAgICAgICAgaWYgKCAkQ291bnQgPT0gc2NhbGFyIEBOYXZCYXJGaWx0ZXJzICkgewogICAgICAgICAgICAgICAgJEZpbHRlci0+e0NTU30gPSAnTGFzdCc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTaWRlQmFyRmlsdGVySXRlbScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggJEZpbHRlci0+e0ZpbHRlcn0gZXEgJFBhcmFte0ZpbHRlcn0gKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTaWRlQmFyRmlsdGVySXRlbVNlbGVjdGVkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAleyRGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1SZWYgKEBDb25maWdJdGVtQm94KSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICV7JENvbmZpZ0l0ZW1SZWZ9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgRGF0YSA9PiB7JUNvbmZpZ0l0ZW19LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgICAgICBpZiAoJEJ1bGtGZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0YWJsZSgnQnVsaycpLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JUNvbmZpZ0l0ZW19LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICAgICAjIHNhdmUgY29sdW1uIGNvbnRlbnQKICAgICAgICBteSAkRGF0YVZhbHVlOwoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICMgc2hvdyBhbGwgbmVlZGVkIGNvbHVtbnMKICAgICAgICBDT05GSUdJVEVNQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNvbHVtbiAoQENvbCkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyYWxPdmVydmlld1JvdycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRTdGF0aWNDb2x1bW4gPSAhJENvdW50ZXI7CiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRDb25maWdJdGVtRGF0YScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkU3BlY2lhbENvbHVtbnN7JENvbmZpZ0l0ZW1Db2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbmZpZ0l0ZW1Db2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNDb2x1bW4gPT4gJFN0YXRpY0NvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZEJ5JyApIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJUNvbmZpZ0l0ZW1DcmVhdGVkQnlJbmZvID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJENvbmZpZ0l0ZW17Q3JlYXRlQnl9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRDb25maWdJdGVtQ3JlYXRlZEJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbUNyZWF0ZWRCeUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNDb2x1bW4gPT4gJFN0YXRpY0NvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUNPTFVNTjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkQmxvY2tUeXBlID0gJyc7CiAgICAgICAgICAgICAgICBteSAkQ1NTQ2xhc3MgID0gJFN0YXRpY0NvbHVtbiA/ICdTdGF0aWNDb2x1bW4nIDogJyc7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0RlcGxTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgICAgICAgICAgICAgIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdJbmNpU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ2xhc3MnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVHJhbnNsYXRhYmxlJzsKICAgICAgICAgICAgICAgICAgICAkRGF0YVZhbHVlID0gJENvbmZpZ0l0ZW17JENvbmZpZ0l0ZW1Db2x1bW59OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZCcgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0NoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRDb25maWdJdGVteyRDb25maWdJdGVtQ29sdW1ufTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXskQ29uZmlnSXRlbUNvbHVtbn07CgogICAgICAgICAgICAgICAgICAgICMgSWYgdmFsdWUgaXMgaW4gZGF0ZSBmb3JtYXQsIGNoYW5nZSBibG9jayB0eXBlIHRvICdUaW1lJyBzbyBpdCBjYW4gYmUgbG9jYWxpemVkLiBTZWUgYnVnIzE0NTQyLgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCAkRGF0YVZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICYmICREYXRhVmFsdWUgPX4gL15cZFxkXGRcZC0oXGR8XGRcZCktKFxkfFxkXGQpXHMoXGR8XGRcZCk6KFxkfFxkXGQpOihcZHxcZFxkKSQvCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW4kQmxvY2tUeXBlIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpY1ZhbHVlID0+ICREYXRhVmFsdWUgfHwgJy0nLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENTU0NsYXNzICB8fCAnJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb25maWdJdGVtQ29sdW1uOwogICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIHZhbHVlCiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVte1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDIwLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFZhbHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFZhbHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICdfTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19QbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQgYWN0aW9uIGl0ZW1zIGFzIGpzCiAgICAgICAgaWYgKCAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gKSB7CgogICAgICAgICAgICAjIHJlcGxhY2UgVFQgZGlyZWN0aXZlcyBmcm9tIHN0cmluZyB3aXRoIHZhbHVlcwogICAgICAgICAgICBmb3IgbXkgJEFjdGlvbkl0ZW0gKCBAeyAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gfSApIHsKICAgICAgICAgICAgICAgICRBY3Rpb25JdGVtLT57TGlua30gPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJEFjdGlvbkl0ZW0tPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjICRBY3Rpb25Sb3dDb25maWdJdGVtc3sgJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSB9ID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSggRGF0YSA9PiAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtQWN0aW9uUm93LicgLiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBjb2x1bW4gZmlsdGVyIGZvcm0sIHRvIGNvcnJlY3RseSBmaWxsIHRoZSBjb2x1bW4gZmlsdGVycyBpcyBuZWNlc3NhcnkgdG8gcGFzcyBlYWNoCiAgICAjICAgIG92ZXJ2aWV3IHNvbWUgaW5mb3JtYXRpb24gaW4gdGhlIEFKQVggY2FsbCwgZm9yIGV4YW1wbGUgdGhlIGZpeGVkIEZpbHRlcnMgb3IgTmF2QmFyRmlsdGVycwogICAgIyAgICBhbmQgYWxzbyBvdGhlciB2YWx1ZXMgbGlrZSB0aGUgUXVldWUgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVF1ZXVlLCBvdGhlcndpc2UgdGhlIGZpbHRlcnMgd2lsbCBiZQogICAgIyAgICBmaWxsZWQgd2l0aCBkZWZhdWx0IHJlc3RyaWN0aW9ucywgcmVzdWx0aW5nIGluIG1vcmUgb3B0aW9ucyB0aGFuIHRoZSBvbmVzIHRoYXQgdGhlCiAgICAjICAgIGF2YWlsYWJsZSBjb25maWcgaXRlbXMgc2hvdWxkIHByb3ZpZGUsIHNlZSBCdWcjOTkwMgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0NvbHVtbkZpbHRlckZvcm19ICkgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29sdW1uRmlsdGVyRm9ybScsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggc29ydCBrZXlzICV7ICRQYXJhbXtDb2x1bW5GaWx0ZXJGb3JtfSB9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29sdW1uRmlsdGVyRm9ybUVsZW1lbnQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgRWxlbWVudE5hbWUgID0+ICRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgIEVsZW1lbnRWYWx1ZSA9PiAkUGFyYW17Q29sdW1uRmlsdGVyRm9ybX0tPnskRWxlbWVudH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHVzZSB0ZW1wbGF0ZQogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntWaWV3VHlwZX0sCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfR2V0Q29sdW1uVmFsdWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17SGVhZGVyQ29sdW1ufSApOwoKICAgIG15ICRIZWFkZXJDb2x1bW4gPSAkUGFyYW17SGVhZGVyQ29sdW1ufTsKICAgIG15ICVDb2x1bW5GaWx0ZXJWYWx1ZXM7CiAgICBteSAkQ29uZmlnSXRlbUlEczsKCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEcyA9ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9OwogICAgfQoKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBtL15EeW5hbWljRmllbGRfLyApIHsKICAgICAgICBteSAkRnVuY3Rpb25OYW1lID0gJEhlYWRlckNvbHVtbiAuICdGaWx0ZXJWYWx1ZXNHZXQnOwogICAgICAgICRDb2x1bW5GaWx0ZXJWYWx1ZXN7JEhlYWRlckNvbHVtbn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbHVtbkZpbHRlcicpLT4kRnVuY3Rpb25OYW1lKAogICAgICAgICAgICBDb25maWdJdGVtSURzID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICBIZWFkZXJDb2x1bW4gID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBteSAkRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRmllbGROYW1lIG5lICRIZWFkZXJDb2x1bW47CgogICAgICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwogICAgICAgICAgICBteSAkSXNGaWx0cmFibGUgICAgICAgICAgICAgICA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0ZpbHRyYWJsZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkSXNGaWx0cmFibGU7CiAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59ID0gJElzRmlsdHJhYmxlOwogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkQ29uZmlnSXRlbUlEcykgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIGhpc3RvcmljYWwgdmFsdWVzIGZvciB0aGUgZmllbGQKICAgICAgICAgICAgICAgICRDb2x1bW5GaWx0ZXJWYWx1ZXN7JEhlYWRlckNvbHVtbn0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+Q29sdW1uRmlsdGVyVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICAgICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1JRHMgID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgJENvbHVtbkZpbHRlclZhbHVlc3skSGVhZGVyQ29sdW1ufSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUNvbHVtbkZpbHRlclZhbHVlczsKfQoKc3ViIF9Jbml0aWFsQ29sdW1uRmlsdGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17Q29sdW1uTmFtZX07CiAgICByZXR1cm4gaWYgISRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRMYWJlbCA9ICRQYXJhbXtMYWJlbH0gfHwgJFBhcmFte0NvbHVtbk5hbWV9OwogICAgJExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7CgogICAgIyBzZXQgZml4ZWQgdmFsdWVzCiAgICBteSAkRGF0YSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICcnLAogICAgICAgICAgICBWYWx1ZSA9PiB1YyAkTGFiZWwsCiAgICAgICAgfSwKICAgIF07CgogICAgIyBkZWZpbmUgaWYgY29sdW1uIGZpbHRlciB2YWx1ZXMgc2hvdWxkIGJlIHRyYW5zbGF0YWJsZQogICAgbXkgJFRyYW5zbGF0aW9uT3B0aW9uID0gMDsKCiAgICBpZiAoCiAgICAgICAgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDbGFzcycKICAgICAgICApCiAgICB7CiAgICAgICAgJFRyYW5zbGF0aW9uT3B0aW9uID0gMTsKICAgIH0KCiAgICBteSAkQ2xhc3MgPSAnQ29sdW1uRmlsdGVyJzsKICAgIGlmICggJFBhcmFte0Nzc30gKSB7CiAgICAgICAgJENsYXNzIC49ICcgJyAuICRQYXJhbXtDc3N9OwogICAgfQoKICAgICMgYnVpbGQgc2VsZWN0IEhUTUwKICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkUGFyYW17Q29sdW1uTmFtZX0sCiAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGEsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJENsYXNzLAogICAgICAgIFRyYW5zbGF0aW9uID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICBTZWxlY3RlZElEICA9PiAnJywKICAgICk7CiAgICByZXR1cm4gJENvbHVtbkZpbHRlckhUTUw7Cn0KCnN1YiBGaWx0ZXJDb250ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17SGVhZGVyQ29sdW1ufTsKCiAgICBteSAkSGVhZGVyQ29sdW1uID0gJFBhcmFte0hlYWRlckNvbHVtbn07CgogICAgIyBnZXQgY29sdW1uIHZhbHVlcyBmb3IgdG8gYnVpbGQgdGhlIGZpbHRlcnMgbGF0ZXIKICAgIG15ICRDb2x1bW5WYWx1ZXMgPSAkU2VsZi0+X0dldENvbHVtblZhbHVlcygKICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30sCiAgICAgICAgSGVhZGVyQ29sdW1uICAgICAgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICApOwoKICAgICMgYXBwbHkgcmVzdHJpY3Rpb25zIGZvciBjdXN0b21lciBwZXJtaXNzaW9uIGNvbmRpdGlvbnMKICAgIGlmICggJEhlYWRlckNvbHVtbiBlcSAnQ2xhc3MnICYmICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17Q2xhc3Nlc30tPkAqICkgewogICAgICAgIGZvciBteSAkRmlsdGVyVmFsdWUgKCBrZXlzICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufS0+JSogKSB7CiAgICAgICAgICAgIGlmICggIWdyZXAgeyAkQ29sdW1uVmFsdWVzLT57JEhlYWRlckNvbHVtbn17JEZpbHRlclZhbHVlfSBlcSAkXyB9ICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17Q2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICAgICAgZGVsZXRlICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufXskRmlsdGVyVmFsdWV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdEZXBsU3RhdGUnICYmICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17RGVwbFN0YXRlc30tPkAqICkgewogICAgICAgIGZvciBteSAkRmlsdGVyVmFsdWUgKCBrZXlzICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufS0+JSogKSB7CiAgICAgICAgICAgIGlmICggIWdyZXAgeyAkQ29sdW1uVmFsdWVzLT57JEhlYWRlckNvbHVtbn17JEZpbHRlclZhbHVlfSBlcSAkXyB9ICRQYXJhbXtGaWx0ZXJzfS0+eyAkUGFyYW17RmlsdGVyfSB9e1NlYXJjaH17RGVwbFN0YXRlc30tPkAqICkgewogICAgICAgICAgICAgICAgZGVsZXRlICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufXskRmlsdGVyVmFsdWV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15ICRTZWxlY3RlZFZhbHVlICA9ICcnOwogICAgbXkgJFNlbGVjdGVkQ29sdW1uID0gJEhlYWRlckNvbHVtbjsKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CiAgICAgICAgJFNlbGVjdGVkQ29sdW1uIC49ICdJRHMnOwogICAgfQoKICAgIG15ICRMYWJlbENvbHVtbiA9ICRIZWFkZXJDb2x1bW47CiAgICBpZiAoICRMYWJlbENvbHVtbiA9fiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CgogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgJExhYmVsQ29sdW1uID1+IHN7XEEgRHluYW1pY0ZpZWxkXyB9e314bXM7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkTGFiZWxDb2x1bW47CgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKSApIHsKICAgICAgICAgICAgJExhYmVsQ29sdW1uID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkU2VsZWN0ZWRDb2x1bW4gJiYgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0gKSB7CgogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVkQ29sdW1ufSApICkgewogICAgICAgICAgICAkU2VsZWN0ZWRWYWx1ZSA9ICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59LT5bMF07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59ICkgKSB7CiAgICAgICAgICAgICRTZWxlY3RlZFZhbHVlID0gJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0tPntFcXVhbHN9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkU2VsZi0+X0NvbHVtbkZpbHRlckpTT04oCiAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsQ29sdW1uLAogICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59LAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFNlbGVjdGVkVmFsdWUsCiAgICApOwoKICAgIHJldHVybiAkQ29sdW1uRmlsdGVySlNPTjsKfQoKIyA9aGVhZDIgX0NvbHVtbkZpbHRlckpTT04oKQoKIyAgICAgY3JlYXRlcyBhIEpTT04gc2VsZWN0IGZpbHRlciBmb3IgY29sdW1uIGhlYWRlcgoKIyAgICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkSVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsT2JqZWN0LT5fQ29sdW1uRmlsdGVySlNPTigKIyAgICAgICAgIENvbHVtbk5hbWUgPT4gJ1F1ZXVlJywKIyAgICAgICAgIExhYmVsICAgICAgPT4gJ1F1ZXVlJywKIyAgICAgICAgIENvbHVtblZhbHVlcyA9PiB7CiMgICAgICAgICAgICAgMSA9PiAnUG9zdE1hc3RlcicsCiMgICAgICAgICAgICAgMiA9PiAnSnVuaycsCiMgICAgICAgICB9LAojICAgICAgICAgU2VsZWN0ZWRWYWx1ZSAnMScsCiMgICAgICk7CgojID1jdXQKCnN1YiBfQ29sdW1uRmlsdGVySlNPTiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICgKICAgICAgICAhJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfSAmJgogICAgICAgICEkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9LT57ICRQYXJhbXtDb2x1bW5OYW1lfSAuICdJRHMnIH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJExhYmVsID0gJFBhcmFte0xhYmVsfTsKICAgICRMYWJlbCA9fiBzeyBcQSBEeW5hbWljRmllbGRfIH17fWd4bXM7CiAgICAkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAjIHNldCBmaXhlZCB2YWx1ZXMKICAgIG15ICREYXRhID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0RlbGV0ZUZpbHRlcicsCiAgICAgICAgICAgIFZhbHVlID0+IHVjICRMYWJlbCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJy0nLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnLScsCiAgICAgICAgICAgIERpc2FibGVkID0+IDEsCiAgICAgICAgfSwKICAgIF07CgogICAgaWYgKCAkUGFyYW17Q29sdW1uVmFsdWVzfSAmJiByZWYgJFBhcmFte0NvbHVtblZhbHVlc30gZXEgJ0hBU0gnICkgewoKICAgICAgICBteSAlVmFsdWVzID0gJXsgJFBhcmFte0NvbHVtblZhbHVlc30gfTsKCiAgICAgICAgIyBTZXQgcG9zc2libGUgdmFsdWVzLgogICAgICAgIGZvciBteSAkVmFsdWVLZXkgKCBzb3J0IHsgbGMgJFZhbHVlc3skYX0gY21wIGxjICRWYWx1ZXN7JGJ9IH0ga2V5cyAlVmFsdWVzICkgewogICAgICAgICAgICBwdXNoIEB7JERhdGF9LCB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkVmFsdWVLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVzeyRWYWx1ZUtleX0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIGlmIGNvbHVtbiBmaWx0ZXIgdmFsdWVzIHNob3VsZCBiZSB0cmFuc2xhdGFibGUKICAgIG15ICRUcmFuc2xhdGlvbk9wdGlvbiA9IDA7CgogICAgaWYgKAogICAgICAgICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnSW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VySW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ2xhc3MnCiAgICAgICAgKQogICAgewogICAgICAgICRUcmFuc2xhdGlvbk9wdGlvbiA9IDE7CiAgICB9CgogICAgIyBidWlsZCBzZWxlY3QgSFRNTAogICAgbXkgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbkpTT04oCiAgICAgICAgWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkUGFyYW17Q29sdW1uTmFtZX0sCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJERhdGEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY0tleScsCiAgICAgICAgICAgICAgICBUcmVlVmlldyAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17U2VsZWN0ZWRWYWx1ZX0sCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gJFRyYW5zbGF0aW9uT3B0aW9uLAogICAgICAgICAgICAgICAgQXV0b0NvbXBsZXRlID0+ICdvZmYnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAkSlNPTjsKfQoKc3ViIF9EZWZhdWx0Q29sdW1uU29ydCB7CgogICAgbXkgJURlZmF1bHRDb2x1bW5zID0gKAogICAgICAgIEN1ckRlcGxTaWduYWwgPT4gMTEwLAogICAgICAgIEN1ckluY2lTaWduYWwgPT4gMTExLAogICAgICAgIENsYXNzICAgICAgICAgPT4gMTEyLAogICAgICAgIE51bWJlciAgICAgICAgPT4gMTEzLAogICAgICAgIE5hbWUgICAgICAgICAgPT4gMTE0LAogICAgICAgIEN1ckRlcGxTdGF0ZSAgPT4gMTE1LAogICAgICAgIEN1ckluY2lTdGF0ZSAgPT4gMTE2LAogICAgICAgIExhc3RDaGFuZ2VkICAgPT4gMTE3LAogICAgKTsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGNhbiBub3QgYmUgb24gdGhlIERlZmF1bHRDb2x1bW5zIHNvcnRpbmcgaGFzaAogICAgIyB3aGVuIGNvbXBhcmluZyAyIGR5bmFtaWMgZmllbGRzIHNvcnRpbmcgbXVzdCBiZSBhbHBoYWJldGljYWwKICAgIGlmICggISREZWZhdWx0Q29sdW1uc3skYX0gJiYgISREZWZhdWx0Q29sdW1uc3skYn0gKSB7CiAgICAgICAgcmV0dXJuICRhIGNtcCAkYjsKICAgIH0KCiAgICAjIHdoZW4gYSBkeW5hbWljIGZpZWxkIGlzIGNvbXBhcmVkIHRvIGEgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGl0IG11c3QgYmUgaGlnaGVyCiAgICBlbHNpZiAoICEkRGVmYXVsdENvbHVtbnN7JGF9ICkgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgd2hlbiBhIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBpcyBjb21wYXJlZCB0byBhIGR5bmFtaWMgZmllbGQgaXQgbXVzdCBiZSBsb3dlcgogICAgZWxzaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRifSApIHsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgIyBvdGhlcndpc2UgZG8gYSBudW1lcmljYWwgY29tcGFyaXNvbiB3aXRoIHRoZSBjb25maWcgaXRlbSBhdHRyaWJ1dGVzCiAgICByZXR1cm4gJERlZmF1bHRDb2x1bW5zeyRhfSA8PT4gJERlZmF1bHRDb2x1bW5zeyRifTsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/ITSMConfigItem/OverviewSmall.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6T3ZlcnZpZXdTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6Okxhbmd1YWdlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SlNPTicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb2x1bW5GaWx0ZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBcJVBhcmFtOwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBzZXQgcHJlZiBmb3IgY29sdW1ucyBrZXkKICAgICRTZWxmLT57UHJlZktleUNvbHVtbnN9ID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZCcgLiAnLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn07CgogICAgIyBsb2FkIGJhY2tlbmQgY29uZmlnCiAgICBteSAkQmFja2VuZENvbmZpZ0tleSA9ICdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OicgLiAkU2VsZi0+e0FjdGlvbn07CiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJEJhY2tlbmRDb25maWdLZXkpOwoKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2V0IHN0b3JlZCBmaWx0ZXJzIGlmIHByZXNlbnQKICAgIG15ICRTdG9yZWRGaWx0ZXJzS2V5ID0gJ1VzZXJTdG9yZWRGaWx0ZXJDb2x1bW5zLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn07CiAgICBpZiAoICRQcmVmZXJlbmNlc3skU3RvcmVkRmlsdGVyc0tleX0gKSB7CiAgICAgICAgbXkgJFN0b3JlZEZpbHRlcnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5EZWNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyRTdG9yZWRGaWx0ZXJzS2V5fSwKICAgICAgICApOwogICAgICAgICRTZWxmLT57U3RvcmVkRmlsdGVyc30gPSAkU3RvcmVkRmlsdGVyczsKICAgIH0KCiAgICAjIGxvb2sgdXAgZmlsdGVyIGFzIGZpbHRlciBuYW1lcyBpbiAkU2VsZiBhcmUgcG90ZW50aWFsbHkgdHJhbnNsYXRlZAogICAgbXkgJEZpbHRlck5hbWU7CiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0ZpbHRlcnN9eyAkU2VsZi0+e0ZpbHRlcn0gfSApICkgewogICAgICAgIG15ICRJdGVtTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwoKICAgICAgICAkRmlsdGVyTmFtZSA9ICRJdGVtTGlzdC0+eyAkU2VsZi0+e0ZpbHRlcn0gfSAvLyAnJzsKICAgIH0KICAgICRGaWx0ZXJOYW1lIHx8PSAnQWxsJzsKCiAgICAjIGdhdGhlciBjb2x1bW4gY29uZmlnCiAgICAjICAgY29uZmlnIGZyb20gQWdlbnRJVFNNQ29uZmlnSXRlbSBvdmVydmlldyBpcyB1c2VkIGZvciBib3RoIG92ZXJ2aWV3IGFuZCBzZWFyY2ggcmVzdWx0IHZpZXcKICAgIG15ICRPdmVydmlld0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtJyk7CgogICAgJFNlbGYtPntDb25maWd9e0RlZmF1bHRDb2x1bW5zfSAgICAgICAgPSAkT3ZlcnZpZXdDb25maWctPntEZWZhdWx0Q29sdW1uc307CiAgICAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zQXZhaWxhYmxlfSA9ICRPdmVydmlld0NvbmZpZy0+e0NsYXNzQ29sdW1uc0F2YWlsYWJsZX07CiAgICAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zRGVmYXVsdH0gICA9ICRPdmVydmlld0NvbmZpZy0+e0NsYXNzQ29sdW1uc0RlZmF1bHR9OwogICAgJFNlbGYtPntDb25maWd9e0NsYXNzQ29sdW1uc0Rpc2FibGVkfSAgPSAkT3ZlcnZpZXdDb25maWctPntDbGFzc0NvbHVtbnNEaXNhYmxlZH07CiAgICBteSAlQ29sdW1uQ29uZmlnID0gJFNlbGYtPntDb25maWd9e0RlZmF1bHRDb2x1bW5zfS0+JSo7CgogICAgIyBpZiBjbGFzcyBmaWx0ZXIgaXMgc2V0LCBkaXNwbGF5IGNsYXNzIHNwZWNpZmljIGZpZWxkcwogICAgaWYgKCAkRmlsdGVyTmFtZSAmJiAkRmlsdGVyTmFtZSBuZSAnQWxsJyApIHsKCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zQXZhaWxhYmxlfSAmJiBJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNBdmFpbGFibGV9eyRGaWx0ZXJOYW1lfSApICkgewogICAgICAgICAgICBmb3IgbXkgJEF2YWlsYWJsZUNvbHVtbiAoICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNBdmFpbGFibGV9eyRGaWx0ZXJOYW1lfS0+QCogKSB7CiAgICAgICAgICAgICAgICAkQ29sdW1uQ29uZmlneyRBdmFpbGFibGVDb2x1bW59ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zRGVmYXVsdH0gJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zRGVmYXVsdH17JEZpbHRlck5hbWV9ICkgKSB7CiAgICAgICAgICAgIGZvciBteSAkRGVmYXVsdENvbHVtbiAoICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNEZWZhdWx0fXskRmlsdGVyTmFtZX0tPkAqICkgewogICAgICAgICAgICAgICAgJENvbHVtbkNvbmZpZ3skRGVmYXVsdENvbHVtbn0gPSAyOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNEaXNhYmxlZH0gJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbmZpZ317Q2xhc3NDb2x1bW5zRGlzYWJsZWR9eyRGaWx0ZXJOYW1lfSApICkgewogICAgICAgICAgICBmb3IgbXkgJERpc2FibGVkQ29sdW1uICggJFNlbGYtPntDb25maWd9e0NsYXNzQ29sdW1uc0Rpc2FibGVkfXskRmlsdGVyTmFtZX0tPkAqICkgewogICAgICAgICAgICAgICAgJENvbHVtbkNvbmZpZ3skRGlzYWJsZWRDb2x1bW59ID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIG1lcmdlIHNldHRpbmdzIGZyb20gY2xhc3MgY29uZmlnIGFuZCBkZWZhdWx0IGNvbmZpZwogICAgQ09MVU1OOgogICAgZm9yIG15ICRDb2x1bW4gKCBzb3J0IF9EZWZhdWx0Q29sdW1uU29ydCBrZXlzICVDb2x1bW5Db25maWcgKSB7CgogICAgICAgICMgc2tpcCBkaXNhYmxlZCBjb2x1bW5zCiAgICAgICAgbmV4dCBDT0xVTU4gdW5sZXNzICRDb2x1bW5Db25maWd7JENvbHVtbn07CgogICAgICAgIGlmICggIWdyZXAgeyAkXyBlcSAkQ29sdW1uIH0gJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCogKSB7CiAgICAgICAgICAgIHB1c2ggJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCosICRDb2x1bW47CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb2x1bW5Db25maWd7JENvbHVtbn0gPT0gMiAmJiAhZ3JlcCB7ICRfIGVxICRDb2x1bW4gfSAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfS0+QCogKSB7CiAgICAgICAgICAgIHB1c2ggJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0tPkAqLCAkQ29sdW1uOwogICAgICAgIH0KICAgIH0KCiAgICAjIGlmIHByZWZlcmVuY2Ugc2V0dGluZ3MgYXJlIGF2YWlsYWJsZSwgb3ZlcndyaXRlIGVuYWJsZWQgY29sdW1ucyB3aXRoIHByZWZlcmVuY2VzCiAgICBpZiAoICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uc30gfSApIHsKCiAgICAgICAgbXkgJENvbHVtbnNFbmFibGVkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkpTT04nKS0+RGVjb2RlKAogICAgICAgICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uc30gfSwKICAgICAgICApOwoKICAgICAgICAjIGZpbHRlciBkaXNhYmxlZCBjb2x1bW5zCiAgICAgICAgbXkgQEZpbHRlcmVkQ29sdW1uc0VuYWJsZWQ7CiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJENvbHVtbnNFbmFibGVkKSApIHsKCiAgICAgICAgICAgIENPTFVNTjoKICAgICAgICAgICAgZm9yIG15ICRDb2x1bW4gKCAkQ29sdW1uc0VuYWJsZWQtPkAqICkgewoKICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OIHVubGVzcyAkQ29sdW1uQ29uZmlneyRDb2x1bW59OwoKICAgICAgICAgICAgICAgIHB1c2ggQEZpbHRlcmVkQ29sdW1uc0VuYWJsZWQsICRDb2x1bW47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9ID0gXEBGaWx0ZXJlZENvbHVtbnNFbmFibGVkOwogICAgfQoKICAgICMgYWx3YXlzIHNldCBjb25maWcgaXRlbSBudW1iZXIKICAgIGlmICggIWdyZXAgeyAkXyBlcSAnTnVtYmVyJyB9ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9LT5AKiApIHsKICAgICAgICB1bnNoaWZ0ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9LT5AKiwgJ051bWJlcic7CiAgICB9CiAgICBpZiAoICFncmVwIHsgJF8gZXEgJ051bWJlcicgfSAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9LT5AKiApIHsKICAgICAgICB1bnNoaWZ0ICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0tPkAqLCAnTnVtYmVyJzsKICAgIH0KCiAgICAjIGdldCBuZWNlc3NhcnkgZHluYW1pYyBmaWVsZCBvYmplY3RzCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgY29sbGVjdCBkeW5hbWljIGZpZWxkcyBhbmQgc2V0IGF2YWlsYWJsZSBhbmQgdmFsaWQgZmlsdGVyIGFuZCBzb3J0YWJsZSBjb2x1bW5zCiAgICBEWU5BTUlDRklFTEROQU1FOgogICAgZm9yIG15ICREeW5hbWljRmllbGROYW1lICggJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCogKSB7CgogICAgICAgIG15ICRGaWVsZE5hbWU7CiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkTmFtZSA9fiBteyBEeW5hbWljRmllbGRfKD88RmllbGROYW1lPltBLVphLXowLTlcLV0rKSB9eG1zICkgewogICAgICAgICAgICAkRmllbGROYW1lID0gJCt7RmllbGROYW1lfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxETkFNRTsKICAgICAgICB9CgogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICAgICApOwoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRE5BTUUgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAjIHN0b3JlIGZpZWxkIGNvbmZpZwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IGVxICdJVFNNQ29uZmlnSXRlbScgKSB7CiAgICAgICAgICAgIHB1c2ggJFNlbGYtPntEeW5hbWljRmllbGR9LT5AKiwgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZmlsdHJhYmxlIGFuZCBzb3J0YWJsZSBiZWhhdmlvcnMKICAgICAgICBmb3IgbXkgJEJlaGF2aW9yIChxdyhGaWx0cmFibGUgU29ydGFibGUpKSB7CgogICAgICAgICAgICBteSAkSGFzQmVoYXZpb3IgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAiSXMkQmVoYXZpb3IiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRIYXNCZWhhdmlvcikgewogICAgICAgICAgICAgICAgJFNlbGYtPnsiQXZhaWxhYmxlJHtCZWhhdmlvcn1Db2x1bW5zIn17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGhhc2ggd2l0aCBhbGwgdmFsaWQgc29ydGFibGUgY29sdW1ucyAodGFrZW4gZnJvbSBJVFNNQ29uZmlnSXRlbVNlYXJjaCkKICAgICMgU29ydEJ5ICA9PiAnQWdlJywgICAjIENyZWF0ZWR8TnVtYmVyfENoYW5nZWR8TmFtZXxEZXBsU3RhdGV8Q3VyRGVwbFN0YXRlCiAgICAjIHxJbmNpU3RhdGV8Q3VySW5jaVN0YXRlCiAgICAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfSA9IHsKICAgICAgICAnQWdlJyAgICAgICAgICA9PiAxLAogICAgICAgICdOdW1iZXInICAgICAgID0+IDEsCiAgICAgICAgJ05hbWUnICAgICAgICAgPT4gMSwKICAgICAgICAnQ3JlYXRlZCcgICAgICA9PiAxLAogICAgICAgICdMYXN0Q2hhbmdlZCcgID0+IDEsCiAgICAgICAgJ0RlcGxTdGF0ZScgICAgPT4gMSwKICAgICAgICAnQ3VyRGVwbFN0YXRlJyA9PiAxLAogICAgICAgICdJbmNpU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckluY2lTdGF0ZScgPT4gMSwKICAgIH07CgogICAgJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfSA9IHsKICAgICAgICBkZWZpbmVkICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30KICAgICAgICA/ICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30tPiUqCiAgICAgICAgOiAoKSwKICAgICAgICAnQ2xhc3MnICAgICAgICA9PiAxLAogICAgICAgICdEZXBsU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckRlcGxTdGF0ZScgPT4gMSwKICAgICAgICAnSW5jaVN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJJbmNpU3RhdGUnID0+IDEsCiAgICB9OwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIEFjdGlvblJvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2V0IGZyb250ZW5kIHBlciBkZWZhdWx0IHRvIGFnZW50CiAgICAkUGFyYW17RnJvbnRlbmR9IC8vPSAnQWdlbnQnOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBpZiBidWxrIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgbXkgJEJ1bGtGZWF0dXJlID0gMDsKICAgIGlmICggJFBhcmFte0J1bGt9ICYmICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZScpICkgewogICAgICAgIG15IEBHcm91cHM7CiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcpICkgewogICAgICAgICAgICBAR3JvdXBzID0gQHsgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSB9OwogICAgICAgIH0KICAgICAgICBpZiAoICFAR3JvdXBzICkgewogICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJEdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CiAgICAgICAgICAgIEdST1VQOgogICAgICAgICAgICBmb3IgbXkgJEdyb3VwIChAR3JvdXBzKSB7CiAgICAgICAgICAgICAgICBteSAkSGFzUGVybWlzc2lvbiA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRHcm91cCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoJEhhc1Blcm1pc3Npb24pIHsKICAgICAgICAgICAgICAgICAgICAkQnVsa0ZlYXR1cmUgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgR1JPVVA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRBY3Rpb25Sb3cnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgaWYgKCRCdWxrRmVhdHVyZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEb2N1bWVudEFjdGlvblJvd0J1bGsnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRhYmxlKCdCdWxrJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZXJlIHdhcyBhIGNvbHVtbiBmaWx0ZXIgYW5kIG5vIHJlc3VsdHMsIGFuZCBwcmludCBhIGxpbmsgdG8gYmFjawogICAgaWYgKCBzY2FsYXIgQHsgJFBhcmFte0NvbmZpZ0l0ZW1JRHN9IH0gPT0gMCAmJiAkUGFyYW17TGFzdENvbHVtbkZpbHRlcn0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50QWN0aW9uUm93TGFzdENvbHVtbkZpbHRlcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIHJlZ3VsYXIgY29sdW1ucwogICAgbXkgJENvbHVtbnMgPSAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gfHwge307CiAgICBpZiAoICRDb2x1bW5zICYmIElzSGFzaFJlZldpdGhEYXRhKCRDb2x1bW5zKSApIHsKCiAgICAgICAgQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29sdW1uICggc29ydCBrZXlzICV7JENvbHVtbnN9ICkgewoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIHRyYW5zbGF0ZWQgaW4gdGhlIG5leHQgYmxvY2sKICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgJENvbHVtbiA9fiBteyBcQSBEeW5hbWljRmllbGRfIH14bXM7CgogICAgICAgICAgICBteSAkVHJhbnNsYXRlZFdvcmQgPSAkQ29sdW1uOwogICAgICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ0RlcGxTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnSW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZVR5cGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnTGFzdCBjaGFuZ2VkJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW4nIC4gJENvbHVtbiwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCRUcmFuc2xhdGVkV29yZCksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIGR5bmFtaWMgZmllbGQgY29sdW1ucwogICAgbXkgJENvbHVtbnNEeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgKTsKCiAgICBpZiAoICRDb2x1bW5zRHluYW1pY0ZpZWxkICYmIElzQXJyYXlSZWZXaXRoRGF0YSgkQ29sdW1uc0R5bmFtaWNGaWVsZCkgKSB7CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggc29ydCBAeyRDb2x1bW5zRHluYW1pY0ZpZWxkfSApIHsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkOwoKICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5EeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkLT57TGFiZWx9ICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgU29ydE9yZGVyQmFyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICcnOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBJZiAkUGFyYW17RW5hYmxlQ29sdW1uRmlsdGVyc30gaXMgbm90IHNlbnQsIHdlIHdhbnQgdG8gZGlzYWJsZSBhbGwgZmlsdGVycwogICAgIyAgIGZvciB0aGUgY3VycmVudCBzY3JlZW4uIFdlIGxvY2FsaXplIHRoZSBzZXR0aW5nIGZvciB0aGlzIHN1YiBhbmQgY2hhbmdlIGl0CiAgICAjICAgYWZ0ZXIgdGhhdCwgaWYgbmVlZGVkLiBUaGUgb3JpZ2luYWwgdmFsdWUgd2lsbCBiZSByZXN0b3JlZCBhZnRlciB0aGlzIGZ1bmN0aW9uLgogICAgbG9jYWwgJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfSA9ICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc307CiAgICBpZiAoICEkUGFyYW17RW5hYmxlQ29sdW1uRmlsdGVyc30gKSB7CiAgICAgICAgJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfSA9IHt9OyAgICAjIGRpc2FibGUgYWxsIGNvbHVtbiBmaWx0ZXJzCiAgICB9CgogICAgZm9yIG15ICRJdGVtIChxdyhDb25maWdJdGVtSURzIFBhZ2VTaG93biBTdGFydEhpdCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEl0ZW19ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkSXRlbSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIGluY2lkZW50IHNpZ25hbHMKICAgIG15ICVJbmNpU2lnbmFscyA9ICgKICAgICAgICBUcmFuc2xhdGFibGUoJ29wZXJhdGlvbmFsJykgPT4gJ2dyZWVubGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ3dhcm5pbmcnKSAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCdpbmNpZGVudCcpICAgID0+ICdyZWRsZWQnLAogICAgKTsKCiAgICAjIHN0b3JlIGRlcGxveW1lbnQgc2lnbmFscwogICAgbXkgJURlcGxTaWduYWxzOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGxpc3Qgb2YgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15ICREZXBsb3ltZW50U3RhdGVzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgc2V0IGRlcGxveW1lbnQgc3R5bGUgY29sb3JzCiAgICBteSAkU3R5bGVDbGFzc2VzID0gJyc7CgogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJXskRGVwbG95bWVudFN0YXRlc0xpc3R9ICkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJUdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYSBjb2xvciBpcyBkZWZpbmVkIGluIHByZWZlcmVuY2VzCiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2Vze0NvbG9yfTsKICAgICAgICBteSAoJENvbG9yKSA9ICRHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2Vze0NvbG9yfS0+QCo7CiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRDb2xvcjsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZQogICAgICAgIG15ICREZXBsU3RhdGUgPSAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfTsKCiAgICAgICAgIyByZW1vdmUgYW55IG5vbiBhc2NpaSB3b3JkIGNoYXJhY3RlcnMKICAgICAgICAkRGVwbFN0YXRlID1+IHN7IFteYS16QS1aMC05XSB9e199bXN4ZzsKCiAgICAgICAgIyBzdG9yZSB0aGUgb3JpZ2luYWwgZGVwbG95bWVudCBzdGF0ZSBhcyBrZXkKICAgICAgICAjIGFuZCB0aGUgc3Mgc2FmZSBjb252ZXJ0ZWQgZGVwbG95bWVudCBzdGF0ZSBhcyB2YWx1ZQogICAgICAgICREZXBsU2lnbmFsc3sgJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH0gfSA9ICREZXBsU3RhdGU7CgogICAgICAgICMgY29udmVydCB0byBsb3dlciBjYXNlCiAgICAgICAgbXkgJERlcGxTdGF0ZUNvbG9yID0gKCBsYyAkQ29sb3IgKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgIyBhZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcKICAgICAgICAkU3R5bGVDbGFzc2VzIC49ICIKICAgICAgICAgICAgLkZsYWcgc3Bhbi4kRGVwbFN0YXRlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMkRGVwbFN0YXRlQ29sb3I7CiAgICAgICAgICAgIH0KICAgICAgICAiOwogICAgfQoKICAgICMgd3JhcCBpbnRvIHN0eWxlIHRhZ3MKICAgIGlmICgkU3R5bGVDbGFzc2VzKSB7CiAgICAgICAgJFN0eWxlQ2xhc3NlcyA9ICI8c3R5bGU+JFN0eWxlQ2xhc3Nlczwvc3R5bGU+IjsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIG15ICRCdWxrRmVhdHVyZSA9IDA7CiAgICBpZiAoICRQYXJhbXtCdWxrfSAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmUnKSApIHsKICAgICAgICBteSBAR3JvdXBzOwogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSApIHsKICAgICAgICAgICAgQEdyb3VwcyA9IEB7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZUdyb3VwJykgfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAhQEdyb3VwcyApIHsKICAgICAgICAgICAgJEJ1bGtGZWF0dXJlID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwogICAgICAgICAgICBHUk9VUDoKICAgICAgICAgICAgZm9yIG15ICRHcm91cCAoQEdyb3VwcykgewogICAgICAgICAgICAgICAgbXkgJEhhc1Blcm1pc3Npb24gPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIEdyb3VwTmFtZSA9PiAkR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdydycsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCRIYXNQZXJtaXNzaW9uKSB7CiAgICAgICAgICAgICAgICAgICAgJEJ1bGtGZWF0dXJlID0gMTsKICAgICAgICAgICAgICAgICAgICBsYXN0IEdST1VQOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb3VudGVyID0gMDsKICAgIG15IEBDb25maWdJdGVtQm94OwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyAkUGFyYW17Q29uZmlnSXRlbUlEc30gfSApIHsKICAgICAgICAkQ291bnRlcisrOwogICAgICAgIGlmICggJENvdW50ZXIgPj0gJFBhcmFte1N0YXJ0SGl0fSAmJiAkQ291bnRlciA8ICggJFBhcmFte1BhZ2VTaG93bn0gKyAkUGFyYW17U3RhcnRIaXR9ICkgKSB7CgogICAgICAgICAgICAjIEdldCBjb25maWcgaXRlbSBkYXRhLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbVJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtUmVmLT4lKjsKCiAgICAgICAgICAgICMgc2V0IGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHNpZ25hbHMKICAgICAgICAgICAgJENvbmZpZ0l0ZW17Q3VyRGVwbFNpZ25hbH0gPSAkRGVwbFNpZ25hbHN7ICRDb25maWdJdGVte0N1ckRlcGxTdGF0ZX0gfTsKICAgICAgICAgICAgJENvbmZpZ0l0ZW17Q3VySW5jaVNpZ25hbH0gPSAkSW5jaVNpZ25hbHN7ICRDb25maWdJdGVte0N1ckluY2lTdGF0ZVR5cGV9IH07CgogICAgICAgICAgICAjIGZpbGwgY29sdW1uIG5hbWUgYXR0cmlidXRlIHdpdGggY29ycmVzcG9uZGluZyBpdGVtIGF0dHJpYnV0ZQogICAgICAgICAgICAkQ29uZmlnSXRlbXtDcmVhdGVkfSAgICAgPSAkQ29uZmlnSXRlbXtDcmVhdGVUaW1lfTsKICAgICAgICAgICAgJENvbmZpZ0l0ZW17TGFzdENoYW5nZWR9ID0gJENvbmZpZ0l0ZW17Q2hhbmdlVGltZX07CgogICAgICAgICAgICAjIGdldCBBQ0wgcmVzdHJpY3Rpb25zCiAgICAgICAgICAgIG15ICVQb3NzaWJsZUFjdGlvbnM7CiAgICAgICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgICAgICMgZ2V0IGFsbCByZWdpc3RlcmVkIEFjdGlvbnMKICAgICAgICAgICAgaWYgKCByZWYgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1vZHVsZScpIGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICAgICBteSAlQWN0aW9ucyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNb2R1bGUnKSB9OwoKICAgICAgICAgICAgICAgICMgb25seSB1c2UgdGhvc2UgQWN0aW9ucyB0aGF0IHN0YXRzIHdpdGggQWdlbnRJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgICAgJVBvc3NpYmxlQWN0aW9ucyA9IG1hcCB7ICsrJENvdW50ZXIgPT4gJF8gfQogICAgICAgICAgICAgICAgICAgIGdyZXAgeyBzdWJzdHIoICRfLCAwLCBsZW5ndGggJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nICkgZXEgJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nIH0KICAgICAgICAgICAgICAgICAgICBzb3J0IGtleXMgJUFjdGlvbnM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRBQ0w7CiAgICAgICAgICAgIG15ICVBY2xBY3Rpb24gPSAlUG9zc2libGVBY3Rpb25zOwoKICAgICAgICAgICAgJEFDTCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJVBvc3NpYmxlQWN0aW9ucywKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnQWN0aW9uJywKICAgICAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJy0nLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICAgICAlQWNsQWN0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2xBY3Rpb25EYXRhKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcnVuIGNvbmZpZyBpdGVtIHByZSBtZW51IG1vZHVsZXMKICAgICAgICAgICAgbXkgQEFjdGlvbkl0ZW1zOwogICAgICAgICAgICBpZiAoIHJlZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHJlTWVudU1vZHVsZScpIGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIG15ICVNZW51cyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQcmVNZW51TW9kdWxlJykgfTsKICAgICAgICAgICAgICAgIE1FTlU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJE1lbnUgKCBzb3J0IGtleXMgJU1lbnVzICkgewoKICAgICAgICAgICAgICAgICAgICAjIGxvYWQgbW9kdWxlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJE1lbnVzeyRNZW51fS0+e01vZHVsZX0gKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbXkgJE9iamVjdCA9ICRNZW51c3skTWVudX0tPntNb2R1bGV9LT5uZXcoCiAgICAgICAgICAgICAgICAgICAgICAgICV7JFNlbGZ9LAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIHJ1biBtb2R1bGUKICAgICAgICAgICAgICAgICAgICBteSAkSXRlbSA9ICRPYmplY3QtPlJ1bigKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtID0+IFwlQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgQUNMICAgICAgICA9PiBcJUFjbEFjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnICAgICA9PiAkTWVudXN7JE1lbnV9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBNRU5VIGlmICEkSXRlbTsKICAgICAgICAgICAgICAgICAgICBuZXh0IE1FTlUgaWYgcmVmICRJdGVtIG5lICdIQVNIJzsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgc2Vzc2lvbiBpZCBpZiBuZWVkZWQKICAgICAgICAgICAgICAgICAgICBpZiAoICEkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbklEQ29va2llfSAmJiAkSXRlbS0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkSXRlbS0+e0xpbmt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuPSAnOycKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e1Nlc3Npb25OYW1lfSAuICc9JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbklEfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGlkCiAgICAgICAgICAgICAgICAgICAgJEl0ZW0tPntJRH0gPSAkSXRlbS0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgICRJdGVtLT57SUR9ID1+IHMvKFxzfCZ8OykvL2lnOwoKICAgICAgICAgICAgICAgICAgICBteSAkT3V0cHV0OwogICAgICAgICAgICAgICAgICAgIGlmICggJEl0ZW0tPntCbG9ja30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkSXRlbS0+e0Jsb2NrfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJEl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRPdXRwdXQgPSAnPGxpIGlkPSInCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRJdGVtLT57SUR9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICciPjxhIGhyZWY9IiMiIHRpdGxlPSInCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEl0ZW0tPntEZXNjcmlwdGlvbn0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnIj4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEl0ZW0tPntOYW1lfSApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICc8L2E+PC9saT4nOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJE91dHB1dCA9fiBzL1xuKy8vZzsKICAgICAgICAgICAgICAgICAgICAkT3V0cHV0ID1+IHMvXHMrLyAvZzsKICAgICAgICAgICAgICAgICAgICAkT3V0cHV0ID1+IHMvPFwhLS0uKz8tLT4vL2c7CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQEFjdGlvbkl0ZW1zLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhUTUwgICAgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgIElEICAgICAgICAgID0+ICRJdGVtLT57SUR9LAogICAgICAgICAgICAgICAgICAgICAgICBMaW5rICAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57QmFzZWxpbmt9IC4gJEl0ZW0tPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0ICAgICAgPT4gJEl0ZW0tPntUYXJnZXR9LAogICAgICAgICAgICAgICAgICAgICAgICBQb3B1cFR5cGUgICA9PiAkSXRlbS0+e1BvcHVwVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICRJdGVtLT57RGVzY3JpcHRpb259LAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9ID0gXEBBY3Rpb25JdGVtczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQm94LCBcJUNvbmZpZ0l0ZW07CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgY29sdW1uc2VuYWJsZWQgaXMgYSBmaWxsZWQgYXJyYXkgcmVmZXJlbmNkCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0gKSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBjb2x1bW4gaXMgcmVhbGx5IGZpbHRlcmFibGUKICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIEB7ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW5OYW1lfTsKICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbk5hbWV9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbHVtblZhbHVlcyA9ICRTZWxmLT5fR2V0Q29sdW1uVmFsdWVzKAogICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiAkUGFyYW17T3JpZ2luYWxDb25maWdJdGVtSURzfSwKICAgICk7CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnTGlua1BhZ2UnLAogICAgICAgIFZhbHVlID0+ICRQYXJhbXtMaW5rUGFnZX0sCiAgICApOwogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdDYXRlZ29yeScsCiAgICAgICAgVmFsdWUgPT4gJFBhcmFte0NhdGVnb3J5RmlsdGVyfSwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRDb250ZW50JywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgYXJyYXkgdG8gc2F2ZSB0aGUgY29sdW1uIG5hbWVzIHRvIGRvIHRoZSBxdWVyeQogICAgbXkgQENvbCA9IEB7ICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9IH07CgogICAgIyBkZWZpbmUgc3BlY2lhbCBjb25maWcgaXRlbSBjb2x1bW5zCiAgICBteSAlU3BlY2lhbENvbHVtbnMgPSAoCiAgICAgICAgTnVtYmVyID0+IDEsCiAgICApOwoKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICRQYXJhbXtPcmRlckJ5fSA9ICRQYXJhbXtPcmRlckJ5fSB8fCAnVXAnOwogICAgJFBhcmFte1NvcnRCeX0gID0gJFBhcmFte1NvcnRCeX0gIHx8ICdOdW1iZXInOwoKICAgIG15ICRDb25maWdJdGVtRGF0YSA9IHNjYWxhciBAQ29uZmlnSXRlbUJveDsKICAgIGlmICgkQ29uZmlnSXRlbURhdGEpIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3VGFibGUnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFN0eWxlQ2xhc3NlcyA9PiAkU3R5bGVDbGFzc2VzLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1RhYmxlSGVhZGVyJyApOwoKICAgICAgICBpZiAoJEJ1bGtGZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3SGVhZGVyJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdCdWxrTmF2QmFyJywKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRDU1MgPSAnJzsKCiAgICAgICAgIyBzaG93IHNwZWNpYWwgY29uZmlnIGl0ZW0gY29sdW1ucywgaWYgbmVlZGVkCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgIENPTFVNTjoKICAgICAgICBmb3IgbXkgJENvbHVtbiAoQENvbCkgewogICAgICAgICAgICBteSAkU3RhdGljQ29sdW1uID0gISRDb3VudGVyOwogICAgICAgICAgICAkQ291bnRlcisrOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXInLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENTUyA9ICRDb2x1bW4gLiAoICRTdGF0aWNDb2x1bW4gPyAnIFN0YXRpY0NvbHVtbicgOiAnJyApOwogICAgICAgICAgICBteSAkVGl0bGUgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKICAgICAgICAgICAgbXkgJE9yZGVyQnkgPSAkUGFyYW17T3JkZXJCeX07CgogICAgICAgICAgICAjIFRyYW5zZm9ybSBmaWx0ZXIgbmFtZSB0byBjb2x1bW4gbmFtZQogICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9IGVxICdDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtTb3J0Qnl9ID0gJ0xhc3RDaGFuZ2VkJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRwdXQgb3ZlcmFsbCBibG9jayBzbyBOdW1iZXIgYXMgd2VsbCBhcyBvdGhlciBjb2x1bW5zIGNhbiBiZSBvcmRlcmVkCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29uZmlnSXRlbUhlYWRlcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkU3BlY2lhbENvbHVtbnN7JENvbHVtbn0gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICRDb2x1bW4gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBvcmRlciBmb3Igc29ydGluZyBjb2x1bW4uCiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAkT3JkZXJCeSBlcSAnVXAnID8gJ0Rvd24nIDogJ1VwJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgY29sdW1uIG5hbWUgdG8gd3JpdGUgaXQgaW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKCiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGUgICAgID0gJFRyYW5zbGF0ZWRXb3JkOwogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIG5vdCBhY3RpdmUnKTsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9ICYmCiAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JENvbHVtbn0gfHwKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyAkQ29sdW1uIC4gJ0lEcycgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIEZpbHRlckFjdGl2ZSc7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIGFjdGl2ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmlsdGVyVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZSAuPSAnLCAnIC4gJEZpbHRlclRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICJPdmVydmlld05hdkJhclBhZ2UkQ29sdW1uIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTICAgICAgICAgICAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGZpbHRlcmFibGUgYW5kIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbn0KICAgICAgICAgICAgICAgICAgICAmJiAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgaHRtbCBjb2RlCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBmaWx0ZXJhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBzb3J0YWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5MaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5FbXB0eScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICRDb2x1bW4gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBvcmRlciBmb3Igc29ydGluZyBjb2x1bW4uCiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAkT3JkZXJCeSBlcSAnVXAnID8gJ0Rvd24nIDogJ1VwJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgY29sdW1uIG5hbWUgdG8gd3JpdGUgaXQgaW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJEZXBsU3RhdGVUeXBlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlcGxveW1lbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdJbmNpU3RhdGUnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGFzdCBjaGFuZ2VkJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlICAgICA9ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBub3QgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57U3RvcmVkRmlsdGVyc30gJiYgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyAkQ29sdW1uIC4gJ0lEcycgfSApIHsKICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgRmlsdGVyQWN0aXZlJzsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRGaWx0ZXJUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlIC49ICcsICcgLiAkRmlsdGVyVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGZpbHRlcmFibGUgYW5kIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbn0KICAgICAgICAgICAgICAgICAgICAmJiAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMganVzdCBmaWx0ZXJhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JENvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkVtcHR5JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2hvdyB0aGUgREZzCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgICAgICBteSAkREZDb2x1bW4gPSAkQ29sdW1uOwogICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgbXkgJExhYmVsID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICAgICAgICAgICRUaXRsZSA9ICRMYWJlbDsKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZSA9ICRMYWJlbDsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBzb3J0YWJsZSBjb25kaXRpb24KICAgICAgICAgICAgICAgIG15ICRJc1NvcnRhYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNTb3J0YWJsZScsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAgICAgICAgIG15ICRDU1MgPSAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17U29ydEJ5fQogICAgICAgICAgICAgICAgICAgICAgICAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICggJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ICkgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBDaGFuZ2Ugb3JkZXIgZm9yIHNvcnRpbmcgY29sdW1uLgogICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICRPcmRlckJ5IGVxICdVcCcgPyAnRG93bicgOiAnVXAnOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBhc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0RGVzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBub3QgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9ICYmICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIEZpbHRlckFjdGl2ZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBhY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmlsdGVyVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGUgLj0gJywgJyAuICRGaWx0ZXJUaXRsZURlc2M7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyREeW5hbWljRmllbGROYW1lfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlU29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGV4YW1wbGUgb2YgZHluYW1pYyBmaWVsZHMgb3JkZXIgY3VzdG9taXphdGlvbgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyREeW5hbWljRmllbGROYW1lfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX0ZpbHRyYWJsZVNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX1NvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZE5hbWUgPSAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgbXkgJENTUyAgICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkTmFtZTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskRHluYW1pY0ZpZWxkTmFtZX0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZEZpbHRyYWJsZU5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkTm90U29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JER5bmFtaWNGaWVsZE5hbWV9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX0ZpbHRyYWJsZU5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ19Ob3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdUYWJsZUJvZHknICk7CgogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ05vQ29uZmlnSXRlbUZvdW5kJyApOwogICAgfQoKICAgICMgYmFjayBsaW5rCiAgICBpZiAoICRQYXJhbXtMaW5rQmFja30gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUJhY2snLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgIFByb2ZpbGUgPT4gJFBhcmFte1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkUGFyYW17Q2xhc3NJRH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZpbHRlciBzZWxlY3Rpb24KICAgIGlmICggJFBhcmFte0ZpbHRlcnN9ICkgewoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmlsdGVycycsCiAgICAgICAgKTsKCiAgICAgICAgbXkgQE5hdkJhckZpbHRlcnM7CiAgICAgICAgZm9yIG15ICRQcmlvICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXsgJFBhcmFte0ZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQE5hdkJhckZpbHRlcnMsICRQYXJhbXtGaWx0ZXJzfS0+eyRQcmlvfTsKICAgICAgICB9CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NpZGVCYXJGaWx0ZXInLAogICAgICAgICk7CiAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICBmb3IgbXkgJEZpbHRlciAoQE5hdkJhckZpbHRlcnMpIHsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgICAgIGlmICggJENvdW50ID09IHNjYWxhciBATmF2QmFyRmlsdGVycyApIHsKICAgICAgICAgICAgICAgICRGaWx0ZXItPntDU1N9ID0gJ0xhc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlckl0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICRGaWx0ZXItPntGaWx0ZXJ9IGVxICRQYXJhbXtGaWx0ZXJ9ICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NpZGVCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgJVNwZWNpYWxDb2x1bW5zID0gKAogICAgICAgIE51bWJlciAgICAgICA9PiAxLAogICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAxLAogICAgICAgIEN1ckluY2lTdGF0ZSA9PiAxLAogICAgKTsKCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1SZWYgKEBDb25maWdJdGVtQm94KSB7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICV7JENvbmZpZ0l0ZW1SZWZ9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgRGF0YSA9PiB7JUNvbmZpZ0l0ZW19LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgICAgICBpZiAoJEJ1bGtGZWF0dXJlKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+IFRyYW5zbGF0YWJsZSgnQnVsaycpLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JUNvbmZpZ0l0ZW19LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICAgICAjIHNhdmUgY29sdW1uIGNvbnRlbnQKICAgICAgICBteSAkRGF0YVZhbHVlOwoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICMgc2hvdyBhbGwgbmVlZGVkIGNvbHVtbnMKICAgICAgICBDT05GSUdJVEVNQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNvbHVtbiAoQENvbCkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyYWxPdmVydmlld1JvdycsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRTdGF0aWNDb2x1bW4gPSAhJENvdW50ZXI7CiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRDb25maWdJdGVtRGF0YScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkU3BlY2lhbENvbHVtbnN7JENvbmZpZ0l0ZW1Db2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbmZpZ0l0ZW1Db2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNDb2x1bW4gPT4gJFN0YXRpY0NvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZEJ5JyApIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJUNvbmZpZ0l0ZW1DcmVhdGVkQnlJbmZvID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJENvbmZpZ0l0ZW17Q3JlYXRlQnl9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRDb25maWdJdGVtQ3JlYXRlZEJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbUNyZWF0ZWRCeUluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNDb2x1bW4gPT4gJFN0YXRpY0NvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUNPTFVNTjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkQmxvY2tUeXBlID0gJyc7CiAgICAgICAgICAgICAgICBteSAkQ1NTQ2xhc3MgID0gJFN0YXRpY0NvbHVtbiA/ICdTdGF0aWNDb2x1bW4nIDogJyc7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0RlcGxTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgICAgICAgICAgICAgIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdJbmNpU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ2xhc3MnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVHJhbnNsYXRhYmxlJzsKICAgICAgICAgICAgICAgICAgICAkRGF0YVZhbHVlID0gJENvbmZpZ0l0ZW17JENvbmZpZ0l0ZW1Db2x1bW59OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZCcgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0NoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRDb25maWdJdGVteyRDb25maWdJdGVtQ29sdW1ufTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXskQ29uZmlnSXRlbUNvbHVtbn07CgogICAgICAgICAgICAgICAgICAgICMgSWYgdmFsdWUgaXMgaW4gZGF0ZSBmb3JtYXQsIGNoYW5nZSBibG9jayB0eXBlIHRvICdUaW1lJyBzbyBpdCBjYW4gYmUgbG9jYWxpemVkLiBTZWUgYnVnIzE0NTQyLgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCAkRGF0YVZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICYmICREYXRhVmFsdWUgPX4gL15cZFxkXGRcZC0oXGR8XGRcZCktKFxkfFxkXGQpXHMoXGR8XGRcZCk6KFxkfFxkXGQpOihcZHxcZFxkKSQvCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW4kQmxvY2tUeXBlIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJpY1ZhbHVlID0+ICREYXRhVmFsdWUgfHwgJy0nLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENTU0NsYXNzICB8fCAnJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRDb25maWdJdGVtQ29sdW1uOwogICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1DT0xVTU4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIHZhbHVlCiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVte1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRWYWx1ZVN0cmcgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWVNYXhDaGFycyAgICAgID0+IDIwLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFZhbHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFZhbHVlU3RyZy0+e0xpbmt9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICdfTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57TGlua30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19QbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQgYWN0aW9uIGl0ZW1zIGFzIGpzCiAgICAgICAgaWYgKCAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gKSB7CgogICAgICAgICAgICAjIHJlcGxhY2UgVFQgZGlyZWN0aXZlcyBmcm9tIHN0cmluZyB3aXRoIHZhbHVlcwogICAgICAgICAgICBmb3IgbXkgJEFjdGlvbkl0ZW0gKCBAeyAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gfSApIHsKICAgICAgICAgICAgICAgICRBY3Rpb25JdGVtLT57TGlua30gPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJEFjdGlvbkl0ZW0tPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjICRBY3Rpb25Sb3dDb25maWdJdGVtc3sgJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSB9ID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSggRGF0YSA9PiAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30gKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtQWN0aW9uUm93LicgLiAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW17QWN0aW9uSXRlbXN9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBjb2x1bW4gZmlsdGVyIGZvcm0sIHRvIGNvcnJlY3RseSBmaWxsIHRoZSBjb2x1bW4gZmlsdGVycyBpcyBuZWNlc3NhcnkgdG8gcGFzcyBlYWNoCiAgICAjICAgIG92ZXJ2aWV3IHNvbWUgaW5mb3JtYXRpb24gaW4gdGhlIEFKQVggY2FsbCwgZm9yIGV4YW1wbGUgdGhlIGZpeGVkIEZpbHRlcnMgb3IgTmF2QmFyRmlsdGVycwogICAgIyAgICBhbmQgYWxzbyBvdGhlciB2YWx1ZXMgbGlrZSB0aGUgUXVldWUgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVF1ZXVlLCBvdGhlcndpc2UgdGhlIGZpbHRlcnMgd2lsbCBiZQogICAgIyAgICBmaWxsZWQgd2l0aCBkZWZhdWx0IHJlc3RyaWN0aW9ucywgcmVzdWx0aW5nIGluIG1vcmUgb3B0aW9ucyB0aGFuIHRoZSBvbmVzIHRoYXQgdGhlCiAgICAjICAgIGF2YWlsYWJsZSBjb25maWcgaXRlbXMgc2hvdWxkIHByb3ZpZGUsIHNlZSBCdWcjOTkwMgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0NvbHVtbkZpbHRlckZvcm19ICkgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29sdW1uRmlsdGVyRm9ybScsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggc29ydCBrZXlzICV7ICRQYXJhbXtDb2x1bW5GaWx0ZXJGb3JtfSB9ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50Q29sdW1uRmlsdGVyRm9ybUVsZW1lbnQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgRWxlbWVudE5hbWUgID0+ICRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgIEVsZW1lbnRWYWx1ZSA9PiAkUGFyYW17Q29sdW1uRmlsdGVyRm9ybX0tPnskRWxlbWVudH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHVzZSB0ZW1wbGF0ZQogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntWaWV3VHlwZX0sCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfR2V0Q29sdW1uVmFsdWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17SGVhZGVyQ29sdW1ufSApOwoKICAgIG15ICRIZWFkZXJDb2x1bW4gPSAkUGFyYW17SGVhZGVyQ29sdW1ufTsKICAgIG15ICVDb2x1bW5GaWx0ZXJWYWx1ZXM7CiAgICBteSAkQ29uZmlnSXRlbUlEczsKCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEcyA9ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9OwogICAgfQoKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBtL15EeW5hbWljRmllbGRfLyApIHsKICAgICAgICBteSAkRnVuY3Rpb25OYW1lID0gJEhlYWRlckNvbHVtbiAuICdGaWx0ZXJWYWx1ZXNHZXQnOwogICAgICAgICRDb2x1bW5GaWx0ZXJWYWx1ZXN7JEhlYWRlckNvbHVtbn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbHVtbkZpbHRlcicpLT4kRnVuY3Rpb25OYW1lKAogICAgICAgICAgICBDb25maWdJdGVtSURzID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICBIZWFkZXJDb2x1bW4gID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBteSAkRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRmllbGROYW1lIG5lICRIZWFkZXJDb2x1bW47CgogICAgICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwogICAgICAgICAgICBteSAkSXNGaWx0cmFibGUgICAgICAgICAgICAgICA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0ZpbHRyYWJsZScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkSXNGaWx0cmFibGU7CiAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59ID0gJElzRmlsdHJhYmxlOwogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkQ29uZmlnSXRlbUlEcykgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIGhpc3RvcmljYWwgdmFsdWVzIGZvciB0aGUgZmllbGQKICAgICAgICAgICAgICAgICRDb2x1bW5GaWx0ZXJWYWx1ZXN7JEhlYWRlckNvbHVtbn0gPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+Q29sdW1uRmlsdGVyVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICAgICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1JRHMgID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgJENvbHVtbkZpbHRlclZhbHVlc3skSGVhZGVyQ29sdW1ufSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5Qb3NzaWJsZVZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUNvbHVtbkZpbHRlclZhbHVlczsKfQoKc3ViIF9Jbml0aWFsQ29sdW1uRmlsdGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17Q29sdW1uTmFtZX07CiAgICByZXR1cm4gaWYgISRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRMYWJlbCA9ICRQYXJhbXtMYWJlbH0gfHwgJFBhcmFte0NvbHVtbk5hbWV9OwogICAgJExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7CgogICAgIyBzZXQgZml4ZWQgdmFsdWVzCiAgICBteSAkRGF0YSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICcnLAogICAgICAgICAgICBWYWx1ZSA9PiB1YyAkTGFiZWwsCiAgICAgICAgfSwKICAgIF07CgogICAgIyBkZWZpbmUgaWYgY29sdW1uIGZpbHRlciB2YWx1ZXMgc2hvdWxkIGJlIHRyYW5zbGF0YWJsZQogICAgbXkgJFRyYW5zbGF0aW9uT3B0aW9uID0gMDsKCiAgICBpZiAoCiAgICAgICAgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDbGFzcycKICAgICAgICApCiAgICB7CiAgICAgICAgJFRyYW5zbGF0aW9uT3B0aW9uID0gMTsKICAgIH0KCiAgICBteSAkQ2xhc3MgPSAnQ29sdW1uRmlsdGVyJzsKICAgIGlmICggJFBhcmFte0Nzc30gKSB7CiAgICAgICAgJENsYXNzIC49ICcgJyAuICRQYXJhbXtDc3N9OwogICAgfQoKICAgICMgYnVpbGQgc2VsZWN0IEhUTUwKICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkUGFyYW17Q29sdW1uTmFtZX0sCiAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGEsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJENsYXNzLAogICAgICAgIFRyYW5zbGF0aW9uID0+ICRUcmFuc2xhdGlvbk9wdGlvbiwKICAgICAgICBTZWxlY3RlZElEICA9PiAnJywKICAgICk7CiAgICByZXR1cm4gJENvbHVtbkZpbHRlckhUTUw7Cn0KCnN1YiBGaWx0ZXJDb250ZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17SGVhZGVyQ29sdW1ufTsKCiAgICBteSAkSGVhZGVyQ29sdW1uID0gJFBhcmFte0hlYWRlckNvbHVtbn07CgogICAgIyBnZXQgY29sdW1uIHZhbHVlcyBmb3IgdG8gYnVpbGQgdGhlIGZpbHRlcnMgbGF0ZXIKICAgIG15ICRDb2x1bW5WYWx1ZXMgPSAkU2VsZi0+X0dldENvbHVtblZhbHVlcygKICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30sCiAgICAgICAgSGVhZGVyQ29sdW1uICAgICAgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICApOwoKICAgIG15ICRTZWxlY3RlZFZhbHVlICA9ICcnOwogICAgbXkgJFNlbGVjdGVkQ29sdW1uID0gJEhlYWRlckNvbHVtbjsKICAgIGlmICggJEhlYWRlckNvbHVtbiAhfiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CiAgICAgICAgJFNlbGVjdGVkQ29sdW1uIC49ICdJRHMnOwogICAgfQoKICAgIG15ICRMYWJlbENvbHVtbiA9ICRIZWFkZXJDb2x1bW47CiAgICBpZiAoICRMYWJlbENvbHVtbiA9fiBteyBcQSBEeW5hbWljRmllbGRfIH14bXMgKSB7CgogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgJExhYmVsQ29sdW1uID1+IHN7XEEgRHluYW1pY0ZpZWxkXyB9e314bXM7CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJERGQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkTGFiZWxDb2x1bW47CgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJERGQ29uZmlnOwogICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKSApIHsKICAgICAgICAgICAgJExhYmVsQ29sdW1uID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkU2VsZWN0ZWRDb2x1bW4gJiYgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0gKSB7CgogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVkQ29sdW1ufSApICkgewogICAgICAgICAgICAkU2VsZWN0ZWRWYWx1ZSA9ICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59LT5bMF07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59ICkgKSB7CiAgICAgICAgICAgICRTZWxlY3RlZFZhbHVlID0gJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0tPntFcXVhbHN9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkU2VsZi0+X0NvbHVtbkZpbHRlckpTT04oCiAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsQ29sdW1uLAogICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59LAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFNlbGVjdGVkVmFsdWUsCiAgICApOwoKICAgIHJldHVybiAkQ29sdW1uRmlsdGVySlNPTjsKfQoKIyA9aGVhZDIgX0NvbHVtbkZpbHRlckpTT04oKQoKIyAgICAgY3JlYXRlcyBhIEpTT04gc2VsZWN0IGZpbHRlciBmb3IgY29sdW1uIGhlYWRlcgoKIyAgICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkSVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsT2JqZWN0LT5fQ29sdW1uRmlsdGVySlNPTigKIyAgICAgICAgIENvbHVtbk5hbWUgPT4gJ1F1ZXVlJywKIyAgICAgICAgIExhYmVsICAgICAgPT4gJ1F1ZXVlJywKIyAgICAgICAgIENvbHVtblZhbHVlcyA9PiB7CiMgICAgICAgICAgICAgMSA9PiAnUG9zdE1hc3RlcicsCiMgICAgICAgICAgICAgMiA9PiAnSnVuaycsCiMgICAgICAgICB9LAojICAgICAgICAgU2VsZWN0ZWRWYWx1ZSAnMScsCiMgICAgICk7CgojID1jdXQKCnN1YiBfQ29sdW1uRmlsdGVySlNPTiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICgKICAgICAgICAhJFNlbGYtPntBdmFpbGFibGVGaWx0cmFibGVDb2x1bW5zfS0+eyAkUGFyYW17Q29sdW1uTmFtZX0gfSAmJgogICAgICAgICEkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9LT57ICRQYXJhbXtDb2x1bW5OYW1lfSAuICdJRHMnIH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJExhYmVsID0gJFBhcmFte0xhYmVsfTsKICAgICRMYWJlbCA9fiBzeyBcQSBEeW5hbWljRmllbGRfIH17fWd4bXM7CiAgICAkTGFiZWwgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJExhYmVsKTsKCiAgICAjIHNldCBmaXhlZCB2YWx1ZXMKICAgIG15ICREYXRhID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0RlbGV0ZUZpbHRlcicsCiAgICAgICAgICAgIFZhbHVlID0+IHVjICRMYWJlbCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJy0nLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnLScsCiAgICAgICAgICAgIERpc2FibGVkID0+IDEsCiAgICAgICAgfSwKICAgIF07CgogICAgaWYgKCAkUGFyYW17Q29sdW1uVmFsdWVzfSAmJiByZWYgJFBhcmFte0NvbHVtblZhbHVlc30gZXEgJ0hBU0gnICkgewoKICAgICAgICBteSAlVmFsdWVzID0gJXsgJFBhcmFte0NvbHVtblZhbHVlc30gfTsKCiAgICAgICAgIyBTZXQgcG9zc2libGUgdmFsdWVzLgogICAgICAgIGZvciBteSAkVmFsdWVLZXkgKCBzb3J0IHsgbGMgJFZhbHVlc3skYX0gY21wIGxjICRWYWx1ZXN7JGJ9IH0ga2V5cyAlVmFsdWVzICkgewogICAgICAgICAgICBwdXNoIEB7JERhdGF9LCB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkVmFsdWVLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVzeyRWYWx1ZUtleX0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIGlmIGNvbHVtbiBmaWx0ZXIgdmFsdWVzIHNob3VsZCBiZSB0cmFuc2xhdGFibGUKICAgIG15ICRUcmFuc2xhdGlvbk9wdGlvbiA9IDA7CgogICAgaWYgKAogICAgICAgICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnSW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VySW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ2xhc3MnCiAgICAgICAgKQogICAgewogICAgICAgICRUcmFuc2xhdGlvbk9wdGlvbiA9IDE7CiAgICB9CgogICAgIyBidWlsZCBzZWxlY3QgSFRNTAogICAgbXkgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbkpTT04oCiAgICAgICAgWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkUGFyYW17Q29sdW1uTmFtZX0sCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJERhdGEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ0NvbHVtbkZpbHRlcicsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY0tleScsCiAgICAgICAgICAgICAgICBUcmVlVmlldyAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17U2VsZWN0ZWRWYWx1ZX0sCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gJFRyYW5zbGF0aW9uT3B0aW9uLAogICAgICAgICAgICAgICAgQXV0b0NvbXBsZXRlID0+ICdvZmYnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAkSlNPTjsKfQoKc3ViIF9EZWZhdWx0Q29sdW1uU29ydCB7CgogICAgbXkgJURlZmF1bHRDb2x1bW5zID0gKAogICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAxMTAsCiAgICAgICAgQ3VySW5jaVN0YXRlID0+IDExMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gMTEyLAogICAgICAgIE51bWJlciAgICAgICA9PiAxMTMsCiAgICAgICAgTmFtZSAgICAgICAgID0+IDExNCwKICAgICAgICBMYXN0Q2hhbmdlZCAgPT4gMTE1LAogICAgKTsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGNhbiBub3QgYmUgb24gdGhlIERlZmF1bHRDb2x1bW5zIHNvcnRpbmcgaGFzaAogICAgIyB3aGVuIGNvbXBhcmluZyAyIGR5bmFtaWMgZmllbGRzIHNvcnRpbmcgbXVzdCBiZSBhbHBoYWJldGljYWwKICAgIGlmICggISREZWZhdWx0Q29sdW1uc3skYX0gJiYgISREZWZhdWx0Q29sdW1uc3skYn0gKSB7CiAgICAgICAgcmV0dXJuICRhIGNtcCAkYjsKICAgIH0KCiAgICAjIHdoZW4gYSBkeW5hbWljIGZpZWxkIGlzIGNvbXBhcmVkIHRvIGEgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGl0IG11c3QgYmUgaGlnaGVyCiAgICBlbHNpZiAoICEkRGVmYXVsdENvbHVtbnN7JGF9ICkgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgd2hlbiBhIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBpcyBjb21wYXJlZCB0byBhIGR5bmFtaWMgZmllbGQgaXQgbXVzdCBiZSBsb3dlcgogICAgZWxzaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRifSApIHsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgIyBvdGhlcndpc2UgZG8gYSBudW1lcmljYWwgY29tcGFyaXNvbiB3aXRoIHRoZSBjb25maWcgaXRlbSBhdHRyaWJ1dGVzCiAgICByZXR1cm4gJERlZmF1bHRDb2x1bW5zeyRhfSA8PT4gJERlZmF1bHRDb2x1bW5zeyRifTsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/Layout/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OklUU01Db25maWdJdGVtOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OklUU01Db25maWdJdGVtIC0gYWxsIENvbmZpZ0l0ZW0tcmVsYXRlZCBIVE1MIGZ1bmN0aW9ucwoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgSVRTTSBDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQtcmVsYXRlZCBIVE1MIGZ1bmN0aW9ucwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBJVFNNQ29uZmlnSXRlbU91dHB1dFN0cmluZ0NyZWF0ZSgpCgpyZXR1cm5zIGFuIG91dHB1dCBzdHJpbmcKCiAgICBteSAkU3RyaW5nID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gID0+ICRJdGVtUmVmLAogICAgICAgIFByaW50ID0+IDEsICAgICAgICAjIChvcHRpb25hbCwgZGVmYXVsdCAwKQogICAgKTsKCj1jdXQKCnN1YiBJVFNNQ29uZmlnSXRlbU91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17SXRlbX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkU2VsZi0+X0lUU01Mb2FkTGF5b3V0QmFja2VuZCgKICAgICAgICBUeXBlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1R5cGV9LAogICAgKTsKCiAgICByZXR1cm4gJycgaWYgISRCYWNrZW5kT2JqZWN0OwoKICAgICMgZ2VuZXJhdGUgb3V0cHV0IHN0cmluZwogICAgbXkgJFN0cmluZyA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdDcmVhdGUoJVBhcmFtKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIElUU01Db25maWdJdGVtRm9ybURhdGFHZXQoKQoKcmV0dXJucyB0aGUgdmFsdWVzIGZyb20gdGhlIGh0bWwgZm9ybSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ICAgICAgICAgID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtICAgICAgICAgPT4gJEl0ZW1SZWYsCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgSVRTTUNvbmZpZ0l0ZW1Gb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSBDb25maWdJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBsb2FkIGJhY2tlbmQKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJFNlbGYtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUeXBlfSwKICAgICk7CgogICAgcmV0dXJuIHt9IGlmICEkQmFja2VuZE9iamVjdDsKCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15ICRGb3JtRGF0YSA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCglUGFyYW0pOwoKICAgIHJldHVybiAkRm9ybURhdGE7Cn0KCj1oZWFkMiBJVFNNQ29uZmlnSXRlbUlucHV0Q3JlYXRlKCkKCnJldHVybnMgYSBpbnB1dCBmaWVsZCBodG1sIHN0cmluZwoKICAgIG15ICRTdHJpbmcgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUlucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElUU01Db25maWdJdGVtSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBsb2FkIGJhY2tlbmQKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJFNlbGYtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUeXBlfSwKICAgICk7CgogICAgcmV0dXJuICcnIGlmICEkQmFja2VuZE9iamVjdDsKCiAgICAjIGxvb2t1cCBpdGVtIHZhbHVlCiAgICBteSAkU3RyaW5nID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKCVQYXJhbSk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBJVFNNQ29uZmlnSXRlbVNlYXJjaEZvcm1EYXRhR2V0KCkKCnJldHVybnMgdGhlIHZhbHVlcyBmcm9tIHRoZSBzZWFyY2ggaHRtbCBmb3JtCgogICAgbXkgJEFycmF5UmVmID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElUU01Db25maWdJdGVtU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBsb2FkIGJhY2tlbmQKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJFNlbGYtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUeXBlfSwKICAgICk7CgogICAgcmV0dXJuIFtdIGlmICEkQmFja2VuZE9iamVjdDsKCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15ICRWYWx1ZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRm9ybURhdGFHZXQoJVBhcmFtKTsKCiAgICByZXR1cm4gJFZhbHVlczsKfQoKPWhlYWQyIElUU01Db25maWdJdGVtU2VhcmNoSW5wdXRDcmVhdGUoKQoKcmV0dXJucyBhIHNlYXJjaCBpbnB1dCBmaWVsZCBodG1sIHN0cmluZwoKICAgIG15ICRTdHJpbmcgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbVNlYXJjaElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgSVRTTUNvbmZpZ0l0ZW1TZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkU2VsZi0+X0lUU01Mb2FkTGF5b3V0QmFja2VuZCgKICAgICAgICBUeXBlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1R5cGV9LAogICAgKTsKCiAgICByZXR1cm4gJycgaWYgISRCYWNrZW5kT2JqZWN0OwoKICAgICMgbG9va3VwIGl0ZW0gdmFsdWUKICAgIG15ICRTdHJpbmcgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoJVBhcmFtKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIF9JVFNNTG9hZExheW91dEJhY2tlbmQoKQoKbG9hZCBhIGlucHV0IHR5cGUgYmFja2VuZCBtb2R1bGUKCiAgICAkQmFja2VuZE9iamVjdCA9ICRMYXlvdXRPYmplY3QtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAnR2VuZXJhbENhdGFsb2cnLAogICAgKTsKCj1jdXQKCnN1YiBfSVRTTUxvYWRMYXlvdXRCYWNrZW5kIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbG9nIG9iamVjdAogICAgbXkgJExvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICBpZiAoICEkUGFyYW17VHlwZX0gKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBUeXBlIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJEdlbmVyaWNNb2R1bGUgPSAiS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXQkUGFyYW17VHlwZX0iOwoKICAgICMgbG9hZCB0aGUgYmFja2VuZCBtb2R1bGUKICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoJEdlbmVyaWNNb2R1bGUpICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgYmFja2VuZCBtb2R1bGUgJFBhcmFte1R5cGV9ISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNyZWF0ZSBuZXcgaW5zdGFuY2UKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJEdlbmVyaWNNb2R1bGUtPm5ldygKICAgICAgICAleyRTZWxmfSwKICAgICAgICAlUGFyYW0sCiAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRTZWxmLAogICAgKTsKCiAgICBpZiAoICEkQmFja2VuZE9iamVjdCApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgYmFja2VuZCBtb2R1bGUgJFBhcmFte1R5cGV9ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICRCYWNrZW5kT2JqZWN0Owp9Cgo9aGVhZDIgSVRTTUNvbmZpZ0l0ZW1MaXN0U2hvdygpCgpSZXR1cm5zIGEgbGlzdCBvZiBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggc29ydCBhbmQgcGFnaW5hdGlvbiBjYXBhYmlsaXRpZXMuCgpUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gTDxLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0VGlja2V0OjpUaWNrZXRMaXN0U2hvdygpPgppbiBGPEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXRUaWNrZXQucG0+LgoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gJENvbmZpZ0l0ZW1JRHNSZWYsICAgICAgICAgICAgICAgICAgIyB0b3RhbCBsaXN0IG9mIGNvbmZpZyBpdGVtIGlkcywgdGhhdCBjYW4gYmUgbGlzdGVkCiAgICAgICAgVG90YWwgICAgICAgICA9PiBzY2FsYXIgQHsgJENvbmZpZ0l0ZW1JRHNSZWYgfSwgICAgICAjIHRvdGFsIG51bWJlciBvZiBsaXN0IGl0ZW1zLCBjb25maWcgaXRlbXMgaW4gdGhpcyBjYXNlCiAgICAgICAgVmlldyAgICAgICAgICA9PiAkU2VsZi0+e1ZpZXd9LCAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyAnU21hbGwnCiAgICAgICAgRmlsdGVyICAgICAgICA9PiAnQWxsJywKICAgICAgICBGaWx0ZXJzICAgICAgID0+IFwlTmF2QmFyRmlsdGVyLAogICAgICAgIEZpbHRlckxpbmsgICAgPT4gJExpbmtGaWx0ZXIsCiAgICAgICAgVGl0bGVOYW1lICAgICA9PiAnT3ZlcnZpZXc6IENvbmZpZyBJdGVtOiBDb21wdXRlcicsCiAgICAgICAgVGl0bGVWYWx1ZSAgICA9PiAkU2VsZi0+e0ZpbHRlcn0sCiAgICAgICAgRW52ICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICBMaW5rU29ydCAgICAgID0+ICRMaW5rU29ydCwKICAgICAgICBGcm9udGVuZCAgICAgID0+ICdBZ2VudCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCAoQWdlbnR8Q3VzdG9tZXIpLCBkZWZhdWx0OiBBZ2VudCwgaW5kaWNhdGVzIGZyb20gd2hpY2ggZnJvbnRlbmQgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkCiAgICApOwoKPWN1dAoKc3ViIElUU01Db25maWdJdGVtTGlzdFNob3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCBmcm9udGVuZCBwZXIgZGVmYXVsdCB0byBhZ2VudAogICAgJFBhcmFte0Zyb250ZW5kfSAvLz0gJ0FnZW50JzsKCiAgICAjIHRha2Ugb2JqZWN0IHJlZiB0byBsb2NhbCwgcmVtb3ZlIGl0IGZyb20gJVBhcmFtIChwcmV2ZW50IG1lbW9yeSBsZWFrKQogICAgbXkgJEVudiA9IGRlbGV0ZSAkUGFyYW17RW52fTsKCiAgICAjIGxvb2t1cCBsYXRlc3QgdXNlZCB2aWV3IG1vZGUKICAgIGlmICggISRQYXJhbXtWaWV3fSAmJiAkU2VsZi0+eyAnVXNlcklUU01Db25maWdJdGVtT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0gfSApIHsKICAgICAgICAkUGFyYW17Vmlld30gPSAkU2VsZi0+eyAnVXNlcklUU01Db25maWdJdGVtT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0gfTsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IHZpZXcgbW9kZSB0byAnc21hbGwnCiAgICBteSAkVmlldyA9ICRQYXJhbXtWaWV3fSB8fCAnU21hbGwnOwoKICAgICMgc3RvcmUgbGF0ZXN0IHZpZXcgbW9kZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnVXNlcklUU01Db25maWdJdGVtT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0sCiAgICAgICAgVmFsdWUgICAgID0+ICRWaWV3LAogICAgKTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIHVwZGF0ZSBwcmVmZXJlbmNlcyBpZiBuZWVkZWQKICAgIG15ICRLZXkgPSAnVXNlcklUU01Db25maWdJdGVtT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn07CiAgICBpZiAoICRQYXJhbXtGcm9udGVuZH0gbmUgJ0N1c3RvbWVyJyApIHsKICAgICAgICBpZiAoICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0RlbW9TeXN0ZW0nKSAmJiAoICRTZWxmLT57JEtleX0gLy8gJycgKSBuZSAkVmlldyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRLZXksCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gJFZpZXcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGJhY2tlbmQgZnJvbSBjb25maWcKICAgIG15ICRCYWNrZW5kcwogICAgICAgID0gJFBhcmFte0Zyb250ZW5kfSBlcSAnQWdlbnQnID8gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JykgOiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJPdmVydmlldycpOwogICAgaWYgKCAhJEJhY2tlbmRzICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnTmVlZCBjb25maWcgb3B0aW9uIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6T3ZlcnZpZXcnLAogICAgICAgICk7CiAgICB9CiAgICBpZiAoIHJlZiAkQmFja2VuZHMgbmUgJ0hBU0gnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnQ29uZmlnIG9wdGlvbiBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIEhBU0ggcmVmIScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHNlbGVjdGVkIHZpZXcgaXMgYXZhaWxhYmxlCiAgICBpZiAoICEkQmFja2VuZHMtPnskVmlld30gKSB7CgogICAgICAgICMgdHJ5IHRvIGZpbmQgZmFsbGJhY2ssIHRha2UgZmlyc3QgY29uZmlndXJlZCB2aWV3IG1vZGUKICAgICAgICBLRVk6CiAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskQmFja2VuZHN9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gQ29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdmlldyBtb2RlICRWaWV3LCB0b29rICRLZXkgaW5zdGVhZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkVmlldyA9ICRLZXk7CiAgICAgICAgICAgIGxhc3QgS0VZOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnVmlldycsCiAgICAgICAgVmFsdWUgPT4gJFZpZXcsCiAgICApOwoKICAgICMgbG9hZCBvdmVydmlldyBiYWNrZW5kIG1vZHVsZQogICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJEJhY2tlbmRzLT57JFZpZXd9LT57TW9kdWxlfSApICkgewogICAgICAgIHJldHVybiAkRW52LT57TGF5b3V0T2JqZWN0fS0+RmF0YWxFcnJvcigpOwogICAgfQogICAgbXkgJE9iamVjdCA9ICRCYWNrZW5kcy0+eyRWaWV3fS0+e01vZHVsZX0tPm5ldyggJXskRW52fSApOwogICAgcmV0dXJuIGlmICEkT2JqZWN0OwoKICAgICMgcmV0cmlldmUgZmlsdGVyIHZhbHVlcwogICAgaWYgKCAkUGFyYW17RmlsdGVyQ29udGVudE9ubHl9ICkgewogICAgICAgIHJldHVybiAkT2JqZWN0LT5GaWx0ZXJDb250ZW50KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJ1biBhY3Rpb24gcm93IGJhY2tlbmQgbW9kdWxlCiAgICAkUGFyYW17QWN0aW9uUm93fSA9ICRPYmplY3QtPkFjdGlvblJvdygKICAgICAgICAlUGFyYW0sCiAgICAgICAgQ29uZmlnID0+ICRCYWNrZW5kcy0+eyRWaWV3fSwKICAgICk7CgogICAgIyBydW4gb3ZlcnZpZXcgYmFja2VuZCBtb2R1bGUKICAgICRQYXJhbXtTb3J0T3JkZXJCYXJ9ID0gJE9iamVjdC0+U29ydE9yZGVyQmFyKAogICAgICAgICVQYXJhbSwKICAgICAgICBDb25maWcgPT4gJEJhY2tlbmRzLT57JFZpZXd9LAogICAgKTsKCiAgICAjIGNoZWNrIHN0YXJ0IG9wdGlvbiwgaWYgaGlnaGVyIHRoZW4gdGlja2V0cyBhdmFpbGFibGUsIHNldAogICAgIyBpdCB0byB0aGUgbGFzdCB0aWNrZXQgcGFnZSAoVGhhbmtzIHRvIFN0ZWZhbiBTY2htaWR0ISkKICAgIG15ICRTdGFydEhpdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxOwoKICAgICMgZ2V0IHBlcnNvbmFsIHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSA9ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CiAgICBteSAkUGFnZVNob3duICAgICAgICAgICAgICAgPSAkU2VsZi0+eyRQYWdlU2hvd25QcmVmZXJlbmNlc0tleX0gfHwgMTA7CiAgICBteSAkR3JvdXAgICAgICAgICAgICAgICAgICAgPSAnQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CgogICAgIyBnZXQgZGF0YSBzZWxlY3Rpb24KICAgIG15ICVEYXRhOwogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKTsKICAgIGlmICggJENvbmZpZyAmJiAkQ29uZmlnLT57JEdyb3VwfSAmJiAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSB9OwogICAgfQoKICAgICMgY2FsY3VsYXRlIG1heC4gc2hvd24gcGVyIHBhZ2UKICAgIGlmICggJFN0YXJ0SGl0ID4gJFBhcmFte1RvdGFsfSApIHsKICAgICAgICBteSAkUGFnZXMgPSBpbnQoICggJFBhcmFte1RvdGFsfSAvICRQYWdlU2hvd24gKSArIDAuOTk5OTkgKTsKICAgICAgICAkU3RhcnRIaXQgPSAoICggJFBhZ2VzIC0gMSApICogJFBhZ2VTaG93biApICsgMTsKICAgIH0KCiAgICAjIGJ1aWxkIG5hdiBiYXIKICAgIG15ICRMaW1pdCAgID0gJFBhcmFte0xpbWl0fSB8fCAyMF8wMDA7CiAgICBteSAlUGFnZU5hdiA9ICRTZWxmLT5QYWdlTmF2QmFyKAogICAgICAgIExpbWl0ICAgICA9PiAkTGltaXQsCiAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICBBbGxIaXRzICAgPT4gJFBhcmFte1RvdGFsfSB8fCAwLAogICAgICAgIEFjdGlvbiAgICA9PiAnQWN0aW9uPScgLiAkU2VsZi0+e0FjdGlvbn0sCiAgICAgICAgTGluayAgICAgID0+ICRQYXJhbXtMaW5rUGFnZX0sCiAgICAgICAgSURQcmVmaXggID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICk7CgogICAgIyBidWlsZCBzaG93biB0aWNrZXQgcGVyIHBhZ2UKICAgICRQYXJhbXtSZXF1ZXN0ZWRVUkx9ICAgID0gJFBhcmFte1JlcXVlc3RlZFVSTH0gfHwgIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07JFBhcmFte0xpbmtQYWdlfSI7CiAgICAkUGFyYW17R3JvdXB9ICAgICAgICAgICA9ICRHcm91cDsKICAgICRQYXJhbXtQcmVmZXJlbmNlc0tleX0gID0gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5OwogICAgJFBhcmFte1BhZ2VTaG93blN0cmluZ30gPSAkU2VsZi0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5LAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYWdlU2hvd24sCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVEYXRhLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgU29ydCAgICAgICAgPT4gJ051bWVyaWNWYWx1ZScsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgbmF2IGJhciBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgb3ZlcnZpZXcKICAgICRQYXJhbXtWaWV3fSA9ICRWaWV3OwogICAgJFNlbGYtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgYmFjayBsaW5rCiAgICBpZiAoICRQYXJhbXtMaW5rQmFja30gKSB7CiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VCYWNrJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICBQcm9maWxlID0+ICRQYXJhbXtQcm9maWxlfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBmaWx0ZXIgc2VsZWN0aW9uCiAgICBpZiAoICRQYXJhbXtDYXRlZ29yeUZpbHRlcnN9ICkgewogICAgICAgIG15IEBOYXZCYXJGaWx0ZXJzOwogICAgICAgIGZvciBteSAkUHJpbyAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICV7ICRQYXJhbXtDYXRlZ29yeUZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQE5hdkJhckZpbHRlcnMsICRQYXJhbXtDYXRlZ29yeUZpbHRlcnN9LT57JFByaW99OwogICAgICAgIH0KICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVyJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGZvciBteSAkQ2F0ZWdvcnlGaWx0ZXIgKEBOYXZCYXJGaWx0ZXJzKSB7CiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgICAgICBpZiAoICRDb3VudCA9PSBzY2FsYXIgQE5hdkJhckZpbHRlcnMgKSB7CiAgICAgICAgICAgICAgICAkQ2F0ZWdvcnlGaWx0ZXItPntDU1N9ID0gJ0xhc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXskQ2F0ZWdvcnlGaWx0ZXJ9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAkUGFyYW17Q2F0ZWdvcnlGaWx0ZXJ9ICYmICRDYXRlZ29yeUZpbHRlci0+e0NhdGVnb3J5RmlsdGVyfSBlcSAkUGFyYW17Q2F0ZWdvcnlGaWx0ZXJ9ICkgewogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAleyRDYXRlZ29yeUZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JENhdGVnb3J5RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHZpZXcgbW9kZQogICAgZm9yIG15ICRCYWNrZW5kICgKICAgICAgICBzb3J0IHsgJEJhY2tlbmRzLT57JGF9LT57TW9kdWxlUHJpb3JpdHl9IDw9PiAkQmFja2VuZHMtPnskYn0tPntNb2R1bGVQcmlvcml0eX0gfQogICAgICAgIGtleXMgJXskQmFja2VuZHN9CiAgICAgICAgKQogICAgewogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJXsgJEJhY2tlbmRzLT57JEJhY2tlbmR9IH0sCiAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoICRWaWV3IGVxICRCYWNrZW5kICkgewogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCVQYWdlTmF2KSB7CiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VOYXZCYXInLAogICAgICAgICAgICBEYXRhID0+IFwlUGFnZU5hdiwKICAgICAgICApOwoKICAgICAgICAjIGRvbid0IHNob3cgY29udGV4dCBzZXR0aW5ncyBpbiBBSkFYIGNhc2UgKGUuIGcuIGluIGN1c3RvbWVyIHRpY2tldCBoaXN0b3J5KSwKICAgICAgICAjICAgYmVjYXVzZSB0aGUgc3VibWl0IHdpdGggcGFnZSByZWxvYWQgd2lsbCBub3Qgd29yayB0aGVyZQogICAgICAgIGlmICggISRQYXJhbXtBSkFYfSApIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGV4dFNldHRpbmdzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNob3cgY29sdW1uIGZpbHRlciBwcmVmZXJlbmNlcwogICAgICAgICAgICBpZiAoICRWaWV3IGVxICdTbWFsbCcgKSB7CgogICAgICAgICAgICAgICAgIyBzZXQgcHJlZmVyZW5jZXMga2V5cwogICAgICAgICAgICAgICAgbXkgJFByZWZLZXlDb2x1bW5zID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZCcgLiAnLScgLiAkRW52LT57QWN0aW9ufSAuICctJyAuICRQYXJhbXtGaWx0ZXJ9OwoKICAgICAgICAgICAgICAgICMgY3JlYXRlIGV4dHJhIG5lZWRlZCBvYmplY3RzCiAgICAgICAgICAgICAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CgogICAgICAgICAgICAgICAgIyBjb25maWd1cmUgY29sdW1ucwogICAgICAgICAgICAgICAgbXkgQENvbHVtbnNFbmFibGVkID0gQHsgJE9iamVjdC0+e0NvbHVtbnNFbmFibGVkfSB9OwogICAgICAgICAgICAgICAgbXkgQENvbHVtbnNBdmFpbGFibGU7CgogICAgICAgICAgICAgICAgIyByZW1vdmUgZHVwbGljYXRlIGNvbHVtbnMKICAgICAgICAgICAgICAgIG15ICVVbmlxdWVDb2x1bW5zOwogICAgICAgICAgICAgICAgbXkgQENvbHVtbnNFbmFibGVkQXV4OwoKICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAQ29sdW1uc0VuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkVW5pcXVlQ29sdW1uc3skQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ29sdW1uc0VuYWJsZWRBdXgsICRDb2x1bW47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRVbmlxdWVDb2x1bW5zeyRDb2x1bW59ID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHNldCBmaWx0ZXJlZCBjb2x1bW4gbGlzdAogICAgICAgICAgICAgICAgQENvbHVtbnNFbmFibGVkID0gQENvbHVtbnNFbmFibGVkQXV4OwoKICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQgeyAkYSBjbXAgJGIgfSBAeyAkT2JqZWN0LT57Q29sdW1uc0F2YWlsYWJsZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICFncmVwIHsgJF8gZXEgJENvbHVtbk5hbWUgfSBAQ29sdW1uc0VuYWJsZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQENvbHVtbnNBdmFpbGFibGUsICRDb2x1bW5OYW1lOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAlQ29sdW1uczsKICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQgQENvbHVtbnNBdmFpbGFibGUgKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbHVtbnN7Q29sdW1uc30tPnskQ29sdW1uTmFtZX0gPSAoIGdyZXAgeyAkQ29sdW1uTmFtZSBlcSAkXyB9IEBDb2x1bW5zRW5hYmxlZCApID8gMSA6IDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpbHRlckNvbHVtblNldHRpbmdzJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyAgICAgICAgICA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBEYXRhID0+IFwlQ29sdW1ucyApLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zRW5hYmxlZCAgID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gXEBDb2x1bW5zRW5hYmxlZCApLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zQXZhaWxhYmxlID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gXEBDb2x1bW5zQXZhaWxhYmxlICksCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVQcmVmICAgICAgICAgPT4gJFByZWZLZXlDb2x1bW5zLAogICAgICAgICAgICAgICAgICAgICAgICBEZXNjICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU2hvd24gQ29sdW1ucycpLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICRFbnYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJBY3Rpb24gICAgID0+ICRFbnYtPntBY3Rpb259IC4gJy0nIC4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFZpZXcgICAgICAgICAgICAgPT4gJFZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwTmFtZSAgICAgICAgPT4gJ0NvbmZpZ0l0ZW1PdmVydmlld0ZpbHRlclNldHRpbmdzJywKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfSAgICAjIGVuZCBzaG93IGNvbHVtbiBmaWx0ZXJzIHByZWZlcmVuY2VzCgogICAgICAgICMgY2hlY2sgaWYgdGhlcmUgd2FzIHN0b3JlZCBmaWx0ZXJzLCBhbmQgcHJpbnQgYSBsaW5rIHRvIGRlbGV0ZSB0aGVtCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJE9iamVjdC0+e1N0b3JlZEZpbHRlcnN9ICkgKSB7CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50QWN0aW9uUm93UmVtb3ZlQ29sdW1uRmlsdGVycycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDU1MgPT4gIkNvbnRleHRTZXR0aW5ncyBSZW1vdmVGaWx0ZXJzIiwKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBuYXYgYmFyIGFuZCBydW4gb3ZlcnZpZXcgYmFja2VuZCBtb2R1bGUKICAgIG15ICROYXZCYXJIVE1MID0gJyc7CiAgICBpZiAoICRQYXJhbXtGcm9udGVuZH0gbmUgJ0N1c3RvbWVyJyApIHsKICAgICAgICAkTmF2QmFySFRNTCA9ICRTZWxmLT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsgJVBhcmFtLCB9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgJE5hdkJhckhUTUwsCiAgICAgICAgJE9iamVjdC0+UnVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIENhdGVnb3J5Q2xhc3NlcyA9PiAkRW52LT57Q2F0ZWdvcnlDbGFzc2VzfSwKICAgICAgICAgICAgQ29uZmlnICAgICAgICAgID0+ICRCYWNrZW5kcy0+eyRWaWV3fSwKICAgICAgICAgICAgTGltaXQgICAgICAgICAgID0+ICRMaW1pdCwKICAgICAgICAgICAgU3RhcnRIaXQgICAgICAgID0+ICRTdGFydEhpdCwKICAgICAgICAgICAgUGFnZVNob3duICAgICAgID0+ICRQYWdlU2hvd24sCiAgICAgICAgICAgIEFsbEhpdHMgICAgICAgICA9PiAkUGFyYW17VG90YWx9ICB8fCAwLAogICAgICAgICAgICBPdXRwdXQgICAgICAgICAgPT4gJFBhcmFte091dHB1dH0gfHwgJycsCiAgICAgICAgKTsKfQoKPWhlYWQyIFhNTERhdGEySGFzaCgpCgpyZXR1cm5zIGEgaGFzaCByZWZlcmVuY2Ugd2l0aCB0aGUgcmVxdWVzdGVkIGF0dHJpYnV0ZXMgZGF0YSBmb3IgYSBjb25maWcgaXRlbQoKUmV0dXJuCgogICAgJERhdGEgPSB7CiAgICAgICAgJ0hhcmREaXNrOjoyJyA9PiB7CiAgICAgICAgICAgIFZhbHVlID0+ICdIRDInLAogICAgICAgICAgICBOYW1lICA9PiAnSGFyZCBEaXNrJywKICAgICAgICAgfSwKICAgICAgICAnQ1BVOjoxJyA9PiB7CiAgICAgICAgICAgIFZhbHVlID0+ICcnLAogICAgICAgICAgICBOYW1lICA9PiAnQ1BVJywKICAgICAgICB9LAogICAgICAgICdIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEnID0+IHsKICAgICAgICAgICAgVmFsdWUgPT4gJzc4MCBHQicsCiAgICAgICAgICAgIE5hbWUgID0+ICdDYXBhY2l0eScsCiAgICAgICAgfSwKICAgIH07CgogICAgbXkgJERhdGEgPSAkTGF5b3V0T2JqZWN0LT5YTUxEYXRhMkhhc2goCiAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkVmVyc2lvbi0+e1hNTERlZmluaXRpb259LAogICAgICAgIFhNTERhdGEgICAgICAgPT4gJFZlcnNpb24tPntYTUxEYXRhfS0+WzFdLT57VmVyc2lvbn0tPlsxXSwKICAgICAgICBBdHRyaWJ1dGVzICAgID0+IFsnQ1BVOjoxJywgJ0hhcmREcml2ZTo6Mjo6Q2FwYWNpdHk6OjEnLCAuLi5dLAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVEYXRhSGFzaFJlZiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgUHJlZml4ICAgICAgICA9PiAnSGFyZERpc2s6OjEnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICk7Cgo9Y3V0CgpzdWIgWE1MRGF0YTJIYXNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiBpZiAhJFBhcmFte1hNTERhdGF9OwogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGVmaW5pdGlvbn07CiAgICByZXR1cm4gaWYgISRQYXJhbXtBdHRyaWJ1dGVzfTsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte1hNTERhdGF9IG5lICdIQVNIJzsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte1hNTERlZmluaXRpb259IG5lICdBUlJBWSc7CiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtBdHRyaWJ1dGVzfSBuZSAnQVJSQVknOwoKICAgICMgdG8gc3RvcmUgdGhlIHJldHVybiBkYXRhCiAgICBteSAkRGF0YSA9ICRQYXJhbXtEYXRhfSB8fCB7fTsKCiAgICAjIGNyZWF0ZSBhIGxvb2t1cCBzdHJ1Y3R1cmUKICAgIG15ICVSZWxldmFudEF0dHJpYnV0ZXMgPSBtYXAgeyAkXyA9PiAxIH0gQHsgJFBhcmFte0F0dHJpYnV0ZXN9IH07CgogICAgSVRFTToKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtYTUxEZWZpbml0aW9ufSB9ICkgewoKICAgICAgICBteSAkQ291bnRNYXggPSAkSXRlbS0+e0NvdW50TWF4fSB8fCAxOwoKICAgICAgICBDT1VOVEVSOgogICAgICAgIGZvciBteSAkQ291bnRlciAoIDEgLi4gJENvdW50TWF4ICkgewoKICAgICAgICAgICAgIyBhZGQgcHJlZml4CiAgICAgICAgICAgIG15ICRQcmVmaXggPSAkSXRlbS0+e0tleX0gLiAnOjonIC4gJENvdW50ZXI7CiAgICAgICAgICAgIGlmICggJFBhcmFte1ByZWZpeH0gKSB7CiAgICAgICAgICAgICAgICAkUHJlZml4ID0gJFBhcmFte1ByZWZpeH0gLiAnOjonIC4gJFByZWZpeDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBza2lwIG5vdCBuZWVkZWQgZWxlbWVudHMgYW5kIHN1YiBlbGVtZW50cwogICAgICAgICAgICBuZXh0IENPVU5URVIgaWYgIWdyZXAgeyAkXyA9fiBte1xBJFByZWZpeH0gfSBAeyAkUGFyYW17QXR0cmlidXRlc30gfTsKCiAgICAgICAgICAgICMgbG9va3VwIHZhbHVlCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5YTUxWYWx1ZUxvb2t1cCgKICAgICAgICAgICAgICAgIEl0ZW0gID0+ICRJdGVtLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFBhcmFte1hNTERhdGF9LT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJdLT57Q29udGVudH0gLy8gJycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG9ubHkgaWYgdmFsdWUgaXMgZGVmaW5lZAogICAgICAgICAgICBpZiAoIGRlZmluZWQgJFZhbHVlICkgewoKICAgICAgICAgICAgICAgICMgY3JlYXRlIG91dHB1dCBzdHJpbmcKICAgICAgICAgICAgICAgICRWYWx1ZSA9ICRTZWxmLT5JVFNNQ29uZmlnSXRlbU91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgSXRlbSAgPT4gJEl0ZW0sCiAgICAgICAgICAgICAgICAgICAgUHJpbnQgPT4gJFBhcmFte1ByaW50fSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJFJlbGV2YW50QXR0cmlidXRlc3skUHJlZml4fSApIHsKCiAgICAgICAgICAgICAgICAjIHN0b3JlIHRoZSBpdGVtIGluIGhhc2gKICAgICAgICAgICAgICAgICREYXRhLT57JFByZWZpeH0gPSB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJEl0ZW0tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWUgLy8gJycsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgICAgIGlmICggJEl0ZW0tPntTdWJ9ICkgewogICAgICAgICAgICAgICAgJERhdGEgPSAkU2VsZi0+WE1MRGF0YTJIYXNoKAogICAgICAgICAgICAgICAgICAgIFhNTERlZmluaXRpb24gPT4gJEl0ZW0tPntTdWJ9LAogICAgICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICAgPT4gJFBhcmFte1hNTERhdGF9LT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJdLAogICAgICAgICAgICAgICAgICAgIFByZWZpeCAgICAgICAgPT4gJFByZWZpeCwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgID0+ICREYXRhLAogICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZXMgICAgPT4gJFBhcmFte0F0dHJpYnV0ZXN9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJERhdGE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/Layout/ITSMConfigItemTreeView.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OklUU01Db25maWdJdGVtVHJlZVZpZXc7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDo6SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldyAtIGFsbCBDb25maWdJdGVtVHJlZVZpZXctcmVsYXRlZCBIVE1MIGZ1bmN0aW9ucwoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgQ29uZmlnSXRlbVRyZWVWaWV3LXJlbGF0ZWQgSFRNTCBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgR2VuZXJhdGVIaWVyYXJjaHlHcmFwaCgpCgpjcmVhdGVzIEhUTUwgY29udGFpbmluZyB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIGZvciBkcmF3aW5nIHRoZSBncmFwaC4KCiAgICBteSAkQ2FudmFzSFRNTCA9ICRMYXlvdXRPYmplY3QtPkdlbmVyYXRlSGllcmFyY2h5R3JhcGgoCiAgICAgICAgRGVwdGggICAgICAgICAgPT4gMiwgIyBkZXB0aCBsZXZlbAogICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+IDEgICMgc291cmNlIGNvbmZpZyBpdGVtIElECiAgICAgICAgVmVyc2lvbklEICAgICAgPT4gMSAgIyBzb3VyY2UgY29uZmlnIGl0ZW0gdmVyc2lvbiBJRAogICAgKTsKCj1jdXQKCnN1YiBHZW5lcmF0ZUhpZXJhcmNoeUdyYXBoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LCwKICAgICAgICBWZXJzaW9uSUQgICAgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICApOwoKICAgIGlmICggISRDb25maWdJdGVtICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnQ291bGQgbm90IGdldCBDb25maWdJdGVtLicKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgJFNlbGYtPntDSVRyZWVNYXhEZXB0aH0gPSAxOwoKICAgIG15IEBMaW5rT3V0cHV0RGF0YVRhcmdldHMgPSAoWwogICAgICAgIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICBJRCA9PiAkU2VsZi0+X0dlbmVyYXRlSUQoICRDb25maWdJdGVtLT4lKiApLAogICAgICAgIH0sCiAgICBdKTsKICAgIG15IEBMaW5rT3V0cHV0RGF0YVNvdXJjZXMgPSBATGlua091dHB1dERhdGFUYXJnZXRzOwoKICAgICMgQnVpbGQgTGV2ZWxzIERvd24gKFRhcmdldHMpCiAgICAkU2VsZi0+R2V0Q0lTdWJUcmVlRGF0YSgKICAgICAgICBMaW5rT3V0cHV0RGF0YSA9PiBcQExpbmtPdXRwdXREYXRhVGFyZ2V0cywgICAgIyB3aWxsIGJlIG1vZGlmaWVkCiAgICAgICAgSW5pdCAgICAgICAgICAgPT4gMSwKICAgICAgICBEZXB0aCAgICAgICAgICA9PiAkUGFyYW17RGVwdGh9LAogICAgICAgIERpcmVjdGlvbiAgICAgID0+ICdTb3VyY2UnCiAgICApOwoKICAgICMgQnVpbGQgTGV2ZWxzIFVwIChTb3VyY2VzKQogICAgJFNlbGYtPkdldENJU3ViVHJlZURhdGEoCiAgICAgICAgTGlua091dHB1dERhdGEgPT4gXEBMaW5rT3V0cHV0RGF0YVNvdXJjZXMsICAgICMgd2lsbCBiZSBtb2RpZmllZAogICAgICAgIEluaXQgICAgICAgICAgID0+IDEsCiAgICAgICAgRGVwdGggICAgICAgICAgPT4gJFBhcmFte0RlcHRofSwKICAgICAgICBEaXJlY3Rpb24gICAgICA9PiAnVGFyZ2V0JwogICAgKTsKCiAgICAjIFRoZSBuZWVkZWQgZGF0YSBoYXMgYmVlbiBjb2xsZWN0ZWQuCiAgICAjIFRoZSBmb2xsb3dpbmcganVzdCBwYXNzZXMgdGhlIHR3byB0cmVlcyB0byB0aGUgd2ViIHBhZ2UuCgogICAgIyBmb3IgdGhlIHNvdXJjZXMgc3RhcnQgd2l0aCB0aGUgZGVlcGVzdCBsZXZlbAogICAgbXkgQExpbmtEYXRhU291cmNlOyAgICAjIHdpbGwgYmUgdXNlZCBpbiBKYXZhU2NyaXB0IGZvciBkcmF3aW5nIHRoZSBhcmNzCiAgICBmb3IgbXkgJExldmVsICggcmV2ZXJzZSAoIDEgLi4gJCNMaW5rT3V0cHV0RGF0YVNvdXJjZXMgKSApIHsKICAgICAgICBteSAkRWxlbWVudHMgPSAkTGlua091dHB1dERhdGFTb3VyY2VzWyAkTGV2ZWwgXTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgID0+ICdDaGlsZFNvdXJjZUVsZW1lbnRzTGV2ZWwnLAogICAgICAgICAgICBMZXZlbCA9PiAkTGV2ZWwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCAkRWxlbWVudHMtPkAqICkgewogICAgICAgICAgICBteSAkSUQgPSAiJEVsZW1lbnQtPntJRH1fUyRMZXZlbCI7ICAgICMgb25seSBsaW5rIHRvIHRoZSBuZXh0IG9yIHByZXZpb3VzIGxldmVsLCB0aGUgc2VwYXJhdG9yIF9TIGluZGljYXRlcyBTb3VyY2UKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDaGlsZFNvdXJjZUVsZW1lbnRzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkRWxlbWVudC0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIENvbnRlbnRzICAgICA9PiAkRWxlbWVudC0+e0NvbnRlbnRzfSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEVsZW1lbnQtPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIElEICAgICAgICAgICA9PiAkSUQsCiAgICAgICAgICAgICAgICAgICAgU2Vzc2lvbklEICAgID0+ICRQYXJhbXtTZXNzaW9uSUR9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG5lZWQgdG8gY29uc2lkZXIgdGhlIHNwZWNpYWwgY2FzZSB3aGVuIGxpbmtpbmcgdG8gdGhlIG9yaWdpbgogICAgICAgICAgICBteSAkTmV4dExldmVsID0gJExldmVsIC0gMTsKCiAgICAgICAgICAgIGZvciBteSAkTGluayAoIEB7ICRFbGVtZW50LT57TGlua30gLy8gW10gfSApIHsKICAgICAgICAgICAgICAgIG15ICRMaW5rZWRUb0VsZW1lbnQgPSAkTmV4dExldmVsID8gJExpbmstPntMaW5rZWRUb30gLiAnX1MnIC4gJE5leHRMZXZlbCA6ICRMaW5rLT57TGlua2VkVG99OwogICAgICAgICAgICAgICAgcHVzaCBATGlua0RhdGFTb3VyY2UsIGpvaW4gJywnLCAkTGlua2VkVG9FbGVtZW50LCAkSUQsICRMaW5rLT57TGlua1R5cGV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgTGV2ZWwgMAogICAgIyBHaXZlIGluZm9ybWF0aW9uIGFib3V0IHRoZSByb290IG5vZGUgdG8gdGhlIHdlYiBwYWdlLgogICAgIyBEeW5hbWljIGZpZWxkIGluZm8gaXMgbm90IG5lZWRlZC4KICAgIHsKICAgICAgICBteSAkQ29udGVudHMgPSAkU2VsZi0+X0dldENvbnRlbnRzKAogICAgICAgICAgICBBdHRyaWJ1dGVzID0+IFsgJ1ZlcnNpb25TdHJpbmcnLCAkU2VsZi0+Q0lUcmVlRGVmYXVsdEF0dHJpYnV0ZXMgXSwgICAgIyB0aGUgcm9vdCBoYXMgYWx3YXlzIGEgdmVyc2lvbgogICAgICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPcmlnaW5FbGVtZW50JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgICAgIENvbnRlbnRzICAgICA9PiAkQ29udGVudHMsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgSUQgICAgICAgICAgID0+ICRMaW5rT3V0cHV0RGF0YVNvdXJjZXNbMF1bMF17SUR9LAogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZvciB0aGUgdGFyZ2V0cyBzdGFydCB3aXRoIHRoZSBsb3dlc3QgbGV2ZWwKICAgIG15IEBMaW5rRGF0YVRhcmdldDsgICAgIyB3aWxsIGJlIHVzZWQgaW4gSmF2YVNjcmlwdCBmb3IgZHJhd2luZyB0aGUgYXJjcwogICAgZm9yIG15ICRMZXZlbCAoIDEgLi4gJCNMaW5rT3V0cHV0RGF0YVRhcmdldHMgKSB7CiAgICAgICAgbXkgJEVsZW1lbnRzID0gJExpbmtPdXRwdXREYXRhVGFyZ2V0c1sgJExldmVsIF07CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDaGlsZFRhcmdldEVsZW1lbnRzTGV2ZWwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExldmVsID0+ICRMZXZlbAogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggJEVsZW1lbnRzLT5AKiApIHsKICAgICAgICAgICAgbXkgJElEID0gIiRFbGVtZW50LT57SUR9X1QkTGV2ZWwiOyAgICAjIG9ubHkgbGluayB0byB0aGUgbmV4dCBvciBwcmV2aW91cyBsZXZlbCwgdGhlIHNlcGFyYXRvciBfVCBpbmRpY2F0ZXMgVGFyZ2V0CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ2hpbGRUYXJnZXRFbGVtZW50cycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJEVsZW1lbnQtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50cyAgICAgPT4gJEVsZW1lbnQtPntDb250ZW50c30sCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRFbGVtZW50LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBJRCAgICAgICAgICAgPT4gJElELAogICAgICAgICAgICAgICAgICAgIFNlc3Npb25JRCAgICA9PiAkUGFyYW17U2Vzc2lvbklEfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBuZWVkIHRvIGNvbnNpZGVyIHRoZSBzcGVjaWFsIGNhc2Ugd2hlbiBsaW5raW5nIHRvIHRoZSBvcmlnaW4KICAgICAgICAgICAgbXkgJFByZXZpb3VzTGV2ZWwgPSAkTGV2ZWwgLSAxOwogICAgICAgICAgICBmb3IgbXkgJExpbmsgKCBAeyAkRWxlbWVudC0+e0xpbmt9IC8vIFtdIH0gKSB7CiAgICAgICAgICAgICAgICBteSAkTGlua2VkVG9FbGVtZW50ID0gJFByZXZpb3VzTGV2ZWwgPyAkTGluay0+e0xpbmtlZFRvfSAuICdfVCcgLiAkUHJldmlvdXNMZXZlbCA6ICRMaW5rLT57TGlua2VkVG99OwogICAgICAgICAgICAgICAgcHVzaCBATGlua0RhdGFUYXJnZXQsIGpvaW4gJywnLCAkSUQsICRMaW5rZWRUb0VsZW1lbnQsICRMaW5rLT57TGlua1R5cGV9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdDb25maWdJdGVtVHJlZVZpZXcvQ29uZmlnSXRlbVRyZWVWaWV3R3JhcGgnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIE1heERlcHRoICAgICAgID0+ICRTZWxmLT57Q0lUcmVlTWF4RGVwdGh9LAogICAgICAgICAgICBMaW5rRGF0YVNvdXJjZSA9PiBqb2luKCAnOycsIEBMaW5rRGF0YVNvdXJjZSApLAogICAgICAgICAgICBMaW5rRGF0YVRhcmdldCA9PiBqb2luKCAnOycsIEBMaW5rRGF0YVRhcmdldCApLAogICAgICAgIH0KICAgICk7Cn0KCj1oZWFkMiBDSVRyZWVEZWZhdWx0QXR0cmlidXRlcygpCgpHZXQgYSBsaXN0IG9mIGF0dHJpYnV0ZXMgdGhhdCBhcmUgc2hvd24gaW4gdGhlIG5vZGVzLgoKICAgIG15IEBBdHRyaWJ1dGVzID0gJExheW91dE9iamVjdC0+Q0lUcmVlRGVmYXVsdEF0dHJpYnV0ZXMoKTsKCj1jdXQKCnN1YiBDSVRyZWVEZWZhdWx0QXR0cmlidXRlcyB7CiAgICByZXR1cm4gcXcvQ2xhc3MgQ3VyRGVwbFN0YXRlIEN1ckluY2lTdGF0ZSBDdXJJbmNpU3RhdGVUeXBlLzsKfQoKIyBidWlsZCBDaGlsZHJlbiBzdHJ1Y3R1cmUKc3ViIEdldENJU3ViVHJlZURhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGlua091dHB1dERhdGEgPSAkUGFyYW17TGlua091dHB1dERhdGF9OyAgICAjIHdpbGwgYmUgbW9kaWZpZWQKICAgIG15ICREZXB0aCAgICAgICAgICA9ICRQYXJhbXtEZXB0aH07CiAgICBteSAkSW5pdCAgICAgICAgICAgPSAkUGFyYW17SW5pdH07CiAgICBteSAkRGlyZWN0aW9uICAgICAgPSAkUGFyYW17RGlyZWN0aW9ufTsKCiAgICBteSAkQWN0dWFsTGV2ZWwgICAgICA9IDE7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgYnVpbGQgdGhlIGl0ZW1zIGZvciB0aGUgbmV3IGxldmVscwogICAgTE9PUERFUFRIOgogICAgZm9yIG15ICRHb0RlZXAgKCAkSW5pdCAuLiAkRGVwdGggKSB7CiAgICAgICAgbmV4dCBMT09QREVQVEggaWYgZXhpc3RzICRMaW5rT3V0cHV0RGF0YS0+WyAkR29EZWVwIF07CiAgICAgICAgbGFzdCBMT09QREVQVEggdW5sZXNzICRMaW5rT3V0cHV0RGF0YS0+WyAkR29EZWVwIC0gMSBdOwoKICAgICAgICAjIGdldCBsaW5rZWQgb2JqZWN0cyBmb3IgdGhlIG5leHQgbGV2ZWwKICAgICAgICBteSBASXRlbXNQZXJMZXZlbDsKICAgICAgICBteSAlSXRlbU1hcDsKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCAkTGlua091dHB1dERhdGEtPlsgJEdvRGVlcCAtIDEgXS0+QCogKSB7CgogICAgICAgICAgICBteSAkTGlua2VkQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+TGlua2VkQ29uZmlnSXRlbXMoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEVsZW1lbnQtPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgID0+ICRFbGVtZW50LT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICA9PiAkRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkRGF0YUZvckl0ZW0gPSAkU2VsZi0+R2V0TGlua091dHB1dERhdGEoCiAgICAgICAgICAgICAgICBMaW5rZWRDb25maWdJdGVtcyA9PiAkTGlua2VkQ29uZmlnSXRlbXMsCiAgICAgICAgICAgICAgICBMaW5rZWRUbyAgICAgICAgICA9PiAkRWxlbWVudC0+e0lEfSwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICAgICAgID0+ICREaXJlY3Rpb24sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBJVEVNOgogICAgICAgICAgICBmb3IgbXkgJFNpbmdsZUl0ZW0gKCBAeyAkRGF0YUZvckl0ZW0gLy8gW10gfSApIHsKCiAgICAgICAgICAgICAgICAjIGlmIHRoaXMgaXRlbSBhbHJlYWR5IGV4aXN0cyBvbiB0aGlzIGxheWVyLCBqdXN0IGFkZCBhbm90aGVyIGxpbmsgdG8gaXQKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkSXRlbU1hcHsgJFNpbmdsZUl0ZW0tPntJRH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEB7ICRJdGVtc1BlckxldmVsWyAkSXRlbU1hcHsgJFNpbmdsZUl0ZW0tPntJRH0gfSBde0xpbmt9IH0sICRTaW5nbGVJdGVtLT57TGlua31bMF07CgogICAgICAgICAgICAgICAgICAgIG5leHQgSVRFTTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBJdGVtc1BlckxldmVsLCAkU2luZ2xlSXRlbTsKICAgICAgICAgICAgICAgICRJdGVtTWFweyAkU2luZ2xlSXRlbS0+e0lEfSB9ID0gJCNJdGVtc1BlckxldmVsOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoQEl0ZW1zUGVyTGV2ZWwpIHsKICAgICAgICAgICAgJEFjdHVhbExldmVsKys7CiAgICAgICAgICAgICRMaW5rT3V0cHV0RGF0YS0+WyRHb0RlZXBdID0gXEBJdGVtc1BlckxldmVsOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRBY3R1YWxMZXZlbCA+ICRTZWxmLT57Q0lUcmVlTWF4RGVwdGh9ICYmICRBY3R1YWxMZXZlbCAhPSAwICkgewogICAgICAgICRTZWxmLT57Q0lUcmVlTWF4RGVwdGh9ID0gJEFjdHVhbExldmVsOwogICAgfQoKICAgIHJldHVybjsKfQoKIyByZXR1cm4gY29udGVudHMgb2YgdGhlIG5vZGVzCnN1YiBfR2V0Q29udGVudHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBAQXR0cmlidXRlcyA9ICRQYXJhbXtBdHRyaWJ1dGVzfS0+QCo7CiAgICBteSAkQ29uZmlnSXRlbSA9ICRQYXJhbXtDb25maWdJdGVtfTsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgZmlsbCBkYXRhIHdpdGggY29uZmlnIGl0ZW0gYXR0cmlidXRlcwogICAgbXkgQExpbmVzOwogICAgZm9yIG15ICRDb2x1bW4gKEBBdHRyaWJ1dGVzKSB7CgogICAgICAgIG15ICRDb2x1bW5MYWJlbCA9ICRDb2x1bW47CiAgICAgICAgaWYgKCBpbmRleCggJENvbHVtbiwgJzo6JyApID4gMCApIHsKICAgICAgICAgICAgbXkgQFZhbHMgPSBzcGxpdCAvOjovLCAkQ29sdW1uOwogICAgICAgICAgICBwb3AgQFZhbHM7CiAgICAgICAgICAgICRDb2x1bW5MYWJlbCA9IGpvaW4gJyAnLCBAVmFsczsKICAgICAgICB9CgogICAgICAgIG15ICRMYWJlbCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFNlbGYtPl9NYXBBdHRyaWJ1dGVzKCBMYWJlbCA9PiAkQ29sdW1uTGFiZWwgKSApOwogICAgICAgIG15ICRUZXh0ICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJENvbmZpZ0l0ZW0tPnskQ29sdW1ufSAvLyAnJyApOwoKICAgICAgICAjIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlLiBTaG93IHRoZSBncmVlbiwgeWVsbG93LCByZWQgZmxhZ3MuCiAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU3RhdGVUeXBlJyApIHsKCiAgICAgICAgICAgICMgZGVmaW5lIGluY2lkZW50IHNpZ25hbHMKICAgICAgICAgICAgbXkgJUluY2lTaWduYWxzID0gKAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKCdvcGVyYXRpb25hbCcpID0+ICdncmVlbmxlZCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUoJ3dhcm5pbmcnKSAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUoJ2luY2lkZW50JykgICAgPT4gJ3JlZGxlZCcsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRDdXJJbmNpU2lnbmFsID0gJEluY2lTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZVR5cGV9IH07CiAgICAgICAgICAgIHB1c2ggQExpbmVzLCBxcXs8c3BhbiBjbGFzcz0iRmxhZyBTbWFsbCI+IDxzcGFuIGNsYXNzPSIkQ3VySW5jaVNpZ25hbCI+IiRUZXh0Ijwvc3Bhbj48L3NwYW4+fTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHB1c2ggQExpbmVzLCAiJExhYmVsOiAkVGV4dCI7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBqb2luICI8YnI+XG4iLCBATGluZXM7Cn0KCiMgZ2VuZXJhdGUgYW4gSUQgdGhhdCBpcyB1c2VkIGZvciBkcmF3aW5nIHRoZSBhcmNzCnN1YiBfR2VuZXJhdGVJRCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBqb2luICcnLAogICAgICAgICggZGVmaW5lZCAkUGFyYW17Q29uZmlnSXRlbUlEfSA/ICJDJFBhcmFte0NvbmZpZ0l0ZW1JRH0iIDogJycgKSwKICAgICAgICAoIGRlZmluZWQgJFBhcmFte1ZlcnNpb25JRH0gICAgPyAiViRQYXJhbXtWZXJzaW9uSUR9IiAgICA6ICcnICk7Cn0KCiMgR2V0IGxpbmtzIGZvciByZWxhdGVkIENJLgojIFRoaXMgcmV0dXJuZWQgb3V0cHV0IGRhdGEgaXMgbm90IGEgdHJlZSwgYnV0IGFuIGFycmF5cmVmIG9mIGl0ZW1zIHBlciBsZXZlbC4Kc3ViIEdldExpbmtPdXRwdXREYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWd1cmVkVHlwZXMgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdMaW5rT2JqZWN0OjpUeXBlJyk7CgogICAgbXkgQE91dHB1dERhdGE7CiAgICBmb3IgbXkgJExpbmtlZENvbmZpZ0l0ZW0gKCBncmVwIHsgJF8tPntEaXJlY3Rpb259IGVxICRQYXJhbXtEaXJlY3Rpb259IH0gJFBhcmFte0xpbmtlZENvbmZpZ0l0ZW1zfS0+QCogKSB7CgogICAgICAgICMgYmFzaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxpbmtlZCBjb25maWcgaXRlbQogICAgICAgICMgVGhlcmUgYXJlIG9ubHkgdHdvIGNhc2VzOgogICAgICAgICMgICAtIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbgogICAgICAgICMgICAtIFZlcnNpb25JRCBpcyBnaXZlbgogICAgICAgIG15ICVJbmNvbWluZ0lEcyA9IG1hcCB7ICRfID0+ICRMaW5rZWRDb25maWdJdGVtLT57JF99IH0gcXcoQ29uZmlnSXRlbUlEIFZlcnNpb25JRCk7CgogICAgICAgICMgQ29uZmlnSXRlbUdldCgpIGFsbG93cyBmb3IgYm90aCBjYXNlcwogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICVJbmNvbWluZ0lEcywKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgVGhpcyB3aWxsIGJlIHVzZWQgZm9yIGZpbmRpbmcgdGhlIG5leHQgbGV2ZWwgb2YgbGlua3M6CiAgICAgICAgIyAgIC0gQ29uZmlnSXRlbUlEIHdhcyBnaXZlbiA9PiBsYXRlc3QgVmVyc2lvbklEIHdpbGwgYmUgYWRkZWQKICAgICAgICAjICAgLSBWZXJzaW9uSUQgd2FzIGdpdmVuICAgID0+IENvbmZpZ0l0ZW1JRCBmb3IgdGhhdCB2ZXJzaW9uIHdpbGwgYmUgYWRkZWQKICAgICAgICBteSAlT3V0Z29pbmdJRHMgPSBtYXAgeyAkXyA9PiAkQ29uZmlnSXRlbS0+eyRffSB9IHF3KENvbmZpZ0l0ZW1JRCBWZXJzaW9uSUQpOwoKICAgICAgICAjIEZpbmQgbGFiZWwgZm9yIHRoZSBsaW5rLiBJbiBUcmVlVmlldyB0aGUgbGFiZWwgb2YgdGhlIGFyYwogICAgICAgICMgc2hvdWxkIGJlIGluIGFjY29yZGFuY2UgdG8gdGhlIGRpcmVjdGlvbiBvZiB0aGUgYXJjLiBUaGUgYXJlCiAgICAgICAgIyBpcyBhbHdheXMgZGlyZWN0ZWQgZnJvbSBTb3VyY2UgdG8gVGFyZ2V0LiBUaGVyZWZvcmUgdGhlIFNvdXJjZU5hbWUgaXMgdGhlIGFyYyBsYWJlbC4KICAgICAgICBteSAkTGlua1R5cGUgPSAkTGlua2VkQ29uZmlnSXRlbS0+e0xpbmtUeXBlfTsKICAgICAgICBteSAkQXJjTGFiZWwgPSAkQ29uZmlndXJlZFR5cGVzLT57JExpbmtUeXBlfS0+e1NvdXJjZU5hbWV9IHx8ICRMaW5rVHlwZTsKICAgICAgICBteSAkTGluayAgICAgPSBbIHsgTGlua2VkVG8gPT4gJFBhcmFte0xpbmtlZFRvfSwgIExpbmtUeXBlID0+ICRBcmNMYWJlbCB9IF07CgogICAgICAgICMgV2FzIHRoZSBsaW5rIHRvIHRoaXMgaXRlbSB2ZXJzaW9uIHNwZWNpZmljID8KICAgICAgICAjIFRoZSBWZXJzaW9uU3RyaW5nIGlzIG9ubHkgc2hvd24gaW4gdGhlIFRyZWVWaWV3IHdoZW4gYW4gZXhwbGljaXQgdmVyc2lvbiBpcyBsaW5rZWQuCiAgICAgICAgIyBUT0RPOiBpZiB3ZSB3YW50IG11bHRpcGxlIGxpbmtzIHRvIHRoZSB2ZXJzaW9uIG9uIHRoZSBzYW1lIGxheWVyLCBvbmx5IHBhcnRseSB2ZXJzaW9uIHNwZWNpZmljCiAgICAgICAgIyAgICAgICB3ZSB3b3VsZCBuZWVkIHNlcGFyYXRlIGlkcyBmb3IgYm90aC4gVGhpcyBjdXJyZW50bHkgaXMgbm90IGltcGxlbWVudGVkLgogICAgICAgIG15ICRMaW5rZWRBc1ZlcnNpb24gPSAkSW5jb21pbmdJRHN7VmVyc2lvbklEfSA/IDEgOiAwOwoKICAgICAgICAjIGRlZmluZSBpdGVtIGRhdGEKICAgICAgICBwdXNoIEBPdXRwdXREYXRhLCB7CiAgICAgICAgICAgICVPdXRnb2luZ0lEcywKICAgICAgICAgICAgSUQgICAgICAgICAgICAgID0+ICRTZWxmLT5fR2VuZXJhdGVJRCglT3V0Z29pbmdJRHMpLCAgICAjIHVzZWQgZm9yIGxpbmtpbmcgaW4gdGhlIGdyYXBoCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgICAgICBMaW5rICAgICAgICAgICAgPT4gJExpbmssCiAgICAgICAgICAgIExpbmtlZEFzVmVyc2lvbiA9PiAkTGlua2VkQXNWZXJzaW9uLAogICAgICAgICAgICBDb250ZW50cyAgICAgICAgPT4gJFNlbGYtPl9HZXRDb250ZW50cygKICAgICAgICAgICAgICAgIEF0dHJpYnV0ZXMgPT4gWwogICAgICAgICAgICAgICAgICAgICggJExpbmtlZEFzVmVyc2lvbiA/ICdWZXJzaW9uU3RyaW5nJyA6ICgpICksCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPkNJVHJlZURlZmF1bHRBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgICksCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gXEBPdXRwdXREYXRhOwp9CgojIGNoYW5nZSBsYWJlbHMgZm9yIHRyYW5zbGF0YWJsZSB2YWx1ZXMKc3ViIF9NYXBBdHRyaWJ1dGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte0xhYmVsfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTGFiZWwhJwogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBzdGF0ZSAkTWFwVHJhbnNsYXRpb25zID0gewogICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ0luY2lkZW50IFN0YXRlJywKICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdEZXBsb3ltZW50IFN0YXRlJywKICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnLAogICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnLAogICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJycsCiAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAnQ29uZmlnIEl0ZW0gTnVtYmVyJywKICAgICAgICBWZXJzaW9uU3RyaW5nICAgID0+ICdWZXJzaW9uIFN0cmluZycsCiAgICB9OwoKICAgIHJldHVybiAkTWFwVHJhbnNsYXRpb25zLT57ICRQYXJhbXtMYWJlbH0gfSAvLyAkUGFyYW17TGFiZWx9Owp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/LinkObject/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMaW5rT2JqZWN0OjpJVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3Q6OklUU01Db25maWdJdGVtIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGxpbmsgb2JqZWN0IChjb25maWcgaXRlbSkKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxpbmtPYmplY3Q6OklUU01Db25maWdJdGVtLT5uZXcoCiAgICAgICAgVXNlckxhbmd1YWdlID0+ICdlbicsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7fSwgJFR5cGU7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKHF3KFVzZXJMYW5ndWFnZSBVc2VySUQpKSB7CiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfSB8fCBkaWUgIkdvdCBubyAkTmVlZGVkISI7CiAgICB9CgogICAgIyBXZSBuZWVkIG91ciBvd24gTGF5b3V0T2JqZWN0IGluc3RhbmNlIHRvIGF2b2lkIGJsb2NrZGF0YSBjb2xsaXNpb25zCiAgICAjICAgd2l0aCB0aGUgbWFpbiBwYWdlLgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dC0+bmV3KCAleyRTZWxmfSApOwoKICAgICMgZGVmaW5lIG5lZWRlZCB2YXJpYWJsZXMKICAgICRTZWxmLT57T2JqZWN0RGF0YX0gPSB7CiAgICAgICAgT2JqZWN0ICAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFJlYWxuYW1lICAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgIE9iamVjdE5hbWUgPT4gJ1NvdXJjZU9iamVjdElEJywKICAgIH07CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgVGFibGVDcmVhdGVDb21wbGV4KCkKCnJldHVybiBhbiBhcnJheSB3aXRoIHRoZSBibG9jayBkYXRhCgpSZXR1cm4KCiAgICBAQmxvY2tEYXRhID0gKAogICAgICAgIHsKCiAgICAgICAgICAgIE9iamVjdE5hbWUgID0+ICdDb25maWdJdGVtSUQnLAogICAgICAgICAgICBPYmplY3RJRCAgICA9PiAnMTIzJywKCiAgICAgICAgICAgIE9iamVjdCAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBCbG9ja25hbWUgPT4gJ0NvbmZpZ0l0ZW0gQ29tcHV0ZXInLAogICAgICAgICAgICBIZWFkbGluZSAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgV2lkdGggICA9PiAyMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ29uZmlnSXRlbSMnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTAwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgV2lkdGggICA9PiAxMzAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NyZWF0ZWQnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTMwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSXRlbUxpc3QgPT4gWwogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICA9PiAnQ3VySW5jaVNpZ25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgICAgICAgPT4gJzEyMycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMTIzJywKICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICA9PiAnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0xMjMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ1RoZSBOYW1lIG9mIHRoZSBDb25maWcgSXRlbScsCiAgICAgICAgICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiA1MCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICdJbiBSZXBhaXInLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnVGltZUxvbmcnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDA4LTAxLTAxIDEyOjEyOjAwJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgPT4gJ0N1ckluY2lTaWduYWwnLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgICAgICAgID0+ICcyMzQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIzNCcsCiAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgPT4gJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9MjM0JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICdUaGUgTmFtZSBvZiB0aGUgQ29uZmlnIEl0ZW0gMjM0JywKICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ1Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnVGltZUxvbmcnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDA3LTExLTExIDEyOjEyOjAwJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgKTsKCiAgICBAQmxvY2tEYXRhID0gJExpbmtPYmplY3QtPlRhYmxlQ3JlYXRlQ29tcGxleCgKICAgICAgICBPYmplY3RMaW5rTGlzdFdpdGhEYXRhID0+ICRPYmplY3RMaW5rTGlzdFJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgVGFibGVDcmVhdGVDb21wbGV4IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfSB8fCByZWYgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgT2JqZWN0TGlua0xpc3RXaXRoRGF0YSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBnZXQgYW5kIHJlbWVtYmVyIHRoZSBEZXBsb3ltZW50IHN0YXRlIGNvbG9ycwogICAgbXkgJERlcGxveW1lbnRTdGF0ZXNMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJXskRGVwbG95bWVudFN0YXRlc0xpc3R9ICkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJVByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGEgY29sb3IgaXMgZGVmaW5lZCBpbiBwcmVmZXJlbmNlcwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkUHJlZmVyZW5jZXN7Q29sb3J9OwogICAgICAgIG15ICgkQ29sb3IpID0gJFByZWZlcmVuY2Vze0NvbG9yfS0+QCo7CiAgICAgICAgbmV4dCBJVEVNSUQgdW5sZXNzICRDb2xvcjsKCiAgICAgICAgIyBhZGQgY29sb3Igc3R5bGUgZGVmaW5pdGlvbgogICAgICAgIG15ICREZXBsU3RhdGUgPSAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfTsKCiAgICAgICAgIyByZW1vdmUgYW55IG5vbiBhc2NpaSB3b3JkIGNoYXJhY3RlcnMKICAgICAgICAkRGVwbFN0YXRlID1+IHN7IFteYS16QS1aMC05XSB9e199bXN4ZzsKCiAgICAgICAgIyBjb3ZlcnQgdG8gbG93ZXIgY2FzZQogICAgICAgICRTZWxmLT57RGVwbFN0YXRlQ29sb3JzfS0+eyREZXBsU3RhdGV9ID0gbGMgJENvbG9yOwogICAgfQoKICAgICMgR2V0IHRoZSBjb2x1bW5zIGNvbmZpZy4KICAgIG15ICRDb2x1bW5zQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdMaW5rT2JqZWN0OjpJVFNNQ29uZmlnSXRlbTo6U2hvd0NvbHVtbnMnKTsKCiAgICAjIEdldCB0aGUgY29sdW1ucyBieSBjbGFzcyBjb25maWcuCiAgICBteSAkQ29sdW1uc0J5Q2xhc3NDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0xpbmtPYmplY3Q6OklUU01Db25maWdJdGVtOjpTaG93Q29sdW1uc0J5Q2xhc3MnKTsKCiAgICAjIEdldCBjb25maWd1cmVkIGNvbHVtbnMgYW5kIHJlb3JnYW5pemUgdGhlbSBieSBjbGFzcyBuYW1lLgogICAgbXkgJUNvbHVtbkJ5Q2xhc3M7CiAgICBteSAlU2lnbmFsQ29sdW1uTGlzdDsKICAgIGlmICggJENvbHVtbnNCeUNsYXNzQ29uZmlnICYmIHJlZiAkQ29sdW1uc0J5Q2xhc3NDb25maWcgZXEgJ0FSUkFZJyAmJiBAeyRDb2x1bW5zQnlDbGFzc0NvbmZpZ30gKSB7CgogICAgICAgIE5BTUU6CiAgICAgICAgZm9yIG15ICROYW1lICggQHskQ29sdW1uc0J5Q2xhc3NDb25maWd9ICkgewogICAgICAgICAgICBteSAoICRDbGFzcywgJENvbHVtbiApID0gc3BsaXQgLzo6LywgJE5hbWUsIDI7CgogICAgICAgICAgICBuZXh0IE5BTUUgaWYgISRDb2x1bW47CgogICAgICAgICAgICAjIElmIHNpZ25hbCBjb2x1bW5zIGFyZSBjb25maWd1cmVkIGp1c3QgZm9yIGNlcnRhaW4gY2xhc3NlcywgYWRkIHRoZW0gdG8gdGhlIGJlZ2lubmluZyBvZiBJdGVtQ29sdW1ucyBhcnJheSwKICAgICAgICAgICAgIyBub3QgdG8gdGhlIGFycmF5IHdpdGggb3RoZXIgY29sdW1ucy4KICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyB8fCAkQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICRTaWduYWxDb2x1bW5MaXN0eyRDbGFzc30tPnskQ29sdW1ufSA9IDE7CiAgICAgICAgICAgICAgICBuZXh0IE5BTUU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQHsgJENvbHVtbkJ5Q2xhc3N7JENsYXNzfSB9LCAkQ29sdW1uOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNvbnZlcnQgdGhlIGxpc3QKICAgIG15ICVMaW5rTGlzdDsKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IH0gKSB7CgogICAgICAgICMgZXh0cmFjdCBsaW5rIHR5cGUgTGlzdAogICAgICAgIG15ICRMaW5rVHlwZUxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9OwoKICAgICAgICBmb3IgbXkgJERpcmVjdGlvbiAoIHNvcnQga2V5cyAleyRMaW5rVHlwZUxpc3R9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IGRpcmVjdGlvbiBsaXN0CiAgICAgICAgICAgIG15ICREaXJlY3Rpb25MaXN0ID0gJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259OwoKICAgICAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAleyREaXJlY3Rpb25MaXN0fSApIHsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgY2xhc3MKICAgICAgICAgICAgICAgIG15ICRDbGFzcyA9ICREaXJlY3Rpb25MaXN0LT57JENvbmZpZ0l0ZW1JRH0tPntDbGFzc30gfHwgJyc7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRDbGFzczsKCiAgICAgICAgICAgICAgICAkTGlua0xpc3R7JENsYXNzfS0+eyRDb25maWdJdGVtSUR9LT57RGF0YX0gPSAkRGlyZWN0aW9uTGlzdC0+eyRDb25maWdJdGVtSUR9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15IEBCbG9ja0RhdGE7CiAgICBmb3IgbXkgJENsYXNzICggc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IGtleXMgJUxpbmtMaXN0ICkgewoKICAgICAgICAjIGV4dHJhY3QgY29uZmlnIGl0ZW0gZGF0YQogICAgICAgIG15ICRDb25maWdJdGVtTGlzdCA9ICRMaW5rTGlzdHskQ2xhc3N9OwoKICAgICAgICAjIHRvIHN0b3JlIHRoZSBjb2x1bW4gaGVhZGxpbmUKICAgICAgICBteSBAU2hvd0NvbHVtbnNIZWFkbGluZXM7CgogICAgICAgICMgY3JlYXRlIHRoZSBpdGVtIGxpc3QKICAgICAgICBteSBASXRlbUxpc3Q7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKAogICAgICAgICAgICBzb3J0IHsgJENvbmZpZ0l0ZW1MaXN0LT57JGF9LT57RGF0YX0tPntOYW1lfSBjbXAgJENvbmZpZ0l0ZW1MaXN0LT57JGJ9LT57RGF0YX0tPntOYW1lfSB9CiAgICAgICAgICAgIGtleXMgJXskQ29uZmlnSXRlbUxpc3R9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgY29sdW1uIGhlYWRsaW5lIGFycmF5IGlzIGVtcHR5IGZvciBlYWNoIGxvb3AKICAgICAgICAgICAgQFNob3dDb2x1bW5zSGVhZGxpbmVzID0gKCk7CgogICAgICAgICAgICBteSBASXRlbUNvbHVtbnMgPSAoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgTGluayAgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntCYXNlbGlua30KICAgICAgICAgICAgICAgICAgICAgICAgLiAnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAiQ29uZmlnSXRlbSMgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9ICgkQ29uZmlnSXRlbS0+e0NsYXNzfSk6ICRDb25maWdJdGVtLT57TmFtZX0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQWRkIGNvbHVtbnMgZnJvbSAnTGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW06OlNob3dDb2x1bW5zJyBzZXR0aW5nIHRvIHRoZSBjdXJyZW50IENJIGNsYXNzCiAgICAgICAgICAgICMgaWYgaXQgZG9lcyBub3QgY29udGFpbiB0aGVtLiBTaWduYWwgY29sdW1ucyBpcyBzYXZlZCBpbiBoYXNoIGJlY2F1c2UgdGhleSB3aWxsIGJlIGFkZGVkIGxhdGVyLgogICAgICAgICAgICBDT0xVTU5DT05GSUc6CiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uICggQHskQ29sdW1uc0NvbmZpZ30gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyB8fCAkQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICAgICAkU2lnbmFsQ29sdW1uTGlzdHskQ2xhc3N9LT57JENvbHVtbn0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAhZ3JlcCB7ICRfIGVxICRDb2x1bW4gfSBAeyAkQ29sdW1uQnlDbGFzc3skQ2xhc3N9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyAkQ29sdW1uQnlDbGFzc3skQ2xhc3N9IH0sICRDb2x1bW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQWRkIHNpZ25hbCBjb2x1bW5zIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5IGlmIG5lZWRlZC4KICAgICAgICAgICAgaWYgKCAkU2lnbmFsQ29sdW1uTGlzdHskQ2xhc3N9LT57Q3VyRGVwbFNpZ25hbH0gKSB7CiAgICAgICAgICAgICAgICB1bnNoaWZ0IEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0N1ckRlcGxTaWduYWwnLAogICAgICAgICAgICAgICAgICAgIEtleSAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkU2lnbmFsQ29sdW1uTGlzdHskQ2xhc3N9LT57Q3VySW5jaVNpZ25hbH0gKSB7CiAgICAgICAgICAgICAgICB1bnNoaWZ0IEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgPT4gJ0N1ckluY2lTaWduYWwnLAogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlfSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlVHlwZX0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRoZXNlIGNvbHVtbnMgd2lsbCBiZSBhZGRlZCBpZiBubyBjbGFzcyBiYXNlZCBjb2x1bW4gY29uZmlnIGlzIGRlZmluZWQKICAgICAgICAgICAgbXkgQEFkZGl0aW9uYWxEZWZhdWx0SXRlbUNvbHVtbnMgPSAoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnVGltZUxvbmcnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJENvbmZpZ0l0ZW0tPntDcmVhdGVUaW1lfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGluZGl2aWR1YWwgY29sdW1uIGNvbmZpZyBmb3IgdGhpcyBjbGFzcyBleGlzdHMKICAgICAgICAgICAgIyBUT0RPOiBpbmNvcnBvcmF0ZSBkeW5hbWljIGZpZWxkIGRhdGEKICAgICAgICAgICAgaWYgKDApIHsgfQoKICAgICAgICAgICAgIyAgICAgICAgICAgIGlmICggJENvbHVtbkJ5Q2xhc3N7JENsYXNzfSApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICMgY29udmVydCB0aGUgWE1MIGRhdGEgaW50byBhIGhhc2gKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICBteSAkRXh0ZW5kZWRWZXJzaW9uRGF0YSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+WE1MRGF0YTJIYXNoKAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRWZXJzaW9uWE1MRGF0YS0+e1hNTERlZmluaXRpb259LAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgID0+ICRWZXJzaW9uWE1MRGF0YS0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFdLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzICAgID0+ICRDb2x1bW5CeUNsYXNzeyRDbGFzc30sCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgIENPTFVNTjoKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoIEB7ICRDb2x1bW5CeUNsYXNzeyRDbGFzc30gfSApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAjIHByb2Nlc3Mgc29tZSBub24teG1sIGF0dHJpYnV0ZXMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgaWYgKCAkVmVyc2lvbi0+eyRDb2x1bW59ICkgewogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAjIGhhbmRsZSB0aGUgQ0kgbmFtZQogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdOYW1lJyApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJFZlcnNpb24tPntOYW1lfSwKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgaGVhZGxpbmUKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1uc0hlYWRsaW5lcywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdOYW1lJywKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAjIHNwZWNpYWwgdHJhbnNsYXRpb24gaGFuZGxpbmcKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJFZlcnNpb24tPnskQ29sdW1ufSwKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlID0+IDEsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBoZWFkbGluZQogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zSGVhZGxpbmVzLCB7CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0RlcGxveW1lbnQgU3RhdGUnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICMgc3BlY2lhbCB0cmFuc2xhdGlvbiBoYW5kbGluZwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU3RhdGUnICkgewogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGNvbHVtbgogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEl0ZW1Db2x1bW5zLCB7CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAkVmVyc2lvbi0+eyRDb2x1bW59LAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGhlYWRsaW5lCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnNIZWFkbGluZXMsIHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnSW5jaWRlbnQgU3RhdGUnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICMgc3BlY2lhbCB0cmFuc2xhdGlvbiBoYW5kbGluZwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDbGFzcycgKSB7CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgY29sdW1uCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBASXRlbUNvbHVtbnMsIHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICRWZXJzaW9uLT57JENvbHVtbn0sCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZSA9PiAxLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgaGVhZGxpbmUKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1uc0hlYWRsaW5lcywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdDbGFzcycsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgIyBzcGVjaWFsIGRhdGUvdGltZSBoYW5kbGluZwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDcmVhdGVUaW1lJyApIHsKICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdUaW1lTG9uZycsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJFZlcnNpb24tPntDcmVhdGVUaW1lfSwKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGhlYWRsaW5lCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnNIZWFkbGluZXMsIHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ3JlYXRlZCcsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU47CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgdG8gYXNjaWkgdGV4dCBpbiBjYXNlIHRoZSB2YWx1ZSBjb250YWlucyBodG1sCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKS0+VG9Bc2NpaSgKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkRXh0ZW5kZWRWZXJzaW9uRGF0YS0+eyRDb2x1bW59LT57VmFsdWV9LAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICApIHx8ICcnOwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBhbGwgd2hpdGVzcGFjZSBhbmQgbmV3bGluZXMgdG8gc2luZ2xlIHNwYWNlcwogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAkVmFsdWUgPX4gc3sgXHMrIH17IH1neG1zOwogICAgICAgICAgICAjCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgcHVzaCBASXRlbUNvbHVtbnMsIHsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkVmFsdWUsCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICMKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGhlYWRsaW5lCiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zSGVhZGxpbmVzLCB7CiAgICAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRFeHRlbmRlZFZlcnNpb25EYXRhLT57JENvbHVtbn0tPntOYW1lfSB8fCAnJywKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgIyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICMgICAgICAgICAgICB9CgogICAgICAgICAgICAjIGluZGl2aWR1YWwgY29sdW1uIGNvbmZpZyBmb3IgdGhpcyBjbGFzcyBkb2VzIG5vdCBleGlzdCwKICAgICAgICAgICAgIyBzbyB0aGUgZGVmYXVsdCBjb2x1bW5zIHdpbGwgYmUgdXNlZAogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGFkZCB0aGUgZGVmYXVsdCBjb2x1bW5zCiAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgQEFkZGl0aW9uYWxEZWZhdWx0SXRlbUNvbHVtbnM7CgogICAgICAgICAgICAgICAgIyBhZGQgdGhlIGRlZmF1bHQgY29sdW1uIGhlYWRsaW5lcwogICAgICAgICAgICAgICAgQFNob3dDb2x1bW5zSGVhZGxpbmVzID0gKAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0RlcGxveW1lbnQgU3RhdGUnLAogICAgICAgICAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDEzMCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ3JlYXRlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTMwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBJdGVtTGlzdCwgXEBJdGVtQ29sdW1uczsKICAgICAgICB9CgogICAgICAgIHJldHVybiBpZiAhQEl0ZW1MaXN0OwoKICAgICAgICAjIGRlZmluZSB0aGUgYmxvY2sgZGF0YQogICAgICAgIG15ICVCbG9jayA9ICgKICAgICAgICAgICAgT2JqZWN0ICAgID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3R9LAogICAgICAgICAgICBCbG9ja25hbWUgPT4gJFNlbGYtPntPYmplY3REYXRhfS0+e1JlYWxuYW1lfSAuICcgKCcgLiAkQ2xhc3MgLiAnKScsCiAgICAgICAgICAgIEhlYWRsaW5lICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ29uZmlnSXRlbSMnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTAwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSXRlbUxpc3QgPT4gXEBJdGVtTGlzdCwKICAgICAgICApOwoKICAgICAgICAjIEFkZCAnQ3VySW5jaVNpZ25hbCcgYW5kICdDdXJEZXBsU2lnbmFsJyBjb2x1bW5zIHRvIHRoZSBiZWdpbm5pbmcgb2YgaGVhZGxpbmUgaWYgbmVlZGVkLgogICAgICAgIGlmICggJFNpZ25hbENvbHVtbkxpc3R7JENsYXNzfS0+e0N1ckRlcGxTaWduYWx9ICkgewogICAgICAgICAgICB1bnNoaWZ0IEB7ICRCbG9ja3tIZWFkbGluZX0gfSwgewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDIwLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBpZiAoICRTaWduYWxDb2x1bW5MaXN0eyRDbGFzc30tPntDdXJJbmNpU2lnbmFsfSApIHsKICAgICAgICAgICAgdW5zaGlmdCBAeyAkQmxvY2t7SGVhZGxpbmV9IH0sIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0luY2lkZW50IFN0YXRlJywKICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMjAsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIGFkZCB0aGUgY29sdW1uIGhlYWRsaW5lcwogICAgICAgIHB1c2ggQHsgJEJsb2Nre0hlYWRsaW5lfSB9LCBAU2hvd0NvbHVtbnNIZWFkbGluZXM7CgogICAgICAgIHB1c2ggQEJsb2NrRGF0YSwgXCVCbG9jazsKICAgIH0KCiAgICByZXR1cm4gQEJsb2NrRGF0YTsKfQoKPWhlYWQyIFRhYmxlQ3JlYXRlU2ltcGxlKCkKCnJldHVybiBhIGhhc2ggd2l0aCB0aGUgbGluayBvdXRwdXQgZGF0YQoKUmV0dXJuCgogICAgJUxpbmtPdXRwdXREYXRhID0gKAogICAgICAgIE5vcm1hbDo6U291cmNlID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NJOjU1NTU1JywKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgID0+ICdDb25maWdJdGVtIyA1NTU1NTU6IFRoZSBjb25maWcgaXRlbSBuYW1lJywKICAgICAgICAgICAgICAgICAgICBDc3MgICAgID0+ICdzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2giJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ0k6MjIyMjInLAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgPT4gJ0NvbmZpZ0l0ZW0jIDIyMjIyOiBUaXRsZSBvZiBjb25maWcgbmFtZSAyMjIyMicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUGFyZW50Q2hpbGQ6OlRhcmdldCA9PiB7CiAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdDSTo3Nzc3NycsCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAnQ29uZmlnSXRlbSMgNzc3Nzc6IENvbmZpZ0l0ZW0gbmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICApOwoKICAgICVMaW5rT3V0cHV0RGF0YSA9ICRMaW5rT2JqZWN0LT5UYWJsZUNyZWF0ZVNpbXBsZSgKICAgICAgICBPYmplY3RMaW5rTGlzdFdpdGhEYXRhID0+ICRPYmplY3RMaW5rTGlzdFJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgVGFibGVDcmVhdGVTaW1wbGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IHx8IHJlZiAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gbmUgJ0hBU0gnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBPYmplY3RMaW5rTGlzdFdpdGhEYXRhIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUxpbmtPdXRwdXREYXRhOwogICAgZm9yIG15ICRMaW5rVHlwZSAoIHNvcnQga2V5cyAleyAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gfSApIHsKCiAgICAgICAgIyBleHRyYWN0IGxpbmsgdHlwZSBMaXN0CiAgICAgICAgbXkgJExpbmtUeXBlTGlzdCA9ICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfS0+eyRMaW5rVHlwZX07CgogICAgICAgIGZvciBteSAkRGlyZWN0aW9uICggc29ydCBrZXlzICV7JExpbmtUeXBlTGlzdH0gKSB7CgogICAgICAgICAgICAjIGV4dHJhY3QgZGlyZWN0aW9uIGxpc3QKICAgICAgICAgICAgbXkgJERpcmVjdGlvbkxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn07CgogICAgICAgICAgICBteSBASXRlbUxpc3Q7CiAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXskRGlyZWN0aW9uTGlzdH0gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICAgICAgICAgIG15ICRWZXJzaW9uID0gJERpcmVjdGlvbkxpc3QtPnskQ29uZmlnSXRlbUlEfTsKCiAgICAgICAgICAgICAgICAjIGRlZmluZSBpdGVtIGRhdGEKICAgICAgICAgICAgICAgIG15ICVJdGVtID0gKAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NJOicgLiAkVmVyc2lvbi0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAiQ29uZmlnSXRlbSMgJFZlcnNpb24tPntOdW1iZXJ9ICgkVmVyc2lvbi0+e0NsYXNzfSk6ICRWZXJzaW9uLT57TmFtZX0iLAogICAgICAgICAgICAgICAgICAgIExpbmsgICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JwogICAgICAgICAgICAgICAgICAgICAgICAuICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHB1c2ggQEl0ZW1MaXN0LCBcJUl0ZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIGl0ZW0gbGlzdCB0byBsaW5rIG91dHB1dCBkYXRhCiAgICAgICAgICAgICRMaW5rT3V0cHV0RGF0YXsgJExpbmtUeXBlIC4gJzo6JyAuICREaXJlY3Rpb24gfS0+e0lUU01Db25maWdJdGVtfSA9IFxASXRlbUxpc3Q7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAlTGlua091dHB1dERhdGE7Cn0KCj1oZWFkMiBDb250ZW50U3RyaW5nQ3JlYXRlKCkKCnJldHVybiBhIG91dHB1dCBzdHJpbmcKCiAgICBteSAkU3RyaW5nID0gJExheW91dE9iamVjdC0+Q29udGVudFN0cmluZ0NyZWF0ZSgKICAgICAgICBDb250ZW50RGF0YSA9PiAkSGFzaFJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgQ29udGVudFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17Q29udGVudERhdGF9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb250ZW50RGF0YSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZXh0cmFjdCBjb250ZW50CiAgICBteSAkQ29udGVudCA9ICRQYXJhbXtDb250ZW50RGF0YX07CgogICAgaWYgKCAkQ29udGVudC0+e1R5cGV9IG5lICdDdXJJbmNpU2lnbmFsJyAmJiAkQ29udGVudC0+e1R5cGV9IG5lICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFN0cmluZzsKICAgIGlmICggJENvbnRlbnQtPntUeXBlfSBlcSAnQ3VySW5jaVNpZ25hbCcgKSB7CgogICAgICAgICMgc2V0IGluY2lkZW50IHNpZ25hbAogICAgICAgIG15ICVJbmNpU2lnbmFscyA9ICgKICAgICAgICAgICAgaW5jaWRlbnQgICAgPT4gJ3JlZGxlZCcsCiAgICAgICAgICAgIG9wZXJhdGlvbmFsID0+ICdncmVlbmxlZCcsCiAgICAgICAgICAgIHVua25vd24gICAgID0+ICdncmF5bGVkJywKICAgICAgICAgICAgd2FybmluZyAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBpbnZlc3RpZ2F0ZSBjdXJyZW50IGluY2lkZW50IHNpZ25hbAogICAgICAgICRDb250ZW50LT57Q3VySW5jaVN0YXRlVHlwZX0gfHw9ICd1bmtub3duJzsKICAgICAgICBteSAkQ3VySW5jaVNpZ25hbCA9ICRJbmNpU2lnbmFsc3sgJENvbnRlbnQtPntDdXJJbmNpU3RhdGVUeXBlfSB9OwogICAgICAgICRDdXJJbmNpU2lnbmFsIHx8PSAkSW5jaVNpZ25hbHN7dW5rbm93bn07CgogICAgICAgICRTdHJpbmcgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGUgPT4gJzxkaXYgY2xhc3M9IkZsYWcgU21hbGwiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+ICcKICAgICAgICAgICAgICAgIC4gJzxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckluY2lTaWduYWwgfCBodG1sICVdIj48L3NwYW4+IDwvZGl2PicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAkQ3VySW5jaVNpZ25hbCwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgPT4gJENvbnRlbnQtPntDb250ZW50fSB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkQ29udGVudC0+e1R5cGV9IGVxICdDdXJEZXBsU2lnbmFsJyApIHsKCiAgICAgICAgIyBjb252ZXJ0IGRlcGxveW1lbnQgc3RhdGUgdG8gYSB3ZWIgc2FmZSBDU1MgY2xhc3MKICAgICAgICBteSAkRGVwbFN0YXRlID0gJENvbnRlbnQtPntDb250ZW50fSB8fCAnJzsKICAgICAgICAkRGVwbFN0YXRlID1+IHN7IFteYS16QS1aMC05XSB9e199bXN4ZzsKCiAgICAgICAgIyBnZXQgdGhlIGNvbG9yIG9mIHRoZSBkZXBseW1lbnQgc3RhdGUgaWYgZGVmaW5lZAogICAgICAgIG15ICREZXBsU3RhdGVDb2xvciA9ICggJFNlbGYtPntEZXBsU3RhdGVDb2xvcnN9LT57JERlcGxTdGF0ZX0gfHwgJycgKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgbXkgJFRlbXBsYXRlID0gJzxkaXYgY2xhc3M9IkZsYWcgU21hbGwiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI+ICc7CgogICAgICAgICMgY2hlY2sgaWYgY29sb3IgaXMgZGVmaW5lZCBhbmQgc2V0IHRoZSBzdHlsZSBjbGFzcwogICAgICAgIGlmICgkRGVwbFN0YXRlQ29sb3IpIHsKICAgICAgICAgICAgJFRlbXBsYXRlIC49IDw8IkVORCI7CjxzdHlsZT4KICAgIC5GbGFnIHNwYW4uJERlcGxTdGF0ZSB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIyREZXBsU3RhdGVDb2xvcjsKICAgIH0KPC9zdHlsZT4KRU5ECiAgICAgICAgfQoKICAgICAgICAkVGVtcGxhdGUgLj0gIjxzcGFuIGNsYXNzPVwiRGVwbFN0YXRlICREZXBsU3RhdGVcIj48L3NwYW4+IDwvZGl2PiI7CgogICAgICAgICRTdHJpbmcgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGUgPT4gJFRlbXBsYXRlLAogICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgPT4gJENvbnRlbnQtPntDb250ZW50fSB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgU2VsZWN0YWJsZU9iamVjdExpc3QoKQoKcmV0dXJuIGFuIGFycmF5IGhhc2ggd2l0aCBDPHNlbGVjdGFibGU+IG9iamVjdHMKClJldHVybgoKICAgIEBTZWxlY3RhYmxlT2JqZWN0TGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICctJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgICAgICBEaXNhYmxlZCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW06OjI1JywKICAgICAgICAgICAgVmFsdWUgPT4gJ0NvbmZpZ0l0ZW06OkNvbXB1dGVyJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjoyNicsCiAgICAgICAgICAgIFZhbHVlID0+ICdDb25maWdJdGVtOjpTb2Z0d2FyZScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbTo6MjcnLAogICAgICAgICAgICBWYWx1ZSA9PiAnQ29uZmlnSXRlbTo6TmV0d29yaycsCiAgICAgICAgfSwKICAgICk7CgogICAgQFNlbGVjdGFibGVPYmplY3RMaXN0ID0gJExpbmtPYmplY3QtPlNlbGVjdGFibGVPYmplY3RMaXN0KAogICAgICAgIFNlbGVjdGVkID0+ICRJZGVudGlmaWVyLCAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFNlbGVjdGFibGVPYmplY3RMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWZpbmUgaGVhZGxpbmUKICAgIG15IEBPYmplY3RTZWxlY3RMaXN0OwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgcmV0dXJuIGlmICEkQ2xhc3NMaXN0OwogICAgcmV0dXJuIGlmIHJlZiAkQ2xhc3NMaXN0IG5lICdIQVNIJzsKCiAgICAjIGdldCB0aGUgY29uZmlnIHdpdGggdGhlIGRlZmF1bHQgc3Vib2JqZWN0cwogICAgbXkgJERlZmF1bHRTdWJvYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0xpbmtPYmplY3Q6OkRlZmF1bHRTdWJPYmplY3QnKSB8fCB7fTsKCiAgICBteSAkSGFzU2VsZWN0ZWRJdGVtOwoKICAgIENMQVNTSUQ6CiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgbGMgJENsYXNzTGlzdC0+eyRhfSBjbXAgbGMgJENsYXNzTGlzdC0+eyRifSB9IGtleXMgJXskQ2xhc3NMaXN0fSApIHsKCiAgICAgICAgIyBzaG93IGNsYXNzIG9ubHkgaWYgdXNlciBoYXMgYWNjZXNzIHJpZ2h0cwogICAgICAgIG15ICRIYXNBY2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgICA9PiAncm8nLAogICAgICAgICk7CgogICAgICAgIG5leHQgQ0xBU1NJRCBpZiAhJEhhc0FjY2VzczsKCiAgICAgICAgbXkgJENsYXNzICAgICAgPSAkQ2xhc3NMaXN0LT57JENsYXNzSUR9IHx8ICcnOwogICAgICAgIG15ICRJZGVudGlmaWVyID0gJFNlbGYtPntPYmplY3REYXRhfS0+e09iamVjdH0gLiAnOjonIC4gJENsYXNzSUQ7CgogICAgICAgICMgc2V0IHNlbGVjdGVkIGZsYWcKICAgICAgICBteSAkU2VsZWN0ZWQ7CiAgICAgICAgaWYgKCAkUGFyYW17U2VsZWN0ZWR9ICkgewoKICAgICAgICAgICAgaWYgKCAkUGFyYW17U2VsZWN0ZWR9IGVxICRJZGVudGlmaWVyICkgewogICAgICAgICAgICAgICAgJFNlbGVjdGVkID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICAkUGFyYW17U2VsZWN0ZWR9IGVxICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3R9CiAgICAgICAgICAgICAgICAmJiAkRGVmYXVsdFN1Ym9iamVjdC0+eyAkU2VsZi0+e09iamVjdERhdGF9LT57T2JqZWN0fSB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgZGVmYXVsdCBjbGFzcyBuYW1lCiAgICAgICAgICAgICAgICBteSAkRGVmYXVsdENsYXNzID0gJERlZmF1bHRTdWJvYmplY3QtPnsgJFNlbGYtPntPYmplY3REYXRhfS0+e09iamVjdH0gfSB8fCAnJzsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGNsYXNzCiAgICAgICAgICAgICAgICBpZiAoICREZWZhdWx0Q2xhc3MgZXEgJENsYXNzICkgewogICAgICAgICAgICAgICAgICAgICRTZWxlY3RlZCA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkU2VsZWN0ZWQpIHsKICAgICAgICAgICAgJEhhc1NlbGVjdGVkSXRlbSA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSByb3cKICAgICAgICBteSAlUm93ID0gKAogICAgICAgICAgICBLZXkgICAgICA9PiAkSWRlbnRpZmllciwKICAgICAgICAgICAgVmFsdWUgICAgPT4gJFNlbGYtPntPYmplY3REYXRhfS0+e1JlYWxuYW1lfSAuICc6OicgLiAkQ2xhc3MsCiAgICAgICAgICAgIFNlbGVjdGVkID0+ICRTZWxlY3RlZCwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBPYmplY3RTZWxlY3RMaXN0LCBcJVJvdzsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtTZWxlY3RlZH0gJiYgISRIYXNTZWxlY3RlZEl0ZW0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAiTm8gdmFsaWQgc2VsZWN0aW9uIGZvciBsaW5rIG9iamVjdDogJyRQYXJhbXtTZWxlY3RlZH0nISBUaGUgY29uZmlndXJlZCBkZWZhdWx0IGNsYXNzIChMaW5rT2JqZWN0OjpEZWZhdWx0U3ViT2JqZWN0IyMjSVRTTUNvbmZpZ0l0ZW0pIG1heSBub3QgZXhpc3QuIiwKICAgICAgICApOwogICAgfQoKICAgICMgb25seSBhZGQgaGVhZGxpbmUgaWYgdGhlcmUgYXJlIGNvbmZpZ2l0ZW0gY2xhc3NlcwogICAgIyB3aGVyZSB0aGUgdXNlciBoYXMgdGhlIHBlcm1pc3Npb24gdG8gdXNlIHRoZW0KICAgIGlmIChAT2JqZWN0U2VsZWN0TGlzdCkgewoKICAgICAgICAjIGFkZCBoZWFkbGluZSBhcyBmaXJzdCBhcnJheSBlbGVtZW50CiAgICAgICAgdW5zaGlmdCBAT2JqZWN0U2VsZWN0TGlzdCwgewogICAgICAgICAgICBLZXkgICAgICA9PiAnLScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntSZWFsbmFtZX0sCiAgICAgICAgICAgIERpc2FibGVkID0+IDEsCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gQE9iamVjdFNlbGVjdExpc3Q7Cn0KCj1oZWFkMiBTZWFyY2hPcHRpb25MaXN0KCkKCnJldHVybiBhbiBhcnJheSBoYXNoIHdpdGggc2VhcmNoIG9wdGlvbnMKClJldHVybgoKICAgIEBTZWFyY2hPcHRpb25MaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ0NvbmZpZ0l0ZW0jJywKICAgICAgICAgICAgSW5wdXRTdHJnID0+ICRGb3JtU3RyaW5nLAogICAgICAgICAgICBGb3JtRGF0YSAgPT4gJzEyMzQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICBOYW1lICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICBJbnB1dFN0cmcgPT4gJEZvcm1TdHJpbmcsCiAgICAgICAgICAgIEZvcm1EYXRhICA9PiAnQmxhQmxhJywKICAgICAgICB9LAogICAgKTsKCiAgICBAU2VhcmNoT3B0aW9uTGlzdCA9ICRMaW5rT2JqZWN0LT5TZWFyY2hPcHRpb25MaXN0KAogICAgICAgIFN1Yk9iamVjdCA9PiAnMjUnLCAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaE9wdGlvbkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNlYXJjaCBvcHRpb24gbGlzdAogICAgbXkgQFNlYXJjaE9wdGlvbkxpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdOdW1iZXInLAogICAgICAgICAgICBOYW1lID0+ICdDb25maWdJdGVtIycsCiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdOYW1lJywKICAgICAgICAgICAgTmFtZSA9PiAnTmFtZScsCiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHQnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgID0+ICdEZXBsU3RhdGVJRHMnLAogICAgICAgICAgICBOYW1lID0+ICdEZXBsb3ltZW50IFN0YXRlJywKICAgICAgICAgICAgVHlwZSA9PiAnTGlzdCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgIE5hbWUgPT4gJ0luY2lkZW50IFN0YXRlJywKICAgICAgICAgICAgVHlwZSA9PiAnTGlzdCcsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBhZGQgb2JqZWN0IGRlcGVuZGVuY2UgYXR0cmlidXRlcwogICAgI2lmICggJFBhcmFte1N1Yk9iamVjdH0gKSB7CiAgICAjCiAgICAjICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICMgICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICMgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAjICAgICk7CiAgICAjCiAgICAjICAgIGlmICggJENsYXNzTGlzdCAmJiAkQ2xhc3NMaXN0IGVxICdIQVNIJyApIHsKICAgICMKICAgICMgICAgICAgICMgYWRkIGhlcmUgdGhlIHNlYXJjaCBhdHRyaWJ1dGVzIG9mIHRoZSBzdWJvYmplY3QhCiAgICAjICAgIH0KICAgICN9CgogICAgIyBhZGQgZm9ybWtleQogICAgZm9yIG15ICRSb3cgKEBTZWFyY2hPcHRpb25MaXN0KSB7CiAgICAgICAgJFJvdy0+e0Zvcm1LZXl9ID0gJ1NFQVJDSDo6JyAuICRSb3ctPntLZXl9OwogICAgfQoKICAgICMgYWRkIGZvcm0gZGF0YSBhbmQgaW5wdXQgc3RyaW5nCiAgICBST1c6CiAgICBmb3IgbXkgJFJvdyAoQFNlYXJjaE9wdGlvbkxpc3QpIHsKCiAgICAgICAgIyBwcmVwYXJlIHRleHQgaW5wdXQgZmllbGRzCiAgICAgICAgaWYgKCAkUm93LT57VHlwZX0gZXEgJ1RleHQnICkgewoKICAgICAgICAgICAgIyBnZXQgZm9ybSBkYXRhCiAgICAgICAgICAgICRSb3ctPntGb3JtRGF0YX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAkUm93LT57Rm9ybUtleX0gKTsKCiAgICAgICAgICAgICMgcGFyc2UgdGhlIGlucHV0IHRleHQgYmxvY2sKICAgICAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0lucHV0VGV4dCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAkUm93LT57Rm9ybUtleX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFJvdy0+e0Zvcm1EYXRhfSB8fCAnJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCB0aGUgaW5wdXQgc3RyaW5nCiAgICAgICAgICAgICRSb3ctPntJbnB1dFN0cmd9ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0xpbmtPYmplY3QnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBST1c7CiAgICAgICAgfQoKICAgICAgICAjIHByZXBhcmUgbGlzdCBib3hlcwogICAgICAgIGlmICggJFJvdy0+e1R5cGV9IGVxICdMaXN0JyApIHsKCiAgICAgICAgICAgICMgZ2V0IGZvcm0gZGF0YQogICAgICAgICAgICBteSBARm9ybURhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldEFycmF5KCBQYXJhbSA9PiAkUm93LT57Rm9ybUtleX0gKTsKICAgICAgICAgICAgJFJvdy0+e0Zvcm1EYXRhfSA9IFxARm9ybURhdGE7CgogICAgICAgICAgICAjIHByZXBhcmUgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgIG15ICVMaXN0RGF0YTsKICAgICAgICAgICAgaWYgKCAkUm93LT57S2V5fSBlcSAnRGVwbFN0YXRlSURzJyApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgICAgICAgICAgICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBsaXN0CiAgICAgICAgICAgICAgICBpZiAoICREZXBsU3RhdGVMaXN0ICYmIHJlZiAkRGVwbFN0YXRlTGlzdCBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJUxpc3REYXRhID0gJXskRGVwbFN0YXRlTGlzdH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcHJlcGFyZSBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgIGVsc2lmICggJFJvdy0+e0tleX0gZXEgJ0luY2lTdGF0ZUlEcycgKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgICAgICAgICAgICAgbXkgJEluY2lTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBsaXN0CiAgICAgICAgICAgICAgICBpZiAoICRJbmNpU3RhdGVMaXN0ICYmIHJlZiAkSW5jaVN0YXRlTGlzdCBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJUxpc3REYXRhID0gJXskSW5jaVN0YXRlTGlzdH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIHRoZSBpbnB1dCBzdHJpbmcKICAgICAgICAgICAgJFJvdy0+e0lucHV0U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiBcJUxpc3REYXRhLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkUm93LT57Rm9ybUtleX0sCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEID0+ICRSb3ctPntGb3JtRGF0YX0sCiAgICAgICAgICAgICAgICBTaXplICAgICAgID0+IDMsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBST1c7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBAU2VhcmNoT3B0aW9uTGlzdDsKfQoKMTsK</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AdminGenericInterfaceInvokerConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QgWyUgRGF0YS5BY3Rpb24gfCBodG1sICVdIj4KICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJHZW5lcmljSW50ZXJmYWNlIFdlYiBTZXJ2aWNlIE1hbmFnZW1lbnQiKSB8IGh0bWwgJV08L2gxPgoKICAgIFslIFVTRSBCcmVhZGNydW1iTGluayA9IFN0cmluZygiQWRtaW5HZW5lcmljSW50ZXJmYWNlV2Vic2VydmljZSIpICVdCgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCAnV2ViIFNlcnZpY2UgTWFuYWdlbWVudCcgKSwKICAgICAgICAgICAgICAgIExpbmsgPT4gQnJlYWRjcnVtYkxpbmssCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gRGF0YS5XZWJzZXJ2aWNlTmFtZSwKICAgICAgICAgICAgICAgIExpbmsgPT4gQnJlYWRjcnVtYkxpbmsuY29weS5hcHBlbmQoICI7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9IiwgRGF0YS5XZWJzZXJ2aWNlSUQgKSwKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIFNXSVRDSCBEYXRhLk1vZGUgJV0KICAgICAgICBbJSBDQVNFICdBZGQnICVdCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IFRyYW5zbGF0ZSgiQWRkIEludm9rZXIiKSx9KSAlXQogICAgICAgIFslIENBU0UgJ0NoYW5nZScgJV0KICAgICAgICAgICAgWyUgVVNFIEVkaXRUaXRsZSA9IFN0cmluZyhUcmFuc2xhdGUoIkVkaXQgSW52b2tlciIpKSAlXQogICAgICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsgTmFtZSA9PiBFZGl0VGl0bGUuYXBwZW5kKCAnOiAnLCBEYXRhLkludm9rZXIgKSwgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VXZWJzZXJ2aWNlO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPVslIERhdGEuV2Vic2VydmljZUlEIHwgdXJpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1sZWZ0Ij48L2k+IFslIFRyYW5zbGF0ZSgiR28gYmFjayB0byB3ZWIgc2VydmljZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLk1vZGUgPT0gJ0NoYW5nZScgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIHR5cGU9ImJ1dHRvbiIgaWQ9IkRlbGV0ZUJ1dHRvbiI+PHNwYW4+IDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+IFslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGlkZGVuIiBpZD0iRGVsZXRlRGlhbG9nQ29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iV2FybmluZ0RpYWxvZyAiPiZuYnNwOzwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD0iRGVsZXRlRGlhbG9nIiBjbGFzcz0iQ2VudGVyIFdhcm5pbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBpbnZva2VyPyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iQ2VudGVyIFdhcm5pbmciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkFsbCBjb25maWd1cmF0aW9uIGRhdGEgd2lsbCBiZSBsb3N0LiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkludm9rZXIgRGV0YWlscyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgY2xhc3M9IlZhbGlkYXRlIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIERhdGEuQWN0aW9uIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJbJSBEYXRhLk1vZGUgfCBodG1sICVdQWN0aW9uIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IldlYnNlcnZpY2VJRCIgdmFsdWU9IlslIERhdGEuV2Vic2VydmljZUlEIHwgaHRtbCAlXSIgaWQ9IldlYnNlcnZpY2VJRCIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJJbnZva2VyVHlwZSIgdmFsdWU9IlslIERhdGEuSW52b2tlclR5cGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuTW9kZSA9PSAnQ2hhbmdlJyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb250aW51ZUFmdGVyU2F2ZSIgaWQ9IkNvbnRpbnVlQWZ0ZXJTYXZlIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiR2VuZXJhbCBpbnZva2VyIGRhdGEiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGVnZW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJJbnZva2VyIiBjbGFzcz0iTWFuZGF0b3J5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iVzUwcGMgUmVnaXN0ZXJDaGFuZ2UgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5JbnZva2VyU2VydmVyRXJyb3IgfCBodG1sICVdIiBtYXhsZW5ndGg9IjIwMCIgaWQ9Ikludm9rZXIiIG5hbWU9Ikludm9rZXIiIHZhbHVlPSJbJSBEYXRhLk5ld0ludm9rZXIgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Ik9sZEludm9rZXIiIG5hbWU9Ik9sZEludm9rZXIiIHZhbHVlPSJbJSBEYXRhLkludm9rZXIgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIG5hbWUgaXMgdHlwaWNhbGx5IHVzZWQgdG8gY2FsbCB1cCBhbiBvcGVyYXRpb24gb2YgYSByZW1vdGUgd2ViIHNlcnZpY2UuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJJbnZva2VyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgiUGxlYXNlIHByb3ZpZGUgYSB1bmlxdWUgbmFtZSBmb3IgdGhpcyB3ZWIgc2VydmljZS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iSW52b2tlclNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGUgbmFtZSB5b3UgZW50ZXJlZCBhbHJlYWR5IGV4aXN0cy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRGVzY3JpcHRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXToKICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJXNTBwYyBSZWdpc3RlckNoYW5nZSIgbWF4bGVuZ3RoPSIyMDAiIGlkPSJEZXNjcmlwdGlvbiIgbmFtZT0iRGVzY3JpcHRpb24iIHZhbHVlPSJbJSBEYXRhLkRlc2NyaXB0aW9uIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ikludm9rZXJUeXBlRGlzcGxheSI+WyUgVHJhbnNsYXRlKCJJbnZva2VyIGJhY2tlbmQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHJlYWRvbmx5IGNsYXNzPSJXNTBwYyIgaWQ9Ikludm9rZXJUeXBlRGlzcGxheSIgdmFsdWU9IlslIERhdGEuSW52b2tlclR5cGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhpcyBPVE9CTyBpbnZva2VyIGJhY2tlbmQgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIHRvIHByZXBhcmUgdGhlIGRhdGEgdG8gYmUgc2VudCB0byB0aGUgcmVtb3RlIHN5c3RlbSwgYW5kIHRvIHByb2Nlc3MgaXRzIHJlc3BvbnNlIGRhdGEuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXR0aW5nR2VuZXJhbCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nTGFiZWwpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNldHRpbmdIVE1MICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU2V0dGluZ0V4cGxhbmF0aW9uKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXJ2ZXJFcnJvcikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNldHRpbmdHZW5lcmFsIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJlcXVlc3QiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICA8bGVnZW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVxdWVzdCBkYXRhIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KClslIFJlbmRlckJsb2NrU3RhcnQoIlNldHRpbmdSZXF1ZXN0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5TZXR0aW5nTmFtZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLlNldHRpbmdMYWJlbCkgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2V0dGluZ0hUTUwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nRXhwbGFuYXRpb24pIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5TZXR0aW5nTmFtZSB8IGh0bWwgJV1FcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLlNlcnZlckVycm9yKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2V0dGluZ1JlcXVlc3QiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVxdWVzdCIpICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICA8bGVnZW5kPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik1hcHBpbmdPdXRib3VuZCI+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIGZvciBvdXRnb2luZyByZXF1ZXN0IGRhdGEiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5NYXBwaW5nT3V0Ym91bmRTdHJnICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk1hcHBpbmdPdXRib3VuZENvbmZpZ3VyZUJ1dHRvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iTWFwcGluZ091dGJvdW5kQ29uZmlnRGlhbG9nIiB2YWx1ZT0iWyUgRGF0YS5NYXBwaW5nT3V0Ym91bmRDb25maWdEaWFsb2cgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJIaWRlT25DaGFuZ2UgQ2FsbEZvckFjdGlvbiBJbkxpbmUiIGlkPSJNYXBwaW5nT3V0Ym91bmRDb25maWd1cmVCdXR0b24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkNvbmZpZ3VyZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJDb25maWd1cmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+ClslIFJlbmRlckJsb2NrRW5kKCJNYXBwaW5nT3V0Ym91bmRDb25maWd1cmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIGRhdGEgZnJvbSB0aGUgaW52b2tlciBvZiBPVE9CTyB3aWxsIGJlIHByb2Nlc3NlZCBieSB0aGlzIG1hcHBpbmcsIHRvIHRyYW5zZm9ybSBpdCB0byB0aGUga2luZCBvZiBkYXRhIHRoZSByZW1vdGUgc3lzdGVtIGV4cGVjdHMuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJNYXBwaW5nSW5ib3VuZCI+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIGZvciBpbmNvbWluZyByZXNwb25zZSBkYXRhIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTWFwcGluZ0luYm91bmRTdHJnICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk1hcHBpbmdJbmJvdW5kQ29uZmlndXJlQnV0dG9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJNYXBwaW5nSW5ib3VuZENvbmZpZ0RpYWxvZyIgdmFsdWU9IlslIERhdGEuTWFwcGluZ0luYm91bmRDb25maWdEaWFsb2cgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJIaWRlT25DaGFuZ2UgQ2FsbEZvckFjdGlvbiBJbkxpbmUiIGlkPSJNYXBwaW5nSW5ib3VuZENvbmZpZ3VyZUJ1dHRvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQ29uZmlndXJlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkNvbmZpZ3VyZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk1hcHBpbmdJbmJvdW5kQ29uZmlndXJlQnV0dG9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSByZXNwb25zZSBkYXRhIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoaXMgbWFwcGluZywgdG8gdHJhbnNmb3JtIGl0IHRvIHRoZSBraW5kIG9mIGRhdGEgdGhlIGludm9rZXIgb2YgT1RPQk8gZXhwZWN0cy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlJlc3BvbnNlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2V0dGluZ3MgZm9yIGluY29taW5nIHJlc3BvbnNlIGRhdGEiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGVnZW5kPgogICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2V0dGluZ1Jlc3BvbnNlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5TZXR0aW5nTmFtZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLlNldHRpbmdMYWJlbCkgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2V0dGluZ0hUTUwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nRXhwbGFuYXRpb24pIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5TZXR0aW5nTmFtZSB8IGh0bWwgJV1FcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLlNlcnZlckVycm9yKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2V0dGluZ1Jlc29uc2UiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVzcG9uc2UiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5Nb2RlID09ICdDaGFuZ2UnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkV2ZW50IGRhdGEiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRXZlbnRzVGFibGUiPlslIFRyYW5zbGF0ZSgiRXZlbnQgVHJpZ2dlcnMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFc1MHBjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSBXNTBwYyIgaWQ9IkV2ZW50c1RhYmxlIiBzdW1tYXJ5PSJMaXN0IG9mIGFsbCBjb25maWd1cmVkIGV2ZW50cyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNlbnRlciI+WyUgVHJhbnNsYXRlKCJFdmVudCIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDZW50ZXIiPlslIFRyYW5zbGF0ZSgiQXN5bmNocm9ub3VzIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNlbnRlciI+WyUgVHJhbnNsYXRlKCJDb25kaXRpb24iKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2VudGVyIj5bJSBUcmFuc2xhdGUoIkVkaXQiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2VudGVyIj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkV2ZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkFzQmxvY2siPlslIERhdGEuRXZlbnQgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+WyUgVHJhbnNsYXRlKERhdGEuQXN5bmNocm9ub3VzKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj5bJSBUcmFuc2xhdGUoRGF0YS5Db25kaXRpb24pIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iUGVuY2lsIEVkaXRFdmVudCBIaWRlT25DaGFuZ2UiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VJbnZva2VyRXZlbnQ7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9WyUgRGF0YS5XZWJzZXJ2aWNlSUQgfCBodG1sICVdO0ludm9rZXI9WyUgRGF0YS5JbnZva2VyIHwgaHRtbCAlXTtFdmVudD1bJSBEYXRhLkV2ZW50IHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRWRpdCB0aGlzIGV2ZW50IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRWRpdCB0aGlzIGV2ZW50IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZWRpdCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0iRGVsZXRlRXZlbnRbJSBEYXRhLkV2ZW50IHwgaHRtbCAlXSIgY2xhc3M9IlRyYXNoQ2FuIERlbGV0ZUV2ZW50IEhpZGVPbkNoYW5nZSIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIHRoaXMgZXZlbnQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZWxldGUgdGhpcyBldmVudCIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiRXZlbnRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoaXMgaW52b2tlciB3aWxsIGJlIHRyaWdnZXJlZCBieSB0aGUgY29uZmlndXJlZCBldmVudHMuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGlkZGVuIiBpZD0iRGVsZXRlRXZlbnREaWFsb2dDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQgPSJEZWxldGVFdmVudERpYWxvZyIgY2xhc3M9IklubmVyQ29udGVudCBHZW5lcmljSW50ZXJmYWNlRGlhbG9nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ildhcm5pbmdEaWFsb2cgIj4mbmJzcDs8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJDZW50ZXIgV2FybmluZyI+WyUgVHJhbnNsYXRlKCJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZXZlbnQgdHJpZ2dlcj8iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJFdmVudFR5cGUiPlslIFRyYW5zbGF0ZSgiQWRkIEV2ZW50IFRyaWdnZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkV2ZW50VHlwZVN0cmcgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRXZlbnRBZGQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRXZlbnRTdHJnICVdClslIFJlbmRlckJsb2NrRW5kKCJFdmVudEFkZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iQXN5bmNocm9ub3VzIiBjaGVja2VkIGNsYXNzPSJHZW5lcmljSW50ZXJmYWNlU3BhY2luZyIgbmFtZT0iQXN5bmNocm9ub3VzIj48bGFiZWwgZm9yPSJBc3luY2hyb25vdXMiPlslIFRyYW5zbGF0ZSgiQXN5bmNocm9ub3VzIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9IkFkZEV2ZW50IiBjbGFzcz0iQWRkIEdlbmVyaWNJbnRlcmZhY2VTcGFjaW5nIEhpZGVPbkNoYW5nZSIgbmFtZT0iQWRkRXZlbnQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkFkZCBFdmVudCIpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJBZGQgRXZlbnQiKSB8IGh0bWwgJV08L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVG8gYWRkIGEgbmV3IGV2ZW50IHNlbGVjdCB0aGUgZXZlbnQgb2JqZWN0IGFuZCBldmVudCBuYW1lIGFuZCBjbGljayBvbiB0aGUgXCIrXCIgYnV0dG9uIikgfCBodG1sICVdLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQXN5bmNocm9ub3VzIGV2ZW50IHRyaWdnZXJzIGFyZSBoYW5kbGVkIGJ5IHRoZSBPVE9CTyBTY2hlZHVsZXIgRGFlbW9uIGluIGJhY2tncm91bmQgKHJlY29tbWVuZGVkKS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJTeW5jaHJvbm91cyBldmVudCB0cmlnZ2VycyB3b3VsZCBiZSBwcm9jZXNzZWQgZGlyZWN0bHkgZHVyaW5nIHRoZSB3ZWIgcmVxdWVzdC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuTW9kZSA9PSAnQ2hhbmdlJyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdEFuZENvbnRpbnVlIiB0eXBlPSJidXR0b24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSBhbmQgZmluaXNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRUxTRSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VXZWJzZXJ2aWNlO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPVslIERhdGEuV2Vic2VydmljZUlEIHwgdXJpICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AdminGenericInterfaceOperationConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QgWyUgRGF0YS5BY3Rpb24gfCBodG1sICVdIj4KICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJHZW5lcmljSW50ZXJmYWNlIFdlYiBTZXJ2aWNlIE1hbmFnZW1lbnQiKSB8IGh0bWwgJV08L2gxPgoKICAgIFslIFVTRSBCcmVhZGNydW1iTGluayA9IFN0cmluZygiQWRtaW5HZW5lcmljSW50ZXJmYWNlV2Vic2VydmljZSIpICVdCgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCAnV2ViIFNlcnZpY2UgTWFuYWdlbWVudCcgKSwKICAgICAgICAgICAgICAgIExpbmsgPT4gQnJlYWRjcnVtYkxpbmssCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gRGF0YS5XZWJzZXJ2aWNlTmFtZSwKICAgICAgICAgICAgICAgIExpbmsgPT4gQnJlYWRjcnVtYkxpbmsuY29weS5hcHBlbmQoICI7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9IiwgRGF0YS5XZWJzZXJ2aWNlSUQgKSwKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIFNXSVRDSCBEYXRhLk1vZGUgJV0KICAgICAgICBbJSBDQVNFICdBZGQnICVdCiAgICAgICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goeyBOYW1lID0+IFRyYW5zbGF0ZSgiQWRkIE9wZXJhdGlvbiIpLH0pICVdCiAgICAgICAgWyUgQ0FTRSAnQ2hhbmdlJyAlXQogICAgICAgICAgICBbJSBVU0UgRWRpdFRpdGxlID0gU3RyaW5nKFRyYW5zbGF0ZSgiRWRpdCBPcGVyYXRpb24iKSkgJV0KICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7IE5hbWUgPT4gRWRpdFRpdGxlLmFwcGVuZCggJzogJywgRGF0YS5PcGVyYXRpb24gKSwgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZG1pbkdlbmVyaWNJbnRlcmZhY2VXZWJzZXJ2aWNlO1N1YmFjdGlvbj1DaGFuZ2U7V2Vic2VydmljZUlEPVslIERhdGEuV2Vic2VydmljZUlEIHwgdXJpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1sZWZ0Ij48L2k+IFslIFRyYW5zbGF0ZSgiR28gYmFjayB0byB3ZWIgc2VydmljZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLk1vZGUgPT0gJ0NoYW5nZScgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIHR5cGU9ImJ1dHRvbiIgaWQ9IkRlbGV0ZUJ1dHRvbiI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4gWyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIaWRkZW4iIGlkPSJEZWxldGVEaWFsb2dDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJXYXJuaW5nRGlhbG9nICI+Jm5ic3A7PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGlkPSJEZWxldGVEaWFsb2ciIGNsYXNzPSJDZW50ZXIgV2FybmluZyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIG9wZXJhdGlvbj8iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkNlbnRlciBXYXJuaW5nIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBbGwgY29uZmlndXJhdGlvbiBkYXRhIHdpbGwgYmUgbG9zdC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIk9wZXJhdGlvbiBEZXRhaWxzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBjbGFzcz0iVmFsaWRhdGUiIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5BY3Rpb24gfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlslIERhdGEuTW9kZSB8IGh0bWwgJV1BY3Rpb24iIC8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iV2Vic2VydmljZUlEIiB2YWx1ZT0iWyUgRGF0YS5XZWJzZXJ2aWNlSUQgfCBodG1sICVdIiBpZD0iV2Vic2VydmljZUlEIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ik9wZXJhdGlvblR5cGUiIHZhbHVlPSJbJSBEYXRhLk9wZXJhdGlvblR5cGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuTW9kZSA9PSAnQ2hhbmdlJyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb250aW51ZUFmdGVyU2F2ZSIgaWQ9IkNvbnRpbnVlQWZ0ZXJTYXZlIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiR2VuZXJhbCBvcGVyYXRpb24gZGF0YSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9sZWdlbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik9wZXJhdGlvbiIgY2xhc3M9Ik1hbmRhdG9yeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOgogICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9Ilc1MHBjIFJlZ2lzdGVyQ2hhbmdlIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuT3BlcmF0aW9uU2VydmVyRXJyb3IgfCBodG1sICVdIiBtYXhsZW5ndGg9IjIwMCIgaWQ9Ik9wZXJhdGlvbiIgbmFtZT0iT3BlcmF0aW9uIiB2YWx1ZT0iWyUgRGF0YS5OZXdPcGVyYXRpb24gfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Ik9sZE9wZXJhdGlvbiIgbmFtZT0iT2xkT3BlcmF0aW9uIiB2YWx1ZT0iWyUgRGF0YS5PcGVyYXRpb24gfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIG5hbWUgaXMgdHlwaWNhbGx5IHVzZWQgdG8gY2FsbCB1cCB0aGlzIHdlYiBzZXJ2aWNlIG9wZXJhdGlvbiBmcm9tIGEgcmVtb3RlIHN5c3RlbS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik9wZXJhdGlvbkVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIlBsZWFzZSBwcm92aWRlIGEgdW5pcXVlIG5hbWUgZm9yIHRoaXMgd2ViIHNlcnZpY2UuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik9wZXJhdGlvblNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGUgbmFtZSB5b3UgZW50ZXJlZCBhbHJlYWR5IGV4aXN0cy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRGVzY3JpcHRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXToKICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJXNTBwYyBSZWdpc3RlckNoYW5nZSIgbWF4bGVuZ3RoPSIyMDAiIGlkPSJEZXNjcmlwdGlvbiIgbmFtZT0iRGVzY3JpcHRpb24iIHZhbHVlPSJbJSBEYXRhLkRlc2NyaXB0aW9uIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik9wZXJhdGlvblR5cGVEaXNwbGF5Ij5bJSBUcmFuc2xhdGUoIk9wZXJhdGlvbiBiYWNrZW5kIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiByZWFkb25seSBjbGFzcz0iVzUwcGMiIGlkPSJPcGVyYXRpb25UeXBlRGlzcGxheSIgdmFsdWU9IlslIERhdGEuT3BlcmF0aW9uVHlwZSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGlzIE9UT0JPIG9wZXJhdGlvbiBiYWNrZW5kIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBpbnRlcm5hbGx5IHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QsIGdlbmVyYXRpbmcgZGF0YSBmb3IgdGhlIHJlc3BvbnNlLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2V0dGluZ0dlbmVyYWwiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJbJSBEYXRhLlNldHRpbmdOYW1lIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuU2V0dGluZ0xhYmVsKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZXR0aW5nSFRNTCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLlNldHRpbmdFeHBsYW5hdGlvbikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJbJSBEYXRhLlNldHRpbmdOYW1lIHwgaHRtbCAlXUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU2VydmVyRXJyb3IpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZXR0aW5nR2VuZXJhbCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZXF1ZXN0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9sZWdlbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXR0aW5nUmVxdWVzdCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nTGFiZWwpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNldHRpbmdIVE1MICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU2V0dGluZ0V4cGxhbmF0aW9uKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXJ2ZXJFcnJvcikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNldHRpbmdSZXF1ZXN0IikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlJlcXVlc3QiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiTWFwcGluZyIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9sZWdlbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJNYXBwaW5nSW5ib3VuZCI+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIGZvciBpbmNvbWluZyByZXF1ZXN0IGRhdGEiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5NYXBwaW5nSW5ib3VuZFN0cmcgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiTWFwcGluZ0luYm91bmRDb25maWd1cmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Ik1hcHBpbmdJbmJvdW5kQ29uZmlnRGlhbG9nIiB2YWx1ZT0iWyUgRGF0YS5NYXBwaW5nSW5ib3VuZENvbmZpZ0RpYWxvZyB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IkhpZGVPbkNoYW5nZSBDYWxsRm9yQWN0aW9uIElubGluZSIgaWQ9Ik1hcHBpbmdJbmJvdW5kQ29uZmlndXJlQnV0dG9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJDb25maWd1cmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ29uZmlndXJlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgpbJSBSZW5kZXJCbG9ja0VuZCgiTWFwcGluZ0luYm91bmRDb25maWd1cmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlIHJlcXVlc3QgZGF0YSB3aWxsIGJlIHByb2Nlc3NlZCBieSB0aGlzIG1hcHBpbmcsIHRvIHRyYW5zZm9ybSBpdCB0byB0aGUga2luZCBvZiBkYXRhIE9UT0JPIGV4cGVjdHMuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZXNwb25zZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsZWdlbmQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlNldHRpbmdzIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xlZ2VuZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KClslIFJlbmRlckJsb2NrU3RhcnQoIlNldHRpbmdSZXNwb25zZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5TZXR0aW5nTGFiZWwpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNldHRpbmdIVE1MICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU2V0dGluZ0V4cGxhbmF0aW9uKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIERhdGEuU2V0dGluZ05hbWUgfCBodG1sICVdRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TZXJ2ZXJFcnJvcikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNldHRpbmdSZXNvbnNlIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlJlc3BvbnNlIikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik1hcHBpbmdPdXRib3VuZCI+WyUgVHJhbnNsYXRlKCJNYXBwaW5nIGZvciBvdXRnb2luZyByZXNwb25zZSBkYXRhIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTWFwcGluZ091dGJvdW5kU3RyZyAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNYXBwaW5nT3V0Ym91bmRDb25maWd1cmVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9Ik1hcHBpbmdPdXRib3VuZENvbmZpZ0RpYWxvZyIgdmFsdWU9IlslIERhdGEuTWFwcGluZ091dGJvdW5kQ29uZmlnRGlhbG9nIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iSGlkZU9uQ2hhbmdlIENhbGxGb3JBY3Rpb24gSW5saW5lIiBpZD0iTWFwcGluZ091dGJvdW5kQ29uZmlndXJlQnV0dG9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJDb25maWd1cmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ29uZmlndXJlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgpbJSBSZW5kZXJCbG9ja0VuZCgiTWFwcGluZ091dGJvdW5kQ29uZmlndXJlQnV0dG9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSByZXNwb25zZSBkYXRhIHdpbGwgYmUgcHJvY2Vzc2VkIGJ5IHRoaXMgbWFwcGluZywgdG8gdHJhbnNmb3JtIGl0IHRvIHRoZSBraW5kIG9mIGRhdGEgdGhlIHJlbW90ZSBzeXN0ZW0gZXhwZWN0cy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5Nb2RlID09ICdDaGFuZ2UnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0QW5kQ29udGludWUiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFByaW1hcnkiIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIGFuZCBmaW5pc2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTFNFICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluR2VuZXJpY0ludGVyZmFjZVdlYnNlcnZpY2U7U3ViYWN0aW9uPUNoYW5nZTtXZWJzZXJ2aWNlSUQ9WyUgRGF0YS5XZWJzZXJ2aWNlSUQgfCB1cmkgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AdminITSMConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlldyIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QiPgogICAgPGgxPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCIpIHwgaHRtbCAlXTwvaDE+CgogICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCdDb25maWcgSXRlbSBNYW5hZ2VtZW50JyksCiAgICAgICAgICAgICAgICBMaW5rID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIElGIChEYXRhLkNsYXNzU2VsZWN0ZWQpICVdCiAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7CiAgICAgICAgICAgIE5hbWUgPT4gRGF0YS5DbGFzc1NlbGVjdGVkLk5hbWUsCiAgICAgICAgICAgIExpbmsgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW07U3ViYWN0aW9uPUNsYXNzRGVmaW5pdGlvbkxpc3Q7Q2xhc3NJRD0nIF8gRGF0YS5DbGFzc1NlbGVjdGVkLklECiAgICAgICAgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElGIChEYXRhLlJvbGVTZWxlY3RlZCkgJV0KICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsKICAgICAgICAgICAgTmFtZSA9PiBEYXRhLlJvbGVTZWxlY3RlZC5OYW1lLAogICAgICAgICAgICBMaW5rID0+ICdBZG1pbklUU01Db25maWdJdGVtO1N1YmFjdGlvbj1Sb2xlRGVmaW5pdGlvbkxpc3Q7Um9sZUlEPScgXyBEYXRhLlJvbGVTZWxlY3RlZC5JRAogICAgICAgIH0pICVdCiAgICBbJSBFTkQgJV0KCiAgICBbJSBJRiAoRGF0YS5DbGFzc1ZlcnNpb25TZWxlY3RlZCkgJV0KICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsKICAgICAgICAgICAgTmFtZSA9PiAnVmVyc2lvbiAnIF8gRGF0YS5DbGFzc1ZlcnNpb25TZWxlY3RlZC5WZXJzaW9uLAogICAgICAgICAgICBMaW5rID0+ICdBZG1pbklUU01Db25maWdJdGVtO1N1YmFjdGlvbj1DbGFzc0RlZmluaXRpb25WaWV3O0RlZmluaXRpb25JRD0nIF8gRGF0YS5DbGFzc1ZlcnNpb25TZWxlY3RlZC5JRAogICAgICAgIH0pICVdCiAgICBbJSBFTkQgJV0KCiAgICBbJSBJRiAoRGF0YS5Sb2xlVmVyc2lvblNlbGVjdGVkKSAlXQogICAgICAgIFslIEJyZWFkY3J1bWJQYXRoLnB1c2goewogICAgICAgICAgICBOYW1lID0+ICdWZXJzaW9uICcgXyBEYXRhLlJvbGVWZXJzaW9uU2VsZWN0ZWQuVmVyc2lvbiwKICAgICAgICAgICAgTGluayA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbTtTdWJhY3Rpb249Um9sZURlZmluaXRpb25WaWV3O0RlZmluaXRpb25JRD0nIF8gRGF0YS5Sb2xlVmVyc2lvblNlbGVjdGVkLklECiAgICAgICAgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElGIChEYXRhLkVkaXQpICVdCiAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7CiAgICAgICAgICAgIE5hbWUgPT4gJ0VkaXQgZGVmaW5pdGlvbicsCiAgICAgICAgfSkgJV0KICAgIFslIEVORCAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJBY3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9J0NvbnRlbnQnPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0Ij4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJnZXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iQ2xhc3NEZWZpbml0aW9uQ2hhbmdlIi8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBEYXRhLkNsYXNzT3B0aW9uU3RyZyAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkNoYW5nZSBjbGFzcyBkZWZpbml0aW9uIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9ImdldCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJSb2xlRGVmaW5pdGlvbkNoYW5nZSIvPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5Sb2xlT3B0aW9uU3RyZyAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkNoYW5nZSByb2xlIGRlZmluaXRpb24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkNsYXNzRXhwb3J0Ii8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBEYXRhLkNsYXNzT3B0aW9uTXVsdFN0cmcgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkV4cG9ydElERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRXhwb3J0SURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIEZ1bGxzaXplIENlbnRlciIgdHlwZT0ic3VibWl0IiBpZD0iRXhwb3J0IiB2YWx1ZT0iRXhwb3J0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtZG93bmxvYWQiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwb3J0IENsYXNzZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgoKClslIFJlbmRlckJsb2NrU3RhcnQoIkFjdGlvbk92ZXJ2aWV3IikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBGdWxsc2l6ZSBDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT5bJSBUcmFuc2xhdGUoIkdvIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWN0aW9uT3ZlcnZpZXciKSAlXQogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkhlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25MaXN0IFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkNsYXNzSW1wb3J0Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSJbJSBEYXRhLkZvcm1JRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRXhhbXBsZUNsYXNzTGlzdCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRXhhbXBsZUNsYXNzRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRXhhbXBsZUNsYXNzU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJVcGRhdGVFeGlzdGluZ0VudGl0aWVzIiBuYW1lPSJVcGRhdGVFeGlzdGluZ0VudGl0aWVzIiB2YWx1ZT0iMSIgY2hlY2tlZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJVcGRhdGVFeGlzdGluZ0VudGl0aWVzIj5bJSBUcmFuc2xhdGUoIlVwZGF0ZSBleGlzdGluZyBlbnRpdGllcyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0nIycgaWQ9J0ltcG9ydCcgY2xhc3M9J0NhbGxGb3JBY3Rpb24gRnVsbHNpemUgQ2VudGVyJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48aSBjbGFzcz0nZmEgZmEtdXBsb2FkJz48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdMaXN0IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkxpc3QiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSBDbGFzcyIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3RGVmaW5pdGlvbkxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1DbGFzc0RlZmluaXRpb25MaXN0O0NsYXNzSUQ9WyUgRGF0YS5DbGFzc0lEIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3RGVmaW5pdGlvbkxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gUm9sZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3Um9sZUxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1Sb2xlRGVmaW5pdGlvbkxpc3Q7Um9sZUlEPVslIERhdGEuUm9sZUlEIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3Um9sZUxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TGlzdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNsYXNzRGVmaW5pdGlvbkxpc3QiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVzUwcGMiPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gQ2xhc3MiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiVmVyc2lvbiIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJDcmVhdGVkIGJ5IikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDbGFzc0RlZmluaXRpb25MaXN0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249Q2xhc3NEZWZpbml0aW9uVmlldztEZWZpbml0aW9uSUQ9WyUgRGF0YS5EZWZpbml0aW9uSUQgfCB1cmkgJV0iPlslIERhdGEuQ2xhc3MgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLlZlcnNpb24gfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLkNyZWF0ZUJ5VXNlciB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNsYXNzRGVmaW5pdGlvbkxpc3RSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNsYXNzRGVmaW5pdGlvbkxpc3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb2xlRGVmaW5pdGlvbkxpc3QiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iVzUwcGMiPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gUm9sZSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJWZXJzaW9uIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQgYnkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJvbGVEZWZpbml0aW9uTGlzdFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVJvbGVEZWZpbml0aW9uVmlldztEZWZpbml0aW9uSUQ9WyUgRGF0YS5EZWZpbml0aW9uSUQgfCB1cmkgJV0iPlslIERhdGEuUm9sZSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuVmVyc2lvbiB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIERhdGEuQ3JlYXRlQnlVc2VyIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUm9sZURlZmluaXRpb25MaXN0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb2xlRGVmaW5pdGlvbkxpc3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDbGFzc0RlZmluaXRpb25WaWV3IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlZpZXciKSB8IGh0bWwgJV06IDwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gQ2xhc3MiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVmVyc2lvbiIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmVyc2lvbiB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQgYnkiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZUJ5VXNlciB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiRGVmaW5pdGlvbiIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+WyUgRGF0YS5EZWZpbml0aW9uU3RyaW5nICVdPC9wcmU+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ2xhc3NEZWZpbml0aW9uVmlldyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvbGVEZWZpbml0aW9uVmlldyIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJWaWV3IikgfCBodG1sICVdOiA8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNvbmZpZyBJdGVtIFJvbGUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVmVyc2lvbiIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmVyc2lvbiB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQgYnkiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZUJ5VXNlciB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiRGVmaW5pdGlvbiIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+WyUgRGF0YS5EZWZpbml0aW9uU3RyaW5nICVdPC9wcmU+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm9sZURlZmluaXRpb25WaWV3IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ2xhc3NEZWZpbml0aW9uQ2hhbmdlIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkNoYW5nZSIpIHwgaHRtbCAlXTogPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJDbGFzc0RlZmluaXRpb25TYXZlIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ2xhc3NJRCIgdmFsdWU9IlslIERhdGEuQ2xhc3NJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb250aW51ZUFmdGVyU2F2ZSIgaWQ9IkNvbnRpbnVlQWZ0ZXJTYXZlIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgoKWyUgSUYgRGF0YS5FcnJvciAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgV2lkZ2V0TWVzc2FnZSBUb3AgRXJyb3IiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+WyUgVHJhbnNsYXRlKERhdGEuRXJyb3IsIERhdGEuRXJyb3JBcmcxLCBEYXRhLkVycm9yQXJnMikgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIEVORCAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW0gQ2xhc3MiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2xhc3MgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZWZpbml0aW9uIj5bJSBUcmFuc2xhdGUoIkRlZmluaXRpb24iKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvZGVNaXJyb3JDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNNVG9vbGJhckNvbnRhaW5lciIgY2xhc3M9IkNNVG9vbGJhckNvbnRhaW5lciBIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDTVRvb2xiYXJJY29ucyIgY2xhc3M9IkNNVG9vbGJhckljb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZSgiQXV0byBJbmRlbnQgQ29kZSIpIHwgaHRtbCAlXSIgY2xhc3M9IkNNSW5kZW50IiBvbmNsaWNrPSJDb3JlLlVJLkNvZGVNaXJyb3JFZGl0b3IuSW5kZW50Q29kZSgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNvbW1lbnQvVW5jb21tZW50IENvZGUiKSB8IGh0bWwgJV0iIGNsYXNzPSJDTUNvbW1lbnQiIG9uY2xpY2s9IkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5Ub29nbGVDb21tZW50KCk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIiBjbGFzcz0iQ01TZWFyY2giIG9uY2xpY2s9IkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5TZWFyY2goKTsiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2ggJiBSZXBsYWNlIikgfCBodG1sICVdIiBjbGFzcz0iQ01TZWFyY2hSZXBsYWNlIiBvbmNsaWNrPSJDb3JlLlVJLkNvZGVNaXJyb3JFZGl0b3IuU2VhcmNoUmVwbGFjZSgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlbGVjdCBBbGwiKSB8IGh0bWwgJV0iIGNsYXNzPSJDTVNlbGVjdEFsbCIgb25jbGljaz0iQ29yZS5VSS5Db2RlTWlycm9yRWRpdG9yLlNlbGVjdEFsbCgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZ1bGwgU2NyZWVuIikgfCBodG1sICVdIiBjbGFzcz0iQ01NYXhpbWl6ZSIgb25jbGljaz0iQ29yZS5VSS5Db2RlTWlycm9yRWRpdG9yLlRvb2dsZUZ1bGxTY3JlZW4oJ01heGltaXplJyk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJEZWZpbml0aW9uIiBpZD0iRGVmaW5pdGlvbiIgY2xhc3M9IiBDb2RlTWlycm9yRWRpdG9yIFslIElGIERhdGEuRXJyb3IgJV1bJSBEYXRhLkVycm9yQ2xhc3NlcyAlXVslIEVORCAlXSIgcm93cz0iWyUgRGF0YS5Sb3dzIHwgaHRtbCAlXSIgY29scz0iODAiIHdyYXA9Im9mZiI+WyUgRGF0YS5EZWZpbml0aW9uIHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSBlZGl0aW5nIGZpZWxkIGFsbG93cyB5b3UgdG8gdXNlIGRpZmZlcmVudCBmdW5jdGlvbnMgbGlrZSBhdXRvbWF0aWMgZm9ybWF0dGluZywgd2luZG93IHJlc2l6ZSBhcyB3ZWxsIGFzIHRhZy0gYW5kIGJyYWNrZXQtY29tcGxldGlvbi4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTdWJtaXRBbmRDb250aW51ZSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdEFuZENvbnRpbnVlIiB0eXBlPSJidXR0b24iIHZhbHVlPSJTdWJtaXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTdWJtaXQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFByaW1hcnkiIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIGFuZCBmaW5pc2giKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDbGFzc0RlZmluaXRpb25DaGFuZ2UiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb2xlRGVmaW5pdGlvbkNoYW5nZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJDaGFuZ2UiKSB8IGh0bWwgJV06IDwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iUm9sZURlZmluaXRpb25TYXZlIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUm9sZUlEIiB2YWx1ZT0iWyUgRGF0YS5Sb2xlSUQgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ29udGludWVBZnRlclNhdmUiIGlkPSJDb250aW51ZUFmdGVyU2F2ZSIgdmFsdWU9IiIvPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KClslIElGIERhdGEuRXJyb3IgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFdpZGdldE1lc3NhZ2UgVG9wIEVycm9yIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPlslIFRyYW5zbGF0ZShEYXRhLkVycm9yLCBEYXRhLkVycm9yQXJnMSwgRGF0YS5FcnJvckFyZzIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBFTkQgJV0KCgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSBSb2xlIikgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlJvbGUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZWZpbml0aW9uIj5bJSBUcmFuc2xhdGUoIkRlZmluaXRpb24iKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvZGVNaXJyb3JDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNNVG9vbGJhckNvbnRhaW5lciIgY2xhc3M9IkNNVG9vbGJhckNvbnRhaW5lciBIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDTVRvb2xiYXJJY29ucyIgY2xhc3M9IkNNVG9vbGJhckljb25zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZSgiQXV0byBJbmRlbnQgQ29kZSIpIHwgaHRtbCAlXSIgY2xhc3M9IkNNSW5kZW50IiBvbmNsaWNrPSJDb3JlLlVJLkNvZGVNaXJyb3JFZGl0b3IuSW5kZW50Q29kZSgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNvbW1lbnQvVW5jb21tZW50IENvZGUiKSB8IGh0bWwgJV0iIGNsYXNzPSJDTUNvbW1lbnQiIG9uY2xpY2s9IkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5Ub29nbGVDb21tZW50KCk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIiBjbGFzcz0iQ01TZWFyY2giIG9uY2xpY2s9IkNvcmUuVUkuQ29kZU1pcnJvckVkaXRvci5TZWFyY2goKTsiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2ggJiBSZXBsYWNlIikgfCBodG1sICVdIiBjbGFzcz0iQ01TZWFyY2hSZXBsYWNlIiBvbmNsaWNrPSJDb3JlLlVJLkNvZGVNaXJyb3JFZGl0b3IuU2VhcmNoUmVwbGFjZSgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlbGVjdCBBbGwiKSB8IGh0bWwgJV0iIGNsYXNzPSJDTVNlbGVjdEFsbCIgb25jbGljaz0iQ29yZS5VSS5Db2RlTWlycm9yRWRpdG9yLlNlbGVjdEFsbCgpOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZ1bGwgU2NyZWVuIikgfCBodG1sICVdIiBjbGFzcz0iQ01NYXhpbWl6ZSIgb25jbGljaz0iQ29yZS5VSS5Db2RlTWlycm9yRWRpdG9yLlRvb2dsZUZ1bGxTY3JlZW4oJ01heGltaXplJyk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJEZWZpbml0aW9uIiBpZD0iRGVmaW5pdGlvbiIgY2xhc3M9IiBDb2RlTWlycm9yRWRpdG9yIFslIElGIERhdGEuRXJyb3IgJV1bJSBEYXRhLkVycm9yQ2xhc3NlcyAlXVslIEVORCAlXSIgcm93cz0iWyUgRGF0YS5Sb3dzIHwgaHRtbCAlXSIgY29scz0iODAiIHdyYXA9Im9mZiI+WyUgRGF0YS5EZWZpbml0aW9uIHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZSBlZGl0aW5nIGZpZWxkIGFsbG93cyB5b3UgdG8gdXNlIGRpZmZlcmVudCBmdW5jdGlvbnMgbGlrZSBhdXRvbWF0aWMgZm9ybWF0dGluZywgd2luZG93IHJlc2l6ZSBhcyB3ZWxsIGFzIHRhZy0gYW5kIGJyYWNrZXQtY29tcGxldGlvbi4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTdWJtaXRBbmRDb250aW51ZSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSIgaWQ9IlN1Ym1pdEFuZENvbnRpbnVlIiB0eXBlPSJidXR0b24iIHZhbHVlPSJTdWJtaXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTdWJtaXQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFByaW1hcnkiIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIGFuZCBmaW5pc2giKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb2xlRGVmaW5pdGlvbkNoYW5nZSIpICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlldyIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentDashboardITSMConfigItemGeneric.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlck5hdkJhciIpICVdCjxzcGFuIGNsYXNzPSJQYWdpbmF0aW9uIj4KICAgIFslIERhdGEuU2l0ZU5hdkJhciAlXQo8L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlck5hdkJhciIpICVdClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlciIpICVdCgojPCEtLSBUaGlzIGZvcm0gd2lsbCBub3QgYmUgc3VibWl0dGVkLCB3ZSBuZWVkIGl0IGZvciB0aGUgQUpBWCBjYWxscy4gLS0+Cjxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkN1c3RvbWVySUQiIHZhbHVlPSJbJSBEYXRhLkN1c3RvbWVySUQgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDdXN0b21lclVzZXJJRCIgdmFsdWU9IlslIERhdGEuQ3VzdG9tZXJVc2VySUQgfCBodG1sICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGaWx0ZXJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBpZD0iRmlsdGVyWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuRmlsdGVyVmFsdWUgfCBodG1sICVdIiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWRkaXRpb25hbEZpbHRlclslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGlkPSJBZGRpdGlvbmFsRmlsdGVyWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuQWRkaXRpb25hbEZpbHRlclZhbHVlIHwgaHRtbCAlXSIgLz4KICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIj4KICAgICAgICA8dGhlYWQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyIikgJV0KICAgICAgICAgICAgPHRyPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiR2VuZXJhbE92ZXJ2aWV3SGVhZGVyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyTWV0YSIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkRhc2hib2FyZEhlYWRlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIGRhdGEtY29sdW1uPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyTWV0YUxpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgIDxhIGlkPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdRmxhZ092ZXJ2aWV3Q29udHJvbFslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9IlslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV1PdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+PC9hPgoKWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyTWV0YUxpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlck1ldGFFbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkhlYWRlckNvbHVtbk5hbWUpIHwgaHRtbCAlXSI+PC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJNZXRhRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyTWV0YSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbmZpZ0l0ZW1IZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbmZpZ0l0ZW1OdW1iZXJDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEYXNoYm9hcmRIZWFkZXIgQ29uZmlnSXRlbU51bWJlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIGRhdGEtY29sdW1uPSJDb25maWdJdGVtTnVtYmVyIj4KICAgICAgICAgICAgICAgICAgICA8YSBpZD0iQ29uZmlnSXRlbU51bWJlck92ZXJ2aWV3Q29udHJvbFslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9IkNvbmZpZ0l0ZW1OdW1iZXJPdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBocmVmPSIjIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iID5bJSBDb25maWcoIkNvbmZpZ0l0ZW06Okhvb2siKSAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbmZpZ0l0ZW1OdW1iZXJDb2x1bW4iKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEYXNoYm9hcmRIZWFkZXIgWyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1lIHwgaHRtbCAlXSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIGRhdGEtY29sdW1uPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtDdXN0b21lcklEU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iQ3VzdG9tZXJJREF1dG9Db21wbGV0ZSIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtDdXN0b21lcklEU2VhcmNoIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua1VzZXJTZWFyY2giKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJVc2VyQXV0b0NvbXBsZXRlIiBhdXRvY29tcGxldGU9Im9mZiIgLz4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua1VzZXJTZWFyY2giKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkRlbGV0ZUZpbHRlciBIaWRkZW4iPjxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IlslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV1PdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBuYW1lPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdT3ZlcnZpZXdDb250cm9sWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgaHJlZj0iIyIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiA+WyUgRGF0YS5IZWFkZXJOYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+CgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IlslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV1PdmVydmlld0NvbnRyb2xbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBuYW1lPSJbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdT3ZlcnZpZXdDb250cm9sWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgaHJlZj0iIyIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiA+WyUgRGF0YS5IZWFkZXJOYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkxpbmsiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1maWx0ZXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbHVtbkZpbHRlclN0cmcgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rQ3VzdG9tZXJVc2VyU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iQ3VzdG9tZXJVc2VyQXV0b0NvbXBsZXRlIiBhdXRvY29tcGxldGU9Im9mZiIgLz4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGlua0N1c3RvbWVyVXNlclNlYXJjaCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iRGVsZXRlRmlsdGVyIEhpZGRlbiI+PGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iID5bJSBEYXRhLkhlYWRlck5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iID5bJSBEYXRhLkhlYWRlck5hbWVUcmFuc2xhdGVkICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5FbXB0eSIpICVdCiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb25maWdJdGVtSGVhZGVyIikgJV0KClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQoKICAgICAgICAgICAgPC90cj4KClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlciIpICVdCiAgICAgICAgPC90aGVhZD4KCiAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1JvdyIpICVdCiAgICAgICAgICAgIDx0ciBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGEiKSAlXQogICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJbJSBEYXRhLkNsYXNzVGFibGUgfCBodG1sICVdIEZsYWdzIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljUm93TWV0YUltYWdlIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSBTbWFsbCIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5DbGFzc1NwYW4gfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zdGFyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2VtPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGFJbWFnZSIpICVdCiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNSb3dNZXRhIikgJV0KCiMgICAgICAgICAgICA8dGQgY2xhc3M9IlcxMHBjIj4KIyAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEICVdIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iIGNsYXNzPSJBc0Jsb2NrIE1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuQ29uZmlnSXRlbU51bWJlciB8IGh0bWwgJV08L2E+CiMgICAgICAgICAgICA8L3RkPgojICAgICAgICAgICAgPHRkIGNsYXNzPSJXNTBwYyI+CiMgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVGl0bGUgfCB0cnVuY2F0ZSg3MCkgfCBodG1sICVdPC9kaXY+CiMgICAgICAgICAgICA8L3RkPgojICAgICAgICAgICAgPHRkPlslIERhdGEuVGltZSB8IGh0bWwgJV08L3RkPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb25maWdJdGVtQ29sdW1uIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb25maWdJdGVtTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEICVdIiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iIGNsYXNzPSJBc0Jsb2NrIE1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0NvbmZpZ0l0ZW1OdW1iZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtU2lnbmFsIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuU3RhdGUgfCBodG1sICVdIiBjbGFzcz0iRmxhZyBTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5TaWduYWwgfCBodG1sICVdIj4iWyUgVHJhbnNsYXRlKERhdGEuU3RhdGUpIHwgaHRtbCAlXSI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgaHRtbCAlXSI+WyUgRGF0YS5HZW5lcmljVmFsdWUgfCB0cnVuY2F0ZSg0MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtVGl0bGUiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuV2hvbGVUaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuVGl0bGUgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbVRpdGxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW5UcmFuc2xhdGFibGUiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkdlbmVyaWNWYWx1ZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5HZW5lcmljVmFsdWUpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uVHJhbnNsYXRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW5UaW1lIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uVGltZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uRXNjYWxhdGlvbiIpICVdCiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5HZW5lcmljVmFsdWUgfCBodG1sICVdIiBjbGFzcz0iWyUgRGF0YS5DbGFzcyB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljQ29sdW1uRXNjYWxhdGlvbiIpICVdClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0NvbmZpZ0l0ZW1Db2x1bW4iKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNEeW5hbWljRmllbGRMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iICB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0R5bmFtaWNGaWVsZExpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0R5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWx1ZSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNEeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNEeW5hbWljRmllbGQiKSAlXQoKWyUgUmVuZGVyQmxvY2tFbmQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCiAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1JvdyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljTm9uZSIpICVdCiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQXV0b0NvbHNwYW4iPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgibm9uZSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljTm9uZSIpICVdCiAgICAgICAgPC90Ym9keT4KICAgIDwvdGFibGU+CjwvZm9ybT4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemAdd.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0Ij4KICAgIDxoMT5bJSBUcmFuc2xhdGUoIkFkZCIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSIpIHwgaHRtbCAlXTwvaDE+CgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiI+CgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+PGxhYmVsIGZvcj0iRmlsdGVyQ2xhc3NlcyI+WyUgVHJhbnNsYXRlKCJGaWx0ZXIgZm9yIENsYXNzZXMiKSB8IGh0bWwgJV08L2xhYmVsPjwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iRmlsdGVyQ2xhc3NlcyIgY2xhc3M9IkZpbHRlckJveCIgbmFtZT0iRmlsdGVyQ2xhc3NlcyIgdmFsdWU9IiIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRmlsdGVyIGZvciBDbGFzc2VzIikgfCBodG1sICVdIiBwbGFjZWhvbGRlcj0iWyUgVHJhbnNsYXRlKCJKdXN0IHN0YXJ0IHR5cGluZyB0byBmaWx0ZXIuLi4iKSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiSGludCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlNlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIiBpZD0iQ2xhc3NlcyI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlcxMDBwYyI+WyUgVHJhbnNsYXRlKCJDbGFzcyIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iRmlsdGVyTWVzc2FnZSBIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlslIFRyYW5zbGF0ZSgiTm8gbWF0Y2hlcyBmb3VuZC4iKSB8IGh0bWwgJV08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld0l0ZW1MaXN0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRWRpdDtDbGFzc0lEPVslIERhdGEuQ2xhc3NJRCB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3SXRlbUxpc3QiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemBulk.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJCdWxrQWN0aW9uIikgJV0KPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9ImNvbXBvc2UiIGNsYXNzPSJWYWxpZGF0ZSI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJEbyIvPgoKICAgIDxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uIikgfCBodG1sICVdPC9oMT4KICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlVzZWRDb25maWdJdGVtSUQiKSAlXQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ29uZmlnSXRlbUlEIiB2YWx1ZT0iWyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdIiAvPgpbJSBSZW5kZXJCbG9ja0VuZCgiVXNlZENvbmZpZ0l0ZW1JRCIpICVdCgogICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbCI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZXBsU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRlcGxTdGF0ZUlEIj5bJSBUcmFuc2xhdGUoIkRlcGxveW1lbnQgc3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRGVwbFN0YXRlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkRlcGxTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkluY2lTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iSW5jaVN0YXRlSUQiPlslIFRyYW5zbGF0ZSgiSW5jaWRlbnQgc3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuSW5jaVN0YXRlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluY2lTdGF0ZSIpICVdCgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkxpbmtUb2dldGhlciI+WyUgVHJhbnNsYXRlKCJMaW5rIHRvZ2V0aGVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxpbmtUb2dldGhlclllc05vT3B0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuTGlua1RvZ2V0aGVyTGlua1R5cGVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJMaW5rVG9nZXRoZXJBbm90aGVyIj5bJSBUcmFuc2xhdGUoIkxpbmsgdG8gYW5vdGhlciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJbJSBEYXRhLkxpbmtUb2dldGhlckFub3RoZXJJbnZhbGlkIHwgaHRtbCAlXSBXMjVwYyIgaWQ9IkxpbmtUb2dldGhlckFub3RoZXIiIG5hbWU9IkxpbmtUb2dldGhlckFub3RoZXIiIHZhbHVlPSJbJSBEYXRhLkxpbmtUb2dldGhlckFub3RoZXIgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkxpbmtUb2dldGhlckFub3RoZXJTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MaW5rVHlwZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgRGF0YS5EeW5hbWljRmllbGRIVE1MICVdCiAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJGb290ZXIiPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIGlkPSJzdWJtaXRSaWNoVGV4dCIgYWNjZXNza2V5PSJnIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV0gKGcpIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9mb3JtPgpbJSBSZW5kZXJCbG9ja0VuZCgiQnVsa0FjdGlvbiIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemDelete.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIFczMDBweCI+CgogICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgPHAgY2xhc3M9IlZhbHVlIj4KICAgICAgICBbJSBEYXRhLk5hbWUgfCBodG1sICVdCiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTnVtYmVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICA8cCBjbGFzcz0iVmFsdWUiPgogICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLk51bWJlcikgfCBodG1sICVdCiAgICA8L3A+CiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgoKPC9maWVsZHNldD4KPHAgY2xhc3M9IlNwYWNpbmdUb3AgQ2VudGVyIj4KICAgIFslIFRyYW5zbGF0ZSgiRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyIpIHwgaHRtbCAlXQo8L3A+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemEdit.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGFydE5vcm1hbCIpICVdCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CiAgICA8aDE+WyUgVHJhbnNsYXRlKCJFZGl0IikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoIkNvbmZpZyBJdGVtIikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoRGF0YS5OdW1iZXIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiQ2xhc3MiKSB8IGh0bWwgJV06IFslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV08L2gxPgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+ClslIFJlbmRlckJsb2NrRW5kKCJTdGFydE5vcm1hbCIpICVdCiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9IkNsYXNzSXRlbSIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiIGlkPSJDbGFzc0l0ZW0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGFydFNtYWxsIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iTGF5b3V0UG9wdXAgQVJJQVJvbGVNYWluIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiRWRpdCIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuTnVtYmVyKSB8IGh0bWwgJV0gLSBbJSBUcmFuc2xhdGUoIkNsYXNzIikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoRGF0YS5DbGFzcykgfCBodG1sICVdPC9oMT4KICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkNhbmNlbENsb3NlUG9wdXAiIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiQ2FuY2VsICYgY2xvc2UiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTY3JlZW5UeXBlIiB2YWx1ZT0iUG9wdXAiLz4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXJ0U21hbGwiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNhdmUiLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDbGFzc0lEIiB2YWx1ZT0iWyUgRGF0YS5DbGFzc0lEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNvbmZpZ0l0ZW1JRCIgdmFsdWU9IlslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkR1cGxpY2F0ZUlEIiB2YWx1ZT0iWyUgRGF0YS5EdXBsaWNhdGVJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSJbJSBEYXRhLkZvcm1JRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd05hbWUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOYW1lIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJOYW1lIiBpZD0iTmFtZSIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuUm93TmFtZUludmFsaWQgfCBodG1sICVdIiBtYXhsZW5ndGg9IjI1MCIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlRoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0iKSB8IGh0bWwgJV0iWyUgSUYgRGF0YS5SZWFkb25seSAlXSByZWFkb25seVslIEVORCAlXS8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIiA+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUm93TmFtZUVycm9yRGVmYXVsdCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJOYW1lU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93TmFtZUVycm9yRGVmYXVsdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd05hbWVFcnJvckR1cGxpY2F0ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyIsIERhdGEuRHVwbGljYXRlcykgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93TmFtZUVycm9yRHVwbGljYXRlcyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd05hbWVFcnJvclJlZ0V4IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZShEYXRhLlJlZ0V4RXJyb3JNZXNzYWdlKSB8IGh0bWwgJV08L3A+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb3dOYW1lRXJyb3JSZWdFeCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb3dOYW1lIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUm93VmVyc2lvblN0cmluZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlZlcnNpb25TdHJpbmciPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiVmVyc2lvbiBOdW1iZXIiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJWZXJzaW9uU3RyaW5nIiBpZD0iVmVyc2lvblN0cmluZyIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuUm93VmVyc2lvblN0cmluZ0ludmFsaWQgfCBodG1sICVdIiBtYXhsZW5ndGg9IjI1MCIgdmFsdWU9IlslIERhdGEuVmVyc2lvblN0cmluZyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlZlcnNpb24gbnVtYmVyIG9mIHRoaXMgY29uZmlnIGl0ZW0iKSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJWZXJzaW9uU3RyaW5nRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIiA+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUm93VmVyc2lvblN0cmluZ0Vycm9yRGVmYXVsdCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJWZXJzaW9uU3RyaW5nU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93VmVyc2lvblN0cmluZ0Vycm9yRGVmYXVsdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd1ZlcnNpb25TdHJpbmdFcnJvckR1cGxpY2F0ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iVmVyc2lvblN0cmluZ1NlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJWZXJzaW9uIE51bWJlciBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMiLCBEYXRhLkR1cGxpY2F0ZXMpIHwgaHRtbCAlXTwvcD48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJvd1ZlcnNpb25TdHJpbmdFcnJvckR1cGxpY2F0ZXMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93VmVyc2lvblN0cmluZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd0RlcGxTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkRlcGxTdGF0ZUlEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkRlcGxveW1lbnQgU3RhdGUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRGVwbFN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRGVwbFN0YXRlSURFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiID48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRGVwbFN0YXRlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJSb3dEZXBsU3RhdGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb3dJbmNpU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJJbmNpU3RhdGVJRCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJJbmNpZGVudCBTdGF0ZSIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JbmNpU3RhdGVPcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJJbmNpU3RhdGVJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSIgPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJJbmNpU3RhdGVJRFNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJvd0luY2lTdGF0ZSIpICVdCgpbJSBEYXRhLkR5bmFtaWNGaWVsZEhUTUwgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd0Rlc2NyaXB0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRlc2NyaXB0aW9uIj5bJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJSaWNoVGV4dEZpZWxkIiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJEZXNjcmlwdGlvbiIgY2xhc3M9IlJpY2hUZXh0IFslIERhdGEuUmljaFRleHRJbnZhbGlkIHwgaHRtbCAlXSIgbmFtZT0iRGVzY3JpcHRpb24iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIikgfCBodG1sICVdIiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSB8IGh0bWwgJV0iPlslIERhdGEuRGVzY3JpcHRpb24gfCBodG1sICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2RldGFpbHM+ClslIFJlbmRlckJsb2NrRW5kKCJSb3dEZXNjcmlwdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJBdHRhY2htZW50cyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJTkNMVURFICJGb3JtRWxlbWVudHMvQXR0YWNobWVudExpc3QudHQiICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KCiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0iU3VibWl0IiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IiBpZD0iU3VibWl0QnV0dG9uIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IkNhbmNlbEJ1dHRvbiIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQiPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJFbmRTbWFsbCIpICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRW5kU21hbGwiKSAlXQogICAgICAgIDwvZm9ybT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRW5kTm9ybWFsIikgJV0KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkVuZE5vcm1hbCIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemHistory.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8IS0tIHN0YXJ0IGZvcm0gLS0+CjxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8aDE+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMiLCBEYXRhLk5hbWUpIHwgaHRtbCAlXQogICAgICAgIDwvaDE+CiAgICAgICAgPHA+CiAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgogICAgICAgIDwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJIaXN0b3J5IENvbnRlbnQiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBzdW1tYXJ5PSJDb25maWd1cmF0aW9uIEl0ZW0gSGlzdG9yeSIgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBY3Rpb24iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiWm9vbSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlVzZXIiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJDcmVhdGV0aW1lIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5IaXN0b3J5VHlwZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBEYXRhLkNvbW1lbnQgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICBjbGFzcz0iTGlua1pvb21WaWV3IEFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgJV07VmVyc2lvbklEPVslIERhdGEuVmVyc2lvbklEICVdIj5bJSBUcmFuc2xhdGUoIlpvb20gdmlldyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Vc2VyRnVsbG5hbWUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICA8L2Rpdj4KPC9kaXY+CjwhLS0gZW5kIGZvcm0gLS0+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemOverviewNavBar.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhciIpICVdCjxkaXYgY2xhc3M9Ik92ZXJ2aWV3Qm94IEFSSUFSb2xlTWFpbiBbJSBEYXRhLlZpZXcgfCBodG1sICVdIj4KICAgIDxoMT5bJSBUcmFuc2xhdGUoRGF0YS5UaXRsZU5hbWUpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuVGl0bGVWYWx1ZSkgfCBodG1sICVdPC9oMT4KCiAgICBbJSBEYXRhLkRhdGFJblRoZU1pZGRsZSAlXQoKICAgIDxkaXYgY2xhc3M9Ik92ZXJ2aWV3Q29udHJvbCIgaWQ9Ik92ZXJ2aWV3Q29udHJvbCI+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udHJvbFJvdyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVyIikgJV0KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFicyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkFjdGl2ZSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua0ZpbHRlciAlXUNhdGVnb3J5PVslIERhdGEuQ2F0ZWdvcnlGaWx0ZXIgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08c3Bhbj5bJSBEYXRhLkNvdW50IHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtGaWx0ZXIgJV1DYXRlZ29yeT1bJSBEYXRhLkNhdGVnb3J5RmlsdGVyIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPHNwYW4+WyUgRGF0YS5Db3VudCB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNwbGl0IikgJV0KICAgICAgICAgICAgICAgICAgICAtClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TcGxpdCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW0iKSAlXQogICAgICAgICAgICAgICAgPC91bD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQmFjayIpICVdCiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBpZD0iSVRTTUNvbmZpZ0l0ZW1TZWFyY2giIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua0JhY2sgJV0iPlslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdIFslIERhdGEuUHJvZmlsZU5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQmFjayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZXh0U2V0dGluZ3MiKSAlXQoKICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQ29udGV4dEZ1bmN0aW9ucyI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudEFjdGlvblJvd1JlbW92ZUNvbHVtbkZpbHRlcnMiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyICVdO0NhdGVnb3J5PVslIERhdGEuQ2F0ZWdvcnlGaWx0ZXIgfCB1cmkgJV07Vmlldz1bJSBEYXRhLlZpZXcgJV07WyUgRGF0YS5MaW5rRmlsdGVyICVdO0RlbGV0ZUZpbHRlcnM9RGVsZXRlRmlsdGVycyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIGFjdGl2ZSBmaWx0ZXJzIGZvciB0aGlzIHNjcmVlbi4iKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJEb2N1bWVudEFjdGlvblJvd1JlbW92ZUNvbHVtbkZpbHRlcnMiKSAlXQoKICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkNvbnRleHRTZXR0aW5ncyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGlkPSJTaG93Q29udGV4dFNldHRpbmdzRGlhbG9nIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZXR0aW5ncyIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY29nIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlNldHRpbmdzIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGRpdiBpZD0iQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyIiBjbGFzcz0iSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IkNvbnRleHRTZXR0aW5nc0RpYWxvZ092ZXJ2aWV3WyUgRGF0YS5WaWV3IHwgaHRtbCAlXSIgY2xhc3M9IldpZGdldFNldHRpbmdzRm9ybSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFnZW50UHJlZmVyZW5jZXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iVXBkYXRlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikdyb3VwIiB2YWx1ZT0iWyUgRGF0YS5Hcm91cCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUmVkaXJlY3RVUkwiIHZhbHVlPSJbJSBEYXRhLlJlcXVlc3RlZFVSTCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlslIERhdGEuUHJlZmVyZW5jZXNLZXkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoIkNvbmZpZyBJdGVtcyBwZXIgcGFnZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUGFnZVNob3duU3RyaW5nICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkZpbHRlckNvbHVtblNldHRpbmdzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJDb2x1bW5zRW5hYmxlZEpTT04iIHZhbHVlPSJbJSBEYXRhLkNvbHVtbnNFbmFibGVkIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJDb2x1bW5zQXZhaWxhYmxlSlNPTiIgdmFsdWU9IlslIERhdGEuQ29sdW1uc0F2YWlsYWJsZSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJHcm91cCIgdmFsdWU9IlslIERhdGEuR3JvdXBOYW1lIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iRmlsdGVyQWN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5GaWx0ZXJBY3Rpb24gfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9IkRvbnRQcmludCIgZm9yPSJbJSBEYXRhLk5hbWVQcmVmIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuRGVzYykgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBEb250UHJpbnQgTGF5b3V0R3JpZCBBbGxvY2F0aW9uTGlzdENvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU2l6ZTFvZjIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYmxlbGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkhlYWRlciI+WyUgVHJhbnNsYXRlKCJBdmFpbGFibGUgQ29sdW1ucyIpIHwgaHRtbCAlXTwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpbHRlcklucHV0Q29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iRmlsdGVyQXZhaWxhYmxlRmllbGRzIiBuYW1lPSJGaWx0ZXJBdmFpbGFibGVGaWVsZHMiIHZhbHVlPSIiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkZpbHRlciBhdmFpbGFibGUgZmllbGRzIikgfCBodG1sICVdIiBwbGFjZWhvbGRlcj0iWyUgVHJhbnNsYXRlKCJGaWx0ZXIgYXZhaWxhYmxlIGZpZWxkcyIpIHwgaHRtbCAlXS4uLiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWxsb2NhdGlvbkxpc3QgVGFibGVsaWtlIEF2YWlsYWJsZUZpZWxkcyBTZXR0aW5nc092ZXJ2aWV3IiBpZD0iQXZhaWxhYmxlRmllbGQtRGFzaGJvYXJkWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+PC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTaXplMW9mMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFibGVsaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iSGVhZGVyIj5bJSBUcmFuc2xhdGUoIlZpc2libGUgQ29sdW1ucyAob3JkZXIgYnkgZHJhZyAmIGRyb3ApIikgfCBodG1sICVdPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBbGxvY2F0aW9uTGlzdCBUYWJsZWxpa2UgQXNzaWduZWRGaWVsZHMgT3JkZXJOdW1iZXJzIFNldHRpbmdzT3ZlcnZpZXciIGlkPSJBc3NpZ25lZEZpZWxkcy1EYXNoYm9hcmRbJSBEYXRhLk5hbWUgfCBodG1sICVdIj48L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja0VuZCgiRmlsdGVyQ29sdW1uU2V0dGluZ3MiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrRW5kKCJDb250ZXh0U2V0dGluZ3MiKSAlXQoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJPdmVydmlld0FjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuQWN0aW9uUm93ICVdCiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJPdmVydmlld1pvb20iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclZpZXdNb2RlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZVNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJBY3RpdmUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q2F0ZWdvcnk9WyUgRGF0YS5DYXRlZ29yeUZpbHRlciB8IHVyaSAlXTtWaWV3PVslIERhdGEuVmlldyB8IHVyaSAlXTtbJSBEYXRhLkxpbmtGaWx0ZXIgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLk5hbWVTaG9ydCkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclZpZXdNb2RlTm90U2VsZWN0ZWQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtDYXRlZ29yeT1bJSBEYXRhLkNhdGVnb3J5RmlsdGVyIHwgdXJpICVdO1ZpZXc9WyUgRGF0YS5WaWV3IHwgdXJpICVdO1slIERhdGEuTGlua0ZpbHRlciAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTmFtZVNob3J0KSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyVmlld01vZGVOb3RTZWxlY3RlZCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclZpZXdNb2RlIikgJV0KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJQYWdpbmF0aW9uIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SZXN1bHRMb25nICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2l0ZU5hdkJhckxvbmcgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KIyBzb3J0IG9yZGVyIGJhciBpZiBuZWVkZWQKICAgICAgICAgICAgICAgIFslIERhdGEuU29ydE9yZGVyQmFyICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyIikgJV0K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemOverviewSmall.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tClslIFJlbmRlckJsb2NrU3RhcnQoIkRvY3VtZW50QWN0aW9uUm93IikgJV0KPHVsIGNsYXNzPSJBY3Rpb25zIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRBY3Rpb25Sb3dCdWxrIikgJV0KICAgIDxsaSBpZD0iQ29uZmlnSXRlbUJ1bGtBY3Rpb24iIGNsYXNzPSJBbHdheXNQcmVzZW50IEJ1bGsgSW5hY3RpdmUgWyUgRGF0YS5DU1MgfCBodG1sICVdIj48YSBocmVmPSIjIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08L2E+PC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50QWN0aW9uUm93QnVsayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudEFjdGlvblJvd0xhc3RDb2x1bW5GaWx0ZXIiKSAlXQogICAgPGxpIGNsYXNzPSIiPjxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0RlbGV0ZUZpbHRlcnM9RGVsZXRlRmlsdGVycyI+WyUgVHJhbnNsYXRlKCJSZXNldCBvdmVydmlldyIpIHwgaHRtbCAlXTwvYT48L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRBY3Rpb25Sb3dMYXN0Q29sdW1uRmlsdGVyIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkRvY3VtZW50QWN0aW9uUm93SXRlbSIpICVdCiAgICA8bGkgY2xhc3M9IlslIERhdGEuQ1NTIHwgaHRtbCAlXSI+PGEgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9hPjwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJEb2N1bWVudEFjdGlvblJvd0l0ZW0iKSAlXQo8L3VsPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRBY3Rpb25Sb3ciKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb250ZW50IikgJV0KPGRpdiBpZD0iT3ZlcnZpZXdDb250YWluZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJGaWx0ZXJzIikgJV0KICAgIDxkaXYgaWQ9Ik92ZXJ2aWV3Q29udHJvbCIgY2xhc3M9IlNpZGVCYXJGaWx0ZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTaWRlQmFyRmlsdGVyIikgJV0KICAgICAgICA8dWw+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNpZGVCYXJGaWx0ZXJJdGVtIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZCIpICVdCiAgICAgICAgICAgIDxsaSBjbGFzcz0iQWN0aXZlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua0ZpbHRlciAlXUZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtDYXRlZ29yeT1bJSBEYXRhLkNhdGVnb3J5RmlsdGVyIHwgdXJpICVdIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdIChbJSBEYXRhLkNvdW50IHwgaHRtbCAlXSk8L2E+CiAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJTaWRlQmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2lkZUJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCIpICVdCiAgICAgICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rRmlsdGVyICVdRmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0NhdGVnb3J5PVslIERhdGEuQ2F0ZWdvcnlGaWx0ZXIgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV0gKFslIERhdGEuQ291bnQgfCBodG1sICVdKTwvYT4KICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIlNpZGVCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTaWRlQmFyRmlsdGVySXRlbVNwbGl0IikgJV0KICAgICAgICAgICAgLQpbJSBSZW5kZXJCbG9ja0VuZCgiU2lkZUJhckZpbHRlckl0ZW1TcGxpdCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJTaWRlQmFyRmlsdGVySXRlbSIpICVdCiAgICAgICAgPC91bD4KWyUgUmVuZGVyQmxvY2tFbmQoIlNpZGVCYXJGaWx0ZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTaWRlQmFyUGFnZUJhY2siKSAlXQogICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBpZD0iSVRTTUNvbmZpZ0l0ZW1TZWFyY2giIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua0JhY2sgJV0iPlslIFRyYW5zbGF0ZSgiQ2hhbmdlIHNlYXJjaCBvcHRpb25zIikgfCBodG1sICVdIFslIERhdGEuUHJvZmlsZU5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+ClslIFJlbmRlckJsb2NrRW5kKCJTaWRlQmFyUGFnZUJhY2siKSAlXQogICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGaWx0ZXJzIikgJV0KCiAgICA8ZGl2IGlkPSJPdmVydmlld0JvZHkiIGNsYXNzPSJPdmVydmlldyBDb25maWdJdGVtTGlzdCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vQ29uZmlnSXRlbUZvdW5kIikgJV0KICAgICAgICA8ZGl2IGlkPSJFbXB0eU1lc3NhZ2VTbWFsbCI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vQ29uZmlnSXRlbUZvdW5kIikgJV0KCiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9Im1hdHJpeCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrIi8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNvbmZpZ0l0ZW1JRCIgdmFsdWU9IiIvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMYXN0Q29sdW1uRmlsdGVyIiBpZD0iTGFzdENvbHVtbkZpbHRlciIgdmFsdWU9IlslIERhdGEuTGFzdENvbHVtbkZpbHRlciB8IGh0bWwgJV0iLz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdUYWJsZSIpICVdCiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iVGFibGVTbWFsbCBOb0NlbGxzcGFjaW5nIj4KICAgICAgICAgICAgICAgIFslIERhdGEuU3R5bGVDbGFzc2VzICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRhYmxlSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dHI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQnVsa05hdkJhciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hlY2tib3giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iQ2hlY2tib3giIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlbGVjdCBhbGwiKSB8IGh0bWwgJV0iIGlkPSJTZWxlY3RBbGxDb25maWdJdGVtcyIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJCdWxrTmF2QmFyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iT3ZlcnZpZXdIZWFkZXIgWyUgRGF0YS5DU1MgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgfCB1cmkgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9WyUgRGF0YS5OYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2VtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZ0xpbmsiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VGbGFnRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VGbGFnRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb25maWdJdGVtSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1OdW1iZXI7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iT3ZlcnZpZXdIZWFkZXIgWyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1lIHwgaHRtbCAlXSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rVXNlclNlYXJjaCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iVXNlckF1dG9Db21wbGV0ZSIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtVc2VyU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1bJSBEYXRhLkNvbHVtbk5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlckxpbmsiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PVslIERhdGEuQ29sdW1uTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluayIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5FbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkVtcHR5IikgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29uZmlnSXRlbUhlYWRlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik92ZXJ2aWV3SGVhZGVyIFslIERhdGEuSGVhZGVyQ29sdW1uTmFtZSB8IGh0bWwgJV0gRHluYW1pY0ZpZWxkIExhc3QgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkU29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZFNvcnRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkTm90U29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZEZpbHRyYWJsZVNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlU29ydGFibGUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZmlsdGVyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciBEb250UHJpbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuTGFiZWwgfCBodG1sICVdPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCIpICVdCgpbJSBSZW5kZXJCbG9ja0VuZCgiR2VuZXJhbE92ZXJ2aWV3SGVhZGVyIikgJV0KCiMgZXhhbXBsZSBvZiBob3cgdG8gdXNlIGZpeGVkIGR5bmFtaWMgZmllbGQgYmxvY2tzIGZvciBjdXN0b21pemF0aW9ucwojIE5vdGU6IEZpZWxkMSBhbmQgRmllbGQyIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGZpZWxkcyBhbmQgaGFkIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbAojIGZpZWxkIG5hbWVzCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxIikgJV0KIyAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEeW5hbWljRmllbGQgTGFzdCBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMV9Tb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMV9Tb3J0YWJsZSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxX05vdFNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L3NwYW4+CiNbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMV9Ob3RTb3J0YWJsZSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxX0ZpbHRyYWJsZVNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgojICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgojICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PUR5bmFtaWNGaWVsZF9bJSBEYXRhLkR5bmFtaWNGaWVsZE5hbWUgfCB1cmkgJV07T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj5bJSBEYXRhLkxhYmVsIHwgaHRtbCAlXTwvYT4KI1slIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQxX0ZpbHRyYWJsZVNvcnRhYmxlIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDFfRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZmlsdGVyIj48L2k+CiMgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciBEb250UHJpbnQiPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJHcmF5IiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPlslIERhdGEuTGFiZWwgfCBodG1sICVdPC9zcGFuPgojWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDFfRmlsdHJhYmxlTm90U29ydGFibGUiKSAlXQojICAgICAgICAgICAgICAgICAgICA8L3RoPgojWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDEiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMiIpICVdCiMgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRHluYW1pY0ZpZWxkIExhc3QgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KI1slIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDJfU29ydGFibGUiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9hPgojWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDJfU29ydGFibGUiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMl9Ob3RTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdPC9zcGFuPgojWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZF9GaWVsZDJfTm90U29ydGFibGUiKSAlXQojWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMl9GaWx0cmFibGVTb3J0YWJsZSIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NUcmlnZ2VyIiB0aXRsZT0iWyUgRGF0YS5GaWx0ZXJUaXRsZSB8IGh0bWwgJV0iPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1maWx0ZXIiPjwvaT4KIyAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KIyAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQ29udGFpbmVyIERvbnRQcmludCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NCb3giPgojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbHVtbkZpbHRlclN0cmcgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1EeW5hbWljRmllbGRfWyUgRGF0YS5EeW5hbWljRmllbGROYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5MYWJlbCB8IGh0bWwgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkX0ZpZWxkMl9GaWx0cmFibGVTb3J0YWJsZSIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQyX0ZpbHRyYWJsZU5vdFNvcnRhYmxlIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgojICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgojICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiMgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkxhYmVsIHwgaHRtbCAlXTwvc3Bhbj4KI1slIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQyX0ZpbHRyYWJsZU5vdFNvcnRhYmxlIikgJV0KI1slIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfRmllbGQyIikgJV0KIyAgICAgICAgICAgICAgICAgICAgPC90aD4KCiAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgIDwvdGhlYWQ+ClslIFJlbmRlckJsb2NrRW5kKCJUYWJsZUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRhYmxlQm9keSIpICVdCiAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRyIGlkPSJDb25maWdJdGVtSURfWyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJCdWxrIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDaGVja2JveCBOb25UZXh0Q29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9IkNoZWNrYm94IiB0eXBlPSJjaGVja2JveCIgbmFtZT0iQ29uZmlnSXRlbUlEIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWxlY3QgdGhpcyBjb25maWcgaXRlbSIpIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXSIgIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiQnVsayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljUm93TWV0YSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iWyUgRGF0YS5DbGFzc1RhYmxlIHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGFJbWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSBTbWFsbCIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkNsYXNzU3BhbiB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3RhciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0+WyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGFJbWFnZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY1Jvd01ldGEiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbURhdGEiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDdXJEZXBsU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckRlcGxTaWduYWwgfCBodG1sICVdIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48cCBjbGFzcz0iRmxhZ2dlZE5hbWUiPlslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VyRGVwbFN0YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3VySW5jaVN0YXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGbGFnIFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5DdXJJbmNpU2lnbmFsIHwgaHRtbCAlXSI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PHAgY2xhc3M9IkZsYWdnZWROYW1lIj5bJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZEN1ckluY2lTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENvbmZpZ0l0ZW1DcmVhdGVkQnkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlVzZXJGdWxsbmFtZSB8IGh0bWwgJV0gKFslIERhdGEuVXNlckxvZ2luIHwgaHRtbCAlXSkiPlslIERhdGEuVXNlckZ1bGxuYW1lIHwgdHJ1bmNhdGUoNTApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbUNyZWF0ZWRCeSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgdHJ1bmNhdGUoMTAwKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW4iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDb25maWdJdGVtQ29sdW1uVHJhbnNsYXRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuR2VuZXJpY1ZhbHVlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkdlbmVyaWNWYWx1ZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtQ29sdW1uVHJhbnNsYXRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtblRpbWUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtblRpbWUiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbURhdGEiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJEeW5hbWljRmllbGRMaW5rIj5bJSBEYXRhLlZhbHVlICVdPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkTGluayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZFBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbHVlICVdClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZCIpICVdCgpbJSBSZW5kZXJCbG9ja0VuZCgiR2VuZXJhbE92ZXJ2aWV3Um93IikgJV0KCiMgZXhhbXBsZSBvZiBob3cgdG8gdXNlIGZpeGVkIGR5bmFtaWMgZmllbGQgYmxvY2tzIGZvciBjdXN0b21pemF0aW9ucwojIE5vdGU6IEZpZWxkMSBhbmQgRmllbGQyIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGZpZWxkcyBhbmQgaGFkIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlIGFjdHVhbAojIGZpZWxkIG5hbWVzCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxIikgJV0KIyAgICAgICAgICAgICAgICAgICAgPHRkPgojICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgojWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMV9MaW5rIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJEeW5hbWljRmllbGRMaW5rIj5bJSBEYXRhLlZhbHVlICVdPC9hPgojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDFfTGluayIpICVdCiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxX1BsYWluIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZhbHVlICVdCiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMV9QbGFpbiIpICVdCiMgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KIyAgICAgICAgICAgICAgICAgICAgPC90ZD4KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQxIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQojICAgICAgICAgICAgICAgICAgICA8dGQ+CiMgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+CiNbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQyX0xpbmsiKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+CiNbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkX0ZpZWxkMl9MaW5rIikgJV0KI1slIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDJfUGxhaW4iKSAlXQojICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsdWUgJV0KI1slIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRfRmllbGQyX1BsYWluIikgJV0KIyAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgojICAgICAgICAgICAgICAgICAgICA8L3RkPgojWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZER5bmFtaWNGaWVsZF9GaWVsZDIiKSAlXQoKICAgICAgICAgICAgICAgICAgICA8L3RyPgoKWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZCIpICVdCiAgICAgICAgICAgICAgICA8L3Rib2R5PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGFibGVCb2R5IikgJV0KICAgICAgICAgICAgPC90YWJsZT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3VGFibGUiKSAlXQogICAgICAgIDwvZm9ybT4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50Q29udGVudCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudENvbHVtbkZpbHRlckZvcm0iKSAlXQo8Zm9ybSB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDb2x1bW4gRmlsdGVycyBGb3JtIikgfCBodG1sICVdIiBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgfCBodG1sICVdIiBtZXRob2Q9InBvc3QiIG5hbWU9IkNvbHVtbkZpbHRlckF0dHJpYnV0ZXMiIGlkPSJDb2x1bW5GaWx0ZXJBdHRyaWJ1dGVzIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCIpICVdCiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJbJSBEYXRhLkVsZW1lbnROYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuRWxlbWVudFZhbHVlIHwgaHRtbCAlXSIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCIpICVdCjwvZm9ybT4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50Q29sdW1uRmlsdGVyRm9ybSIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemSearch.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hBSkFYIikgJV0KPGRpdiBjbGFzcz0iSW5uZXJDb250ZW50Ij4KICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPGxhYmVsIGZvcj0iQ2xhc3MiPlslIFRyYW5zbGF0ZSgiQ2xhc3MiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIiBpZD0nRGl2Q2xhc3NJRCc+CiAgICAgICAgICAgIFslIERhdGEuQ2xhc3NPcHRpb25TdHJnICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2ZpZWxkc2V0Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9IklubmVyQ29udGVudCIgaWQ9IkFKQVhVcGRhdGUiPgoKICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBpZD0iU2VhcmNoRm9ybSI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgaWQ9IlNlYXJjaEFjdGlvbiIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNsYXNzSUQiIHZhbHVlPSJbJSBEYXRhLkNsYXNzSUQgfCBodG1sICVdIiBpZD0iU2VhcmNoQ2xhc3NJRCIvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlNlYXJjaCIvPgoKICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSdJVFNNU2VhcmNoUHJvZmlsZSc+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgPGxlZ2VuZD48c3Bhbj5bJSBUcmFuc2xhdGUoIlRlbXBsYXRlcyIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2VhcmNoUHJvZmlsZSI+WyUgVHJhbnNsYXRlKCJTZWFyY2ggdGVtcGxhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgaWQ9IlNlYXJjaFByb2ZpbGUiIG5hbWU9IlNlYXJjaFByb2ZpbGUiIHZhbHVlPSJbJSBEYXRhLlByb2ZpbGUgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJTZWFyY2hQcm9maWxlQWRkQmxvY2siPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJQcm9maWxlTmFtZSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGROYW1lIi8+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgdHlwZT0iYnV0dG9uIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDcmVhdGUgVGVtcGxhdGUiKSB8IGh0bWwgJV0iIGlkPSJTZWFyY2hQcm9maWxlQWRkQWN0aW9uIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkFkZCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTYXZlUHJvZmlsZSIgdmFsdWU9IjEiLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU2VhcmNoUHJvZmlsZU5ldyIgY2xhc3M9IkNhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZSBOZXciKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ3JlYXRlIE5ldyIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVEZWxldGUiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVBc0xpbmsiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiUHJvZmlsZSBsaW5rIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlByb2ZpbGUgbGluayIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9maWVsZHNldD4KCiAgICA8L2Zvcm0+CjwvZGl2PgoKPGRpdiBjbGFzcz0iQ29udGVudEZvb3RlciBDZW50ZXIiPgogICAgPGJ1dHRvbiBpZD0iU2VhcmNoRm9ybVN1Ym1pdCIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSBIaWRkZW4iIHZhbHVlPSJSdW4gU2VhcmNoIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtc2VhcmNoIj48L2k+WyUgVHJhbnNsYXRlKCJSdW4gU2VhcmNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaEFKQVgiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQUpBWENvbnRlbnQiKSAlXQo8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IlNlYXJjaEZvcm0iPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgaWQ9IlNlYXJjaEFjdGlvbiIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDbGFzc0lEIiB2YWx1ZT0iWyUgRGF0YS5DbGFzc0lEIHwgaHRtbCAlXSIgaWQ9IlNlYXJjaENsYXNzSUQiPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2VhcmNoRGlhbG9nIiB2YWx1ZT0nMSc+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbXB0eVNlYXJjaCIgdmFsdWU9IlslIERhdGEuRW1wdHlTZWFyY2ggfCBodG1sICVdIiBpZD0iRW1wdHlTZWFyY2giLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlNob3duQXR0cmlidXRlcyIgdmFsdWU9IiIgaWQ9IlNob3duQXR0cmlidXRlcyI+CiAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSdJVFNNU2VhcmNoUHJvZmlsZSc+CiAgICAgICAgPGxlZ2VuZD48c3Bhbj5bJSBUcmFuc2xhdGUoIlRlbXBsYXRlcyIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICA8bGFiZWwgZm9yPSJTZWFyY2hQcm9maWxlIj5bJSBUcmFuc2xhdGUoIlNlYXJjaCB0ZW1wbGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgWyUgRGF0YS5Qcm9maWxlc1N0cmcgJV0KICAgICAgICAgICAgPGRpdiBpZD0iU2VhcmNoUHJvZmlsZUFkZEJsb2NrIj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJQcm9maWxlTmFtZSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGROYW1lIi8+CiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIiB0eXBlPSJidXR0b24iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZSBUZW1wbGF0ZSIpIHwgaHRtbCAlXSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGRBY3Rpb24iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVOZXciIGNsYXNzPSJDYWxsRm9yQWN0aW9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJDcmVhdGUgTmV3IikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkNyZWF0ZSBOZXciKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVEZWxldGUiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU2VhcmNoUHJvZmlsZUFzTGluayIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gSGlkZGVuIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJQcm9maWxlIGxpbmsiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiUHJvZmlsZSBsaW5rIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJTYXZlIGNoYW5nZXMgaW4gdGVtcGxhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iU2F2ZVByb2ZpbGUiIGlkPSJTYXZlUHJvZmlsZSIgdmFsdWU9IjEiLz4KICAgICAgICA8L2Rpdj4KICAgIDwvZmllbGRzZXQ+CgogICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgSGlkZGVuIiBpZD0nSVRTTVNlYXJjaEZpZWxkcyc+CiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiIGlkPSJTZWFyY2hJbnNlcnQiPgogICAgICAgICAgICA8bGVnZW5kPjxzcGFuPlslIFRyYW5zbGF0ZSgiRmlsdGVycyBpbiB1c2UiKSB8IGh0bWwgJV08L3NwYW4+PC9sZWdlbmQ+CiAgICAgICAgPC9maWVsZHNldD4KICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgIDxsZWdlbmQ+PHNwYW4+WyUgVHJhbnNsYXRlKCJBZGRpdGlvbmFsIGZpbHRlcnMiKSB8IGh0bWwgJV08L3NwYW4+PC9sZWdlbmQ+CiAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkFkZCBhbm90aGVyIGF0dHJpYnV0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkF0dHJpYnV0ZXNTdHJnICVdCiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8bGFiZWwgZm9yPSJQcmV2aW91c1ZlcnNpb25TZWFyY2giPlslIFRyYW5zbGF0ZSgiQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/IikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5QcmV2aW91c1ZlcnNpb25PcHRpb25TdHJnICVdCiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJPdXRwdXQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5SZXN1bHRGb3JtU3RyZyAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2ZpZWxkc2V0PgogICAgPC9maWVsZHNldD4KPC9mb3JtPgo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSJTZWFyY2hBdHRyaWJ1dGVzSGlkZGVuIj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxsYWJlbCBmb3I9Ik51bWJlciIgaWQ9IkxhYmVsTnVtYmVyIj5bJSBUcmFuc2xhdGUoIk51bWJlciIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIihlLiBnLiAxMCo1MTU1IG9yIDEwNTY1OCopIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik51bWJlciIgdmFsdWU9IlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIiAvPgogICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPGxhYmVsIGZvcj0iTmFtZSIgaWQ9IkxhYmVsTmFtZSI+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5hbWUiIHZhbHVlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8bGFiZWwgZm9yPSJEZXBsU3RhdGVJRHMiIGlkPSJMYWJlbERlcGxTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJEZXBsb3ltZW50IFN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgWyUgRGF0YS5DdXJEZXBsU3RhdGVPcHRpb25TdHJnICVdCiAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8bGFiZWwgZm9yPSJJbmNpU3RhdGVJRHMiIGlkPSJMYWJlbEluY2lTdGF0ZUlEcyI+WyUgVHJhbnNsYXRlKCJJbmNpZGVudCBTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgIFslIERhdGEuQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGQiKSAlXQogICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgWyUgRGF0YS5MYWJlbCAlXQogICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dHJpYnV0ZVJvdyIpICVdCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8bGFiZWwgZm9yPSJbJSBUcmFuc2xhdGUoRGF0YS5LZXkpIHwgaHRtbCAlXSIgaWQ9IkxhYmVsWyUgRGF0YS5LZXkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5EZXNjcmlwdGlvbikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICBbJSBEYXRhLklucHV0U3RyaW5nICVdCiAgICAgICAgPGEgY2xhc3M9IlJlbW92ZUJ1dHRvbiIgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHRoaXMgZW50cnkiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkF0dHJpYnV0ZVJvdyIpICVdCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICBbJSBEYXRhLkF0dHJpYnV0ZXNPcmlnU3RyZyAlXQo8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja0VuZCgiQUpBWENvbnRlbnQiKSAlXQo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemTreeView.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIiPgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8aDE+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0iKSB8IGh0bWwgJV06IFslIERhdGEuQ29uZmlnSXRlbU51bWJlciB8IGh0bWwgJV0g4oCUIFslIERhdGEuQ29uZmlnSXRlbU5hbWUgfCBodG1sICVdCiAgICAgICAgPC9oMT4KICAgICAgICA8cD4KICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9IlRyZWVWaWV3Q2xvc2VMaW5rIj5bJSBUcmFuc2xhdGUoIkNsb3NlIHRoaXMgZGlhbG9nIikgfCBodG1sICVdPC9hPgogICAgICAgIDwvcD4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4gU3BhY2luZ1RvcCI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIiBpZD0iV2lkZ2V0Q29udGFpbmVyIj4KCiAgICAgICAgICAgIDxmb3JtIG5hbWU9IlRyZWVWaWV3IiBpZD0iVHJlZVZpZXciPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ29uZmlnSXRlbUlEIiAgICAgICAgaWQ9IkNvbmZpZ0l0ZW1JRCIgICAgICAgIHZhbHVlPSJbJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iVmVyc2lvbklEIiAgICAgICAgICAgaWQ9IlZlcnNpb25JRCIgICAgICAgICAgIHZhbHVlPSJbJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iT1RPQk9BZ2VudEludGVyZmFjZSIgaWQ9Ik9UT0JPQWdlbnRJbnRlcmZhY2UiIHZhbHVlPSJbJSBEYXRhLlNlc3Npb25JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2hvd0xpbmtMYWJlbHMiICAgICAgaWQ9IlNob3dMaW5rTGFiZWxzIiAgICAgIHZhbHVlPSJbJSBEYXRhLlNob3dMaW5rTGFiZWxzIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMYXN0Wm9vbSIgICAgICAgICAgICBpZD0iTGFzdFpvb20iICAgICAgICAgICAgdmFsdWU9IjEwMCI+CiAgICAgICAgICAgIDwvZm9ybT4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRyb2xSb3cgQ29udGFpbmVyQmFyIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvd1RpdGxlIj48aSBjbGFzcz0iZmEgZmEtc2l0ZW1hcCI+PC9pPiBbJSBUcmFuc2xhdGUoIlRyZWUgVmlldyIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iT3B0Q29udGFpbmVyIENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGlkPSJEZXB0aExhYmVsIj5bJSBUcmFuc2xhdGUoIkRlcHRoIExldmVsIikgfCBodG1sICVdOiA8L2xhYmVsPiAgPGlucHV0IHR5cGU9Im51bWJlciIgbmFtZT0iRGVwdGgiIGlkPSJEZXB0aCIgbWluPSIxIiBtYXg9IjEwIiB2YWx1ZT0iWyUgRGF0YS5EZXB0aCB8IGh0bWwgJV0iIGNsYXNzPSJPcHREZXB0aCI+CiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGlkPSJab29tSW5PdXRMYWJlbCI+WyUgVHJhbnNsYXRlKCJab29tIEluL091dCIpIHwgaHRtbCAlXTogPC9sYWJlbD4gPGlucHV0IHR5cGU9Im51bWJlciIgbmFtZT0iWm9vbSIgaWQ9Ilpvb20iIG1pbj0iMjAiIG1heD0iMjAwIiBzdGVwPSIxMCIgdmFsdWU9IjEwMCI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgaWQ9IkFKQVhMb2FkZXJEZXB0aCIgY2xhc3M9IkFKQVhMb2FkZXIgSGlkZGVuIj48L2Rpdj4KICAgICAgICAgICAgPGRpdiBpZD0iVHJlZVZpZXdNZXNzYWdlcyIgY2xhc3M9IlRyZWVWaWV3TWVzc2FnZXMgQ2VudGVyIEhpZGRlbiI+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iQ2VudGVyIFRyZWVWaWV3TWVzc2FnZSI+WyUgVHJhbnNsYXRlKCJNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEiKSB8IGh0bWwgICVdPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGFpbmVyQ2FudmFzIiBpZD0iQ2FudmFzIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemZoom.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJDbGVhckxlZnQiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iSGVhZGxpbmUiPgogICAgICAgIDxkaXYgY2xhc3M9IkZsYWciIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckluY2lTaWduYWwgfCBodG1sICVdIj48L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGgxIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNvbmZpZ3VyYXRpb24gSXRlbSIpIHwgaHRtbCAlXTogWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdICZuZGFzaDsgWyUgRGF0YS5OYW1lIHwgdHJ1bmNhdGUoNDApIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ29uZmlndXJhdGlvbiBJdGVtIikgfCBodG1sICVdOiBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0gPHNwYW4+Jm1kYXNoOzwvc3Bhbj4gWyUgRGF0YS5OYW1lIHwgdHJ1bmNhdGUoNjApIHwgaHRtbCAlXQogICAgICAgIDwvaDE+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CgogICAgICAgIFslIERhdGEuU3R5bGVDbGFzc2VzICVdCgogICAgICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNZXRhIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNob3cgb3IgaGlkZSB0aGUgY29udGVudCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIFRpZ2h0Ij4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNsYXNzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+WyUgVHJhbnNsYXRlKERhdGEuQ2xhc3MpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuTmFtZSB8IHRydW5jYXRlKDI1KSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkN1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJWYWx1ZSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckRlcGxTaWduYWwgfCBodG1sICVdIj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDdXJyZW50IEluY2lkZW50IFN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ3VySW5jaVN0YXRlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmxhZyBTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlslIERhdGEuQ3VySW5jaVNpZ25hbCB8IGh0bWwgJV0iPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuQ3VySW5jaVN0YXRlKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCBieSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DcmVhdGVCeVVzZXJGdWxsTmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJMYXN0IGNoYW5nZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNoYW5nZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFzdCBjaGFuZ2VkIGJ5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNoYW5nZUJ5VXNlckZ1bGxOYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dGFjaG1lbnRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQXR0YWNobWVudHMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249RG93bmxvYWRBdHRhY2htZW50O0ZpbGVuYW1lPVslIERhdGEuRmlsZW5hbWUgfCB1cmkgJV07Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkZpbGVuYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFslIERhdGEuRmlsZXNpemUgfCBMb2NhbGl6ZSgnRmlsZXNpemUnKSB8IGh0bWwgJV0pClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50cyIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk1ldGEiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMaW5rVGFibGVTaW1wbGUiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlua2VkIE9iamVjdHMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxpbmtUYWJsZVN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkxpbmtUYWJsZVNpbXBsZSIpICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRyb2xSb3ciPgogICAgICAgICAgICAgICAgPGgyPjwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25zIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTWVudSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk1lbnVJdGVtIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXVslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIiBpZD0iTWVudVslIERhdGEuTWVudUlEIHwgaHRtbCAlXSIgY2xhc3M9IlslIERhdGEuTWVudUNsYXNzIHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkRlc2NyaXB0aW9uKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiTWVudUl0ZW0iKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiTWVudSIpICVdCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VsZWN0aW9uUm93IikgJV0KICAgICAgICAgICAgPGRpdiBpZD0iU2VsZWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlBhZ2VTZWxlY3Rpb24iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdlTmFtZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZShEYXRhLlBhZ2VOYW1lKSB8IGh0bWwgJV08L2gyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnZU5hbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdlTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgdXJpICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IHVyaSAlXTtQYWdlPVslIERhdGEuUGFnZU5hbWUgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJvb29TIFBhZ2VTZWxlY3Rpb25CdXR0b24gQ2FsbEZvckFjdGlvblslIElGIERhdGEuRGlzYWJsZWQgJV0gRGlzYWJsZWRbJSBFTFNJRiBEYXRhLlNlbGVjdGVkICVdIFNlbGVjdGVkWyUgRU5EICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5QYWdlTmFtZSkgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUGFnZUxpbmsiKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCIgaWQ9IlZlcnNpb25TZWxlY3Rpb25Db250YWluZXIiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmVyc2lvblNlbGVjdGlvbiAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VsZWN0aW9uUm93IikgJV0KICAgICAgICAgICAgPGRpdiBpZD0iSVRTTUl0ZW1zIj4KICAgICAgICAgICAgICAgIFslIERhdGEuRHluYW1pY0ZpZWxkSFRNTCAlXQogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTGlua1RhYmxlQ29tcGxleCIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5MaW5rVGFibGVTdHJnICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTGlua1RhYmxlQ29tcGxleCIpICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgPC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/ConfigItemTreeView/ConfigItemTreeViewGraph.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSJTZWN0aW9uQ29udGFpbmVyIj4KCiAgICA8ZGl2IGNsYXNzPSJDaGlsZENvbnRhaW5lciI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNoaWxkU291cmNlRWxlbWVudHNMZXZlbCIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNoaWxkQ29udGFpbmVyIiBpZD0iU291cmNlTGV2ZWxbJURhdGEuTGV2ZWwgfCBodG1sJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDaGlsZFNvdXJjZUVsZW1lbnRzIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJCb3giIGlkPSJbJSBEYXRhLklEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1JbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1UaXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV07T1RPQk9BZ2VudEludGVyZmFjZT1bJSBEYXRhLlNlc3Npb25JRCB8IHVyaSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJab29tTGluayI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFkZGl0aW9uYWxJbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnRzICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDaGlsZFNvdXJjZUVsZW1lbnRzIikgJV0KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDaGlsZFNvdXJjZUVsZW1lbnRzTGV2ZWwiKSAlXQogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ2hpbGRDb250YWluZXIiIGlkPSJPcmlnaW4iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPcmlnaW5FbGVtZW50IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQm94IiBpZD0iWyUgRGF0YS5JRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29uZmlnSXRlbUluZm8iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1UaXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQWRkaXRpb25hbEluZm8iPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnRzICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPcmlnaW5FbGVtZW50IikgJV0KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNoaWxkQ29udGFpbmVyIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ2hpbGRUYXJnZXRFbGVtZW50c0xldmVsIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNoaWxkQ29udGFpbmVyIiBpZD0iVGFyZ2V0TGV2ZWxbJURhdGEuTGV2ZWwgfCBodG1sJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDaGlsZFRhcmdldEVsZW1lbnRzIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJCb3giIGlkPSJbJSBEYXRhLklEIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1JbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbmZpZ0l0ZW1UaXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV07T1RPQk9BZ2VudEludGVyZmFjZT1bJSBEYXRhLlNlc3Npb25JRCB8IHVyaSAlXSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJab29tTGluayI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFkZGl0aW9uYWxJbmZvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbnRlbnRzICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDaGlsZFRhcmdldEVsZW1lbnRzIikgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ2hpbGRUYXJnZXRFbGVtZW50c0xldmVsIikgJV0KCiAgICA8L2Rpdj4KCjwvZGl2Pgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJNYXhEZXB0aCIgICAgICAgaWQ9Ik1heERlcHRoIiAgICAgICB2YWx1ZT0iWyUgRGF0YS5NYXhEZXB0aCB8IGh0bWwgJV0iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMaW5rRGF0YVNvdXJjZSIgaWQ9IkxpbmtEYXRhU291cmNlIiB2YWx1ZT0iWyUgRGF0YS5MaW5rRGF0YVNvdXJjZSB8IGh0bWwgJV0iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJMaW5rRGF0YVRhcmdldCIgaWQ9IkxpbmtEYXRhVGFyZ2V0IiB2YWx1ZT0iWyUgRGF0YS5MaW5rRGF0YVRhcmdldCB8IGh0bWwgJV0iPgoKIDxkaXYgY2xhc3M9IlNwYWNlclRyZWUiPjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/CustomerITSMConfigItem.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSdvb29Db250ZW50Jz4KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiWW91ciBDb25maWdJdGVtcyIpIHwgaHRtbCAlXTwvaDE+ClslIFJlbmRlckJsb2NrU3RhcnQoIlNlYXJjaEJveCIpICVdCiAgICAgICAgPGRpdiBpZD0ib29vU2VhcmNoQm94Ij4KICAgICAgICA8L2Rpdj4KICAgICAgICA8YSBpZD0nb29vSGVhZGVyQnV0dG9uJyBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaDtGaWx0ZXI9MTtWaWV3PVNtYWxsO1NvcnRCeT1BZ2U7T3JkZXJCeT1VcCIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIiBhY2Nlc3NrZXk9IlslIERhdGEuQWNjZXNzS2V5IHwgaHRtbCAlXSI+PGJ1dHRvbj48c3Bhbj4gWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+PC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VhcmNoQm94IikgJV0KICAgIDwvZGl2PgogICAgPGRpdiBpZD0nb29vTWFpbkJveCc+CiAgICAgICAgPGRpdiBpZD0nb29vSVRTTUNvbmZpZ0l0ZW1MaXN0SGVhZGVyJz4KWyUgSUYgRW52KCJTdWJhY3Rpb24iKSA9PSAnU2VhcmNoJyAlXQogICAgICAgICAgICA8cCBjbGFzcz0ib29vMTIgb29vbCBTZWxlY3RlZCI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTogICJbJSBEYXRhLkZ1bGx0ZXh0IHwgaHRtbCAlXSIKICAgICAgICAgICAgPC9wPgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRmlsdGVySGVhZGVyIikgJV0KICAgICAgICAgICAgPGEgY2xhc3M9IlslIERhdGEuQ2xhc3NBIHwgaHRtbCAlXSBvb28xMmcgb29vbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVslIEVudigiU3ViYWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO1NvcnRCeT1bJSBEYXRhLlNvcnRCeSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXVslIERhdGEuQ3VzdG9tZXJJRHMgJV07RnVsbHRleHQ9WyUgRGF0YS5GdWxsdGV4dCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0gKFslIERhdGEuQ291bnQgfCBodG1sICVdKQogICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJGaWx0ZXJIZWFkZXIiKSAlXQpbJSBJRiBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0ib29vMTJnIG9vb3IiPgogICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgWyUgRGF0YS5TaXRlTmF2QmFyICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBFTkQgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRmlsdGVyRGVsZXRlIikgJV0KICAgICAgICAgICAgPGRpdiBpZD0ib29vSVRTTUNvbmZpZ0l0ZW1GaWx0ZXJEZWxldGUiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO0RlbGV0ZUZpbHRlcnM9RGVsZXRlRmlsdGVycyI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJSZXNldCBvdmVydmlldyIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJvb29mbyBvb29mby1kZWxldGVfb3V0bCI+PC9pPgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkZpbHRlckRlbGV0ZSIpICVdCiMgICAgICAgICAgICA8cCBjbGFzcz0ib29vMTJnIG9vb2wiPlslIERhdGEuSVRTTUNvbmZpZ0l0ZW1Db3VudCB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKCJDb25maWdJdGVtcyIpIHwgaHRtbCAlXTwvcD4KIyAgICAgICAgICAgIDxwIGNsYXNzPSJvb28xMmcgb29vbCI+WyUgVHJhbnNsYXRlKCJTb3J0IikgfCBodG1sICVdPC9wPgojICAgICAgICAgICAgPHAgY2xhc3M9Im9vbzEyZyBvb29yIj5bJSBUcmFuc2xhdGUoIkZpbHRlciIpIHwgaHRtbCAlXTwvcD4KIyAgICAgICAgICAgIDxwIGNsYXNzPSJvb28xMmcgb29vciI+WyUgVHJhbnNsYXRlKCJQYWdlIikgfCBodG1sICVdPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIFslIERhdGEuSVRTTUNvbmZpZ0l0ZW1MaXN0SFRNTCAlXQogICAgPC9kaXY+CjwvZGl2Pgo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/CustomerITSMConfigItemOverviewSmall.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgY2xhc3M9Im9vb0NvbmZpZ0l0ZW1MaXN0Ij4KICAgIDxkaXYgY2xhc3M9Im9vb0NvbmZpZ0l0ZW1MaXN0U2Nyb2xsQ29udGFpbmVyIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb250ZW50IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9Db25maWdJdGVtRm91bmQiKSAlXQogICAgICAgIDxkaXYgaWQ9IkVtcHR5TWVzc2FnZVNtYWxsIj4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9Db25maWdJdGVtRm91bmQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld1RhYmxlIikgJV0KICAgICAgICA8dGFibGUgY2xhc3M9IlRhYmxlU21hbGwgTm9DZWxsc3BhY2luZyI+CiAgICAgICAgICAgIFslIERhdGEuU3R5bGVDbGFzc2VzICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlRhYmxlSGVhZGVyIikgJV0KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZyIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRmxhZ0xpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpIHwgdXJpICVdO1slIERhdGEuTGlua1NvcnQgJV07U29ydEJ5PVslIERhdGEuTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2VtPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VGbGFnTGluayIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdFbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJQcmludE9ubHkiPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWdFbXB0eSIpICVdCiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUZsYWciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb25maWdJdGVtSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ3VyRGVwbFNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDdXJEZXBsU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ3VySW5jaVNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIERhdGEuQ29sdW1uTmFtZVRyYW5zbGF0ZWQgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDdXJJbmNpU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik92ZXJ2aWV3SGVhZGVyIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9TnVtYmVyO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJPdmVydmlld0hlYWRlciBbJSBEYXRhLkhlYWRlckNvbHVtbk5hbWUgfCBodG1sICVdIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkZpbHRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZmlsdGVyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbHVtbkZpbHRlclN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9IkNvbHVtblNldHRpbmdzVHJpZ2dlciIgdGl0bGU9IlslIERhdGEuRmlsdGVyVGl0bGUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1maWx0ZXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0NvbnRhaW5lciBEb250UHJpbnQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NCb3giPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ29sdW1uRmlsdGVyU3RyZyAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkZpbHRlckxpbmtVc2VyU2VhcmNoIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9IlVzZXJBdXRvQ29tcGxldGUiIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXJMaW5rVXNlclNlYXJjaCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9WyUgRGF0YS5Db2x1bW5OYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uTGluayIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9WyUgRGF0YS5Db2x1bW5OYW1lIHwgdXJpICVdO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXSI+WyUgRGF0YS5Db2x1bW5OYW1lVHJhbnNsYXRlZCB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VDb2x1bW5MaW5rIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRW1wdHkiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iR3JheSIgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLkNvbHVtbk5hbWVUcmFuc2xhdGVkIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkVtcHR5IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUNvbmZpZ0l0ZW1IZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iT3ZlcnZpZXdIZWFkZXIgWyUgRGF0YS5IZWFkZXJDb2x1bW5OYW1lIHwgaHRtbCAlXSBEeW5hbWljRmllbGQgTGFzdCBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9RHluYW1pY0ZpZWxkX1slIERhdGEuRHluYW1pY0ZpZWxkTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRTb3J0YWJsZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZE5vdFNvcnRhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlU29ydGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NUcmlnZ2VyIiB0aXRsZT0iWyUgRGF0YS5GaWx0ZXJUaXRsZSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQ29udGFpbmVyIERvbnRQcmludCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb2x1bW5TZXR0aW5nc0JveCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Db2x1bW5GaWx0ZXJTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9RHluYW1pY0ZpZWxkX1slIERhdGEuRHluYW1pY0ZpZWxkTmFtZSB8IHVyaSAlXTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVTb3J0YWJsZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVOb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJDb2x1bW5TZXR0aW5nc1RyaWdnZXIiIHRpdGxlPSJbJSBEYXRhLkZpbHRlclRpdGxlIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZmlsdGVyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29sdW1uU2V0dGluZ3NDb250YWluZXIgRG9udFByaW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbHVtblNldHRpbmdzQm94Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvbHVtbkZpbHRlclN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkdyYXkiIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5MYWJlbCB8IGh0bWwgJV08L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRGaWx0cmFibGVOb3RTb3J0YWJsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmFsT3ZlcnZpZXdIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90aGVhZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlRhYmxlSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiVGFibGVCb2R5IikgJV0KICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmQiKSAlXQogICAgICAgICAgICAgICAgPHRyIGlkPSJDb25maWdJdGVtSURfWyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkdlbmVyYWxPdmVydmlld1JvdyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDb25maWdJdGVtRGF0YSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEN1ckRlcGxTaWduYWwiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBbJSBJRiBEYXRhLlN0YXRpY0NvbHVtbiAlXWNsYXNzPSJTdGF0aWNDb2x1bW4iIFslIEVORCAlXXRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlslIERhdGEuQ3VyRGVwbFNpZ25hbCB8IGh0bWwgJV0iPiJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDdXJEZXBsU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3VySW5jaVNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlslIERhdGEuQ3VySW5jaVNpZ25hbCB8IGh0bWwgJV0iPiJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDdXJJbmNpU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgWyUgSUYgRGF0YS5TdGF0aWNDb2x1bW4gJV1jbGFzcz0iU3RhdGljQ29sdW1uIiBbJSBFTkQgJV0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1DdXN0b21lcklUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTnVtYmVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbUNyZWF0ZWRCeSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlVzZXJGdWxsbmFtZSB8IGh0bWwgJV0gKFslIERhdGEuVXNlckxvZ2luIHwgaHRtbCAlXSkiPlslIERhdGEuVXNlckZ1bGxuYW1lIHwgdHJ1bmNhdGUoNTApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtQ3JlYXRlZEJ5IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgdHJ1bmNhdGUoMTAwKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ29uZmlnSXRlbUNvbHVtbiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW5UcmFuc2xhdGFibGUiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBbJSBJRiBEYXRhLlN0YXRpY0NvbHVtbiAlXWNsYXNzPSJTdGF0aWNDb2x1bW4iIFslIEVORCAlXT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuR2VuZXJpY1ZhbHVlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkdlbmVyaWNWYWx1ZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENvbmZpZ0l0ZW1Db2x1bW5UcmFuc2xhdGFibGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDb25maWdJdGVtQ29sdW1uVGltZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIFslIElGIERhdGEuU3RhdGljQ29sdW1uICVdY2xhc3M9IlN0YXRpY0NvbHVtbiIgWyUgRU5EICVdPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkdlbmVyaWNWYWx1ZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSB8IGh0bWwgJV0iPlslIERhdGEuR2VuZXJpY1ZhbHVlIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtQ29sdW1uVGltZSIpICVdClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDb25maWdJdGVtRGF0YSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGQiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZCBbJSBJRiBEYXRhLlN0YXRpY0NvbHVtbiAlXWNsYXNzPSJTdGF0aWNDb2x1bW4iIFslIEVORCAlXT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREeW5hbWljRmllbGRMaW5rIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIERhdGEuTGluayB8IEludGVycG9sYXRlICVdIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9IkR5bmFtaWNGaWVsZExpbmsiPlslIERhdGEuVmFsdWUgJV08L2E+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREeW5hbWljRmllbGRMaW5rIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5WYWx1ZSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkUGxhaW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRHluYW1pY0ZpZWxkIikgJV0KClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmFsT3ZlcnZpZXdSb3ciKSAlXQogICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZCIpICVdCiAgICAgICAgICAgIDwvdGJvZHk+ClslIFJlbmRlckJsb2NrRW5kKCJUYWJsZUJvZHkiKSAlXQogICAgICAgIDwvdGFibGU+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld1RhYmxlIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50Q29udGVudCIpICVdCiAgICA8L2Rpdj4KPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEb2N1bWVudENvbHVtbkZpbHRlckZvcm0iKSAlXQo8Zm9ybSB0aXRsZT0iWyUgVHJhbnNsYXRlKCJDb2x1bW4gRmlsdGVycyBGb3JtIikgfCBodG1sICVdIiBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgfCBodG1sICVdIiBtZXRob2Q9InBvc3QiIG5hbWU9IkNvbHVtbkZpbHRlckF0dHJpYnV0ZXMiIGlkPSJDb2x1bW5GaWx0ZXJBdHRyaWJ1dGVzIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCIpICVdCiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJbJSBEYXRhLkVsZW1lbnROYW1lIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuRWxlbWVudFZhbHVlIHwgaHRtbCAlXSIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCIpICVdCjwvZm9ybT4KWyUgUmVuZGVyQmxvY2tFbmQoIkRvY3VtZW50Q29sdW1uRmlsdGVyRm9ybSIpICVdCg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/CustomerITSMConfigItemSearch.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSdvb29Db250ZW50Jz4KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiQ29uZmlnSXRlbSBTZWFyY2giKSB8IGh0bWwgJV08L2gxPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hCb3giKSAlXQogICAgICAgIDxkaXYgaWQ9Im9vb1NlYXJjaEJveCI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGEgaWQ9J29vb0hlYWRlckJ1dHRvbicgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2g7RmlsdGVyPTE7Vmlldz1TbWFsbDtTb3J0Qnk9QWdlO09yZGVyQnk9VXAiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSIgYWNjZXNza2V5PSJbJSBEYXRhLkFjY2Vzc0tleSB8IGh0bWwgJV0iPjxidXR0b24+PHNwYW4+IFslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPjwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaEJveCIpICVdCiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9J29vb01haW5Cb3gnPgogICAgICAgIDxkaXYgaWQ9Im9vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlciI+ClslIElGIERhdGEuU2l0ZU5hdkJhciAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvb28xMmcgb29vciI+CiAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlBhZ2UiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgPC9kaXY+ClslIEVORCAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hGb3JtIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJvb29JVFNNQ29uZmlnSXRlbVNlYXJjaCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb0lUU01Db25maWdJdGVtU2VhcmNoRm9ybSI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IlNlYXJjaEZvcm0iPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2hBY3Rpb24iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTZWFyY2hEaWFsb2ciIHZhbHVlPScxJz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbXB0eVNlYXJjaCIgdmFsdWU9IlslIERhdGEuRW1wdHlTZWFyY2ggfCBodG1sICVdIiBpZD0iRW1wdHlTZWFyY2giLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIlBlcm1pc3Npb25Db25kaXRpb24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlBlcm1pc3Npb25Db25kaXRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJQZXJtaXNzaW9uQ29uZGl0aW9uIj5bJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUGVybWlzc2lvbkNvbmRpdGlvbiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNsYXNzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DbGFzc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNsYXNzSURzIj5bJSBUcmFuc2xhdGUoIkNsYXNzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ2xhc3MiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTnVtYmVyIiB2YWx1ZT0iWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik51bWJlciI+WyUgVHJhbnNsYXRlKCJOdW1iZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk5hbWUiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmFtZSI+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOYW1lIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRGVwbFN0YXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DdXJEZXBsU3RhdGVPcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZXBsU3RhdGVJRHMiPlslIFRyYW5zbGF0ZSgiRGVwbG95bWVudCBTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkRlcGxTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkluY2lTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJJbmNpU3RhdGVJRHMiPlslIFRyYW5zbGF0ZSgiSW5jaWRlbnQgU3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluY2lTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaEFjdGlvbiIgdHlwZT0ic3VibWl0IiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hGb3JtIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VhcmNoUmVzdWx0IikgJV0KICAgICAgICBbJSBEYXRhLklUU01Db25maWdJdGVtTGlzdEhUTUwgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaFJlc3VsdCIpICVdCiAgICA8L2Rpdj4KPC9kaXY+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/CustomerITSMConfigItemZoom.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCjxkaXYgaWQ9J29vb0NvbnRlbnQnIGNsYXNzPSdBUklBUm9sZU1haW4nPgogICAgWyUgRGF0YS5TdHlsZUNsYXNzZXMgJV0KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGRpdiBjbGFzcz0nb29vV2l0aFN1Yic+CiAgICAgICAgICAgIDxoMiB0aXRsZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+WyUgRGF0YS5OYW1lIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZ1bGxTdWIiKSAlXQogICAgICAgICAgICA8cCBjbGFzcz0ib29vMTJnIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ2xhc3MpIHwgaHRtbCAlXSNbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV0jWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiRnVsbFN1YiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNsYXNzU3ViIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9Im9vbzEyZyIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV08L3A+ClslIFJlbmRlckJsb2NrRW5kKCJDbGFzc1N1YiIpICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBpZD0nQ0lJbmZvQmFyJz4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRGVwbG95bWVudFN0YXRlIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9IlN0YXRlU2lnbmFsIFslIERhdGEuRGVwbFN0YXRlQ29sb3JDbGFzcyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXQogICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrRW5kKCJEZXBsb3ltZW50U3RhdGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbmNpZGVudFN0YXRlIikgJV0KICAgICAgICAgICAgPHAgY2xhc3M9IlN0YXRlU2lnbmFsIFslIERhdGEuSW5jaVN0YXRlQ29sb3JDbGFzcyB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXQogICAgICAgICAgICA8L3A+ClslIFJlbmRlckJsb2NrRW5kKCJJbmNpZGVudFN0YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ3JlYXRlZFRpbWUiKSAlXQogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPjxwIGNsYXNzPSJWYWx1ZSI+WyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L3A+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ3JlYXRlZFRpbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMYXN0Q2hhbmdlZFRpbWUiKSAlXQogICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFzdCBDaGFuZ2VkIikgfCBodG1sICVdOjwvbGFiZWw+PHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNoYW5nZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvcD4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJMYXN0Q2hhbmdlZFRpbWUiKSAlXQogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSdvb29NYWluQm94Jz4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICAgICAgPGRpdiBpZD0iQWN0aW9uUm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlBhZ2VTZWxlY3Rpb24iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQYWdlTmFtZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKERhdGEuUGFnZU5hbWUpIHwgaHRtbCAlXTwvcD4KWyUgUmVuZGVyQmxvY2tFbmQoIlBhZ2VOYW1lIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUGFnZUxpbmsiKSAlXQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IHVyaSAlXTtWZXJzaW9uSUQ9WyUgRGF0YS5WZXJzaW9uSUQgfCB1cmkgJV07UGFnZT1bJSBEYXRhLlBhZ2VOYW1lIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0ib29vUyBQYWdlU2VsZWN0aW9uQnV0dG9uWyUgSUYgRGF0YS5TZWxlY3RlZCAlXSBTZWxlY3RlZFslIEVORCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuUGFnZU5hbWUpIHwgaHRtbCAlXTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlBhZ2VMaW5rIikgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBdHRhY2htZW50cyIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJBdHRhY2htZW50Q29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICA8YSBpZD0iQXR0YWNobWVudHMiIGhyZWY9IiMiPjxpIGNsYXNzPSdvb29mbyBvb29mby1hdHRhY2htZW50Jz48L2k+WyUgVHJhbnNsYXRlKCJBdHRhY2htZW50cyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJBdHRhY2htZW50Qm94IiBjbGFzcz0iSGlkZGVuIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7RmlsZW5hbWU9WyUgRGF0YS5GaWxlbmFtZSB8IHVyaSAlXTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWxlbmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAoWyUgRGF0YS5GaWxlc2l6ZSB8IExvY2FsaXplKCdGaWxlc2l6ZScpIHwgaHRtbCAlXSk8YnIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkF0dGFjaG1lbnRzIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiVmVyc2lvbnMiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBpZD0iVmVyc2lvblNlbGVjdGlvbkNvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZlcnNpb25TZWxlY3Rpb24gJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJWZXJzaW9uU2VsZWN0aW9uIj5bJSBUcmFuc2xhdGUoIlZlcnNpb24iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJWZXJzaW9ucyIpICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBEYXRhLkR5bmFtaWNGaWVsZEhUTUwgJV0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/DynamicField/Agent/ITSMConfigItemLens.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iWyUgRGF0YS5GaWVsZE5hbWUgJV0iIG5hbWU9IlslIERhdGEuRmllbGROYW1lICVdIiB2YWx1ZT0iWyUgRGF0YS5WYWx1ZUVzY2FwZWQgJV0iIC8+CjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iWyUgRGF0YS5GaWVsZENsYXNzICVdIiBpZD0iQXV0b2NvbXBsZXRlX1slIERhdGEuRmllbGROYW1lICVdIiBuYW1lPSJBdXRvY29tcGxldGVfWyUgRGF0YS5GaWVsZE5hbWUgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5GaWVsZExhYmVsRXNjYXBlZCkgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5WaXNpYmxlVmFsdWUgJV0iIC8+ClslIElGIERhdGEuTWFuZGF0b3J5ICVdCjxkaXYgaWQ9IlslIERhdGEuRGl2SURNYW5kYXRvcnkgJV0iIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgIDxwPgogICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkZpZWxkUmVxdWlyZWRNZXNzYWdlKSB8IGh0bWwgJV0KICAgIDwvcD4KPC9kaXY+ClslIEVORCAlXQpbJSBJRiBEYXRhLlNlcnZlckVycm9yICVdCjxkaXYgaWQ9IlslIERhdGEuRGl2SURTZXJ2ZXJFcnJvciAlXSIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgPHA+CiAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuRXJyb3JNZXNzYWdlKSB8IGh0bWwgJV0KICAgIDwvcD4KPC9kaXY+ClslIEVORCAlXQo=</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/ITSMConfigItemDetails.tt" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpUVDo6U2NyaXB0VXNhZ2UpCjxkaXYgY2xhc3M9Im9vb0NvbnRlbnRHcmlkIiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOlslIERhdGEuV2lkdGhzIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRDZWxsIikgJV0KICAgIDxkaXYgY2xhc3M9Im9vb0NvbnRlbnRDZWxsIFslIERhdGEuVHlwZSB8IGh0bWwgJV1fQ2VsbCIgc3R5bGU9IlslIERhdGEuR3JpZEFyZWEgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyUm93IikgJV0KICAgICAgICA8aDIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkhlYWRlcikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5IZWFkZXIpIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJSb3ciKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IkNlbGxDb250ZW50Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRmllbGREaXNwbGF5Um93IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGREaXNwbGF5Um93IiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOlslIERhdGEuV2lkdGhzIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZpZWxkRGlzcGxheUNlbGwiKSAlXQpbJSBJRiBEYXRhLlR5cGUgPT0gJ0xhYmVsJyAlXQogICAgICAgICAgICAgICAgPGxhYmVsIFslIElGIERhdGEuQ1NTQ2xhc3MgJV1jbGFzcz0iWyUgRGF0YS5DU1NDbGFzcyB8IGh0bWwgJV0iIFslIEVORCAlXXRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdIiBzdHlsZT0iWyUgRGF0YS5HcmlkQ29sdW1tIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvbGFiZWw+ClslIEVMU0lGIERhdGEuVHlwZSA9PSAnVmFsdWUnICVdCiAgICAgICAgICAgICAgICA8cCB0aXRsZT0iWyUgRGF0YS5UaXRsZSAlXSIgc3R5bGU9IlslIERhdGEuR3JpZENvbHVtbiB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3A+ClslIEVMU0lGIERhdGEuVHlwZSA9PSAnVmFsdWVMaW5rJyAlXQogICAgICAgICAgICAgICAgPHAgdGl0bGU9IlslIERhdGEuVGl0bGUgJV0iIHN0eWxlPSJbJSBEYXRhLkdyaWRDb2x1bW4gfCBodG1sICVdIj48YSBocmVmPSJbJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSJbJSBJRiBEYXRhLkxpbmtQcmV2aWV3ICVdIGRhdGEtdHJpZ2dlcj0iZmxvYXRlciIgZGF0YS1mbG9hdGVyLXVybD0iWyUgRGF0YS5MaW5rUHJldmlldyB8IEludGVycG9sYXRlICVdIlslIEVORCAlXSBjbGFzcz0iRHluYW1pY0ZpZWxkTGluayI+WyUgRGF0YS5WYWx1ZSAlXTwvYT48L3A+ClslIEVMU0lGIERhdGEuVHlwZSA9PSAnVmFsdWVSYXcnICVdCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJbJSBEYXRhLkdyaWRDb2x1bW4gfCBodG1sICVdIj5bJSBEYXRhLlZhbHVlICVdPC9kaXY+ClslIEVMU0lGIERhdGEuVHlwZSA9PSAnRnVsbFJvdycgJV0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImdyaWQtY29sdW1uOiAxIC8gMyI+WyUgRGF0YS5WYWx1ZSAlXTwvZGl2PgpbJSBFTFNJRiBEYXRhLlR5cGUgPT0gJ0lmcmFtZScgJV0KICAgICAgICAgICAgICAgIDxkaXY+CiMgZXhlY3V0ZSBJRnJhbWUgSlMgYXN5bmNocm9ub3VzbHkuIE90aGVyd2lzZSBpdCBjb3VsZCBoYXBwZW4gYmVmb3JlIG91ciBBUEkgd2FzIGxvYWRlZAojIHRoZSBmb2xsb3dpbmcgSlMgY29kZSBtdXN0IGJlIHdpdGhpbiB0aGUgdGVtcGxhdGUsIG90aGVyd2lzZSBpdCBjb3VsZCBoYXBwZW4sIHRoYXQgYWxzbyB0aGlzIGNvZGUgaXRzZWxmIGlzIG5vdCBsb2FkZWQgeWV0CjxzY3JpcHQ+CmZ1bmN0aW9uIENoZWNrSUZyYW1lSGVpZ2h0KElGcmFtZUlEKSB7CiAgICBpZiAodHlwZW9mIENvcmUgPT09ICdvYmplY3QnICYmIHR5cGVvZiBDb3JlLkFnZW50ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgSVRTTS5bJSBEYXRhLkZyb250ZW5kIHwgaHRtbCAlXS5Db25maWdJdGVtLlpvb20gPT09ICdvYmplY3QnKSB7CiAgICAgICAgSVRTTS5bJSBEYXRhLkZyb250ZW5kIHwgaHRtbCAlXS5Db25maWdJdGVtLlpvb20uSWZyYW1lQXV0b0hlaWdodCgkKCcjJyArIElGcmFtZUlEKSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENoZWNrSUZyYW1lSGVpZ2h0KElGcmFtZUlEKTsKICAgICAgICB9LCA1MDApOwogICAgfQp9Cjwvc2NyaXB0PgojIFVzZSB0aGUgSFRNTDUgc2FuZGJveCBhdHRyaWJ1dGUgdG8gcHJldmVudCBwbHVnaW5zIGFuZCBzY3JpcHRzIGZyb20gYmVpbmcgZXhlY3V0ZWQgaW4gdGhlIGJyb3dzZXIuCiMgQXBwZW5kIHNlc3Npb24gaW5mbyB0byBVUkwgYmVjYXVzZSBJRSB3aWxsIG5vdCBzZW5kIGNvb2tpZXMuCiMgU2V0ICdhbGxvdy1wb3B1cHMnIHRvIGFsbG93IElFMTArIHRvIG9wZW4gbGlua3MuIHJlZjogaHR0cDovL3d3dy53My5vcmcvaHRtbC93Zy93aWtpL0NoYW5nZVByb3Bvc2Fscy9zYW5kYm94X2FsbG93X3BvcHVwcwogICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2FtZS1vcmlnaW4gYWxsb3ctcG9wdXBzIG1zLWFsbG93LXBvcHVwcyBhbGxvdy1wb3B1cHMtdG8tZXNjYXBlLXNhbmRib3giIHdpZHRoPSIxMDAlIiBmcmFtZWJvcmRlcj0iMCIgaWQ9IklmcmFtZVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXSIgb25sb2FkPSJ3aW5kb3cuc2V0VGltZW91dCggZnVuY3Rpb24gKCl7IENoZWNrSUZyYW1lSGVpZ2h0KCdJZnJhbWVbJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV0nKTsgfSwgNTAwKTsiIHNyYz0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIERhdGEuRnJvbnRlbmQgfCBodG1sICVdSVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50O1N1YmFjdGlvbj1IVE1MVmlldztDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV07WyUgRW52KCJTZXNzaW9uTmFtZSIpIHwgaHRtbCAlXT1bJSBFbnYoIlNlc3Npb25JRCIpIHwgaHRtbCAlXSI+PC9pZnJhbWU+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgRU5EICVdClslIFJlbmRlckJsb2NrRW5kKCJGaWVsZERpc3BsYXlDZWxsIikgJV0KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJGaWVsZERpc3BsYXlSb3ciKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmljSFRNTCIpICVdCiAgICAgICAgWyUgRGF0YS5IVE1MICVdClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmljSFRNTCIpICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbnRlbnRDZWxsIikgJV0KPC9kaXY+Cg==</File>
        <File Location="Kernel/Output/JavaScript/Templates/Standard/Agent/ITSMConfigurationManagement/ClassImportConfirm.html.tmpl" Permission="660" Encode="Base64">PHA+e3sgIlRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkIiB8IFRyYW5zbGF0ZSB9fTo8L3A+CjxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRTbWFsbCBOYXJyb3ciPgoKeyUgZm9yIENsYXNzIGluIENsYXNzZXMgJX0KCiAgICA8cCBjbGFzcz0iVmFsdWUiPnt7IENsYXNzIH19PC9wPgoKeyUgZW5kZm9yICV9Cgo8L2ZpZWxkc2V0PgoKeyUgaWYgUm9sZXMgJX0KCjxwPnt7ICJUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQiIHwgVHJhbnNsYXRlIH19OjwvcD4KPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZFNtYWxsIE5hcnJvdyI+CgogICAgeyUgZm9yIFJvbGUgaW4gUm9sZXMgJX0KCiAgICA8cCBjbGFzcz0iVmFsdWUiPnt7IFJvbGUgfX08L3A+CgogICAgeyUgZW5kZm9yICV9Cgo8L2ZpZWxkc2V0PgoKeyUgZW5kaWYgJX0KCjxwIGNsYXNzPSJFcnJvciIgc3R5bGU9Im1heC13aWR0aDogNDUwcHg7Ij57eyAiTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLiIgfCBUcmFuc2xhdGUgfX08L3A+CjxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPHAgc3R5bGU9Im1hcmdpbi10b3A6IDE2cHg7Ij57eyAiRG8geW91IHdhbnQgdG8gcHJvY2VlZD8iIHwgVHJhbnNsYXRlfX08L3A+Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/ClassExport.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3NFeHBvcnQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkZvcmVhY2hUb0ZvcikKCiMgSW5mb3JtIHRoZSBvYmplY3QgbWFuYWdlciBhYm91dCB0aGUgaGFyZCBkZXBlbmRlbmNpZXMuCiMgVGhpcyBtb2R1bGUgbXVzdCBiZSBkaXNjYXJkZWQgd2hlbiBvbmUgb2YgdGhlIGhhcmQgZGVwZW5kZW5jaWVzIGhhcyBiZWVuIGRpc2NhcmRlZC4Kb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ0l0ZW06OkNsYXNzRXhwb3J0IC0gc3VwcG9ydCBmb3IgdXBncmFkaW5nIHRoZSBDTURCCgo9aGVhZDEgREVTQ1JJUFRJT04KCk1vZHVsZSBmb3IgdGhlIGNvbnNvbGUgY29tbWFuZCBDPEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpDbGFzc0V4cG9ydD4uCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWN1dAoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbigKICAgICAgICAnRXhwb3J0IGR5bmFtaWMgZmllbGQgY2xhc3NlcyBhbmQgdGhlaXIgcmVzcGVjdGl2ZSBkeW5hbWljIGZpZWxkcy4nCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnY2xhc3MnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJUaGUgbmFtZSBvZiB0aGUgY2xhc3MgdG8gYmUgZXhwb3J0ZWQuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAxLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLi8sCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmaWxlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PgogICAgICAgICAgICAiVGhlIG91dHB1dCBZQU1MIGZpbGUgY29udGFpbmluZyB0aGUgZXhwb3J0ZWQgY2xhc3MgZGVmaW5pdGlvbiBhbmQgaXRzIGR5bmFtaWMgZmllbGQgY29uZmlndXJhdGlvbi4gRGVmYXVsdHMgdG8gYSBsb2NhbCBmaWxlIHdpdGggdGhlIG5hbWUgb2YgdGhlIGZpcnN0IGNsYXNzIGluIHRoZSBsaXN0LiIsCiAgICAgICAgUmVxdWlyZWQgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ID0+IHFyLy4vLAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZvcmNlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiSWYgdGhlIG91dHB1dCBZQU1MIGZpbGUgYWxyZWFkeSBleGlzdHMsIG92ZXJ3cml0ZSBpdCB3aXRob3V0IGFza2luZy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMCwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uLywKICAgICk7CgogICAgcmV0dXJuOwp9CgpzdWIgUHJlUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ2xhc3NOYW1lTGlzdCAgPSAkU2VsZi0+R2V0T3B0aW9uKCdjbGFzcycpOwogICAgbXkgJEZpbGVOYW1lICAgICAgID0gJFNlbGYtPkdldE9wdGlvbignZmlsZScpIHx8ICIkQ2xhc3NOYW1lTGlzdC0+WzBdLnltbCI7ICAgICMgYnkgZGVmYXVsdCBmaWxlIGhhcyB0aGUgbmFtZSBvZiB0aGUgZmlyc3QgY2xhc3MKICAgIG15ICRGb3JjZU92ZXJ3cml0ZSA9ICRTZWxmLT5HZXRPcHRpb24oJ2ZvcmNlJyk7CgogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGxpc3RzIG9mIGV4aXN0aW5nIGNsYXNzZXMgYW5kIHJvbGVzCiAgICBteSAlQ2xhc3NMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApIC8vIHt9CiAgICB9OwogICAgbXkgJVJvbGVMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OlJvbGUnLAogICAgICAgICkgLy8ge30KICAgIH07CgogICAgbXkgJEVycm9yID0gc3ViIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+JF9bMF08L3JlZD5cbiIpOwogICAgICAgICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9OwoKICAgIG15IEBDbGFzc0lETGlzdDsKICAgIGZvciBteSAkQ2xhc3NOYW1lICggQHskQ2xhc3NOYW1lTGlzdH0gKSB7CgogICAgICAgIGlmICggJENsYXNzTG9va3VweyRDbGFzc05hbWV9ICkgewogICAgICAgICAgICBwdXNoIEBDbGFzc0lETGlzdCwgJENsYXNzTG9va3VweyRDbGFzc05hbWV9OwoKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RXhwb3J0aW5nIGV4aXN0aW5nIGNvbmZpZ2l0ZW08L2dyZWVuPiAkQ2xhc3NOYW1lIDxncmVlbj5jbGFzczwvZ3JlZW4+XG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkUm9sZUxvb2t1cHskQ2xhc3NOYW1lfSApIHsKICAgICAgICAgICAgcHVzaCBAQ2xhc3NJRExpc3QsICRSb2xlTG9va3VweyRDbGFzc05hbWV9OwoKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RXhwb3J0aW5nIGV4aXN0aW5nIGNvbmZpZ2l0ZW08L2dyZWVuPiAkQ2xhc3NOYW1lIDxncmVlbj5yb2xlPC9ncmVlbj5cbiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICRFcnJvci0+KCAnQ2xhc3Mgb3IgUm9sZSAnIC4gJENsYXNzTmFtZSAuICcgZG9lcyBub3QgZXhpc3QuJyApOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoIC1lICRGaWxlTmFtZSAmJiAhJEZvcmNlT3ZlcndyaXRlICkgewogICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5GaWxlICckRmlsZU5hbWUnIGFscmVhZHkgZXhpc3RzLiBPdmVyd3JpdGUgaXQ/PC95ZWxsb3c+XG4iKTsKICAgICAgICAkU2VsZi0+UHJpbnQoIlxuPHllbGxvdz5QbGVhc2UgY29uZmlybSBieSB0eXBpbmcgJ3knZXM8L3llbGxvdz5cblx0Iik7CgogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpIGlmIDxTVERJTj4gIX4gL155ZT9zPyQvaTsKICAgIH0KCiAgICBteSAkWUFNTENvbnRlbnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q2xhc3NFeHBvcnQoIEl0ZW1JRExpc3QgPT4gXEBDbGFzc0lETGlzdCApOwoKICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RmlsZVdyaXRlKAogICAgICAgIExvY2F0aW9uID0+ICRGaWxlTmFtZSwKICAgICAgICBDb250ZW50ICA9PiBcJFlBTUxDb250ZW50LAogICAgKTsKICAgIHJldHVybiAkRXJyb3ItPigiQ291bGQgbm90IHdyaXRlIGZpbGUuIikgdW5sZXNzICRTdWNjZXNzOwoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUgd2l0aCBhbGw8L2dyZWVuPlxuIik7CgogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/ClassImport.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3NJbXBvcnQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OkZvcmVhY2hUb0ZvcikKCiMgSW5mb3JtIHRoZSBvYmplY3QgbWFuYWdlciBhYm91dCB0aGUgaGFyZCBkZXBlbmRlbmNpZXMuCiMgVGhpcyBtb2R1bGUgbXVzdCBiZSBkaXNjYXJkZWQgd2hlbiBvbmUgb2YgdGhlIGhhcmQgZGVwZW5kZW5jaWVzIGhhcyBiZWVuIGRpc2NhcmRlZC4Kb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6WUFNTCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpDbGFzc0ltcG9ydCAtIHN1cHBvcnQgZm9yIHVwZ3JhZGluZyB0aGUgQ01EQgoKPWhlYWQxIERFU0NSSVBUSU9OCgpNb2R1bGUgZm9yIHRoZSBjb25zb2xlIGNvbW1hbmQgQzxBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3NJbXBvcnQ+LgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1jdXQKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oCiAgICAgICAgJ0ltcG9ydCBkeW5hbWljIGZpZWxkIGNsYXNzZXMgYW5kIHRoZWlyIHJlc3BlY3RpdmUgZHluYW1pYyBmaWVsZHMuJwogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZpbGUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJUaGUgZmlsZSBjb250YWluaW5nIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFuZCBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyYXRpb24gYXMgWUFNTC4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uLywKICAgICk7CgogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAndXBkYXRlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiSWYgdGhlIGNsYXNzIGFscmVhZHkgZXhpc3RzLCB1cGRhdGUgaXQuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDAsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLi8sCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFByZVJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAxOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+SW1wb3J0aW5nIG5ldyBjb25maWdpdGVtIGNsYXNzPC9ncmVlbj5cbiIpOwoKICAgIG15ICRGaWxlID0gJFNlbGYtPkdldE9wdGlvbignZmlsZScpOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkWUFNTE9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgbXkgJEVycm9yID0gc3ViIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+JF9bMF08L3JlZD5cbiIpOwoKICAgICAgICAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgfTsKCiAgICBteSAkRGVmaW5pdGlvbllBTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5GaWxlUmVhZCgKICAgICAgICBMb2NhdGlvbiA9PiAkRmlsZSwKICAgICk7CgogICAgbXkgJERlZmluaXRpb25SYXcgPSAkWUFNTE9iamVjdC0+TG9hZCgKICAgICAgICBEYXRhID0+ICR7JERlZmluaXRpb25ZQU1MfSwKICAgICk7CgogICAgaWYgKCByZWYgJERlZmluaXRpb25SYXcgZXEgJ0hBU0gnICkgewogICAgICAgICREZWZpbml0aW9uUmF3ID0gWyREZWZpbml0aW9uUmF3XTsKICAgIH0KCiAgICByZXR1cm4gJEVycm9yLT4oJ0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLicpIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJERlZmluaXRpb25SYXcpOwoKICAgIG15ICRDbGFzc0V4aXN0cyA9ICRTZWxmLT5HZXRPcHRpb24oJ3VwZGF0ZScpID8gJ1VQREFURScgOiAnRVJST1InOwogICAgbXkgJFJlc3VsdCAgICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzSW1wb3J0KAogICAgICAgIENvbnRlbnQgICAgID0+ICREZWZpbml0aW9uUmF3LAogICAgICAgIENsYXNzRXhpc3RzID0+ICRDbGFzc0V4aXN0cywKICAgICk7CgogICAgcmV0dXJuICRFcnJvci0+KCAkUmVzdWx0LT57RXJyb3JNZXNzYWdlfSB8fCAiQ291bGQgbm90IGltcG9ydCBkZWZpbml0aW9ucyBmcm9tIGZpbGUuIiApIHVubGVzcyAkUmVzdWx0LT57U3VjY2Vzc307CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZSB3aXRoIGFsbDwvZ3JlZW4+XG4iKTsKCiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKMTsK</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/ConvertLegacyRefDFs.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6Q29udmVydExlZ2FjeVJlZkRGczsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6SW50ZXJmYWNlQ29uc29sZTsgICAgIyMgbm8gcGVybGltcG9ydHMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpQYWNrYWdlJywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oCiAgICAgICAgJ0NvbnZlcnQgbGVnYWN5IE90b2JvUGFyIERGcyBvZiB0eXBlIElUU01Db25maWdJdGVtUmVmZXJlbmNlIHRvIHN0YW5kYXJkIENvbmZpZ0l0ZW0gZmllbGRzLicKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmaWxlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiRmlsZSBuYW1lIGZvciB0aGUgY29uc3RyaWN0aW9ucyByZXBvcnQsIGJ5IGRlZmF1bHQgcHJpbnRzIHRoZSByZXBvcnQgdG8gdGhlIGRpc3BsYXkuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLi8sCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdmb3JjZScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIklmIHRoZSByZXBvcnQgZmlsZSBhbHJlYWR5IGV4aXN0cywgb3ZlcndyaXRlIHdpdGhvdXQgcHJvbXB0aW5nLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4vLAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRmlsZU5hbWUgICAgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdmaWxlJyk7CiAgICBteSAkRm9yY2VPdmVyd3JpdGUgPSAkU2VsZi0+R2V0T3B0aW9uKCdmb3JjZScpOwoKICAgIGlmICggLWUgJEZpbGVOYW1lICYmICEkRm9yY2VPdmVyd3JpdGUgKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkNvbnN0cmljdGlvbnMgcmVwb3J0IGZpbGUgJyRGaWxlTmFtZScgYWxyZWFkeSBleGlzdHMuIE92ZXJ3cml0ZSBpdD88L3llbGxvdz4iKTsKICAgICAgICAkU2VsZi0+UHJpbnQoIlxuPHllbGxvdz5QbGVhc2UgY29uZmlybSBieSB0eXBpbmcgJ3knZXM8L3llbGxvdz46ICIpOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpIGlmIDxTVERJTj4gIX4gL155ZT9zPyQvaTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJERCT2JqZWN0ICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnKTsKICAgIG15ICRQYWNrYWdlT2JqZWN0ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQYWNrYWdlJyk7CgogICAgIyBzdXBwb3J0IGNvbnNvbGUgY29tbWFuZAogICAgaWYgKCAhZGVmaW5lZCAkREJPYmplY3QtPntkYmh9ICkgewogICAgICAgICREQk9iamVjdC0+Q29ubmVjdCgpOwogICAgfQogICAgaWYgKCAhZGVmaW5lZCAkREJPYmplY3QtPntkYmh9ICkgewogICAgICAgIGRpZSgidW5hYmxlIHRvIGNvbm5lY3QgdG8gRGF0YWJhc2UuIik7CiAgICB9CgogICAgJERCT2JqZWN0LT5CZWdpbldvcmsoKTsKICAgIG15IEBJRHMgPSAkU2VsZi0+X0dldERGVHlwZUlEcygKICAgICAgICBEQk9iamVjdCA9PiAkREJPYmplY3QsCiAgICAgICAgREZUeXBlICAgPT4gJ0lUU01Db25maWdJdGVtUmVmZXJlbmNlJywKICAgICk7CgogICAgbXkgJENvdW50RmllbGRVcGRhdGVzID0gMDsKICAgIG15ICRDb3VudFZhbHVlVXBkYXRlcyA9IDA7CiAgICBteSBAQ29uc3RyaWN0aW9uc0xpc3Q7CgogICAgZm9yIG15ICRJRCAoQElEcykgewogICAgICAgICRTZWxmLT5fVXBkYXRlRHluYW1pY0ZpZWxkQ29uZmlnKAogICAgICAgICAgICBJRCAgICAgICAgICAgICAgICAgPT4gJElELAogICAgICAgICAgICBEeW5hbWljRmllbGRPYmplY3QgPT4gJER5bmFtaWNGaWVsZE9iamVjdCwKICAgICAgICAgICAgQ29uc3RyaWN0aW9uc0xpc3QgID0+IFxAQ29uc3RyaWN0aW9uc0xpc3QsCiAgICAgICAgKTsKICAgICAgICAkQ291bnRGaWVsZFVwZGF0ZXMrKzsKICAgICAgICAkQ291bnRWYWx1ZVVwZGF0ZXMgKz0gJFNlbGYtPl9VcGRhdGVEeW5hbWljRmllbGRWYWx1ZXMoCiAgICAgICAgICAgIElEICAgICAgICAgICAgICAgICAgICAgID0+ICRJRCwKICAgICAgICAgICAgREJPYmplY3QgICAgICAgICAgICAgICAgPT4gJERCT2JqZWN0LAogICAgICAgICAgICBEeW5hbWljRmllbGRWYWx1ZU9iamVjdCA9PiAkRHluYW1pY0ZpZWxkVmFsdWVPYmplY3QsCiAgICAgICAgKTsKICAgIH0KCiAgICAkREJPYmplY3QtPntkYmh9LT5jb21taXQoKTsKCiAgICAkU2VsZi0+UHJpbnQoIiRDb3VudEZpZWxkVXBkYXRlcyBmaWVsZHMgdXBkYXRlZFxuIik7CiAgICAkU2VsZi0+UHJpbnQoIiRDb3VudFZhbHVlVXBkYXRlcyBmaWVsZCB2YWx1ZXMgdXBkYXRlZFxuIik7CgogICAgJFNlbGYtPl9SZXBvcnRDb25zdHJpY3Rpb25zKAogICAgICAgIENvbnN0cmljdGlvbnNMaXN0ID0+IFxAQ29uc3RyaWN0aW9uc0xpc3QsCiAgICAgICAgRmlsZU5hbWUgICAgICAgICAgPT4gJEZpbGVOYW1lLAogICAgKTsKCiAgICAjIHJlbW92ZSBEeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbSBwYWNrYWdlCiAgICBteSAkUGFja2FnZU5hbWUgPSAnRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlVuaW5zdGFsbGluZyAkUGFja2FnZU5hbWUgcGFja2FnZS4uLjwveWVsbG93PlxuIik7CiAgICBteSBAUmVwb3MgPSAkUGFja2FnZU9iamVjdC0+UmVwb3NpdG9yeUxpc3QoCiAgICAgICAgUmVzdWx0ID0+ICdTaG9ydCcKICAgICk7CiAgICBteSBAUGFja2FnZUVudHJ5ID0gZ3JlcCB7ICRfLT57TmFtZX0gZXEgJFBhY2thZ2VOYW1lIH0gQFJlcG9zOwogICAgaWYgKCAhQFBhY2thZ2VFbnRyeSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Q291bGQgbm90IGZpbmQgJFBhY2thZ2VOYW1lIHBhY2thZ2UhPC9yZWQ+XG4iKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIG15ICRQYWNrYWdlVmVyc2lvbiA9ICRQYWNrYWdlRW50cnlbMF17VmVyc2lvbn07CiAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkZvdW5kICRQYWNrYWdlTmFtZSBWZXJzaW9uICRQYWNrYWdlVmVyc2lvbjwveWVsbG93PlxuIik7CiAgICAgICAgbXkgJFBhY2thZ2UgPSAkUGFja2FnZU9iamVjdC0+UmVwb3NpdG9yeUdldCgKICAgICAgICAgICAgTmFtZSAgICA9PiAkUGFja2FnZU5hbWUsCiAgICAgICAgICAgIFZlcnNpb24gPT4gJFBhY2thZ2VWZXJzaW9uLAogICAgICAgICk7CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkUGFja2FnZU9iamVjdC0+UGFja2FnZVVuaW5zdGFsbCgKICAgICAgICAgICAgU3RyaW5nID0+ICRQYWNrYWdlLAogICAgICAgICk7CiAgICAgICAgaWYgKCRTdWNjZXNzKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUgdW5pbnN0YWxsaW5nICRQYWNrYWdlTmFtZSBwYWNrYWdlLjwvZ3JlZW4+XG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3QgdW5pbnN0YWxsICRQYWNrYWdlTmFtZSBwYWNrYWdlITwvcmVkPlxuIik7CiAgICAgICAgfQogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmU8L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKc3ViIF9VcGRhdGVEeW5hbWljRmllbGRDb25maWcgewoKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJElEICAgICAgICAgICAgICAgICA9ICRQYXJhbXsnSUQnfTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkUGFyYW17J0R5bmFtaWNGaWVsZE9iamVjdCd9OwogICAgbXkgJENvbnN0cmljdGlvbnNMaXN0ICA9ICRQYXJhbXsnQ29uc3RyaWN0aW9uc0xpc3QnfTsKCiAgICBteSAkREYgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIElEID0+ICRJRCApOwoKICAgIG15ICROZXdDb25maWcgPSB7CiAgICAgICAgJ0ltcG9ydFNlYXJjaEF0dHJpYnV0ZScgPT4gJycsCiAgICAgICAgJ011bHRpc2VsZWN0JyAgICAgICAgICAgPT4gKCAkREYtPntDb25maWd9e01heEFycmF5U2l6ZX0gPiAxID8gMSA6IDAgKSwKICAgICAgICAnUmVmZXJlbmNlRmlsdGVyTGlzdCcgICA9PiBbXSwKICAgICAgICAnU2VhcmNoQXR0cmlidXRlJyAgICAgICA9PiAnJywKICAgICAgICAnUG9zc2libGVOb25lJyAgICAgICAgICA9PiAnMScsCiAgICAgICAgJ0VkaXRGaWVsZE1vZGUnICAgICAgICAgPT4gJ0F1dG9Db21wbGV0ZScsCiAgICAgICAgJ011bHRpVmFsdWUnICAgICAgICAgICAgPT4gMCwKICAgICAgICAnTGlua1R5cGUnICAgICAgICAgICAgICA9PiAnJywKICAgICAgICAnTGlua0RpcmVjdGlvbicgICAgICAgICA9PiAnUmVmZXJlbmNpbmdJc1NvdXJjZScsCiAgICAgICAgJ0Rpc3BsYXlUeXBlJyAgICAgICAgICAgPT4gJFNlbGYtPl9Db252ZXJ0RnJvbURpc3BsYXlQYXR0ZXJuKCBQYXR0ZXJuID0+ICRERi0+e0NvbmZpZ317RGlzcGxheVBhdHRlcm59ICksCiAgICAgICAgJ0NsYXNzSURzJyAgICAgICAgICAgICAgPT4gJERGLT57Q29uZmlnfXtJVFNNQ29uZmlnSXRlbUNsYXNzZXN9LAogICAgICAgICdEZXBsU3RhdGVJRHMnICAgICAgICAgID0+ICRERi0+e0NvbmZpZ317RGVwbG95bWVudFN0YXRlc30sCiAgICAgICAgJ1Rvb2x0aXAnICAgICAgICAgICAgICAgPT4gJycsCiAgICAgICAgJ1JlZmVyZW5jZWRPYmplY3RUeXBlJyAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIH07CgogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgSUQgICAgICAgICA9PiAkSUQsCiAgICAgICAgTmFtZSAgICAgICA9PiAkREYtPntOYW1lfSwKICAgICAgICBMYWJlbCAgICAgID0+ICRERi0+e0xhYmVsfSwKICAgICAgICBGaWVsZE9yZGVyID0+ICRERi0+e0ZpZWxkT3JkZXJ9LAogICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgIE9iamVjdFR5cGUgPT4gJERGLT57T2JqZWN0VHlwZX0sCiAgICAgICAgVmFsaWRJRCAgICA9PiAkREYtPntWYWxpZElEfSwKICAgICAgICBDb25maWcgICAgID0+ICROZXdDb25maWcsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoICI8cmVkPlVuYWJsZSB0byBzZXQgREYgQ29uZmlnIGZvciAiIC4gJERGLT57TmFtZX0gLiAiICgkSUQpIHdpdGg6XG4gJE5ld0NvbmZpZzwvcmVkPlxuIiApOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgfQoKICAgIG15IEBMb2NhbENvbnN0cmljdGlvbnMgPSBzcGxpdCggL1xyXG4vLCAkREYtPntDb25maWd9e0NvbnN0cmljdGlvbnN9ICk7CiAgICBmb3IgbXkgJENvbnN0cmljdGlvbiAoQExvY2FsQ29uc3RyaWN0aW9ucykgewogICAgICAgIHB1c2ggQHskQ29uc3RyaWN0aW9uc0xpc3R9LCB7CiAgICAgICAgICAgIElEICAgICAgICAgICA9PiAkSUQsCiAgICAgICAgICAgIEZpZWxkTmFtZSAgICA9PiAkREYtPntOYW1lfSwKICAgICAgICAgICAgQ29uc3RyaWN0aW9uID0+ICRDb25zdHJpY3Rpb24sCiAgICAgICAgfTsKICAgIH0KICAgIHJldHVybjsKfQoKc3ViIF9Db252ZXJ0RnJvbURpc3BsYXlQYXR0ZXJuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFBhdHRlcm4gPSAkUGFyYW17J1BhdHRlcm4nfTsKCiAgICBpZiAoICRQYXR0ZXJuID1+IC88Q0lfQ2xhc3M+LyAmJiAkUGF0dGVybiA9fiAvPENJX05hbWU+LyApIHsKICAgICAgICByZXR1cm4gJ0NsYXNzQ29uZmlnSXRlbU5hbWUnOwogICAgfQogICAgZWxzaWYgKCAkUGF0dGVybiA9fiAvPENJX0NsYXNzPi8gJiYgJFBhdHRlcm4gPX4gLzxDSV9OdW1iZXI+LyApIHsKICAgICAgICByZXR1cm4gJ0NsYXNzQ29uZmlnSXRlbU51bWJlcic7CiAgICB9CiAgICBlbHNpZiAoICRQYXR0ZXJuID1+IC88Q0lfTmFtZT4vICkgewogICAgICAgIHJldHVybiAnQ29uZmlnSXRlbU5hbWUnOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuICdDb25maWdJdGVtTnVtYmVyJzsKICAgIH0KfQoKc3ViIF9VcGRhdGVEeW5hbWljRmllbGRWYWx1ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRmllbGRJRCAgICAgICAgICAgICAgICAgPSAkUGFyYW17J0lEJ307CiAgICBteSAkREJPYmplY3QgICAgICAgICAgICAgICAgPSAkUGFyYW17J0RCT2JqZWN0J307CiAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWVPYmplY3QgPSAkUGFyYW17J0R5bmFtaWNGaWVsZFZhbHVlT2JqZWN0J307CgogICAgbXkgQE9iamVjdElEczsKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgID0+ICdTRUxFQ1QgRElTVElOQ1Qgb2JqZWN0X2lkIEZST00gZHluYW1pY19maWVsZF92YWx1ZSBXSEVSRSBmaWVsZF9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJEZpZWxkSUQgXSwKICAgICk7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBPYmplY3RJRHMsICRSb3dbMF07CiAgICB9CgogICAgbXkgJENvdW50VmFsdWVVcGRhdGVzID0gMDsKICAgIGZvciBteSAkT2JqZWN0SUQgKEBPYmplY3RJRHMpIHsKCiAgICAgICAgbXkgJEV4aXN0aW5nVmFsdWVzID0gJER5bmFtaWNGaWVsZFZhbHVlT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgRmllbGRJRCAgPT4gJEZpZWxkSUQsCiAgICAgICAgICAgIE9iamVjdElEID0+ICRPYmplY3RJRAogICAgICAgICk7CgogICAgICAgIG15IEBOZXdWYWx1ZXM7CiAgICAgICAgbXkgJEluZGV4VmFsdWUgPSAwOwogICAgICAgIGZvciBteSAkRXhpc3RpbmdWYWx1ZSAoICRFeGlzdGluZ1ZhbHVlcy0+QCogKSB7CiAgICAgICAgICAgIG15ICROZXdWYWx1ZSA9IHsKICAgICAgICAgICAgICAgIFZhbHVlVGV4dCA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIFZhbHVlSW50ICA9PiAkRXhpc3RpbmdWYWx1ZS0+e1ZhbHVlVGV4dH0sCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGlmICggc2NhbGFyICRFeGlzdGluZ1ZhbHVlcy0+QCogPiAxICkgewogICAgICAgICAgICAgICAgJE5ld1ZhbHVlLT57SW5kZXhWYWx1ZX0gPSAkSW5kZXhWYWx1ZTsKICAgICAgICAgICAgICAgICRJbmRleFZhbHVlKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHVzaCBATmV3VmFsdWVzLCAkTmV3VmFsdWU7CiAgICAgICAgfQoKICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRWYWx1ZU9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgIEZpZWxkSUQgID0+ICRGaWVsZElELAogICAgICAgICAgICBPYmplY3RJRCA9PiAkT2JqZWN0SUQsCiAgICAgICAgICAgIFZhbHVlICAgID0+IFxATmV3VmFsdWVzLAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+VW5hYmxlIHRvIHNldCBERiBWYWx1ZSBmb3Igb2JqZWN0ICRPYmplY3RJRCBmaWVsZCAkRmllbGRJRC48L3JlZD5cbiIpOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3IoKTsKICAgICAgICB9CgogICAgICAgICRDb3VudFZhbHVlVXBkYXRlcyArPSBzY2FsYXIgJEV4aXN0aW5nVmFsdWVzLT5AKjsKICAgIH0KCiAgICByZXR1cm4gJENvdW50VmFsdWVVcGRhdGVzOwp9CgpzdWIgX0dldERGVHlwZUlEcyB7CgogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkREJPYmplY3QgPSAkUGFyYW17J0RCT2JqZWN0J307CiAgICBteSAkREZUeXBlICAgPSAkUGFyYW17J0RGVHlwZSd9OwoKICAgIG15IEBSZXN1bHQ7CiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICA9PiAnU0VMRUNUIGlkIEZST00gZHluYW1pY19maWVsZCBXSEVSRSBmaWVsZF90eXBlID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkREZUeXBlIF0sCiAgICApOwoKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQFJlc3VsdCwgJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gQFJlc3VsdDsKfQoKc3ViIF9SZXBvcnRDb25zdHJpY3Rpb25zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbnN0cmljdGlvbnNMaXN0ID0gJFBhcmFteydDb25zdHJpY3Rpb25zTGlzdCd9OwogICAgbXkgJEZpbGVOYW1lICAgICAgICAgID0gJFBhcmFteydGaWxlTmFtZSd9OwoKICAgIGlmICggQHskQ29uc3RyaWN0aW9uc0xpc3R9ICkgewogICAgICAgIG15ICRDb25zdHJpY3Rpb25zU3RyID0gImZpZWxkXHRjb25zdHJpY3Rpb25cbiI7CiAgICAgICAgZm9yIG15ICRDb25zdHJpY3Rpb24gKCBAeyRDb25zdHJpY3Rpb25zTGlzdH0gKSB7CiAgICAgICAgICAgICRDb25zdHJpY3Rpb25zU3RyIC49ICRDb25zdHJpY3Rpb24tPntGaWVsZE5hbWV9IC4gIlx0IiAuICRDb25zdHJpY3Rpb24tPntDb25zdHJpY3Rpb259IC4gIlxuIjsKICAgICAgICB9CiAgICAgICAgbXkgJENvdW50ID0gc2NhbGFyIEB7JENvbnN0cmljdGlvbnNMaXN0fTsKICAgICAgICBpZiAoJEZpbGVOYW1lKSB7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RmlsZVdyaXRlKAogICAgICAgICAgICAgICAgTG9jYXRpb24gPT4gJEZpbGVOYW1lLAogICAgICAgICAgICAgICAgQ29udGVudCAgPT4gXCRDb25zdHJpY3Rpb25zU3RyLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3Qgd3JpdGUgZmlsZS48L3JlZD5cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Gb3VuZCAkQ291bnQgY29uc3RyaWN0aW9ucywgdGhleSByZXF1aXJlIG1hbnVhbCBjb25maWd1cmF0aW9uLiBQbGVhc2UgY2hlY2sgdGhlIHJlcG9ydCBmaWxlICckRmlsZU5hbWUnLjwveWVsbG93PlxuIik7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBwcmludCAkQ29uc3RyaWN0aW9uc1N0cjsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkZvdW5kICRDb3VudCBjb25zdHJpY3Rpb25zLCB0aGV5IHJlcXVpcmUgbWFudWFsIGNvbmZpZ3VyYXRpb24uPC95ZWxsb3c+XG4iKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIk5vIGNvbnN0cmljdGlvbnMgd2VyZSBmb3VuZC5cbiIpOwogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/Delete.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6RGVsZXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdEZWxldGUgY29uZmlnIGl0ZW1zIChhbGwsIGJ5IGNsYXNzIChhbmQgZGVwbG95bWVudCBzdGF0ZSkgb3IgYnkgbnVtYmVyKS4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2FsbCcsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkRlbGV0ZSBhbGwgY29uZmlnIGl0ZW1zLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKICAgICRTZWxmLT5BZGRBcmd1bWVudCgKICAgICAgICBOYW1lICAgICAgICA9PiAnYWNjZXB0JywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiQWNjZXB0IGRlbGV0ZSBhbGwgb3IgY2FuY2VsLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8oeXxuKS9zbXgsCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnY2xhc3MnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZWxldGUgYWxsIGNvbmZpZyBpdGVtcyBvZiB0aGlzIGNsYXNzLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4qL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdkZXBsb3ltZW50LXN0YXRlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiRGVsZXRlIGFsbCBjb25maWcgaXRlbXMgd2l0aCB0aGlzIGRlcGxveW1lbnQgc3RhdGUgKE9OTFkgVE9HRVRIRVIgd2l0aCB0aGUgLS1jbGFzcyBwYXJhbWV0ZXIpLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4qL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdjb25maWdpdGVtLW51bWJlcicsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkRlbGV0ZSBsaXN0ZWQgY29uZmlnIGl0ZW1zLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyL1xkKy9zbXgsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdhbGwtb2xkLXZlcnNpb25zJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiRGVsZXRlIGFsbCBjb25maWcgaXRlbSB2ZXJzaW9ucyBleGNlcHQgdGhlIG5ld2VzdCB2ZXJzaW9uLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2FsbC1idXQta2VlcC1sYXN0LXZlcnNpb25zJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiRGVsZXRlIGFsbCBjb25maWcgaXRlbSB2ZXJzaW9ucyBidXQga2VlcCB0aGUgbGFzdCBYWCB2ZXJzaW9ucy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci9cZCsvc214LAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2FsbC1vbGRlci10aGFuLWRheXMtdmVyc2lvbnMnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZWxldGUgYWxsIGNvbmZpZyBpdGVtIHZlcnNpb25zIG9sZGVyIHRoYW4gWFggZGF5cy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci9cZCsvc214LAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQWxsICAgICAgICAgICAgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwnKTsKICAgIG15ICRDbGFzcyAgICAgICAgICAgICA9ICRTZWxmLT5HZXRPcHRpb24oJ2NsYXNzJykgLy8gJyc7CiAgICBteSBAQ29uZmlnSXRlbU51bWJlcnMgPSBAeyAkU2VsZi0+R2V0T3B0aW9uKCdjb25maWdpdGVtLW51bWJlcicpIC8vIFtdIH07CiAgICBteSAkRGVwbG95bWVudFN0YXRlICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdkZXBsb3ltZW50LXN0YXRlJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsT2xkVmVyc2lvbnMgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkLXZlcnNpb25zJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsQnV0S2VlcExhc3QgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucycpICAgLy8gJyc7CiAgICBteSAkQWxsT2xkZXJUaGFuRGF5cyAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJykgLy8gJyc7CgogICAgaWYgKAogICAgICAgICEkQWxsCiAgICAgICAgJiYgISRDbGFzcwogICAgICAgICYmICFAQ29uZmlnSXRlbU51bWJlcnMKICAgICAgICAmJiAhJERlcGxveW1lbnRTdGF0ZQogICAgICAgICYmICEkQWxsT2xkVmVyc2lvbnMKICAgICAgICAmJiAhJEFsbEJ1dEtlZXBMYXN0CiAgICAgICAgJiYgISRBbGxPbGRlclRoYW5EYXlzCiAgICAgICAgKQogICAgewogICAgICAgIGRpZQogICAgICAgICAgICAiUGxlYXNlIHByb3ZpZGUgb3B0aW9uIC0tYWxsLCAtLWNsYXNzLCAtLWNvbmZpZ2l0ZW0tbnVtYmVyLCAtLWFsbC1vbGQtdmVyc2lvbnMsIC0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMgb3IgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zLiIKICAgICAgICAgICAgLiAiIEZvciBtb3JlIGRldGFpbHMgdXNlIC0taGVscFxuIjsKICAgIH0KCiAgICBteSAkQWxsT3B0aW9uVHlwZUNvdW50ID0gMDsKICAgIGZvciBteSAkVmFsdWUgKCAkQWxsLCAkQWxsT2xkVmVyc2lvbnMsICRBbGxCdXRLZWVwTGFzdCwgJEFsbE9sZGVyVGhhbkRheXMgKSB7CiAgICAgICAgaWYgKCRWYWx1ZSkgewogICAgICAgICAgICAkQWxsT3B0aW9uVHlwZUNvdW50Kys7CiAgICAgICAgfQogICAgfQogICAgaWYgKCAkQWxsT3B0aW9uVHlwZUNvdW50ID4gMSApIHsKICAgICAgICBkaWUKICAgICAgICAgICAgIlRoZSBvcHRpb25zIC0tYWxsLCAtLWFsbC1vbGQtdmVyc2lvbnMsIC0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMgYW5kIC0tYWxsLW9sZGVyLXRoYW4tZGF5cy12ZXJzaW9ucyBjYW4gbm90IGJlIG1peGVkLiBcbkZvciBtb3JlIGRldGFpbHMgdXNlIC0taGVscFxuIjsKICAgIH0KICAgIGlmICggJEFsbE9wdGlvblR5cGVDb3VudCAmJiAoICRDbGFzcyB8fCBAQ29uZmlnSXRlbU51bWJlcnMgfHwgJERlcGxveW1lbnRTdGF0ZSApICkgewogICAgICAgIGRpZQogICAgICAgICAgICAiVGhlIG9wdGlvbnMgLS1hbGwsIC0tYWxsLW9sZC12ZXJzaW9ucywgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucyBhbmQgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zIGNhbiBub3QgdXNlZCB0b2dldGhlciB3aXRoIGFueSBvdGhlciBvcHRpb24uIFxuRm9yIG1vcmUgZGV0YWlscyB1c2UgLS1oZWxwXG4iOwogICAgfQoKICAgIGlmICggJERlcGxveW1lbnRTdGF0ZSAmJiAhJENsYXNzICkgewogICAgICAgIGRpZQogICAgICAgICAgICAiRGVsZXRpbmcgYWxsIGNvbmZpZyBpdGVtcyB3aXRoIHRoaXMgZGVwbG95bWVudCBzdGF0ZSBpcyBwb3NpYmxlIE9OTFkgVE9HRVRIRVIgd2l0aCB0aGUgLS1jbGFzcyBwYXJhbWV0ZXIuIFxuRm9yIG1vcmUgZGV0YWlscyB1c2UgLS1oZWxwXG4iOwogICAgfQoKICAgIGlmICggQENvbmZpZ0l0ZW1OdW1iZXJzICYmICggJENsYXNzIHx8ICREZXBsb3ltZW50U3RhdGUgKSApIHsKICAgICAgICBkaWUKICAgICAgICAgICAgIlRoZSBvcHRpb24gLS1jb25maWdpdGVtLW51bWJlciBjYW4gbm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgLS1jbGFzcyBvciB0aGUgLS1kZXBsb3ltZW50LXN0YXRlIHBhcmFtZXRlci4gXG5Gb3IgbW9yZSBkZXRhaWxzIHVzZSAtLWhlbHBcbiI7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkRlbGV0aW5nIGNvbmZpZyBpdGVtcy4uLjwveWVsbG93PlxuXG4iKTsKCiAgICBteSAkQWxsICAgICAgICAgICAgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwnKTsKICAgIG15ICRDbGFzcyAgICAgICAgICAgICA9ICRTZWxmLT5HZXRPcHRpb24oJ2NsYXNzJykgLy8gJyc7CiAgICBteSBAQ29uZmlnSXRlbU51bWJlcnMgPSBAeyAkU2VsZi0+R2V0T3B0aW9uKCdjb25maWdpdGVtLW51bWJlcicpIC8vIFtdIH07CiAgICBteSAkRGVwbG95bWVudFN0YXRlICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdkZXBsb3ltZW50LXN0YXRlJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsT2xkVmVyc2lvbnMgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkLXZlcnNpb25zJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsQnV0S2VlcExhc3QgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucycpICAgLy8gJyc7CiAgICBteSAkQWxsT2xkZXJUaGFuRGF5cyAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJykgLy8gJyc7CgogICAgIyBkZWxldGUgYWxsIGNvbmZpZyBpdGVtcwogICAgaWYgKCRBbGwpIHsKCiAgICAgICAgIyBnZXQgYWxsIGNvbmZpZyBpdGVtcyBpZHMKICAgICAgICBteSBAQ29uZmlnSXRlbUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKCBSZXN1bHQgPT4gJ0FSUkFZJyApOwoKICAgICAgICAjIGdldCBudW1iZXIgb2YgY29uZmlnIGl0ZW1zCiAgICAgICAgbXkgJENJQ291bnQgPSBzY2FsYXIgQENvbmZpZ0l0ZW1JRHM7CgogICAgICAgICMgaWYgdGhlcmUgYXJlIGFueSBDSSB0byBkZWxldGUKICAgICAgICBpZiAoJENJQ291bnQpIHsKCiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5BcmUgeW91IHN1cmUgdGhhdCB5b3Ugd2FudCB0byBkZWxldGUgQUxMICRDSUNvdW50IGNvbmZpZyBpdGVtcz88L3llbGxvdz5cbiIpOwogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+VGhpcyBpcyBpcnJldm9jYWJsZS4gW3kvbl0gPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgbXkgJENvbmZpcm1hdGlvbiA9ICRTZWxmLT5HZXRBcmd1bWVudCgnYWNjZXB0Jyk7CiAgICAgICAgICAgIGNob21wKCAkQ29uZmlybWF0aW9uID0gbGMgPFNURElOPiApIGlmICFkZWZpbmVkICRDb25maXJtYXRpb247CgogICAgICAgICAgICAjIGlmIHRoZSB1c2VyIGNvbmZpcm1zIHRoZSBkZWxldGlvbgogICAgICAgICAgICBpZiAoICRDb25maXJtYXRpb24gZXEgJ3knICkgewoKICAgICAgICAgICAgICAgICMgZGVsZXRlIGNvbmZpZyBpdGVtcwogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RGVsZXRpbmcgYWxsIGNvbmZpZyBpdGVtcy4uLjwvZ3JlZW4+XG4iKTsKICAgICAgICAgICAgICAgICRTZWxmLT5EZWxldGVDb25maWdJdGVtcyggQ29uZmlnSXRlbUlEcyA9PiBcQENvbmZpZ0l0ZW1JRHMgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Db21tYW5kIGRlbGV0ZSB3YXMgY2FuY2VsZWQ8L3llbGxvdz5cbiIpOwogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5UaGVyZSBhcmUgTk8gY29uZmlnIGl0ZW1zIHRvIGRlbGV0ZS48L3llbGxvdz5cbiIpOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlbGV0ZSBsaXN0ZWQgY29uZmlnIGl0ZW1zCiAgICBlbHNpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggXEBDb25maWdJdGVtTnVtYmVycyApICkgewoKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKCiAgICAgICAgICAgICMgY2hlY2tzIHRoZSB2YWxpZGl0eSBvZiB0aGUgY29uZmlnIGl0ZW0gaWQKICAgICAgICAgICAgbXkgJElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRJRCkgewogICAgICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJElEOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlVuYWJsZSB0byBmaW5kIGNvbmZpZyBpdGVtICRDb25maWdJdGVtTnVtYmVyLjwveWVsbG93PlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIGNvbmZpZyBpdGVtcyAoaWYgYW55IHZhbGlkIG51bWJlciB3YXMgZ2l2ZW4pCiAgICAgICAgaWYgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5EZWxldGluZyBzcGVjaWZpZWQgY29uZmlnIGl0ZW1zLi4uPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgJFNlbGYtPkRlbGV0ZUNvbmZpZ0l0ZW1zKCBDb25maWdJdGVtSURzID0+IFxAQ29uZmlnSXRlbUlEcyApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlbGV0ZSBjb25maWcgaXRlbXMgdGhhdCBiZWxvbmcgdG8gdGhlIGNsYXNzCiAgICBlbHNpZiAoJENsYXNzKSB7CgogICAgICAgIG15IEBDb25maWdJdGVtSURzOwoKICAgICAgICAjIGdldCBjbGFzcyBsaXN0CiAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgVmFsaWQgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIGludmVydCB0aGUgaGFzaCB0byBoYXZlIHRoZSBjbGFzc2VzIG5hbWVzIGFzIGtleXMKICAgICAgICBteSAlQ2xhc3NOYW1lMklEID0gcmV2ZXJzZSAleyRDbGFzc0xpc3R9OwoKICAgICAgICBpZiAoICRDbGFzc05hbWUySUR7JENsYXNzfSApIHsKICAgICAgICAgICAgbXkgJElEID0gJENsYXNzTmFtZTJJRHskQ2xhc3N9OwoKICAgICAgICAgICAgIyBkZWZpbmUgdGhlIHNlYXJjaCBwYXJhbSBmb3IgdGhlIGNsYXNzIHNlYXJjaAogICAgICAgICAgICBteSAlU2VhcmNoUGFyYW0gPSAoCiAgICAgICAgICAgICAgICBSZXN1bHQgICA9PiAnQVJSQVknLAogICAgICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyRJRF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFsc28gYSBkZXBsb3ltZW50IHN0YXRlIGlzIGdpdmVuCiAgICAgICAgICAgIGlmICgkRGVwbG95bWVudFN0YXRlKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgICAgICBteSAkRGVwbG95bWVudFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBpbnZlcnQgdGhlIGhhc2ggdG8gaGF2ZSB0aGUgZGVwbG95bWVudCBzdGF0ZSBuYW1lcyBhcyBrZXlzCiAgICAgICAgICAgICAgICBteSAlRGVwbG95bWVudFN0YXRlMklEID0gcmV2ZXJzZSAleyREZXBsb3ltZW50U3RhdGVMaXN0fTsKCiAgICAgICAgICAgICAgICAjIGlmIHRoZSBkZXBsb3ltZW50IHN0YXRlIGlzIHZhbGlkCiAgICAgICAgICAgICAgICBpZiAoICREZXBsb3ltZW50U3RhdGUySUR7JERlcGxveW1lbnRTdGF0ZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICAgICAgICAgICAgICAgICAgbXkgJElEID0gJERlcGxveW1lbnRTdGF0ZTJJRHskRGVwbG95bWVudFN0YXRlfTsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgc2VhcmNoIHBhcmFtZXRlcgogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXtEZXBsU3RhdGVJRHN9ID0gWyRJRF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiVW5hYmxlIHRvIGZpbmQgZGVwbG95bWVudCBzdGF0ZSAkRGVwbG95bWVudFN0YXRlLiIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBpZHMgb2YgdGhpcyBjbGFzcyAoYW5kIG1heWJlIGRlcGxveW1lbnQgc3RhdGUpIGNvbmZpZyBpdGVtcwogICAgICAgICAgICBAQ29uZmlnSXRlbUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKCVTZWFyY2hQYXJhbSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiVW5hYmxlIHRvIGZpbmQgY2xhc3MgbmFtZSAkQ2xhc3MuIik7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgICAgIH0KCiAgICAgICAgIyBkZWxldGUgY29uZmlnIGl0ZW1zIChpZiBhbnkgdmFsaWQgbnVtYmVyIHdhcyBnaXZlbikKICAgICAgICBpZiAoQENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkRlbGV0aW5nIGNvbmZpZyBpdGVtcyB0aGF0IGJlbG9uZyB0byB0aGUgY2xhc3MgJENsYXNzLi4uPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgJFNlbGYtPkRlbGV0ZUNvbmZpZ0l0ZW1zKCBDb25maWdJdGVtSURzID0+IFxAQ29uZmlnSXRlbUlEcyApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlRoZXJlIGFyZSBubyBjb25maWcgaXRlbXMgdGhhdCBiZWxvbmcgdG8gdGhlIGNsYXNzICRDbGFzcy4uLjwveWVsbG93PlxuIik7CiAgICAgICAgfQogICAgfQoKICAgICMgZGVsZXRlIHZlcnNpb25zIG9sZGVyIHRoYW4geHggZGF5cyBmcm9tIGFsbCBjb25maWcgaXRlbXMKICAgIGVsc2lmICgkQWxsT2xkZXJUaGFuRGF5cykgewoKICAgICAgICBteSAkT2xkZXJEYXRlRFRPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAkT2xkZXJEYXRlRFRPYmplY3QtPlN1YnRyYWN0KAogICAgICAgICAgICBEYXlzID0+ICRBbGxPbGRlclRoYW5EYXlzLAogICAgICAgICk7CgogICAgICAgIG15ICRWZXJzaW9uc09sZGVyRGF0ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uTGlzdEFsbCgKICAgICAgICAgICAgT2xkZXJEYXRlID0+ICRPbGRlckRhdGVEVE9iamVjdC0+VG9TdHJpbmcoKSwKICAgICAgICApOwoKICAgICAgICAjIFdlIG5lZWQgdG8gZ2V0IGFsbCB2ZXJzaW9ucyB0byBtYWtlIHN1cmUgdGhhdCBhdCBsZWFzdCBvbmUgdmVyc2lvbiByZW1haW5zCiAgICAgICAgIyAtPiBpZiBvbmUgdmVyc2lvbiBvZiBhIGNvbmZpZ2l0ZW0gaXMgeW91bmdlciB0aGFuIHRoZSBhbW91bnQgb2YgZGF5cywKICAgICAgICAjICAgIHdlIGNhbiBkZWxldGUgYWxsIFZlcnNpb25zIHJlY2VpdmVkIGJ5IHRoZSAiT2xkZXJEYXRlIiBxdWVyeQogICAgICAgICMgLT4gaWYgbm8gdmVyc2lvbiBpcyB5b3VuZ2VyIHRoYW4gdGhlIGFtb3VudCBvZiBkYXlzCiAgICAgICAgIyAgICB3ZSBoYXZlIHRvIGtlZXAgb25lIHZlcnNpb24gb2YgdGhlICJPbGRlckRhdGUiIHF1ZXJ5IHJlc3VsdAogICAgICAgIG15ICRWZXJzaW9uc0FsbCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uTGlzdEFsbCgpOwoKICAgICAgICBteSBAVmVyc2lvbnNUb0RlbGV0ZTsKCiAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICV7JFZlcnNpb25zT2xkZXJEYXRlfSApIHsKCiAgICAgICAgICAgICMgbnVtYmVyIG9mIGZvdW5kIG9sZGVyIHZlcnNpb25zIG9mIHRoaXMgQ0kKICAgICAgICAgICAgbXkgJE51bWJlck9mT2xkZXJWZXJzaW9ucyA9IHNjYWxhciBrZXlzICV7ICRWZXJzaW9uc09sZGVyRGF0ZS0+eyRDb25maWdJdGVtSUR9IH07CgogICAgICAgICAgICAjIG51bWJlciBvZiBhbGwgdmVyc2lvbnMgb2YgdGhpcyBDSQogICAgICAgICAgICBteSAkTnVtYmVyT2ZBbGxWZXJzaW9ucyA9IHNjYWxhciBrZXlzICV7ICRWZXJzaW9uc0FsbC0+eyRDb25maWdJdGVtSUR9IH07CgogICAgICAgICAgICAjIG5leHQgaWYgdGhlcmUgYXJlIG5vIG9sZGVyIHZlcnNpb25zCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkTnVtYmVyT2ZPbGRlclZlcnNpb25zOwoKICAgICAgICAgICAgIyBuZXh0IGlmIHRoZXJlIGlzIG9ubHkgb25lIG9yIHplcm8gb2YgYWxsIHZlcnNpb25zCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICROdW1iZXJPZkFsbFZlcnNpb25zIDw9IDE7CgogICAgICAgICAgICAjIGlmIHRoZSBhbW91bnQgb2YgVmVyc2lvbnMgd2UgaGF2ZSB0byBkZWxldGUKICAgICAgICAgICAgIyBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSBhbW91bnQgb2YgQWxsVmVyc2lvbnMKICAgICAgICAgICAgIyB3ZSBoYXZlIHRvIGtlZXAgdGhlIGxhc3Qgb25lCiAgICAgICAgICAgICMgaW4gb3JkZXIgdG8ga2VlcCB0aGUgc3lzdGVtIHdvcmtpbmcKICAgICAgICAgICAgIwogICAgICAgICAgICAjIC0+IHNvIGxldCdzIHN0YXJ0IGNvdW50aW5nIGF0ICIxIiBpbnN0ZWFkIG9mICIwIgogICAgICAgICAgICAjIGluIG9yZGVyIHRvIHN0b3AgZGVsZXRpbmcgYmVmb3JlIHdlIHJlYWNoIHRoZSBuZXdlc3QgdmVyc2lvbgogICAgICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgICAgICBpZiAoICROdW1iZXJPZk9sZGVyVmVyc2lvbnMgPT0gJE51bWJlck9mQWxsVmVyc2lvbnMgKSB7CiAgICAgICAgICAgICAgICAkQ291bnQgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG1ha2Ugc3VyZSB0aGF0IHRoZSB2ZXJzaW9ucyBhcmUgbnVtZXJpY2FsbHkgc29ydGVkCiAgICAgICAgICAgIGZvciBteSAkVmVyc2lvbiAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICV7ICRWZXJzaW9uc09sZGVyRGF0ZS0+eyRDb25maWdJdGVtSUR9IH0gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkQ291bnQgPCAkTnVtYmVyT2ZPbGRlclZlcnNpb25zICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFZlcnNpb25zVG9EZWxldGUsICRWZXJzaW9uOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRTZWxmLT5EZWxldGVDb25maWdJdGVtVmVyc2lvbnMoCiAgICAgICAgICAgIFZlcnNpb25JRHMgPT4gXEBWZXJzaW9uc1RvRGVsZXRlLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSBhbGwgY29uZmlnIGl0ZW0gdmVyc2lvbnMgZXhjZXB0IHRoZSBuZXdlc3QgdmVyc2lvbgogICAgZWxzaWYgKCRBbGxPbGRWZXJzaW9ucykgewoKICAgICAgICBteSAkVmVyc2lvbnNBbGwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+VmVyc2lvbkxpc3RBbGwoKTsKCiAgICAgICAgbXkgQFZlcnNpb25zVG9EZWxldGU7CiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkVmVyc2lvbnNBbGwpICkgewoKICAgICAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAleyRWZXJzaW9uc0FsbH0gKSB7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkVmVyc2lvbnNBbGwtPnskQ29uZmlnSXRlbUlEfSApOwoKICAgICAgICAgICAgICAgICMgbWFrZSBzdXJlIHRoYXQgdGhlIHZlcnNpb25zIGFyZSBudW1lcmljYWxseSBzb3J0ZWQKICAgICAgICAgICAgICAgIG15IEBSZWR1Y2VkVmVyc2lvbnMgPSBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyAkVmVyc2lvbnNBbGwtPnskQ29uZmlnSXRlbUlEfSB9OwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHRoZSBsYXN0IChuZXdlc3QpIHZlcnNpb24KICAgICAgICAgICAgICAgIHBvcCBAUmVkdWNlZFZlcnNpb25zOwoKICAgICAgICAgICAgICAgIHB1c2ggQFZlcnNpb25zVG9EZWxldGUsIEBSZWR1Y2VkVmVyc2lvbnM7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRTZWxmLT5EZWxldGVDb25maWdJdGVtVmVyc2lvbnMoCiAgICAgICAgICAgIFZlcnNpb25JRHMgPT4gXEBWZXJzaW9uc1RvRGVsZXRlLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSBhbGwgY29uZmlnIGl0ZW0gdmVyc2lvbnMgYnV0IGtlZXAgdGhlIGxhc3QgWFggdmVyc2lvbnMKICAgIGVsc2lmICgkQWxsQnV0S2VlcExhc3QpIHsKCiAgICAgICAgbXkgJFZlcnNpb25zQWxsID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlZlcnNpb25MaXN0QWxsKCk7CgogICAgICAgIG15IEBWZXJzaW9uc1RvRGVsZXRlOwoKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRWZXJzaW9uc0FsbCkgKSB7CgogICAgICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICV7JFZlcnNpb25zQWxsfSApIHsKCiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRWZXJzaW9uc0FsbC0+eyRDb25maWdJdGVtSUR9ICk7CgogICAgICAgICAgICAgICAgIyBtYWtlIHN1cmUgdGhhdCB0aGUgdmVyc2lvbnMgYXJlIG51bWVyaWNhbGx5IHJldmVyc2Ugc29ydGVkCiAgICAgICAgICAgICAgICBteSBAUmVkdWNlZFZlcnNpb25zID0gcmV2ZXJzZSBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyAkVmVyc2lvbnNBbGwtPnskQ29uZmlnSXRlbUlEfSB9OwoKICAgICAgICAgICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgICAgICAgICBAUmVkdWNlZFZlcnNpb25zID0gZ3JlcCB7ICRDb3VudCsrOyAkQ291bnQgPiAkQWxsQnV0S2VlcExhc3QgfSBAUmVkdWNlZFZlcnNpb25zOwogICAgICAgICAgICAgICAgcHVzaCBAVmVyc2lvbnNUb0RlbGV0ZSwgQFJlZHVjZWRWZXJzaW9uczsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPkRlbGV0ZUNvbmZpZ0l0ZW1WZXJzaW9ucygKICAgICAgICAgICAgVmVyc2lvbklEcyA9PiBcQFZlcnNpb25zVG9EZWxldGUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIk5vIGNvbmZpZyBpdGVtIGZvciBkZWxldGUuIik7CiAgICB9CgogICAgIyBzaG93IHN1Y2Nlc3NmdWxsIG91dHB1dAogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKc3ViIERlbGV0ZUNvbmZpZ0l0ZW1zIHsKCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWxldGVkQ0k7CgogICAgIyBkZWxldGUgc3BlY2lmaWVkIGNvbmZpZyBpdGVtcwogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyAkUGFyYW17Q29uZmlnSXRlbUlEc30gfSApIHsKICAgICAgICBteSAkVHJ1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkVHJ1ZSApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlVuYWJsZSB0byBkZWxldGUgY29uZmlnIGl0ZW0gd2l0aCBpZCAkQ29uZmlnSXRlbUlELiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJERlbGV0ZWRDSSsrOwogICAgICAgIH0KICAgIH0KCiAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5EZWxldGVkICREZWxldGVkQ0kgY29uZmlnIGl0ZW0ocykuPC9ncmVlbj5cblxuIik7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBEZWxldGVDb25maWdJdGVtVmVyc2lvbnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtWZXJzaW9uSURzfSApOwoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRlbGV0aW5nIGNvbmZpZyBpdGVtIHZlcnNpb25zLjwvZ3JlZW4+XG5cbiIpOwoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uRGVsZXRlKAogICAgICAgIFZlcnNpb25JRHMgPT4gJFBhcmFte1ZlcnNpb25JRHN9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/DumpGraph.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ0l0ZW06OkR1bXBHcmFwaDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9IHF3KAogICAgS2VybmVsOjpTeXN0ZW06OkRCCiAgICBLZXJuZWw6OlN5c3RlbTo6TWFpbgopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignRHVtcCB0aGUgZ3JhcGggb2YgY29uZmlnIGl0ZW1zIGFzIFNWRyB0byB0aGUgZmlsZSBPVE9CT19JVFNNX0NvbmZpZ19JdGVtcy5zdmcuJyk7CgogICAgcmV0dXJuOwp9CgpzdWIgUHJlUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBDaGVjayB3aGV0aGVyIHRoZSBvcHRpb25hbCBtb2R1bGUgR3JhcGhWaXoyIGlzIGluc3RhbGxlZAogICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwogICAgaWYgKCAhJE1haW5PYmplY3QtPlJlcXVpcmUoJ0dyYXBoVml6MicpICkgewogICAgICAgICRTZWxmLT5QcmludEVycm9yKCJUaGUgb3B0aW9uYWwgUGVybCBtb2R1bGUgJ0dyYXBoVml6MicgaXMgbm90IGluc3RhbGxlZCIpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3I7CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CiAgICBteSAkUm93cyAgICAgPSAkREJPYmplY3QtPlNlbGVjdEFsbCgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1faWQsIHRhcmdldF9jb25maWdpdGVtX3ZlcnNpb25faWQsbGlua190eXBlX2lkCiAgRlJPTSBjb25maWdpdGVtX2xpbmsKRU5EX1NRTAogICAgKTsKCiAgICBteSAkR3JhcGggPSBHcmFwaFZpejItPm5ldygKICAgICAgICBlZGdlICAgPT4geyBjb2xvciAgICA9PiAnZ3JleScgfSwKICAgICAgICBnbG9iYWwgPT4geyBkaXJlY3RlZCA9PiAxIH0sCiAgICAgICAgZ3JhcGggID0+IHsKICAgICAgICAgICAgbGFiZWwgICA9PiAnT1RPQk8gSVRTTSBDb25maWcgSXRlbXMnLAogICAgICAgICAgICByYW5rZGlyID0+ICdUQicKICAgICAgICB9LAogICAgICAgIG5vZGUgPT4gewogICAgICAgICAgICBzaGFwZSA9PiAnb3ZhbCcsCiAgICAgICAgICAgIGNvbG9yID0+ICdibHVlJywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGxvb2sgb3ZlciB0aGUgZWRnZXMsIGFkZCBub2RlcywgYWRkIHRoZSBlZGdlcwogICAgbXkgJU5vZGVTZWVuOwogICAgZm9yIG15ICRSb3cgKCAkUm93cy0+QCogKSB7CiAgICAgICAgbXkgKCAkU291cmNlQ29uZmlnSXRlbUlELCAkU291cmNlVmVyc2lvbklELCAkVGFyZ2V0Q29uZmlnSXRlbUlELCAkVGFyZ2V0VmVyc2lvbklELCAkTGlua1R5cGVJRCApID0gJFJvdy0+QCo7CgogICAgICAgIG15ICRTb3VyY2VOYW1lID0gJFNvdXJjZUNvbmZpZ0l0ZW1JRCA/ICJDSSAkU291cmNlQ29uZmlnSXRlbUlEIiA6ICJWZXJzaW9uICRTb3VyY2VWZXJzaW9uSUQiOwogICAgICAgIGlmICggISROb2RlU2VlbnskU291cmNlTmFtZX0rKyApIHsKICAgICAgICAgICAgbXkgJFNoYXBlID0gJFNvdXJjZUNvbmZpZ0l0ZW1JRCA/ICdjaXJjbGUnIDogJ2RpYW1vbmQnOwogICAgICAgICAgICAkR3JhcGgtPmFkZF9ub2RlKAogICAgICAgICAgICAgICAgbmFtZSAgPT4gJFNvdXJjZU5hbWUsCiAgICAgICAgICAgICAgICBzaGFwZSA9PiAkU2hhcGUsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkVGFyZ2V0TmFtZSA9ICRUYXJnZXRDb25maWdJdGVtSUQgPyAiQ0kgJFRhcmdldENvbmZpZ0l0ZW1JRCIgOiAiVmVyc2lvbiAkVGFyZ2V0VmVyc2lvbklEIjsKICAgICAgICBpZiAoICEkTm9kZVNlZW57JFRhcmdldE5hbWV9KysgKSB7CiAgICAgICAgICAgIG15ICRTaGFwZSA9ICRUYXJnZXRDb25maWdJdGVtSUQgPyAnY2lyY2xlJyA6ICdkaWFtb25kJzsKICAgICAgICAgICAgJEdyYXBoLT5hZGRfbm9kZSgKICAgICAgICAgICAgICAgIG5hbWUgID0+ICRUYXJnZXROYW1lLAogICAgICAgICAgICAgICAgc2hhcGUgPT4gJFNoYXBlCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkR3JhcGgtPmFkZF9lZGdlKAogICAgICAgICAgICBmcm9tICA9PiAkU291cmNlTmFtZSwKICAgICAgICAgICAgdG8gICAgPT4gJFRhcmdldE5hbWUsCiAgICAgICAgICAgIGxhYmVsID0+ICJMaW5rIFR5cGUgJExpbmtUeXBlSUQiLAogICAgICAgICk7CgogICAgICAgICMgVE9ETzogY2x1c3RlciBhbmQgb3JkZXIgdGhlIHZlcnNpb25zIG9mIGEgQ0kKICAgICAgICAjJEdyYXBoLT5wdXNoX3N1YmdyYXBoKAogICAgICAgICMgICAgbmFtZSAgPT4gJ2NsdXN0ZXJfMScsCiAgICAgICAgIyAgICBncmFwaCA9PiB7bGFiZWwgPT4gJ0NoaWxkJ30sCiAgICAgICAgIyAgICBub2RlICA9PiB7Y29sb3IgPT4gJ21hZ2VudGEnLCBzaGFwZSA9PiAnZGlhbW9uZCd9LAogICAgICAgICMpOwogICAgICAgICMgJEdyYXBoLT5hZGRfZWRnZShmcm9tID0+ICdDaGFkc3RvbmUnLCB0byA9PiAnV2F2ZXJsZXknKTsKICAgICAgICAjICRHcmFwaC0+cG9wX3N1YmdyYXBoOwogICAgfQoKICAgIG15ICRPdXRwdXRGaWxlID0gJ09UT0JPX0lUU01fQ29uZmlnX0l0ZW1zLnN2Zyc7CiAgICAkR3JhcGgtPnJ1biggb3V0cHV0X2ZpbGUgPT4gJE91dHB1dEZpbGUgKTsKCiAgICAkU2VsZi0+UHJpbnQoIkR1bXAgZ3JhcGggaW4gJE91dHB1dEZpbGVcbiIpOwoKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPazsKfQoKMTsK</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/ListDuplicates.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXM7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oJ0xpc3QgQ29uZmlnSXRlbXMgd2hpY2ggaGF2ZSBhIG5vbi11bmlxdWUgbmFtZS4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2NsYXNzJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiQ2hlY2sgb25seSBjb25maWcgaXRlbXMgb2YgdGhpcyBjbGFzcy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uKi9zbXgsCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnc2NvcGUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZWZpbmUgdGhlIHNjb3BlIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayAoZ2xvYmFsfGNsYXNzKSIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLyhnbG9iYWx8Y2xhc3MpL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdhbGwtc3RhdGVzJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiQWxzbyBjaGVjayBjb25maWcgaXRlbXMgaW4gbm9uLXByb2R1Y3RpdmUgc3RhdGVzLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjbGFzcyBhcmd1bWVudAogICAgbXkgJENsYXNzID0gJFNlbGYtPkdldE9wdGlvbignY2xhc3MnKSAvLyAnJzsKCiAgICBpZiAoJENsYXNzKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgICMgaW52ZXJ0IHRoZSBoYXNoIHRvIGhhdmUgdGhlIGNsYXNzZXMnIG5hbWVzIGFzIGtleXMKICAgICAgICBteSAlQ2xhc3NOYW1lMklEID0gcmV2ZXJzZSAkQ2xhc3NMaXN0LT4lKjsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGlzIGNsYXNzIGV4aXN0cwogICAgICAgIGlmICggJENsYXNzTmFtZTJJRHskQ2xhc3N9ICkgewogICAgICAgICAgICBteSAkSUQgPSAkQ2xhc3NOYW1lMklEeyRDbGFzc307CgogICAgICAgICAgICAjIGdldCBpZHMgb2YgdGhpcyBjbGFzcycgY29uZmlnIGl0ZW1zCiAgICAgICAgICAgICRTZWxmLT57U2VhcmNoQ3JpdGVyaWF9LT57Q2xhc3NJRHN9ID0gWyRJRF07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBkaWUgIkNsYXNzICRDbGFzcyBkb2VzIG5vdCBleGlzdC4uLlxuIjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93Pkxpc3RpbmcgZHVwbGljYXRlcyBvZiBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cblxuIik7CgogICAgaWYgKCAhJFNlbGYtPkdldE9wdGlvbignYWxsLXN0YXRlcycpICkgewoKICAgICAgICAjIExpbWl0IHRoZSBjaGVja2VkIGNvbmZpZyBpdGVtcyBieSBkZXBsb3ltZW50IHN0YXRlCiAgICAgICAgbXkgJFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgICAgIEZ1bmN0aW9uYWxpdHkgPT4gWyAncHJlcHJvZHVjdGl2ZScsICdwcm9kdWN0aXZlJyBdLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICRTZWxmLT57U2VhcmNoQ3JpdGVyaWF9LT57RGVwbFN0YXRlSURzfSA9IFsga2V5cyAkU3RhdGVMaXN0LT4lKiBdOwogICAgfQoKICAgICMgZ2V0IElUU01Db25maWdJdGVtIG9iamVjdAogICAgbXkgJElUU01Db25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBnZXQgYWxsIGNvbmZpZyBpdGVtcyBpZHMKICAgIG15IEBDb25maWdJdGVtSURzID0gJElUU01Db25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICRTZWxmLT57U2VhcmNoQ3JpdGVyaWF9LT4lKiwKICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICk7CgogICAgIyBnZXQgbnVtYmVyIG9mIGNvbmZpZyBpdGVtcwogICAgbXkgJENJQ291bnQgPSBzY2FsYXIgQENvbmZpZ0l0ZW1JRHM7CgogICAgIyBnZXQgY2xhc3MgYXJndW1lbnQKICAgIG15ICRDbGFzcyA9ICRTZWxmLT5HZXRPcHRpb24oJ2NsYXNzJykgLy8gJyc7CgogICAgIyBpZiB0aGVyZSBhcmUgYW55IENJIHRvIGNoZWNrCiAgICBpZiAoJENJQ291bnQpIHsKCiAgICAgICAgIyBpZiB0aGUgc2NvcGUgd2FzIGV4cGxpY2l0ZWx5IGRlZmluZWQsIHNldCBpdCwgb3RoZXJ3aXNlIHRoaXMgc2NyaXB0IHdpbGwgZmFsbCBiYWNrIHRvIHRoZQogICAgICAgICMgdmFsdWUgc2V0IGluIFN5c0NvbmZpZwogICAgICAgIG15ICRTY29wZSA9ICRTZWxmLT5HZXRPcHRpb24oJ3Njb3BlJyk7CiAgICAgICAgaWYgKCRTY29wZSkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5TZXQoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZScsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkU2NvcGUsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJENsYXNzKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5DaGVja2luZyBjb25maWcgaXRlbXMgb2YgY2xhc3MgJENsYXNzLi4uPC95ZWxsb3c+XG4iKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5DaGVja2luZyBhbGwgY29uZmlnIGl0ZW1zLi4uXG48L3llbGxvdz5cbiIpOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPlByaW50KCAiPGdyZWVuPiIgLiAoICc9JyB4IDY5ICkgLiAiPC9ncmVlbj5cbiIgKTsKCiAgICAgICAgbXkgJER1cGxpY2F0ZXNGb3VuZCA9IDA7CgogICAgICAgICMgY2hlY2sgY29uZmlnIGl0ZW1zCiAgICAgICAgQ09ORklHX0lURU1fSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBjb25maWcgaXRlbQogICAgICAgICAgICBteSAkVmVyc2lvbiA9ICRJVFNNQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fSUQgdW5sZXNzICRWZXJzaW9uOwoKICAgICAgICAgICAgaWYgKCAhJFZlcnNpb24tPntOYW1lfSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Ta2lwcGluZyBDb25maWdJdGVtICRDb25maWdJdGVtSUQgYXMgaXQgZG9lc24ndCBoYXZlIGEgbmFtZS5cbjwvcmVkPlxuIik7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdfSVRFTV9JRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJER1cGxpY2F0ZXMgPSAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QtPlVuaXF1ZU5hbWVDaGVjaygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRWZXJzaW9uLT57Q2xhc3NJRH0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFZlcnNpb24tPntOYW1lfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJER1cGxpY2F0ZXMpICkgewoKICAgICAgICAgICAgICAgICREdXBsaWNhdGVzRm91bmQgPSAxOwoKICAgICAgICAgICAgICAgIG15IEBEdXBsaWNhdGVEYXRhID0KICAgICAgICAgICAgICAgICAgICBtYXAgeyAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoIENvbmZpZ0l0ZW1JRCA9PiAkXyApIH0KICAgICAgICAgICAgICAgICAgICAkRHVwbGljYXRlcy0+QCo7CgogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KAogICAgICAgICAgICAgICAgICAgICI8eWVsbG93PkNvbmZpZ0l0ZW0gJFZlcnNpb24tPntOdW1iZXJ9IChOYW1lOiAkVmVyc2lvbi0+e05hbWV9LCBDb25maWdJdGVtSUQ6ICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiJFZlcnNpb24tPntDb25maWdJdGVtSUR9KSBoYXMgdGhlIGZvbGxvd2luZyBkdXBsaWNhdGVzOjwveWVsbG93PlxuIgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGxpc3QgYWxsIHRoZSBkZXRhaWxzIG9mIHRoZSBkdXBsaWNhdGVzCiAgICAgICAgICAgICAgICBmb3IgbXkgJER1cGxpY2F0ZVZlcnNpb24gKEBEdXBsaWNhdGVEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KAogICAgICAgICAgICAgICAgICAgICAgICAiXG48Z3JlZW4+XHQgKiAkRHVwbGljYXRlVmVyc2lvbi0+e051bWJlcn0gKENvbmZpZ0l0ZW1JRDogJER1cGxpY2F0ZVZlcnNpb24tPntDb25maWdJdGVtSUR9KTwvZ3JlZW4+XG4iCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoICI8Z3JlZW4+IiAuICggJy0nIHggNjkgKSAuICI8L2dyZWVuPlxuIiApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJER1cGxpY2F0ZXNGb3VuZCkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5GaW5pc2hlZCBjaGVja2luZyBmb3IgZHVwbGljYXRlIG5hbWVzLlxuPC9ncmVlbj5cbiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93Pk5vIGR1cGxpY2F0ZSBuYW1lcyBmb3VuZC5cbjwveWVsbG93PlxuIik7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlRoZXJlIGFyZSBOTyBjb25maWcgaXRlbXMgdG8gY2hlY2suXG48L3llbGxvdz5cbiIpOwogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUuPC9ncmVlbj5cbiIpOwoKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ConfigItem/UpgradeTo11.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6VXBncmFkZVRvMTE7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCnVzZSBQYXRoOjpDbGFzcyBxdyhkaXIpOwp1c2UgTGlzdDo6VXRpbCAgcXcoYW55IHVuaXEpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpGb3JlYWNoVG9Gb3IpCgojIEluZm9ybSB0aGUgb2JqZWN0IG1hbmFnZXIgYWJvdXQgdGhlIGhhcmQgZGVwZW5kZW5jaWVzLgojIFRoaXMgbW9kdWxlIG11c3QgYmUgZGlzY2FyZGVkIHdoZW4gb25lIG9mIHRoZSBoYXJkIGRlcGVuZGVuY2llcyBoYXMgYmVlbiBkaXNjYXJkZWQuCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkNJQXR0YWNobWVudFN0b3JhZ2U6OkF0dGFjaG1lbnRTdG9yYWdlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OlBhY2thZ2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpYTUwnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ0l0ZW06OlVwZ3JhZGVUbzExIC0gc3VwcG9ydCBmb3IgdXBncmFkaW5nIHRoZSBDTURCCgo9aGVhZDEgREVTQ1JJUFRJT04KCk1vZHVsZSBmb3IgdGhlIGNvbnNvbGUgY29tbWFuZCBDPEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpVcGdyYWRlVG8xMT4uCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWN1dAoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbigKICAgICAgICAnVXBncmFkZSB0aGUgY29tcGxldGUgQ01EQiBmcm9tIE9UT0JPIDEwIHRvIE9UT0JPIDExLiBBbGwgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgd2lsbCBiZSBjaGFuZ2VkLCBmb3IgZWFjaCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgYSBkeW5hbWljIGZpZWxkIHdpbGwgYmUgcHJlcGFyZWQgYW5kIHRoZSBkYXRhIHdpbGwgYmUgbWlncmF0ZWQuJwogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3VzZS1kZWZhdWx0cycsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIk1ha2UgdGhlIHNjcmlwdCBub24gaW50ZXJhY3RpdmUuIEFsd2F5cyB1c2UgZGVmYXVsdCBzdWdnZXN0aW9ucyBhbmQgZG8gbm90IGdpdmUgdGhlIGNoYW5jZSB0byBjdXN0b21pemUgdGhlIHNjaGVtYXRhLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3N0YXJ0LWF0JywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiU3RhcnQgYXQgYSBjZXJ0YWluIHN0ZXAuIFZhbGlkIHZhbHVlcyBhcmU6IDAgLSBSZXN0YXJ0IGNvbXBsZXRlbHk7IDEgLSIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyL15bMC00XSQvLAogICAgKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3RtcGRpcicsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIlByb3ZpZGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRvIHN0b3JlIG1hcHBpbmdzIGFuZCBzY2hlbWF0YS4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uLywKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICduby1uYW1lc3BhY2UnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJQcm92aWRlIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgYXR0cmlidXRlcyB3aGljaCBhcmUgdG8gYmUgZ2VuZXJhdGVkIHdpdGhvdXQgbmFtZXNwYWNlLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4vLAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gMTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgRGVjbGFyYXRpb24gb2YgcHJvY2Vzc2luZyBzdGVwcy4KICAgICMgVGhpcyBhbGxvd3MgcGlja2luZyB1cCBwcm9jZXNzaW5nIGF0IGEgc3BlY2lmaWMgc3RlcC4gT24gdGhlIGNvbW1hbmQgbGluZQogICAgIyB0aGUgc3RlcHMgYXJlIG51bWJlcmVkLCBzdGFydGluZyBhdCAxLgogICAgbXkgQFN0ZXBEZWNsYXJhdGlvbnMgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgID0+ICdQcmVwYXJlIEF0dHJpYnV0ZSBNYXBwaW5nJywKICAgICAgICAgICAgSGFuZGxlciA9PiBcJl9QcmVwYXJlQXR0cmlidXRlTWFwcGluZywKICAgICAgICB9LAoKICAgICAgICAjICdQcmVwYXJlIER5bmFtaWNGaWVsZHMnLCAgIyBuZWNlc3Nhcnk/IHdoYXQgZG8gd2Ugd2FudCB0byBtYWtlIGNvbmZpZ3VyYWJsZSBiZXNpZGVzIHRoZSBuYW1lPyAoc3RlcCAwKQogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICA9PiAnUHJlcGFyZSBEZWZpbml0aW9ucycsCiAgICAgICAgICAgIEhhbmRsZXIgPT4gXCZfUHJlcGFyZURlZmluaXRpb25zLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgID0+ICdNaWdyYXRlIERlZmluaXRpb25zJywKICAgICAgICAgICAgSGFuZGxlciA9PiBcJl9NaWdyYXRlRGVmaW5pdGlvbnMsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgPT4gJ01pZ3JhdGUgQXR0cmlidXRlIERhdGEnLAogICAgICAgICAgICBIYW5kbGVyID0+IFwmX01pZ3JhdGVBdHRyaWJ1dGVEYXRhLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgID0+ICdEZWxldGUgTGVnYWN5IERhdGEnLAogICAgICAgICAgICBIYW5kbGVyID0+IFwmX0RlbGV0ZUxlZ2FjeURhdGEsCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJFRlbXBEaXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1RlbXBEaXInKTsKCiAgICAkU2VsZi0+e1dvcmtpbmdEaXJ9ICA9ICRTZWxmLT5HZXRPcHRpb24oJ3RtcGRpcicpIHx8ICIkVGVtcERpci9DTURCVXBncmFkZVRvMTFTY2hlbWF0YSI7CiAgICAkU2VsZi0+e1VzZURlZmF1bHRzfSA9ICRTZWxmLT5HZXRPcHRpb24oJ3VzZS1kZWZhdWx0cycpOwogICAgJFNlbGYtPntOb05hbWVzcGFjZX0gPSAkU2VsZi0+R2V0T3B0aW9uKCduby1uYW1lc3BhY2UnKTsKICAgIG15ICRTdGFydEF0ID0gJFNlbGYtPkdldE9wdGlvbignc3RhcnQtYXQnKSAvLyAkU2VsZi0+X0dldEN1cnJlbnRTdGVwKCk7CgogICAgaWYgKCRTdGFydEF0KSB7CiAgICAgICAgaWYgKCAhLWQgJFNlbGYtPntXb3JraW5nRGlyfSApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPk5lZWQgZXhpc3Rpbmcgd29ya2luZyBkaXJlY3RvcnkgJyRTZWxmLT57V29ya2luZ0Rpcn0nLjwvcmVkPlxuIik7CgogICAgICAgICAgICBkaWU7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+Q29udGludWUgQ01EQiB1cGdyYWRlIGF0OiAnJFN0ZXBEZWNsYXJhdGlvbnNbICRTdGFydEF0IF0tPntOYW1lfSchPC95ZWxsb3c+XG4iKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5TdGFydGluZyBDTURCIHVwZ3JhZGUhPC95ZWxsb3c+XG4iKTsKICAgIH0KCiAgICAkU2VsZi0+e0dlbmVyYWxDYXRhbG9nT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgJFNlbGYtPntDb25maWdJdGVtT2JqZWN0fSAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICRTZWxmLT57WUFNTE9iamVjdH0gICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKCiAgICAjIGxpc3Qgb2YgQ29uZmlnSXRlbSBjbGFzc2VzLCBlaXRoZXIgaW4gT1RPQk8gMTAgb3IgT1RPQk8gMTEgZm9ybWF0CiAgICAkU2VsZi0+e0NsYXNzTGlzdH0gPSAkU2VsZi0+e0dlbmVyYWxDYXRhbG9nT2JqZWN0fS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgIyBnZXQgY29tcGxldGUgaGlzdG9yeSBvZiB0aGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBjb25maWdpdGVtIGNsYXNzCiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAkU2VsZi0+e0NsYXNzTGlzdH0tPiUqICkgewogICAgICAgICRTZWxmLT57RGVmaW5pdGlvbkxpc3R9eyRDbGFzc0lEfSA9ICRTZWxmLT57Q29uZmlnSXRlbU9iamVjdH0tPkRlZmluaXRpb25MaXN0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CiAgICB9CgogICAgbXkgJFN1Y2Nlc3M7CiAgICBTVEVQOgogICAgZm9yIG15ICRDdXJyZW50U3RlcCAoICRTdGFydEF0IC4uICQjU3RlcERlY2xhcmF0aW9ucyApIHsKICAgICAgICBteSAkU3RlcERlY2xhcmF0aW9uID0gJFN0ZXBEZWNsYXJhdGlvbnNbJEN1cnJlbnRTdGVwXTsKICAgICAgICAkU2VsZi0+UHJpbnQoIlxuPGdyZWVuPn5+IFN0ZXAgJEN1cnJlbnRTdGVwIH5+XG5TdGFydCB3b3JraW5nIG9uICRTdGVwRGVjbGFyYXRpb24tPntOYW1lfTwvZ3JlZW4+XG4iKTsKICAgICAgICAkU3VjY2VzcyA9ICRTdGVwRGVjbGFyYXRpb24tPntIYW5kbGVyfS0+KAogICAgICAgICAgICAkU2VsZiwKICAgICAgICAgICAgQ3VycmVudFN0ZXAgPT4gJEN1cnJlbnRTdGVwLAogICAgICAgICk7CgogICAgICAgIGxhc3QgU1RFUCB1bmxlc3MgJFN1Y2Nlc3M7CiAgICAgICAgbGFzdCBTVEVQIHVubGVzcyAkU3VjY2VzcyBlcSAnTmV4dCc7CiAgICB9CgogICAgaWYgKCRTdWNjZXNzKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZSE8L2dyZWVuPlxuIik7CgogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPazsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5BbiBlcnJvciBvY2N1cnJlZCE8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3I7CiAgICB9Cn0KCj1oZWFkMSBQUklWQVRFIE1FVEhPRFMKCj1oZWFkMiAgX0dldEN1cnJlbnRTdGVwKCkKClRoaXMgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCgo9Y3V0CgpzdWIgX0dldEN1cnJlbnRTdGVwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIDA7Cn0KCj1oZWFkMiBfUHJlcGFyZUF0dHJpYnV0ZU1hcHBpbmcoKQoKQ29sbGVjdCB0aGUgYXR0cmlidXRlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGluIGFueSB2ZXJzaW9uIG9mIGFueSBvZiB0aGUgbGVnYWN5IGNvbmZpZyBpdGVtIGNsYXNzZXMuCgpPbmUgbWFwcGluZyBpcyBkdW1wZWQgcGVyIGNvbmZpZyBpdGVtIGNsYXNzLiBUaGlzIG1hcHBpbmcgbWFwcyB0aGUga2V5IG9mIHRoZSBsZWdhY3kgYXR0cmlidXRlCnRvIHRoZSBuYW1lIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBjb25maWcgaXRlbSBpbiBPVE9CTyAxMS4KCj1jdXQKCnN1YiBfUHJlcGFyZUF0dHJpYnV0ZU1hcHBpbmcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIFRPRE86IGNyZWF0ZSBkaXJlY3RvcnkgaW4gYW4gaW5pdGlhbGl6YXRpb24gc3Vicm91dGluZQogICAgaWYgKCAhLWQgJFNlbGYtPntXb3JraW5nRGlyfSApIHsKICAgICAgICBkaXIoICRTZWxmLT57V29ya2luZ0Rpcn0gKS0+bWtwYXRoKCAwLCBvY3QoJzc3MCcpICk7ICAgICMgMCB0dXJucyBvZmYgdmVyYm9zaXR5CiAgICB9CgogICAgaWYgKCAhLWQgJFNlbGYtPntXb3JraW5nRGlyfSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Q291bGQgbm90IGNyZWF0ZSB0aGUgd29ya2luZyBkaXJlY3RvcnkgJzwvcmVkPiRTZWxmLT57V29ya2luZ0Rpcn08cmVkPicuPC9yZWQ+XG4iKTsKCiAgICAgICAgZGllOwogICAgfQoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Xcml0aW5nIGF0dHJpYnV0ZSBtYXBzIGludG88L3llbGxvdz4gJFNlbGYtPntXb3JraW5nRGlyfVxuIik7CgogICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgIG15ICVOb05hbWVzcGFjZTsKICAgIGlmICggJFNlbGYtPntOb05hbWVzcGFjZX0gKSB7CiAgICAgICAgJU5vTmFtZXNwYWNlID0gbWFwIHsgJF8gPT4gMSB9IHNwbGl0KCAvXHMqLFxzKi8sICRTZWxmLT57Tm9OYW1lc3BhY2V9ICk7CiAgICB9CgogICAgQ0xBU1NfSUQ6CiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAkU2VsZi0+e0NsYXNzTGlzdH0tPiUqICkgewoKICAgICAgICAjIExvb3Agb3ZlciBhbGwgdmVyc2lvbnMgb2YgZGVmaW5pdGlvbnMgZm9yIHRoYXQgY29uZmlnIGl0ZW0gY2xhc3MKICAgICAgICBteSBAQXR0cmlidXRlS2V5czsKICAgICAgICBmb3IgbXkgJERlZmluaXRpb24gKCAkU2VsZi0+e0RlZmluaXRpb25MaXN0fXskQ2xhc3NJRH0tPkAqICkgewogICAgICAgICAgICBteSBAQXR0cmlidXRlc0ZvclZlcnNpb24gPSAkU2VsZi0+X0dldEF0dHJpYnV0ZXNGcm9tTGVnYWN5WUFNTCgKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9ufSwKICAgICAgICAgICAgICAgIFJlY3VTdWJzICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgbm90IGNhcmluZyBhYm91dCBkdXBsaWNhdGVzIGhlcmUKICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlS2V5cywgbWFwIHsgJF8tPntLZXl9IH0gQEF0dHJpYnV0ZXNGb3JWZXJzaW9uOwogICAgICAgIH0KCiAgICAgICAgIyBkbyBub3Qgd3JpdGUgYW4gYXR0cmlidXRlIG1hcCBmb3IgT1RPQk8gMTEgY29uZmlnIGl0ZW1zCiAgICAgICAgIyBUT0RPOiBtYXliZSBjaGVjayBmb3IgYSBtaXggb2YgT1RPQk8gMTAgYW5kIE9UT0JPIDExIGZvcm1hdHMKICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyBAQXR0cmlidXRlS2V5czsKCiAgICAgICAgbXkgJE5hbWVzcGFjZSA9ICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gPX4gcy9bXlx3XGRdLy9ncjsKCiAgICAgICAgIyBUT0RPOiB3aGF0IGlzIHNwZWNpYWwgYWJvdXQgVW1sYXV0cyBhbmQgw58KICAgICAgICBteSAlU3Vic3RpdGlvbnMgPSAoCiAgICAgICAgICAgICfDpCcgPT4gJ2FlJywKICAgICAgICAgICAgJ8O2JyA9PiAnb2UnLAogICAgICAgICAgICAnw7wnID0+ICd1ZScsCiAgICAgICAgICAgICfDnycgPT4gJ3NzJywKICAgICAgICAgICAgJ18nICA9PiAnJywKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJFN1YiAoIHNvcnQga2V5cyAlU3Vic3RpdGlvbnMgKSB7CiAgICAgICAgICAgICROYW1lc3BhY2UgPX4gcy8kU3ViLyRTdWJzdGl0aW9uc3skU3VifS87CiAgICAgICAgfQoKICAgICAgICBteSAlQXR0cmlidXRlTWFwOwogICAgICAgIGZvciBteSAkS2V5ICggdW5pcSBAQXR0cmlidXRlS2V5cyApIHsKICAgICAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICRLZXkgPX4gcy9bXlx3XGRdLy9ncjsKICAgICAgICAgICAgZm9yIG15ICRTdWIgKCBzb3J0IGtleXMgJVN1YnN0aXRpb25zICkgewogICAgICAgICAgICAgICAgJEZpZWxkTmFtZSA9fiBzLyRTdWIvJFN1YnN0aXRpb25zeyRTdWJ9LzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJEF0dHJpYnV0ZU1hcHskS2V5fSA9ICROb05hbWVzcGFjZXskS2V5fSA/ICRGaWVsZE5hbWUgOiAkTmFtZXNwYWNlIC4gJy0nIC4gJEZpZWxkTmFtZTsKICAgICAgICB9CgogICAgICAgIG15ICRNYXBZQU1MID0gJFNlbGYtPntZQU1MT2JqZWN0fS0+RHVtcCgKICAgICAgICAgICAgRGF0YSA9PiBcJUF0dHJpYnV0ZU1hcCwKICAgICAgICApOwoKICAgICAgICAkTWFpbk9iamVjdC0+RmlsZVdyaXRlKAogICAgICAgICAgICBEaXJlY3RvcnkgPT4gJFNlbGYtPntXb3JraW5nRGlyfSwKICAgICAgICAgICAgRmlsZW5hbWUgID0+ICdBdHRyaWJ1dGVNYXBfJyAuICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gLiAnLnltbCcsCiAgICAgICAgICAgIENvbnRlbnQgICA9PiBcJE1hcFlBTUwsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPl9Db250aW51ZU9yTm90KCBDdXJyZW50U3RlcCA9PiAkUGFyYW17Q3VycmVudFN0ZXB9ICk7Cn0KCnN1YiBfUHJlcGFyZURlZmluaXRpb25zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PldyaXRpbmcgY2xhc3MgZGVmaW5pdGlvbnMuPC95ZWxsb3c+XG4iKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgIyB3aGVuIGNoZWNraW5nIGZvciB0aGUgbmVjZXNzYXJ5IHBhY2thZ2VzIHRvIGluc3RhbGwgd2l0aG91dCAtLXVzZS1kZWZhdWx0cwogICAgIyBpZiBleGlzdHMgbW9yZSB0aGFuIG9uZSBlbGVtZW50IG9yIG1vcmUgdGhhbiBvbmUgdmVyc2lvbiBvZiBhbiBlbGVtZW50IHRoYXQgcmVxdWlyZXMgYSBwYWNrYWdlCiAgICAjIHRoZSBzYW1lIG1lc3NhZ2UgaXMgaXNzdWVkIHJlcGVhdGVkbHkgcmVmZXJyaW5nIHRvIHRoZSBzYW1lIHBhY2thZ2UKICAgICMgdGhpcyBoYXNoIGlzIHVzZWQgdG8gcHJldmVudCBtZXNzYWdlIHJlcGV0aXRpb24KICAgIG15ICVDaGVja2VkUGFja2FnZXM7CgogICAgJFNlbGYtPntNaXNzaW5nUGFja2FnZXN9ID0gMDsKCiAgICBDTEFTU19JRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICRTZWxmLT57Q2xhc3NMaXN0fS0+JSogKSB7CgogICAgICAgIG15ICRGaWxlbmFtZUNsZWFuID0gJE1haW5PYmplY3QtPkZpbGVuYW1lQ2xlYW5VcCgKICAgICAgICAgICAgRmlsZW5hbWUgPT4gJ0F0dHJpYnV0ZU1hcF8nIC4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICcueW1sJywKICAgICAgICApOwoKICAgICAgICAjIFNraXAgdGhlIGNsYXNzIHdoZW4gdGhlcmUgaXMgbm8gYXR0cmlidXRlIG1hcHBpbmcuCiAgICAgICAgbmV4dCBDTEFTU19JRCB1bmxlc3MgLWUgJFNlbGYtPntXb3JraW5nRGlyfSAuICcvJyAuICRGaWxlbmFtZUNsZWFuOwoKICAgICAgICBteSAkTWFwUmVmID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgICAgICBEaXJlY3RvcnkgPT4gJFNlbGYtPntXb3JraW5nRGlyfSwKICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZUNsZWFuLAogICAgICAgICk7CgogICAgICAgICMgU2tpcCB0aGUgY2xhc3Mgd2hlbiB0aGVyZSBpcyBubyBhdHRyaWJ1dGUgbWFwcGluZy4KICAgICAgICAjIFRoaXMgaGFwcGVucyB3aGVuIHRoZSBmaWxlIHdhcyByZW1vdmVkIG9yIHdoZW4gdGhlIGNsYXNzIGFscmVhZHkgd2FzIGluIE9UT0JPIDExIGZvcm1hdC4KICAgICAgICAjIFRPRE86IGhlcmUgaXQgaXMgYW4gZXJyb3Igbm93LCB3ZSBkb24ndCBldmVuIHRyeSBpZiB0aGUgZmlsZSBpcyByZW1vdmVkCiAgICAgICAgbmV4dCBDTEFTU19JRCB1bmxlc3MgZGVmaW5lZCAkTWFwUmVmOwoKICAgICAgICBteSAkQXR0cmlidXRlTWFwID0gJFNlbGYtPntZQU1MT2JqZWN0fS0+TG9hZCgKICAgICAgICAgICAgRGF0YSA9PiAkeyRNYXBSZWZ9LAogICAgICAgICk7CgogICAgICAgICMgYSBzYW5pdHkgY2hlY2sKICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyByZWYgJEF0dHJpYnV0ZU1hcCBlcSAnSEFTSCc7CgogICAgICAgIGZvciBteSAkRGVmaW5pdGlvbiAoICRTZWxmLT57RGVmaW5pdGlvbkxpc3R9eyRDbGFzc0lEfS0+QCogKSB7CiAgICAgICAgICAgIG15IEBBdHRyaWJ1dGVzID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVzRnJvbUxlZ2FjeVlBTUwoCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkRGVmaW5pdGlvbllBTUwgPSAkU2VsZi0+X0dlbmVyYXRlRGVmaW5pdGlvbllBTUwoCiAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzICAgICAgPT4gXEBBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwICAgID0+ICRBdHRyaWJ1dGVNYXAsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgPT4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSwKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgICAgICAgICBDaGVja2VkUGFja2FnZXMgPT4gXCVDaGVja2VkUGFja2FnZXMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkRmlsZUxvY2F0aW9uID0gJE1haW5PYmplY3QtPkZpbGVXcml0ZSgKICAgICAgICAgICAgICAgIERpcmVjdG9yeSA9PiAkU2VsZi0+e1dvcmtpbmdEaXJ9LAogICAgICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gLiAnX0NJRGVmaW5pdGlvbl8nIC4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9IC4gJy55bWwnLAogICAgICAgICAgICAgICAgQ29udGVudCAgID0+IFwkRGVmaW5pdGlvbllBTUwtPntDb25maWdJdGVtfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRGaWxlTG9jYXRpb24gPSAkTWFpbk9iamVjdC0+RmlsZVdyaXRlKAogICAgICAgICAgICAgICAgRGlyZWN0b3J5ID0+ICRTZWxmLT57V29ya2luZ0Rpcn0sCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICdfREZEZWZpbml0aW9uXycgLiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0gLiAnLnltbCcsCiAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gXCREZWZpbml0aW9uWUFNTC0+e0R5bmFtaWNGaWVsZH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJFNlbGYtPntNaXNzaW5nUGFja2FnZXN9ICkgewogICAgICAgICRTZWxmLT5QcmludCgiXG48cmVkPkltcG9ydCBmYWlsZWQuIFRoZXJlIGFyZSAkU2VsZi0+e01pc3NpbmdQYWNrYWdlc30gbmVjZXNzYXJ5IHBhY2thZ2UocykgbWlzc2luZyBpbnN0YWxsYXRpb24uPC9yZWQ+XG4iKTsKICAgICAgICByZXR1cm4gJ0V4aXQnOwogICAgfQoKICAgIHJldHVybiAkU2VsZi0+X0NvbnRpbnVlT3JOb3QoIEN1cnJlbnRTdGVwID0+ICRQYXJhbXtDdXJyZW50U3RlcH0gKTsKfQoKc3ViIF9NaWdyYXRlRGVmaW5pdGlvbnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+SW1wb3J0IGRlZmluaXRpb25zLjwveWVsbG93PlxuIik7CgogICAgbXkgJE1haW5PYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICBteSAkREJPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CiAgICBteSAkWUFNTE9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkWE1MT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlhNTCcpOwoKICAgICMga2VlcCB0aGUgbGVnYWN5IGRlZmluaXRpb24gZm9yIG5vdwogICAgbXkgJENvbHVtbkFkZFhNTCA9IDw8J0VORF9YTUwnOwo8VGFibGVBbHRlciBOYW1lPSJjb25maWdpdGVtX2RlZmluaXRpb24iPgogIDxDb2x1bW5BZGQgTmFtZT0iY29uZmlnaXRlbV9kZWZpbml0aW9uX2xlZ2FjeSIgUmVxdWlyZWQ9ImZhbHNlIiBUeXBlPSJMT05HQkxPQiIgLz4KPC9UYWJsZUFsdGVyPgpFTkRfWE1MCgogICAgIyBDcmVhdGUgZGF0YWJhc2Ugc3BlY2lmaWMgU1FMIGFuZCBQb3N0U1FMIGNvbW1hbmRzIG91dCBvZiBYTUwuCiAgICBteSBAQWRkWE1MQVJSQVkgPSAkWE1MT2JqZWN0LT5YTUxQYXJzZSggU3RyaW5nID0+ICRDb2x1bW5BZGRYTUwgKTsKCiAgICAjIENyZWF0ZSBkYXRhYmFzZSBzcGVjaWZpYyBTUUwuCiAgICBteSBAQ29sdW1uQWRkU1FMID0gJERCT2JqZWN0LT5TUUxQcm9jZXNzb3IoCiAgICAgICAgRGF0YWJhc2UgPT4gXEBBZGRYTUxBUlJBWSwKICAgICk7CgogICAgIyBDcmVhdGUgZGF0YWJhc2Ugc3BlY2lmaWMgUG9zdFNRTC4KICAgIG15IEBDb2x1bW5BZGRTUUxQb3N0ID0gJERCT2JqZWN0LT5TUUxQcm9jZXNzb3JQb3N0KCk7CgogICAgIyBFeGVjdXRlIFNRTC4KICAgIGZvciBteSAkU1FMICggQENvbHVtbkFkZFNRTCwgQENvbHVtbkFkZFNRTFBvc3QgKSB7CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKCBTUUwgPT4gJFNRTCApOwogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICAgICAiPHllbGxvdz5Db3VsZCBub3QgY2xvbmUgdGhlIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBjb2x1bW4gREIgdGFibGUuIElmIHlvdSBhdHRlbXB0ZWQgdGhpcyBzdGVwIGVhcmxpZXIsIHBsZWFzZSB3cml0ZSAnY29uJyB0byBjb250aW51ZS48L3llbGxvdz5cblx0IgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuIGlmIDxTVERJTj4gIX4gbS9eY29uKHRpbnVlKT8kLzsKICAgICAgICB9CiAgICB9CgogICAgJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJ1VQREFURSBjb25maWdpdGVtX2RlZmluaXRpb24gU0VUIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbl9sZWdhY3kgPSBjb25maWdpdGVtX2RlZmluaXRpb24nLAogICAgKTsKCiAgICBteSAlRHluYW1pY0ZpZWxkczsKICAgIG15ICVEZWZpbml0aW9uczsKICAgIG15ICVOYW1lc3BhY2VzOwoKICAgICMgY29sbGVjdCBkYXRhCiAgICBDTEFTU19JRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICRTZWxmLT57Q2xhc3NMaXN0fS0+JSogKSB7CgogICAgICAgIG15ICRGaWxlbmFtZUNsZWFuID0gJE1haW5PYmplY3QtPkZpbGVuYW1lQ2xlYW5VcCgKICAgICAgICAgICAgRmlsZW5hbWUgPT4gJ0F0dHJpYnV0ZU1hcF8nIC4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICcueW1sJywKICAgICAgICApOwoKICAgICAgICAjIFNraXAgdGhlIGNsYXNzIHdoZW4gdGhlcmUgaXMgbm8gYXR0cmlidXRlIG1hcHBpbmcuCiAgICAgICAgbmV4dCBDTEFTU19JRCB1bmxlc3MgLWUgJFNlbGYtPntXb3JraW5nRGlyfSAuICcvJyAuICRGaWxlbmFtZUNsZWFuOwoKICAgICAgICBERUZJTklUSU9OOgogICAgICAgIGZvciBteSAkRGVmaW5pdGlvbiAoICRTZWxmLT57RGVmaW5pdGlvbkxpc3R9eyRDbGFzc0lEfS0+QCogKSB7CgogICAgICAgICAgICBteSAkRmlsZW5hbWVDbGVhbiA9ICRNYWluT2JqZWN0LT5GaWxlbmFtZUNsZWFuVXAoCiAgICAgICAgICAgICAgICBGaWxlbmFtZSA9PiAkU2VsZi0+e0NsYXNzTGlzdH17JENsYXNzSUR9IC4gJ19DSURlZmluaXRpb25fJyAuICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSAuICcueW1sJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2tpcCBkZWZpbml0aW9ucyBpZiBmaWxlcyBhcmUgbm90IHByb3ZpZGVkOyBUT0RPOiBvbmx5IHNraXAgd2l0aG91dCBlcnJvciBpZiB0aGlzIGlzIGZvciB0aGUgd2hvbGUgY2xhc3MKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OIHVubGVzcyAtZSAkU2VsZi0+e1dvcmtpbmdEaXJ9IC4gJy8nIC4gJEZpbGVuYW1lQ2xlYW47CgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbVlBTUwgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgICAgICAgICBEaXJlY3RvcnkgPT4gJFNlbGYtPntXb3JraW5nRGlyfSwKICAgICAgICAgICAgICAgIEZpbGVuYW1lICA9PiAkRmlsZW5hbWVDbGVhbiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtRGVmaW5pdGlvbiA9ICRZQU1MT2JqZWN0LT5Mb2FkKAogICAgICAgICAgICAgICAgRGF0YSA9PiAkeyRDb25maWdJdGVtWUFNTH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFRPRE86IEFkZCBhbmQgdXNlIGEgRGVmaW5pdGlvbkNoZWNrIG9mIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RGVmaW5pdGlvbgoKICAgICAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW1EZWZpbml0aW9uICkgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCAiPHJlZD5Db3VsZCBub3QgaW50ZXJwcmV0IiAuICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gLiAnX0NJRGVmaW5pdGlvbl8nIC4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9IC4gIi55bWwhPC9yZWQ+XG4iICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkRmlsZW5hbWVDbGVhbiA9ICRNYWluT2JqZWN0LT5GaWxlbmFtZUNsZWFuVXAoCiAgICAgICAgICAgICAgICBGaWxlbmFtZSA9PiAkU2VsZi0+e0NsYXNzTGlzdH17JENsYXNzSUR9IC4gJ19ERkRlZmluaXRpb25fJyAuICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSAuICcueW1sJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRZQU1MID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAogICAgICAgICAgICAgICAgRGlyZWN0b3J5ID0+ICRTZWxmLT57V29ya2luZ0Rpcn0sCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lQ2xlYW4sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbiA9ICRZQU1MT2JqZWN0LT5Mb2FkKAogICAgICAgICAgICAgICAgRGF0YSA9PiAkeyREeW5hbWljRmllbGRZQU1MfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISREeW5hbWljRmllbGREZWZpbml0aW9uICkgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCAiPHJlZD5Db3VsZCBub3QgaW50ZXJwcmV0IiAuICRTZWxmLT57Q2xhc3NMaXN0fXskQ2xhc3NJRH0gLiAnX0RGRGVmaW5pdGlvbl8nIC4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9IC4gIi55bWwhPC9yZWQ+XG4iICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkRGVmaW5pdGlvbnN7JENsYXNzSUR9eyAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0gfSA9IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1ZQU1MID0+ICR7JENvbmZpZ0l0ZW1ZQU1MfSwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZCAgID0+ICREeW5hbWljRmllbGREZWZpbml0aW9uLAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICREeW5hbWljRmllbGREZWZpbml0aW9uLT4lKiApIHsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRzeyROYW1lfSA9ICREeW5hbWljRmllbGREZWZpbml0aW9uLT57JE5hbWV9OwoKICAgICAgICAgICAgICAgIGlmICggJE5hbWUgPX4gL14oW14tXSspLS8gKSB7CiAgICAgICAgICAgICAgICAgICAgJE5hbWVzcGFjZXN7JDF9ID0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGREZWZpbml0aW9uLT57JE5hbWV9e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRJbmNsdWRlZCAoICREeW5hbWljRmllbGREZWZpbml0aW9uLT57JE5hbWV9e0NvbmZpZ317SW5jbHVkZX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRJbmNsdWRlZC0+e0RGfSA9fiAvXihbXi1dKyktLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROYW1lc3BhY2VzeyQxfSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRzeyAkSW5jbHVkZWQtPntERn0gfSA9ICRJbmNsdWRlZC0+e0RlZmluaXRpb259OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBuYW1lc3BhY2Ugc2V0dGluZyBpZiBlbXB0eQogICAgbXkgJE5hbWVzcGFjZXNTZXR0aW5nID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdEeW5hbWljRmllbGQ6Ok5hbWVzcGFjZXMnKTsKICAgIGlmICggJU5hbWVzcGFjZXMgJiYgKCAhJE5hbWVzcGFjZXNTZXR0aW5nIHx8ICEkTmFtZXNwYWNlc1NldHRpbmctPkAqICkgKSB7CiAgICAgICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKCiAgICAgICAgbXkgJEV4Y2x1c2l2ZUxvY2tHVUlEID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0xvY2soCiAgICAgICAgICAgIExvY2tBbGwgPT4gMSwKICAgICAgICAgICAgRm9yY2UgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VwZGF0ZSgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZDo6TmFtZXNwYWNlcycsCiAgICAgICAgICAgIElzVmFsaWQgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlICAgID0+IFsgc29ydCBrZXlzICVOYW1lc3BhY2VzIF0sCiAgICAgICAgICAgIEV4Y2x1c2l2ZUxvY2tHVUlEID0+ICRFeGNsdXNpdmVMb2NrR1VJRCwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVW5sb2NrKAogICAgICAgICAgICBVbmxvY2tBbGwgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjICdSZWJ1aWxkJyB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgICAgICAgICBDb21tZW50cyAgICA9PiAiQ01EQiBVcGdyYWRlOiBBZGQgZHluYW1pYyBmaWVsZCBuYW1lc3BhY2VzLiIsCiAgICAgICAgICAgIEFsbFNldHRpbmdzID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICglTmFtZXNwYWNlcykgewogICAgICAgICRTZWxmLT5QcmludCgKICAgICAgICAgICAgIlxuPHllbGxvdz5Zb3UgYWxyZWFkeSBoYXZlIGR5bmFtaWMgZmllbGQgbmFtZXNwYWNlcyBkZXBsb3llZCwgdGh1cyB0aGUgbmV3IG9uZXMgd2lsbCBub3QgYXV0b21hdGljYWxseSBiZSBzZXQuIFBsZWFzZSBhZGQgdGhlbSBtYW51YWxseTo8L3llbGxvdz5cbiIKICAgICAgICApOwogICAgICAgIGZvciBteSAkTmFtZXNwYWNlICggc29ydCBrZXlzICVOYW1lc3BhY2VzICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIlx0JE5hbWVzcGFjZVxuIik7CiAgICAgICAgfQogICAgICAgICRTZWxmLT5QcmludCgiXG4iKTsKICAgIH0KCiAgICAjIGdldCBjdXJyZW50IGZpZWxkIG9yZGVyCiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICk7CiAgICBteSAkT3JkZXIgPSAkRHluYW1pY0ZpZWxkTGlzdC0+QCo7CgogICAgIyBjcmVhdGUgZHluYW1pYyBmaWVsZHMKICAgIGZvciBteSAkRmllbGQgKCBzb3J0IGtleXMgJUR5bmFtaWNGaWVsZHMgKSB7CiAgICAgICAgbXkgJVNldENvbmZpZzsKICAgICAgICBpZiAoICREeW5hbWljRmllbGRzeyRGaWVsZH17RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgbXkgQEluY2x1ZGVkID0gbWFwIHsgeyBERiA9PiAkXy0+e0RGfSB9IH0gJER5bmFtaWNGaWVsZHN7JEZpZWxkfXtDb25maWd9e0luY2x1ZGV9LT5AKjsKICAgICAgICAgICAgJVNldENvbmZpZyA9ICgKICAgICAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZHN7JEZpZWxkfXtDb25maWd9LT4lKiwKICAgICAgICAgICAgICAgICAgICBJbmNsdWRlID0+IFxASW5jbHVkZWQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJER5bmFtaWNGaWVsZHN7JEZpZWxkfXtJRH0gPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgICAgICREeW5hbWljRmllbGRzeyRGaWVsZH0tPiUqLAogICAgICAgICAgICAlU2V0Q29uZmlnLAogICAgICAgICAgICBGaWVsZE9yZGVyID0+ICsrJE9yZGVyLAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIFJlb3JkZXIgICAgPT4gMCwKICAgICAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJER5bmFtaWNGaWVsZHN7JEZpZWxkfXtJRH0gKSB7CgogICAgICAgICAgICAjIFRPRE86IGFsdGVybmF0aXZlbHkgdHJ5IHRvIGdldCB0aGUgREYsIGFuZCBjaGVjayB3aGV0aGVyIGl0cyBkZWZpbml0aW9uIGZpdHMuIE1heWJlIHN0aWxsIGFzawogICAgICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICAgICAiPHJlZD5Db3VsZCBub3QgY3JlYXRlIGR5bmFtaWMgZmllbGQgJEZpZWxkISBGaXggaXRzIGRlZmluaXRpb25zIGFuZCBkZWxldGUgYWxsIG90aGVyIGR5bmFtaWMgZmllbGRzIGNyZWF0ZWQgYnkgdGhpcyBwcm9jZXNzIGJlZm9yZSByZXRyeWluZy48L3JlZD5cbiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEFsbFN1Y2Nlc3MgPSAxOwoKICAgICMgc2V0IG5ldyBkZWZpbml0aW9ucwogICAgQ0xBU1NfSUQ6CiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAlRGVmaW5pdGlvbnMgKSB7CgogICAgICAgIG15ICRGaWxlbmFtZUNsZWFuID0gJE1haW5PYmplY3QtPkZpbGVuYW1lQ2xlYW5VcCgKICAgICAgICAgICAgRmlsZW5hbWUgPT4gJ0F0dHJpYnV0ZU1hcF8nIC4gJFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfSAuICcueW1sJywKICAgICAgICApOwoKICAgICAgICAjIFNraXAgdGhlIGNsYXNzIHdoZW4gdGhlcmUgaXMgbm8gYXR0cmlidXRlIG1hcHBpbmcuCiAgICAgICAgbmV4dCBDTEFTU19JRCB1bmxlc3MgLWUgJFNlbGYtPntXb3JraW5nRGlyfSAuICcvJyAuICRGaWxlbmFtZUNsZWFuOwoKICAgICAgICBERUZJTklUSU9OOgogICAgICAgIGZvciBteSAkRGVmaW5pdGlvbklEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJERlZmluaXRpb25zeyRDbGFzc0lEfS0+JSogKSB7CgogICAgICAgICAgICAjIGFkZCB0aGUgSUQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgZHluYW1pYyBmaWVsZHMgdG8gdGhlaXIgZGVmaW5pdGlvbiBzcGVjaWZpYyBjb25maWdzCiAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggdmFsdWVzICREZWZpbml0aW9uc3skQ2xhc3NJRH17JERlZmluaXRpb25JRH17RHluYW1pY0ZpZWxkfS0+JSogKSB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57SUR9ID0gJER5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGQtPntOYW1lfSB9e0lEfTsKCiAgICAgICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICAgICAgICAgIGZvciBteSAkSW5jbHVkZWQgKCAkRHluYW1pY0ZpZWxkLT57Q29uZmlnfXtJbmNsdWRlfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRJbmNsdWRlZC0+e0RlZmluaXRpb259e0lEfSA9ICREeW5hbWljRmllbGRzeyAkSW5jbHVkZWQtPntERn0gfXtJRH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkWUFNTCA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgICAgICAgICAgICAgRGF0YSA9PiAkRGVmaW5pdGlvbnN7JENsYXNzSUR9eyREZWZpbml0aW9uSUR9e0R5bmFtaWNGaWVsZH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgID0+ICdVUERBVEUgY29uZmlnaXRlbV9kZWZpbml0aW9uIFNFVCBjb25maWdpdGVtX2RlZmluaXRpb24gPSA/LCBkeW5hbWljZmllbGRfZGVmaW5pdGlvbiA9ID8gV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJERlZmluaXRpb25zeyRDbGFzc0lEfXskRGVmaW5pdGlvbklEfXtDb25maWdJdGVtWUFNTH0sIFwkRHluYW1pY0ZpZWxkWUFNTCwgXCREZWZpbml0aW9uSUQgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgVE9ETzogSWYgYW4gZXJyb3Igb2NjdXJzLCBhc2ssIHdoZXRoZXIgd2Ugc2hvdWxkIGNvbnRpbnVlIG9yIG5vdCBwcm9iYWJseS4gSGVyZSBpdCB3b3VsZCBzdGFydCB0byBnZXQgbWVzc3kuLi4KICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Q291bGQgbm90IHVwZGF0ZSBEQiBlbnRyeSBvZiBkZWZpbml0aW9uIGlkICckRGVmaW5pdGlvbklEJyE8L3JlZD5cbiIpOwogICAgICAgICAgICAgICAgJEFsbFN1Y2Nlc3MgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkUGVybWlzc2lvbkdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgICAgIEdyb3VwID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgICAgICk7CgogICAgICAgICMgdXBkYXRlIGNsYXNzIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJVByZWZlcmVuY2VzRGVmYXVsdHMgPSAoCiAgICAgICAgICAgIFBlcm1pc3Npb24gICAgICAgICAgPT4gWyRQZXJtaXNzaW9uR3JvdXBJRF0sCiAgICAgICAgICAgIE51bWJlck1vZHVsZSAgICAgICAgPT4gWydBdXRvSW5jcmVtZW50J10sCiAgICAgICAgICAgIFZlcnNpb25TdHJpbmdNb2R1bGUgPT4gWydJbmNyZW1lbnRhbCddLAogICAgICAgICAgICBDYXRlZ29yaWVzICAgICAgICAgID0+IFsnQWxsJ10sCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBrZXlzICVQcmVmZXJlbmNlc0RlZmF1bHRzICkgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT57R2VuZXJhbENhdGFsb2dPYmplY3R9LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRQcmVmZXJlbmNlLAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICRQcmVmZXJlbmNlc0RlZmF1bHRzeyRQcmVmZXJlbmNlfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkNvdWxkIG5vdCBzZXQgcHJlZmVyZW5jZSAnJFByZWZlcmVuY2UnIGZvciBjbGFzcyAnJENsYXNzSUQnITwvcmVkPlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHVubGVzcyAkQWxsU3VjY2VzczsKICAgIHJldHVybiAnTmV4dCc7Cn0KCnN1YiBfTWlncmF0ZUF0dHJpYnV0ZURhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+Q29weSBhdHRyaWJ1dGUgZGF0YS48L3llbGxvdz5cbiIpOwoKICAgIG15ICRNYWluT2JqZWN0ICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwogICAgbXkgJFN5c0NvbmZpZ09iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CiAgICBteSAkREJPYmplY3QgICAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ1VQREFURSBjb25maWdpdGVtX3ZlcnNpb24gU0VUIGNoYW5nZV90aW1lPWNyZWF0ZV90aW1lLCBjaGFuZ2VfYnk9Y3JlYXRlX2J5IFdIRVJFIGNoYW5nZV9ieSBJUyBOVUxMOycsCiAgICApOwoKICAgIG15ICVCYXNlQXJyYXlGaWVsZHMgPSBtYXAgeyAkXyA9PiAxIH0gcXcvR2VuZXJhbENhdGFsb2cgQ3VzdG9tZXJDb21wYW55IEN1c3RvbWVyVXNlciBUaWNrZXQgQ29uZmlnSXRlbSBBZ2VudCBTZXJ2aWNlIFF1ZXVlIFNMQSBUeXBlLzsKICAgIG15ICREaXNhYmxlZEhpc3Rvcnk7CiAgICBteSAkSGlzdG9yeVNldHRpbmcgPSBxe0lUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QjIyMxMDAtSGlzdG9yeX07CgogICAgZGVsZXRlICRTZWxmLT57Q29uZmlnSXRlbU9iamVjdH17Q2FjaGV9e0RlZmluaXRpb25HZXR9OwogICAgbG9jYWwgJHwgPSAxOwoKICAgIENMQVNTX0lEOgogICAgZm9yIG15ICRDbGFzc0lEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJFNlbGYtPntDbGFzc0xpc3R9LT4lKiApIHsKCiAgICAgICAgbXkgJEZpbGVuYW1lQ2xlYW4gPSAkTWFpbk9iamVjdC0+RmlsZW5hbWVDbGVhblVwKAogICAgICAgICAgICBGaWxlbmFtZSA9PiAnQXR0cmlidXRlTWFwXycgLiAkU2VsZi0+e0NsYXNzTGlzdH17JENsYXNzSUR9IC4gJy55bWwnLAogICAgICAgICk7CgogICAgICAgICMgU2tpcCB0aGUgY2xhc3Mgd2hlbiB0aGVyZSBpcyBubyBhdHRyaWJ1dGUgbWFwcGluZy4KICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyAtZSAkU2VsZi0+e1dvcmtpbmdEaXJ9IC4gJy8nIC4gJEZpbGVuYW1lQ2xlYW47CgogICAgICAgIG15ICVEZWZpbml0aW9uOwogICAgICAgIG15ICRNYXBSZWYgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgICAgIERpcmVjdG9yeSA9PiAkU2VsZi0+e1dvcmtpbmdEaXJ9LAogICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lQ2xlYW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBTa2lwIHRoZSBjbGFzcyB3aGVuIHRoZXJlIGlzIG5vIGF0dHJpYnV0ZSBtYXBwaW5nLgogICAgICAgICMgVGhpcyBoYXBwZW5zIHdoZW4gdGhlIGZpbGUgd2FzIHJlbW92ZWQgb3Igd2hlbiB0aGUgY2xhc3MgYWxyZWFkeSB3YXMgaW4gT1RPQk8gMTEgZm9ybWF0LgogICAgICAgIG5leHQgQ0xBU1NfSUQgdW5sZXNzIGRlZmluZWQgJE1hcFJlZjsKCiAgICAgICAgbXkgJEF0dHJpYnV0ZU1hcCA9ICRTZWxmLT57WUFNTE9iamVjdH0tPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJHskTWFwUmVmfSwKICAgICAgICApOwoKICAgICAgICAjIGEgc2FuaXR5IGNoZWNrCiAgICAgICAgbmV4dCBDTEFTU19JRCB1bmxlc3MgcmVmICRBdHRyaWJ1dGVNYXAgZXEgJ0hBU0gnOwoKICAgICAgICAjIGZvciBzZXRzCiAgICAgICAgbXkgJEF0dHJpYnV0ZUxvb2t1cCA9IHsgcmV2ZXJzZSAkQXR0cmlidXRlTWFwLT4lKiB9OwoKICAgICAgICBmb3IgbXkgJERlZmluaXRpb25JRCAoIG1hcCB7ICRfLT57RGVmaW5pdGlvbklEfSB9ICRTZWxmLT57RGVmaW5pdGlvbkxpc3R9eyRDbGFzc0lEfS0+QCogKSB7CiAgICAgICAgICAgICREZWZpbml0aW9ueyREZWZpbml0aW9uSUR9ID0gJFNlbGYtPntDb25maWdJdGVtT2JqZWN0fS0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIHZlcnNpb25zIG9mIGEgY2xhc3MgaW4gb25lIGdvCiAgICAgICAgIyBUT0RPOiBEbyB3ZSBuZWVkIGJhdGNoZXMgZm9yIHJlYWxseSBsYXJnZSBDTURCcz8KICAgICAgICBteSAkUm93cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RBbGwoCiAgICAgICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKU0VMRUNUIHYuaWQsIHYuZGVmaW5pdGlvbl9pZCwgdi5jb25maWdpdGVtX2lkCiAgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24gdgogIElOTkVSIEpPSU4gY29uZmlnaXRlbSBjaSBPTiB2LmNvbmZpZ2l0ZW1faWQgPSBjaS5pZAogIFdIRVJFIGNpLmNsYXNzX2lkID0gPwogIE9SREVSIEJZIHYuaWQKRU5EX1NRTAogICAgICAgICAgICBCaW5kID0+IFsgXCRDbGFzc0lEIF0sCiAgICAgICAgKTsKCiAgICAgICAgIyBUT0RPOiBkaXNhYmxlIGhpc3RvcnkgYmVmb3JlIHRoZSBsb29wIG92ZXIgdGhlIGNsYXNzZXMKICAgICAgICBpZiAoICEkRGlzYWJsZWRIaXN0b3J5ICYmICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgkSGlzdG9yeVNldHRpbmcpICkgewoKICAgICAgICAgICAgIyBkbyBub3Qgd3JpdGUgYSBoaXN0b3J5CiAgICAgICAgICAgIG15ICRFeGNsdXNpdmVMb2NrR1VJRCA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdMb2NrKAogICAgICAgICAgICAgICAgTG9ja0FsbCA9PiAxLAogICAgICAgICAgICAgICAgRm9yY2UgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VwZGF0ZSgKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgID0+ICRIaXN0b3J5U2V0dGluZywKICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFeGNsdXNpdmVMb2NrR1VJRCA9PiAkRXhjbHVzaXZlTG9ja0dVSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VubG9jaygKICAgICAgICAgICAgICAgIFVubG9ja0FsbCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyAnUmVidWlsZCcgdGhlIGNvbmZpZ3VyYXRpb24uCiAgICAgICAgICAgICMgVE9ETzogd2h5IG11c3QgdGhpcyBzZXR0aW5nIGJlIGRlcGxveWVkPyBJdCBzaG91bGQgc3VmZmljZSB0byBjaGFuZ2UgaXMgdGVtcG9yYXJpbHkKICAgICAgICAgICAgJFN5c0NvbmZpZ09iamVjdC0+Q29uZmlndXJhdGlvbkRlcGxveSgKICAgICAgICAgICAgICAgIENvbW1lbnRzICAgID0+ICJDTURCIFVwZ3JhZGU6IFRlbXBvcmFyaWx5IGRpc2FibGUgQ01EQiBoaXN0b3J5IGZvciB0aGUgZGF0YSB0cmFuc2Zlci4iLAogICAgICAgICAgICAgICAgQWxsU2V0dGluZ3MgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkRGlzYWJsZWRIaXN0b3J5ID0gMTsKICAgICAgICB9CgogICAgICAgIG15IEBTa2lwcGVkOwogICAgICAgIG15ICVDSVZlcnNpb25TdHJpbmdDb3VudGVyOwogICAgICAgIG15ICRDb3VudCA9IHNjYWxhciAkUm93cy0+QCo7CiAgICAgICAgbXkgJEZyYWMgID0gaW50KCAkQ291bnQgLyAxMCApOwogICAgICAgIG15ICRjICAgICA9IDA7CgogICAgICAgICRTZWxmLT5QcmludCgiXHRXb3JraW5nIG9uIDx5ZWxsb3c+JFNlbGYtPntDbGFzc0xpc3R9eyRDbGFzc0lEfTwveWVsbG93PiAoJENvdW50IFZlcnNpb25zKSIpOwoKICAgICAgICBST1c6CiAgICAgICAgZm9yIG15ICRSb3cgKCAkUm93cy0+QCogKSB7CiAgICAgICAgICAgIG15ICggJFZlcnNpb25JRCwgJERlZmluaXRpb25JRCwgJENvbmZpZ0l0ZW1JRCApID0gJFJvdy0+QCo7CgogICAgICAgICAgICAjIHNldCBjb25maWdpdGVtIHZlcnNpb24gc3RyaW5nCiAgICAgICAgICAgICRDSVZlcnNpb25TdHJpbmdDb3VudGVyeyRDb25maWdJdGVtSUR9IC8vPSAxOwogICAgICAgICAgICBteSAkVXBkYXRlU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClVQREFURSBjb25maWdpdGVtX3ZlcnNpb24KICBTRVQgdmVyc2lvbl9zdHJpbmcgPSA/LCBjaGFuZ2VfdGltZSA9IGN1cnJlbnRfdGltZXN0YW1wLCBjaGFuZ2VfYnkgPSA/CiAgV0hFUkUgaWQgPSA/CkVORF9TUUwKICAgICAgICAgICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICAgICAgICAgIFwkQ0lWZXJzaW9uU3RyaW5nQ291bnRlcnskQ29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBcMSwKICAgICAgICAgICAgICAgICAgICBcJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkNvdWxkIG5vdCBzZXQgVmVyc2lvblN0cmluZyBmb3IgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUlELCBWZXJzaW9uICRWZXJzaW9uSUQhPC9yZWQ+XG4iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkQ0lWZXJzaW9uU3RyaW5nQ291bnRlcnskQ29uZmlnSXRlbUlEfSsrOwoKICAgICAgICAgICAgaWYgKCArKyRjID09ICRGcmFjICkgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCIuIik7CiAgICAgICAgICAgICAgICAkYyA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggISREZWZpbml0aW9ueyREZWZpbml0aW9uSUR9e0R5bmFtaWNGaWVsZFJlZn0gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBTa2lwcGVkLCAkVmVyc2lvbklEOwoKICAgICAgICAgICAgICAgIG5leHQgUk9XOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCB2ZXJzaW9uCiAgICAgICAgICAgIG15IEBYTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WE1MJyktPlhNTEhhc2hHZXQoCiAgICAgICAgICAgICAgICBUeXBlID0+ICJJVFNNOjpDb25maWdJdGVtOjokQ2xhc3NJRCIsCiAgICAgICAgICAgICAgICBLZXkgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHRyeSBhcmNoaXZlCiAgICAgICAgICAgIGlmICggIUBYTUwgKSB7CiAgICAgICAgICAgICAgICBAWE1MID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlhNTCcpLT5YTUxIYXNoR2V0KAogICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gIklUU006OkNvbmZpZ0l0ZW06OkFyY2hpdjo6JENsYXNzSUQiLAogICAgICAgICAgICAgICAgICAgIEtleSAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIEFUVFJJQlVURToKICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJFhNTFsxXXtWZXJzaW9ufVsxXS0+JSogKSB7CiAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURSB1bmxlc3MgJEF0dHJpYnV0ZU1hcC0+eyRBdHRyaWJ1dGV9OwoKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRGVmaW5pdGlvbnskRGVmaW5pdGlvbklEfXtEeW5hbWljRmllbGRSZWZ9eyAkQXR0cmlidXRlTWFwLT57JEF0dHJpYnV0ZX0gfTsKCiAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURSB1bmxlc3MgJER5bmFtaWNGaWVsZDsKCiAgICAgICAgICAgICAgICBteSAkVmFsdWU7CiAgICAgICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICAgICAgICAgIGZvciBteSAkU2V0ICggQHsgJFhNTFsxXXtWZXJzaW9ufVsxXXskQXR0cmlidXRlfSB9WyAxIC4uICRYTUxbMV17VmVyc2lvbn1bMV17JEF0dHJpYnV0ZX0tPiQjKiBdICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAlU2V0VmFsdWU7CgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEluY2x1ZGVkICggJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317SW5jbHVkZX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlTG9va3VwLT57ICRJbmNsdWRlZC0+e0RGfSB9IGVxICRBdHRyaWJ1dGUgLiAnOjo8U3ViUHJpbWFyeUF0dHJpYnV0ZT4nICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRJbmNsdWRlZC0+e0RlZmluaXRpb259e0ZpZWxkVHlwZX0gZXEgJ0RhdGVUaW1lJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNldC0+e0NvbnRlbnR9IC49ICc6MDAnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNldFZhbHVleyAkSW5jbHVkZWQtPntERn0gfSA9ICRCYXNlQXJyYXlGaWVsZHN7ICRJbmNsdWRlZC0+e0RlZmluaXRpb259e0ZpZWxkVHlwZX0gfSA/IFsgJFNldC0+e0NvbnRlbnR9IF0gOiAkU2V0LT57Q29udGVudH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTmFtZSAgICA9ICRBdHRyaWJ1dGVMb29rdXAtPnsgJEluY2x1ZGVkLT57REZ9IH0gPX4gcy9eLis/OjovL3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFN1YkF0dHIgPSAkU2V0LT57JE5hbWV9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTdWJBdHRyVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkQmFzZUFycmF5RmllbGRzeyAkSW5jbHVkZWQtPntEZWZpbml0aW9ufXtGaWVsZFR5cGV9IH0gfHwgJEluY2x1ZGVkLT57RGVmaW5pdGlvbn17Q29uZmlnfXtNdWx0aVZhbHVlfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN1YkF0dHJWYWx1ZSA9IFsgbWFwIHsgJF8tPntDb250ZW50fSB9IEB7JFN1YkF0dHJ9WyAxIC4uICRTdWJBdHRyLT4kIyogXSBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN1YkF0dHJWYWx1ZSA9ICRTdWJBdHRyLT5bMV17Q29udGVudH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICVWYWx1ZXMgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRJbmNsdWRlZC0+e0RGfSA9PiAkU3ViQXR0clZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJEluY2x1ZGVkLT57RGVmaW5pdGlvbn17RmllbGRUeXBlfSBlcSAnRGF0ZVRpbWUnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlVmFsdWVzID0gbWFwIHsgKCAkXyA9PiAkVmFsdWVzeyRffSAuICc6MDAnICkgfSBrZXlzICVWYWx1ZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlU2V0VmFsdWUgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVTZXRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVZhbHVlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBwdXNoICRWYWx1ZS0+QCosIFwlU2V0VmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkRHluYW1pY0ZpZWxkLT57Q29uZmlnfXtNdWx0aVZhbHVlfSApIHsKICAgICAgICAgICAgICAgICAgICBteSBAVmFsdWVzID0gbWFwIHsgJF8tPntDb250ZW50fSB9IEB7ICRYTUxbMV17VmVyc2lvbn1bMV17JEF0dHJpYnV0ZX0gfVsgMSAuLiAkWE1MWzFde1ZlcnNpb259WzFdeyRBdHRyaWJ1dGV9LT4kIyogXTsKCiAgICAgICAgICAgICAgICAgICAgSU5ERVg6CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKEBWYWx1ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkVmFsdWVzWy0xXSB8fCAkVmFsdWVzWy0xXSBlcSAnJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcCBAVmFsdWVzOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBJTkRFWDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgIUBWYWx1ZXM7CgogICAgICAgICAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ0RhdGVUaW1lJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgQFZhbHVlcyA9IG1hcCB7ICRfIC4gJzowMCcgfSBAVmFsdWVzOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJFZhbHVlID0gXEBWYWx1ZXM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkVmFsdWUgPSAkQmFzZUFycmF5RmllbGRzeyAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSB9ID8gWyAkWE1MWzFde1ZlcnNpb259WzFdeyRBdHRyaWJ1dGV9WzFde0NvbnRlbnR9IF0gOiAkWE1MWzFde1ZlcnNpb259WzFdeyRBdHRyaWJ1dGV9WzFde0NvbnRlbnR9OwoKICAgICAgICAgICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdEYXRlVGltZScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRWYWx1ZSAuPSAnOjAwJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnQXR0YWNobWVudCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50QmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDSUF0dGFjaG1lbnRTdG9yYWdlOjpBdHRhY2htZW50U3RvcmFnZScpOwogICAgICAgICAgICAgICAgICAgICAgICBteSAkQXR0YWNobWVudCAgICAgICAgICAgICAgPSAkQXR0YWNobWVudEJhY2tlbmRPYmplY3QtPkF0dGFjaG1lbnRTdG9yYWdlR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJFZhbHVlID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICR7ICRBdHRhY2htZW50LT57Q29udGVudFJlZn0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAkQXR0YWNobWVudC0+e1ByZWZlcmVuY2VzfXtEYXRhVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJEF0dGFjaG1lbnQtPntGaWxlTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZVNpemUgICAgPT4gJEF0dGFjaG1lbnQtPntQcmVmZXJlbmNlc317RmlsZVNpemVCeXRlc30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAhZGVmaW5lZCAkVmFsdWUgfHwgJFZhbHVlIGVxICcnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhKCByZWYgJFZhbHVlICkgfHwgKCByZWYgJFZhbHVlIG5lICdBUlJBWScgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFZhbHVlID0gWyRWYWx1ZV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1IYW5kbGVkICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkU2VsZi0+UHJpbnQoIlxuIik7CiAgICB9CgogICAgaWYgKCREaXNhYmxlZEhpc3RvcnkpIHsKCiAgICAgICAgIyByZWFjdGl2YXRlIHdyaW50aW5nIGhpc3RvcnkKICAgICAgICBteSAkRXhjbHVzaXZlTG9ja0dVSUQgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nTG9jaygKICAgICAgICAgICAgTG9ja0FsbCA9PiAxLAogICAgICAgICAgICBGb3JjZSAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVXBkYXRlKAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAkSGlzdG9yeVNldHRpbmcsCiAgICAgICAgICAgIElzVmFsaWQgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIEV4Y2x1c2l2ZUxvY2tHVUlEID0+ICRFeGNsdXNpdmVMb2NrR1VJRCwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVW5sb2NrKAogICAgICAgICAgICBVbmxvY2tBbGwgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjICdSZWJ1aWxkJyB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgICAgICAgICBDb21tZW50cyAgICA9PiAiQ01EQiBVcGdyYWRlOiBSZWVuYWJsZSBDTURCIGhpc3RvcnkuIiwKICAgICAgICAgICAgQWxsU2V0dGluZ3MgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKAogICAgICAgIFR5cGUgPT4gJ0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCcKICAgICk7CgogICAgcmV0dXJuICdOZXh0JzsKfQoKc3ViIF9EZWxldGVMZWdhY3lEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KAogICAgICAgICI8eWVsbG93Pk9wdGlvbmFsbHkgYWxsIGxlZ2FjeSBkYXRhIGNhbiBiZSBkZWxldGVkLiBUaGlzIHN0ZXAgaXMgbm90IG5lY2Vzc2FyeSBmb3IgdGhlIG1pZ3JhdGVkIENNREIgdG8gd29yayBhbmQgY2FuIGJlIGRvbmUgYXQgYW55IGxhdGVyIHRpbWUuPC95ZWxsb3c+XG4iCiAgICApOwogICAgJFNlbGYtPlByaW50KCJcbjxyZWQ+RG8geW91IHJlYWxseSB3YW50IHRvIHBlcm1hbmVudGx5IGRlbGV0ZSBhbGwgYmFja3VwIGxlZ2FjeSBkYXRhIGZyb20gdGhlIHN5c3RlbT8gKHR5cGUgJ3llcycpPC9yZWQ+XG4iKTsKCiAgICBpZiAoIDxTVERJTj4gPX4gbS9eeWVzJC9pICkgeyAgICAjIyBubyBjcml0aWMgcXcoSW5wdXRPdXRwdXQ6OlByb2hpYml0RXhwbGljaXRTdGRpbik7CgogICAgICAgICMgZ2V0IG5lY2Vzc2FyeSBvYmplY3RzCiAgICAgICAgbXkgJE1haW5PYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CiAgICAgICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgICAgICBteSAkUGFja2FnZU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBhY2thZ2UnKTsKCiAgICAgICAgIyAxLiBkZWxldGUgZmlsZXMgZnJvbSB0ZW1wb3JhcnkgZGlyZWN0b3J5CiAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkRlbGV0aW5nIHByZXZpb3VzbHkgY3JlYXRlZCB0ZW1wb3JhcnkgZmlsZXMgZnJvbSBkaXNrLi4uPC95ZWxsb3c+XG4iKTsKICAgICAgICBteSBARmlsZXNJbkRpcmVjdG9yeSA9ICRNYWluT2JqZWN0LT5EaXJlY3RvcnlSZWFkKAogICAgICAgICAgICBEaXJlY3RvcnkgPT4gJFNlbGYtPntXb3JraW5nRGlyfSwKICAgICAgICAgICAgRmlsdGVyICAgID0+ICcqJywKICAgICAgICApOwogICAgICAgIGZvciBteSAkRmlsZSAoIHNvcnQgQEZpbGVzSW5EaXJlY3RvcnkgKSB7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJE1haW5PYmplY3QtPkZpbGVEZWxldGUoCiAgICAgICAgICAgICAgICBMb2NhdGlvbiA9PiAkRmlsZSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Q291bGQgbm90IGRlbGV0ZSBmaWxlICRGaWxlITwvcmVkPiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUgZGVsZXRpbmcgdGVtcG9yYXJ5IGZpbGVzLjwvZ3JlZW4+XG4iKTsKCiAgICAgICAgIyAyLiBkZWxldGUgY29uZmlnaXRlbV9kZWZpbml0aW9uX2xlZ2FjeSBkYXRhYmFzZSBjb2x1bW4KICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+RGVsZXRpbmcgZGF0YWJhc2UgY29sdW1uIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbl9sZWdhY3kgZnJvbSB0YWJsZSBjb25maWdpdGVtX2RlZmluaXRpb24uLi48L3llbGxvdz5cbiIpOwogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICAgICAgU1FMID0+ICdBTFRFUiBUQUJMRSBjb25maWdpdGVtX2RlZmluaXRpb24gRFJPUCBDT0xVTU4gY29uZmlnaXRlbV9kZWZpbml0aW9uX2xlZ2FjeScsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5Eb25lIGRlbGV0aW5nIHRoZSBkYXRhYmFzZSBjb2x1bW4uPC9ncmVlbj5cbiIpOwoKICAgICAgICAjIDMuIGNsZWFuIHVwIHhtbCBzdG9yYWdlCiAgICAgICAgIyBnZXQgYWxsIHZlcnNpb25zIGFuZCBjb3JyZXNwb25kaW5nIGNsYXNzIGlkcyBpbiBvbmUgZ28KICAgICAgICAjIFRPRE86IERvIHdlIG5lZWQgYmF0Y2hlcyBmb3IgcmVhbGx5IGxhcmdlIENNREJzPwogICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5EZWxldGluZyBjb25maWdpdGVtIGRhdGEgZnJvbSB4bWwgc3RvcmFnZS4uLjwveWVsbG93PlxuIik7CiAgICAgICAgbXkgJFJvd3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0QWxsKAogICAgICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCB2LmlkLCBjaS5jbGFzc19pZAogIEZST00gY29uZmlnaXRlbV92ZXJzaW9uIHYKICBJTk5FUiBKT0lOIGNvbmZpZ2l0ZW0gY2kgT04gdi5jb25maWdpdGVtX2lkID0gY2kuaWQKICBPUkRFUiBCWSB2LmlkCkVORF9TUUwKICAgICAgICApOwoKICAgICAgICAjIFRPRE86IGRpc2FibGUgaGlzdG9yeSBiZWZvcmUgdGhlIGxvb3Agb3ZlciB0aGUgY2xhc3NlcwogICAgICAgIG15ICREaXNhYmxlZEhpc3Rvcnk7CiAgICAgICAgbXkgJEhpc3RvcnlTZXR0aW5nID0gcXtJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjMTAwLUhpc3Rvcnl9OwogICAgICAgIGlmICggISREaXNhYmxlZEhpc3RvcnkgJiYgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCRIaXN0b3J5U2V0dGluZykgKSB7CgogICAgICAgICAgICAjIGRvIG5vdCB3cml0ZSBhIGhpc3RvcnkKICAgICAgICAgICAgbXkgJEV4Y2x1c2l2ZUxvY2tHVUlEID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0xvY2soCiAgICAgICAgICAgICAgICBMb2NrQWxsID0+IDEsCiAgICAgICAgICAgICAgICBGb3JjZSAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVXBkYXRlKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJEhpc3RvcnlTZXR0aW5nLAogICAgICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEV4Y2x1c2l2ZUxvY2tHVUlEID0+ICRFeGNsdXNpdmVMb2NrR1VJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVW5sb2NrKAogICAgICAgICAgICAgICAgVW5sb2NrQWxsID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjICdSZWJ1aWxkJyB0aGUgY29uZmlndXJhdGlvbi4KICAgICAgICAgICAgIyBUT0RPOiB3aHkgbXVzdCB0aGlzIHNldHRpbmcgYmUgZGVwbG95ZWQ/IEl0IHNob3VsZCBzdWZmaWNlIHRvIGNoYW5nZSBpcyB0ZW1wb3JhcmlseQogICAgICAgICAgICAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgICAgICAgICAgICAgQ29tbWVudHMgICAgPT4gIkNNREIgVXBncmFkZTogVGVtcG9yYXJpbHkgZGlzYWJsZSBDTURCIGhpc3RvcnkgZm9yIHRoZSBkYXRhIHRyYW5zZmVyLiIsCiAgICAgICAgICAgICAgICBBbGxTZXR0aW5ncyA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICREaXNhYmxlZEhpc3RvcnkgPSAxOwogICAgICAgIH0KCiAgICAgICAgUk9XOgogICAgICAgIGZvciBteSAkUm93ICggJFJvd3MtPkAqICkgewogICAgICAgICAgICBteSAoICRWZXJzaW9uSUQsICRDbGFzc0lEICkgPSAkUm93LT5AKjsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpYTUwnKS0+WE1MSGFzaERlbGV0ZSgKICAgICAgICAgICAgICAgIFR5cGUgPT4gIklUU006OkNvbmZpZ0l0ZW06OiRDbGFzc0lEIiwKICAgICAgICAgICAgICAgIEtleSAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZSBkZWxldGluZyBjb25maWcgaXRlbSBkYXRhIGZyb20geG1sIHN0b3JhZ2UuPC9ncmVlbj5cbiIpOwoKICAgICAgICAjIHJlbW92ZSBDSUF0dHJpYnV0ZUNvbGxlY3Rpb24gcGFja2FnZSBpZiBwcmVzZW50CiAgICAgICAgbXkgJFBhY2thZ2VOYW1lID0gJ0lUU00tQ0lBdHRyaWJ1dGVDb2xsZWN0aW9uJzsKICAgICAgICBteSBAUmVwb3MgICAgICAgPSAkUGFja2FnZU9iamVjdC0+UmVwb3NpdG9yeUxpc3QoCiAgICAgICAgICAgIFJlc3VsdCA9PiAnU2hvcnQnCiAgICAgICAgKTsKICAgICAgICBteSBAUGFja2FnZUVudHJ5ID0gZ3JlcCB7ICRfLT57TmFtZX0gZXEgJFBhY2thZ2VOYW1lIH0gQFJlcG9zOwogICAgICAgIGlmIChAUGFja2FnZUVudHJ5KSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Vbmluc3RhbGxpbmcgJFBhY2thZ2VOYW1lIHBhY2thZ2UuLi48L3llbGxvdz5cbiIpOwogICAgICAgICAgICBteSAkUGFja2FnZVZlcnNpb24gPSAkUGFja2FnZUVudHJ5WzBde1ZlcnNpb259OwogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+Rm91bmQgJFBhY2thZ2VOYW1lIFZlcnNpb24gJFBhY2thZ2VWZXJzaW9uPC95ZWxsb3c+XG4iKTsKCiAgICAgICAgICAgICMgcmVzZXQgc2V0dGluZ3MgdGhhdCB0aGlzIGxlZ2FjeSBwYWNrYWdlIHVuc3VjY2Vzc2Z1bGx5IGF0dGVtcHRzIHRvIHJlc2V0IHVwb24gdW5pbnN0YWxsYXRpb24gKGxvY2sgaXMgbWlzc2luZykKICAgICAgICAgICAgJFNlbGYtPl9SZXNldFNldHRpbmdzKAogICAgICAgICAgICAgICAgU2V0dGluZ05hbWUgPT4gJ0xvYWRlcjo6QWdlbnQ6OkNvbW1vbkpTIyMjMTAwLUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50JywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRQYWNrYWdlID0gJFBhY2thZ2VPYmplY3QtPlJlcG9zaXRvcnlHZXQoCiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICRQYWNrYWdlTmFtZSwKICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gJFBhY2thZ2VWZXJzaW9uLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRQYWNrYWdlT2JqZWN0LT5QYWNrYWdlVW5pbnN0YWxsKAogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYWNrYWdlLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoJFN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUgdW5pbnN0YWxsaW5nICRQYWNrYWdlTmFtZSBwYWNrYWdlLjwvZ3JlZW4+XG4iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3QgdW5pbnN0YWxsICRQYWNrYWdlTmFtZSBwYWNrYWdlITwvcmVkPlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICI8Z3JlZW4+Q29udGludWluZyB3aXRob3V0IGRlbGV0aW5nIGxlZ2FjeSBkYXRhLjwvZ3JlZW4+XG4iCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJ05leHQnOwp9CgpzdWIgX0dlbmVyYXRlRGVmaW5pdGlvbllBTUwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEV4cGxpY2l0bHkgZ2VuZXJhdGUgYSBZQU1MIHN0cmluZyBpbiBvcmRlciB0byBoYXZlIGJldHRlciBjb250cm9sCiAgICAjIG9mIHRoZSBsYXlvdXQuCiAgICBteSAkQ0lZQU1MID0gPDwnRU5EX1lBTUwnOwotLS0KUGFnZXM6CiAgLSBOYW1lOiBDb250ZW50CiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbnM6IDEKICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgQ29udGVudDoKICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMQoKU2VjdGlvbnM6CiAgQXR0cmlidXRlczoKICAgIENvbnRlbnQ6CkVORF9ZQU1MCgogICAgbXkgJUR5bmFtaWNGaWVsZHM7CgogICAgQVRUUklCVVRFOgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKCAkUGFyYW17QXR0cmlidXRlc30tPkAqICkgewogICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkUGFyYW17QXR0cmlidXRlTWFwfXsgJEF0dHJpYnV0ZS0+e0tleX0gfTsKCiAgICAgICAgbXkgJFlBTUxMaW5lID0gIiAgICAgIC0gREY6ICRQYXJhbXtBdHRyaWJ1dGVNYXB9eyAkQXR0cmlidXRlLT57S2V5fSB9XG4iOwoKICAgICAgICBpZiAoICRBdHRyaWJ1dGUtPntJbnB1dH17UmVxdWlyZWR9ICkgewogICAgICAgICAgICAkWUFNTExpbmUgLj0gIiAgICAgICAgTWFuZGF0b3J5OiAxXG4iOwogICAgICAgIH0KCiAgICAgICAgbXkgJURGQmFzaWMgPSAoCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJFBhcmFte0F0dHJpYnV0ZU1hcH17ICRBdHRyaWJ1dGUtPntLZXl9IH0sCiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJEF0dHJpYnV0ZS0+e05hbWV9LAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIENJQ2xhc3MgICAgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICApOwoKICAgICAgICBteSAlREZTcGVjaWZpYyA9ICRTZWxmLT5fREZDb25maWdGcm9tTGVnYWN5KAogICAgICAgICAgICBBdHRyaWJ1dGUgICAgPT4gJEF0dHJpYnV0ZSwKICAgICAgICAgICAgQXR0cmlidXRlTWFwID0+ICRQYXJhbXtBdHRyaWJ1dGVNYXB9LAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRQYXJhbXtEZWZpbml0aW9uSUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISVERlNwZWNpZmljICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICAgICAiPHJlZD5Db3VsZCBub3QgY29udmVydCAnJEF0dHJpYnV0ZS0+e05hbWV9JyB0byBEeW5hbWljRmllbGQgKENsYXNzOiAnJFBhcmFte0NsYXNzfSc7IERlZmluaXRpb25JRDogJyRQYXJhbXtEZWZpbml0aW9uSUR9JykgLSBza2lwcGluZyBhdHRyaWJ1dGUhPC9yZWQ+XG4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IEFUVFJJQlVURTsKICAgICAgICB9CgogICAgICAgICRDSVlBTUwgLj0gJFlBTUxMaW5lOwoKICAgICAgICAkRHluYW1pY0ZpZWxkc3sgJFBhcmFte0F0dHJpYnV0ZU1hcH17ICRBdHRyaWJ1dGUtPntLZXl9IH0gfSA9IHsgJURGQmFzaWMsICVERlNwZWNpZmljIH07CiAgICB9CgogICAgbXkgJERGWUFNTCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkR1bXAoCiAgICAgICAgRGF0YSA9PiBcJUR5bmFtaWNGaWVsZHMsCiAgICApOwoKICAgIHJldHVybiB7CiAgICAgICAgQ29uZmlnSXRlbSAgID0+ICRDSVlBTUwsCiAgICAgICAgRHluYW1pY0ZpZWxkID0+ICRERllBTUwsCiAgICB9Owp9CgpzdWIgX0dldEF0dHJpYnV0ZXNGcm9tTGVnYWN5WUFNTCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJFBhcmFte0RlZmluaXRpb25SZWZ9IC8vICRTZWxmLT57WUFNTE9iamVjdH0tPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkUGFyYW17RGVmaW5pdGlvbn0sCiAgICApOwoKICAgICMgU2tpcCBkZWZpbml0aW9ucyB0aGF0IGFyZSBhbHJlYWR5IGluIHRoZSBmb3JtYXQgZm9yIE9UT0JPIDExCiAgICBpZiAoIHJlZiAkRGVmaW5pdGlvblJlZiBlcSAnSEFTSCcgKSB7CiAgICAgICAgcmV0dXJuIGlmICREZWZpbml0aW9uUmVmLT57UGFnZXN9OwogICAgICAgIHJldHVybiBpZiAkRGVmaW5pdGlvblJlZi0+e1NlY3Rpb25zfTsKICAgIH0KCiAgICAjIGEgc2FuaXR5IHRlc3Qgd2hldGhlciB0aGlzIGlzIHBvc3NpYmx5IGluIHRoZSBmb3JtYXQgZm9yIE9UT0JPIDEwCiAgICBpZiAoIHJlZiAkRGVmaW5pdGlvblJlZiBuZSAnQVJSQVknICkgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5OZWVkIGEgdmFsaWQgbGVnYWN5IGRlZmluaXRpb24hPC9yZWQ+XG4iKTsKCiAgICAgICAgZGllOwogICAgfQoKICAgIG15IEBBdHRyaWJ1dGVzOwogICAgZm9yIG15ICRBdHRyaWJ1dGUgKCAkRGVmaW5pdGlvblJlZi0+QCogKSB7CiAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgJEF0dHJpYnV0ZTsKCiAgICAgICAgaWYgKCAkQXR0cmlidXRlLT57U3VifSAmJiAkUGFyYW17UmVjdVN1YnN9ICkgewogICAgICAgICAgICBteSAkUHJpbWFyeVN1YiA9IHsgS2V5ID0+ICRBdHRyaWJ1dGUtPntLZXl9IC4gJzo6PFN1YlByaW1hcnlBdHRyaWJ1dGU+JyB9OwoKICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgJFByaW1hcnlTdWI7CiAgICAgICAgICAgIG15IEBTdWJBdHRyaWJ1dGVzID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVzRnJvbUxlZ2FjeVlBTUwoIERlZmluaXRpb25SZWYgPT4gJEF0dHJpYnV0ZS0+e1N1Yn0gKTsKICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgbWFwIHsgeyBLZXkgPT4gJEF0dHJpYnV0ZS0+e0tleX0gLiAnOjonIC4gJF8tPntLZXl9IH0gfSBAU3ViQXR0cmlidXRlczsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIEBBdHRyaWJ1dGVzOwp9CgpzdWIgX0RGQ29uZmlnRnJvbUxlZ2FjeSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtUeXBlfSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+QXR0cmlidXRlIHdpdGhvdXQgSW5wdXQgVHlwZSE8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBteSAkVHlwZSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtUeXBlfTsKICAgIG15ICVERjsKCiAgICBpZiAoIGFueSB7IGRlZmluZWQgJFBhcmFte0F0dHJpYnV0ZX17JF99IH0gcXcvQ291bnRNaW4gQ291bnRNYXggQ291bnREZWZhdWx0LyApIHsKICAgICAgICB1bmxlc3MgKCAhJFBhcmFte0F0dHJpYnV0ZX17Q291bnRNYXh9IHx8ICggJFBhcmFte0F0dHJpYnV0ZX17Q291bnRNYXh9ICYmICRQYXJhbXtBdHRyaWJ1dGV9e0NvdW50TWF4fSA8PSAxICkgKSB7ICAgICMjIG5vIGNyaXRpYyBxdyhDb250cm9sU3RydWN0dXJlczo6UHJvaGliaXRVbmxlc3NCbG9ja3MpCiAgICAgICAgICAgICRERntDb25maWd9e011bHRpVmFsdWV9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkUGFyYW17QXR0cmlidXRlfXtTdWJ9ICkgewogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ1NldCc7CgogICAgICAgIGlmICggJFBhcmFte0luU3VifSApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPlN1YnMgb2Ygc3VicyBhcmUgbm90IHN1cHBvcnRlZCE8L3JlZD5cbiIpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1YiAgICAgPSBkZWxldGUgJFBhcmFte0F0dHJpYnV0ZX17U3VifTsKICAgICAgICBteSAkUHJpbWFyeSA9IHsKICAgICAgICAgICAgJFBhcmFte0F0dHJpYnV0ZX0tPiUqLAogICAgICAgICAgICBLZXkgID0+ICc8U3ViUHJpbWFyeUF0dHJpYnV0ZT4nLAogICAgICAgICAgICBOYW1lID0+ICdOYW1lJywKICAgICAgICB9OwoKICAgICAgICAjIHByaW1hcnkgYXR0cmlidXRlIGNhbm5vdCBiZSBtdWx0aXZhbHVlIGluIFhNTCBzY2hlbWEKICAgICAgICBmb3IgbXkgJERlbGV0ZSAocXcvQ291bnRNaW4gQ291bnRNYXggQ291bnREZWZhdWx0LykgewogICAgICAgICAgICBkZWxldGUgJFByaW1hcnktPnskRGVsZXRlfTsKICAgICAgICB9CgogICAgICAgIG15IEBJbmNsdWRlOwoKICAgICAgICBBVFRSSUJVVEU6CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCAkUHJpbWFyeSwgJFN1Yi0+QCogKSB7CiAgICAgICAgICAgICRBdHRyaWJ1dGUtPntLZXl9ID0gJFBhcmFte0F0dHJpYnV0ZX17S2V5fSAuICc6OicgLiAkQXR0cmlidXRlLT57S2V5fTsKCiAgICAgICAgICAgIG15ICVERkJhc2ljID0gKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlTWFwfXsgJEF0dHJpYnV0ZS0+e0tleX0gfSwKICAgICAgICAgICAgICAgIExhYmVsICAgICAgPT4gJEF0dHJpYnV0ZS0+e05hbWV9LAogICAgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgQ0lDbGFzcyAgICA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJURGU3BlY2lmaWMgPSAkU2VsZi0+X0RGQ29uZmlnRnJvbUxlZ2FjeSgKICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSAgICA9PiAkQXR0cmlidXRlLAogICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwID0+ICRQYXJhbXtBdHRyaWJ1dGVNYXB9LAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRQYXJhbXtDbGFzc30sCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFBhcmFte0RlZmluaXRpb25JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICElREZTcGVjaWZpYyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgKICAgICAgICAgICAgICAgICAgICAiPHJlZD5Db3VsZCBub3QgY29udmVydCBzdWIgYXR0cmlidXRlICckQXR0cmlidXRlLT57TmFtZX0nICgkUGFyYW17QXR0cmlidXRlfXtLZXl9OjokQXR0cmlidXRlLT57S2V5fSkgdG8gRHluYW1pY0ZpZWxkIChDbGFzczogJyRQYXJhbXtDbGFzc30nOyAgRGVmaW5pdGlvbklEOiAnJFBhcmFte0RlZmluaXRpb25JRH0nKSAtIHNraXBwZWQgYXR0cmlidXRlITwvcmVkPlxuIgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBASW5jbHVkZSwgewogICAgICAgICAgICAgICAgREYgICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlTWFwfXsgJEF0dHJpYnV0ZS0+e0tleX0gfSwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4geyAlREZCYXNpYywgJURGU3BlY2lmaWMgfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICRERntDb25maWd9e0luY2x1ZGV9ID0gXEBJbmNsdWRlOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnVGV4dCcgfHwgJFR5cGUgZXEgJ1RleHRBcmVhJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICRUeXBlOwogICAgICAgICRERntDb25maWd9e1JlZ0V4TGlzdH0gPSBbXTsKCiAgICAgICAgaWYgKCAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17UmVnRXh9ICkgewogICAgICAgICAgICAkREZ7Q29uZmlnfXtSZWdFeExpc3R9ID0gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17UmVnRXh9LAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17UmVnRXhFcnJvck1lc3NhZ2V9IC8vICdGb3JtYXQgaW52YWxpZCEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17VmFsdWVEZWZhdWx0fSApIHsKICAgICAgICAgICAgJERGe0NvbmZpZ317RGVmYXVsdFZhbHVlfSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtWYWx1ZURlZmF1bHR9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ0dlbmVyYWxDYXRhbG9nJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICRUeXBlOwoKICAgICAgICBpZiAoICEkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17Q2xhc3N9ICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+R2VuZXJhbENhdGFsb2cgYXR0cmlidXRlIHdpdGhvdXQgY2xhc3MhPC9yZWQ+XG4iKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRERntDb25maWd9e0NsYXNzfSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtDbGFzc307CgogICAgICAgIGlmICggJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1RyYW5zbGF0aW9ufSApIHsKICAgICAgICAgICAgJERGe0NvbmZpZ317VHJhbnNsYXRhYmxlVmFsdWVzfSA9IDE7CiAgICAgICAgfQoKICAgICAgICAkREZ7Q29uZmlnfXtQb3NzaWJsZU5vbmV9ID0gMTsKICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ0N1c3RvbWVyQ29tcGFueScgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAkVHlwZTsKCiAgICAgICAgJERGe0NvbmZpZ317UG9zc2libGVOb25lfSAgPSAxOwogICAgICAgICRERntDb25maWd9e0VkaXRGaWVsZE1vZGV9ID0gJ0Ryb3Bkb3duJzsKICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ0N1c3RvbWVyJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICdDdXN0b21lclVzZXInOwoKICAgICAgICAkREZ7Q29uZmlnfXtQb3NzaWJsZU5vbmV9ICA9IDE7CiAgICAgICAgJERGe0NvbmZpZ317RWRpdEZpZWxkTW9kZX0gPSAnQXV0b0NvbXBsZXRlJzsKICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ0RhdGUnIHx8ICRUeXBlIGVxICdEYXRlVGltZScgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAkVHlwZTsKCiAgICAgICAgJERGe0NvbmZpZ317WWVhcnNJbkZ1dHVyZX0gPSA1OwogICAgICAgICRERntDb25maWd9e1llYXJzSW5QYXN0fSAgID0gNTsKICAgICAgICAkREZ7Q29uZmlnfXtZZWFyc1BlcmlvZH0gICA9IDA7CgogICAgICAgIGlmICggJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1llYXJQZXJpb2RGdXR1cmV9ICkgewogICAgICAgICAgICAkREZ7Q29uZmlnfXtZZWFyc1BlcmlvZH0gICA9IDE7CiAgICAgICAgICAgICRERntDb25maWd9e1llYXJzSW5GdXR1cmV9ID0gJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1llYXJQZXJpb2RGdXR1cmV9OwogICAgICAgIH0KICAgICAgICBpZiAoICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtZZWFyUGVyaW9kUGFzdH0gKSB7CiAgICAgICAgICAgICRERntDb25maWd9e1llYXJzUGVyaW9kfSA9IDE7CiAgICAgICAgICAgICRERntDb25maWd9e1llYXJzSW5QYXN0fSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtZZWFyUGVyaW9kUGFzdH07CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnSW50ZWdlcicgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAnRHJvcGRvd24nOwoKICAgICAgICAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17VmFsdWVNaW59IHx8PSAwOwogICAgICAgICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtWYWx1ZU1heH0gfHw9IDMwOwoKICAgICAgICAkREZ7Q29uZmlnfXtQb3NzaWJsZVZhbHVlc30gPSB7IG1hcCB7ICRfID0+ICRfIH0gKCAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17VmFsdWVNaW59IC4uICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtWYWx1ZU1heH0gKSB9OwoKICAgICAgICBpZiAoICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtWYWx1ZURlZmF1bHR9ICkgewogICAgICAgICAgICAkREZ7Q29uZmlnfXtEZWZhdWx0VmFsdWV9ID0gJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1ZhbHVlRGVmYXVsdH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkREZ7Q29uZmlnfXtQb3NzaWJsZU5vbmV9ID0gMTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRUeXBlIGVxICdUaWNrZXRSZWZlcmVuY2UnICkgewogICAgICAgICRERntGaWVsZFR5cGV9ICAgICAgICAgICAgICAgICAgICA9ICdUaWNrZXQnOwogICAgICAgICRERntDb25maWd9e1Bvc3NpYmxlTm9uZX0gICAgICAgICA9IDE7CiAgICAgICAgJERGe0NvbmZpZ317RWRpdEZpZWxkTW9kZX0gICAgICAgID0gJ0F1dG9Db21wbGV0ZSc7CiAgICAgICAgJERGe0NvbmZpZ317UmVmZXJlbmNlZE9iamVjdFR5cGV9ID0gJ1RpY2tldCc7CiAgICB9CiAgICBlbHNpZiAoICRUeXBlIGVxICdDSUNsYXNzUmVmZXJlbmNlJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSAgICAgICAgICAgICAgID0gJ0NvbmZpZ0l0ZW0nOwogICAgICAgICRERntDb25maWd9e0VkaXRGaWVsZE1vZGV9ICAgPSAnQXV0b0NvbXBsZXRlJzsKICAgICAgICAkREZ7Q29uZmlnfXtTZWFyY2hBdHRyaWJ1dGV9ID0gJ05hbWUnOwoKICAgICAgICBpZiAoICRQYXJhbXtBdHRyaWJ1dGV9e0lucHV0fXtSZWZlcmVuY2VkQ0lDbGFzc05hbWV9ICkgewogICAgICAgICAgICBteSAkUmVmZXJlbmNlZENJQ2xhc3NOYW1lID0gJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1JlZmVyZW5jZWRDSUNsYXNzTmFtZX07CiAgICAgICAgICAgIG15ICVDbGFzc05hbWUySUQgICAgICAgICAgPSByZXZlcnNlICV7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgICkgLy8ge30KICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKCAkQ2xhc3NOYW1lMklEeyRSZWZlcmVuY2VkQ0lDbGFzc05hbWV9ICkgewogICAgICAgICAgICAgICAgJERGe0NvbmZpZ317Q2xhc3NJRHN9ID0gWyAkQ2xhc3NOYW1lMklEeyRSZWZlcmVuY2VkQ0lDbGFzc05hbWV9IF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBteSAkQXR0cktleSA9ICRQYXJhbXtBdHRyaWJ1dGV9e0tleX07CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+VGhlIFJlZmVyZW5jZWRDSUNsYXNzTmFtZSAnJFJlZmVyZW5jZWRDSUNsYXNzTmFtZScgaW4gYXR0cmlidXRlICckQXR0cktleScgaGFzIG5vIG1hdGNoPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFR5cGUgZXEgJ1VzZXInICkgewogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ0FnZW50JzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnQ0lBQ0N1c3RvbWVyQ29tcGFueScgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAnQ3VzdG9tZXJDb21wYW55JzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnQ3VzdG9tZXJVc2VyQ29tcGFueScgKSB7CiAgICAgICAgJERGe0ZpZWxkVHlwZX0gPSAnQ3VzdG9tZXJDb21wYW55JzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnQ0lBdHRhY2htZW50JyApIHsKICAgICAgICBteSAkQ2hlY2tQYWNrYWdlID0gJFNlbGYtPl9DaGVja0luc3RhbGxlZFBhY2thZ2UoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgUGFja2FnZSA9PiAnRHluYW1pY0ZpZWxkQXR0YWNobWVudCcsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENoZWNrUGFja2FnZSAmJiAkU2VsZi0+e1VzZURlZmF1bHRzfSApIHsKICAgICAgICAgICAgJFNlbGYtPntNaXNzaW5nUGFja2FnZXN9Kys7CiAgICAgICAgfQogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ0F0dGFjaG1lbnQnOwogICAgICAgICRERntDb25maWd9e0VkaXRGaWVsZE1vZGV9ID0gJ0F1dG9Db21wbGV0ZSc7CiAgICB9CiAgICBlbHNpZiAoICRUeXBlIGVxICdTZXJ2aWNlUmVmZXJlbmNlJyApIHsKICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICdTZXJ2aWNlJzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnUXVldWVSZWZlcmVuY2UnICkgewogICAgICAgIG15ICRDaGVja1BhY2thZ2UgPSAkU2VsZi0+X0NoZWNrSW5zdGFsbGVkUGFja2FnZSgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBQYWNrYWdlID0+ICdEeW5hbWljRmllbGRUaWNrZXRzQXR0cmlidXRlcycsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENoZWNrUGFja2FnZSAmJiAkU2VsZi0+e1VzZURlZmF1bHRzfSApIHsKICAgICAgICAgICAgJFNlbGYtPntNaXNzaW5nUGFja2FnZXN9Kys7CiAgICAgICAgfQogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ1F1ZXVlJzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnU0xBUmVmZXJlbmNlJyApIHsKICAgICAgICBteSAkQ2hlY2tQYWNrYWdlID0gJFNlbGYtPl9DaGVja0luc3RhbGxlZFBhY2thZ2UoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgUGFja2FnZSA9PiAnRHluYW1pY0ZpZWxkVGlja2V0c0F0dHJpYnV0ZXMnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRDaGVja1BhY2thZ2UgJiYgJFNlbGYtPntVc2VEZWZhdWx0c30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TWlzc2luZ1BhY2thZ2VzfSsrOwogICAgICAgIH0KICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICdTTEEnOwogICAgICAgICRERntDb25maWd9e0VkaXRGaWVsZE1vZGV9ID0gJ0F1dG9Db21wbGV0ZSc7CiAgICB9CiAgICBlbHNpZiAoICRUeXBlIGVxICdUeXBlUmVmZXJlbmNlJyApIHsKICAgICAgICBteSAkQ2hlY2tQYWNrYWdlID0gJFNlbGYtPl9DaGVja0luc3RhbGxlZFBhY2thZ2UoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgUGFja2FnZSA9PiAnRHluYW1pY0ZpZWxkVGlja2V0c0F0dHJpYnV0ZXMnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRDaGVja1BhY2thZ2UgJiYgJFNlbGYtPntVc2VEZWZhdWx0c30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TWlzc2luZ1BhY2thZ2VzfSsrOwogICAgICAgIH0KICAgICAgICAkREZ7RmllbGRUeXBlfSA9ICdUeXBlJzsKICAgICAgICAkREZ7Q29uZmlnfXtFZGl0RmllbGRNb2RlfSA9ICdBdXRvQ29tcGxldGUnOwogICAgfQogICAgZWxzaWYgKCAkVHlwZSBlcSAnVGV4dExpbmsnICkgewogICAgICAgICRERntGaWVsZFR5cGV9ID0gJ1RleHQnOwogICAgICAgICRERntDb25maWd9e0xpbmt9ID0gJ1slIERhdGEuVmFsdWUgfCB1cmwgJV0nOwogICAgfQoKICAgICMgTGVnYWN5IERGIHR5cGUgJ0R5bmFtaWNGaWVsZCcgZnJvbSB0aGUgcGFja2FnZSBDSUF0dHJpYnV0ZXNDb2xsZWN0aW9uCiAgICAjIFRoaXMgdHlwZSByZWZlcmVuY2VzIGEgZ2VuZXJpYyBERiB3aG9zZSB0eXBlIG11c3QgYmUgc3BlY2lmaWVkIGJ5IHRoZSBsZWdhY3kgYXR0cmlidXRlIE5hbWUKICAgIGVsc2lmICggJFR5cGUgZXEgJ0R5bmFtaWNGaWVsZCcgKSB7CiAgICAgICAgaWYgKCAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17TmFtZX0gKSB7CiAgICAgICAgICAgIG15ICRMZWdhY3lGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e05hbWV9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkREZ7RmllbGRUeXBlfSAgICAgICAgICAgICAgPSAnRHJvcGRvd24nOwogICAgICAgICAgICAkREZ7Q29uZmlnfXtNdWx0aVZhbHVlfSAgICAgPSAoICRQYXJhbXtBdHRyaWJ1dGV9e0NvdW50TWF4fSAmJiAkUGFyYW17QXR0cmlidXRlfXtDb3VudE1heH0gPiAxICkgPyAxIDogMDsKICAgICAgICAgICAgJERGe0NvbmZpZ317UG9zc2libGVWYWx1ZXN9ID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZWdhY3lGaWVsZCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5GaWVsZCB0eXBlICdEeW5hbWljRmllbGQnIHJlcXVpcmVzIE5hbWUgc3BlY2lmaWNhdGlvbiE8L3JlZD5cbiIpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Vbmtub3duIGlucHV0IHR5cGUgJyRUeXBlJyE8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICVERjsKfQoKc3ViIF9Db250aW51ZU9yTm90IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICdOZXh0JyBpZiAkU2VsZi0+e1VzZURlZmF1bHRzfTsKCiAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgIjx5ZWxsb3c+RG9uZS5cblxuWW91IGNhbiBwYXVzZSBoZXJlIHRvIHJldmlldyBhbmQgcG9zc2libHkgYWx0ZXIgdGhlIHN1Z2dlc3Rpb25zIGJ5IGluc3BlY3RpbmcgYW5kIGNoYW5naW5nIHRoZSBmaWxlcy4gQ2FsbGluZyB0aGUgc2NyaXB0IGFnYWluIGxhdGVyIHNob3VsZCBhdXRvbWF0aWNhbGx5IHJlc3VtZSBhdCB0aGUgcmlnaHQgc3RlcCwgeW91IGNhbiBtYW51YWxseSBlbmZvcmNlIHRoaXMgYnkgY2FsbGluZyB2aWE6PC95ZWxsb3c+XG4iCiAgICApOwogICAgJFNlbGYtPlByaW50KCAiXHRiaW4vb3RvYm8uQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6VXBncmFkZVRvMTEgLS1zdGFydC1hdCAiIC4gKCAkUGFyYW17Q3VycmVudFN0ZXB9ICsgMSApIC4gIlxuIiApOwogICAgJFNlbGYtPlByaW50KAogICAgICAgICJcbjx5ZWxsb3c+VG8gZmluaXNoIHRoZSBzY3JpcHQgbm93LCBqdXN0IHByZXNzIGVudGVyLiBUbyBkaXJlY3RseSBjb250aW51ZSB3aXRoIHRoZSBkZWZhdWx0IHN1Z2dlc3Rpb25zIHdpdGhvdXQgcmV2aWV3IHdyaXRlICdkZWYnLjwveWVsbG93PlxuXHQiCiAgICApOwoKICAgIHJldHVybiAnTmV4dCcgaWYgPFNURElOPiA9fiBtL15kZWYoYXVsdCk/JC87CgogICAgcmV0dXJuICdFeGl0JzsKfQoKc3ViIF9DaGVja0luc3RhbGxlZFBhY2thZ2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUGFzcyA9IDE7CgogICAgcmV0dXJuICRQYXNzIGlmICRTZWxmLT57Q2hlY2tlZFR5cGVzfXsgJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1R5cGV9IH07CgogICAgJFBhc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UGFja2FnZScpLT5QYWNrYWdlSXNJbnN0YWxsZWQoCiAgICAgICAgTmFtZSA9PiAkUGFyYW17UGFja2FnZX0sCiAgICApOwogICAgaWYgKCAhJFBhc3MgKSB7CiAgICAgICAgbXkgJENsYXNzICAgICAgICA9ICRQYXJhbXtDbGFzc307CiAgICAgICAgbXkgJERlZmluaXRpb25JRCA9ICRQYXJhbXtEZWZpbml0aW9uSUR9OwogICAgICAgIG15ICRGaWVsZFR5cGUgICAgPSAkUGFyYW17QXR0cmlidXRlfXtJbnB1dH17VHlwZX07CiAgICAgICAgbXkgJEZpZWxkTmFtZSAgICA9ICRQYXJhbXtBdHRyaWJ1dGV9e05hbWV9OwogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5cbkVycm9yIGNvbnZlcnRpbmcgREYgKENsYXNzOiAkQ2xhc3MsIERlZmluaXRpb25JRDogJERlZmluaXRpb25JRCwgRmllbGQgVHlwZTogJEZpZWxkVHlwZSwgRmllbGQgTmFtZTogJEZpZWxkTmFtZSkuIDwvcmVkPiIpOwogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5UaGUgJFBhcmFte1BhY2thZ2V9IHBhY2thZ2UgaXMgcmVxdWlyZWQuPC9yZWQ+XG4iKTsKICAgIH0KICAgICRTZWxmLT57Q2hlY2tlZFR5cGVzfXsgJFBhcmFte0F0dHJpYnV0ZX17SW5wdXR9e1R5cGV9IH0gPSAxOwoKICAgIHJldHVybiAkUGFzczsKfQoKc3ViIF9SZXNldFNldHRpbmdzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFN5c0NvbmZpZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgbXkgJFNldHRpbmdOYW1lICAgICAgID0gJFBhcmFte1NldHRpbmdOYW1lfTsKICAgIG15ICRFeGNsdXNpdmVMb2NrR1VJRCA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdMb2NrKAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIEZvcmNlICA9PiAxLAogICAgICAgIE5hbWUgICA9PiAkU2V0dGluZ05hbWUsCiAgICApOwogICAgaWYgKCAhJEV4Y2x1c2l2ZUxvY2tHVUlEICkgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3QgbG9jayAnJFNldHRpbmdOYW1lJyBmb3IgcmVzZXQ8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm47CiAgICB9CiAgICBteSAkU3VjY2VzcyA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdSZXNldCgKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAkU2V0dGluZ05hbWUsCiAgICAgICAgRXhjbHVzaXZlTG9ja0dVSUQgPT4gJEV4Y2x1c2l2ZUxvY2tHVUlELAogICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICApOwogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkNvdWxkIG5vdCByZXNldCAnJFNldHRpbmdOYW1lJzwvcmVkPlxuIik7CgogICAgICAgIHJldHVybjsKICAgIH0KICAgICRTdWNjZXNzID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ1VubG9jaygKICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICBOYW1lICAgPT4gJFNldHRpbmdOYW1lLAogICAgKTsKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Db3VsZCBub3QgdW5sb2NrICckU2V0dGluZ05hbWUnPC9yZWQ+XG4iKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbXkgJURlcGxveW1lbnRSZXN1bHQgPSAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgICAgIENvbW1lbnRzID0+ICJSZXNldCAkU2V0dGluZ05hbWUuIiwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIEZvcmNlICAgID0+IDEsCiAgICApOwogICAgaWYgKCAhJERlcGxveW1lbnRSZXN1bHR7U3VjY2Vzc30gKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkNvdWxkIG5vdCBkZXBsb3kgcmVzZXQgb2YgJyRTZXR0aW5nTmFtZSc8L3JlZD5cbiIpOwoKICAgICAgICByZXR1cm47CiAgICB9CiAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5TdWNjZXNzZnVsbHkgcmVzZXQgJyRTZXR0aW5nTmFtZScuPC9ncmVlbj5cbiIpOwogICAgcmV0dXJuOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ImportExport/Export.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6SW1wb3J0RXhwb3J0OjpFeHBvcnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpCYXNlQ29tbWFuZCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcsCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdUaGUgdG9vbCBmb3IgZXhwb3J0aW5nIGNvbmZpZyBpdGVtcycpOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAndGVtcGxhdGUtbnVtYmVyJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiU3BlY2lmeSBhIHRlbXBsYXRlIG51bWJlciB0byBiZSBleHBvcnRlZC4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci9cZCsvc214LAogICAgKTsKICAgICRTZWxmLT5BZGRBcmd1bWVudCgKICAgICAgICBOYW1lICAgICAgICA9PiAnZGVzdGluYXRpb24nLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJTcGVjaWZ5IHRoZSBwYXRoIHRvIGEgZmlsZSB3aGVyZSBjb25maWcgaXRlbSBkYXRhIHNob3VsZCBiZSBleHBvcnRlZC4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLiovc214LAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVGVtcGxhdGVJRCA9ICRTZWxmLT5HZXRPcHRpb24oJ3RlbXBsYXRlLW51bWJlcicpOwoKICAgICMgZ2V0IHRlbXBsYXRlIGRhdGEKICAgIG15ICRUZW1wbGF0ZURhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPlRlbXBsYXRlR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkVGVtcGxhdGVEYXRhLT57VGVtcGxhdGVJRH0gKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlRlbXBsYXRlICRUZW1wbGF0ZUlEIG5vdCBmb3VuZCEuXG4iKTsKICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiRXhwb3J0IGFib3J0ZWQuLlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkV4cG9ydGluZyBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cbiIpOwogICAgJFNlbGYtPlByaW50KCAiPHllbGxvdz4iIC4gKCAnPScgeCA2OSApIC4gIjwveWVsbG93PlxuIiApOwoKICAgICMgZXhwb3J0IGRhdGEKICAgIG15ICRSZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPkV4cG9ydCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgaWYgKCAhJFJlc3VsdCApIHsKICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiRXJyb3Igb2NjdXJyZWQuIEV4cG9ydCBpbXBvc3NpYmxlISBTZWUgU3lzbG9nIGZvciBkZXRhaWxzLlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCAiPGdyZWVuPiIgLiAoICctJyB4IDY5ICkgLiAiPC9ncmVlbj5cbiIgKTsKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPlN1Y2Nlc3M6ICRSZXN1bHQtPntTdWNjZXNzfSBzdWNjZWVkZWQ8L2dyZWVuPlxuIik7CiAgICBpZiAoICRSZXN1bHQtPntGYWlsZWR9ICkgewogICAgICAgICRTZWxmLT5QcmludEVycm9yKCIkUmVzdWx0LT57RmFpbGVkfSBmYWlsZWQuXG4iKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkVycm9yOiAkUmVzdWx0LT57RmFpbGVkfSBmYWlsZWQuPC9ncmVlbj5cbiIpOwogICAgfQoKICAgIG15ICREZXN0aW5hdGlvbkZpbGUgPSAkU2VsZi0+R2V0QXJndW1lbnQoJ2Rlc3RpbmF0aW9uJyk7CgogICAgaWYgKCREZXN0aW5hdGlvbkZpbGUpIHsKCiAgICAgICAgbXkgJEZpbGVDb250ZW50ID0gam9pbiAiXG4iLCBAeyAkUmVzdWx0LT57RGVzdGluYXRpb25Db250ZW50fSB9OwoKICAgICAgICAjIHNhdmUgZGVzdGluYXRpb24gY29udGVudCB0byBmaWxlCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5GaWxlV3JpdGUoCiAgICAgICAgICAgIExvY2F0aW9uID0+ICREZXN0aW5hdGlvbkZpbGUsCiAgICAgICAgICAgIENvbnRlbnQgID0+IFwkRmlsZUNvbnRlbnQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludEVycm9yKCJDYW4ndCB3cml0ZSBmaWxlICREZXN0aW5hdGlvbkZpbGUuXG5FeHBvcnQgYWJvcnRlZC5cbiIpOwogICAgICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3IoKTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkZpbGUgJERlc3RpbmF0aW9uRmlsZSBzYXZlZC48L2dyZWVuPlxuIik7CgogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkV4cG9ydCBjb21wbGV0ZS48L2dyZWVuPlxuIik7CiAgICAkU2VsZi0+UHJpbnQoICI8Z3JlZW4+IiAuICggJy0nIHggNjkgKSAuICI8L2dyZWVuPlxuIiApOwogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CgogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/ImportExport/Import.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6SW1wb3J0RXhwb3J0OjpJbXBvcnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpCYXNlQ29tbWFuZCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcsCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdUaGUgdG9vbCBmb3IgaW1wb3J0aW5nIGNvbmZpZyBpdGVtcycpOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAndGVtcGxhdGUtbnVtYmVyJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiU3BlY2lmeSBhIHRlbXBsYXRlIG51bWJlciB0byBiZSBpbXBvZXJ0ZWQuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAxLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvXGQrL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkQXJndW1lbnQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ3NvdXJjZScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIlNwZWNpZnkgdGhlIHBhdGggdG8gdGhlIGZpbGUgd2hpY2ggY29udGFpbmluZyB0aGUgY29uZmlnIGl0ZW0gZGF0YSBmb3IgaW1wb3J0aW5nLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uKi9zbXgsCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFByZVJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTb3VyY2VQYXRoID0gJFNlbGYtPkdldEFyZ3VtZW50KCdzb3VyY2UnKTsKICAgIGlmICggJFNvdXJjZVBhdGggJiYgIS1yICRTb3VyY2VQYXRoICkgewogICAgICAgIGRpZSAiRmlsZSAkU291cmNlUGF0aCBkb2VzIG5vdCBleGlzdCwgY2FuIG5vdCBiZSByZWFkLlxuIjsKICAgIH0KCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVGVtcGxhdGVJRCA9ICRTZWxmLT5HZXRPcHRpb24oJ3RlbXBsYXRlLW51bWJlcicpOwoKICAgICMgZ2V0IHRlbXBsYXRlIGRhdGEKICAgIG15ICRUZW1wbGF0ZURhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPlRlbXBsYXRlR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICBpZiAoICEkVGVtcGxhdGVEYXRhLT57VGVtcGxhdGVJRH0gKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlRlbXBsYXRlICRUZW1wbGF0ZUlEIG5vdCBmb3VuZCEuXG4iKTsKICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiRXhwb3J0IGFib3J0ZWQuLlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkltcG9ydGluZyBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cbiIpOwogICAgJFNlbGYtPlByaW50KCAiPHllbGxvdz4iIC4gKCAnPScgeCA2OSApIC4gIjwveWVsbG93PlxuIiApOwoKICAgIG15ICRTb3VyY2VDb250ZW50OwogICAgbXkgJFNvdXJjZUZpbGUgPSAkU2VsZi0+R2V0QXJndW1lbnQoJ3NvdXJjZScpOwoKICAgIGlmICgkU291cmNlRmlsZSkgewoKICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+UmVhZCBGaWxlICRTb3VyY2VGaWxlLjwveWVsbG93PlxuIik7CgogICAgICAgICMgcmVhZCBzb3VyY2UgZmlsZQogICAgICAgICRTb3VyY2VDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+RmlsZVJlYWQoCiAgICAgICAgICAgIExvY2F0aW9uID0+ICRTb3VyY2VGaWxlLAogICAgICAgICAgICBSZXN1bHQgICA9PiAnU0NBTEFSJywKICAgICAgICAgICAgTW9kZSAgICAgPT4gJ2Jpbm1vZGUnLAogICAgICAgICk7CgogICAgICAgIGlmICggISRTb3VyY2VDb250ZW50ICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiQ2FuJ3QgcmVhZCBmaWxlICRTb3VyY2VGaWxlLlxuSW1wb3J0IGFib3J0ZWQuXG4iKSBpZiAhJFNvdXJjZUNvbnRlbnQ7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgICAgIH0KCiAgICB9CgogICAgIyBpbXBvcnQgZGF0YQogICAgbXkgJFJlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnKS0+SW1wb3J0KAogICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgU291cmNlQ29udGVudCA9PiAkU291cmNlQ29udGVudCwKICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICApOwoKICAgIGlmICggISRSZXN1bHQgKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlxuRXJyb3Igb2NjdXJyZWQuIEltcG9ydCBpbXBvc3NpYmxlISBTZWUgdGhlIE9UT0JPIGxvZyBmb3IgZGV0YWlscy5cbiIpOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgfQoKICAgICMgcHJpbnQgcmVzdWx0CiAgICAkU2VsZi0+UHJpbnQoIlxuPGdyZWVuPkltcG9ydCBvZiAkUmVzdWx0LT57Q291bnRlcn0gJFJlc3VsdC0+e09iamVjdH0gcmVjb3Jkczo8L2dyZWVuPlxuIik7CiAgICAkU2VsZi0+UHJpbnQoICI8Z3JlZW4+IiAuICggJy0nIHggNjkgKSAuICI8L2dyZWVuPlxuIiApOwogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+U3VjY2VzczogJFJlc3VsdC0+e1N1Y2Nlc3N9IHN1Y2NlZWRlZDwvZ3JlZW4+XG4iKTsKICAgIGlmICggJFJlc3VsdC0+e0ZhaWxlZH0gKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIiRSZXN1bHQtPntGYWlsZWR9IGZhaWxlZC5cbiIpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RXJyb3I6ICRSZXN1bHQtPntGYWlsZWR9IGZhaWxlZC48L2dyZWVuPlxuIik7CiAgICB9CgogICAgZm9yIG15ICRSZXRDb2RlICggc29ydCBrZXlzICV7ICRSZXN1bHQtPntSZXRDb2RlfSB9ICkgewogICAgICAgIG15ICRDb3VudCA9ICRSZXN1bHQtPntSZXRDb2RlfS0+eyRSZXRDb2RlfSB8fCAwOwogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkltcG9ydCBvZiAkUmVzdWx0LT57Q291bnRlcn0gJFJlc3VsdC0+e09iamVjdH0gcmVjb3JkczogJENvdW50ICRSZXRDb2RlPC9ncmVlbj5cbiIpOwogICAgfQogICAgaWYgKCAkUmVzdWx0LT57RmFpbGVkfSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5MYXN0IHByb2Nlc3NlZCBsaW5lIG51bWJlciBvZiBpbXBvcnQgZmlsZTogJFJlc3VsdC0+e0NvdW50ZXJ9PC9ncmVlbj5cbiIpOwogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkltcG9ydCBjb21wbGV0ZS48L2dyZWVuPlxuIik7CiAgICAkU2VsZi0+UHJpbnQoICI8Z3JlZW4+IiAuICggJy0nIHggNjkgKSAuICI8L2dyZWVuPlxuIiApOwogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CgogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/Console/Command/Admin/ITSM/IncidentState/Recalculate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6SW5jaWRlbnRTdGF0ZTo6UmVjYWxjdWxhdGU7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oJ1JlY2FsY3VsYXRlcyB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgY29uZmlnIGl0ZW1zLicpOwoKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2NvbmZpZ2l0ZW0tbnVtYmVyJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiUmVjYWxjdWxhdGUgbGlzdGVkIGNvbmZpZyBpdGVtcy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci9cZCsvc214LAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5SZWNhbGN1bGF0aW5nIHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cblxuIik7CgogICAgbXkgQENvbmZpZ0l0ZW1JRHM7ICAgICMgZWl0aGVyIGV4cGxpY2l0IGxpc3Qgb3IgYWxsIHZhbGlkIGNsYXNzZXMKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgQENvbmZpZ0l0ZW1OdW1iZXJzID0gQHsgJFNlbGYtPkdldE9wdGlvbignY29uZmlnaXRlbS1udW1iZXInKSAvLyBbXSB9OwogICAgaWYgKEBDb25maWdJdGVtTnVtYmVycykgewoKICAgICAgICBDT05GSUdfSVRFTV9OVU1CRVI6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKCiAgICAgICAgICAgICMgY2hlY2tzIHRoZSB2YWxpZGl0eSBvZiB0aGUgY29uZmlnIGl0ZW0gaWQKICAgICAgICAgICAgbXkgJElEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRJRCkgewogICAgICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJElEOwoKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fTlVNQkVSOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+VW5hYmxlIHRvIGZpbmQgY29uZmlnIGl0ZW0gJENvbmZpZ0l0ZW1OdW1iZXIuPC95ZWxsb3c+XG4iKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBnZXQgdGhlIHZhbGlkIGNsYXNzIGlkcwogICAgICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKICAgICAgICBteSBAVmFsaWRDbGFzc0lEcyA9IHNvcnQga2V5cyAkQ2xhc3NMaXN0LT4lKjsKCiAgICAgICAgIyBnZXQgYWxsIGNvbmZpZyBpdGVtcyBpZHMgZm9ybSBhbGwgdmFsaWQgY2xhc3NlcwogICAgICAgIG15ICVDb25maWdJdGVtc0lEc1JlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICBDbGFzc0lEcyA9PiBcQFZhbGlkQ2xhc3NJRHMsCiAgICAgICAgICAgIFJlc3VsdCAgID0+ICdIQVNIJwogICAgICAgICk7CgogICAgICAgIEBDb25maWdJdGVtSURzID0ga2V5cyAlQ29uZmlnSXRlbXNJRHNSZWY7CiAgICB9CgogICAgIyBnZXQgbnVtYmVyIG9mIGNvbmZpZyBpdGVtcwogICAgbXkgJENJQ291bnQgPSBzY2FsYXIgQENvbmZpZ0l0ZW1JRHM7CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlJlY2FsY3VsYXRpbmcgaW5jaWRlbnQgc3RhdGUgZm9yICRDSUNvdW50IGNvbmZpZyBpdGVtcy48L3llbGxvdz5cbiIpOwoKICAgICMgUmVtZW1iZXIgY29uZmlnIGl0ZW0gcmVzdWx0cyB0aHJvdWdoIG11bHRpcGxlIHJ1bnMgb2YgQ3VySW5jaVN0YXRlUmVjYWxjKCkuCiAgICBteSAlTmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGU7CiAgICBteSAlU2Nhbm5lZENvbmZpZ0l0ZW1JRHM7CgogICAgbXkgJENvdW50ID0gMDsKICAgIENPTkZJR0lURU06CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQENvbmZpZ0l0ZW1JRHMpIHsKCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZSA9PiBcJU5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlLAogICAgICAgICAgICBTY2FubmVkQ29uZmlnSXRlbUlEcyAgICAgICA9PiBcJVNjYW5uZWRDb25maWdJdGVtSURzLAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjxyZWQ+Li4uIGNvdWxkIG5vdCByZWNhbGN1bGF0ZSBpbmNpZGVudCBzdGF0ZSBmb3IgY29uZmlnIGl0ZW0gaWQgJyRDb25maWdJdGVtSUQnITwvcmVkPlxuIik7CgogICAgICAgICAgICBuZXh0IENPTkZJR0lURU07CiAgICAgICAgfQoKICAgICAgICAkQ291bnQrKzsKCiAgICAgICAgaWYgKCAkQ291bnQgJSAxMDAgPT0gMCApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+Li4uICRDb3VudCBjb25maWcgaXRlbXMgcmVjYWxjdWxhdGVkLjwvZ3JlZW4+XG4iKTsKICAgICAgICB9CiAgICB9CgogICAgJFNlbGYtPlByaW50KCJcbjxncmVlbj5SZWFkeS4gUmVjYWxjdWxhdGVkICRDb3VudCBjb25maWcgaXRlbXMuPC9ncmVlbj5cblxuIik7CgogICAgIyBnZXQgc2VydmljZSBvYmplY3QKICAgIG15ICRTZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKTsKCiAgICAjIGdldCBsaXN0IG9mIGFsbCBzZXJ2aWNlcyAodmFsaWQgYW5kIGludmFsaWQpCiAgICBteSAlU2VydmljZUxpc3QgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIG15ICROdW1iZXJPZlNlcnZpY2VzID0gc2NhbGFyIGtleXMgJVNlcnZpY2VMaXN0OwoKICAgICRTZWxmLT5QcmludCgKICAgICAgICAiPGdyZWVuPlJlc2V0dGluZyBTZXJ2aWNlUHJlZmVyZW5jZXMgJ0N1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzJyBmb3IgJE51bWJlck9mU2VydmljZXMgc2VydmljZXMuLi48L2dyZWVuPlxuIgogICAgKTsKCiAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIHNvcnQga2V5cyAlU2VydmljZUxpc3QgKSB7CgogICAgICAgICMgdXBkYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIHR5cGUgZnJvbSBDSXMgb2YgdGhlIHNlcnZpY2Ugd2l0aCBhbiBlbXB0eSB2YWx1ZQogICAgICAgICMgdGhpcyBpcyBuZWNlc3NhcnkgdG8gZm9yY2UgYSByZWNhbGN1bGF0aW9uIG9uIGEgU2VydmljZUdldCgpCiAgICAgICAgJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJycsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+UmVhZHkuPC9ncmVlbj5cbiIpOwoKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Maint/ITSM/ConfigItem/CreateConditionalTickets.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6TWFpbnQ6OklUU006OkNvbmZpZ0l0ZW06OkNyZWF0ZUNvbmRpdGlvbmFsVGlja2V0czsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnLAopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignQ2hlY2tzIHRoZSBjb25maWd1cmVkIGNvbmZpZyBpdGVtcyBhbmQgY3JlYXRlcyB0aWNrZXRzIGFzIG5vdGlmaWNhdGlvbiBpZiB0aGUgcmVxdWlyZW1lbnRzIGFyZSBmdWxmaWxsZWQuJyk7CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE5vdGlmaWNhdGlvbkNvbmZpZ3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0NNREJOb3RpZmljYXRpb25zOjpSdWxlcycpOwoKICAgIGlmICggISROb3RpZmljYXRpb25Db25maWdzICkgewogICAgICAgICRTZWxmLT5QcmludCgiXG48Z3JlZW4+Tm8gbm90aWZpY2F0aW9ucyBjb25maWd1cmVkLjwvZ3JlZW4+XG4iKTsKICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKICAgIH0KCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRMaW5rT2JqZWN0ICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKICAgIG15ICRUaWNrZXRPYmplY3QgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwogICAgbXkgJEFydGljbGVPYmplY3QgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIG15ICVDbGFzc0xpc3QgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApCiAgICB9OwogICAgbXkgJURlcGxTdGF0ZUxpc3QgPSByZXZlcnNlICV7CiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgKQogICAgfTsKCiAgICAjIGdvIHRocm91Z2ggYWxsIGNvbmZpZ3VyZWQgbm90aWZpY2F0aW9uIHNldHVwcwogICAgQ09ORklHOgogICAgZm9yIG15ICRDb25maWcgKCB2YWx1ZXMgJXskTm90aWZpY2F0aW9uQ29uZmlnc30gKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGFuZCBkZXBsb3ltZW50IHN0YXRlIGlkcwogICAgICAgIG15ICRDbGFzc0lEICAgICAgPSAkQ2xhc3NMaXN0eyAkQ29uZmlnLT57Q2xhc3N9IH07CiAgICAgICAgbXkgJERlcGxTdGF0ZUlEcyA9IFsgbWFwIHsgJERlcGxTdGF0ZUxpc3R7JF99IH0gQHsgJENvbmZpZy0+e0FjdGl2ZURlcGxveW1lbnRTdGF0ZXN9IH0gXTsKCiAgICAgICAgaWYgKCAhJENsYXNzSUQgfHwgIUlzQXJyYXlSZWZXaXRoRGF0YSgkRGVwbFN0YXRlSURzKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIGNsYXNzICckQ29uZmlnLT57Q2xhc3N9Jywgb3IgdmFsaWQgZGVwbG95bWVudCBzdGF0ZXMgY29uZmlndXJlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IENPTkZJRzsKICAgICAgICB9CgogICAgICAgIG15IEBDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbJENsYXNzSURdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gJERlcGxTdGF0ZUlEcywKICAgICAgICAgICAgUmVzdWx0ICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgKTsKCiAgICAgICAgIyBnbyB0aHJvdWdoIGFsbCBjb25maWcgaXRlbXMKICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgICAgIG15ICRMYXN0VmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkTGFzdFZlcnNpb24tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmZpZy0+e1RpbWVDSUtleX0gfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRHluYW1pYyBmaWVsZCAkQ29uZmlnLT57VGltZUNJS2V5fSBvZiBDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRCBpcyBlbXB0eSBvciBkb2VzIG5vdCBleGlzdCAtIHNraXAhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkZWZpbmUgdGhlIHRyaWdnZXIgZGF0ZTsKICAgICAgICAgICAgbXkgJFRyaWdnZXJEYXRlT2JqZWN0OwoKICAgICAgICAgICAgIyBkYXRlIGZpZWxkIGZvcm1hdAogICAgICAgICAgICBpZiAoICRMYXN0VmVyc2lvbi0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZmlnLT57VGltZUNJS2V5fSB9ID1+IC9eKFxkKyktKFxkKyktKFxkKykvICkgewogICAgICAgICAgICAgICAgJFRyaWdnZXJEYXRlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBZZWFyICAgPT4gJDEsCiAgICAgICAgICAgICAgICAgICAgICAgIE1vbnRoICA9PiAkMiwKICAgICAgICAgICAgICAgICAgICAgICAgRGF5ICAgID0+ICQzLAogICAgICAgICAgICAgICAgICAgICAgICBIb3VyICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgTWludXRlID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlY29uZCA9PiAwLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEeW5hbWljIGZpZWxkICRDb25maWctPntUaW1lQ0lLZXl9IG9mIENvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEIGhhcyBhbiBpbnZhbGlkIGZvcm1hdCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHByZXBhcmUgdGhlIG1vZGlmaWVyCiAgICAgICAgICAgIG15ICggJFNpZ24sICRTdW1tYW5kLCAkVW5pdCApID0gKCAkQ29uZmlnLT57VGltZU1vZGlmaWVyfSA9fiAvXlxzKihbKy1dPylccyooXGQrKVxzKihbZGhtXT8pLyApOwogICAgICAgICAgICAkU3VtbWFuZCAqPSAoICRTaWduICYmICRTaWduIGVxICctJyApICA/IC0xIDogMTsKICAgICAgICAgICAgJFN1bW1hbmQgKj0gKCAhJFVuaXQgfHwgJFVuaXQgZXEgJ2QnICkgPyA4NjQwMCA6CiAgICAgICAgICAgICAgICAoICRVbml0IGVxICdoJyApID8gMzYwMCA6IDYwOwoKICAgICAgICAgICAgIyBnZXQgbm93CiAgICAgICAgICAgIG15ICROb3dPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb25seSBwcm9jZWVkLCBpZiBub3cgaXMgbGF0ZXIgdGhhbiB0aGVuIG1vZGlmaWVkIHRyaWdnZXIgZGF0ZQogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAoICROb3dPYmplY3QtPlRvRXBvY2goKSA8ICRUcmlnZ2VyRGF0ZU9iamVjdC0+VG9FcG9jaCgpICsgJFN1bW1hbmQgKTsKCiAgICAgICAgICAgICMgY2hlY2sgd2hldGhlciBhIHRpY2tldCB3YXMgZ2VuZXJhdGVkIHByZXZpb3VzbHkgYW5kIGlzIG5vdCBjbG9zZWQKICAgICAgICAgICAgbXkgJUxpbmtMaXN0ID0gJExpbmtPYmplY3QtPkxpbmtLZXlMaXN0KAogICAgICAgICAgICAgICAgT2JqZWN0MSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgS2V5MSAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgT2JqZWN0MiA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgIFN0YXRlICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0RlcGVuZHNPbicsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBmb3IgbXkgJExpbmtlZFRpY2tldElEICgga2V5cyAlTGlua0xpc3QgKSB7CiAgICAgICAgICAgICAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJExpbmtlZFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgU2lsZW50ICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNraXAgY29uZmlnIGl0ZW0sIGlmIGFuIG9wZW4gdGlja2V0IHdhcyBhbHJlYWR5IGNyZWF0ZWQKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZmlnLT57VGlja2V0fXtEeW5hbWljRmllbGR9IH0KICAgICAgICAgICAgICAgICAgICAmJiAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZmlnLT57VGlja2V0fXtEeW5hbWljRmllbGR9IH0gPT0gMQogICAgICAgICAgICAgICAgICAgICYmICRUaWNrZXR7U3RhdGVUeXBlfSBuZSAiY2xvc2VkIgogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwcmVwYXJlIHN1YnN0aXR1dGlvbnMKICAgICAgICAgICAgbXkgJVN1YnN0aXR1dGlvbnMgPSAoCiAgICAgICAgICAgICAgICAnPE9UT0JPX0NPTkZJR0lURU1fTlVNQkVSPicgPT4gJExhc3RWZXJzaW9uLT57TnVtYmVyfSwKICAgICAgICAgICAgICAgICc8T1RPQk9fQ09ORklHSVRFTV9OQU1FPicgICA9PiAkTGFzdFZlcnNpb24tPntOYW1lfSwKICAgICAgICAgICAgICAgICc8T1RPQk9fQ09ORklHSVRFTV9EQVRFPicgICA9PiAkTGFzdFZlcnNpb24tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmZpZy0+e1RpbWVDSUtleX0gfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFNVQktFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCAoICRDb25maWctPntUaWNrZXR9e1RpdGxlfSAuICRDb25maWctPntUaWNrZXR9e1RleHR9ICkgPX4gLzxPVE9CT19DT05GSUdJVEVNXyhbXj5dKyk+L2cgKSB7CiAgICAgICAgICAgICAgICBuZXh0IFNVQktFWSBpZiBleGlzdHMgJFN1YnN0aXR1dGlvbnN7IjxPVE9CT19DT05GSUdJVEVNXyRLZXk+In07CiAgICAgICAgICAgICAgICBuZXh0IFNVQktFWSBpZiAhJExhc3RWZXJzaW9uLT57JEtleX07CgogICAgICAgICAgICAgICAgJFN1YnN0aXR1dGlvbnN7IjxPVE9CT19DT05GSUdJVEVNXyRLZXk+In0gPSAkTGFzdFZlcnNpb24tPnskS2V5fSAvLyAnJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFRpY2tldFRpdGxlICAgICAgPSAkQ29uZmlnLT57VGlja2V0fXtUaXRsZX07CiAgICAgICAgICAgIG15ICROb3RpZmljYXRpb25UZXh0ID0gJENvbmZpZy0+e1RpY2tldH17VGV4dH07CiAgICAgICAgICAgIGZvciBteSAkS2V5ICgga2V5cyAlU3Vic3RpdHV0aW9ucyApIHsKICAgICAgICAgICAgICAgICRUaWNrZXRUaXRsZSAgICAgID1+IHMvJEtleS8kU3Vic3RpdHV0aW9uc3sgJEtleSB9L2c7CiAgICAgICAgICAgICAgICAkTm90aWZpY2F0aW9uVGV4dCA9fiBzLyRLZXkvJFN1YnN0aXR1dGlvbnN7ICRLZXkgfS9nOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFsbCBjaGVja3MgZmluaXNoZWQgLT4gY3JlYXRlIGEgdGlja2V0IGFzIG5vdGlmaWNhdGlvbgogICAgICAgICAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgICAgICAgICBUTiAgICAgICAgICAgPT4gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCksCiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJFRpY2tldFRpdGxlLAogICAgICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICRDb25maWctPntUaWNrZXR9e1F1ZXVlfSwKICAgICAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAkQ29uZmlnLT57VGlja2V0fXtMb2NrfSAgICAgICAgIHx8ICd1bmxvY2snLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICRDb25maWctPntUaWNrZXR9e1ByaW9yaXR5fSAgICAgfHwgJzMgbm9ybWFsJywKICAgICAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAkQ29uZmlnLT57VGlja2V0fXtTdGF0ZX0gICAgICAgIHx8ICduZXcnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRDb25maWctPntUaWNrZXR9e1R5cGV9ICAgICAgICAgfHwgJycsCiAgICAgICAgICAgICAgICBTZXJ2aWNlICAgICAgPT4gJENvbmZpZy0+e1RpY2tldH17U2VydmljZX0gICAgICB8fCAnJywKICAgICAgICAgICAgICAgIFNMQSAgICAgICAgICA9PiAkQ29uZmlnLT57VGlja2V0fXtTTEF9ICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgID0+ICRDb25maWctPntUaWNrZXR9e0N1c3RvbWVySUR9ICAgfHwgJycsCiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJENvbmZpZy0+e1RpY2tldH17Q3VzdG9tZXJVc2VyfSB8fCAnJywKICAgICAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAkQ29uZmlnLT57VGlja2V0fXtPd25lcklEfSAgICAgIHx8ICcxJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkVGlja2V0SUQgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgY3JlYXRlIGEgdGlja2V0IGZvciBDb25maWdJdGVtSUQ6ICRDb25maWdJdGVtSUQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkbyBhcnRpY2xlIGRiIGluc2VydAogICAgICAgICAgICBteSAkSW50ZXJuYWxBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRBcnRpY2xlT2JqZWN0LT5CYWNrZW5kRm9yQ2hhbm5lbCggQ2hhbm5lbE5hbWUgPT4gJ0ludGVybmFsJyApOwogICAgICAgICAgICBteSAkQXJ0aWNsZUlEICAgICAgICAgICAgICAgICAgICA9ICRJbnRlcm5hbEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJENvbmZpZy0+e1RpY2tldH17U2VuZGVyVHlwZX0gfHwgJ3N5c3RlbScsCiAgICAgICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAwLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgnLAogICAgICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJE5vdGlmaWNhdGlvblRleHQsCiAgICAgICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAkVGlja2V0VGl0bGUsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ05ld1RpY2tldCcsCiAgICAgICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAiXCVcJUNNREJOb3RpZmljYXRpb24iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjbG9zZSB0aWNrZXQgaWYgYXJ0aWNsZSBjcmVhdGUgZmFpbGVkIQogICAgICAgICAgICBpZiAoICEkQXJ0aWNsZUlEICkgewogICAgICAgICAgICAgICAgJFRpY2tldE9iamVjdC0+VGlja2V0RGVsZXRlKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IHByb2Nlc3MgdGlja2V0ISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgbGluayB0aWNrZXQgYW5kIGNvbmZpZyBpdGVtCiAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICAgICAgU291cmNlT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBTb3VyY2VLZXkgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0RlcGVuZHNPbicsCiAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGhlIGR5bmFtaWMgZmllbGQgIHRvIDEsIHRvIG1hcmsgdGhlIHRpY2tldCBhcyBnZW5lcmF0ZWQgYnkgdGhpcyBzY3JpcHQKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJENvbmZpZy0+e1RpY2tldH17RHluYW1pY0ZpZWxkfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgfQogICAgfQoKICAgICRTZWxmLT5QcmludCgiXG48Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKMTsK</File>
        <File Location="Kernel/System/Console/Command/Maint/ITSM/ConfigItem/RebuildLinkTable.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6TWFpbnQ6OklUU006OkNvbmZpZ0l0ZW06OlJlYnVpbGRMaW5rVGFibGU7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9IHF3KAogICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKDw8J0VORF9UWFQnKTsKUmVidWlsZCB0aGUgZGF0YWJhc2UgdGFibGUgY29uZmlnaXRlbV9saW5rIGZyb20gdGhlIGR5bmFtaWMgZmllbGRzIG9mIHRoZSB0eXBlIFJlZmVyZW5jZS4gT25seSB0aGUgZmllbGRzIGxpbmtpbmcgY29uZmlnIGl0ZW1zIGFyZQpjb25zaWRlcmVkIGluIHRoaXMgcHJvY2Vzcy4KRU5EX1RYVAoKICAgIHJldHVybjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5SZWJ1aWxkaW5nIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuLi48L3llbGxvdz5cblxuIik7CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRSZXN1bHQgICAgICAgICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJlYnVpbGRMaW5rVGFibGU7CgogICAgJFNlbGYtPlByaW50KCI8JFJlc3VsdC0+e0NvbG9yfT4kUmVzdWx0LT57TWVzc2FnZX08LyRSZXN1bHQtPntDb2xvcn0+XG5cbiIpOwoKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvciB1bmxlc3MgJFJlc3VsdC0+e1N1Y2Nlc3N9OwogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rOwp9CgoxOwo=</File>
        <File Location="Kernel/System/Console/Command/Maint/WebService/TriggerConfigItemFetch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6V2ViU2VydmljZTo6VHJpZ2dlckNvbmZpZ0l0ZW1GZXRjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RGFlbW9uOjpTY2hlZHVsZXJEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnLAopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoLicpOwogICAgJFNlbGYtPkFkZEFyZ3VtZW50KAogICAgICAgIE5hbWUgICAgICAgID0+ICdXZWJTZXJ2aWNlTmFtZScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIlNlbGVjdCBuYW1lIG9mIHdlYiBzZXJ2aWNlIHRvIGJlIHRyaWdnZXJlZC4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDEsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uL3NteCwKICAgICk7CiAgICAkU2VsZi0+QWRkQXJndW1lbnQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0ludm9rZXInLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJTZWxlY3QgSW52b2tlciB0byBiZSB0cmlnZ2VyZWQuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAxLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvLi8sCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFByZVJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRJbnZva2VyICAgICAgICA9ICRTZWxmLT5HZXRBcmd1bWVudCgnSW52b2tlcicpOwogICAgbXkgJFdlYnNlcnZpY2VOYW1lID0gJFNlbGYtPkdldEFyZ3VtZW50KCdXZWJTZXJ2aWNlTmFtZScpOwoKICAgICMgQ2hlY2sgaWYgYWxsIHJlcXVpcmVtZW50cyBhcmUgbWV0ICh3ZWIgc2VydmljZSBleGlzdHMgYW5kIGhhcyBuZWVkZWQgbWV0aG9kKS4KICAgIG15ICRXZWJzZXJ2aWNlCiAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlR2V0KCBOYW1lID0+ICRXZWJzZXJ2aWNlTmFtZSApOwogICAgZGllICJSZXF1aXJlZCB3ZWIgc2VydmljZSAnJFdlYnNlcnZpY2VOYW1lJyBkb2VzIG5vdCBleGlzdCFcbiIgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRXZWJzZXJ2aWNlKTsKICAgIGRpZSAiUmVxdWlyZWQgd2ViIHNlcnZpY2UgJyRXZWJzZXJ2aWNlTmFtZScgaXMgaW52YWxpZCFcbiIgICAgIGlmICRXZWJzZXJ2aWNlLT57VmFsaWRJRH0gbmUgMTsKCiAgICBteSAkSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nCiAgICAgICAgPSAkV2Vic2VydmljZS0+e0NvbmZpZ30tPntSZXF1ZXN0ZXJ9LT57VHJhbnNwb3J0fS0+e0NvbmZpZ30tPntJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9OwogICAgZGllICJXZWIgc2VydmljZSAnJFdlYnNlcnZpY2VOYW1lJyBkb2VzIG5vdCBjb250YWluIHJlcXVpcmVkIFJFU1QgY29udHJvbGxlciBtYXBwaW5nIVxuIgogICAgICAgIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkSW52b2tlckNvbnRyb2xsZXJNYXBwaW5nKTsKICAgIGRpZSAiV2ViIHNlcnZpY2UgJyRXZWJzZXJ2aWNlTmFtZScgZG9lcyBub3QgY29udGFpbiB0aGUgSW52b2tlciAnJEludm9rZXInISIKICAgICAgICBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRJbnZva2VyQ29udHJvbGxlck1hcHBpbmctPnskSW52b2tlcn0gKTsKCiAgICAjIFJlbWVtYmVyIGRhdGEgZm9yIHRhc2suCiAgICAkU2VsZi0+e0NvbmZpZ0l0ZW1GZXRjaFRhc2tEYXRhfSA9IHsKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2UtPntJRH0sCiAgICAgICAgSW52b2tlciAgICAgID0+ICRJbnZva2VyLAogICAgICAgIERhdGEgICAgICAgICA9PiB7IER1bW15ID0+IDEgfSwKICAgIH07CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEludm9rZXIgPSAkU2VsZi0+R2V0QXJndW1lbnQoJ0ludm9rZXInKTsKCiAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgIjx5ZWxsb3c+VHJpZ2dlcmluZyAkSW52b2tlciBmb3IgaW1tZWRpYXRlIChhc3luY2hyb25vdXMpIGV4ZWN1dGlvbi48L3llbGxvdz5cbiIKICAgICk7CgogICAgbXkgJFJlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyktPlJ1biggJFNlbGYtPntDb25maWdJdGVtRmV0Y2hUYXNrRGF0YX0tPiUqICk7CgogICAgIyBUT0RPOiBUaGluayBhYm91dCBqdXN0IGFkZGluZyBhIHRhc2sKICAgICMgICAgbXkgJFRhc2tJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEYWVtb246OlNjaGVkdWxlckRCJyktPlRhc2tBZGQoCiAgICAjICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJ0dlbmVyaWNJbnRlcmZhY2UnLAogICAgIyAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgID0+ICdDb25maWdJdGVtRmV0Y2hfJyAuICRJbnZva2VyLAogICAgIyAgICAgICAgTWF4aW11bVBhcmFsbGVsSW5zdGFuY2VzID0+IDEsCiAgICAjICAgICAgICBEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntDb25maWdJdGVtRmV0Y2hUYXNrRGF0YX0sCiAgICAjICAgICk7CiAgICAjCiAgICAjICAgIGlmICggIUlzSW50ZWdlcigkVGFza0lEKSApIHsKICAgICMgICAgICAgICRTZWxmLT5QcmludEVycm9yKCdDb3VsZCBub3QgdHJpZ2dlciBpbnZva2VyJyk7CiAgICAjICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3IoKTsKICAgICMgICAgfQogICAgIwogICAgIyAgICBpZiAoICRUYXNrSUQgPT0gLTEgKSB7CiAgICAjICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+QW5vdGhlciAkSW52b2tlciBjb250cm9sbGVyIGlzIGFscmVhZHkgcnVubmluZy4gUGxlYXNlIHRyeSBhZ2FpbiE8L3llbGxvdz5cbiIpOwogICAgIyAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZUVycm9yKCk7CiAgICAjICAgIH0KCiAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5Eb25lLjwvZ3JlZW4+XG4iKTsKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwp9CgoxOwo=</File>
        <File Location="Kernel/System/DynamicField/Driver/ConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6Q29uZmlnSXRlbTsKCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBhcmFtT2JqZWN0KQoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6QmFzZVJlZmVyZW5jZSk7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCAgIHF3KGFueSBmaXJzdCk7CnVzZSBTY2FsYXI6OlV0aWwgcXcocmVmdHlwZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNBcnJheVJlZldpdGhEYXRhIElzSGFzaFJlZldpdGhEYXRhKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Okxhbmd1YWdlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtIC0gYmFja2VuZCBmb3IgdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkCgo9aGVhZDEgREVTQ1JJUFRJT04KCklUU01Db25maWdJdGVtIGJhY2tlbmQgZm9yIHRoZSBSZWZlcmVuY2UgZHluYW1pYyBmaWVsZC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCml0IGlzIHVzdWFsbHkgbm90IG5lY2Vzc2FyeSB0byBleHBsaWNpdGx5IGNyZWF0ZSBpbnN0YW5jZXMgb2YgZHluYW1pYyBmaWVsZCBkcml2ZXJzLgpJbnN0YW5jZXMgb2YgdGhlIGRyaXZlcnMgYXJlIGNyZWF0ZWQgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIHRoZQpkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0IEM8S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZD4uCgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICgkVHlwZSkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0gYmxlc3Mge30sICRUeXBlOwoKICAgICMgU29tZSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZHMgYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UgdGFibGUgYXR0cmlidXRlIGR5bmFtaWNfZmllbGRfdmFsdWUudmFsdWVfaW50LgogICAgJFNlbGYtPntWYWx1ZVR5cGV9ICAgICAgPSAnSW50ZWdlcic7CiAgICAkU2VsZi0+e1ZhbHVlS2V5fSAgICAgICA9ICdWYWx1ZUludCc7CiAgICAkU2VsZi0+e1RhYmxlQXR0cmlidXRlfSA9ICd2YWx1ZV9pbnQnOwoKICAgICMgVXNlZCBmb3IgZGVjbGFyaW5nIENTUyBjbGFzc2VzCiAgICAkU2VsZi0+e0ZpZWxkQ1NTQ2xhc3N9ID0gJ0R5bmFtaWNGaWVsZFJlZmVyZW5jZSc7CgogICAgIyBzZXQgZmllbGQgYmVoYXZpb3JzCiAgICAkU2VsZi0+e0JlaGF2aW9yc30gPSB7CiAgICAgICAgJ0lzQUNMUmVkdWNpYmxlJyAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgJ0lzTm90aWZpY2F0aW9uRXZlbnRDb25kaXRpb24nID0+IDAsCiAgICAgICAgJ0lzU29ydGFibGUnICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzRmlsdHJhYmxlJyAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzU3RhdHNDb25kaXRpb24nICAgICAgICAgICAgID0+IDAsCiAgICAgICAgJ0lzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlJyAgID0+IDEsCiAgICAgICAgJ0lzSGlkZGVuSW5UaWNrZXRJbmZvcm1hdGlvbicgID0+IDAsCiAgICAgICAgJ0lzUmVmZXJlbmNlRmllbGQnICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzU2V0Q2FwYWJsZScgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ1NldHNEeW5hbWljQ29udGVudCcgICAgICAgICAgID0+IDEsCiAgICB9OwoKICAgICRTZWxmLT57UmVmZXJlbmNlZE9iamVjdFR5cGV9ID0gJ0lUU01Db25maWdJdGVtJzsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBWYWx1ZUdldCgpCgpUaGlzIG1ldGhvZCBjb250YWlucyBzcGVjaWFsIHN1cHBvcnQgZm9yIHRoZSBjYXNlIG9mIExlbnNlcy4gQSBMZW5zIG9wZXJhdGVzIGRpcmVjdGx5IG9uIGR5bmFtaWMgZmllbGQgb2YgYW4gc3BlY2lmaWMgb2JqZWN0LgpUaGUgc3BlY2lmaWMgb2JqZWN0IGlzIHVzdWFsbHkgaWRlbnRpZmllZCBieSB0aGUgdmFsdWUgb2YgdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkLiBCdXQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHNwZWNpYWwgY2FzZS4KV2hlbiB0aGUgcmVmZXJlbmNlIGlzIHRvIGFuIEM8SVRTTUNvbmZpZ0l0ZW0+IHRoZW4gdGhlIHJlbGV2YW50IElEIGlzIHRoZSBJRCBvZiB0aGUgbGFzdCB2ZXJzaW9uLiBUaGlzIGNhc2UgaXMgaGFuZGxlZAp3aGVuIHRoZSBwYXJhbWV0ZXIgQzxGb3JMZW5zPiBpcyBwYXNzZWQuCgo9Y3V0CgpzdWIgVmFsdWVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCB0aGUgdmFsdWUgZnJvbSB0aGUgcGFyZW50IGNsYXNzCiAgICBteSAkVmFsdWUgPSAkU2VsZi0+U1VQRVI6OlZhbHVlR2V0KCVQYXJhbSk7CgogICAgIyBzcGVjaWFsIGhhbmRsaW5nIG9ubHkgZm9yIExlbnMKICAgIHJldHVybiAkVmFsdWUgdW5sZXNzICRQYXJhbXtGb3JMZW5zfTsKCiAgICAjIGZvciB1c2FnZSBpbiBsZW5zZXMgd2UgbWlnaHQgaGF2ZSB0byBpbnRlcnByZXQgdGhlIHZhbHVlcyB0byBiZSB1c2FibGUgZm9yIHRoZWlyIFZhbHVlR2V0KCkKICAgIHJldHVybiAkU2VsZi0+VmFsdWVGb3JMZW5zKAogICAgICAgICVQYXJhbSwKICAgICAgICBWYWx1ZSA9PiAkVmFsdWUKICAgICk7Cn0KCj1oZWFkMiBWYWx1ZVNldCgpCgpUaGlzIG1ldGhvZCBoYW5kbGVzIENvbmZpZ0l0ZW0tTGluayBzeW5jIGZvciBDPElUU01Db25maWdJdGVtPnMgd2hlbiBEeW5hbWljIEZpZWxkIFJlZmVyZW5jZXMgYmV0d2VlbiAyCkNvbmZpZ0l0ZW0oVmVyc2lvbikgYXJlIHVwZGF0ZWQuCgo9Y3V0CgpzdWIgVmFsdWVTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVzdWx0ID0gJFNlbGYtPlNVUEVSOjpWYWx1ZVNldCglUGFyYW0pOwoKICAgIGlmICgkUmVzdWx0KSB7CgogICAgICAgICMgb3B0aW9uYWwgY29uZmlnIGl0ZW0gbGlua3MKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgICAgIG15ICRPYmplY3RUeXBlID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9OwogICAgICAgIG15ICRGaWVsZFR5cGUgID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX07CgogICAgICAgICMgb25seSBwcm9jZWVkIGlmIHRoaXMgaXMgYSBDSSA8LT4gQ0kgcmVsYXRpb25zaGlwCiAgICAgICAgcmV0dXJuICRSZXN1bHQgdW5sZXNzICRPYmplY3RUeXBlID1+IC9eSVRTTUNvbmZpZ0l0ZW0vOwogICAgICAgIHJldHVybiAkUmVzdWx0IHVubGVzcyAkRmllbGRUeXBlICA9fiAvXkNvbmZpZ0l0ZW0vOwoKICAgICAgICBteSAkVmFsdWVUeXBlID0gcmVmKCAkUGFyYW17VmFsdWV9ICk7CiAgICAgICAgbXkgQFZhbHVlcyAgICA9ICRWYWx1ZVR5cGUgJiYgJFZhbHVlVHlwZSBlcSAnQVJSQVknCiAgICAgICAgICAgID8gJFBhcmFte1ZhbHVlfS0+QCoKICAgICAgICAgICAgOiAkUGFyYW17VmFsdWV9ID8gKCAkUGFyYW17VmFsdWV9ICkgOiAoKTsKCiAgICAgICAgaWYgKCAkUGFyYW17U2V0fSApIHsKCiAgICAgICAgICAgICMgaW4gc2V0cyB3ZSBleHBlY3QgZWl0aGVyIGFycmF5IHJlZmVyZW5jZXMgb3IgdW5kZWYgZm9yIHRoZSBzaW5nbGUgc2V0IGluZGljZXMKICAgICAgICAgICAgIyBmcm9tIFsgW1ZhbDExLCBWYWwxMl0sIHVuZGVmLCBbVmFsMzFdIF0KICAgICAgICAgICAgIyB2aWEgICggW1ZhbDExLCBWYWwxMl0sIHVuZGVmLCBbVmFsMzFdICkKICAgICAgICAgICAgIyB0byAgICggVmFsMTEsIFZhbDEyLCBWYWwzMSApCiAgICAgICAgICAgIEBWYWx1ZXMgPSBtYXAgeyAkXyA/ICRfLT5AKiA6ICgpIH0gQFZhbHVlczsKICAgICAgICB9CgogICAgICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gICAgICAgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgVmVyc2lvbklEICAgICA9PiAkUGFyYW17T2JqZWN0SUR9LAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyB1cGRhdGUgY29uZmlnaXRlbV9saW5rCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPlN5bmNMaW5rVGFibGUoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUxhc3RWZXJzaW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVZlcnNpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICA9PiBcQFZhbHVlcywKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkUmVzdWx0Owp9CgojIE92ZXJyaWRlIGZyb20gQmFzZVJlZmVyZW5jZSB0byBwcmV2ZW50IExpbmtPYmplY3QtQXV0by1MaW5raW5nIGZvciBDSSA8LT4gQ0kgcmVsYXRpb25zCgpzdWIgX0NyZWF0ZUF1dG9MaW5rT2JqZWN0TGluayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkUGFyYW17RHluYW1pY0ZpZWxkfTsKICAgIG15ICRPYmplY3RUeXBlICAgPSAkRHluYW1pY0ZpZWxkLT57T2JqZWN0VHlwZX07CiAgICBteSAkRmllbGRUeXBlICAgID0gJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX07CgogICAgJEZpZWxkVHlwZSAgPX4gcy9eQ29uZmlnSXRlbS9JVFNNQ29uZmlnSXRlbS87CiAgICAkRmllbGRUeXBlICA9fiBzL15JVFNNQ29uZmlnSXRlbVZlcnNpb24vSVRTTUNvbmZpZ0l0ZW0vOwogICAgJE9iamVjdFR5cGUgPX4gcy9eSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uL0lUU01Db25maWdJdGVtLzsKCiAgICBpZiAoICRGaWVsZFR5cGUgZXEgJE9iamVjdFR5cGUgJiYgJEZpZWxkVHlwZSA9fiAvXklUU01Db25maWdJdGVtLyApIHsKCiAgICAgICAgIyBza2lwIGR5bmFtaWMgbGlua2luZyBmb3IgQ29uZmlnSXRlbSA8LT4gQ29uZmlnSXRlbSBsaW5rcwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkUmVzdWx0ID0gJFNlbGYtPlNVUEVSOjpfQ3JlYXRlQXV0b0xpbmtPYmplY3RMaW5rKCVQYXJhbSk7CiAgICByZXR1cm4gJFJlc3VsdDsKfQoKc3ViIEVkaXRGaWVsZFZhbHVlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIHBhcmVudCBjbGFzcwogICAgbXkgJFZhbHVlID0gJFNlbGYtPlNVUEVSOjpFZGl0RmllbGRWYWx1ZUdldCglUGFyYW0pOwoKICAgICMgZm9yIHRoaXMgZmllbGQgdGhlIG5vcm1hbCByZXR1cm4gYW4gdGhlIFJldHVyblZhbHVlU3RydWN0dXJlIGFyZSB0aGUgc2FtZQogICAgcmV0dXJuICRWYWx1ZSB1bmxlc3MgJFBhcmFte0ZvckxlbnN9OwoKICAgICMgZm9yIHVzYWdlIGluIGxlbnNlcyB3ZSBtaWdodCBoYXZlIHRvIGludGVycHJldCB0aGUgdmFsdWVzIHRvIGJlIHVzYWJsZSBmb3IgdGhlaXIgVmFsdWVHZXQoKQogICAgcmV0dXJuICRTZWxmLT5WYWx1ZUZvckxlbnMoIFZhbHVlID0+ICRWYWx1ZSApOwp9Cgo9aGVhZDIgR2V0RmllbGRUeXBlU2V0dGluZ3MoKQoKR2V0IHRoZSBmaWVsZCB0eXBlIHNldHRpbmdzIGZvciB0aGUgcmVmZXJlbmNlZCBvYmplY3QgdHlwZSBDPElUU01Db25maWdJdGVtPi4KVGhlIGdlbmVyaWMgc2V0dGluZ3MgZm9yIGFsbCByZWZlcmVuY2VkIG9iamVjdCB0eXBlcyBhcmUgaW5jbHVkZWQgYXMgd2VsbC4KCj1jdXQKCnN1YiBHZXRGaWVsZFR5cGVTZXR0aW5ncyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRSZWZlcmVuY2luZ09iamVjdFR5cGUgPSAkUGFyYW17T2JqZWN0VHlwZX07CgogICAgIyBGaXJzdCBmZXRjaCB0aGUgZ2VuZXJpYyBzZXR0aW5ncy4KICAgIG15IEBGaWVsZFR5cGVTZXR0aW5ncyA9ICRTZWxmLT5TVVBFUjo6R2V0RmllbGRUeXBlU2V0dGluZ3MoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCiAgICAjIEFkZCB0aGUgc2VsZWN0aW9uIG9mIHRoZSBjb25maWcgaXRlbSBjbGFzcy4KICAgIHsKICAgICAgICBteSAkQ2xhc3NJRDJOYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgIHB1c2ggQEZpZWxkVHlwZVNldHRpbmdzLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb25maWdQYXJhbU5hbWUgPT4gJ0NsYXNzSURzJywKICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJyksCiAgICAgICAgICAgICAgICBFeHBsYW5hdGlvbiAgICAgPT4gVHJhbnNsYXRhYmxlKCdTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcycpLAogICAgICAgICAgICAgICAgSW5wdXRUeXBlICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgU2VsZWN0aW9uRGF0YSAgID0+ICRDbGFzc0lEMk5hbWUsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgICAgPT4gMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIGNsYXNzIGlzIHJlcXVpcmVkCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgICAgPT4gMSwKICAgICAgICAgICAgfTsKICAgIH0KCiAgICAjIEFkZCB0aGUgc2VsZWN0aW9uIG9mIHRoZSBjb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlLgogICAgewogICAgICAgIG15ICREZXBsb3ltZW50U3RhdGVzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgKTsKICAgICAgICBwdXNoIEBGaWVsZFR5cGVTZXR0aW5ncywKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uZmlnUGFyYW1OYW1lID0+ICdEZXBsU3RhdGVJRHMnLAogICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbScpLAogICAgICAgICAgICAgICAgRXhwbGFuYXRpb24gICAgID0+IFRyYW5zbGF0YWJsZSgnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJyksCiAgICAgICAgICAgICAgICBJbnB1dFR5cGUgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBTZWxlY3Rpb25EYXRhICAgPT4gJERlcGxveW1lbnRTdGF0ZXNMaXN0LAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lICAgID0+IDEsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgICAgPT4gMSwKICAgICAgICAgICAgfTsKICAgIH0KCiAgICAjIFNlbGVjdCB0aGUgbGluayByZWZlcmVuY2luZyB0eXBlCiAgICBpZiAoICRSZWZlcmVuY2luZ09iamVjdFR5cGUgPX4gbS9eSVRTTUNvbmZpZ0l0ZW0vICkgewogICAgICAgIG15IEBTZWxlY3Rpb25EYXRhID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAnRHluYW1pYycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0R5bmFtaWMgKENvbmZpZ0l0ZW0pJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdTdGF0aWMnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdTdGF0aWMgKFZlcnNpb24pJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBARmllbGRUeXBlU2V0dGluZ3MsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ1BhcmFtTmFtZSA9PiAnTGlua1JlZmVyZW5jaW5nVHlwZScsCiAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdMaW5rIFJlZmVyZW5jaW5nIFR5cGUnKSwKICAgICAgICAgICAgICAgIEV4cGxhbmF0aW9uICAgICA9PiBUcmFuc2xhdGFibGUoCiAgICAgICAgICAgICAgICAnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLicKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBJbnB1dFR5cGUgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgU2VsZWN0aW9uRGF0YSA9PiBcQFNlbGVjdGlvbkRhdGEsCiAgICAgICAgICAgICAgICBEZWZhdWx0S2V5ICAgID0+ICdEeW5hbWljJywKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgPT4gMCwKICAgICAgICAgICAgfTsKICAgIH0KCiAgICAjIFN1cHBvcnQgY29uZmlndXJhYmxlIHNlYXJjaCBrZXkKICAgIHB1c2ggQEZpZWxkVHlwZVNldHRpbmdzLAogICAgICAgIHsKICAgICAgICAgICAgQ29uZmlnUGFyYW1OYW1lID0+ICdTZWFyY2hBdHRyaWJ1dGUnLAogICAgICAgICAgICBMYWJlbCAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdBdHRyaWJ1dGUgd2hpY2ggd2lsbCBiZSBzZWFyY2hlZCBvbiBhdXRvY29tcGxldGUnKSwKICAgICAgICAgICAgRXhwbGFuYXRpb24gICAgID0+IFRyYW5zbGF0YWJsZSgnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknKSwKICAgICAgICAgICAgSW5wdXRUeXBlICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICBTZWxlY3Rpb25EYXRhICAgPT4gewogICAgICAgICAgICAgICAgJ051bWJlcicgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAnTmFtZScgICA9PiAnTmFtZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMCwKICAgICAgICB9OwoKICAgIG15ICREeW5hbWljRmllbGRzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdCgKICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICAgICBWYWxpZCAgICAgID0+IDEsCiAgICAgICAgUmVzdWx0VHlwZSA9PiAnSEFTSCcsCiAgICApOwogICAgbXkgJURGU2VsZWN0aW9uRGF0YSA9IG1hcCB7ICggIkR5bmFtaWNGaWVsZF8kXyIgPT4gIkR5bmFtaWNGaWVsZF8kXyIgKSB9IHZhbHVlcyAkRHluYW1pY0ZpZWxkc0xpc3QtPiUqOwoKICAgICMgU3VwcG9ydCBjb25maWd1cmFibGUgaW1wb3J0IHNlYXJjaCBhdHRyaWJ1dGUKICAgIHB1c2ggQEZpZWxkVHlwZVNldHRpbmdzLAogICAgICAgIHsKICAgICAgICAgICAgQ29uZmlnUGFyYW1OYW1lID0+ICdJbXBvcnRTZWFyY2hBdHRyaWJ1dGUnLAogICAgICAgICAgICBMYWJlbCAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdFeHRlcm5hbC1zb3VyY2Uga2V5JyksCiAgICAgICAgICAgIEV4cGxhbmF0aW9uICAgICA9PiBUcmFuc2xhdGFibGUoJ1doZW4gc2V0IHZpYSBhbiBleHRlcm5hbCBzb3VyY2UgKGUuZy4gd2ViIHNlcnZpY2Ugb3IgaW1wb3J0IC8gZXhwb3J0KSwgdGhlIHZhbHVlIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgdGhpcyBhdHRyaWJ1dGUuJyksCiAgICAgICAgICAgIElucHV0VHlwZSAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgU2VsZWN0aW9uRGF0YSAgID0+IHsKICAgICAgICAgICAgICAgICdOYW1lJyAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICdOdW1iZXInID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgJURGU2VsZWN0aW9uRGF0YSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgIH07CgogICAgIyBTdXBwb3J0IHZhcmlvdXMgZGlzcGxheSBvcHRpb25zCiAgICBwdXNoIEBGaWVsZFR5cGVTZXR0aW5ncywKICAgICAgICB7CiAgICAgICAgICAgIENvbmZpZ1BhcmFtTmFtZSA9PiAnRGlzcGxheVR5cGUnLAogICAgICAgICAgICBMYWJlbCAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdBdHRyaWJ1dGUgd2hpY2ggaXMgZGlzcGxheWVkIGZvciB2YWx1ZXMnKSwKICAgICAgICAgICAgRXhwbGFuYXRpb24gICAgID0+IFRyYW5zbGF0YWJsZSgnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknKSwKICAgICAgICAgICAgSW5wdXRUeXBlICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICBTZWxlY3Rpb25EYXRhICAgPT4gewogICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1OdW1iZXInICAgICAgPT4gJzxDb25maWcgSXRlbSBOdW1iZXI+JywKICAgICAgICAgICAgICAgICdDb25maWdJdGVtTmFtZScgICAgICAgID0+ICc8Q29uZmlnIEl0ZW0gTmFtZT4nLAogICAgICAgICAgICAgICAgJ0NsYXNzQ29uZmlnSXRlbU51bWJlcicgPT4gJzxDbGFzcyBOYW1lPjogPENvbmZpZyBJdGVtIE51bWJlcj4nLAogICAgICAgICAgICAgICAgJ0NsYXNzQ29uZmlnSXRlbU5hbWUnICAgPT4gJzxDbGFzcyBOYW1lPjogPENvbmZpZyBJdGVtIE5hbWU+JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgIH07CgogICAgIyBTdXBwb3J0IHJlZmVyZW5jZSBmaWx0ZXJzCiAgICBwdXNoIEBGaWVsZFR5cGVTZXR0aW5ncywKICAgICAgICB7CiAgICAgICAgICAgIENvbmZpZ1BhcmFtTmFtZSA9PiAnUmVmZXJlbmNlRmlsdGVyTGlzdCcsCiAgICAgICAgfTsKCiAgICByZXR1cm4gQEZpZWxkVHlwZVNldHRpbmdzOwp9Cgo9aGVhZDIgT2JqZWN0UGVybWlzc2lvbigpCgpjaGVja3MgcmVhZCBwZXJtaXNzaW9uIGZvciBhIGdpdmVuIG9iamVjdCBhbmQgVXNlcklELgoKICAgICRQZXJtaXNzaW9uID0gJEJhY2tlbmRPYmplY3QtPk9iamVjdFBlcm1pc3Npb24oCiAgICAgICAgS2V5ICAgICA9PiAxMjMsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBPYmplY3RQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlBlcm1pc3Npb24oCiAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0tleX0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgKTsKfQoKPWhlYWQyIE9iamVjdERlc2NyaXB0aW9uR2V0KCkKCnJldHVybiBhIGhhc2ggb2Ygb2JqZWN0IGRlc2NyaXB0aW9ucy4KCiAgICBteSAlRGVzY3JpcHRpb24gPSAkQmFja2VuZE9iamVjdC0+T2JqZWN0RGVzY3JpcHRpb25HZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+IDEyMywKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm4KCiAgICAlRGVzY3JpcHRpb24gPSAoCiAgICAgICAgTm9ybWFsID0+ICJDSSMgMTIzNDQ1NSIsCiAgICAgICAgTG9uZyAgID0+ICJDSSMgMTIzNDQ1NTogTmVlZCBhIHNhbXBsZSBjb25maWcgaXRlbSB0aXRsZSIsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdERlc2NyaXB0aW9uR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9iamVjdElEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBTaWxlbnQgICAgICAgPT4gMSwKICAgICk7CgogICAgaWYgKCAhJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgTm9ybWFsID0+ICIkUGFyYW17T2JqZWN0SUR9IChkZWxldGVkKSIsCiAgICAgICAgICAgIExvbmcgICA9PiAiJFBhcmFte09iamVjdElEfSAoZGVsZXRlZCkiLAogICAgICAgICk7CiAgICB9CgogICAgIyBwcmVwYXJlIHRyYW5zbGF0aW9uIG9mIGNsYXNzIG5hbWUgaWYgcG9zc2libGUKICAgIG15ICRDbGFzc05hbWVTdHJnID0gJENvbmZpZ0l0ZW0tPntDbGFzc307CiAgICBpZiAoICRQYXJhbXtMYXlvdXRPYmplY3R9ICkgewogICAgICAgICRDbGFzc05hbWVTdHJnID0gJFBhcmFte0xheW91dE9iamVjdH17TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENsYXNzTmFtZVN0cmcpOwogICAgfQoKICAgIG15ICVEZXNjcmlwdGlvbnM7CiAgICBpZiAoICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9ICYmICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317RGlzcGxheVR5cGV9ICkgewoKICAgICAgICAjIHByZXBhcmUgc3RyaW5nIGFzIGNvbmZpZ3VyZWQKICAgICAgICBteSAkRGlzcGxheVR5cGUgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0Rpc3BsYXlUeXBlfTsKICAgICAgICBpZiAoICREaXNwbGF5VHlwZSBlcSAnQ29uZmlnSXRlbU51bWJlcicgKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7Tm9ybWFsfSA9ICIkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1OdW1iZXJ9IjsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDb25maWdJdGVtLT57Q29uZmlnSXRlbU51bWJlcn0iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREaXNwbGF5VHlwZSBlcSAnQ29uZmlnSXRlbU5hbWUnICkgewogICAgICAgICAgICAkRGVzY3JpcHRpb25ze05vcm1hbH0gPSAiJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ29uZmlnSXRlbS0+e05hbWV9IjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRGlzcGxheVR5cGUgZXEgJ0NsYXNzQ29uZmlnSXRlbU51bWJlcicgKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7Tm9ybWFsfSA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOdW1iZXJ9IjsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDbGFzc05hbWVTdHJnOiAkQ29uZmlnSXRlbS0+e051bWJlcn0iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREaXNwbGF5VHlwZSBlcSAnQ2xhc3NDb25maWdJdGVtTmFtZScgKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7Tm9ybWFsfSA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJERlc2NyaXB0aW9uc3tOb3JtYWx9ID0gIiRDb25maWdJdGVtLT57TmFtZX0iOwogICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICB9CgogICAgbXkgJExpbms7CiAgICBpZiAoICRQYXJhbXtMaW5rfSAmJiAkUGFyYW17TGF5b3V0T2JqZWN0fXtTZXNzaW9uU291cmNlfSApIHsKICAgICAgICBpZiAoICRQYXJhbXtMYXlvdXRPYmplY3R9e1Nlc3Npb25Tb3VyY2V9IGVxICdBZ2VudEludGVyZmFjZScgKSB7CgogICAgICAgICAgICAjIFRPRE86IG9ubHkgc2hvdyB0aGUgbGluayBpZiB0aGUgdXNlciAkUGFyYW17VXNlcklEfSBoYXMgcGVybWlzc2lvbnMKICAgICAgICAgICAgJExpbmsgPSAkUGFyYW17TGF5b3V0T2JqZWN0fXtCYXNlbGlua30gLiAiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kUGFyYW17T2JqZWN0SUR9IjsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgZGVzY3JpcHRpb24KICAgIHJldHVybiAoCiAgICAgICAgJURlc2NyaXB0aW9ucywKICAgICAgICBMaW5rID0+ICRMaW5rLAogICAgKTsKfQoKPWhlYWQyIFNlYXJjaE9iamVjdHMoKQoKVGhpcyBpcyB1c2VkIGluIGF1dG8gY29tcGxldGlvbiB3aGVuIHNlYXJjaGluZyBmb3IgcG9zc2libGUgb2JqZWN0IElEcy4KCiAgICBteSBAT2JqZWN0SURzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaE9iamVjdHMoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRPYmplY3RJRCwgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIGlmIGdpdmVuLCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgVGVybQogICAgICAgIFRlcm0gICAgICAgICAgICAgICA9PiAkVGVybSwgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0cyB0byB3aWxkY2FyZCBzZWFyY2ggd2l0aCBlbXB0eSBzdHJpbmcKICAgICAgICBNYXhSZXN1bHRzICAgICAgICAgPT4gJE1heFJlc3VsdHMsCiAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBPYmplY3QgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAlRGF0YSwKICAgICAgICB9LAogICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaE9iamVjdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17VGVybX0gLy89ICcnOwoKICAgIG15ICRERkRldGFpbHMgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9IC8vIHt9OwoKICAgIG15ICVTZWFyY2hQYXJhbXM7CgogICAgaWYgKCAkUGFyYW17T2JqZWN0SUR9ICkgewogICAgICAgICRTZWFyY2hQYXJhbXN7Q29uZmlnSXRlbUlEfSA9ICRQYXJhbXtPYmplY3RJRH07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtFeHRlcm5hbFNvdXJjZX0gKSB7CgogICAgICAgICMgaW5jbHVkZSBjb25maWd1cmVkIHNlYXJjaCBwYXJhbSBpZiBwcmVzZW50CiAgICAgICAgbXkgJFNlYXJjaEF0dHJpYnV0ZSA9ICRERkRldGFpbHMtPntJbXBvcnRTZWFyY2hBdHRyaWJ1dGV9IHx8ICdOYW1lJzsKCiAgICAgICAgIyBkeW5hbWljIGZpZWxkIGF0dHJpYnV0ZQogICAgICAgIGlmICggJFNlYXJjaEF0dHJpYnV0ZSA9fiBte15EeW59aSApIHsKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skU2VhcmNoQXR0cmlidXRlfSA9IHsKICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkUGFyYW17VGVybX0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIG5hbWUgb3IgbnVtYmVyCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7JFNlYXJjaEF0dHJpYnV0ZX0gPSAiJFBhcmFte1Rlcm19IjsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBpbmNsdWRlIGNvbmZpZ3VyZWQgc2VhcmNoIHBhcmFtIGlmIHByZXNlbnQKICAgICAgICBteSAkU2VhcmNoQXR0cmlidXRlID0gJERGRGV0YWlscy0+e1NlYXJjaEF0dHJpYnV0ZX0gfHwgJ05hbWUnOwoKICAgICAgICAkU2VhcmNoUGFyYW1zeyRTZWFyY2hBdHRyaWJ1dGV9ID0gIiokUGFyYW17VGVybX0qIjsKICAgIH0KCiAgICAjIHByZXBhcmUgbWFwcGluZyBvZiBlZGl0IG1hc2sgYXR0cmlidXRlIG5hbWVzCiAgICBteSAlQXR0cmlidXRlTmFtZU1hcHBpbmcgPSAoCiAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gWwogICAgICAgICAgICAnU2VsZWN0ZWRDdXN0b21lclVzZXInLAogICAgICAgIF0sCiAgICAgICAgUmVzcG9uc2libGVJRCA9PiBbCiAgICAgICAgICAgICdOZXdSZXNwb25zaWJsZUlEJywKICAgICAgICBdLAogICAgICAgIE93bmVySUQgPT4gWwogICAgICAgICAgICAnTmV3T3duZXJJRCcsCiAgICAgICAgICAgICdOZXdVc2VySUQnLAogICAgICAgIF0sCiAgICAgICAgUXVldWVJRCA9PiBbCiAgICAgICAgICAgICdEZXN0JywKICAgICAgICAgICAgJ05ld1F1ZXVlSUQnLAogICAgICAgIF0sCiAgICAgICAgU3RhdGVJRCA9PiBbCiAgICAgICAgICAgICdOZXdTdGF0ZUlEJywKICAgICAgICAgICAgJ05leHRTdGF0ZUlEJywKICAgICAgICBdLAogICAgICAgIFByaW9yaXR5SUQgPT4gWwogICAgICAgICAgICAnTmV3UHJpb3JpdHlJRCcsCiAgICAgICAgXSwKICAgICk7CgogICAgIyBpbmNvcnBvcmF0ZSByZWZlcmVuY2VmaWx0ZXJsaXN0IGludG8gc2VhcmNoIHBhcmFtcwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRERkRldGFpbHMtPntSZWZlcmVuY2VGaWx0ZXJMaXN0fSApICYmICEkUGFyYW17RXh0ZXJuYWxTb3VyY2V9ICkgewoKICAgICAgICBteSAkQ3VzdG9tZXJVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpOwoKICAgICAgICBGSUxURVJJVEVNOgogICAgICAgIGZvciBteSAkRmlsdGVySXRlbSAoICRERkRldGFpbHMtPntSZWZlcmVuY2VGaWx0ZXJMaXN0fS0+QCogKSB7CgogICAgICAgICAgICAjIGNoZWNrIGZpbHRlciBjb25maWcKICAgICAgICAgICAgbmV4dCBGSUxURVJJVEVNIHVubGVzcyAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX07CiAgICAgICAgICAgIG5leHQgRklMVEVSSVRFTSB1bmxlc3MgKCAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gfHwgJEZpbHRlckl0ZW0tPntFcXVhbHNTdHJpbmd9ICk7CgogICAgICAgICAgICAjIG1hcCBJRCB0byBJRHMgaWYgbmVjZXNzYXJ5CiAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVOYW1lID0gJEZpbHRlckl0ZW0tPntSZWZlcmVuY2VPYmplY3RBdHRyaWJ1dGV9OwogICAgICAgICAgICBpZiAoIGFueSB7ICRfIGVxICRBdHRyaWJ1dGVOYW1lIH0gcXcoUXVldWVJRCBUeXBlSUQgU3RhdGVJRCBQcmlvcml0eUlEIFNlcnZpY2VJRCBTTEFJRCBPd25lcklEIFJlc3BvbnNpYmxlSUQgKSApIHsKICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVOYW1lIC49ICdzJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gKSB7CgogICAgICAgICAgICAgICAgIyBkb24ndCBwZXJmb3JtIHNlYXJjaCBpZiBvYmplY3QgYXR0cmlidXRlIHRvIHNlYXJjaCBmb3IgaXMgZW1wdHkKICAgICAgICAgICAgICAgIG15ICRFcXVhbHNPYmplY3RBdHRyaWJ1dGU7CiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17T2JqZWN0fSApICkgewogICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkUGFyYW17T2JqZWN0fXtEeW5hbWljRmllbGR9eyAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gfSAvLyAkUGFyYW17T2JqZWN0fXsgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH07CgogICAgICAgICAgICAgICAgICAgIGlmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IGVxICdDdXN0b21lclVzZXJJRCcgJiYgISRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgJiYgJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9ICRQYXJhbXtDdXN0b21lclVzZXJJRH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IGVxICdDdXN0b21lcklEJyAmJiAhJEVxdWFsc09iamVjdEF0dHJpYnV0ZSAmJiAkUGFyYW17Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAlQ3VzdG9tZXJVc2VyRGF0YSA9ICRDdXN0b21lclVzZXJPYmplY3QtPkN1c3RvbWVyVXNlckRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkQ3VzdG9tZXJVc2VyRGF0YXtDdXN0b21lcklEfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoIGRlZmluZWQgJFBhcmFte1BhcmFtT2JqZWN0fSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSA9fiAvXkR5bmFtaWNGaWVsZF8oPzxERk5hbWU+XFMrKS8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRERk5hbWUgICAgICAgICAgICAgPSAkK3tERk5hbWV9OwogICAgICAgICAgICAgICAgICAgICAgICBteSAkRmlsdGVySXRlbURGQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRERk5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IEZJTFRFUklURU0gdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRGaWx0ZXJJdGVtREZDb25maWcpOwoKICAgICAgICAgICAgICAgICAgICAgICAgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFte1BhcmFtT2JqZWN0fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRmlsdGVySXRlbURGQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtRGF0ZXMgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IGVxICdDdXN0b21lclVzZXJJRCcgJiYgJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9ICRQYXJhbXtDdXN0b21lclVzZXJJRH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IGVxICdDdXN0b21lcklEJyAmJiAkUGFyYW17Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAlQ3VzdG9tZXJVc2VyRGF0YSA9ICRDdXN0b21lclVzZXJPYmplY3QtPkN1c3RvbWVyVXNlckRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkQ3VzdG9tZXJVc2VyRGF0YXtDdXN0b21lcklEfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIG1hdGNoIHN0YW5kYXJkIHRpY2tldCBhdHRyaWJ1dGUgbmFtZXMgd2l0aCBlZGl0IG1hc2sgYXR0cmlidXRlIG5hbWVzCiAgICAgICAgICAgICAgICAgICAgICAgIG15IEBQYXJhbU5hbWVzID0gJFBhcmFte1BhcmFtT2JqZWN0fS0+R2V0UGFyYW1OYW1lcygpOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBpZiBhdHRyaWJ1dGUgbmFtZSBpdHNlbGYgaXMgaW4gcGFyYW1zCiAgICAgICAgICAgICAgICAgICAgICAgICMgTk9URSB0cnlpbmcgYXR0cmlidXRlIGl0c2VsZiBpcyBjcnVjaWFsbHkgaW1wb3J0YW50IGluIGNhc2Ugb2YgUXVldWVJRAogICAgICAgICAgICAgICAgICAgICAgICAjICAgYmVjYXVzZSBBZ2VudFRpY2tldFBob25lIGRvZXMgbm90IHByb3ZpZGUgUXVldWVJRCwgYnV0IHB1dHMgdGhlIGlkIGluCiAgICAgICAgICAgICAgICAgICAgICAgICMgICBEZXN0LCBhbmQgQWdlbnRUaWNrZXRFbWFpbCBsZWF2ZXMgRGVzdCBhcyBhIHN0cmluZyBidXQgcHV0cyB0aGUgaWQgaW4gUXVldWVJRAogICAgICAgICAgICAgICAgICAgICAgICBteSAkUGFyYW1OYW1lID0gZmlyc3QgeyAkXyBlcSAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gfSBAUGFyYW1OYW1lczsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgbm90LCB0cnkgdG8gZmluZCBhIG1hcHBlZCBhdHRyaWJ1dGUgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkUGFyYW1OYW1lICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgbWFwcGVkIGF0dHJpYnV0ZSBuYW1lcyBleGlzdCBhdCBhbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRNYXBwZWRBdHRyaWJ1dGVzID0gJEF0dHJpYnV0ZU5hbWVNYXBwaW5neyAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcmVmICRNYXBwZWRBdHRyaWJ1dGVzIGVxICdBUlJBWScgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BUFBFREFUVFJJQlVURToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJE1hcHBlZEF0dHJpYnV0ZSAoICRNYXBwZWRBdHRyaWJ1dGVzLT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFtTmFtZSA9IGZpcnN0IHsgJF8gZXEgJE1hcHBlZEF0dHJpYnV0ZSB9IEBQYXJhbU5hbWVzOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBNQVBQRURBVFRSSUJVVEUgaWYgJFBhcmFtTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkUGFyYW1OYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJFBhcmFte1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdoZW4gY2FsbGVkIGJ5IEFnZW50UmVmZXJlbmNlU2VhcmNoLCBEZXN0IGlzIGEgc3RyaW5nIGFuZCB3ZSBuZWVkIHRvIGV4dHJhY3QgdGhlIFF1ZXVlSUQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFBhcmFtTmFtZSBlcSAnRGVzdCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFF1ZXVlSUQgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPX4gL14oXGR7MSwxMDB9KVx8XHwuKz8kLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFF1ZXVlSUQgPSAkMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9ICRRdWV1ZUlEOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IGVxICdDdXN0b21lcklEJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRyeSBpZiBDdXN0b21lclVzZXIgaXMgb24gdGhlIG1hc2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDdXN0b21lclVzZXJJRCA9ICRQYXJhbXtQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU2VsZWN0ZWRDdXN0b21lclVzZXInICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJEN1c3RvbWVyVXNlcklEKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUN1c3RvbWVyVXNlckRhdGEgPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lclVzZXJEYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyID0+ICRDdXN0b21lclVzZXJJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkQ3VzdG9tZXJVc2VyRGF0YXtDdXN0b21lcklEfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5laXRoZXIgYXR0cmlidXRlIG5vciBtYXBwZWQgYWx0ZXJuYXRpdmVzIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGF0dHJpYnV0ZSAnJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9JyBhbmQgaXRzIGFzc29jaWF0ZWQgYWx0ZXJuYXRpdmVzIGlzIG5vdCBhdmFpbGFibGUgb24gdGhlIG1hc2shIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZW5zdXJlIHRoYXQgZm9yIEVxdWFsc09iamVjdEF0dHJpYnV0ZSBVc2VySUQgYWx3YXlzICRTZWxmLT57VXNlcklEfSBpcyB1c2VkIGluIHRoZSBlbmQKICAgICAgICAgICAgICAgIGlmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IGVxICdVc2VySUQnICkgewogICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkUGFyYW17VXNlcklEfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gKCkgdW5sZXNzICRFcXVhbHNPYmplY3RBdHRyaWJ1dGU7CiAgICAgICAgICAgICAgICByZXR1cm4gKCkgaWYgKCByZWYgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSBlcSAnQVJSQVknICYmICEkRXF1YWxzT2JqZWN0QXR0cmlidXRlLT5AKiApOwoKICAgICAgICAgICAgICAgICMgY29uZmlnIGl0ZW0gYXR0cmlidXRlCiAgICAgICAgICAgICAgICBpZiAoICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfSA9fiBte15Db259aSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW1zeyRBdHRyaWJ1dGVOYW1lfSA9ICRFcXVhbHNPYmplY3RBdHRyaWJ1dGU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkIGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gPX4gbXteRHlufWkgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkRXF1YWxzT2JqZWN0QXR0cmlidXRlLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gZXEgJ0N1c3RvbWVyVXNlcklEJyApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW1ze0N1c3RvbWVyVXNlckxvZ2lufSA9IFskRXF1YWxzT2JqZWN0QXR0cmlidXRlXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFycmF5IGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSBbJEVxdWFsc09iamVjdEF0dHJpYnV0ZV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ30gKSB7CgogICAgICAgICAgICAgICAgIyBjb25maWcgaXRlbSBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgICMgVE9ETyBjaGVjayBpZiB0aGlzIGhhcyB0byBiZSBhZGFwdGVkIGZvciB0aWNrZXQgc2VhcmNoCiAgICAgICAgICAgICAgICBpZiAoICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfSA9fiBte15Db259aSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW1zeyRBdHRyaWJ1dGVOYW1lfSA9ICRGaWx0ZXJJdGVtLT57RXF1YWxzU3RyaW5nfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGR5bmFtaWMgZmllbGQgYXR0cmlidXRlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfSA9fiBte15EeW59aSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW1zeyRBdHRyaWJ1dGVOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRGaWx0ZXJJdGVtLT57RXF1YWxzU3RyaW5nfSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntSZWZlcmVuY2VPYmplY3RBdHRyaWJ1dGV9IGVxICdDdXN0b21lclVzZXJJRCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tDdXN0b21lclVzZXJMb2dpbn0gPSBbICRGaWx0ZXJJdGVtLT57RXF1YWxzU3RyaW5nfSBdOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYXJyYXkgYXR0cmlidXRlCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW1zeyRBdHRyaWJ1dGVOYW1lfSA9IFsgJEZpbHRlckl0ZW0tPntFcXVhbHNTdHJpbmd9IF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBTdXBwb3J0IHJlc3RyaWN0aW9uIGJ5IGNsYXNzCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJERGRGV0YWlscy0+e0NsYXNzSURzfSApICYmICEkUGFyYW17RXh0ZXJuYWxTb3VyY2V9ICkgewogICAgICAgIGlmICggJFNlYXJjaFBhcmFtc3tDbGFzc0lEc30gKSB7CiAgICAgICAgICAgIG15IEBDbGFzc0lEczsKICAgICAgICAgICAgZm9yIG15ICRDbGFzc0lEICggJFNlYXJjaFBhcmFtc3tDbGFzc0lEc30tPkAqICkgewogICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkQ2xhc3NJRCB9ICRERkRldGFpbHMtPntDbGFzc0lEc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQENsYXNzSURzLCAkQ2xhc3NJRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICgpIHVubGVzcyBAQ2xhc3NJRHM7CgogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze0NsYXNzSURzfSA9IFxAQ2xhc3NJRHM7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze0NsYXNzSURzfSA9ICRERkRldGFpbHMtPntDbGFzc0lEc307CiAgICAgICAgfQogICAgfQoKICAgICMgU3VwcG9ydCByZXN0cmljdGlvbiBieSBkZXBsb3ltZW50IHN0YXRlCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJERGRGV0YWlscy0+e0RlcGxTdGF0ZUlEc30gKSApIHsKICAgICAgICBpZiAoICRTZWFyY2hQYXJhbXN7RGVwbFN0YXRlSURzfSApIHsKICAgICAgICAgICAgbXkgQERlcGxveW1lbnRTdGF0ZUlEczsKICAgICAgICAgICAgZm9yIG15ICREZXBsb3ltZW50U3RhdGVJRCAoICRTZWFyY2hQYXJhbXN7RGVwbFN0YXRlSURzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBpZiAoIGFueSB7ICRfIGVxICREZXBsb3ltZW50U3RhdGVJRCB9ICRERkRldGFpbHMtPntEZXBsU3RhdGVJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBEZXBsb3ltZW50U3RhdGVJRHMsICREZXBsb3ltZW50U3RhdGVJRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICgpIHVubGVzcyBARGVwbG95bWVudFN0YXRlSURzOwoKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tEZXBsU3RhdGVJRHN9ID0gXEBEZXBsb3ltZW50U3RhdGVJRHM7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze0RlcGxTdGF0ZUlEc30gPSAkREZEZXRhaWxzLT57RGVwbFN0YXRlSURzfTsKICAgICAgICB9CiAgICB9CgogICAgIyByZXR1cm4gYSBsaXN0IG9mIGNvbmZpZyBpdGVtIElEcwogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgIExpbWl0ICAgPT4gJFBhcmFte01heFJlc3VsdHN9LAogICAgICAgIFJlc3VsdCAgPT4gJ0FSUkFZJywKICAgICAgICBTb3J0QnkgID0+ICdOdW1iZXInLAogICAgICAgIE9yZGVyQnkgPT4gJ0Rvd24nLAogICAgICAgICVTZWFyY2hQYXJhbXMsCiAgICApOwp9Cgo9aGVhZDIgVmFsdWVGb3JMZW5zKCkKCnJldHVybiB0aGUgY3VycmVudCBsYXN0IHZlcnNpb24gaWRzIHVzZWQgaW4gZHluYW1pY19maWVsZF92YWx1ZS4KVGhlIHBhc3NlZCBpbiB2YWx1ZSBpcyBhIGxpc3Qgb2YgY29uZmlnIGl0ZW0gSURzLiBUaGVzZSBJRHMgYXJlCnRyYW5zZm9ybWVkIGludG8gdGhlIHJlc3BlY3RpdmUgbGFzdCB2ZXJzaW9uIElEcy4KCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+VmFsdWVGb3JMZW5zKAogICAgICAgIFZhbHVlID0+IFsxNywxNywxOSwyMF0sCiAgICApOwoKPWN1dAoKc3ViIFZhbHVlRm9yTGVucyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte1ZhbHVlfTsKCiAgICBpZiAoIHJlZiAkUGFyYW17VmFsdWV9IG5lICdBUlJBWScgKSB7CiAgICAgICAgJFBhcmFte1ZhbHVlfSA9IFsgJFBhcmFte1ZhbHVlfSBdOwogICAgfQoKICAgIG15IEBMYXN0VmVyc2lvbklEczsKCiAgICB1bmxlc3MgKCAkUGFyYW17U2V0fSApIHsgICAgIyMgbm8gY3JpdGljIHF3KENvbnRyb2xTdHJ1Y3R1cmVzOjpQcm9oaWJpdFVubGVzc0Jsb2NrcykKICAgICAgICBDT05GSUdfSVRFTV9JRDoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoICRQYXJhbXtWYWx1ZX0tPkAqICkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBTaWxlbnQgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb25seSB2YWxpZCBJRHMKICAgICAgICAgICAgbmV4dCBDT05GSUdfSVRFTV9JRCB1bmxlc3MgJENvbmZpZ0l0ZW07CiAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fSUQgdW5sZXNzICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH07CgogICAgICAgICAgICBwdXNoIEBMYXN0VmVyc2lvbklEcywgJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcQExhc3RWZXJzaW9uSURzOwogICAgfQoKICAgICMgZm9yIHNldHMgd2UgbmVlZCB0byB0cmFuc2xhdGUgZm9yIGV2ZXJ5IHNldCB2YWx1ZQogICAgZm9yIG15ICRTZXRWYWx1ZSAoICRQYXJhbXtWYWx1ZX0tPkAqICkgewogICAgICAgIGlmICggcmVmICRTZXRWYWx1ZSBuZSAnQVJSQVknICkgewogICAgICAgICAgICAkU2V0VmFsdWUgPSBbJFNldFZhbHVlXTsKICAgICAgICB9CgogICAgICAgIG15IEBTZXRWZXJzaW9uSURzOwoKICAgICAgICBDT05GSUdfSVRFTV9JRDoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoICRTZXRWYWx1ZS0+QCogKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb25seSB2YWxpZCBJRHMKICAgICAgICAgICAgbmV4dCBDT05GSUdfSVRFTV9JRCB1bmxlc3MgJENvbmZpZ0l0ZW07CiAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fSUQgdW5sZXNzICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH07CgogICAgICAgICAgICBwdXNoIEBTZXRWZXJzaW9uSURzLCAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9OwogICAgICAgIH0KCiAgICAgICAgcHVzaCBATGFzdFZlcnNpb25JRHMsIFxAU2V0VmVyc2lvbklEczsKICAgIH0KCiAgICByZXR1cm4gXEBMYXN0VmVyc2lvbklEczsKfQoKMTsK</File>
        <File Location="Kernel/System/DynamicField/Driver/ConfigItemVersion.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6Q29uZmlnSXRlbVZlcnNpb247Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtKTsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6OkNvbmZpZ0l0ZW1WZXJzaW9uIC0gYmFja2VuZCBmb3IgdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkCgo9aGVhZDEgREVTQ1JJUFRJT04KCklUU01Db25maWdJdGVtVmVyc2lvbiBiYWNrZW5kIGZvciB0aGUgUmVmZXJlbmNlIGR5bmFtaWMgZmllbGQuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgppdCBpcyB1c3VhbGx5IG5vdCBuZWNlc3NhcnkgdG8gZXhwbGljaXRseSBjcmVhdGUgaW5zdGFuY2VzIG9mIGR5bmFtaWMgZmllbGQgZHJpdmVycy4KSW5zdGFuY2VzIG9mIHRoZSBkcml2ZXJzIGFyZSBjcmVhdGVkIGluIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUKZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdCBDPEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQ+LgoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoJFR5cGUpID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIFNvbWUgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGRzIGFyZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIHRhYmxlIGF0dHJpYnV0ZSBkeW5hbWljX2ZpZWxkX3ZhbHVlLnZhbHVlX2ludC4KICAgICRTZWxmLT57VmFsdWVUeXBlfSAgICAgID0gJ0ludGVnZXInOwogICAgJFNlbGYtPntWYWx1ZUtleX0gICAgICAgPSAnVmFsdWVJbnQnOwogICAgJFNlbGYtPntUYWJsZUF0dHJpYnV0ZX0gPSAndmFsdWVfaW50JzsKCiAgICAjIFVzZWQgZm9yIGRlY2xhcmluZyBDU1MgY2xhc3NlcwogICAgJFNlbGYtPntGaWVsZENTU0NsYXNzfSA9ICdEeW5hbWljRmllbGRSZWZlcmVuY2UnOwoKICAgICMgc2V0IGZpZWxkIGJlaGF2aW9ycwogICAgJFNlbGYtPntCZWhhdmlvcnN9ID0gewogICAgICAgICdJc0FDTFJlZHVjaWJsZScgICAgICAgICAgICAgICA9PiAwLAogICAgICAgICdJc05vdGlmaWNhdGlvbkV2ZW50Q29uZGl0aW9uJyA9PiAwLAogICAgICAgICdJc1NvcnRhYmxlJyAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICdJc0ZpbHRyYWJsZScgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICdJc1N0YXRzQ29uZGl0aW9uJyAgICAgICAgICAgICA9PiAwLAogICAgICAgICdJc0N1c3RvbWVySW50ZXJmYWNlQ2FwYWJsZScgICA9PiAxLAogICAgICAgICdJc0hpZGRlbkluVGlja2V0SW5mb3JtYXRpb24nICA9PiAwLAogICAgICAgICdJc1JlZmVyZW5jZUZpZWxkJyAgICAgICAgICAgICA9PiAxLAogICAgfTsKCiAgICAkU2VsZi0+e1JlZmVyZW5jZWRPYmplY3RUeXBlfSA9ICdJVFNNQ29uZmlnSXRlbVZlcnNpb24nOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIE9iamVjdERlc2NyaXB0aW9uR2V0KCkKCnJldHVybiBhIGhhc2ggb2Ygb2JqZWN0IGRlc2NyaXB0aW9ucy4KCiAgICBteSAlRGVzY3JpcHRpb24gPSAkQmFja2VuZE9iamVjdC0+T2JqZWN0RGVzY3JpcHRpb25HZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+IDEyMywKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm4KCiAgICAlRGVzY3JpcHRpb24gPSAoCiAgICAgICAgTm9ybWFsID0+ICJDSSMgMTIzNDQ1NSIsCiAgICAgICAgTG9uZyAgID0+ICJDSSMgMTIzNDQ1NTogTmVlZCBhIHNhbXBsZSBjb25maWcgaXRlbSB0aXRsZSIsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdERlc2NyaXB0aW9uR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9iamVjdElEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBTaWxlbnQgICAgPT4gMSwKICAgICk7CgogICAgaWYgKCAhJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgTm9ybWFsID0+ICIkUGFyYW17T2JqZWN0SUR9IChkZWxldGVkKSIsCiAgICAgICAgICAgIExvbmcgICA9PiAiJFBhcmFte09iamVjdElEfSAoZGVsZXRlZCkiLAogICAgICAgICk7CiAgICB9CgogICAgIyBwcmVwYXJlIHRyYW5zbGF0aW9uIG9mIGNsYXNzIG5hbWUgaWYgcG9zc2libGUKICAgIG15ICRDbGFzc05hbWVTdHJnID0gJENvbmZpZ0l0ZW0tPntDbGFzc307CiAgICBpZiAoICRQYXJhbXtMYXlvdXRPYmplY3R9ICkgewogICAgICAgICRDbGFzc05hbWVTdHJnID0gJFBhcmFte0xheW91dE9iamVjdH17TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENsYXNzTmFtZVN0cmcpOwogICAgfQoKICAgIG15ICVEZXNjcmlwdGlvbnM7CiAgICBpZiAoICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9ICYmICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317RGlzcGxheVR5cGV9ICkgewoKICAgICAgICAjIHByZXBhcmUgc3RyaW5nIGFzIGNvbmZpZ3VyZWQKICAgICAgICBteSAkRGlzcGxheVR5cGUgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0Rpc3BsYXlUeXBlfTsKICAgICAgICBpZiAoICREaXNwbGF5VHlwZSBlcSAnQ29uZmlnSXRlbU51bWJlcicgKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7Tm9ybWFsfSA9ICIkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1OdW1iZXJ9IjsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDb25maWdJdGVtLT57Q29uZmlnSXRlbU51bWJlcn0iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREaXNwbGF5VHlwZSBlcSAnQ29uZmlnSXRlbU5hbWUnICkgewogICAgICAgICAgICAkRGVzY3JpcHRpb25ze05vcm1hbH0gPSAiJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ29uZmlnSXRlbS0+e05hbWV9IjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRGlzcGxheVR5cGUgZXEgJ0NsYXNzQ29uZmlnSXRlbU51bWJlcicgKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7Tm9ybWFsfSA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOdW1iZXJ9IjsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDbGFzc05hbWVTdHJnOiAkQ29uZmlnSXRlbS0+e051bWJlcn0iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREaXNwbGF5VHlwZSBlcSAnQ2xhc3NDb25maWdJdGVtTmFtZScgKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7Tm9ybWFsfSA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJERlc2NyaXB0aW9uc3tOb3JtYWx9ID0gIiRDb25maWdJdGVtLT57TmFtZX0iOwogICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICB9CgogICAgbXkgJExpbms7CiAgICBpZiAoICRQYXJhbXtMaW5rfSAmJiAkUGFyYW17TGF5b3V0T2JqZWN0fXtTZXNzaW9uU291cmNlfSApIHsKICAgICAgICBpZiAoICRQYXJhbXtMYXlvdXRPYmplY3R9e1Nlc3Npb25Tb3VyY2V9IGVxICdBZ2VudEludGVyZmFjZScgKSB7CgogICAgICAgICAgICAjIFRPRE86IG9ubHkgc2hvdyB0aGUgbGluayBpZiB0aGUgdXNlciAkUGFyYW17VXNlcklEfSBoYXMgcGVybWlzc2lvbnMKICAgICAgICAgICAgJExpbmsgPSAkUGFyYW17TGF5b3V0T2JqZWN0fXtCYXNlbGlua30gLiAiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07VmVyc2lvbklEPSRQYXJhbXtPYmplY3RJRH0iOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgcmV0dXJuICgKICAgICAgICAlRGVzY3JpcHRpb25zLAogICAgICAgIExpbmsgPT4gJExpbmssCiAgICApOwp9Cgo9aGVhZDIgU2VhcmNoT2JqZWN0cygpCgpUaGlzIGlzIHVzZWQgaW4gYXV0byBjb21wbGV0aW9uIHdoZW4gc2VhcmNoaW5nIGZvciBwb3NzaWJsZSBvYmplY3QgSURzLgoKICAgIG15IEBPYmplY3RJRHMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoT2JqZWN0cygKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJE9iamVjdElELCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkgaWYgZ2l2ZW4sIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBUZXJtCiAgICAgICAgVGVybSAgICAgICAgICAgICAgID0+ICRUZXJtLCAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIGRlZmF1bHRzIHRvIHdpbGRjYXJkIHNlYXJjaCB3aXRoIGVtcHR5IHN0cmluZwogICAgICAgIE1heFJlc3VsdHMgICAgICAgICA9PiAkTWF4UmVzdWx0cywKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICAgICBPYmplY3QgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAlRGF0YSwKICAgICAgICB9LAogICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaE9iamVjdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17VGVybX0gLy89ICcnOwoKICAgICMgZ2V0IGEgbGlzdCBvZiBjb25maWcgaXRlbSBJRHMKICAgICMgVE9ETzogdGhpcyBvbmx5IHNlYXJjaGVzIHRoZSBsYXRlc3QgdmVyc2lvbnMKICAgIG15IEBDb25maWdJdGVtSURzID0gJFNlbGYtPlNVUEVSOjpTZWFyY2hPYmplY3RzKAogICAgICAgICVQYXJhbSwKICAgICk7CgogICAgIyBhY3R1YWxseSBzdG9yZSBsYXRlc3QgdmVyc2lvbiBJRAogICAgbXkgQFZlcnNpb25JRHM7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAVmVyc2lvbklEcywgJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9OwogICAgfQoKICAgIHJldHVybiBAVmVyc2lvbklEczsKfQoKPWhlYWQyIFZhbHVlRm9yTGVucygpCgp0aGlzIG1ldGhvZCByZXR1cm5zIHRoZSBwYXNzZWQgdmFsdWUgdW5jaGFuZ2VkLiBJdCBpcyBvbmx5IGltcGxlbWVudGVkIHNvIHRoYXQKdGhlIGltcGxlbWVudGF0aW9uIGZyb20gdGhlIHBhcmVudCBjbGFzcyBDPEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6SVRTTUNvbmZpZ0l0ZW1SZWZlcmVuY2U+IGlzIG5vdCB1c2VkLgoKPWN1dAoKc3ViIFZhbHVlRm9yTGVucyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9CgoxOwo=</File>
        <File Location="Kernel/System/DynamicField/Event/ITSMConfigItemDefinitionSync.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbURlZmluaXRpb25TeW5jOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhEYXRhIEV2ZW50IENvbmZpZyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDEgaWYgJFBhcmFte0RhdGF9e05ld0RhdGF9e09iamVjdFR5cGV9IG5lICdJVFNNQ29uZmlnSXRlbSc7CiAgICByZXR1cm4gICBpZiAkUGFyYW17RXZlbnR9IG5lICdEeW5hbWljRmllbGRVcGRhdGUnOwoKICAgICMgVE9ETzogRHluYW1pY0ZpZWxkRGVsZXRlCgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgIG15ICREeW5hbWljRmllbGQ7CgogICAgIyBpZiB0aGUgX29sZF8gZHluYW1pYyBmaWVsZCB3YXMgcGFydCBvZiBhIHNldCwgYW55IGNoYW5nZSB0byBpdCB3aWxsIGFmZmVjdCB0aGUgZXhpc3Rpbmcgc2V0CiAgICAjIGFuZCB0aHVzIHRoZSBDSQogICAgaWYgKCAkUGFyYW17RGF0YX17T2xkRGF0YX17Q29uZmlnfXtQYXJ0T2ZTZXR9ICkgewogICAgICAgICREeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgSUQgPT4gJFBhcmFte0RhdGF9e09sZERhdGF9e0NvbmZpZ317UGFydE9mU2V0fSwKICAgICAgICApOwogICAgfQoKICAgICMgZm9yIHRoZSBzdGFuZGFyZCBjYXNlLCB0aGUgZmllbGQgaXMgZGlyZWN0bHkgaW50ZWdyYXRlZCwgd2UgdGFrZSB0aGUgX25ld18gZGF0YQogICAgIyAtPiBpbiBjYXNlIG9mIGEgbmFtZSBjaGFuZ2Ugd2UgZG8gbm90IHNldCBjbGFzc2VzIG91dCBvZiBzeW5jLCBhcyB3ZSB3aWxsIG5vdAogICAgIyBhdXRvbWF0aWNhbGx5IHVwZGF0ZSBkZWZpbml0aW9uIHN0cmluZ3MKICAgICMgYSBuZXcgZmllbGQgbmFtZSBoYXMgdG8gYmUgdXBkYXRlZCBtYW51YWxseSBpbiB0aGUgZGVmaW5pdGlvbgogICAgZWxzZSB7CiAgICAgICAgJER5bmFtaWNGaWVsZCA9ICRQYXJhbXtEYXRhfXtOZXdEYXRhfTsKICAgIH0KCiAgICBteSAlT3V0T2ZTeW5jRGVmaW5pdGlvbnM7CgogICAgIyBMb29wIG92ZXIgYWxsIGNsYXNzZXMgYW5kIGNoZWNrIHdoZXRoZXIgdGhleSBpbmNsdWRlIHRoZSBjaGFuZ2VkIGR5bmFtaWMgZmllbGQKICAgIGZvciBteSAkQ2xhc3NJRCAoIGtleXMgJENsYXNzTGlzdC0+JSogKSB7CiAgICAgICAgbXkgJERlZmluaXRpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICAjIHVzZSBPbGREYXRhIHRvIGFjY291bnQgZm9yIG5hbWUgY2hhbmdlcwogICAgICAgIGlmICggJERlZmluaXRpb25SZWYtPntEeW5hbWljRmllbGRSZWZ9eyAkUGFyYW17RGF0YX17T2xkRGF0YX17TmFtZX0gfSApIHsKICAgICAgICAgICAgcHVzaCBAeyAkT3V0T2ZTeW5jRGVmaW5pdGlvbnN7JENsYXNzSUR9IH0sICREeW5hbWljRmllbGQtPntJRH07CiAgICAgICAgfQoKICAgICAgICAjIHNldC1pbm5lciBmaWVsZHMgYXJlIG5vdCBzdG9yZWQgaW4gZGVmaW5pdGlvbiBkeW5hbWljIGZpZWxkIHJlZgogICAgICAgIGVsc2lmICggJERlZmluaXRpb25SZWYtPntEeW5hbWljRmllbGRSZWZ9eyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSApIHsKICAgICAgICAgICAgcHVzaCBAeyAkT3V0T2ZTeW5jRGVmaW5pdGlvbnN7JENsYXNzSUR9IH0sICREeW5hbWljRmllbGQtPntJRH07CiAgICAgICAgfQogICAgfQoKICAgICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uU2V0T3V0T2ZTeW5jKAogICAgICAgIENsYXNzZXMgPT4gXCVPdXRPZlN5bmNEZWZpbml0aW9ucywKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/DynamicField/ObjectType/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6Ok9iamVjdFR5cGU6OklUU01Db25maWdJdGVtOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6T2JqZWN0VHlwZTo6SVRTTUNvbmZpZ0l0ZW0gLSBzdXBwb3J0IGZvciBJVFNNQ29uZmlnSXRlbSBhcyBhbiBvYmplY3QgdHlwZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBdHRhY2ggZHluYW1pYyBmaWVsZHMgdG8gYW4gSVRTTUNvbmZpZ0l0ZW0uCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpVc3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpPYmplY3RUeXBlOjpJVFNNQ29uZmlnSXRlbS0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3Mge30sICRUeXBlOwp9Cgo9aGVhZDIgUHJlVmFsdWVTZXQoKQoKUGVyZm9ybSBzcGVjaWZpYyBmdW5jdGlvbnMgYmVmb3JlIHRoZSB2YWx1ZSBpcyBzZXQgZm9yIGEgZHluYW1pYyBmaWVsZCBmb3IgdGhpcyBvYmplY3QgdHlwZS4KCiAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUhhbmRsZXJPYmplY3QtPlByZVZhbHVlU2V0KAogICAgICAgIFBhcmFtICAgICAgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKClRoaXMgaGFuZGxlciBjYW4gYmUgc2tpcHBlZCBieSBwYXNzaW5nIHRoZSBhdHRyaWJ1dGUgQzxDb25maWdJdGVtSGFuZGxlZD4gaW4gQzxQYXJhbT4uCgo9Y3V0CgpzdWIgUHJlVmFsdWVTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbCBuZWVkZWQgcGFyYW1zIGFyZSBjaGVja2VkIGJ5IHRoZSBiYWNrZW5kIGJlZm9yZQogICAgaWYgKCAhJFBhcmFte1BhcmFtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgUGFyYW0gb2YgYmFja2VuZCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGlmIHdlIGFyZSBjb21pbmcgZnJvbSBWZXJzaW9uLnBtIG5vdGhpbmcgaGFzIHRvIGJlIGNoYW5nZWQKICAgIHJldHVybiAxIGlmICRQYXJhbXtQYXJhbX17Q29uZmlnSXRlbUhhbmRsZWR9OwoKICAgICMgdXBncmFkZSB2ZXJzaW9uIG9mIHN1YnNlcXVlbnQgZHluYW1pYyBmaWVsZCBjaGFuZ2VzIGlmIGEgdmVyc2lvbiB3YXMgYWRkZWQgaW4gdGhpcyByZXF1ZXN0CiAgICBpZiAoICRTZWxmLT57VmVyc2lvblVwZ3JhZGV9ICYmICRTZWxmLT57VmVyc2lvblVwZ3JhZGV9eyAkUGFyYW17UGFyYW19e09iamVjdElEfSB9ICkgewogICAgICAgICRQYXJhbXtQYXJhbX17T2JqZWN0SUR9ID0gJFNlbGYtPntWZXJzaW9uVXBncmFkZX17ICRQYXJhbXtQYXJhbX17T2JqZWN0SUR9IH07CgogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHJldHVybiAxIGlmICEkUGFyYW17UGFyYW19e0R5bmFtaWNGaWVsZENvbmZpZ317Q0lDbGFzc307CgogICAgIyBjaGVjayB3aGV0aGVyIHRoZSBjaGFuZ2VkIGZpZWxkIHRyaWdnZXJzIGEgbmV3IGNvbmZpZ2l0ZW0gdmVyc2lvbiBhbmQgaWYgc28sIGFkZCBhIG5ldyBvbmUKICAgIG15ICRDbGFzc1ByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICA9PiAkUGFyYW17UGFyYW19e0R5bmFtaWNGaWVsZENvbmZpZ317Q0lDbGFzc30sCiAgICApOwogICAgbXkgJVZlcnNpb25UcmlnZ2VyID0gbWFwIHsgJF8gPT4gMSB9IEB7ICRDbGFzc1ByZWZlcmVuY2VzLT57VmVyc2lvblRyaWdnZXJ9IC8vIFtdIH07CgogICAgaWYgKCAkVmVyc2lvblRyaWdnZXJ7ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtQYXJhbX17RHluYW1pY0ZpZWxkQ29uZmlnfXtOYW1lfSB9ICkgewogICAgICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgICAgIG15ICROZXdWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICAgICAgTGFzdFZlcnNpb25JRCA9PiAkUGFyYW17UGFyYW19e09iamVjdElEfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkUGFyYW17UGFyYW19e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJE5ld1ZlcnNpb25JRCApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBjcmVhdGUgbmV3IHZlcnNpb24gZm9yIExhc3RWZXJzaW9uSUQgJFBhcmFte1BhcmFtfXtPYmplY3RJRH0hIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgc2V0IG9sZCBhbmQgbmV3IHZlcnNpb24gdG8gbmV3IG9uZSB0byBtYWtlIHN1cmUsIHRoYXQgbGVuc2VzIGNhbiB3b3JrIHdpdGggZWl0aGVyCiAgICAgICAgJFNlbGYtPntWZXJzaW9uVXBncmFkZX17ICRQYXJhbXtQYXJhbX17T2JqZWN0SUR9IH0gPSAkTmV3VmVyc2lvbklEOwogICAgICAgICRTZWxmLT57VmVyc2lvblVwZ3JhZGV9eyROZXdWZXJzaW9uSUR9ICAgICAgICAgICAgID0gJE5ld1ZlcnNpb25JRDsKICAgICAgICAkUGFyYW17UGFyYW19e09iamVjdElEfSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICROZXdWZXJzaW9uSUQ7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBQb3N0VmFsdWVTZXQoKQoKUGVyZm9ybSBzcGVjaWZpYyBmdW5jdGlvbnMgYWZ0ZXIgdGhlIHZhbHVlIGhhcyBiZWVuIHNldCBmb3IgYSBkeW5hbWljIGZpZWxkIGZvciB0aGlzIG9iamVjdCB0eXBlLgoKICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZElUU01Db25maWdJdGVtSGFuZGxlck9iamVjdC0+UG9zdFZhbHVlU2V0KAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLCAgICAgICMgY29tcGxldGUgY29uZmlnIG9mIHRoZSBEeW5hbWljRmllbGQKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJE9iamVjdElELCAgICAgICAgICAgICAgICAjIElEIG9mIHRoZSBjdXJyZW50IG9iamVjdCB0aGF0IHRoZSBmaWVsZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbXVzdCBiZSBsaW5rZWQgdG8sIGUuIGcuIElUU01Db25maWdJdGVtSUQKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLCAgICAgICAgICAgICAgICAgICAjIFZhbHVlIHRvIHN0b3JlLCBkZXBlbmRzIG9uIGJhY2tlbmQgdHlwZQogICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgQ29uZmlnSXRlbUhhbmRsZWQgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgc2tpcHMgdGhpcyBpZiBoYW5kbGVkIGVsc2V3aGVyZQogICAgKTsKClRoaXMgaGFuZGxlciBjYW4gYmUgc2tpcHBlZCBieSBwYXNzaW5nIHRoZSBhdHRyaWJ1dGUgQzxDb25maWdJdGVtSGFuZGxlZD4gaW4gQzxQYXJhbT4uCgo9Y3V0CgpzdWIgUG9zdFZhbHVlU2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiB3ZSBhcmUgY29taW5nIGZyb20gVmVyc2lvbi5wbSBub3RoaW5nIGhhcyB0byBiZSBjaGFuZ2VkCiAgICByZXR1cm4gMSBpZiAkUGFyYW17Q29uZmlnSXRlbUhhbmRsZWR9OwoKICAgICMgYWxsIG5lZWRlZCBwYXJhbXMgYXJlIGNoZWNrZWQgYnkgdGhlIGJhY2tlbmQgYmVmb3JlCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENhY2hlT2JqZWN0ICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkNvbmZpZ0l0ZW1JREdldCggVmVyc2lvbklEID0+ICRQYXJhbXtPYmplY3RJRH0gKTsKCiAgICAjIGRlbGV0ZSBjYWNoZQogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAkQ29uZmlnSXRlbU9iamVjdC0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiAnQ29uZmlnSXRlbUdldDo6VmVyc2lvbklEOjonIC4gJFBhcmFte09iamVjdElEfSAuICc6OkRGRGF0YTo6MScsCiAgICApOwogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAkQ29uZmlnSXRlbU9iamVjdC0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiAnQ29uZmlnSXRlbUdldDo6Q29uZmlnSXRlbUlEOjonIC4gJENvbmZpZ0l0ZW1JRCAuICc6OkRGRGF0YTo6MScsCiAgICApOwoKICAgICMgcHJlcGFyZSByZWFkYWJsZSB2YWx1ZXMgZm9yIHRoZSBoaXN0b3J5LAogICAgIyB0aGUgcmVzdWx0IGlzIGEgaGFzaHJlZiB3aXRoIHRoZSBrZXlzIFZhbHVlIGFuZCBMYWJlbAogICAgbXkgJFJlYWRhYmxlVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+UmVhZGFibGVWYWx1ZVJlbmRlcigKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0KICAgICk7CiAgICBteSAkUmVhZGFibGVPbGRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5SZWFkYWJsZVZhbHVlUmVuZGVyKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFBhcmFte09sZFZhbHVlfSwKICAgICk7CgogICAgIyB0cmlnZ2VyIGV2ZW50CiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdDb25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlXycgLiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtOYW1lfSwKICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgIEZpZWxkTmFtZSAgICAgICAgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317TmFtZX0sCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgPT4gJFBhcmFte1ZhbHVlfSwKICAgICAgICAgICAgT2xkVmFsdWUgICAgICAgICA9PiAkUGFyYW17T2xkVmFsdWV9LAogICAgICAgICAgICBSZWFkYWJsZVZhbHVlICAgID0+ICRSZWFkYWJsZVZhbHVlLT57VmFsdWV9LAogICAgICAgICAgICBSZWFkYWJsZU9sZFZhbHVlID0+ICRSZWFkYWJsZU9sZFZhbHVlLT57VmFsdWV9LAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgT2JqZWN0RGF0YUdldCgpCgpyZXRyaWV2ZXMgdGhlIGRhdGEgb2YgdGhlIGN1cnJlbnQgb2JqZWN0LgoKICAgIG15ICVPYmplY3REYXRhID0gJER5bmFtaWNGaWVsZElUU01Db25maWdJdGVtSGFuZGxlck9iamVjdC0+T2JqZWN0RGF0YUdldCgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywgICAgICAjIGNvbXBsZXRlIGNvbmZpZyBvZiB0aGUgRHluYW1pY0ZpZWxkCiAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEyMywKICAgICk7CgpyZXR1cm5zOgoKICAgICVPYmplY3REYXRhID0gKAogICAgICAgIE9iamVjdElEID0+IDEyMywKICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgPT4gMTIzLAogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICcyMDEwMTAyNzAwMDAwMScsCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gMTcsCiAgICAgICAgICAgIC4uLgogICAgICAgIH0KICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0RGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQ2hlY2sgbmVlZGVkIHN0dWZmLgogICAgZm9yIG15ICROZWVkZWQgKHF3KER5bmFtaWNGaWVsZENvbmZpZyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBDaGVjayBEeW5hbWljRmllbGRDb25maWcgKGdlbmVyYWwpLgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgZmllbGQgY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIENoZWNrIER5bmFtaWNGaWVsZENvbmZpZyAoaW50ZXJuYWxseSkuCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoSUQgRmllbGRUeXBlIE9iamVjdFR5cGUpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCBpbiBEeW5hbWljRmllbGRDb25maWchIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIFRPRE86IHdoeSBkb2VzIHRoaXMgbWV0aG9kIGRlcGVuZCBvbiB0aGUgcGFyYW0gb2JqZWN0PwogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oCiAgICAgICAgUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcsCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJENvbmZpZ0l0ZW1JRDsKCiAgICBteSAlQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICByZXR1cm4gKAogICAgICAgIE9iamVjdElEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgRGF0YSAgICAgPT4gXCVDb25maWdJdGVtLAogICAgKTsKfQoKPWhlYWQyIEdldEVudGl0eUlEZm9yTGlua2luZygpCgpyZXRyaWV2ZXMgQ29uZmlnSXRlbUlEIGZvciBnaXZlbiBWZXJzaW9uSUQKCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJER5bmFtaWNGaWVsZElUU01Db25maWdJdGVtSGFuZGxlck9iamVjdC0+R2V0RW50aXR5SURmb3JMaW5raW5nKAogICAgICAgIFZlcnNpb25JRCA9PiAxMjMsCiAgICAgICAgTGlua0tleSA9PiAnU291cmNlJywgICAgICAjIG9yICdUYXJnZXQnCiAgICAgICAgVHlwZU5hbWUgPT4gJ0NvbmZpZ0l0ZW0nLCAjIG9yICdDb25maWdJdGVtVmVyc2lvbicKICAgICk7Cgo9Y3V0CgpzdWIgR2V0RW50aXR5SURmb3JMaW5raW5nIHsKCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRJRCAgICAgICA9ICRQYXJhbXtJRH07CiAgICBteSAkTGlua0tleSAgPSAkUGFyYW17TGlua0tleX07CiAgICBteSAkVHlwZU5hbWUgPSAkUGFyYW17VHlwZU5hbWV9OwoKICAgICMgaWYgdGhlIGtleSBpcyBhICdUYXJnZXQnIGtleSAuLi4KICAgIGlmICggJExpbmtLZXkgZXEgJ1RhcmdldCcgKSB7CgogICAgICAgICMgLi4udGhlbiBvbmx5IENvbmZpZ0l0ZW1WZXJzaW9uIGl0ZW1zIHdpbGwgbmVlZCBWZXJzaW9uSUQgcmVzb2x1dGlvbgogICAgICAgIGlmICggJFR5cGVOYW1lIGVxICdDb25maWdJdGVtJyApIHsKICAgICAgICAgICAgcmV0dXJuICRJRDsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJElELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICk7CgogICAgcmV0dXJuICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfTsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKdXNlIHBhcmVudCBxdygKICAgIEtlcm5lbDo6U3lzdGVtOjpFdmVudEhhbmRsZXIKICAgIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUFDTAogICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb25maWdJdGVtU2VhcmNoCiAgICBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkRlZmluaXRpb24KICAgIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6SGlzdG9yeQogICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpMaW5rCiAgICBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcgogICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uCiAgICBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb24KKTsKCiMgY29yZSBtb2R1bGVzCnVzZSBTdG9yYWJsZSAgICAgICBxdyhkY2xvbmUpOwp1c2UgTGlzdDo6QWxsVXRpbHMgcXcoZmlyc3QgdHJ1ZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlhNTCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtIC0gbGlicmFyeSBmb3IgSVRTTSBjb25maWcgaXRlbXMuCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBjb25maWcgaXRlbSBmdW5jdGlvbnMuIE5vdGUgdGhhdCBhZGRpdGlvbmFsIHBhcmVudCBtb2R1bGVzIGFyZSBsb2FkZWQKd2hpY2ggZWZmZWN0aXZlbHkgYWRkIG1vcmUgbWV0aG9kcy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CgogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoJFR5cGUpID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAkU2VsZi0+e0NhY2hlVHlwZX0gPSAnSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50JzsKICAgICRTZWxmLT57Q2FjaGVUVEx9ICA9IDYwICogNjAgKiAyNCAqIDIwOwoKICAgICMgaW5pdCBvZiBldmVudCBoYW5kbGVyCiAgICAkU2VsZi0+RXZlbnRIYW5kbGVySW5pdCgKICAgICAgICBDb25maWcgPT4gJ0lUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QnLAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBDb25maWdJdGVtQ291bnQoKQoKY291bnQgYWxsIHByb2R1Y3RpdmUgY29uZmlnIGl0ZW1zIG9mIGEgY29uZmlnIGl0ZW0gY2xhc3MKCiAgICBteSAkQ291bnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUNvdW50KAogICAgICAgIENsYXNzSUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtQ291bnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NsYXNzSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDbGFzc0lEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGxpc3Qgb2YgcHJvZHVjdGl2ZSBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyAgICAgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgIEZ1bmN0aW9uYWxpdHkgPT4gWyAncHJlcHJvZHVjdGl2ZScsICdwcm9kdWN0aXZlJyBdLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAwIGlmICEleyRTdGF0ZUxpc3R9OwoKICAgICMgY3JlYXRlIHN0YXRlIHN0cmluZwogICAgbXkgJERlcGxTdGF0ZVN0cmluZyA9IGpvaW4gcXssIH0sIGtleXMgJXskU3RhdGVMaXN0fTsKCiAgICAjIGFzayBkYXRhYmFzZQogICAgbXkgKCRDb3VudCkgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+ICJTRUxFQ1QgQ09VTlQoaWQpIEZST00gY29uZmlnaXRlbSBXSEVSRSBjbGFzc19pZCA9ID8gQU5EICIKICAgICAgICAgICAgLiAiY3VyX2RlcGxfc3RhdGVfaWQgSU4gKCAkRGVwbFN0YXRlU3RyaW5nICkiLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDbGFzc0lEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgIHJldHVybiAkQ291bnQ7Cn0KCj1oZWFkMiBDb25maWdJdGVtUmVzdWx0TGlzdCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBsaXN0IGFzIGFycmF5IGhhc2ggcmVmZXJlbmNlCgogICAgbXkgJENvbmZpZ0l0ZW1MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1SZXN1bHRMaXN0KAogICAgICAgIENsYXNzSUQgPT4gMTIzLAogICAgICAgIFN0YXJ0ICAgPT4gMTAwLAogICAgICAgIExpbWl0ICAgPT4gNTAsCiAgICApOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1SZXN1bHRMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDbGFzc0lEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ2xhc3NJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IHN0YXRlIGxpc3QKICAgIG15ICRTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+IFsgJ3ByZXByb2R1Y3RpdmUnLCAncHJvZHVjdGl2ZScgXSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBzdGF0ZSBzdHJpbmcKICAgIG15ICREZXBsU3RhdGVTdHJpbmcgPSBqb2luIHF7LCB9LCBrZXlzICV7JFN0YXRlTGlzdH07CgogICAgIyBhc2sgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAiU0VMRUNUIGlkIEZST00gY29uZmlnaXRlbSAiCiAgICAgICAgICAgIC4gIldIRVJFIGNsYXNzX2lkID0gPyBBTkQgY3VyX2RlcGxfc3RhdGVfaWQgSU4gKCAkRGVwbFN0YXRlU3RyaW5nICkgIgogICAgICAgICAgICAuICJPUkRFUiBCWSBjaGFuZ2VfdGltZSBERVNDIiwKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17Q2xhc3NJRH0gXSwKICAgICAgICBTdGFydCA9PiAkUGFyYW17U3RhcnR9LAogICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0sCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQENvbmZpZ0l0ZW1JRExpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRExpc3QsICRSb3dbMF07CiAgICB9CgogICAgIyBnZXQgbGFzdCB2ZXJzaW9ucyBkYXRhCiAgICBteSBAQ29uZmlnSXRlbUxpc3Q7CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQENvbmZpZ0l0ZW1JRExpc3QpIHsKCiAgICAgICAgIyBnZXQgdmVyc2lvbiBkYXRhCiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUxpc3QsICRDb25maWdJdGVtOwogICAgfQoKICAgIHJldHVybiBcQENvbmZpZ0l0ZW1MaXN0Owp9Cgo9aGVhZDIgQ29uZmlnSXRlbUdldCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBhcyBhIGhhc2ggcmVmZXJlbmNlLiBUaGUgbGF0ZXN0IHZlcnNpb24gaXMgcmV0cmlldmVkIHdoZW4gQzxDb25maWdJdGVtSUQ+IGlzIHBhc3NlZCBhcyBwYXJhbWV0ZXIuCgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+IDEyMywKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDAgKDB8MSkKICAgICk7CgpBIHNwZWNpZmljIHZlcnNpb24gaXMgcmV0dXJuZWQgd2hlbiB0aGUgQzxWZXJzaW9uSUQ+IGlzIHBhc3NlZC4KCiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gMjQzLAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwgICAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQogICAgKTsKCldoZW4gYm90aCBDPENvbmZpZ0l0ZW1JRD4gYW5kIEM8VmVyc2lvbklEPiBhcmUgcGFzc2VkLCB0aGVuIGEgY29uc2lzdGVuY3kgY2hlY2sgaXMgcGVyZm9ybWVkCmFuZCB0aGUgZGF0YSBmb3IgdGhlIHNwZWNpZmljIHZlcnNpb24gaXMgcmV0dXJuZWQuCgpFcnJvciBtZXNzYWdlcyBhcmUgc3VwcHJlc3NlZCBpZiB0aGUgcGFyYW1ldGVyIEM8U2lsZW50PiBpcyBwYXNzZWQuCgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBWZXJzaW9uSUQgICAgID0+IDI0MywKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDAgKDB8MSkKICAgICAgICBTaWxlbnQgICAgICAgID0+IDEsICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDAgKDB8MSkKICAgICk7CgpBIGhhc2hyZWYgd2l0aCB0aGUgZm9sbG93aW5nIGtleXMgaXMgcmV0dXJuZWQ6Cgo9b3ZlciA0Cgo9aXRlbSBDb25maWdJdGVtSUQKCj1pdGVtIE51bWJlcgoKPWl0ZW0gQ2xhc3NJRAoKPWl0ZW0gQ2xhc3MKCj1pdGVtIExhc3RWZXJzaW9uSUQKCj1pdGVtIEN1ckRlcGxTdGF0ZUlECgo9aXRlbSBDdXJEZXBsU3RhdGUKCj1pdGVtIEN1ckRlcGxTdGF0ZVR5cGUKCj1pdGVtIEN1ckluY2lTdGF0ZUlECgo9aXRlbSBDdXJJbmNpU3RhdGUKCj1pdGVtIEN1ckluY2lTdGF0ZVR5cGUKCj1pdGVtIFZlcnNpb25JRAoKPWl0ZW0gTmFtZQoKPWl0ZW0gVmVyc2lvblN0cmluZwoKPWl0ZW0gRGVzY3JpcHRpb24KCj1pdGVtIERlZmluaXRpb25JRAoKPWl0ZW0gRGVwbFN0YXRlSUQKCj1pdGVtIERlcGxTdGF0ZQoKPWl0ZW0gRGVwbFN0YXRlVHlwZQoKPWl0ZW0gSW5jaVN0YXRlSUQKCj1pdGVtIEluY2lTdGF0ZQoKPWl0ZW0gSW5jaVN0YXRlVHlwZQoKPWl0ZW0gQ3JlYXRlVGltZQoKPWl0ZW0gQ3JlYXRlQnkKCj1pdGVtIENoYW5nZVRpbWUKCj1pdGVtIENoYW5nZUJ5Cgo9YmFjawoKQ2FjaGluZyBjYW4ndCBiZSB0dXJuZWQgb2ZmLgoKV2hlbiB0aGUgcGFyYW1ldGVyIEM8RHluYW1pY0ZpZWxkcz4gaXMgcGFzc2VkIHRoZW4gdGhlIGR5bmFtaWMgZmllbGRzIGFyZSByZXR1cm5lZCBhZGRpdGlvbmFsbHkuCgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgd2hldGhlciB0byBzdXBwcmVzcyBlcnJvciBtZXNzYWdlcwogICAgbXkgJFNpbGVudCA9ICRQYXJhbXtTaWxlbnR9ID8gMSA6IDA7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDb25maWdJdGVtSUR9ICYmICEkUGFyYW17VmVyc2lvbklEfSApIHsKICAgICAgICBpZiAoICEkU2lsZW50ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBpZ25vcmUgRHluYW1pY0ZpZWxkcyBwZXIgZGVmYXVsdCwKICAgICMgbWFrZSBzdXJlIHRoYXQgdGhlIHZhcmlhYmxlIGlzIGVpdGhlciAwIG9yIDEsIGFzIGl0IGlzIHVzZWQgZm9yIHRoZSBjYWNoZSBrZXkKICAgIG15ICRERkRhdGEgPSAkUGFyYW17RHluYW1pY0ZpZWxkc30gPyAxIDogMDsKCiAgICAjIGNoZWNrIGlmIHJlc3VsdCBpcyBhbHJlYWR5IGNhY2hlZCwgY29uc2lkZXJpbmcgdGhlIER5bmFtaWNGaWVsZHMgcGFyYW1ldGVyCiAgICBteSAkQ2FjaGVLZXkgPSAkUGFyYW17VmVyc2lvbklEfQogICAgICAgID8KICAgICAgICBqb2luKAogICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkUGFyYW17VmVyc2lvbklEfSwKICAgICAgICAgICAgREZEYXRhICAgID0+ICRERkRhdGEKICAgICAgICApCiAgICAgICAgOgogICAgICAgIGpvaW4oCiAgICAgICAgICAgICc6OicsICdDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBERkRhdGEgICAgICAgPT4gJERGRGF0YQogICAgICAgICk7CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CiAgICBteSAkQ2FjaGUgICAgICAgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CgogICAgaWYgKCRDYWNoZSkgewogICAgICAgIGlmICggJFBhcmFte1ZlcnNpb25JRH0gJiYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gJiYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gbmUgJENhY2hlLT57Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgaWYgKCAhJFNpbGVudCApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlZlcnNpb25JRCAkUGFyYW17VmVyc2lvbklEfSBpcyBub3QgYSB2ZXJzaW9uIG9mIENvbmZpZ0l0ZW1JRCAkUGFyYW17Q29uZmlnSXRlbUlEfSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGRjbG9uZSgkQ2FjaGUpIGlmICRDYWNoZTsKICAgIH0KCiAgICAjIGdldCBzcGVjaWZpYyBDb25maWdJdGVtVmVyc2lvbgogICAgIyBUaGUgcGFyYW1ldGVyIFZlcnNpb25JRCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgQ29uZmlnSXRlbUlECiAgICBteSBAUm93OwogICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSApIHsKCiAgICAgICAgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RSb3dBcnJheSgKICAgICAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApTRUxFQ1QgY2kuaWQsIGNpLmNvbmZpZ2l0ZW1fbnVtYmVyLCBjaS5jbGFzc19pZCwgY2kubGFzdF92ZXJzaW9uX2lkLAogICAgY2kuY3VyX2RlcGxfc3RhdGVfaWQsIGNpLmN1cl9pbmNpX3N0YXRlX2lkLAogICAgdi5pZCwgdi5uYW1lLCB2LnZlcnNpb25fc3RyaW5nLCB2LmRlZmluaXRpb25faWQsIHYuZGVwbF9zdGF0ZV9pZCwgdi5pbmNpX3N0YXRlX2lkLCB2LmRlc2NyaXB0aW9uLAogICAgdi5jcmVhdGVfdGltZSwgdi5jcmVhdGVfYnksIHYuY2hhbmdlX3RpbWUsIHYuY2hhbmdlX2J5CiAgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24gdgogIElOTkVSIEpPSU4gY29uZmlnaXRlbSBjaQogICAgT04gdi5jb25maWdpdGVtX2lkID0gY2kuaWQKICBXSEVSRSB2LmlkID0gPwpFTkRfU1FMCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtWZXJzaW9uSUR9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBsYXRlc3QgQ29uZmlnSXRlbVZlcnNpb24KICAgIGVsc2UgewoKICAgICAgICBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlNlbGVjdFJvd0FycmF5KAogICAgICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCBjaS5pZCwgY2kuY29uZmlnaXRlbV9udW1iZXIsIGNpLmNsYXNzX2lkLCBjaS5sYXN0X3ZlcnNpb25faWQsCiAgICBjaS5jdXJfZGVwbF9zdGF0ZV9pZCwgY2kuY3VyX2luY2lfc3RhdGVfaWQsCiAgICB2LmlkLCB2Lm5hbWUsIHYudmVyc2lvbl9zdHJpbmcsIHYuZGVmaW5pdGlvbl9pZCwgdi5kZXBsX3N0YXRlX2lkLCB2LmluY2lfc3RhdGVfaWQsIHYuZGVzY3JpcHRpb24sCiAgICBjaS5jcmVhdGVfdGltZSwgY2kuY3JlYXRlX2J5LCBjaS5jaGFuZ2VfdGltZSwgY2kuY2hhbmdlX2J5CiAgRlJPTSBjb25maWdpdGVtIGNpCiAgTEVGVCBKT0lOIGNvbmZpZ2l0ZW1fdmVyc2lvbiB2CiAgICBPTiBjaS5sYXN0X3ZlcnNpb25faWQgPSB2LmlkCiAgV0hFUkUgY2kuaWQgPSA/CkVORF9TUUwKICAgICAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NvbmZpZ0l0ZW1JRH0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJUNvbmZpZ0l0ZW07CiAgICAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9ICAgPSAkUm93WzBdOwogICAgJENvbmZpZ0l0ZW17TnVtYmVyfSAgICAgICAgID0gJFJvd1sxXTsKICAgICRDb25maWdJdGVte0NsYXNzSUR9ICAgICAgICA9ICRSb3dbMl07CiAgICAkQ29uZmlnSXRlbXtMYXN0VmVyc2lvbklEfSAgPSAkUm93WzNdOwogICAgJENvbmZpZ0l0ZW17Q3VyRGVwbFN0YXRlSUR9ID0gJFJvd1s0XTsKICAgICRDb25maWdJdGVte0N1ckluY2lTdGF0ZUlEfSA9ICRSb3dbNV07CiAgICAkQ29uZmlnSXRlbXtWZXJzaW9uSUR9ICAgICAgPSAkUm93WzZdOwogICAgJENvbmZpZ0l0ZW17TmFtZX0gICAgICAgICAgID0gJFJvd1s3XTsKICAgICRDb25maWdJdGVte1ZlcnNpb25TdHJpbmd9ICA9ICRSb3dbOF07CiAgICAkQ29uZmlnSXRlbXtEZWZpbml0aW9uSUR9ICAgPSAkUm93WzldOwogICAgJENvbmZpZ0l0ZW17RGVwbFN0YXRlSUR9ICAgID0gJFJvd1sxMF07CiAgICAkQ29uZmlnSXRlbXtJbmNpU3RhdGVJRH0gICAgPSAkUm93WzExXTsKICAgICRDb25maWdJdGVte0Rlc2NyaXB0aW9ufSAgICA9ICRSb3dbMTJdOwogICAgJENvbmZpZ0l0ZW17Q3JlYXRlVGltZX0gICAgID0gJFJvd1sxM107CiAgICAkQ29uZmlnSXRlbXtDcmVhdGVCeX0gICAgICAgPSAkUm93WzE0XTsKICAgICRDb25maWdJdGVte0NoYW5nZVRpbWV9ICAgICA9ICRSb3dbMTVdOwogICAgJENvbmZpZ0l0ZW17Q2hhbmdlQnl9ICAgICAgID0gJFJvd1sxNl07CgogICAgIyBjaGVjayBjb25maWcgaXRlbQogICAgaWYgKCAhJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICBpZiAoICEkU2lsZW50ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBDb25maWdJdGVtSUQgKCRQYXJhbXtDb25maWdJdGVtSUR9KSEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSBuZSAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgIGlmICggISRTaWxlbnQgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJWZXJzaW9uSUQgJFBhcmFte1ZlcnNpb25JRH0gaXMgbm90IGEgdmVyc2lvbiBvZiBDb25maWdJdGVtSUQgJFBhcmFte0NvbmZpZ0l0ZW1JRH0hIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGlmIG5lZWQgdG8gcmV0dXJuIER5bmFtaWNGaWVsZHMKICAgIGlmICggJERGRGF0YSAmJiAkQ29uZmlnSXRlbXtEZWZpbml0aW9uSUR9ICkgewoKICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIG9iamVjdHMKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkU2VsZi0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVte0RlZmluaXRpb25JRH0sCiAgICAgICAgKTsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CgogICAgICAgICAgICAjIHZhbGlkYXRlIGVhY2ggZHluYW1pYyBmaWVsZAogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgIyBnZXQgdGhlIGN1cnJlbnQgdmFsdWUgZm9yIGVhY2ggZHluYW1pYyBmaWVsZAogICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkQ29uZmlnSXRlbXtWZXJzaW9uSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGhlIGR5bmFtaWMgZmllbGQgbmFtZSBhbmQgdmFsdWUgaW50byB0aGUgdGlja2V0IGhhc2gKICAgICAgICAgICAgJENvbmZpZ0l0ZW17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJFZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGFkZCB0aGUgQ2xhc3MsIGJhc2VkIG9uIHRoZSBDbGFzc0lECiAgICB7CiAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKCiAgICAgICAgJENvbmZpZ0l0ZW17Q2xhc3N9ID0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbXtDbGFzc0lEfSB9OwogICAgfQoKICAgICMgQWRkIG1vcmUgcmVhZGFibGUgbmFtZXMgZm9yIHRoZSB2YXJpb3VzIHN0YXRlcy4KICAgICMgQWRkIHRoZSBzdGF0ZSB0eXBlcy4KICAgIFNUQVRFOgogICAgZm9yIG15ICRTdGF0ZSAocXcvRGVwbFN0YXRlIEN1ckRlcGxTdGF0ZSBJbmNpU3RhdGUgQ3VySW5jaVN0YXRlLykgewogICAgICAgIG5leHQgU1RBVEUgdW5sZXNzICRDb25maWdJdGVteyAkU3RhdGUgLiAnSUQnIH07CgogICAgICAgIG15ICRJdGVtID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW17ICRTdGF0ZSAuICdJRCcgfSwKICAgICAgICApOwoKICAgICAgICAkQ29uZmlnSXRlbXskU3RhdGV9ID0gJEl0ZW0tPntOYW1lfTsKICAgICAgICAkQ29uZmlnSXRlbXsgJFN0YXRlIC4gJ1R5cGUnIH0gPSAkSXRlbS0+e0Z1bmN0aW9uYWxpdHl9WzBdIC8vICcnOwogICAgfQoKICAgICMgY2FjaGUgdGhlIHJlc3VsdAogICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICBWYWx1ZSA9PiBkY2xvbmUoIFwlQ29uZmlnSXRlbSApLAogICAgKTsKCiAgICByZXR1cm4gXCVDb25maWdJdGVtOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUFkZCgpCgphZGQgYSBuZXcgY29uZmlnIGl0ZW0uIFRoaXMgaW1wbGllcyB0aGF0IGFuIGluaXRpYWwgdmVyc2lvbiBpcyBjcmVhdGVkIGFzIHdlbGwuCgogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgIENsYXNzSUQgICAgICAgID0+IDEyMywKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTmFtZScsICAgICMgb3B0aW9uYWwgd2hlbiBhIG5hbWUgbW9kdWxlIGlzIGNvbmZpZ3VyZWQgZm9yIHRoZSBjbGFzcwogICAgICAgIFZlcnNpb25TdHJpbmcgID0+ICdWZXJzaW9uJywgIyBvcHRpb25hbCB3aGVuIGEgdmVyc2lvbiBudW1iZXIgbW9kdWxlIGlzIGNvbmZpZ3VyZWQgZm9yIHRoZSBjbGFzcwogICAgICAgIERlcGxTdGF0ZUlEICAgID0+IDMsCiAgICAgICAgSW5jaVN0YXRlSUQgICAgPT4gMiwKICAgICAgICBEZXNjcmlwdGlvbiAgICA9PiAnQUJDRCcsCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICBOdW1iZXIgICAgICAgICA9PiAnMTExJywgICAgIyBvcHRpb25hbCwgYSBudW1iZXIgd2lsbCBnZW5lcmF0ZWQgd2hlbiBubyBudW1iZXIgaXMgcGFzc2VkCiAgICAgICAgRHluYW1pY0ZpZWxkX1ggPT4gJFZhbHVlLCAgICMgb3B0aW9uYWwKICAgICk7CgpObyBjb25maWcgaXRlbSB3aWxsIGJlIGNyZWF0ZWQgd2hlbiBhbiBhbHJlYWR5IGV4aXN0aW5nIE51bWJlciBpcyBwYXNzZWQuCgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDbGFzc0lEIFVzZXJJRCBEZXBsU3RhdGVJRCBJbmNpU3RhdGVJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJENsYXNzTGlzdDsKICAgIHJldHVybiB1bmxlc3MgcmVmICRDbGFzc0xpc3QgZXEgJ0hBU0gnOwoKICAgICMgY2hlY2sgdGhlIGNsYXNzIGlkCiAgICBpZiAoICEkQ2xhc3NMaXN0LT57ICRQYXJhbXtDbGFzc0lEfSB9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTm8gdmFsaWQgY2xhc3MgaWQgZ2l2ZW4hJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJERlcGxTdGF0ZUxpc3Q7CiAgICByZXR1cm4gdW5sZXNzIHJlZiAkRGVwbFN0YXRlTGlzdCBlcSAnSEFTSCc7CgogICAgIyBjaGVjayB0aGUgZGVwbG95bWVudCBzdGF0ZSBpZAogICAgaWYgKCAhJERlcGxTdGF0ZUxpc3QtPnsgJFBhcmFte0RlcGxTdGF0ZUlEfSB9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTm8gdmFsaWQgZGVwbG95bWVudCBzdGF0ZSBpZCBnaXZlbiEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRJbmNpU3RhdGVMaXN0OwogICAgcmV0dXJuIHVubGVzcyByZWYgJEluY2lTdGF0ZUxpc3QgZXEgJ0hBU0gnOwoKICAgICMgY2hlY2sgdGhlIGluY2lkZW50IHN0YXRlIGlkCiAgICBpZiAoICEkSW5jaVN0YXRlTGlzdC0+eyAkUGFyYW17SW5jaVN0YXRlSUR9IH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdObyB2YWxpZCBpbmNpZGVudCBzdGF0ZSBpZCBnaXZlbiEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAlQ2xhc3NQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBjb25maWcgaXRlbSBudW1iZXIKICAgIGlmICggJFBhcmFte051bWJlcn0gKSB7CgogICAgICAgICMgZmluZCBleGlzdGluZyBjb25maWcgaXRlbSBudW1iZXIKICAgICAgICBteSAkRXhpc3RzID0gJFNlbGYtPkNvbmZpZ0l0ZW1OdW1iZXJMb29rdXAoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gJFBhcmFte051bWJlcn0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRFeGlzdHMpIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvbmZpZyBpdGVtIG51bWJlciBhbHJlYWR5IGV4aXN0cyEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewoKICAgICAgICBteSAkTnVtYmVyTW9kdWxlID0gJENsYXNzUHJlZmVyZW5jZXN7TnVtYmVyTW9kdWxlfSA/ICRDbGFzc1ByZWZlcmVuY2Vze051bWJlck1vZHVsZX1bMF0gOiAnQXV0b0luY3JlbWVudCc7CgogICAgICAgICMgY3JlYXRlIGNvbmZpZyBpdGVtIG51bWJlcgogICAgICAgICRQYXJhbXtOdW1iZXJ9ID0gJFNlbGYtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgIFR5cGUgICAgPT4gIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjokTnVtYmVyTW9kdWxlIiwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkUGFyYW17Q2xhc3NJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkTmFtZU1vZHVsZSA9ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXN7TmFtZU1vZHVsZX1bMF0gOiAnJzsKICAgIGlmICgkTmFtZU1vZHVsZSkgewoKICAgICAgICAjIGNoZWNrIGlmIG5hbWUgbW9kdWxlIGV4aXN0cwogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JE5hbWVNb2R1bGUiKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgbmFtZSBtb2R1bGUgZm9yIGNsYXNzICRDbGFzc0xpc3QtPnsgJFBhcmFte0NsYXNzSUR9IH0hIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykgKSB7CgogICAgICAgICAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSAkU2VsZi0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICdORVcnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17TmFtZX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHN0b3AgcHJvY2Vzc2luZyBpZiB0aGUgbmFtZSBpcyBub3QgdW5pcXVlCiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCROYW1lRHVwbGljYXRlcykgKSB7CgogICAgICAgICAgICAgICAgIyBidWlsZCBhIHN0cmluZyBvZiBhbGwgZHVwbGljYXRlIElEcwogICAgICAgICAgICAgICAgbXkgJER1cGxpY2F0ZXMgPSBqb2luICcsICcsIEB7JE5hbWVEdXBsaWNhdGVzfTsKCiAgICAgICAgICAgICAgICAjIHdyaXRlIGFuIGVycm9yIGxvZyBtZXNzYWdlIGNvbnRhaW5pbmcgYWxsIHRoZSBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgbmFtZSAkUGFyYW17TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgKENvbmZpZ0l0ZW1JRHM6ICREdXBsaWNhdGVzKSEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYgSUkKICAgIGlmICggISRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgTmFtZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGluc2VydCBuZXcgY29uZmlnIGl0ZW0KICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJTlRPIGNvbmZpZ2l0ZW0gKCcKICAgICAgICAgICAgLiAnY29uZmlnaXRlbV9udW1iZXIsIGN1cl9kZXBsX3N0YXRlX2lkLCBjdXJfaW5jaV9zdGF0ZV9pZCcKICAgICAgICAgICAgLiAnLCBjbGFzc19pZCwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSwgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieScKICAgICAgICAgICAgLiAnKSBWQUxVRVMgKD8sID8sID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte051bWJlcn0sIFwkUGFyYW17RGVwbFN0YXRlSUR9LCBcJFBhcmFte0luY2lTdGF0ZUlEfSwgXCRQYXJhbXtDbGFzc0lEfSwgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0gXSwKICAgICk7CgogICAgIyBmaW5kIGlkIG9mIG5ldyBpdGVtCiAgICAjIFRPRE86IHdoYXQgYWJvdXQgY29uY3VycmVudCBJTlNFUlRzID8/PwogICAgbXkgKCRDb25maWdJdGVtSUQpID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKU0VMRUNUIGlkCiAgRlJPTSBjb25maWdpdGVtCiAgV0hFUkUgY29uZmlnaXRlbV9udW1iZXIgPSA/CiAgICBBTkQgY2xhc3NfaWQgPSA/CiAgT1JERVIgQlkgaWQgREVTQwpFTkRfU1FMCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TnVtYmVyfSwgXCRQYXJhbXtDbGFzc0lEfSBdLAogICAgKTsKCiAgICAjIHRyaWdnZXIgQ29uZmlnSXRlbUNyZWF0ZQogICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRDb25maWdJdGVtSUQgLiAnJSUnIC4gJFBhcmFte051bWJlcn0sCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgYWRkIHRoZSBmaXJzdCB2ZXJzaW9uCiAgICBteSAkVmVyc2lvbklEID0gJFNlbGYtPlZlcnNpb25BZGQoCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJycsCiAgICAgICAgJVBhcmFtLAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAnTkVXJywKICAgICAgICB9LAogICAgKTsKCiAgICBpZiAoICEkVmVyc2lvbklEICkgewoKICAgICAgICAjIGRlbGV0ZSBoaXN0b3J5IGVudHJpZXMKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeSBXSEVSRSBjb25maWdpdGVtX2lkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJENvbmZpZ0l0ZW1JRCBdLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIGNvbmZpZyBpdGVtIGlmIG5vIHZlcnNpb24gY291bGQgYmUgY3JlYXRlZAogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gY29uZmlnaXRlbSBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRDb25maWdJdGVtSUQgXSwKICAgICAgICApOwoKICAgICAgICAjIHdyaXRlIGFuIGVycm9yIGxvZyBtZXNzYWdlIGNvbnRhaW5pbmcgYWxsIHRoZSBkdXBsaWNhdGUgSURzCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgY3JlYXRlIHZlcnNpb24hIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICRDb25maWdJdGVtSUQ7Cn0KCj1oZWFkMiBDb25maWdJdGVtRGVsZXRlKCkKCmRlbGV0ZSBhbiBleGlzdGluZyBjb25maWcgaXRlbQoKICAgIG15ICRUcnVlID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDb25maWdJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyByZW1lbWJlciBjb25maWcgaXRlbSBkYXRhIGJlZm9yZSBkZWxldGUKICAgIG15ICRDb25maWdJdGVtRGF0YSA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICAjIGRlbGV0ZSBhbGwgbGlua3MgdG8gdGhpcyBjb25maWcgaXRlbSBiZWZvcmUgZGVsZXRpbmcgdGhlIHZlcnNpb25zLgogICAgIyBMaW5rRGVsZXRlQWxsKCkgY2FsbHMgTGlua0RlbGV0ZSgpIGludGVybmFsbHkuIFRoaXMgbWVhbnMgdGhhdAogICAgIyB0aGUgZXZlbnQgaGFuZGxlcnMgYXJlIGhvbm9yZWQuIFRoaXMgbWVhbnMgdGhhdCB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rCiAgICAjIGlzIGFsc28gcHVyZ2VkLgogICAgcmV0dXJuIHVubGVzcyAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rRGVsZXRlQWxsKAogICAgICAgIE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgZGVsZXRlIGR5bmFtaWMgbGluayB0YWJsZSBlbnRyaWVzLCBpZiBhbnkKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gY29uZmlnaXRlbV9saW5rIFdIRVJFIHNvdXJjZV9jb25maWdpdGVtX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gY29uZmlnaXRlbV9saW5rIFdIRVJFIHRhcmdldF9jb25maWdpdGVtX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICAjIGlmIHRoZXJlIGFyZSBzdGF0aWMgKHZlcnNpb25lZCkgbGlua3MsIGRlbGV0ZSBhbGwgb2YgdGhlbQogICAgbXkgJFZlcnNpb25MaXN0UmVmID0gJFNlbGYtPlZlcnNpb25MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICk7CgogICAgZm9yIG15ICRWZXJzaW9uSUQgKEAkVmVyc2lvbkxpc3RSZWYpIHsKICAgICAgICAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtX2xpbmsgV0hFUkUgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRWZXJzaW9uSUQgXSwKICAgICAgICApOwogICAgICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fbGluayBXSEVSRSB0YXJnZXRfY29uZmlnaXRlbV92ZXJzaW9uX2lkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFZlcnNpb25JRCBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBkZWxldGUgZXhpc3RpbmcgdmVyc2lvbnMKICAgICRTZWxmLT5WZXJzaW9uRGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGEgbGlzdCBvZiBhbGwgYXR0YWNobWVudHMKICAgIG15IEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJFNlbGYtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICApOwoKICAgICMgZGVsZXRlIGFsbCBhdHRhY2htZW50cyBvZiB0aGlzIGNvbmZpZyBpdGVtCiAgICBGSUxFTkFNRToKICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICMgZGVsZXRlIHRoZSBhdHRhY2htZW50CiAgICAgICAgbXkgJERlbGV0aW9uU3VjY2VzcyA9ICRTZWxmLT5Db25maWdJdGVtQXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJERlbGV0aW9uU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlVua25vd24gcHJvYmxlbSB3aGVuIGRlbGV0aW5nIGF0dGFjaG1lbnQgJEZpbGVuYW1lIG9mIENvbmZpZ0l0ZW0gIgogICAgICAgICAgICAgICAgICAgIC4gIiRQYXJhbXtDb25maWdJdGVtSUR9LiBQbGVhc2UgY2hlY2sgdGhlIFZpcnR1YWxGUyBiYWNrZW5kIGZvciBzdGFsZSAiCiAgICAgICAgICAgICAgICAgICAgLiAiZmlsZXMhIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUNsYXNzUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1EYXRhLT57Q2xhc3NJRH0sCiAgICApOwogICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlc3tOYW1lTW9kdWxlfSA/ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9WzBdIDogJyc7CiAgICBpZiAoJE5hbWVNb2R1bGUpIHsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JE5hbWVNb2R1bGUiKSApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGEgYmFja2VuZCBvYmplY3QKICAgICAgICAgICAgbXkgJE5hbWVNb2R1bGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCROYW1lTW9kdWxlKTsKCiAgICAgICAgICAgIGlmICggJE5hbWVNb2R1bGVPYmplY3QtPmNhbignQ29uZmlnSXRlbU5hbWVEZWxldGUnKSApIHsKICAgICAgICAgICAgICAgICROYW1lTW9kdWxlT2JqZWN0LT5Db25maWdJdGVtTmFtZURlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRDb25maWdJdGVtRGF0YS0+e05hbWV9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgbmFtZSBtb2R1bGUgZm9yIGNsYXNzICRDb25maWdJdGVtRGF0YS0+e0NsYXNzfSEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHRyaWdnZXIgQ29uZmlnSXRlbURlbGV0ZSBldmVudAogICAgIyB0aGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgZGVsZXRpbmcgdGhlIGNvbmZpZyBpdGVtIGZyb20gdGhlIGRhdGFiYXNlLAogICAgIyBiZWNhdXNlIG9mIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCBpbiB0aGUgY29uZmlnaXRlbV9oaXN0b3J5IHRhYmxlCiAgICAkU2VsZi0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBOdW1iZXIgICAgICAgPT4gJENvbmZpZ0l0ZW1EYXRhLT57TnVtYmVyfSwKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDb25maWdJdGVtRGF0YS0+e0NsYXNzfSwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+ICRDb25maWdJdGVtRGF0YSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBkZWxldGUgY29uZmlnIGl0ZW0KICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSB0aGUgY2FjaGUKICAgIGZvciBteSAkREZEYXRhICggMCwgMSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+RGVsZXRlKAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgREZEYXRhICAgICAgID0+ICRERkRhdGEKICAgICAgICAgICAgKSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU3VjY2VzczsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1VcGRhdGUoKQoKdXBkYXRlIGEgY29uZmlnIGl0ZW0uIEEgbmV3IHZlcnNpb24gd2lsbCBiZSBjcmVhdGVkIG9ubHkgd2hlbiBhIHZlcnNpb24gdHJpZ2dlciBhcHBsaWVzLgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gMjcsCiAgICAgICAgTnVtYmVyICAgICAgICAgPT4gJzExMScsICAgICMgSUQgb3IgTnVtYmVyIGlzIHJlcXVpcmVkCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTmFtZScsICAgIyBvcHRpb25hbAogICAgICAgIERlZmluaXRpb25JRCAgID0+IDEyMywgICAgICAjIG9wdGlvbmFsCiAgICAgICAgRGVwbFN0YXRlSUQgICAgPT4gMywgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBJbmNpU3RhdGVJRCAgICA9PiAyLCAgICAgICAgIyBvcHRpb25hbAogICAgICAgIERlc2NyaXB0aW9uICAgID0+ICdBQkNEJywgICAjIG9wdGlvbmFsCiAgICAgICAgRHluYW1pY0ZpZWxkX1ggPT4gJFZhbHVlLCAgICMgb3B0aW9uYWwKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbVVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgbG9va3VwCiAgICAkUGFyYW17Q29uZmlnSXRlbUlEfSAvLz0gJFNlbGYtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkUGFyYW17TnVtYmVyfSwKICAgICk7CgogICAgIyBjaGVjayBuZWVkZWQgcGFyYW1ldGVycwogICAgZm9yIG15ICRLZXkgKHF3L0NvbmZpZ0l0ZW1JRCBVc2VySUQvKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRLZXl9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAiIC4gKCAkS2V5IGVxICdDb25maWdJdGVtSUQnID8gJ0NvbmZpZ0l0ZW1JRCBvciBOdW1iZXInIDogJEtleSApLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdhdGhlciBkeW5hbWljIGZpZWxkIGtleXMKICAgIG15IEBEeW5hbWljRmllbGROYW1lcyA9IG1hcAogICAgICAgIHttL15EeW5hbWljRmllbGRfKC4rKS99CiAgICAgICAgc29ydCBrZXlzICVQYXJhbTsKCiAgICAjIGdldCBjdXJyZW50IGNvbmZpZyBpdGVtLCBpbmNsdWRpbmcgaW5mbyBmcm9tIHRoZSBsYXN0IHZlcnNpb24KICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CiAgICBteSAkQ2xhc3MgPSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtLT57Q2xhc3NJRH0gfTsKCiAgICBpZiAoICEkQ2xhc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyB2YWxpZCBjbGFzcyBmb3VuZCBmb3IgaWQgJyRDb25maWdJdGVtLT57Q2xhc3NJRH0nIChDb25maWdJdGVtIyRDb25maWdJdGVtLT57TnVtYmVyfSkhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBpZ25vcmUgdGhlIHBhc3NlZCBpbiBuYW1lIHdoZW4gYSBuYW1lIG1vZHVsZSBpcyBhY3RpdmUKICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICApOwoKICAgICMgZXhlY3V0ZSBuYW1lIGNoZWNrIG9ubHkgaWYgbmFtZSBoYXMgY2hhbmdlZAogICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlc3tOYW1lTW9kdWxlfSA/ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9WzBdIDogJyc7CiAgICBpZiAoJE5hbWVNb2R1bGUpIHsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCROYW1lTW9kdWxlKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgbmFtZSBtb2R1bGUgZm9yIGNsYXNzICRDbGFzc0xpc3QtPnsgJFBhcmFte0NsYXNzSUR9IH0hIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGRlbGV0ZSAkUGFyYW17TmFtZX07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtOYW1lfSAmJiAkUGFyYW17TmFtZX0gbmUgJENvbmZpZ0l0ZW0tPntOYW1lfSApIHsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykgKSB7CgogICAgICAgICAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSAkU2VsZi0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17TmFtZX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHN0b3AgcHJvY2Vzc2luZyBpZiB0aGUgbmFtZSBpcyBub3QgdW5pcXVlCiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCROYW1lRHVwbGljYXRlcykgKSB7CgogICAgICAgICAgICAgICAgIyBidWlsZCBhIHN0cmluZyBvZiBhbGwgZHVwbGljYXRlIElEcwogICAgICAgICAgICAgICAgbXkgJER1cGxpY2F0ZXMgPSBqb2luICcsICcsIEB7JE5hbWVEdXBsaWNhdGVzfTsKCiAgICAgICAgICAgICAgICAjIHdyaXRlIGFuIGVycm9yIGxvZyBtZXNzYWdlIGNvbnRhaW5pbmcgYWxsIHRoZSBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgbmFtZSAkUGFyYW17TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgKENvbmZpZ0l0ZW1JRHM6ICREdXBsaWNhdGVzKSEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJVZlcnNpb25UcmlnZ2VyID0gbWFwCiAgICAgICAgeyAkXyA9PiAxIH0KICAgICAgICAoICRDbGFzc1ByZWZlcmVuY2Vze1ZlcnNpb25UcmlnZ2VyfSAvLyBbXSApLT5AKjsKCiAgICBteSAlQ2hhbmdlZDsgICAgICAgICAgICAgICMgdHJhY2sgY2hhbmdlZCB2YWx1ZXMgZm9yIHRoZSBFdmVudCBoYW5kbGVyLCBlLmcuIGZvciB3cml0aW5nIGhpc3RvcnkKICAgIG15ICRBZGRWZXJzaW9uICAgID0gMDsgICAgIyBmbGFnIGZvciBkZWNpZGluZyB3aGV0aGVyIGEgbmV3IHZlcnNpb24gaXMgY3JlYXRlZAogICAgbXkgJFVwZGF0ZVZlcnNpb24gPSAwOyAgICAjIGZsYWcgZm9yIGRlY2lkaW5nIHdoZXRoZXIgdGhlIGN1cnJlbnQgdmVyc2lvbiBuZWVkcyBhbiB1cGRhdGUKCiAgICAjIGNoZWNrIG5hbWUsIGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHN0YXRlLCBhcyB3ZWxsIGFzIERlc2NyaXB0aW9uCiAgICBBVFRSOgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3L05hbWUgRGVwbFN0YXRlSUQgSW5jaVN0YXRlSUQgRGVzY3JpcHRpb24vKSB7CiAgICAgICAgbmV4dCBBVFRSIHVubGVzcyBkZWZpbmVkICRQYXJhbXskQXR0cmlidXRlfTsKICAgICAgICBuZXh0IEFUVFIgaWYgJFBhcmFteyRBdHRyaWJ1dGV9IGVxICRDb25maWdJdGVtLT57JEF0dHJpYnV0ZX07CgogICAgICAgICRDaGFuZ2VkeyRBdHRyaWJ1dGV9ID0gewogICAgICAgICAgICBPbGQgPT4gJENvbmZpZ0l0ZW0tPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgTmV3ID0+ICRQYXJhbXskQXR0cmlidXRlfSwKICAgICAgICB9OwoKICAgICAgICAkVXBkYXRlVmVyc2lvbiA9IDE7CgogICAgICAgIGlmICggJFZlcnNpb25UcmlnZ2VyeyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAkQWRkVmVyc2lvbiA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxhdGVzdCBkZWZpbml0aW9uIGZvciB0aGUgY2xhc3MKICAgIG15ICREZWZpbml0aW9uID0gJFNlbGYtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9LAogICAgKTsKCiAgICBteSAlU2tpcEZvclVwZGF0ZURGczsKCiAgICAjIGNoZWNrIGZvciBjaGFuZ2VkIGR5bmFtaWMgZmllbGRzIHRvIHRyaWdnZXIgdmVyc2lvbnMgYW5kIGZpbHRlciBoaXN0b3J5IGVudHJpZXMKICAgIGlmIChARHluYW1pY0ZpZWxkTmFtZXMpIHsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgIyBkeW5hbWljIGZpZWxkcwogICAgICAgIE5BTUU6CiAgICAgICAgZm9yIG15ICROYW1lIChARHluYW1pY0ZpZWxkTmFtZXMpIHsKICAgICAgICAgICAgbmV4dCBOQU1FIHVubGVzcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JE5hbWV9OwoKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJE5hbWUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAhJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlSXNEaWZmZXJlbnQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUxICAgICAgICAgICAgID0+ICRQYXJhbXsiRHluYW1pY0ZpZWxkXyROYW1lIn0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUyICAgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57IkR5bmFtaWNGaWVsZF8kTmFtZSJ9LAogICAgICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlICAgICA9PiAkUGFyYW17RXh0ZXJuYWxTb3VyY2V9LAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAjIGRvIG5vdCBwYXNzIHVuY2hhbmdlZCBkeW5hbWljIGZpZWxkcyB0byBWZXJzaW9uVXBkYXRlKCkKICAgICAgICAgICAgICAgICMgc3RvcmUgdGhlbSBmb3IgVmVyc2lvbkFkZCgpIGJlY2F1c2Ugb2YgcG90ZW50aWFsIGRpZmZlcmVuY2UgZnJvbSBFeHRlcm5hbFNvdXJjZQogICAgICAgICAgICAgICAgJFNraXBGb3JVcGRhdGVERnN7IkR5bmFtaWNGaWVsZF8kTmFtZSJ9ID0gZGVsZXRlICRQYXJhbXsiRHluYW1pY0ZpZWxkXyROYW1lIn07CgogICAgICAgICAgICAgICAgbmV4dCBOQU1FOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkVXBkYXRlVmVyc2lvbiA9IDE7CgogICAgICAgICAgICBpZiAoICRWZXJzaW9uVHJpZ2dlcnsiRHluYW1pY0ZpZWxkXyROYW1lIn0gKSB7CiAgICAgICAgICAgICAgICAkQWRkVmVyc2lvbiA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKCRBZGRWZXJzaW9uKSB7CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+VmVyc2lvbkFkZCgKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJENvbmZpZ0l0ZW0tPntEZXNjcmlwdGlvbn0gLy8gJycsCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJVNraXBGb3JVcGRhdGVERnMsCiAgICAgICAgICAgIExhc3RWZXJzaW9uID0+ICRDb25maWdJdGVtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuIHVubGVzcyAkU3VjY2VzczsKICAgIH0KICAgIGVsc2lmICgkVXBkYXRlVmVyc2lvbikgewogICAgICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPlZlcnNpb25VcGRhdGUoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVmVyc2lvbiA9PiAkQ29uZmlnSXRlbSwKICAgICAgICApOwogICAgICAgIHJldHVybiB1bmxlc3MgJFN1Y2Nlc3M7CiAgICB9CgogICAgbXkgJUV2ZW50cyA9ICgKICAgICAgICBOYW1lICAgICAgICA9PiAnTmFtZVVwZGF0ZScsCiAgICAgICAgRGVwbFN0YXRlSUQgPT4gJ0RlcGxveW1lbnRTdGF0ZVVwZGF0ZScsCiAgICAgICAgSW5jaVN0YXRlSUQgPT4gJ0luY2lkZW50U3RhdGVVcGRhdGUnLAogICAgKTsKCiAgICBDSEFOR0U6CiAgICBmb3IgbXkgJEtleSAoIGtleXMgJUNoYW5nZWQgKSB7CiAgICAgICAgbmV4dCBDSEFOR0UgaWYgISRFdmVudHN7JEtleX07CgogICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgIEV2ZW50ID0+ICRFdmVudHN7JEtleX0sCiAgICAgICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJENoYW5nZWR7JEtleX17TmV3fSAuICclJScgLiAkQ2hhbmdlZHskS2V5fXtPbGR9LAogICAgICAgICAgICAgICAgT2xkICAgICAgICAgID0+ICRDaGFuZ2VkeyRLZXl9e09sZH0sCiAgICAgICAgICAgICAgICBOZXcgICAgICAgICAgPT4gJENoYW5nZWR7JEtleX17TmV3fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyB0cmlnZ2VyIENvbmZpZ0l0ZW1VcGRhdGUgYnV0IG9ubHkgaWYgdGhlcmUgd2VyZSB1cGRhdGVzCiAgICBpZiAoICRBZGRWZXJzaW9uIHx8ICRVcGRhdGVWZXJzaW9uIHx8ICVDaGFuZ2VkICkgewogICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgIEV2ZW50ID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gLiAnJSUnIC4gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9LAogICAgICAgICAgICAgICAgT2xkRGVwbFN0YXRlID0+ICRDaGFuZ2Vke0RlcGxTdGF0ZUlEfXtPbGR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1BdHRhY2htZW50QWRkKCkKCmFkZHMgYW4gYXR0YWNobWVudCB0byBhIGNvbmZpZyBpdGVtCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRBZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgID0+IDEsCiAgICAgICAgRmlsZW5hbWUgICAgICAgID0+ICdmaWxlbmFtZScsCiAgICAgICAgQ29udGVudCAgICAgICAgID0+ICdjb250ZW50JywKICAgICAgICBDb250ZW50VHlwZSAgICAgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtQXR0YWNobWVudEFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIEZpbGVuYW1lIENvbnRlbnQgQ29udGVudFR5cGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHdyaXRlIHRvIHZpcnR1YWwgZnMKICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5Xcml0ZSgKICAgICAgICBGaWxlbmFtZSAgICA9PiAiQ29uZmlnSXRlbS8kUGFyYW17Q29uZmlnSXRlbUlEfS8kUGFyYW17RmlsZW5hbWV9IiwKICAgICAgICBNb2RlICAgICAgICA9PiAnYmluYXJ5JywKICAgICAgICBDb250ZW50ICAgICA9PiBcJFBhcmFte0NvbnRlbnR9LAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgQ29udGVudElEICAgID0+ICRQYXJhbXtDb250ZW50SUR9LAogICAgICAgICAgICBDb250ZW50VHlwZSAgPT4gJFBhcmFte0NvbnRlbnRUeXBlfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBjaGVjayBmb3IgZXJyb3IKICAgIGlmICgkU3VjY2VzcykgewoKICAgICAgICAjIHRyaWdnZXIgQXR0YWNobWVudEFkZC1FdmVudAogICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgIEV2ZW50ID0+ICdBdHRhY2htZW50QWRkUG9zdCcsCiAgICAgICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkUGFyYW17RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdBdHRhY2htZW50QWRkJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbm5vdCBhZGQgYXR0YWNobWVudCBmb3IgY29uZmlnIGl0ZW0gJFBhcmFte0NvbmZpZ0l0ZW1JRH0iLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1BdHRhY2htZW50RGVsZXRlKCkKCkRlbGV0ZSB0aGUgZ2l2ZW4gZmlsZSBmcm9tIHRoZSB2aXJ0dWFsIGZpbGVzeXN0ZW0uCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywgICAgICAgICAgICAgICAjIHVzZWQgaW4gZXZlbnQgaGFuZGxpbmcsIGUuZy4gZm9yIGxvZ2dpbmcgdGhlIGhpc3RvcnkKICAgICAgICBGaWxlbmFtZSAgICAgPT4gJ1Byb2plY3RwbGFuLnBkZicsICMgaWRlbnRpZmllcyB0aGUgYXR0YWNobWVudCAodG9nZXRoZXIgd2l0aCB0aGUgQ29uZmlnSXRlbUlEKQogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtQXR0YWNobWVudERlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIEZpbGVuYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcHJlZml4CiAgICBteSAkRmlsZW5hbWUgPSAnQ29uZmlnSXRlbS8nIC4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0gLiAnLycgLiAkUGFyYW17RmlsZW5hbWV9OwoKICAgICMgZGVsZXRlIGZpbGUKICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5EZWxldGUoCiAgICAgICAgRmlsZW5hbWUgPT4gJEZpbGVuYW1lLAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBlcnJvcgogICAgaWYgKCRTdWNjZXNzKSB7CgogICAgICAgICMgdHJpZ2dlciBBdHRhY2htZW50RGVsZXRlUG9zdC1FdmVudAogICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgIEV2ZW50ID0+ICdBdHRhY2htZW50RGVsZXRlUG9zdCcsCiAgICAgICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkUGFyYW17RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdBdHRhY2htZW50RGVsZXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbm5vdCBkZWxldGUgYXR0YWNobWVudCAkRmlsZW5hbWUhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoKQoKVGhpcyBtZXRob2QgcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBvbmUgc3BlY2lmaWMgYXR0YWNobWVudC4KCiAgICBteSAkQXR0YWNobWVudCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gNCwKICAgICAgICBGaWxlbmFtZSAgICAgPT4gJ3Rlc3QudHh0JywKICAgICk7CgpyZXR1cm5zCgogICAgewogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgQWxsUHJlZmVyZW5jZXMgPT4gJ3Rlc3QnLAogICAgICAgIH0sCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJ3Rlc3QudHh0JywKICAgICAgICBDb250ZW50ICAgICA9PiAnY29udGVudCcsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIEZpbGVzaXplICAgID0+IDEyMzQ4NDA5LAogICAgICAgIFR5cGUgICAgICAgID0+ICdhdHRhY2htZW50JywKICAgIH0KCj1jdXQKCnN1YiBDb25maWdJdGVtQXR0YWNobWVudEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDb25maWdJdGVtSUQgRmlsZW5hbWUpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIHByZWZpeAogICAgbXkgJEZpbGVuYW1lID0gJ0NvbmZpZ0l0ZW0vJyAuICRQYXJhbXtDb25maWdJdGVtSUR9IC4gJy8nIC4gJFBhcmFte0ZpbGVuYW1lfTsKCiAgICAjIGZpbmQgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0KICAgIG15IEBBdHRhY2htZW50cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RmluZCgKICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyByZXR1cm4gZXJyb3IgaWYgZmlsZSBkb2VzIG5vdCBleGlzdAogICAgaWYgKCAhQEF0dGFjaG1lbnRzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISIsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YSBmb3IgYXR0YWNobWVudAogICAgbXkgJUF0dGFjaG1lbnREYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5SZWFkKAogICAgICAgIEZpbGVuYW1lID0+ICRGaWxlbmFtZSwKICAgICAgICBNb2RlICAgICA9PiAnYmluYXJ5JywKICAgICk7CgogICAgbXkgJEF0dGFjaG1lbnRJbmZvID0gewogICAgICAgICVBdHRhY2htZW50RGF0YSwKICAgICAgICBGaWxlbmFtZSAgICA9PiAkUGFyYW17RmlsZW5hbWV9LAogICAgICAgIENvbnRlbnQgICAgID0+ICR7ICRBdHRhY2htZW50RGF0YXtDb250ZW50fSB9LAogICAgICAgIENvbnRlbnRUeXBlID0+ICRBdHRhY2htZW50RGF0YXtQcmVmZXJlbmNlc317Q29udGVudFR5cGV9LAogICAgICAgIFR5cGUgICAgICAgID0+ICdhdHRhY2htZW50JywKICAgICAgICBGaWxlc2l6ZSAgICA9PiAkQXR0YWNobWVudERhdGF7UHJlZmVyZW5jZXN9e0ZpbGVzaXplUmF3fSwKICAgIH07CgogICAgcmV0dXJuICRBdHRhY2htZW50SW5mbzsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgpCgpSZXR1cm5zIGFuIGFycmF5IHdpdGggYWxsIGF0dGFjaG1lbnRzIG9mIHRoZSBnaXZlbiBjb25maWcgaXRlbS4KCiAgICBteSBAQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICApOwoKcmV0dXJucwoKICAgIEBBdHRhY2htZW50cyA9ICgKICAgICAgICAnZmlsZW5hbWUudHh0JywKICAgICAgICAnb3RoZXJfZmlsZS5wZGYnLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtQXR0YWNobWVudExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGZpbmQgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0KICAgIG15IEBBdHRhY2htZW50cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RmluZCgKICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICB9LAogICAgKTsKCiAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgIyByZW1vdmUgZXh0cmEgaW5mb3JtYXRpb24gZnJvbSBmaWxlbmFtZQogICAgICAgICRGaWxlbmFtZSA9fiBzeyBcQSBDb25maWdJdGVtIC8gXGQrIC8gfXt9eG1zOwogICAgfQoKICAgIHJldHVybiBAQXR0YWNobWVudHM7Cn0KCj1oZWFkMiBDb25maWdJdGVtQXR0YWNobWVudEV4aXN0cygpCgpDaGVja3MgaWYgYSBmaWxlIHdpdGggYSBnaXZlbiBmaWxlbmFtZSBleGlzdHMuCgogICAgbXkgJEV4aXN0cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEV4aXN0cygKICAgICAgICBGaWxlbmFtZSA9PiAndGVzdC50eHQnLAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUF0dGFjaG1lbnRFeGlzdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KEZpbGVuYW1lIENvbmZpZ0l0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5GaW5kKAogICAgICAgIEZpbGVuYW1lID0+ICdDb25maWdJdGVtLycgLiAkUGFyYW17Q29uZmlnSXRlbUlEfSAuICcvJyAuICRQYXJhbXtGaWxlbmFtZX0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUxvb2t1cCgpCgpUaGlzIG1ldGhvZCBkb2VzIGEgbG9va3VwIGZvciBhIGNvbmZpZy1pdGVtLiBJZiBhIGNvbmZpZy1pdGVtIGlkIGlzIGdpdmVuLAppdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhlIGNvbmZpZy1pdGVtLiBJZiBhIGNvbmZpZy1pdGVtIG51bWJlciBpcyBnaXZlbiwKdGhlIGFwcHJvcHJpYXRlIGlkIGlzIHJldHVybmVkLgoKICAgIG15ICROdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzNCwKICAgICk7CgpvcgoKICAgIG15ICRJRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gMTAwMDAwMSwKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUxvb2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICgkS2V5KSA9IGZpcnN0IHsgJFBhcmFteyRffSB9IHF3KENvbmZpZ0l0ZW1JRCBDb25maWdJdGVtTnVtYmVyKTsKCiAgICAjIGNoZWNrIGZvciBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRLZXkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCBvciBDb25maWdJdGVtTnVtYmVyIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgaWYgcmVzdWx0IGlzIGNhY2hlZCByZXR1cm4gdGhhdCByZXN1bHQKICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfXtDb25maWdJdGVtTG9va3VwfXskS2V5fXsgJFBhcmFteyRLZXl9IH0KICAgICAgICBpZiAkU2VsZi0+e0NhY2hlfXtDb25maWdJdGVtTG9va3VwfXskS2V5fXsgJFBhcmFteyRLZXl9IH07CgogICAgIyBzZXQgdGhlIGFwcHJvcHJpYXRlIFNRTCBzdGF0ZW1lbnQKICAgIG15ICRTUUwgPSAkS2V5IGVxICdDb25maWdJdGVtTnVtYmVyJwogICAgICAgID8KICAgICAgICAnU0VMRUNUIGlkICAgICAgICAgICAgICAgIEZST00gY29uZmlnaXRlbSBXSEVSRSBjb25maWdpdGVtX251bWJlciA9ID8nCiAgICAgICAgOgogICAgICAgICdTRUxFQ1QgY29uZmlnaXRlbV9udW1iZXIgRlJPTSBjb25maWdpdGVtIFdIRVJFIGlkID0gPyc7CgogICAgIyBmZXRjaCB0aGUgcmVxdWVzdGVkIHZhbHVlCiAgICByZXR1cm4gdW5sZXNzICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFteyRLZXl9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJFZhbHVlOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkVmFsdWUgPSAkUm93WzBdOwogICAgfQoKICAgICRTZWxmLT57Q2FjaGV9e0NvbmZpZ0l0ZW1Mb29rdXB9eyRLZXl9eyAkUGFyYW17JEtleX0gfSA9ICRWYWx1ZTsKCiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aGVhZDIgVW5pcXVlTmFtZUNoZWNrKCkKClRoaXMgbWV0aG9kIGNoZWNrcyBhbGwgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMsIHdoZXRoZXIgdGhlIGdpdmVuIG5hbWUgZG9lcyBhbHJlYWR5IGV4aXN0CndpdGhpbiB0aGUgc2FtZSBjb25maWcgaXRlbSBjbGFzcyBvciBhbW9uZyBhbGwgY2xhc3NlcywgZGVwZW5kaW5nIG9uIHRoZSBTeXNDb25maWcgdmFsdWUgb2YKVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZSAoQ2xhc3Mgb3IgR2xvYmFsKS4KClRoaXMgbWV0aG9kIHJlcXVpcmVzIDMgcGFyYW1ldGVyczogQ29uZmlnSXRlbUlELCBOYW1lIGFuZCBDbGFzcwoiQ29uZmlnSXRlbUlEIiAgaXMgdGhlIElEIG9mIHRoZSBDb25maWdJdGVtLCB3aGljaCBpcyB0byBiZSBjaGVja2VkIGZvciB1bmlxdWVuZXNzCiJOYW1lIiAgICAgICAgICBpcyB0aGUgY29uZmlnIGl0ZW0gbmFtZSB0byBiZSBjaGVja2VkIGZvciB1bmlxdWVuZXNzCiJDbGFzc0lEIiAgICAgICBpcyB0aGUgSUQgb2YgdGhlIGNvbmZpZyBpdGVtJ3MgY2xhc3MKCkFsbCBwYXJhbWV0ZXJzIGFyZSBtYW5kYXRvcnkuCgogICAgbXkgJER1cGxpY2F0ZU5hbWVzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlVuaXF1ZU5hbWVDaGVjaygKICAgICAgICBDb25maWdJdGVtSUQgPT4gJzczJwogICAgICAgIE5hbWUgICAgICAgICA9PiAnUEMjMDA1JywKICAgICAgICBDbGFzc0lEICAgICAgPT4gJzMyJywKICAgICk7CgpUaGUgZ2l2ZW4gbmFtZSBpcyBub3QgdW5pcXVlCgogICAgbXkgJE5hbWVEdXBsaWNhdGVzID0gWyA1LCAzNSwgNDgsIF07ICAgICMgSURzIG9mIENvbmZpZ0l0ZW1zIHdpdGggdGhlIHNhbWUgbmFtZQoKVGhlIGdpdmVuIG5hbWUgaXMgdW5pcXVlCgogICAgbXkgJE5hbWVEdXBsaWNhdGVzID0gW107Cgo9Y3V0CgpzdWIgVW5pcXVlTmFtZUNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBmb3IgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIE5hbWUgQ2xhc3NJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJNaXNzaW5nIHBhcmFtZXRlciAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBDb25maWdJdGVtSUQgcGFyYW0gZm9yIHZhbGlkIGZvcm1hdAogICAgaWYgKAogICAgICAgICFJc0ludGVnZXIoICRQYXJhbXtDb25maWdJdGVtSUR9ICkKICAgICAgICAmJiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgJiYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gbmUgJ05FVycgKQogICAgICAgICkKICAgIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBDb25maWdJdGVtSUQgcGFyYW1ldGVyIG5lZWRzIHRvIGJlIGFuIGludGVnZXIgb3IgJ05FVyciLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgTmFtZSBwYXJhbSBmb3IgdmFsaWQgZm9ybWF0CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17TmFtZX0gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBOYW1lIHBhcmFtZXRlciBuZWVkcyB0byBiZSBhIHN0cmluZyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgQ2xhc3NJRCBwYXJhbSBmb3IgdmFsaWQgZm9ybWF0CiAgICBpZiAoICFJc0ludGVnZXIoICRQYXJhbXtDbGFzc0lEfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIENsYXNzSUQgcGFyYW1ldGVyIG5lZWRzIHRvIGJlIGFuIGludGVnZXIiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgIyBjaGVjayBjbGFzcyBsaXN0IGZvciB2YWxpZGl0eQogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJENsYXNzTGlzdCkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJVbmFibGUgdG8gcmV0cmlldmUgYSB2YWxpZCBjbGFzcyBsaXN0ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgdGhlIGNsYXNzIG5hbWUgZnJvbSB0aGUgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzID0gJENsYXNzTGlzdC0+eyAkUGFyYW17Q2xhc3NJRH0gfTsKCiAgICAjIGNoZWNrIGNsYXNzIGZvciB2YWxpZGl0eQogICAgaWYgKCAhSXNTdHJpbmdXaXRoRGF0YSgkQ2xhc3MpICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVW5hYmxlIHRvIGRldGVybWluZSBhIGNvbmZpZyBpdGVtIGNsYXNzIHVzaW5nIHRoZSBnaXZlbiBDbGFzc0lEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBlbHNpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPntEZWJ1Z30gPiAwICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUmVzb2x2ZWQgQ2xhc3NJRCAkUGFyYW17Q2xhc3NJRH0gdG8gY2xhc3MgJENsYXNzIiwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHRoZSB1bmlxdWVuZXNzIHNjb3BlIGZyb20gU3lzQ29uZmlnCiAgICBteSAkU2NvcGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1VuaXF1ZUNJTmFtZTo6VW5pcXVlbmVzc0NoZWNrU2NvcGUnKTsKCiAgICAjIGNoZWNrIHNjb3BlIGZvciB2YWxpZGl0eQogICAgaWYgKCAhSXNTdHJpbmdXaXRoRGF0YSgkU2NvcGUpICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGNvbmZpZ3VyYXRpb24gb2YgVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZSBpcyBpbnZhbGlkISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJFNjb3BlIG5lICdnbG9iYWwnICYmICRTY29wZSBuZSAnY2xhc3MnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZSBpcyAkU2NvcGUsIGJ1dCBtdXN0IGJlIGVpdGhlciAiCiAgICAgICAgICAgICAgICAuICInZ2xvYmFsJyBvciAnY2xhc3MnISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgc2NvcGUgZm9yIGNoZWNraW5nIHRoZSB1bmlxdWVuZXNzIGlzICRTY29wZSIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlU2VhcmNoQ3JpdGVyaWE7CgogICAgIyBhZGQgdGhlIGNvbmZpZyBpdGVtIGNsYXNzIHRvIHRoZSBzZWFyY2ggY3JpdGVyaWEgaWYgdGhlIHVuaXF1ZW5lc3Mgc2NvcGUgaXMgbm90IGdsb2JhbAogICAgaWYgKCAkU2NvcGUgbmUgJ2dsb2JhbCcgKSB7CiAgICAgICAgJFNlYXJjaENyaXRlcmlhe0NsYXNzSURzfSA9IFsgJFBhcmFte0NsYXNzSUR9IF07CiAgICB9CgogICAgJFNlYXJjaENyaXRlcmlhe05hbWV9ID0gJFBhcmFte05hbWV9OwoKICAgICMgc2VhcmNoIGZvciBhIGNvbmZpZyBpdGVtIG1hdGNoaW5nIHRoZSBnaXZlbiBuYW1lCiAgICBteSBAQ29uZmlnSXRlbUlEcyA9ICRTZWxmLT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICVTZWFyY2hDcml0ZXJpYSwKICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJwogICAgKTsKCiAgICAjIHJlbW92ZSB0aGUgcHJvdmlkZWQgQ29uZmlnSXRlbUlEIGZyb20gdGhlIHJlc3VsdHMsIG90aGVyd2lzZSB0aGUgZHVwbGljYXRlIGNoZWNrIHdvdWxkIGZhaWwKICAgICMgYmVjYXVzZSB0aGUgQ29uZmlnSXRlbSBpdHNlbGYgaXMgZm91bmQgYXMgZHVwbGljYXRlCiAgICBteSBARHVwbGljYXRlcyA9IGdyZXAgeyAkXyBuZSAkUGFyYW17Q29uZmlnSXRlbUlEfSB9IEBDb25maWdJdGVtSURzOwoKICAgICMgaWYgYSBjb25maWcgaXRlbSB3YXMgZm91bmQsIHRoZSBnaXZlbiBuYW1lIGlzIG5vdCB1bmlxdWUKICAgICMgaWYgbm8gY29uZmlnIGl0ZW0gd2FzIGZvdW5kLCB0aGUgZ2l2ZW4gbmFtZSBpcyB1bmlxdWUKCiAgICAjIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggZm9yIGR1cGxpY2F0ZXMKICAgIHJldHVybiBcQER1cGxpY2F0ZXM7Cn0KCj1oZWFkMiBDdXJJbmNpU3RhdGVSZWNhbGMoKQoKcmVjYWxjdWxhdGVzIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0gYW5kIG9mIGNvbmZpZyBpdGVtcwp0aGF0IGFyZSBsaW5rZWQgdG8gaXQuIE9ubHkgbGlua3MgYmV0d2VlbiBjb25maWcgaXRlbXMgYXJlIGNvbnNpZGVyZWQgaGVyZS4gTGlua3MgdG8Kb3IgZnJvbSBjb25maWcgaXRlbSB2ZXJzaW9ucyBhcmUgaWdub3JlZC4KClRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIGRlcGVuZHMgb24gdGhlIGluY2lkZW50IHN0YXRlcyB0aGF0IHRoaXMgY29uZmlnIGl0ZW0gZGVwZW5kcyBvbi4KQSBjaGFuZ2Ugb2YgdGhlIGluY2lkZW50IHN0YXRlIG1pZ2h0IGhhdmUgcmVwZXJjdXNzaW9ucyBvbiB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZQpvZiB0aGUgY29uZmlnIGl0ZW1zIHRoYXQgZGVwZW5kIG9uIHRoaXMgY29uZmlnIGl0ZW0uCgpJdCBpcyBhIGNvbW1vbiB1c2UgY2FzZSB0aGF0IEM8Q3VySW5jaVN0YXRlUmVjYWxjKCk+IGlzIGNhbGxlZCBpbiBhIGxvb3Agb3ZlciBhIGxpc3Qgb2YgY29uZmlnIGl0ZW1zLgpFeGFtcGxlcyBhcmUgdGhlIGNvbnNvbGUgY29tbWFuZCBDPEFkbWluOjpJVFNNOjpJbmNpZGVudFN0YXRlOjpSZWNhbGN1bGF0ZT4gb3Igd2hlbiB0aGUgbGlua2luZwpvZiB0aGUgY29uZmlnIGl0ZW1zIGhhcyBjaGFuZ2VkLiBGb3Igb3B0aW1pemluZyB0aGF0IGNhc2UgdGhlcmUgYXJlIHRoZSBwYXJhbWV0ZXJzCkM8TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGU+IGFuZCBDPFNjYW5uZWRDb25maWdJdGVtSURzPiB3aGljaCBjYXJyeSBzdGF0ZSBiZXR3ZWVuCmludm9jYXRpb25zIG9mIHRoaXMgbWV0aG9kLiBUaGV5IHByb3ZpZGUgY2FjaGluZyBhbmQgcHJldmVudCBpbmZpbml0ZSBsb29wcy4KCkNoYW5naW5nIHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBjb25maWcgaXRlbXMgaGFzIHJlcGVyY3Vzc2lvbnMgb24gc2VydmljZXMuIFRoZXNlIGVmZmVjdHMKYXJlIGhhbmRsZWQgaW4gdGhpcyBtZXRob2QgYXMgd2VsbC4KCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5DdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgPT4gMTIzLAogICAgICAgIE5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlID0+ICROZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZSwgICMgb3B0aW9uYWwsIGluY2lkZW50IHN0YXRlcyBvZiBhbHJlYWR5IGNoZWNrZWQgQ0lzCiAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgICAgICAgPT4gJFNjYW5uZWRDb25maWdJdGVtSURzLCAgICAgICAgIyBvcHRpb25hbCwgSURzIGFuZCBpbmNpZGVudCBzdGF0ZXMgb2YgYWxyZWFkeSBjaGVja2VkIENJcwogICAgKTsKCkZvciBhc3luY2hyb25vdXMgZXhlY3V0aW9uIGl0IGlzIGNvbnZlbmllbnQgdG8gcGFzcyBhIGxpc3Qgb2YgY29uZmlnIGl0ZW1zIHRvIEM8Q3VySW5jaVN0YXRlUmVjYWxjKCk+LgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkN1ckluY2lTdGF0ZVJlY2FsYygKICAgICAgICBDb25maWdJdGVtSURzICAgICAgICAgICAgICA9PiBbIDEyMywgMTI0LCAxMjUgXSwKICAgICk7CgpJbiB0aGF0IGNhc2UgdGhlIGxvb3AgaXMgZGlzY29udGludWVkIHdoZW4gYW4gaXRlcmF0aW9uIHJlcG9ydGVkIGEgZmFpbHVyZS4KCj1jdXQKCnN1YiBDdXJJbmNpU3RhdGVSZWNhbGMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHVzZWZ1bCBmb3IgYXN5bmMgZXhlY3V0aW9uCiAgICAjIGFsbCBvdGhlciBwYXJhbWV0ZXJzIHdpbGwgYmUgaWdub3JlZAogICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUlEc30gKSB7CgogICAgICAgICMgdGhlc2UgaGFzaGVzIHdpbGwgYmUgZmlsbGVkIGluIHRoZSBjYWxscyB0byBDdXJJbmNpU3RhdGVSZWNhbGMKICAgICAgICBteSAoICVOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZSwgJVNjYW5uZWRDb25maWdJdGVtSURzICk7CgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggJFBhcmFte0NvbmZpZ0l0ZW1JRHN9LT5AKiApIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+Q3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIE5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlID0+IFwlTmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGUsCiAgICAgICAgICAgICAgICBTY2FubmVkQ29uZmlnSXRlbUlEcyAgICAgICA9PiBcJVNjYW5uZWRDb25maWdJdGVtSURzLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuIHVubGVzcyAkU3VjY2VzczsKICAgICAgICB9CgogICAgICAgICMgYWxsIGZpbmUKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmICggcmVmICRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnVGhlIHBhcmFtZXRlciBDb25maWdJdGVtSUQgbXVzdCBiZSBhIHBsYWluIHNjYWxhciEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBpbmNpZGVudCBsaW5rIHR5cGVzIGFuZCBkaXJlY3Rpb25zIGZyb20gY29uZmlnLiBFLmcuCiAgICAjIHsgRGVwZW5kc09uID0+ICdCb3RoJywgTG9jYXRpb25PZiA9PiAnU291cmNlJyB9CiAgICBteSAkSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSVRTTTo6Q29yZTo6SW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbicpOwoKICAgICMgJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfSBob2xkcyB0aGUgZGV0ZXJtaW5lZCBpbmNpZGVudCBzdGF0ZXMgb2YgdGhlIGNvbnNpZGVyZWQgY29uZmlnIGl0ZW1zLgogICAgIyBJdCBtYXkgY29udGFpbiBjb250YWluIGNvbnRlbnQgZnJvbSBwcmV2aW91cyBjYWxscyBvZiBDdXJJbmNpU3RhdGVSZWNhbGMoKSBzbyB0aGF0IHVubmVjZXNzYXJ5IHdvcmsKICAgICMgY2FuIGJlIHNraXBwZWQuCiAgICAjIE5ldyBpbmNpZGVudCBzdGF0ZXMgYXJlIGNhbGN1bGF0ZWQgZnJvbSBhbGwgaW5jaWRlbnQgbGluayB0eXBlcy4KICAgICMgVGhlIG5ld2x5IGRldGVybWluZWQgaW5jaWRlbnQgc3RhdGVzIGFyZSBtYWRlIGF2YWlsYWJsZSB0byB0aGUgY2FsbGVyLCBzbyB0aGF0IHRoZSBjYWxsZXIKICAgICMgY2FuIHBhc3MgaXQgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgogICAgIyBJbmNvcnBvcmF0ZSBkYXRhIGZyb20gcHJldmlvdXMgcnVuKHMpIGFuZCByZW1lbWJlciBrbm93biBkYXRhLgogICAgJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfSAvLz0ge307CiAgICBteSAkS25vd25OZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZSA9IGRjbG9uZSggJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfSApOwoKICAgICMgUmVtZW1iZXIgdGhlIHNjYW5uZWQgY29uZmlnIGl0ZW1zCiAgICAjIEluY29ycG9yYXRlIGRhdGEgZnJvbSBwcmV2aW91cyBydW4ocykgYW5kIHJlbWVtYmVyIGtub3duIGRhdGEuCiAgICAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9IC8vPSB7fTsKICAgIG15ICRLbm93blNjYW5uZWRDb25maWdJdGVtSURzID0gZGNsb25lKCAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9ICk7CgogICAgIyBGaW5kIGRlZXBseSBjb25uZWN0ZWQgY29uZmlnIGl0ZW1zIHdpdGggYW4gaW5jaWRlbnQgc3RhdGUuCiAgICAjIFRoZSBkaXJlY3Rpb24gaW4gJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24gaXMgaWdub3JlZCBoZXJlIGJlY2F1c2UgZGVwZW5kZWQgb24gaXRlbXMgY291bGQgY2hhbmdlCiAgICAjIHRoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGUgY3VycmVudCBjb25maWcgaXRlbS4gT3IgY2hhbmdlcyBpbgogICAgIyB0aGUgY3VycmVudCBjb25maWcgaXRlbSBjb3VsZCBjaGFuZ2UgZG93bnN0cmVhbSBjb25maWcgaXRlbXMuCiAgICAkU2VsZi0+X0ZpbmRJbmNpQ29uZmlnSXRlbXMoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgSW5jaWRlbnRMaW5rVHlwZXMgICAgPT4gWyBrZXlzICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uLT4lKiBdLAogICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzID0+ICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30sCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIHJlbGF0aW9uIGJldHdlZW4gc2VydmljZXMgYW5kIGxpbmtlZCBDSXMKICAgICMgVGhlIGluZm8gd2lsbCBiZSB1c2VkIGZvciB1cGRhdGluZyB0aGUgc2VydmljZXMuCiAgICBteSAlU2VydmljZUNJUmVsYXRpb247CgogICAgIyBjYWxjdWxhdGUgdGhlIG5ldyBDSSBpbmNpZGVudCBzdGF0ZSBmb3IgZWFjaCBjb25maWd1cmVkIGxpbmt0eXBlCiAgICBMSU5LVFlQRToKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24tPiUqICkgewoKICAgICAgICAjIGdldCB0aGUgZGlyZWN0aW9uCiAgICAgICAgbXkgJExpbmtEaXJlY3Rpb24gPSAkSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbi0+eyRMaW5rVHlwZX07CgogICAgICAgICMgaW52ZXN0aWdhdGUgYWxsIGNvbmZpZyBpdGVtcyB3aXRoIGEgd2FybmluZyBzdGF0ZQogICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAleyAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9IH0gKSB7CgogICAgICAgICAgICAjIFNraXAgY29uZmlnIGl0ZW1zIGtub3duIGZyb20gcHJldmlvdXMgZXhlY3V0aW9uKHMpLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBJc1N0cmluZ1dpdGhEYXRhKCAkS25vd25TY2FubmVkQ29uZmlnSXRlbUlEcy0+eyRDb25maWdJdGVtSUR9e1R5cGV9ICkKICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICAgICAkS25vd25TY2FubmVkQ29uZmlnSXRlbUlEcy0+eyRDb25maWdJdGVtSUR9e1R5cGV9IGVxICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317JENvbmZpZ0l0ZW1JRH17VHlwZX0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaW52ZXN0aWdhdGUgb25seSBjb25maWcgaXRlbXMgd2l0aCBhbiBpbmNpZGVudCBzdGF0ZQogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCB1bmxlc3MgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXskQ29uZmlnSXRlbUlEfXtUeXBlfSBlcSAnaW5jaWRlbnQnOwoKICAgICAgICAgICAgIyBhbm5vdGF0ZSBsaW5rZWQgY29uZmlnIGl0ZW1zIHdpdGggYSB3YXJuaW5nCiAgICAgICAgICAgICRTZWxmLT5fRmluZFdhcm5Db25maWdJdGVtcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgICAgICAgICA9PiAkTGlua0RpcmVjdGlvbiwKICAgICAgICAgICAgICAgIE51bWJlck9mTGlua1R5cGVzICAgID0+IHNjYWxhciBrZXlzICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uLT4lKiwKICAgICAgICAgICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzID0+ICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IGtleXMgJXsgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfSB9ICkgewoKICAgICAgICAgICAgIyBTa2lwIGNvbmZpZyBpdGVtcyBrbm93biBmcm9tIHByZXZpb3VzIGV4ZWN1dGlvbihzKS4KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgSXNTdHJpbmdXaXRoRGF0YSggJEtub3duU2Nhbm5lZENvbmZpZ0l0ZW1JRHMtPnskQ29uZmlnSXRlbUlEfXtUeXBlfSApCiAgICAgICAgICAgICAgICAmJgogICAgICAgICAgICAgICAgJEtub3duU2Nhbm5lZENvbmZpZ0l0ZW1JRHMtPnskQ29uZmlnSXRlbUlEfXtUeXBlfSBlcSAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyRDb25maWdJdGVtSUR9e1R5cGV9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGV4dHJhY3QgaW5jaWRlbnQgc3RhdGUgdHlwZQogICAgICAgICAgICBteSAkSW5jaVN0YXRlVHlwZSA9ICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317JENvbmZpZ0l0ZW1JRH17VHlwZX07CgogICAgICAgICAgICAjIEZpbmQgYWxsIGxpbmtlZCBzZXJ2aWNlcyBvZiB0aGlzIGNvbmZpZyBpdGVtLgogICAgICAgICAgICAjIFRoZXNlIGtpbmQgb2YgbGlua3MgYXJlIG5vdCBhdmFpbGFibGUgZnJvbSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rCiAgICAgICAgICAgIG15ICVMaW5rZWRTZXJ2aWNlSURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0tleUxpc3QoCiAgICAgICAgICAgICAgICBPYmplY3QxICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgIEtleTEgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgT2JqZWN0MiAgID0+ICdTZXJ2aWNlJywKICAgICAgICAgICAgICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiA9PiAkTGlua0RpcmVjdGlvbiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgU0VSVklDRUlEOgogICAgICAgICAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIHNvcnQga2V5cyAlTGlua2VkU2VydmljZUlEcyApIHsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRoZSBDSXMgdGhhdCBhcmUgbGlua2VkIHdpdGggdGhpcyBzZXJ2aWNlCiAgICAgICAgICAgICAgICAkU2VydmljZUNJUmVsYXRpb257JFNlcnZpY2VJRH0gLy89IFtdOwogICAgICAgICAgICAgICAgcHVzaCAkU2VydmljZUNJUmVsYXRpb257JFNlcnZpY2VJRH0tPkAqLCAkQ29uZmlnSXRlbUlEOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkSW5jaVN0YXRlVHlwZSBlcSAnaW5jaWRlbnQnOwoKICAgICAgICAgICAgJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfXskQ29uZmlnSXRlbUlEfSA9ICRJbmNpU3RhdGVUeXBlOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aGUgaW5jaWRlbnQgc3RhdGUgbGlzdCBvZiB3YXJuaW5ncwogICAgbXkgJFdhcm5TdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSA9PiAnd2FybmluZycsCiAgICAgICAgfSwKICAgICk7CgogICAgaWYgKCAhZGVmaW5lZCAkV2FyblN0YXRlTGlzdCApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIklUU006OkNvcmU6OkluY2lkZW50U3RhdGUgV2FybmluZyBjYW5ub3QgYmUgaW52YWxpZC4iLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJVJldmVyc2VXYXJuU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyRXYXJuU3RhdGVMaXN0fTsKICAgIG15IEBTb3J0ZWRXYXJuTGlzdCAgICAgICA9IHNvcnQga2V5cyAlUmV2ZXJzZVdhcm5TdGF0ZUxpc3Q7CiAgICBteSAkV2FybmluZ1N0YXRlSUQgICAgICAgPSAkUmV2ZXJzZVdhcm5TdGF0ZUxpc3R7V2FybmluZ30gfHwgJFJldmVyc2VXYXJuU3RhdGVMaXN0eyAkU29ydGVkV2Fybkxpc3RbMF0gfTsKICAgIG15ICRDYWNoZU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgc2V0IHRoZSBuZXcgY3VycmVudCBpbmNpZGVudCBzdGF0ZSBmb3IgQ0lzCiAgICBDT05GSUdJVEVNSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAkUGFyYW17TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGV9LT4lKiApIHsKCiAgICAgICAgIyBTa2lwIGNvbmZpZyBpdGVtcyBrbm93biBmcm9tIHByZXZpb3VzIGV4ZWN1dGlvbihzKS4KICAgICAgICBpZiAoCiAgICAgICAgICAgIElzU3RyaW5nV2l0aERhdGEoICRLbm93bk5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlLT57JENvbmZpZ0l0ZW1JRH0gKQogICAgICAgICAgICAmJiAkS25vd25OZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZS0+eyRDb25maWdJdGVtSUR9IGVxICRQYXJhbXtOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZX17JENvbmZpZ0l0ZW1JRH0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBuZXcgaW5jaWRlbnQgc3RhdGUgdHlwZSAoY2FuIG9ubHkgYmUgJ29wZXJhdGlvbmFsJyBvciAnd2FybmluZycpCiAgICAgICAgbXkgJEluY2lTdGF0ZVR5cGUgPSAkUGFyYW17TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGV9eyRDb25maWdJdGVtSUR9OwoKICAgICAgICAjIGdldCBsYXN0IHZlcnNpb24KICAgICAgICBteSAkTGFzdFZlcnNpb24gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEN1ckluY2lTdGF0ZUlEOwogICAgICAgIGlmICggJEluY2lTdGF0ZVR5cGUgZXEgJ3dhcm5pbmcnICkgewoKICAgICAgICAgICAgIyBjaGVjayB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSB0eXBlIGlzIGluICdpbmNpZGVudCcKICAgICAgICAgICAgIyB0aGVuIHdlIGRvIG5vdCB3YW50IHRvIGNoYW5nZSBpdCB0byB3YXJuaW5nCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRMYXN0VmVyc2lvbi0+e0luY2lTdGF0ZVR5cGV9IGVxICdpbmNpZGVudCc7CgogICAgICAgICAgICAkQ3VySW5jaVN0YXRlSUQgPSAkV2FybmluZ1N0YXRlSUQ7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEluY2lTdGF0ZVR5cGUgZXEgJ29wZXJhdGlvbmFsJyApIHsKICAgICAgICAgICAgJEN1ckluY2lTdGF0ZUlEID0gJExhc3RWZXJzaW9uLT57SW5jaVN0YXRlSUR9OwogICAgICAgIH0KCiAgICAgICAgIyBObyB1cGRhdGUgbmVjZXNzYXJ5IGlmIGluY2lkZW50IHN0YXRlIGlkIG9mIHZlcnNpb24gYW5kIGNvbmZpZyBpdGVtIG1hdGNoLgogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRMYXN0VmVyc2lvbi0+e0N1ckluY2lTdGF0ZUlEfSBlcSAkQ3VySW5jaVN0YXRlSUQ7CgogICAgICAgICMgdXBkYXRlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ1VQREFURSBjb25maWdpdGVtIFNFVCBjdXJfaW5jaV9zdGF0ZV9pZCA9ID8gV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkQ3VySW5jaVN0YXRlSUQsIFwkQ29uZmlnSXRlbUlEIF0sCiAgICAgICAgKTsKCiAgICAgICAgIyBUT0RPOiBBbHNvIHRoZSBWZXJzaW9uSUQtY2FjaGVzIGhhdmUgdG8gYmUgY29uc2lkZXJlZCwgdGhleSBhbHNvIGNvbnRhaW4gQ3VySW5jaVN0YXRlCiAgICAgICAgIyBkZWxldGUgdGhlIGNhY2hlCiAgICAgICAgZm9yIG15ICRERkRhdGEgKCAwLCAxICkgewogICAgICAgICAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICc6OicsICdDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBERkRhdGEgICAgICAgPT4gJERGRGF0YQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgdHlwZSBmb3IgZWFjaCBzZXJ2aWNlIChpbmZsdWVuY2VkIGJ5IGxpbmtlZCBDSXMpCiAgICBTRVJWSUNFSUQ6CiAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIHNvcnQga2V5cyAlU2VydmljZUNJUmVsYXRpb24gKSB7CgogICAgICAgICMgc2V0IGRlZmF1bHQgaW5jaWRlbnQgc3RhdGUgdHlwZQogICAgICAgIG15ICRDdXJJbmNpU3RhdGVUeXBlRnJvbUNJcyA9ICdvcGVyYXRpb25hbCc7CgogICAgICAgICMgZ2V0IHRoZSB1bmlxdWUgY29uZmlnIGl0ZW0gaWRzIHdoaWNoIGFyZSBkaXJlY3RseSBsaW5rZWQgdG8gdGhpcyBzZXJ2aWNlCiAgICAgICAgbXkgJVVuaXF1ZUNvbmZpZ0l0ZW1JRHMgPSBtYXAgeyAkXyA9PiAxIH0gJFNlcnZpY2VDSVJlbGF0aW9ueyRTZXJ2aWNlSUR9LT5AKjsKCiAgICAgICAgIyBpbnZlc3RpZ2F0ZSB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSBvZiBlYWNoIGNvbmZpZyBpdGVtCiAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICVVbmlxdWVDb25maWdJdGVtSURzICkgewoKICAgICAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gZGF0YQogICAgICAgICAgICBteSAkQ29uZmlnSXRlbURhdGEgPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgQ2FjaGUgICAgICAgID0+IDAsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkQ29uZmlnSXRlbURhdGEtPntDdXJEZXBsU3RhdGVUeXBlfSBuZSAncHJvZHVjdGl2ZSc7CiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRDb25maWdJdGVtRGF0YS0+e0N1ckluY2lTdGF0ZVR5cGV9IGVxICdvcGVyYXRpb25hbCc7CgogICAgICAgICAgICAjIGNoZWNrIGlmIHNlcnZpY2UgbXVzdCBiZSBzZXQgdG8gJ3dhcm5pbmcnCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1EYXRhLT57Q3VySW5jaVN0YXRlVHlwZX0gZXEgJ3dhcm5pbmcnICkgewogICAgICAgICAgICAgICAgJEN1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzID0gJ3dhcm5pbmcnOwoKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGlmIHNlcnZpY2UgbXVzdCBiZSBzZXQgdG8gJ2luY2lkZW50JwogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtRGF0YS0+e0N1ckluY2lTdGF0ZVR5cGV9IGVxICdpbmNpZGVudCcgKSB7CiAgICAgICAgICAgICAgICAkQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMgPSAnaW5jaWRlbnQnOwoKICAgICAgICAgICAgICAgIGxhc3QgQ09ORklHSVRFTUlEOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSB0eXBlIGZyb20gQ0lzIG9mIHRoZSBzZXJ2aWNlCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+U2VydmljZVByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJFNlcnZpY2VJRCwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdDdXJJbmNpU3RhdGVUeXBlRnJvbUNJcycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBPYmplY3RBdHRyaWJ1dGVzR2V0KCkKCnJldHVybnMgdGhlIGF0dHJpYnV0ZXMgYSBjb25maWcgaXRlbSBjYW4gaGF2ZSBvbiB0aGUgc3lzdGVtLgoKICAgIG15ICVBdHRyaWJ1dGVzID0gJFRpY2tldE9iamVjdC0+T2JqZWN0QXR0cmlidXRlc0dldCgKICAgICAgICBEeW5hbWljRmllbGRzID0+ICgwfDEpLCAgICAgICAgICMgKG9wdGlvbmFsKSBpZiBkeW5hbWljIGZpZWxkIG5hbWVzIGFyZSBpbmNsdWRlZCwgZGVmYXVsdCAwCiAgICAgICAgVmVyc2lvbiAgICAgICA9PiAoMHwxKSwgICAgICAgICAjIChvcHRpb25hbCkgaWYgdmVyc2lvbiBpbmZvcm1hdGlvbiBpcyBpbmNsdWRlZCwgZGVmYXVsdCAxCiAgICAgICAgRWRpdE1hc2sgICAgICA9PiAoMHwxKSwgICAgICAgICAjIChvcHRpb25hbCkgaWYgZWRpdCBtYXNrIGF0dHJpYnV0ZXMgYXJlIHJldHVybmVkIGluc3RlYWQgb2YgYmFja2VuZCBhdHRyaWJ1dGVzLCBkZWZhdWx0IDAKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0QXR0cmlidXRlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtWZXJzaW9ufSAvLz0gMTsKCiAgICBteSAlQ29uZmlnSXRlbUF0dHJpYnV0ZXM7CgogICAgaWYgKCAkUGFyYW17RWRpdE1hc2t9ICkgewogICAgICAgICVDb25maWdJdGVtQXR0cmlidXRlcyA9ICgKICAgICAgICAgICAgRGVwbFN0YXRlSUQgICA9PiAxLAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgID0+IDEsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgVmVyc2lvblN0cmluZyA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAlQ29uZmlnSXRlbUF0dHJpYnV0ZXMgPSAoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+IDEsCiAgICAgICAgICAgIE51bWJlciAgICAgICAgID0+IDEsCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgID0+IDEsCiAgICAgICAgICAgIENsYXNzZXMgICAgICAgID0+IDEsCiAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgIEN1ckRlcGxTdGF0ZXMgID0+IDEsCiAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgIEN1ckluY2lTdGF0ZXMgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBpZiByZXF1ZXN0ZWQsIHNldCB2ZXJzaW9uIGF0dHJpYnV0ZXMKICAgICAgICBpZiAoICRQYXJhbXtWZXJzaW9ufSApIHsKICAgICAgICAgICAgJUNvbmZpZ0l0ZW1BdHRyaWJ1dGVzID0gKAogICAgICAgICAgICAgICAgJUNvbmZpZ0l0ZW1BdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgVmVyc2lvblN0cmluZyA9PiAxLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICA9PiAxLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICA9PiAxLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICA9PiAxLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGR5bmFtaWMgZmllbGRzIG5lZWQgdG8gYmUgYWRkZWQKICAgIGlmICggJFBhcmFte0R5bmFtaWNGaWVsZHN9ICkgewogICAgICAgIG15ICREeW5hbWljRmllbGRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgICAgICBWYWxpZCAgICAgID0+IDEsCiAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgUmVzdWx0VHlwZSA9PiAnSEFTSCcsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCB2YWx1ZXMgJER5bmFtaWNGaWVsZHMtPiUqICkgewogICAgICAgICAgICAkQ29uZmlnSXRlbUF0dHJpYnV0ZXN7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJUNvbmZpZ0l0ZW1BdHRyaWJ1dGVzOwp9Cgo9aGVhZDEgSU5URVJOQUwgSU5URVJGQUNFCgo9aGVhZDIgX0ZpbmRJbmNpQ29uZmlnSXRlbXMoKQoKZmluZCBjb25uZWN0ZWQgY29uZmlnIGl0ZW1zIHdpdGggYW4gaW5jaWRlbnQgc3RhdGUuCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPl9GaW5kSW5jaUNvbmZpZ0l0ZW1zKAogICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgSW5jaWRlbnRMaW5rVHlwZXMgICAgPT4gWyBrZXlzICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uLT4lKiBdLAogICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzID0+IFwlU2Nhbm5lZENvbmZpZ0l0ZW1JRHMsCiAgICApOwoKVGhlIHNjYW5uZWQgY29uZmlnIGl0ZW1zIHdpbGwgYmUgZW50ZXJlZCBpbiB0aGUgQzxTY2FubmVkQ29uZmlnSXRlbUlEcz4gaGFzaHJlZi4gRWFjaCBjb25maWcgaXRlbSB3aWxsIGJlIHNjYW5uZWQgb25seSBvbmNlLgpUaGUgYXR0cmlidXRlIEM8VHlwZT4gd2lsbCBiZSBlaXRoZXIgJ29wZXJhdGlvbmFsJyBvciAnaW5jaWRlbnQnLgoKVGhlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIHdpdGggaW5jaWRlbnRzIHJlY3Vyc2VzIGludG8gdGhlIGdyYXBoIG9mIGxpbmtlZCBjb25maWcgaXRlbXMuIFRoZSBkaXJlY3RseQpsaW5rZWQgaXRlbXMgd2lsbCBhbHdheXMgYmUgY2hlY2tlZC4gUmVjdXJzaW9uIHN0b3BzIG9uY2UgYW4gaW5jaWRlbnQgaGFzIGJlZW4gZm91bmQuCgpUaGlzIG1ldGhvZCBvbmx5IGNvbGxlY3RzIGRhdGEsIG5vIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGVzIHdpbGwgYmUgYWx0ZXJlZC4KCj1jdXQKCnN1YiBfRmluZEluY2lDb25maWdJdGVtcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDb25maWdJdGVtSUR9OwoKICAgICMgaWdub3JlIGFscmVhZHkgc2Nhbm5lZCBpZHMgKGluZmluaXRlIGxvb3AgcHJvdGVjdGlvbikKICAgIHJldHVybiBpZiBkZWZpbmVkICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317ICRQYXJhbXtDb25maWdJdGVtSUR9IH07CgogICAgIyBzZXQgYSBkZWZhdWx0IHNvIHRoZSBDb25maWdJdGVtIHdvbid0IGJlIHNjYW5uZWQgYWdhaW4KICAgICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317ICRQYXJhbXtDb25maWdJdGVtSUR9IH0gPSB7fTsKICAgICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317ICRQYXJhbXtDb25maWdJdGVtSUR9IH0tPntUeXBlfSA9ICdvcGVyYXRpb25hbCc7CgogICAgIyBhZGQgb3duIGNvbmZpZyBpdGVtIGlkIHRvIGxpc3Qgb2YgbGlua2VkIGNvbmZpZyBpdGVtcwogICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkUGFyYW17Q29uZmlnSXRlbUlEfTsKCiAgICAjIGZpbmQgdGhlIGRpcmVjdGx5IGxpbmtlZCBjb25maWcgaXRlbXMKICAgIHsKICAgICAgICAjIERpcmVjdGlvbiBtdXN0IEFMV0FZUyBiZSAnQm90aCcgaGVyZSBhcyB3ZSBuZWVkIHRvIGluY2x1ZGUKICAgICAgICAjIGFsbCBsaW5rZWQgQ0lzIHRoYXQgY291bGQgaW5mbHVlbmNlIHRoaXMgb25lIQogICAgICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRTZWxmLT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBUeXBlcyAgICAgICAgPT4gJFBhcmFte0luY2lkZW50TGlua1R5cGVzfSwKICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdCb3RoJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyByZW1lbWJlciBvbmx5IHRoZSBsaW5rZWQgY29uZmlnIGl0ZW0gaWRzLCBpZ25vcmUgdGhlIGNvbmZpZyBpdGVtIHZlcnNpb25zCiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywKICAgICAgICAgICAgZ3JlcCB7ZGVmaW5lZH0KICAgICAgICAgICAgbWFwICB7ICRfLT57Q29uZmlnSXRlbUlEfSB9CiAgICAgICAgICAgICRMaW5rZWRDb25maWdJdGVtcy0+QCo7CiAgICB9CgogICAgIyBMb29wIG92ZXIgdGhlIHJlcXVlc3RlZCBjb25maWcgaXRlbSBhbmQgdGhlIGRpcmVjdGx5IGxpbmtlZCBjb25maWcgaXRlbXMKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBAQ29uZmlnSXRlbUlEcyApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gZGF0YQogICAgICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDYWNoZSAgICAgICAgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIFdoZW4gYW4gaW5jaWRlbnQgd2FzIGZvdW5kLCBtYXJrIHRoZSBjb25maWcgaXRlbSBhbmQgc3RvcCByZWN1cnNpbmcKICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlVHlwZX0gZXEgJ2luY2lkZW50JyApIHsKICAgICAgICAgICAgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXskQ29uZmlnSXRlbUlEfXtUeXBlfSA9ICdpbmNpZGVudCc7CgogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICB9CgogICAgICAgICMgbm8gaW5jaWRlbnQgd2FzIGVuY291bnRlcmVkLCBjb250aW51ZSB3aXRoIHJlY3Vyc2lvbgogICAgICAgICMgX0ZpbmRJbmNpQ29uZmlnSXRlbXMoKSBtaWdodCBiZSBjYWxsZWQgd2l0aCB0aGUgY3VycmVudCAkUGFyYW17Q29uZmlnSXRlbUlEfS4KICAgICAgICAjIEJ1dCB0aGF0IGNhbGwgd2lsbCBkbyBub3RoaW5nLgogICAgICAgICRTZWxmLT5fRmluZEluY2lDb25maWdJdGVtcygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgSW5jaWRlbnRMaW5rVHlwZXMgICAgPT4gJFBhcmFte0luY2lkZW50TGlua1R5cGVzfSwKICAgICAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybjsKfQoKPWhlYWQyIF9GaW5kV2FybkNvbmZpZ0l0ZW1zKCkKClRoaXMgbWV0aG9kIGlzIGNhbGxlZCBmb3IgY29uZmlnIGl0ZW0gdGhhdCBhcmUgaW4gYSBpbmNpZGVudCBvciB3YXJuaW5nIHN0YXRlLgpGaW5kIGNvbm5lY3RlZCBjb25maWcgaXRlbXMgYW5kIGFubm90YXRlIHRoZW0gd2l0aCBhIHdhcm5pbmcgaW4gQzxTY2FubmVkQ29uZmlnSXRlbUlEcz4uIFByb3BhZ2F0ZSB0aGUgd2FybmluZy4KCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+X0ZpbmRXYXJuQ29uZmlnSXRlbXMoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgRGlyZWN0aW9uICAgICAgICAgICAgPT4gJExpbmtEaXJlY3Rpb24sCiAgICAgICAgTnVtYmVyT2ZMaW5rVHlwZXMgICAgPT4gMiwgICAgICAgICAgICAgICAgICAgICAjIGp1c3QgZm9yIGluZmluaXRlIGxvb3AgcHJvdGVjdGlvbgogICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzID0+ICRTY2FubmVkQ29uZmlnSXRlbUlEcywKICAgICk7Cgo9Y3V0CgpzdWIgX0ZpbmRXYXJuQ29uZmlnSXRlbXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17Q29uZmlnSXRlbUlEfTsKCiAgICAjIEluZmluaXRlIGxvb3AgcHJvdGVjdGlvbi4KICAgICMgSWdub3JlIGFscmVhZHkgc2Nhbm5lZCBpZHMuCiAgICAjIEl0IGlzIG9rIHRoYXQgYSBjb25maWcgaXRlbSBpcyBpbnZlc3RpZ2F0ZWQgYXMgbWFueSB0aW1lcyBhcyB0aGVyZSBhcmUgY29uZmlndXJlZCBsaW5rIHR5cGVzICogbnVtYmVyIG9mIGluY2lkZW50IGNvbmZpZyBpdGVlbXMKICAgIG15ICRJbmNpZGVudENvdW50ID0gdHJ1ZSB7ICggJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXskX317VHlwZX0gfHwgJycgKSBlcSAnaW5jaWRlbnQnIH0KICAgIGtleXMgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfS0+JSo7CiAgICBpZiAoCiAgICAgICAgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfS0+e0ZpbmRXYXJufQogICAgICAgICYmCiAgICAgICAgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfS0+e0ZpbmRXYXJufSA+PSAoICRQYXJhbXtOdW1iZXJPZkxpbmtUeXBlc30gKiAkSW5jaWRlbnRDb3VudCApCiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGluY3JlYXNlIHRoZSB2aXNpdCBjb3VudGVyCiAgICAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9LT57RmluZFdhcm59Kys7CgogICAgIyBmaW5kIGNvbmZpZyBpdGVtcyB0byB3aGljaCB0aGUgaW5jaWRlbnQgb3Igd2FybmluZyBtdXN0IGJlIHByb3BhZ2F0ZWQKICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRTZWxmLT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgVHlwZXMgICAgICAgID0+IFsgJFBhcmFte0xpbmtUeXBlfSBdLAogICAgICAgIERpcmVjdGlvbiAgICA9PiAkUGFyYW17RGlyZWN0aW9ufSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICBteSBATGlua2VkQ29uZmlnSXRlbUlEcyA9IG1hcCB7ICRfLT57Q29uZmlnSXRlbUlEfSB9ICRMaW5rZWRDb25maWdJdGVtcy0+QCo7CgogICAgQ09ORklHSVRFTUlEOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IEBMaW5rZWRDb25maWdJdGVtSURzICkgewoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbgogICAgICAgICRTZWxmLT5fRmluZFdhcm5Db25maWdJdGVtcygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgTGlua1R5cGUgICAgICAgICAgICAgPT4gJFBhcmFte0xpbmtUeXBlfSwKICAgICAgICAgICAgRGlyZWN0aW9uICAgICAgICAgICAgPT4gJFBhcmFte0RpcmVjdGlvbn0sCiAgICAgICAgICAgIE51bWJlck9mTGlua1R5cGVzICAgID0+ICRQYXJhbXtOdW1iZXJPZkxpbmtUeXBlc30sCiAgICAgICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzID0+ICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30sCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgKCAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyRDb25maWdJdGVtSUR9e1R5cGV9IHx8ICcnICkgZXEgJ2luY2lkZW50JzsKCiAgICAgICAgIyBzZXQgd2FybmluZyBzdGF0ZQogICAgICAgICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317JENvbmZpZ0l0ZW1JRH17VHlwZX0gPSAnd2FybmluZyc7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfUHJlcGFyZUxpa2VTdHJpbmcoKQoKaW50ZXJuYWwgZnVuY3Rpb24gdG8gcHJlcGFyZSBsaWtlIHN0cmluZ3MKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+X1ByZXBhcmVMaWtlU3RyaW5nKCAkU3RyaW5nUmVmICk7Cgo9Y3V0CgpzdWIgX1ByZXBhcmVMaWtlU3RyaW5nIHsKICAgIG15ICggJFNlbGYsICRWYWx1ZSApID0gQF87CgogICAgcmV0dXJuIGlmICEkVmFsdWU7CiAgICByZXR1cm4gaWYgcmVmICRWYWx1ZSBuZSAnU0NBTEFSJzsKCiAgICAjIFF1b3RlCiAgICAkeyRWYWx1ZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVvdGUoICR7JFZhbHVlfSwgJ0xpa2UnICk7CgogICAgIyByZXBsYWNlICogd2l0aCAlCiAgICAkeyRWYWx1ZX0gPX4gc3sgXCorIH17JX14bXNnOwoKICAgIHJldHVybjsKfQoKPWhlYWQxIElUU00gQ29uZmlnIEl0ZW0gZXZlbnRzOgoKQ29uZmlnSXRlbUNyZWF0ZSwgQ29uZmlnSXRlbVVwZGF0ZSwgVmVyc2lvbkNyZWF0ZSwgVmVyc2lvblVwZGF0ZSwgRGVwbG95bWVudFN0YXRlVXBkYXRlLCBJbmNpZGVudFN0YXRlVXBkYXRlLApDb25maWdJdGVtRGVsZXRlLCBMaW5rQWRkLCBMaW5rRGVsZXRlLCBEZWZpbml0aW9uVXBkYXRlLCBOYW1lVXBkYXRlLCBEZWZpbml0aW9uQ3JlYXRlLCBWZXJzaW9uRGVsZXRlCgo9Y3V0CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/ColumnFilter.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29sdW1uRmlsdGVyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSBJc0hhc2hSZWZXaXRoRGF0YSBJc1N0cmluZ1dpdGhEYXRhKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OlVzZXInLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29sdW1uRmlsdGVyIC0gQ29sdW1uIEZpbHRlciBsaWJyYXJ5Cgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBmdW5jdGlvbnMgZm9yIENvbHVtbiBGaWx0ZXJzLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJElUU01Db25maWdJdGVtQ29sdW1uRmlsdGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb2x1bW5GaWx0ZXInKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgQ2xhc3NGaWx0ZXJWYWx1ZXNHZXQoKQoKZ2V0IGEgbGlzdCBvZiBhbGwgY29uZmlnIGl0ZW0gY2xhc3NlcwoKICAgIG15ICRWYWx1ZXMgPSAkQ29sdW1uRmlsdGVyT2JqZWN0LT5DbGFzc0ZpbHRlclZhbHVlc0dldCgpOwoKICAgIHJldHVybnMKCiAgICAkVmFsdWVzID0gewogICAgICAgIDIyID0+ICdDb21wdXRlcicsCiAgICAgICAgMjMgPT4gJ0hhcmR3YXJlJywKICAgICAgICAyNCA9PiAnTG9jYXRpb24nLAogICAgICAgIDI1ID0+ICdOZXR3b3JrJywKICAgICAgICAyNiA9PiAnU29mdHdhcmUnLAogICAgfTsKCj1jdXQKCnN1YiBDbGFzc0ZpbHRlclZhbHVlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKfQoKPWhlYWQyIERlcGxTdGF0ZUZpbHRlclZhbHVlc0dldCgpCgpnZXQgYSBsaXN0IG9mIGFsbCBkZXBsb3ltZW50IHN0YXRlcwoKICAgIG15ICRWYWx1ZXMgPSAkQ29sdW1uRmlsdGVyT2JqZWN0LT5EZXBsU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoKTsKCiAgICByZXR1cm5zCgogICAgJFZhbHVlcyA9IHsKICAgICAgICAyNyA9PiAiRXhwaXJlZCIsCiAgICAgICAgMjggPT4gIkluYWN0aXZlIiwKICAgICAgICAyOSA9PiAiTWFpbnRlbmFuY2UiLAogICAgICAgIDMwID0+ICJQaWxvdCIsCiAgICAgICAgMzEgPT4gIlBsYW5uZWQiLAogICAgICAgIDMyID0+ICJQcm9kdWN0aW9uIiwKICAgICAgICAzMyA9PiAiUmVwYWlyIiwKICAgICAgICAzNCA9PiAiUmV0aXJlZCIsCiAgICAgICAgMzUgPT4gIlJldmlldyIsCiAgICAgICAgMzYgPT4gIlRlc3QvUUEiLAogICAgfTsKCj1jdXQKCnN1YiBEZXBsU3RhdGVGaWx0ZXJWYWx1ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwp9Cgo9aGVhZDIgQ3VyRGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0KCkKCmdldCBhIGxpc3Qgb2YgYWxsIGN1cnJlbnQgZGVwbG95bWVudCBzdGF0ZXMgLSB3cmFwcyBmb3IgRGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0KCkKCiAgICBteSAkVmFsdWVzID0gJENvbHVtbkZpbHRlck9iamVjdC0+Q3VyRGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0KCk7CgogICAgcmV0dXJucwoKICAgICRWYWx1ZXMgPSB7CiAgICAgICAgMjcgPT4gIkV4cGlyZWQiLAogICAgICAgIDI4ID0+ICJJbmFjdGl2ZSIsCiAgICAgICAgMjkgPT4gIk1haW50ZW5hbmNlIiwKICAgICAgICAzMCA9PiAiUGlsb3QiLAogICAgICAgIDMxID0+ICJQbGFubmVkIiwKICAgICAgICAzMiA9PiAiUHJvZHVjdGlvbiIsCiAgICAgICAgMzMgPT4gIlJlcGFpciIsCiAgICAgICAgMzQgPT4gIlJldGlyZWQiLAogICAgICAgIDM1ID0+ICJSZXZpZXciLAogICAgICAgIDM2ID0+ICJUZXN0L1FBIiwKICAgIH07Cgo9Y3V0CgpzdWIgQ3VyRGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5EZXBsU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoJVBhcmFtKTsKfQoKPWhlYWQyIEluY2lTdGF0ZUZpbHRlclZhbHVlc0dldCgpCgpnZXQgYSBsaXN0IG9mIGFsbCBpbmNpZGVudCBzdGF0ZXMKCiAgICBteSAkVmFsdWVzID0gJENvbHVtbkZpbHRlck9iamVjdC0+SW5jaVN0YXRlRmlsdGVyVmFsdWVzR2V0KCk7CgogICAgcmV0dXJucwoKICAgICRWYWx1ZXMgPSB7CiAgICAgICAgMSA9PiAiT3BlcmF0aW9uYWwiLAogICAgICAgIDIgPT4gIldhcm5pbmciLAogICAgICAgIDMgPT4gIkluY2lkZW50IgogICAgfTsKCj1jdXQKCnN1YiBJbmNpU3RhdGVGaWx0ZXJWYWx1ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKfQoKPWhlYWQyIEN1ckluY2lTdGF0ZUZpbHRlclZhbHVlc0dldCgpCgpnZXQgYSBsaXN0IG9mIGFsbCBjdXJyZW50IGluY2lkZW50IHN0YXRlcyAtIHdyYXBzIEluY2lTdGF0ZUZpbHRlclZhbHVlc0dldCgpCgogICAgbXkgJFZhbHVlcyA9ICRDb2x1bW5GaWx0ZXJPYmplY3QtPkN1ckluY2lTdGF0ZUZpbHRlclZhbHVlc0dldCgpOwoKICAgIHJldHVybnMKCiAgICAkVmFsdWVzID0gewogICAgICAgIDEgPT4gIk9wZXJhdGlvbmFsIiwKICAgICAgICAyID0+ICJXYXJuaW5nIiwKICAgICAgICAzID0+ICJJbmNpZGVudCIKICAgIH07Cgo9Y3V0CgpzdWIgQ3VySW5jaVN0YXRlRmlsdGVyVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5JbmNpU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoJVBhcmFtKTsKfQoKPWhlYWQyIER5bmFtaWNGaWVsZEZpbHRlclZhbHVlc0dldCgpCgpnZXQgYSBsaXN0IG9mIGEgc3BlY2lmaWMgY29uZmlnIGl0ZW0gZHluYW1pYyBmaWVsZCB2YWx1ZXMgd2l0aGluIHRoZSBnaXZlbiBjb25maWcgaXRlbXMgbGlzdAoKICAgIG15ICRWYWx1ZXMgPSAkQ29sdW1uRmlsdGVyT2JqZWN0LT5EeW5hbWljRmllbGRGaWx0ZXJWYWx1ZXNHZXQoCiAgICAgICAgSVRTTUNvbmZpZ0l0ZW1JRHMgPT4gWzIzLCAxLCA1NiwgNzRdLCAgICAjIGFycmF5IHJlZiBsaXN0IG9mIGNvbmZpZyBpdGVtIElEcwogICAgICAgIFZhbHVlVHlwZSA9PiAnVGV4dCcsICAgICAgICAgICAgICMgVGV4dCB8IEludGVnZXIgfCBEYXRlCiAgICAgICAgRmllbGRJRCAgID0+ICRGaWVsZElELCAgICAgICAgICAgIyBJRCBvZiB0aGUgZHluYW1pYyBmaWVsZAogICAgKTsKCiAgICByZXR1cm5zCgogICAgJFZhbHVlcyA9IHsKICAgICAgICBWYWx1ZUEgPT4gJ1ZhbHVlQScsCiAgICAgICAgVmFsdWVCID0+ICdWYWx1ZUInLAogICAgICAgIFZhbHVlQyA9PiAnVmFsdWVDJwogICAgfTsKCj1jdXQKCnN1YiBEeW5hbWljRmllbGRGaWx0ZXJWYWx1ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KElUU01Db25maWdJdGVtSURzIFZhbHVlVHlwZSBGaWVsZElEKSkgewoKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkSVRTTUNvbmZpZ0l0ZW1JRFN0cmluZyA9ICRTZWxmLT5fSVRTTUNvbmZpZ0l0ZW1JRFN0cmluZ0dldCgKICAgICAgICBJVFNNQ29uZmlnSXRlbUlEcyA9PiAkUGFyYW17SVRTTUNvbmZpZ0l0ZW1JRHN9LAogICAgICAgIENvbHVtbk5hbWUgICAgICAgID0+ICdvYmplY3RfaWQnLAogICAgKTsKCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtJVFNNQ29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0lUU01Db25maWdJdGVtSURzIG11c3QgYmUgYW4gYXJyYXkgcmVmIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFZhbHVlVHlwZSA9ICd2YWx1ZV90ZXh0JzsKICAgIGlmICggJFBhcmFte1ZhbHVlVHlwZX0gJiYgJFBhcmFte1ZhbHVlVHlwZX0gZXEgJ0RhdGVUaW1lJyApIHsKICAgICAgICAkVmFsdWVUeXBlID0gJ3ZhbHVlX2RhdGUnOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17VmFsdWVUeXBlfSAmJiAkUGFyYW17VmFsdWVUeXBlfSBlcSAnSW50ZWdlcicgKSB7CiAgICAgICAgJFZhbHVlVHlwZSA9ICd2YWx1ZV9pbnQnOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+CiAgICAgICAgICAgICJTRUxFQ1QgRElTVElOQ1QoJFZhbHVlVHlwZSkiCiAgICAgICAgICAgIC4gJyBGUk9NIGR5bmFtaWNfZmllbGRfdmFsdWUnCiAgICAgICAgICAgIC4gJyBXSEVSRSBmaWVsZF9pZCA9ID8nCiAgICAgICAgICAgIC4gJElUU01Db25maWdJdGVtSURTdHJpbmcKICAgICAgICAgICAgLiAiIE9SREVSIEJZICRWYWx1ZVR5cGUgREVTQyIsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17RmllbGRJRH0gXSwKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKCiAgICAgICAgIyBjaGVjayBpZiB0aGUgdmFsdWUgaXMgYWxyZWFkeSBzdG9yZWQKICAgICAgICBpZiAoCiAgICAgICAgICAgIGRlZmluZWQgJFJvd1swXQogICAgICAgICAgICAmJiAkUm93WzBdIG5lICcnCiAgICAgICAgICAgICYmICEkRGF0YXsgJFJvd1swXSB9CiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICBpZiAoICRWYWx1ZVR5cGUgZXEgJ0RhdGUnICkgewoKICAgICAgICAgICAgICAgICMgY2xlYW51cCB0aW1lIHN0YW1wcyAoc29tZSBkYXRhYmFzZXMgYXJlIHVzaW5nIGUuIGcuIDIwMDgtMDItMjUgMjI6MDM6MDAuMDAwMDAwCiAgICAgICAgICAgICAgICAjIGFuZCAwMDAwLTAwLTAwIDAwOjAwOjAwIHRpbWUgc3RhbXBzKQogICAgICAgICAgICAgICAgaWYgKCAkUm93WzBdIGVxICcwMDAwLTAwLTAwIDAwOjAwOjAwJyApIHsKICAgICAgICAgICAgICAgICAgICAkUm93WzBdID0gdW5kZWY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkUm93WzBdID1+IHMvXihcZFxkXGRcZC1cZFxkLVxkXGRcc1xkXGQ6XGRcZDpcZFxkKVwuLis/JC8kMS87CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc3RvcmUgdGhlIHJlc3VsdHMKICAgICAgICAgICAgJERhdGF7ICRSb3dbMF0gfSA9ICRSb3dbMF07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJURhdGE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/ConfigItemACL.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUFDTDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgcXcobm9uZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1BQ0wgLSBjb25maWcgaXRlbSBBQ0wgbGliCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBjb25maWcgaXRlbSBBQ0wgZnVuY3Rpb25zLgoKCj1oZWFkMiBDb25maWdJdGVtQWNsKCkKClJlc3RyaWN0cyB0aGUgRGF0YSBwYXJhbWV0ZXIgc2VudCB0byBhIHN1YnNldCBvZiBpdCwgZGVwZW5kaW5nIG9uIGEgZ3JvdXAgb2YgdXNlciBkZWZpZWQgcnVsZXMKY2FsbGVkIEFDTHMuIFRoZSByZWR1Y2VkIHN1YnNldCBjYW4gYmUgYWNjZXNzIGZyb20gQ29uZmlnSXRlbUFDTERhdGEoKSBpZiBSZXR1cm5UeXBlIHBhcmFtZXRlciBpcyBzZXQKdG86IENvbmZpZ0l0ZW0sIG9yIGluIENvbmZpZ0l0ZW1BQ0xBY3Rpb25EYXRhKCksIGlmIFJldHVyblR5cGUgQWN0aW9uIGlzIHVzZWQuCgpFYWNoIEFDTCBjYW4gY29udGFpbiBkaWZmZXJlbnQgcmVzdHJpY3Rpb25zIGZvciBkaWZmZXJlbnQgb2JqZWN0cyB0aGUgUmV0dXJuVHlwZSBwYXJhbWV0ZXIgZGVmaW5lcwp3aGljaCBvYmplY3QgaXMgY29uc2lkZXJlZCBmb3IgdGhpcyByZXN0cmljdGlvbnMsIGluIHRoZSBjYXNlIG9mIHRoZSBDb25maWcgSXRlbSBvYmplY3QgYSBzZWNvbmQKcGFyYW1ldGVyIGNhbGxlZCBSZXR1cm5TdWJ0eXBlIGlzIG5lZWRlZCwgdG8gc3BlY2lmeSB0aGUgY29uZmlnIGl0ZW0gYXR0cmlidXRlIHRvIGJlIHJlc3RyaWN0ZWQsIGxpa2U6CkM8IlRCRCI+LCBldGMuIFdoaWxlIGZvciB0aGUgcmVzdCBvZiB0aGUgb2JqZWN0cyBhICItIiB2YWx1ZSBtdXN0IGJlIHNldC4gVGhlIFJldHVyblR5cGUKYW5kIFJldHVyblN1YlR5cGUgbXVzdCBiZSBzZXQgYWNjb3JkaW5nIHRvIHRoZSBEYXRhIHBhcmFtZXRlciBzZW50LgoKVGhlIHJlc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgZGVmaW5lIHRoZSBtYXRjaGluZyBvcHRpb25zIGZvciB0aGUgQUNMIHJ1bGVzLgoKRXhhbXBsZSB0byByZXN0cmljdCBjb25maWcgaXRlbSBhY3Rpb25zOgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgRGF0YSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVmFsdWVzIHRvIHJlc3RyaWN0CiAgICAgICAgICAgIDEgPT4gQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQsCiAgICAgICAgICAgICMgLi4uCiAgICAgICAgfSwKCiAgICAgICAgQWN0aW9uICAgICAgICA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQnLCAgICMgT3B0aW9uYWwKICAgICAgICBDb25maWdJdGVtSUQgID0+IDEyMywgICAgICAgICAgICAgICAgICAgICAgICAgIyBPcHRpb25hbAogICAgICAgIER5bmFtaWNGaWVsZCAgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZF9OYW1lWCA9PiAxMjMsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZF9OYW1lWiA9PiAnc29tZSB2YWx1ZScsCiAgICAgICAgfSwKCiAgICAgICAgUmV0dXJuVHlwZSAgICAgPT4gJ0FjdGlvbicsICAgICAgICAgICAgICAgICAgICMgVG8gbWF0Y2ggUG9zc2libGUsIFBvc3NpYmxlQWRkIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBQb3NzaWJsZU5vdCBrZXkgaW4gQUNMCiAgICAgICAgUmV0dXJuU3ViVHlwZSAgPT4gJy0nLCAgICAgICAgICAgICAgICAgICAgICAgICMgVG8gbWF0Y2ggUG9zc2libGUsIFBvc3NpYmxlQWRkIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBQb3NzaWJsZU5vdCBzdWIta2V5IGluIEFDTAoKICAgICAgICBVc2VySUQgICAgICAgICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2VySUQgPT4gMSBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcyBmdW5jdGlvbgogICAgKTsKCm9yIHRvIHJlc3RyaWN0IGNvbmZpZyBpdGVtIHN0YXRlczoKCiAgICAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAxID0+ICduZXcnLAogICAgICAgICAgICAyID0+ICdvcGVuJywKICAgICAgICAgICAgIyAuLi4KICAgICAgICB9LAogICAgICAgIFJldHVyblR5cGUgICAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ1N0YXRlJywKICAgICAgICBVc2VySUQgICAgICAgID0+IDEyMywKICAgICk7CgpyZXR1cm5zOgogICAgJFN1Y2Nlc3MgPSAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIGFuIEFDTCBtYXRjaGVzLCBvciBmYWxzZSBvdGhlcndpc2UuCgpJZiBBQ0wgbW9kdWxlcyBhcmUgY29uZmlndXJlZCBpbiB0aGUgQzxJVFNNQ29uZmlnSXRlbTo6QWNsOjpNb2R1bGU+IGNvbmZpZyBrZXksIHRoZXkgYXJlIGludm9rZWQKZHVyaW5nIHRoZSBjYWxsIHRvIEM8Q29uZmlnSXRlbUFjbD4uIFRoZSBjb25maWd1cmF0aW9uIG9mIGEgbW9kdWxlIGxvb2tzIGxpa2UgdGhpczoKCiAgICAgJENvbmZpZ09iamVjdC0+eydJVFNNQ29uZmlnSXRlbTo6QWNsOjpNb2R1bGUnfS0+eydUaGVOYW1lJ30gPSB7CiAgICAgICAgIE1vZHVsZSA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpBY2w6OlRoZUFjbE1vZHVsZScsCiAgICAgICAgIENoZWNrcyA9PiBbJ1RCRCddLAogICAgICAgICBSZXR1cm5UeXBlID0+ICdDb25maWdJdGVtJywKICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiBbJ1RCRCddLAogICAgIH07CgpFYWNoIHRpbWUgdGhlIEM8UmV0dXJuVHlwZT4gYW5kIG9uZSBvZiB0aGUgQzxSZXR1cm5TdWJUeXBlPiBlbnRyaWVzIGlzIGlkZW50aWNhbCB0byB0aGUgc2FtZQphcmd1bWVudHMgcGFzc2VkIHRvIEM8Q29uZmlnSXRlbUFjbD4sIHRoZSBtb2R1bGUgb2YgdGhlIG5hbWUgaW4gQzxNb2R1bGU+IGlzIGxvYWRlZCwgdGhlIEM8bmV3PiBtZXRob2QKaXMgY2FsbGVkIG9uIGl0LCBhbmQgdGhlbiB0aGUgQzxSdW4+IG1ldGhvZCBpcyBjYWxsZWQuCgpUaGUgQzxDaGVja3M+IGFycmF5IHJlZmVyZW5jZSBpbiB0aGUgY29uZmlndXJhdGlvbiBjb250cm9scyB3aGF0IGFyZ3VtZW50cyBhcmUgcGFzc2VkLiB0byB0aGUKQzxSdW4+IG1ldGhvZC4KVmFsaWQga2V5cyBhcmUgQzxGcm9udGVuZD4gYW5kIEM8Q29uZmlnSXRlbT4uCklmIGFueSBvZiB0aG9zZSBhcmUgcHJlc2VudCwgdGhlIEM8Q2hlY2tzPiBhcmd1bWVudCBwYXNzZWQgdG8gQzxSdW4+IGNvbnRhaW5zIGFuIGVudHJ5IHdpdGggdGhlIHNhbWUKbmFtZSwgYW5kIGFzIGEgdmFsdWUgdGhlIGFzc29jaWF0ZWQgZGF0YS4KClRoZSBDPFJ1bj4gbWV0aG9kIGNhbiBhZGQgZW50cmllcyB0byB0aGUgQzxBY2w+IHBhcmFtIGhhc2gsIHdoaWNoIGFyZSB0aGVuIGV2YWx1YXRlZCBhbG9uZyB3aXRoIGFsbApvdGhlciBBQ0wuIEl0IHNob3VsZCBvbmx5IGFkZCBlbnRyaWVzIHdob3NlIGNvbmRpdGlvbmFscyBjYW4gYmUgY2hlY2tlZCB3aXRoIHRoZSBkYXRhIHNwZWNpZmllZCBpbgp0aGUgQzxDaGVja3M+IGNvbmZpZ3VyYXRpb24gZW50cnkuCgpUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBDPFJ1bj4gbWV0aG9kIGlzIGlnbm9yZWQuCgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUFjbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSAmJiAhJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIG9yIEN1c3RvbWVyVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhSZXR1cm5TdWJUeXBlIFJldHVyblR5cGUgRGF0YSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRvIG5vdCBleGVjdXRlIEFDTHMgaWYgVXNlcklEIDEgaXMgdXNlZAogICAgcmV0dXJuIGlmICRQYXJhbXtVc2VySUR9ICYmICRQYXJhbXtVc2VySUR9ID09IDE7CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJEFDTHMgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0NvbmZpZ0l0ZW1BY2wnKTsKICAgIG15ICRBY2xNb2R1bGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6QWNsOjpNb2R1bGUnKTsKCiAgICAjIGRvIG5vdCBleGVjdXRlIEFDTHMgaWYgbmVpdGhlciBDb25maWdJdGVtQWNsIG5vciBJVFNNQ29uZmlnSXRlbTo6QWNsOjpNb2R1bGUgaXMgY29uZmlndXJlZAogICAgaWYgKCAhJEFDTHMgJiYgISRBY2xNb2R1bGVzICkgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGZpbmQgb3V0IHdoaWNoIGRhdGEgd2UgYWN0dWFsbHkgbmVlZAogICAgbXkgJUFwcGxpY2FibGVBY2xNb2R1bGVzOwogICAgbXkgJVJlcXVpcmVkQ2hlY2tzOwogICAgbXkgJENoZWNrQWxsID0gMDsKCiAgICBNT0RVTEVOQU1FOgogICAgZm9yIG15ICRNb2R1bGVOYW1lICggc29ydCBrZXlzICV7ICRBY2xNb2R1bGVzIC8vIHt9IH0gKSB7CiAgICAgICAgbXkgJE1vZHVsZSA9ICRBY2xNb2R1bGVzLT57JE1vZHVsZU5hbWV9OwoKICAgICAgICBpZiAoICRNb2R1bGUtPntSZXR1cm5UeXBlfSAmJiAkTW9kdWxlLT57UmV0dXJuVHlwZX0gbmUgJFBhcmFte1JldHVyblR5cGV9ICkgewogICAgICAgICAgICBuZXh0IE1PRFVMRU5BTUU7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRNb2R1bGUtPntSZXR1cm5TdWJUeXBlfSApIHsKCiAgICAgICAgICAgICMgVE9ETzogdGhpcyBsb29rcyBicm9rZW4uICRNb2R1bGUtPntSZXR1cm5TdWJUeXBlfSBpcyBhIGhhc2hyZWYsIHlldCB0aGUgdmFsdWUgaXMgZGVyZWZlcmVuY2VkIGFzIGFuIGFycmF5CiAgICAgICAgICAgIGlmICggcmVmKCAkTW9kdWxlLT57UmV0dXJuU3ViVHlwZX0gKSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICBuZXh0IE1PRFVMRU5BTUUgaWYgbm9uZSB7ICRQYXJhbXtSZXR1cm5TdWJUeXBlfSBlcSAkXyB9CiAgICAgICAgICAgICAgICAgICAgQHsgJE1vZHVsZS0+e1JldHVyblN1YlR5cGV9IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBhIHNjYWxhciwgd2UgaG9wZSwgYnV0IGl0IGNvdWxkIGFsc28gYmUgYW4gYXJyYXkKICAgICAgICAgICAgICAgICMgVE9ETzogdGhpcyBmaWx0ZXIgbG9va3MgYnJva2VuCiAgICAgICAgICAgICAgICAjICEkTW9kdWxlLT57UmV0dXJuU3ViVHlwZX0gaXMgZWl0aGVyIHF7fSBvciAxLCAob3IgISEwLCBhbmQgISExKQogICAgICAgICAgICAgICAgIyBzbyBpdCBpcyB1bmxpa2VseSB0aGF0IGEgc3RyaW5nIGNvbXBhcmlzb24gd291bGQgZ2l2ZSBhIHRydWUgdmFsdWUKICAgICAgICAgICAgICAgIG5leHQgTU9EVUxFTkFNRSBpZiAoICEkTW9kdWxlLT57UmV0dXJuU3ViVHlwZX0gKSBlcSAkUGFyYW17UmV0dXJuU3ViVHlwZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaGVyZSBvbmx5IG1vZHVsZXMgYXBwbGljYWJsZSB0byB0aGlzIEFDTCBpbnZvY2F0aW9uIHJlbWFpbgogICAgICAgICRBcHBsaWNhYmxlQWNsTW9kdWxlc3skTW9kdWxlTmFtZX0gPSAkTW9kdWxlOwoKICAgICAgICBpZiAoICRNb2R1bGUtPntDaGVja3N9ICYmIHJlZiggJE1vZHVsZS0+e0NoZWNrc30gKSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAkUmVxdWlyZWRDaGVja3N7JF99ID0gMSBmb3IgQHsgJE1vZHVsZS0+e0NoZWNrc30gfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkTW9kdWxlLT57Q2hlY2tzfSApIHsKICAgICAgICAgICAgJFJlcXVpcmVkQ2hlY2tzeyAkTW9kdWxlLT57Q2hlY2tzfSB9ID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRDaGVja0FsbCA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJUFwcGxpY2FibGVBY2xNb2R1bGVzICYmICEkQUNMcyAmJiAhJENoZWNrQWxsOwoKICAgIGZvciBteSAkQUNMICggdmFsdWVzICV7ICRBQ0xzIC8vIHt9IH0gKSB7CiAgICAgICAgZm9yIG15ICRTb3VyY2UgKHF3LyBQcm9wZXJ0aWVzIFByb3BlcnRpZXNEYXRhYmFzZS8pIHsKICAgICAgICAgICAgZm9yIG15ICRDaGVjayAoIHNvcnQga2V5cyAleyAkQUNMLT57JFNvdXJjZX0gfSApIHsKICAgICAgICAgICAgICAgIG15ICRDbGVhbmVkVXAgPSAkQ2hlY2s7CiAgICAgICAgICAgICAgICAkQ2xlYW5lZFVwID1+IHMvKD86SUR8TmFtZXxMb2dpbikkLy87CiAgICAgICAgICAgICAgICAkQ2xlYW5lZFVwID1+IHMvXig/Ok5leHR8TmV3fE9sZCkvLzsKICAgICAgICAgICAgICAgICRSZXF1aXJlZENoZWNrc3skQ2xlYW5lZFVwfSA9IDE7CiAgICAgICAgICAgICAgICBpZiAoICRDaGVjayBlcSAnQ29uZmlnSXRlbScgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCByZWYoICRBQ0wtPntQcm9wZXJ0aWVzfXskQ2hlY2t9ICkgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJElubmVyQ2hlY2sgKCBzb3J0IGtleXMgJXsgJEFDTC0+eyRTb3VyY2V9eyRDaGVja30gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRJbm5lckNoZWNrID1+IHMvKD86SUR8TmFtZXxMb2dpbikkLy87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSW5uZXJDaGVjayA9fiBzL14oPzpOZXh0fE5ld3xPbGQpLy87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUmVxdWlyZWRDaGVja3N7JElubmVyQ2hlY2t9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGdhdGhlciBhbGwgcmVxdWlyZWQgZGF0YSB0byBiZSBjb21wYXJlZCBhZ2FpbnN0IHRoZSBBQ0xzCiAgICBteSAkQ2hlY2tSZXN1bHQgPSAkU2VsZi0+X0dldENoZWNrcygKICAgICAgICAlUGFyYW0sCiAgICAgICAgQ2hlY2tBbGwgICAgICAgPT4gJENoZWNrQWxsLAogICAgICAgIFJlcXVpcmVkQ2hlY2tzID0+IFwlUmVxdWlyZWRDaGVja3MsCiAgICApOwogICAgbXkgJUNoZWNrcyAgICAgICAgID0gJXsgJENoZWNrUmVzdWx0LT57Q2hlY2tzfSAgICAgICAgIHx8IHt9IH07CiAgICBteSAlQ2hlY2tzRGF0YWJhc2UgPSAleyAkQ2hlY2tSZXN1bHQtPntDaGVja3NEYXRhYmFzZX0gfHwge30gfTsKCiAgICAjIG5vdGUgdGhhdCAlQWNscyBpcyBqdXN0IHRoZSBkZXJlZmVyZW5jZWQgJEFDTHMKICAgIG15ICVBY2xzOwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0NvbmZpZ0l0ZW1BY2wnKSApIHsKICAgICAgICAlQWNscyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnQ29uZmlnSXRlbUFjbCcpIH07CiAgICB9CgogICAgIyBjaGVjayBBQ0wgbW9kdWxlCiAgICBNT0RVTEU6CiAgICBmb3IgbXkgJE1vZHVsZU5hbWUgKCBzb3J0IGtleXMgJUFwcGxpY2FibGVBY2xNb2R1bGVzICkgewoKICAgICAgICBteSAkTW9kdWxlID0gJEFwcGxpY2FibGVBY2xNb2R1bGVzeyRNb2R1bGVOYW1lfTsKCiAgICAgICAgbmV4dCBNT0RVTEUgaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoICRNb2R1bGUtPntNb2R1bGV9ICk7CgogICAgICAgIG15ICRHZW5lcmljID0gJE1vZHVsZS0+e01vZHVsZX0tPm5ldygpOwoKICAgICAgICAkR2VuZXJpYy0+UnVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIEFjbCAgICA9PiBcJUFjbHMsCiAgICAgICAgICAgIENoZWNrcyA9PiBcJUNoZWNrcywKICAgICAgICAgICAgQ29uZmlnID0+ICRNb2R1bGUsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB1c2VkIGRhdGEKICAgIG15ICVEYXRhOwogICAgaWYgKCByZWYgJFBhcmFte0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJFBhcmFte0RhdGF9IH07CiAgICB9CgogICAgbXkgJU5ld0RhdGE7CiAgICBteSAkVXNlTmV3TWFzdGVyUGFyYW1zID0gMDsKCiAgICBpZiAoICRQYXJhbXtSZXR1cm5UeXBlfSBlcSAnQWN0aW9uJyApIHsKCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfSApICkgewoKICAgICAgICAgICAgIyB1c2UgRGF0YSBpZiBpcyBhIHN0cmluZyBhbmQgaXQgaXMgbm90ICctJwogICAgICAgICAgICBpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtEYXRhfSApICYmICRQYXJhbXtEYXRhfSBuZSAnLScgKSB7CiAgICAgICAgICAgICAgICAlRGF0YSA9ICggMSA9PiAkUGFyYW17RGF0YX0gKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdGhlcndpc2UgdXNlIHRoZSBwYXJhbSBBY3Rpb24KICAgICAgICAgICAgZWxzaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17QWN0aW9ufSApICkgewogICAgICAgICAgICAgICAgJURhdGEgPSAoIDEgPT4gJFBhcmFte0FjdGlvbn0gKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJU5ld0FjdGlvbkRhdGEgPSAlRGF0YTsKCiAgICAgICAgIyBjYWxjdWxhdGUgZGVmYXVsdCBjb25maWcgaXRlbSBhY3Rpb24gQUNMIGRhdGEKICAgICAgICBteSBAQWN0aW9uc1RvRGVsZXRlOwogICAgICAgIG15ICREZWZhdWx0QWN0aW9uRGF0YSA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW1BQ0w6OkRlZmF1bHQ6OkFjdGlvbicpIHx8IHt9OwoKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREZWZhdWx0QWN0aW9uRGF0YSkgKSB7CgogICAgICAgICAgICBmb3IgbXkgJEluZGV4ICggc29ydCBrZXlzICVOZXdBY3Rpb25EYXRhICkgewoKICAgICAgICAgICAgICAgIG15ICRBY3Rpb24gPSAkTmV3QWN0aW9uRGF0YXskSW5kZXh9OwogICAgICAgICAgICAgICAgaWYgKCAhJERlZmF1bHRBY3Rpb25EYXRhLT57JEluZGV4fSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBBY3Rpb25zVG9EZWxldGUsICRBY3Rpb247CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRTZWxmLT57RGVmYXVsdENvbmZpZ0l0ZW1BY2xBY3Rpb25EYXRhfSA9IFwlTmV3QWN0aW9uRGF0YTsKCiAgICAgICAgZm9yIG15ICRBY3Rpb24gKEBBY3Rpb25zVG9EZWxldGUpIHsKICAgICAgICAgICAgZGVsZXRlICRTZWxmLT57RGVmYXVsdENvbmZpZ0l0ZW1BY2xBY3Rpb25EYXRhfS0+eyRBY3Rpb259OwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBOZXdUbXBEYXRhIGFmdGVyIFBvc3NpYmxlIERhdGEgcmVjYWxjdWxhdGlvbiBvbiBSZXR1cm5UeXBlIEFjdGlvbgogICAgbXkgJU5ld1RtcERhdGEgPSAlRGF0YTsKCiAgICAjIGdldCB0aGUgZGVidWcgcGFyYW1ldGVycwogICAgJFNlbGYtPntBQ0xEZWJ1Z30gICAgICAgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW1BQ0w6OkRlYnVnOjpFbmFibGVkJykgICAgIHx8IDA7CiAgICAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbUFDTDo6RGVidWc6OkxvZ1ByaW9yaXR5JykgfHwgJ2RlYnVnJzsKCiAgICBteSAkQUNMRGVidWdDb25maWdGaWx0ZXJzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbUFDTDo6RGVidWc6OkZpbHRlcicpIHx8IHt9OwogICAgZm9yIG15ICRGaWx0ZXJOYW1lICggc29ydCBrZXlzICV7JEFDTERlYnVnQ29uZmlnRmlsdGVyc30gKSB7CiAgICAgICAgbXkgJUZpbHRlciA9ICV7ICRBQ0xEZWJ1Z0NvbmZpZ0ZpbHRlcnMtPnskRmlsdGVyTmFtZX0gfTsKICAgICAgICBmb3IgbXkgJEZpbHRlckl0ZW0gKCBzb3J0IGtleXMgJUZpbHRlciApIHsKICAgICAgICAgICAgJFNlbGYtPntBQ0xEZWJ1Z0ZpbHRlcnN9LT57JEZpbHRlckl0ZW19ID0gJEZpbHRlcnskRmlsdGVySXRlbX07CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgZGVidWcgZmlsdGVycyBhcHBseSAoY29uZmlnIGl0ZW0pCiAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewoKICAgICAgICBERUJVR0ZJTFRFUjoKICAgICAgICBmb3IgbXkgJERlYnVnRmlsdGVyICggc29ydCBrZXlzICV7ICRTZWxmLT57QUNMRGVidWdGaWx0ZXJzfSB9ICkgewogICAgICAgICAgICBuZXh0IERFQlVHRklMVEVSIGlmICREZWJ1Z0ZpbHRlciBlcSAnQUNMTmFtZSc7CiAgICAgICAgICAgIG5leHQgREVCVUdGSUxURVIgaWYgISRTZWxmLT57QUNMRGVidWdGaWx0ZXJzfS0+eyREZWJ1Z0ZpbHRlcn07CgogICAgICAgICAgICBpZiAoICREZWJ1Z0ZpbHRlciA9fiBtezxPVE9CT19JVFNNQ09ORklHSVRFTV8oW14+XSspPn1tc3ggKSB7CiAgICAgICAgICAgICAgICBteSAkSVRTTUNvbmZpZ0l0ZW1QYXJhbSA9ICQxOwoKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICBkZWZpbmVkICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRJVFNNQ29uZmlnSXRlbVBhcmFtfQogICAgICAgICAgICAgICAgICAgICYmICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRJVFNNQ29uZmlnSXRlbVBhcmFtfQogICAgICAgICAgICAgICAgICAgICYmICRTZWxmLT57QUNMRGVidWdGaWx0ZXJzfS0+eyREZWJ1Z0ZpbHRlcn0gbmUKICAgICAgICAgICAgICAgICAgICAkQ2hlY2tzRGF0YWJhc2V7Q29uZmlnSXRlbX0tPnskSVRTTUNvbmZpZ0l0ZW1QYXJhbX0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntBQ0xEZWJ1Z30gPSAwOwogICAgICAgICAgICAgICAgICAgIGxhc3QgREVCVUdGSUxURVI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyByZW1lbWJlciBsYXN0IEFDTERlYnVnIHN0YXRlIChiZWZvcmUgQUNMcyBsb29wKQogICAgJFNlbGYtPntBQ0xEZWJ1Z1JlY292ZXJ5fSA9ICRTZWxmLT57QUNMRGVidWd9OwoKICAgIEFDTFJVTEVTOgogICAgZm9yIG15ICRBY2wgKCBzb3J0IGtleXMgJUFjbHMgKSB7CgogICAgICAgICMgY2hlY2sgaWYgZGVidWcgZmlsdGVycyBhcHBseSAoQUNMKSAob25seSBpZiBBQ0xEZWJ1ZyBpcyBhY3RpdmUpCiAgICAgICAgaWYgKAogICAgICAgICAgICAkU2VsZi0+e0FDTERlYnVnUmVjb3Zlcnl9CiAgICAgICAgICAgICYmIGRlZmluZWQgJFNlbGYtPntBQ0xEZWJ1Z0ZpbHRlcnN9LT57J0FDTE5hbWUnfQogICAgICAgICAgICAmJiAkU2VsZi0+e0FDTERlYnVnRmlsdGVyc30tPnsnQUNMTmFtZSd9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICMgaWYgbm90IG1hdGNoIGN1cnJlbnQgQUNMIGRpc2FibGUgQUNMRGVidWcKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnRmlsdGVyc30tPnsnQUNMTmFtZSd9IG5lICRBY2wgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0FDTERlYnVnfSA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVlbmFibGUgb3RoZXJ3aXNlICh3ZSBhcmUgc3VyZSBpdCB3YXMgZW5hYmxlZCBiZWZvcmUpCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPntBQ0xEZWJ1Z30gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlU3RlcCA9ICV7ICRBY2xzeyRBY2x9IH07CgogICAgICAgICMgY2hlY2sgZm9yY2UgbWF0Y2gKICAgICAgICBteSAkRm9yY2VNYXRjaDsKICAgICAgICBpZiAoCiAgICAgICAgICAgICFJc0hhc2hSZWZXaXRoRGF0YSggJFN0ZXB7UHJvcGVydGllc30gKQogICAgICAgICAgICAmJiAhSXNIYXNoUmVmV2l0aERhdGEoICRTdGVwe1Byb3BlcnRpZXNEYXRhYmFzZX0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRm9yY2VNYXRjaCA9IDE7CiAgICAgICAgfQoKICAgICAgICBteSAkUHJvcGVydGllc01hdGNoOwogICAgICAgIG15ICRQcm9wZXJ0aWVzTWF0Y2hUcnk7CiAgICAgICAgbXkgJFByb3BlcnRpZXNEYXRhYmFzZU1hdGNoOwogICAgICAgIG15ICRQcm9wZXJ0aWVzRGF0YWJhc2VNYXRjaFRyeTsKICAgICAgICBteSAkVXNlTmV3UGFyYW1zID0gMDsKCiAgICAgICAgZm9yIG15ICRQcm9wZXJ0aWVzSGFzaCAocXcoUHJvcGVydGllcyBQcm9wZXJ0aWVzRGF0YWJhc2UpKSB7CgogICAgICAgICAgICBteSAlVXNlZENoZWNrcyA9ICVDaGVja3M7CiAgICAgICAgICAgIGlmICggJFByb3BlcnRpZXNIYXNoIGVxICdQcm9wZXJ0aWVzRGF0YWJhc2UnICkgewogICAgICAgICAgICAgICAgJVVzZWRDaGVja3MgPSAlQ2hlY2tzRGF0YWJhc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2V0IG1hdGNoIHBhcmFtcwogICAgICAgICAgICBteSAkTWF0Y2ggICAgPSAxOwogICAgICAgICAgICBteSAkTWF0Y2hUcnkgPSAwOwogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkU3RlcHskUHJvcGVydGllc0hhc2h9IH0gKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJERhdGEgKCBzb3J0IGtleXMgJXsgJFN0ZXB7JFByb3BlcnRpZXNIYXNofS0+eyRLZXl9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoUHJvcGVydHkgPSAwOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbSAoIEB7ICRTdGVweyRQcm9wZXJ0aWVzSGFzaH0tPnskS2V5fS0+eyREYXRhfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiAkVXNlZENoZWNrc3skS2V5fS0+eyREYXRhfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoSXRlbSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHN1YnN0ciggJEl0ZW0sIDAsIGxlbmd0aCAnW05vdCcgKSBlcSAnW05vdCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1hdGNoSXRlbSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2hlZEFycmF5RGF0YUl0ZW07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUlJBWURBVEFJVEVNOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRBcnJheURhdGFJdGVtICggQHsgJFVzZWRDaGVja3N7JEtleX0tPnskRGF0YX0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTWF0Y2hlZEFycmF5RGF0YUl0ZW0gPSAkQXJyYXlEYXRhSXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTG9vcE1hdGNoUmVzdWx0ID0gJFNlbGYtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICAgICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkQXJyYXlEYXRhSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlSXRlbSA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJExvb3BNYXRjaFJlc3VsdC0+e1NraXB9ICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNYXRjaEl0ZW0gPSAkTG9vcE1hdGNoUmVzdWx0LT57TWF0Y2h9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IEFSUkFZREFUQUlURU07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRNYXRjaEl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTWF0Y2hQcm9wZXJ0eSA9IDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgJFByb3BlcnRpZXNIYXNoOickS2V5LT4kRGF0YScgTWF0Y2hlZEFSUkFZICgkSXRlbSBlcSAkTWF0Y2hlZEFycmF5RGF0YUl0ZW0pIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRVc2VkQ2hlY2tzeyRLZXl9LT57JERhdGF9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICREYXRhSXRlbSAgICA9ICRVc2VkQ2hlY2tzeyRLZXl9LT57JERhdGF9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoUmVzdWx0ID0gJFNlbGYtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaCAgICAgID0+ICRJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gJERhdGFJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZUl0ZW0gPT4gMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTWF0Y2hQcm9wZXJ0eSA9IDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZGVidWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyAkUHJvcGVydGllc0hhc2g6JyRLZXktPiREYXRhJyBNYXRjaGVkICgkSXRlbSBlcSAkVXNlZENoZWNrc3skS2V5fS0+eyREYXRhfSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoICEkTWF0Y2hQcm9wZXJ0eSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE1hdGNoID0gMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJE1hdGNoVHJ5ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjaGVjayBmb3JjZSBvcHRpb24KICAgICAgICAgICAgaWYgKCRGb3JjZU1hdGNoKSB7CiAgICAgICAgICAgICAgICAkTWF0Y2ggICAgPSAxOwogICAgICAgICAgICAgICAgJE1hdGNoVHJ5ID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkUHJvcGVydGllc0hhc2ggZXEgJ1Byb3BlcnRpZXMnICkgewogICAgICAgICAgICAgICAgJFByb3BlcnRpZXNNYXRjaCAgICA9ICRNYXRjaDsKICAgICAgICAgICAgICAgICRQcm9wZXJ0aWVzTWF0Y2hUcnkgPSAkTWF0Y2hUcnk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2ggICAgPSAkTWF0Y2g7CiAgICAgICAgICAgICAgICAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2hUcnkgPSAkTWF0Y2hUcnk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgaWYgcHJvcGVydGllcyBpcyBtaXNzaW5nCiAgICAgICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkU3RlcHtQcm9wZXJ0aWVzfSApICkgewogICAgICAgICAgICAgICAgJFByb3BlcnRpZXNNYXRjaCAgICA9ICRQcm9wZXJ0aWVzRGF0YWJhc2VNYXRjaDsKICAgICAgICAgICAgICAgICRQcm9wZXJ0aWVzTWF0Y2hUcnkgPSAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2hUcnk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgaWYgcHJvcGVydGllcyBkYXRhYmFzZSBpcyBtaXNzaW5nCiAgICAgICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkU3RlcHtQcm9wZXJ0aWVzRGF0YWJhc2V9ICkgKSB7CiAgICAgICAgICAgICAgICAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2ggICAgPSAkUHJvcGVydGllc01hdGNoOwogICAgICAgICAgICAgICAgJFByb3BlcnRpZXNEYXRhYmFzZU1hdGNoVHJ5ID0gJFByb3BlcnRpZXNNYXRjaFRyeTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyB0aGUgZm9sbG93aW5nIGxvZ2ljIHNob3VsZCBiZSBhcHBsaWVkIHRvIGNhbGN1bGF0ZSBpZiBhbiBBQ0wgbWF0Y2hlczoKICAgICAgICAjIGlmIGJvdGggUHJvcGVydGllcyBhbmQgUHJvcGVydGllc0RhdGFiYXNlIG1hdGNoID0+IG1hdGNoCiAgICAgICAgIyBpZiBQcm9wZXJ0aWVzIG1hdGNoZXMsIGFuZCBQcm9wZXJ0aWVzRGF0YWJhc2UgZG9lcyBub3QgbWF0Y2ggPT4gbm8gbWF0Y2gKICAgICAgICAjIGlmIFByb3BlcnRpZXNEYXRhYmFzZSBtYXRjaGVzLCBidXQgUHJvcGVydGllcyBkb2VzIG5vdCBtYXRjaCA9PiBubyBtYXRjaAogICAgICAgICMgaWYgUHJvcGVydGllc0RhdGFiYXNlIG1hdGNoZXMsIGFuZCBQcm9wZXJ0aWVzIGlzIG1pc3NpbmcgPT4gbWF0Y2gKICAgICAgICAjIGlmIFByb3BlcnRpZXMgbWF0Y2hlcywgYW5kIFByb3BlcnRpZXNEYXRhYmFzZSBpcyBtaXNzaW5nID0+IG1hdGNoLgogICAgICAgIG15ICRNYXRjaDsKICAgICAgICBpZiAoICRQcm9wZXJ0aWVzTWF0Y2ggJiYgJFByb3BlcnRpZXNEYXRhYmFzZU1hdGNoICkgewogICAgICAgICAgICAkTWF0Y2ggPSAxOwogICAgICAgIH0KCiAgICAgICAgbXkgJE1hdGNoVHJ5OwogICAgICAgIGlmICggJFByb3BlcnRpZXNNYXRjaFRyeSAmJiAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2hUcnkgKSB7CiAgICAgICAgICAgICRNYXRjaFRyeSA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGRlYnVnIGxvZwogICAgICAgIGlmICggJE1hdGNoICYmICRNYXRjaFRyeSApIHsKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIE1hdGNoZWQgZm9yIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlU3BlY2lhbFJldHVyblR5cGVzID0gKAogICAgICAgICAgICBBY3Rpb24gICAgICAgICA9PiAxLAogICAgICAgICAgICBQcm9jZXNzICAgICAgICA9PiAxLAogICAgICAgICAgICBBY3Rpdml0eURpYWxvZyA9PiAxLAogICAgICAgICAgICBGb3JtICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBGb3JtU3RkICAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggJFNwZWNpYWxSZXR1cm5UeXBlc3sgJFBhcmFte1JldHVyblR5cGV9IH0gKSB7CgogICAgICAgICAgICAjIGJ1aWxkIG5ldyBTcGVjaWFsIFJldHVyblR5cGUgZGF0YSBoYXNoIChQcm9jZXNzTWFuYWdlbWVudCkKICAgICAgICAgICAgIyBmb3IgU3BlY2lhbCBSZXR1cm5UeXBlIFN0ZXB7UG9zc2libGV9CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICggJUNoZWNrcyB8fCAlQ2hlY2tzRGF0YWJhc2UgKQogICAgICAgICAgICAgICAgJiYgJE1hdGNoCiAgICAgICAgICAgICAgICAmJiAkTWF0Y2hUcnkKICAgICAgICAgICAgICAgICYmICRTdGVwe1Bvc3NpYmxlfS0+eyAkUGFyYW17UmV0dXJuVHlwZX0gfQogICAgICAgICAgICAgICAgJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkU3RlcHtQb3NzaWJsZX0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkVXNlTmV3UGFyYW1zID0gMTsKCiAgICAgICAgICAgICAgICAjIHJlc2V0IHJldHVybiBkYXRhIGFzIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGgganVzdCB0aGUgUG9zc2libGUgSXRlbXMgZXhjbHVkZWQgdGhlCiAgICAgICAgICAgICAgICAjICAgIG9uZXMgdGhhdCBhcmUgbm90IGluIHRoZSBwb3NzaWJsZSBzZWN0aW9uLCB0aGlzIGlzIHRoZSBzYW1lIGFzIHJlbW92ZSBhbGwKICAgICAgICAgICAgICAgICMgICAgbWlzc2luZyBpdGVtcyBmcm9tIHRoZSBvcmlnaW5hbCBkYXRhCiAgICAgICAgICAgICAgICAlTmV3VG1wRGF0YSA9ICgpOwoKICAgICAgICAgICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFVzZWQgd2l0aCBQb3NzaWJsZTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUmVzZXQgcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nJyIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHBvc3NpYmxlIGxpc3QKICAgICAgICAgICAgICAgIGZvciBteSAkSUQgKCBzb3J0IGtleXMgJURhdGEgKSB7CgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkTmV3ICggQHsgJFN0ZXB7UG9zc2libGV9LT57ICRQYXJhbXtSZXR1cm5UeXBlfSB9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRNYXRjaFJlc3VsdCA9ICRTZWxmLT5fQ29tcGFyZU1hdGNoV2l0aERhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaCAgICAgID0+ICROZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+ICREYXRheyRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVJdGVtID0+IDEKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkTWF0Y2hSZXN1bHQtPntNYXRjaH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTmV3VG1wRGF0YXskSUR9ID0gJERhdGF7JElEfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGUgcGFyYW0gJyREYXRheyRJRH0nIGFkZGVkIHRvIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGUgcGFyYW0gJyREYXRheyRJRH0nIHNraXBwZWQgZnJvbSByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZm9yIFNwZWNpYWwgUmV0dXJuVHlwZSBTdGVwe1Bvc3NpYmxlQWRkfQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoICVDaGVja3MgfHwgJUNoZWNrc0RhdGFiYXNlICkKICAgICAgICAgICAgICAgICYmICRNYXRjaAogICAgICAgICAgICAgICAgJiYgJE1hdGNoVHJ5CiAgICAgICAgICAgICAgICAmJiAkU3RlcHtQb3NzaWJsZUFkZH0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0KICAgICAgICAgICAgICAgICYmIElzQXJyYXlSZWZXaXRoRGF0YSggJFN0ZXB7UG9zc2libGVBZGR9LT57ICRQYXJhbXtSZXR1cm5UeXBlfSB9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICRVc2VOZXdQYXJhbXMgPSAxOwoKICAgICAgICAgICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFVzZWQgd2l0aCBQb3NzaWJsZUFkZDonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBwb3NzaWJsZSBhZGQgbGlzdAogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIHNvcnQga2V5cyAlRGF0YSApIHsKCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICROZXcgKCBAeyAkU3RlcHtQb3NzaWJsZUFkZH0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoUmVzdWx0ID0gJFNlbGYtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoICAgICAgPT4gJE5ldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gJERhdGF7JElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZUl0ZW0gPT4gMQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdUbXBEYXRheyRJRH0gPSAkRGF0YXskSUR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZUFkZCBwYXJhbSAnJERhdGF7JElEfScgYWRkZWQgdG8gcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZUFkZCBwYXJhbSAnJERhdGF7JElEfScgc2tpcHBlZCBmcm9tIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBmb3IgU3BlY2lhbCBTdGVwe1Bvc3NpYmxlTm90fQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoICVDaGVja3MgfHwgJUNoZWNrc0RhdGFiYXNlICkKICAgICAgICAgICAgICAgICYmICRNYXRjaAogICAgICAgICAgICAgICAgJiYgJE1hdGNoVHJ5CiAgICAgICAgICAgICAgICAmJiAkU3RlcHtQb3NzaWJsZU5vdH0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0KICAgICAgICAgICAgICAgICYmIElzQXJyYXlSZWZXaXRoRGF0YSggJFN0ZXB7UG9zc2libGVOb3R9LT57ICRQYXJhbXtSZXR1cm5UeXBlfSB9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICRVc2VOZXdQYXJhbXMgPSAxOwoKICAgICAgICAgICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFVzZWQgd2l0aCBQb3NzaWJsZU5vdDonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBub3QgcG9zc2libGUgbGlzdAogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIHNvcnQga2V5cyAlRGF0YSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2ggPSAxOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkTmV3ICggQHsgJFN0ZXB7UG9zc2libGVOb3R9LT57ICRQYXJhbXtSZXR1cm5UeXBlfSB9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRMb29wTWF0Y2hSZXN1bHQgPSAkU2VsZi0+X0NvbXBhcmVNYXRjaFdpdGhEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICAgICA9PiAkTmV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkRGF0YXskSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlSXRlbSA9PiAxCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJExvb3BNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNYXRjaCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJE1hdGNoICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGVOb3QgcGFyYW0gJyREYXRheyRJRH0nIHJlbW92ZWQgZnJvbSByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICROZXdUbXBEYXRheyRJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJE5ld1RtcERhdGF7JElEfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFBvc3NpYmxlTm90IHBhcmFtICckRGF0YXskSUR9JyBsZWF2ZWQgZm9yIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBlbHNpZiAoICRQYXJhbXtSZXR1cm5UeXBlfSBlcSAnQ29uZmlnSXRlbScgKSB7CgogICAgICAgICAgICAjIGJ1aWxkIG5ldyBjb25maWcgaXRlbSBkYXRhIGhhc2gKICAgICAgICAgICAgIyBTdGVwIENvbmZpZ0l0ZW0gUG9zc2libGUgKFJlc2V0cyBXaGl0ZSBsaXN0KQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoICVDaGVja3MgfHwgJUNoZWNrc0RhdGFiYXNlICkKICAgICAgICAgICAgICAgICYmICRNYXRjaAogICAgICAgICAgICAgICAgJiYgJE1hdGNoVHJ5CiAgICAgICAgICAgICAgICAmJiAkU3RlcHtQb3NzaWJsZX0tPntDb25maWdJdGVtfS0+eyAkUGFyYW17UmV0dXJuU3ViVHlwZX0gfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkVXNlTmV3UGFyYW1zID0gMTsKCiAgICAgICAgICAgICAgICAjIHJlc2V0IHJldHVybiBkYXRhIGFzIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGgganVzdCB0aGUgUG9zc2libGUgSXRlbXMgZXhjbHVkZWQgdGhlIG9uZXMKICAgICAgICAgICAgICAgICMgdGhhdCBhcmUgbm90IGluIHRoZSBwb3NzaWJsZSBzZWN0aW9uLCB0aGlzIGlzIHRoZSBzYW1lIGFzIHJlbW92ZSBhbGwgbWlzc2luZyBpdGVtcyBmcm9tCiAgICAgICAgICAgICAgICAjIHRoZSBvcmlnaW5hbCBkYXRhCiAgICAgICAgICAgICAgICAlTmV3VG1wRGF0YSA9ICgpOwoKICAgICAgICAgICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFVzZWQgd2l0aCBQb3NzaWJsZTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUmVzZXQgcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nJyIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHBvc3NpYmxlIGxpc3QKICAgICAgICAgICAgICAgIGZvciBteSAkSUQgKCBzb3J0IGtleXMgJURhdGEgKSB7CgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkTmV3ICggQHsgJFN0ZXB7UG9zc2libGV9LT57Q29uZmlnSXRlbX0tPnsgJFBhcmFte1JldHVyblN1YlR5cGV9IH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoUmVzdWx0ID0gJFNlbGYtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoICAgICAgPT4gJE5ldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gJERhdGF7JElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZUl0ZW0gPT4gMQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdUbXBEYXRheyRJRH0gPSAkRGF0YXskSUR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZSBwYXJhbSAnJERhdGF7JElEfScgYWRkZWQgdG8gcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZSBwYXJhbSAnJERhdGF7JElEfScgc2tpcHBlZCBmcm9tIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBTdGVwIENvbmZpZ0l0ZW0gUG9zc2libGVBZGQgKEFkZCBuZXcgb3B0aW9ucyB0byB0aGUgd2hpdGUgbGlzdCkKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgKCAlQ2hlY2tzIHx8ICVDaGVja3NEYXRhYmFzZSApCiAgICAgICAgICAgICAgICAmJiAkTWF0Y2gKICAgICAgICAgICAgICAgICYmICRNYXRjaFRyeQogICAgICAgICAgICAgICAgJiYgJFN0ZXB7UG9zc2libGVBZGR9LT57Q29uZmlnSXRlbX0tPnsgJFBhcmFte1JldHVyblN1YlR5cGV9IH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJFVzZU5ld1BhcmFtcyA9IDE7CgogICAgICAgICAgICAgICAgIyBkZWJ1ZyBsb2cKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgVXNlZCB3aXRoIFBvc3NpYmxlQWRkOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHBvc3NpYmxlIGFkZCBsaXN0CiAgICAgICAgICAgICAgICBmb3IgbXkgJElEICggc29ydCBrZXlzICVEYXRhICkgewoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJE5ldyAoIEB7ICRTdGVwe1Bvc3NpYmxlQWRkfS0+e0NvbmZpZ0l0ZW19LT57ICRQYXJhbXtSZXR1cm5TdWJUeXBlfSB9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRNYXRjaFJlc3VsdCA9ICRTZWxmLT5fQ29tcGFyZU1hdGNoV2l0aERhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaCAgICAgID0+ICROZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+ICREYXRheyRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVJdGVtID0+IDEKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkTWF0Y2hSZXN1bHQtPntNYXRjaH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTmV3VG1wRGF0YXskSUR9ID0gJERhdGF7JElEfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGVBZGQgcGFyYW0gJyREYXRheyRJRH0nIGFkZGVkIHRvIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGVBZGQgcGFyYW0gJyREYXRheyRJRH0nIHNraXBwZWQgZnJvbSByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgU3RlcCBDb25maWdJdGVtIFBvc3NpYmxlTm90IChyZW1vdmVzIG9wdGlvbnMgZnJvbSB3aGl0ZSBsaXN0KQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoICVDaGVja3MgfHwgJUNoZWNrc0RhdGFiYXNlICkKICAgICAgICAgICAgICAgICYmICRNYXRjaAogICAgICAgICAgICAgICAgJiYgJE1hdGNoVHJ5CiAgICAgICAgICAgICAgICAmJiAkU3RlcHtQb3NzaWJsZU5vdH0tPntDb25maWdJdGVtfS0+eyAkUGFyYW17UmV0dXJuU3ViVHlwZX0gfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkVXNlTmV3UGFyYW1zID0gMTsKCiAgICAgICAgICAgICAgICAjIGRlYnVnIGxvZwogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBVc2VkIHdpdGggUG9zc2libGVOb3Q6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgbm90IHBvc3NpYmxlIGxpc3QKICAgICAgICAgICAgICAgIGZvciBteSAkSUQgKCBzb3J0IGtleXMgJURhdGEgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoID0gMTsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJE5ldyAoIEB7ICRTdGVwe1Bvc3NpYmxlTm90fS0+e0NvbmZpZ0l0ZW19LT57ICRQYXJhbXtSZXR1cm5TdWJUeXBlfSB9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRMb29wTWF0Y2hSZXN1bHQgPSAkU2VsZi0+X0NvbXBhcmVNYXRjaFdpdGhEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICAgICA9PiAkTmV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkRGF0YXskSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlSXRlbSA9PiAxCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJExvb3BNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNYXRjaCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJE1hdGNoICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGVOb3QgcGFyYW0gJyREYXRheyRJRH0nIHJlbW92ZWQgZnJvbSByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICROZXdUbXBEYXRheyRJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJE5ld1RtcERhdGF7JElEfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFBvc3NpYmxlTm90IHBhcmFtICckRGF0YXskSUR9JyBsZWF2ZWQgZm9yIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHJlbWVtYmVyIHRvIG5ldyBwYXJhbXMgaWYgZ2l2ZW4KICAgICAgICBpZiAoJFVzZU5ld1BhcmFtcykgewogICAgICAgICAgICAlTmV3RGF0YSAgICAgICAgICAgID0gJU5ld1RtcERhdGE7CiAgICAgICAgICAgICRVc2VOZXdNYXN0ZXJQYXJhbXMgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyByZXR1cm4gbmV3IHBhcmFtcyBpZiBzdG9wIGFmdGVyIHRoaXMgc3RlcAogICAgICAgIGlmICggJFVzZU5ld1BhcmFtcyAmJiAkU3RlcHtTdG9wQWZ0ZXJNYXRjaH0gKSB7CiAgICAgICAgICAgICRTZWxmLT57Q29uZmlnSXRlbUFjbERhdGF9ID0gXCVOZXdEYXRhOwoKICAgICAgICAgICAgIyBpZiB3ZSBzdG9wIGFmdGVyIHRoZSBmaXJzdCBtYXRjaAogICAgICAgICAgICAjIGV4aXQgdGhlIEFDTFJVTEVTIGxvb3AKICAgICAgICAgICAgbGFzdCBBQ0xSVUxFUzsKICAgICAgICB9CiAgICB9CgogICAgIyByZXR1cm4gaWYgbm8gbmV3IHBhcmFtIGV4aXN0cwogICAgcmV0dXJuIGlmICEkVXNlTmV3TWFzdGVyUGFyYW1zOwoKICAgICRTZWxmLT57Q29uZmlnSXRlbUFjbERhdGF9ID0gXCVOZXdEYXRhOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUFjbERhdGEoKQoKcmV0dXJuIHRoZSBjdXJyZW50IEFDTCBkYXRhIGhhc2ggYWZ0ZXIgQ29uZmlnSXRlbUFjbCgpCgogICAgbXkgJUFjbCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsRGF0YSgpOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BY2xEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICV7ICRTZWxmLT57Q29uZmlnSXRlbUFjbERhdGF9IHx8IHt9IH07Cn0KCj1oZWFkMiBDb25maWdJdGVtQWNsQWN0aW9uRGF0YSgpCgpyZXR1cm4gdGhlIGN1cnJlbnQgQUNMIGFjdGlvbiBkYXRhIGhhc2ggYWZ0ZXIgQ29uZmlnSXRlbUFjbCgpCgogICAgbXkgJUFjbEFjdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsQWN0aW9uRGF0YSgpOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BY2xBY3Rpb25EYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ0l0ZW1BY2xEYXRhfSApIHsKICAgICAgICByZXR1cm4gJXsgJFNlbGYtPntDb25maWdJdGVtQWNsRGF0YX0gfTsKICAgIH0KICAgIHJldHVybiAleyAkU2VsZi0+e0RlZmF1bHRDb25maWdJdGVtQWN0aW9uRGF0YX0gfHwge30gfTsKfQoKPWJlZ2luIEludGVybmFsOgoKPWN1dAoKPWhlYWQyIF9HZXRDaGVja3MoKQoKY3JlYXRlcyB0d28gY2hlY2sgaGFzaGVzIChvbmUgZm9yIGN1cnJlbnQgZGF0YSB1cGRhdGFibGUgdmlhIEFKQVggcmVmcmVzaGVzIGFuZCBhbm90aGVyIGZvcgpzdGF0aWMgY29uZmlnIGl0ZW0gZGF0YSBzdG9yZWQgaW4gdGhlIERCKSB3aXRoIHRoZSByZXF1aXJlZCBkYXRhIHRvIHVzZSBhcyBhIGJhc2lzIHRvIG1hdGNoIHRoZSBBQ0xzCgogICAgbXkgJENoZWNrUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPl9HZXRDaGVja3MoCiAgICAgICAgQ2hlY2tBbGwgPT4gJzEnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3B0aW9uYWwKICAgICAgICBSZXF1aXJlZENoZWNrcyA9PiAkUmVxdWlyZWRDaGVja0hhc2hSZWYsICAgICAgIyBPcHRpb25hbCBhIGhhc2ggcmVmZXJlbmNlIHdpdGggdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgYXR0cmlidXRlcyB0byBnYXRoZXI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgZS4gZy4gVXNlciA9PiAxLCB3aWxsIGZldGNoIGFsbCB1c2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgaW5mb3JtYXRpb24gZnJvbSB0aGUgZGF0YWJhc2UsIHRoaXMgZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgIHdpbGwgYmUgdHJpZWQgdG8gbWF0Y2ggd2l0aCBjdXJyZW50IEFDTHMKICAgICAgICBBY3Rpb24gICAgICAgID0+ICdBZ2VudElUU01Db25maWdJdGVtWm9vbScsICAgICAgICAgICAjIE9wdGlvbmFsCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsCiAgICAgICAgRHluYW1pY0ZpZWxkICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3B0aW9uYWwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVYID0+IDEyMywKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVaID0+ICdzb21lIHZhbHVlJywKICAgICAgICB9LAoKICAgICAgICBSZXNwb25zaWJsZUlEICAgID0+IDEyMywgICAgICAgICAgICAgICAgICAgICAgIyBPcHRpb25hbAogICAgICAgIE5ld1Jlc3BvbnNpYmxlSUQgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsLCBSZXNwb25zaWJsZUlEIG9yIE5ld1Jlc3BvbnNpYmxlSUQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGNhbiBiZSB1c2VkIGFuZCB0aGV5IGJvdGggcmVmZXJzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgIFJlc3BvbnNpYmxlSUQKICAgICAgICBSZXNwb25zaWJsZSAgICAgID0+ICdzb21lIHVzZXIgbG9naW4nICAgICAgICAgIyBPcHRpb25hbAoKICAgICAgICBVc2VySUQgICAgICAgICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2VySUQgPT4gMSBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcyBmdW5jdGlvbgogICAgKTsKCnJldHVybnM6CiAgICAkQ2hlY2tzUmVzdWx0ID0gewogICAgICAgIENoZWNrcyA9PiB7CiAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICMgLi4uCiAgICAgICAgfSwKICAgICAgICBDaGVja3NEYXRhYmFzZSA9PgogICAgICAgICAgICAjIC4uLgogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICAgICAgICAgICAgICAjIC4uLgogICAgICAgICAgICB9LAogICAgICAgICAgICAjIC4uLgogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIF9HZXRDaGVja3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ2hlY2tBbGwgICAgICAgPSAkUGFyYW17Q2hlY2tBbGx9OwogICAgbXkgJVJlcXVpcmVkQ2hlY2tzID0gJXsgJFBhcmFte1JlcXVpcmVkQ2hlY2tzfSB9OwoKICAgICMgZ2V0IHVzZWQgaW50ZXJmYWNlIGZvciBwcm9jZXNzIG1hbmFnZW1lbnQgY2hlY2tzCiAgICBteSAkSW50ZXJmYWNlID0gJ0FnZW50SW50ZXJmYWNlJzsKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRJbnRlcmZhY2UgPSAnQ3VzdG9tZXJJbnRlcmZhY2UnOwogICAgfQoKICAgIG15ICVDaGVja3M7CiAgICBteSAlQ2hlY2tzRGF0YWJhc2U7CgogICAgaWYgKCAkUGFyYW17QWN0aW9ufSApIHsKICAgICAgICAkQ2hlY2tze0Zyb250ZW5kfSA9IHsKICAgICAgICAgICAgQWN0aW9uID0+ICRQYXJhbXtBY3Rpb259LAogICAgICAgIH07CiAgICAgICAgJENoZWNrc0RhdGFiYXNle0Zyb250ZW5kfSA9IHsKICAgICAgICAgICAgQWN0aW9uID0+ICRQYXJhbXtBY3Rpb259LAogICAgICAgIH07CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyB1c2UgY29uZmlnIGl0ZW0gZGF0YSBpZiBjb25maWcgaXRlbSBpZCBpcyBnaXZlbgogICAgIyBkbyB0aGF0IGFsd2F5cywgZXZlbiBpZiAkUmVxdWlyZWRDaGVja3N7Q29uZmlnSXRlbX0gaXMgbm90IHRoYXQKICAgICMgKGJlY2F1c2UgdG9vIG11Y2ggc3R1ZmYgZGVwZW5kcyBvbiBpdCkKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwogICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX0gPSAkQ29uZmlnSXRlbTsKCiAgICAgICAgIyBrZWVwIGRhdGFiYXNlIGNvbmZpZyBpdGVtIGRhdGEgc2VwYXJhdGVkIHNpbmNlIHRoZSByZWZlcmVuY2UgaXMgYWZmZWN0ZWQgYmVsb3cKICAgICAgICAkQ2hlY2tzRGF0YWJhc2V7Q29uZmlnSXRlbX0gPSBcJXskQ29uZmlnSXRlbX07CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBtYWtlIGEgcmVhc29uYWJsZSBhdHRlbXB0IHRvIGZpbGwgQ2xhc3MgYmFzZWQgb24gQ2xhc3NJRAogICAgICAgIGlmICggJFBhcmFte0NsYXNzfSAmJiAkUGFyYW17Q2xhc3NJRH0gKSB7CiAgICAgICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX0gPSB7CiAgICAgICAgICAgICAgICBDbGFzcyAgID0+ICRQYXJhbXtDbGFzc30sCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkUGFyYW17Q2xhc3NJRH0gKSB7CiAgICAgICAgICAgIG15ICRDbGFzc0RhdGEgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19ID0gewogICAgICAgICAgICAgICAgQ2xhc3MgICA9PiAkQ2xhc3NEYXRhLT57TmFtZX0sCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBhZGRpdGlvbmFsIGRhdGEgZm9yIHN0YW5kYXJkIGF0dHJpYnV0ZXMgbmVlZHMgdG8gYmUgZmV0Y2hlZCBhbmQgaWYsIGRvIHNvCiAgICBpZiAoICRQYXJhbXtEZXBsU3RhdGVJRH0gKSB7CiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGEgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17RGVwbFN0YXRlSUR9LAogICAgICAgICk7CiAgICAgICAgJENoZWNrc3tDb25maWdJdGVtfXtEZXBsU3RhdGV9ICAgPSAkRGVwbFN0YXRlRGF0YS0+e05hbWV9OwogICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX17RGVwbFN0YXRlSUR9ID0gJFBhcmFte0RlcGxTdGF0ZUlEfTsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtJbmNpU3RhdGVJRH0gKSB7CiAgICAgICAgbXkgJEluY2lTdGF0ZURhdGEgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17SW5jaVN0YXRlSUR9LAogICAgICAgICk7CiAgICAgICAgJENoZWNrc3tDb25maWdJdGVtfXtJbmNpU3RhdGV9ICAgPSAkSW5jaVN0YXRlRGF0YS0+e05hbWV9OwogICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX17SW5jaVN0YXRlSUR9ID0gJFBhcmFte0luY2lTdGF0ZUlEfTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBkeW5hbWljIGZpZWxkcwogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0R5bmFtaWNGaWVsZH0gKSApIHsKICAgICAgICAkQ2hlY2tze0R5bmFtaWNGaWVsZH0gPSAkUGFyYW17RHluYW1pY0ZpZWxkfTsKCiAgICAgICAgIyB1cGRhdGUgb3IgYWRkIGR5bmFtaWMgZmllbGRzIGluZm9ybWF0aW9uIHRvIHRoZSBjb25maWcgaXRlbSBjaGVjawogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoIHNvcnQga2V5cyAleyAkUGFyYW17RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57JER5bmFtaWNGaWVsZE5hbWV9ID0gJFBhcmFte0R5bmFtaWNGaWVsZH0tPnskRHluYW1pY0ZpZWxkTmFtZX07CiAgICAgICAgfQogICAgfQoKICAgICMgYWx3YXlzIGdldCBpbmZvIGZyb20gY29uZmlnIGl0ZW0gdG9vIGFuZCBzZXQgaXQgdG8gdGhlIER5bmFtaWMgRmllbGQgY2hlY2sgaGFzaCBpZiB0aGUgaW5mbyBpcwogICAgIyBkaWZmZXJlbnQuIHRoaXMgY2FuIGJlIGRvbmUgYmVjYXVzZSBpbiB0aGUgcHJldmlvdXMgc3RlcCBjb25maWcgaXRlbSBpbmZvIHdhcyB1cGRhdGVkLiBidXQgbWF5YmUKICAgICMgY29uZmlnIGl0ZW0gaGFzIG1vcmUgaW5mb3JtYXRpb24gc3RvcmVkIHRoYW4gaW4gdGhlIER5bmFtaWNGaWVsZCBwYXJhbWV0ZXIuCiAgICBJVFNNQ09ORklHSVRFTUFUVFJJQlVURToKICAgIGZvciBteSAkQ29uZmlnSXRlbUF0dHJpYnV0ZSAoIHNvcnQga2V5cyAleyAkQ2hlY2tze0NvbmZpZ0l0ZW19IC8vIHt9IH0gKSB7CiAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURSBpZiAhJENvbmZpZ0l0ZW1BdHRyaWJ1dGU7CgogICAgICAgICMgY2hlY2sgaWYgaXMgYSBkeW5hbWljIGZpZWxkIHdpdGggZGF0YQogICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEUgaWYgJENvbmZpZ0l0ZW1BdHRyaWJ1dGUgIX4gbXsgXEEgRHluYW1pY0ZpZWxkXyB9c214OwogICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEUgaWYgIWRlZmluZWQgJENoZWNrc3tDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfTsKICAgICAgICBuZXh0IElUU01DT05GSUdJVEVNQVRUUklCVVRFIGlmICFsZW5ndGggJENoZWNrc3tDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfTsKCiAgICAgICAgaWYgKAogICAgICAgICAgICByZWYgJENoZWNrc3tDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfSBlcSAnQVJSQVknCiAgICAgICAgICAgICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRDaGVja3N7Q29uZmlnSXRlbX0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX0gKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBuZXh0IElUU01DT05GSUdJVEVNQVRUUklCVVRFOwogICAgICAgIH0KCiAgICAgICAgIyBjb21wYXJlIGlmIGRhdGEgaXMgZGlmZmVyZW50IGFuZCBza2lwIG9uIHNhbWUgZGF0YQogICAgICAgIGlmICgKICAgICAgICAgICAgJENoZWNrc3tEeW5hbWljRmllbGR9LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9CiAgICAgICAgICAgICYmICFEYXRhSXNEaWZmZXJlbnQoCiAgICAgICAgICAgICAgICBEYXRhMSA9PiAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9LAogICAgICAgICAgICAgICAgRGF0YTIgPT4gJENoZWNrc3tEeW5hbWljRmllbGR9LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9LAogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEU7CiAgICAgICAgfQoKICAgICAgICAkQ2hlY2tze0R5bmFtaWNGaWVsZH0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX0gPSAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9OwogICAgfQoKICAgICMgYWxzbyBjb3B5IHRoZSBkYXRhYmFzZSBpbmZvcm1hdGlvbiB0byB0aGUgYXBwcm9wcmlhdGUgaGFzaAogICAgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEU6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1BdHRyaWJ1dGUgKCBzb3J0IGtleXMgJXsgJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19IH0gKSB7CiAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURSBpZiAhJENvbmZpZ0l0ZW1BdHRyaWJ1dGU7CgogICAgICAgICMgY2hlY2sgaWYgaXMgYSBkeW5hbWljIGZpZWxkIHdpdGggZGF0YQogICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEUgaWYgJENvbmZpZ0l0ZW1BdHRyaWJ1dGUgIX4gbXsgXEEgRHluYW1pY0ZpZWxkXyB9c214OwogICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEUgaWYgIWRlZmluZWQgJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9OwogICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEUgaWYgIWxlbmd0aCAkQ2hlY2tzRGF0YWJhc2V7Q29uZmlnSXRlbX0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX07CgogICAgICAgIGlmICgKICAgICAgICAgICAgcmVmICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfSBlcSAnQVJSQVknCiAgICAgICAgICAgICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfSApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEU7CiAgICAgICAgfQoKICAgICAgICAkQ2hlY2tzRGF0YWJhc2V7RHluYW1pY0ZpZWxkfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfSA9ICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfTsKICAgIH0KCiAgICAjIHVzZSB1c2VyIGRhdGEKICAgIGlmICggKCAkQ2hlY2tBbGwgfHwgJFJlcXVpcmVkQ2hlY2tze1VzZXJ9ICkgJiYgJFBhcmFte1VzZXJJRH0gKSB7CgogICAgICAgIG15ICVVc2VyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBncm91cCBvYmplY3QKICAgICAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAgICAgZm9yIG15ICRUeXBlICggQHsgJENvbmZpZ09iamVjdC0+R2V0KCdTeXN0ZW06OlBlcm1pc3Npb24nKSB9ICkgewoKICAgICAgICAgICAgbXkgJUdyb3VwcyA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvblVzZXJHZXQoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgPT4gJFR5cGUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAR3JvdXBOYW1lcyA9IHNvcnQgdmFsdWVzICVHcm91cHM7CgogICAgICAgICAgICAkVXNlcnsiR3JvdXBfJFR5cGUifSA9IFxAR3JvdXBOYW1lczsKICAgICAgICB9CgogICAgICAgIG15ICVSb2xlSURzID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uVXNlclJvbGVHZXQoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBteSBAUm9sZU5hbWVzID0gc29ydCB2YWx1ZXMgJVJvbGVJRHM7CgogICAgICAgICRVc2Vye1JvbGV9ICAgICAgICAgICA9IFxAUm9sZU5hbWVzOwogICAgICAgICRDaGVja3N7VXNlcn0gICAgICAgICA9IFwlVXNlcjsKICAgICAgICAkQ2hlY2tzRGF0YWJhc2V7VXNlcn0gPSBcJVVzZXI7CiAgICB9CgogICAgIyB1c2UgdHlwZSBkYXRhIChpZiBnaXZlbikKICAgIGlmICggJENoZWNrQWxsIHx8ICRSZXF1aXJlZENoZWNrc3tUeXBlfSApIHsKCiAgICAgICAgIyBnZXQgdHlwZSBvYmplY3QKICAgICAgICBteSAkVHlwZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJyk7CgogICAgICAgIGlmICggJFBhcmFte1R5cGVJRH0gKSB7CiAgICAgICAgICAgIG15ICVUeXBlID0gJFR5cGVPYmplY3QtPlR5cGVHZXQoCiAgICAgICAgICAgICAgICBJRCAgICAgPT4gJFBhcmFte1R5cGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJENoZWNrc3tUeXBlfSA9IFwlVHlwZTsKCiAgICAgICAgICAgICMgdXBkYXRlIG9yIGFkZCBjb25maWcgaXRlbSB0eXBlIGluZm9ybWF0aW9uIHRvIHRoZSBjb25maWcgaXRlbSBjaGVjawogICAgICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57VHlwZX0gICA9ICRDaGVja3N7VHlwZX0tPntOYW1lfTsKICAgICAgICAgICAgJENoZWNrc3tDb25maWdJdGVtfS0+e1R5cGVJRH0gPSAkQ2hlY2tze1R5cGV9LT57SUR9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtUeXBlfSApIHsKCiAgICAgICAgICAgICMgVE9ETyBBdHRlbnRpb24hCiAgICAgICAgICAgICMKICAgICAgICAgICAgIyBUaGUgcGFyYW1ldGVyIHR5cGUgY2FuIGNvbnRhaW4gbm90IG9ubHkgdGhlIHdhbnRlZCBjb25maWcgaXRlbSB0eXBlLCBiZWNhdXNlIGFsc28KICAgICAgICAgICAgIyBzb21lIG90aGVyIGZ1bmN0aW9ucyBpbiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtLnBtIHVzZSBhIHR5cGUgcGFyYW1ldGVyLCBmb3IgZXhhbXBsZQogICAgICAgICAgICAjIE1vdmVMaXN0KCkgZXRjLi4uIFRoZXNlIGZ1bmN0aW9ucyBjb3VsZCBiZSByZXdyaXR0ZW4gdG8gbm90CiAgICAgICAgICAgICMgdXNlIGEgVHlwZSBwYXJhbWV0ZXIsIG9yIHRoZSBmdW5jdGlvbnMgdGhhdCBjYWxsIENvbmZpZ0l0ZW1BY2woKSBjb3VsZCBiZSBtb2RpZmllZCB0bwogICAgICAgICAgICAjIG5vdCBqdXN0IHBhc3MgdGhlIGNvbXBsZXRlIFBhcmFtLUhhc2gsIGJ1dCBpbnN0ZWFkIGEgbmV3IHBhcmFtZXRlciwgbGlrZSBGcm9udEVuZFBhcmFtZXRlci4KICAgICAgICAgICAgIwogICAgICAgICAgICAjIEFzIGEgd29ya2Fyb3VuZCB3ZSBsb29rdXAgdGhlIFR5cGVMaXN0IGZpcnN0LCBhbmQgY29tcGFyZSBpZiB0aGUgdHlwZSBwYXJhbWV0ZXIKICAgICAgICAgICAgIyBpcyBmb3VuZCBpbiB0aGUgbGlzdCwgc28gd2UgY2FuIGJlIG1vcmUgc3VyZSB0aGF0IGl0IGlzIHRoZSB0eXBlIHRoYXQgd2Ugd2FudCBoZXJlLgoKICAgICAgICAgICAgIyBsb29rdXAgdGhlIHR5cGUgbGlzdCAod29ya2Fyb3VuZCBmb3IgZGVzY3JpYmVkIHByb2JsZW0pCiAgICAgICAgICAgIG15ICVUeXBlTGlzdCA9IHJldmVyc2UgJFR5cGVPYmplY3QtPlR5cGVMaXN0KCk7CgogICAgICAgICAgICAjIGNoZWNrIGlmIHR5cGUgaXMgaW4gdGhlIHR5cGUgbGlzdCAod29ya2Fyb3VuZCBmb3IgZGVzY3JpYmVkIHByb2JsZW0pCiAgICAgICAgICAgIGlmICggJFR5cGVMaXN0eyAkUGFyYW17VHlwZX0gfSApIHsKICAgICAgICAgICAgICAgIG15ICVUeXBlID0gJFR5cGVPYmplY3QtPlR5cGVHZXQoCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkQ2hlY2tze1R5cGV9ID0gXCVUeXBlOwoKICAgICAgICAgICAgICAgICMgdXBkYXRlIG9yIGFkZCBjb25maWcgaXRlbSB0eXBlIGluZm9ybWF0aW9uIHRvIHRoZSBjb25maWcgaXRlbSBjaGVjawogICAgICAgICAgICAgICAgJENoZWNrc3tDb25maWdJdGVtfS0+e1R5cGV9ICAgPSAkQ2hlY2tze1R5cGV9LT57TmFtZX07CiAgICAgICAgICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57VHlwZUlEfSA9ICRDaGVja3N7VHlwZX0tPntJRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAhJFBhcmFte1R5cGVJRH0gJiYgISRQYXJhbXtUeXBlfSApIHsKICAgICAgICAgICAgaWYgKCBJc1Bvc2l0aXZlSW50ZWdlciggJENoZWNrc3tDb25maWdJdGVtfS0+e1R5cGVJRH0gKSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCB0eXBlIGRhdGEgZnJvbSB0aGUgY29uZmlnIGl0ZW0KICAgICAgICAgICAgICAgIG15ICVUeXBlID0gJFR5cGVPYmplY3QtPlR5cGVHZXQoCiAgICAgICAgICAgICAgICAgICAgSUQgICAgID0+ICRDaGVja3N7Q29uZmlnSXRlbX0tPntUeXBlSUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRDaGVja3N7VHlwZX0gPSBcJVR5cGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIGhhc2ggd2l0aCB0aGUgY29uZmlnIGl0ZW0gaW5mb3JtYXRpb24gc3RvcmVkIGluIHRoZSBkYXRhYmFzZQogICAgICAgIGlmICggSXNQb3NpdGl2ZUludGVnZXIoICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+e1R5cGVJRH0gKSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgZGF0YWJhc2UgZGF0YSBtYXRjaGVzIGN1cnJlbnQgZGF0YSAocGVyZm9ybWFuY2UpCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgIGRlZmluZWQgJENoZWNrc3tUeXBlfS0+e0lEfQogICAgICAgICAgICAgICAgJiYgJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57VHlwZUlEfSBlcSAkQ2hlY2tze1R5cGV9LT57SUR9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRDaGVja3NEYXRhYmFzZXtUeXBlfSA9ICRDaGVja3N7VHlwZX07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb3RoZXJ3aXNlIGNvbXBsZXRlIHRoZSBkYXRhIHF1ZXJ5aW5nIHRoZSBkYXRhYmFzZSBhZ2FpbgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG15ICVUeXBlID0gJFR5cGVPYmplY3QtPlR5cGVHZXQoCiAgICAgICAgICAgICAgICAgICAgSUQgICAgID0+ICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+e1R5cGVJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJENoZWNrc0RhdGFiYXNle1R5cGV9ID0gXCVUeXBlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgd2l0aGluIHRoaXMgZnVuY3Rpb24gJVBhcmFtIGlzIG1vZGlmaWVkIGJ5IHJlcGxhY2VtZW50cyBsaWtlOgogICAgIyAgICAkUGFyYW17UHJpb3JpdHlJRH0gPSAkUGFyYW17TmV3UHJpb3JpdHlJRH0KICAgICMgICAgYXBwYXJlbnRseSB0aGlzIGNoYW5nZXMgYXJlIG5vdCBsb25nZXIgbmVlZGVkIG91dHNpZGUgdGhpcyBmdW5jdGlvbiBhbmQgaXQgaXMgbm90IG5lY2Vzc2FyeQogICAgIyAgICB0byByZXR1cm4gc3VjaCByZXBsYWNlbWVudHMKCiAgICByZXR1cm4gewogICAgICAgIENoZWNrcyAgICAgICAgID0+IFwlQ2hlY2tzLAogICAgICAgIENoZWNrc0RhdGFiYXNlID0+IFwlQ2hlY2tzRGF0YWJhc2UsCiAgICB9Owp9Cgo9aGVhZDIgX0NvbXBhcmVNYXRjaFdpdGhEYXRhKCkKCkNvbXBhcmVzIGEgcHJvcGVydGllcyBlbGVtZW50IHdpdGggdGhlIGRhdGEgc2VudCB0byB0aGUgQUNMLCB0aGUgY29tcGFyZSByZXN1bHRzIHZhcmllcyBvbiBob3cgdGhlCkFDTCBwcm9wZXJ0aWVzIHdoZXJlIGRlZmluZWQgaW5jbHVkaW5nIG5vcm1hbCwgbmVnYXRlZCwgcmVndWxhciBleHByZXNzaW9uIGFuZCBuZWdhdGVkIHJlZ3VsYXIKZXhwcmVzc2lvbiBjb21wYXJpc29ucy4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICBNYXRjaCA9PiAnYSB2YWx1ZScsICAgICAgICAgIyBvciAnW05vdF1hIHZhbHVlJywgb3IgJ1tSZWdFeHBddmFsJyBvciAnW05vdFJlZ0V4cF12YWwnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgb3IgJ1tOb3RyZWdleHBddmFsJyBvciAnW05vdHJlZ2V4cF0nCiAgICAgICAgRGF0YSA9PiAnYSB2YWx1ZScsCiAgICAgICAgU2luZ2xlSXRlbSA9PiAxLCAgICAgICAgICAgICMgb3IgMCwgb3B0aW9uYWwsIGRlZmF1bHQgMAogICAgKTsKClJldHVybnM6CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzID0+IDEsICAgICAgICAgICAgICAgIyBvciBmYWxzZQogICAgICAgIE1hdGNoICAgPT4gMSwgICAgICAgICAgICAgICAjIG9yIGZhbHNlCiAgICAgICAgU2tpcCAgICA9PiAxLCAgICAgICAgICAgICAgICMgb3IgZmFsc2UgKGluIGNlcnRhaW4gY2FzZXMgd2hlcmUgU2luZ2xlSXRlbSBpcyBzZXQpCiAgICB9OwoKPWN1dAoKc3ViIF9Db21wYXJlTWF0Y2hXaXRoRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTWF0Y2ggRGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICBteSAkTWF0Y2ggPSAkUGFyYW17TWF0Y2h9OwogICAgbXkgJERhdGEgID0gJFBhcmFte0RhdGF9OwoKICAgICMgTmVnYXRlZCBtYXRjaGVzIHJlcXVpcmVzIGEgZGlmZmVyZW50IGxvZ2ljLgogICAgaWYgKCBzdWJzdHIoICRNYXRjaCwgMCwgbGVuZ3RoICdbTm90JyApIGVxICdbTm90JyApIHsKCiAgICAgICAgIyBOb3QgZXF1YWwgbWF0Y2gKICAgICAgICBpZiAoIHN1YnN0ciggJE1hdGNoLCAwLCBsZW5ndGggJ1tOb3RdJyApIGVxICdbTm90XScgKSB7CiAgICAgICAgICAgIG15ICROb3RWYWx1ZSA9IHN1YnN0ciAkTWF0Y2gsIGxlbmd0aCAnW05vdF0nOwogICAgICAgICAgICBpZiAoICROb3RWYWx1ZSBlcSAkRGF0YSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgTm90IHJlZy1leHAgbWF0Y2ggY2FzZS1zZW5zaXRpdmUuCiAgICAgICAgZWxzaWYgKCBzdWJzdHIoICRNYXRjaCwgMCwgbGVuZ3RoICdbTm90UmVnRXhwXScgKSBlcSAnW05vdFJlZ0V4cF0nICkgewogICAgICAgICAgICBteSAkUmVnRXhwID0gc3Vic3RyICRNYXRjaCwgbGVuZ3RoICdbTm90UmVnRXhwXSc7CiAgICAgICAgICAgIGlmICggJERhdGEgPX4gLyRSZWdFeHAvICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICA9PiAwLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBOb3QgcmVnLWV4cCBtYXRjaCBjYXNlLWluc2Vuc2l0aXZlLgogICAgICAgIGVsc2lmICggc3Vic3RyKCAkTWF0Y2gsIDAsIGxlbmd0aCAnW05vdHJlZ2V4cF0nICkgZXEgJ1tOb3RyZWdleHBdJyApIHsKICAgICAgICAgICAgbXkgJFJlZ0V4cCA9IHN1YnN0ciAkTWF0Y2gsIGxlbmd0aCAnW05vdHJlZ2V4cF0nOwogICAgICAgICAgICBpZiAoICREYXRhID1+IC8kUmVnRXhwL2kgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgICAgICBNYXRjaCAgID0+IDAsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRQYXJhbXtTaW5nbGVJdGVtfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMSwKICAgICAgICAgICAgICAgIFNraXAgICAgPT4gMCwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICBNYXRjaCAgID0+IDEsCiAgICAgICAgICAgICAgICBTa2lwICAgID0+IDEsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgRXF1YWwgbWF0Y2guCiAgICAgICAgaWYgKCAkTWF0Y2ggZXEgJERhdGEgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICBNYXRjaCAgID0+IDEsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIFJlZy1leHAgbWF0Y2ggY2FzZS1zZW5zaXRpdmUuCiAgICAgICAgZWxzaWYgKCBzdWJzdHIoICRNYXRjaCwgMCwgbGVuZ3RoICdbUmVnRXhwXScgKSBlcSAnW1JlZ0V4cF0nICkgewogICAgICAgICAgICBteSAkUmVnRXhwID0gc3Vic3RyICRNYXRjaCwgbGVuZ3RoICdbUmVnRXhwXSc7CiAgICAgICAgICAgIGlmICggJERhdGEgPX4gLyRSZWdFeHAvICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICA9PiAxLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBSZWctZXhwIG1hdGNoIGNhc2UtaW5zZW5zaXRpdmUuCiAgICAgICAgZWxzaWYgKCBzdWJzdHIoICRNYXRjaCwgMCwgbGVuZ3RoICdbcmVnZXhwXScgKSBlcSAnW3JlZ2V4cF0nICkgewogICAgICAgICAgICBteSAkUmVnRXhwID0gc3Vic3RyICRNYXRjaCwgbGVuZ3RoICdbcmVnZXhwXSc7CiAgICAgICAgICAgIGlmICggJERhdGEgPX4gLyRSZWdFeHAvaSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJFBhcmFte1NpbmdsZUl0ZW19ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgTWF0Y2ggICA9PiAwLAogICAgICAgICAgICAgICAgU2tpcCAgICA9PiAwLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMCwKICAgICAgICAgICAgICAgIFNraXAgICAgPT4gMSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9Cn0KCj1lbmQgSW50ZXJuYWw6Cgo9Y3V0CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/ConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1TZWFyY2g7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNTdHJpbmdXaXRoRGF0YSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb25maWdJdGVtU2VhcmNoIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0gZm9yIGNvbmZpZyBpdGVtIHNlYXJjaAoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgY29uZmlnIGl0ZW0gc2VhcmNoIGZ1bmN0aW9ucy4gVGhlIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlIHZpYSB0aGUgQzxLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0+IG9iamVjdC4KCj1oZWFkMiBDb25maWdJdGVtU2VhcmNoKCkKClRvIGZpbmQgY29uZmlnIGl0ZW1zIGluIHlvdXIgc3lzdGVtLgoKICAgIG15IEBDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgIyByZXN1bHQgKG9wdGlvbmFsLCBkZWZhdWx0IGlzICdIQVNIJykKICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJyB8fCAnSEFTSCcgfHwgJ0NPVU5UJywKCiAgICAgICAgIyBsaW1pdCB0aGUgbnVtYmVyIG9mIGZvdW5kIGNvbmZpZyBpdGVtcyAob3B0aW9uYWwsIGRlZmF1bHQgaXMgMTAwMDApCiAgICAgICAgTGltaXQgPT4gMTAwLAoKICAgICAgICAjIFVzZSBDb25maWdJdGVtU2VhcmNoIGFzIGEgY29uZmlnIGl0ZW0gZmlsdGVyIG9uIGEgc2luZ2xlIGNvbmZpZyBpdGVtLAogICAgICAgICMgb3IgYSBwcmVkZWZpbmVkIGNvbmZpZyBpdGVtIGxpc3QKICAgICAgICBDb25maWdJdGVtSUQgICAgID0+IDEyMzQsCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICA9PiBbMTIzNCwgMTIzNV0sCgogICAgICAgICMgY29uZmlnIGl0ZW0gbnVtYmVyIChvcHRpb25hbCkgYXMgU1RSSU5HIG9yIGFzIEFSUkFZUkVGCiAgICAgICAgIyBUaGUgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgU1FMIHF1ZXJ5IGV4cHJlc3Npb24uCiAgICAgICAgTnVtYmVyID0+ICclMTIzNTQ2JScsCiAgICAgICAgTnVtYmVyID0+IFsnJTEyMzU0NiUnLCAnJTEyMzY2NiUnXSwKCiAgICAgICAgIyBjb25maWcgaXRlbSBuYW1lIChvcHRpb25hbCkgYXMgU1RSSU5HIG9yIGFzIEFSUkFZUkVGCiAgICAgICAgIyBUaGUgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzIGEgU1FMIHF1ZXJ5IGV4cHJlc3Npb24uCiAgICAgICAgIyBXaGVuIENvbmRpdGlvbklubGluZSBpcyBzZXQgdGhlbiByZW1haW5pbmcgd2hpdGVzcGFjZSB3aWxsIGJlIHRyZWF0ZWQgYXMgYSAmJiBjb25kaXRpb24gYW5kCiAgICAgICAgIyBhbmQgdGhlIHNldHRpbmdzIG9mIENvbnRlbnRTZWFyY2hQcmVmaXggYW5kIENvbnRlbnRTZWFyY2hTdWZmaXggd2lsbCBiZSBob25vcmVkLgogICAgICAgIE5hbWUgPT4gJyVTb21lVGV4dCUnLAogICAgICAgIE5hbWUgPT4gWyclU29tZVRlc3QxJScsICclU29tZVRlc3QyJSddLAoKICAgICAgICBDbGFzc2VzICAgICAgICAgPT4gWydDb21wdXRlcicsICdOZXR3b3JrJ10gICAjIChvcHRpb25hbCkKICAgICAgICBDbGFzc0lEcyAgICAgICAgPT4gWzksIDgsIDcsIDZdLCAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgRGVwbFN0YXRlcyAgICAgID0+IFsnUHJvZHVjdGlvbiddICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRGVwbFN0YXRlSURzICAgID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIEN1ckRlcGxTdGF0ZXMgICA9PiBbJ1Byb2R1Y3Rpb24nXSAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEN1ckRlcGxTdGF0ZUlEcyA9PiBbMSwgMiwgMywgNF0sICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICBJbmNpU3RhdGVzICAgICAgPT4gWydXYXJuaW5nJ10gICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJbmNpU3RhdGVJRHMgICAgPT4gWzEsIDIsIDMsIDRdLCAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgQ3VySW5jaVN0YXRlcyAgID0+IFsnV2FybmluZyddICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQ3VySW5jaVN0YXRlSURzID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIENyZWF0ZUJ5ICAgICAgICA9PiBbMSwgMiwgM10sICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIENoYW5nZUJ5ICAgICAgICA9PiBbMywgMiwgMV0sICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAjIER5bmFtaWNGaWVsZHMKICAgICAgICAjICAgQXQgbGVhc3Qgb25lIG9wZXJhdG9yIG11c3QgYmUgc3BlY2lmaWVkLiBPcGVyYXRvcnMgd2lsbCBiZSBjb25uZWN0ZWQgd2l0aCBBTkQsCiAgICAgICAgIyAgICAgICB2YWx1ZXMgaW4gYW4gb3BlcmF0b3Igd2l0aCBPUi4KICAgICAgICAjICAgWW91IGNhbiBhbHNvIHBhc3MgbW9yZSB0aGFuIG9uZSBhcmd1bWVudCB0byBhbiBvcGVyYXRvcjogWyd2YWx1ZTEnLCAndmFsdWUyJ10KICAgICAgICBEeW5hbWljRmllbGRfRmllbGROYW1lWCA9PiB7CiAgICAgICAgICAgIEVtcHR5ICAgICAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAjIHdpbGwgcmV0dXJuIGR5bmFtaWMgZmllbGRzIHdpdGhvdXQgYSB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzZXQgdG8gMCB0byBzZWFyY2ggZmllbGRzIHdpdGggYSB2YWx1ZSBwcmVzZW50CiAgICAgICAgICAgIEVxdWFscyAgICAgICAgICAgID0+IDEyMywKICAgICAgICAgICAgTGlrZSAgICAgICAgICAgICAgPT4gJ3ZhbHVlKicsICAgICAgICAgICAgICAgICMgImVxdWFscyIgb3BlcmF0b3Igd2l0aCB3aWxkY2FyZCBzdXBwb3J0CiAgICAgICAgICAgIEdyZWF0ZXJUaGFuICAgICAgID0+ICcyMDAxLTAxLTAxIDAxOjAxOjAxJywKICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gJzIwMDEtMDEtMDEgMDE6MDE6MDEnLAogICAgICAgICAgICBTbWFsbGVyVGhhbiAgICAgICA9PiAnMjAwMi0wMi0wMiAwMjowMjowMicsCiAgICAgICAgICAgIFNtYWxsZXJUaGFuRXF1YWxzID0+ICcyMDAyLTAyLTAyIDAyOjAyOjAyJywKICAgICAgICB9CgogICAgICAgICMgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChjb25maWcgaXRlbSBvbGRlciB0aGFuIDYwIG1pbnV0ZXMpICAob3B0aW9uYWwpCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBjb25maWcgaXRlbXMgY3JlYXRlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChjb25maWcgaXRlbSBuZXdlciB0aGFuIDEyMCBtaW51dGVzKSAob3B0aW9uYWwpCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNyZWF0ZSB0aW1lIGFmdGVyIC4uLiAoY29uZmlnIGl0ZW0gbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAwNi0wMS0wOSAwMDowMDowMScsCiAgICAgICAgIyBjb25maWcgaXRlbXMgd2l0aCBjcmVhdGVkIHRpbWUgYmVmb3JlIC4uLiAoY29uZmlnIGl0ZW0gb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAwNi0wMS0xOSAyMzo1OTo1OScsCgogICAgICAgICMgY29uZmlnIGl0ZW1zIGNoYW5nZWQgbW9yZSB0aGFuIDYwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlck1pbnV0ZXMgPT4gNjAsCiAgICAgICAgIyBjb25maWcgaXRlbXMgY2hhbmdlZCBsZXNzIHRoYW4gMTIwIG1pbnV0ZXMgYWdvIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlck1pbnV0ZXMgPT4gMTIwLAoKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNoYW5nZWQgdGltZSBhZnRlciAuLi4gKGNvbmZpZyBpdGVtIGNoYW5nZWQgbmV3ZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMDYtMDEtMDkgMDA6MDA6MDEnLAogICAgICAgICMgY29uZmlnIGl0ZW1zIHdpdGggY2hhbmdlZCB0aW1lIGJlZm9yZSAuLi4gKGNvbmZpZyBpdGVtIGNoYW5nZWQgb2xkZXIgdGhhbiB0aGlzIGRhdGUpIChvcHRpb25hbCkKICAgICAgICBDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMDYtMDEtMTkgMjM6NTk6NTknLAoKICAgICAgICAjIE9yZGVyQnkgKG9wdGlvbmFsLCBkZWZhdWx0IGlzICdEb3duJykKICAgICAgICBPcmRlckJ5ID0+ICdEb3duJywgICMgRG93bnxVcAoKICAgICAgICAjIFNvcnRCeSAob3B0aW9uYWwsIGRlZmF1bHQgaXMgJ051bWJlcicpCiAgICAgICAgU29ydEJ5ICA9PiAnTmFtZScsCgogICAgICAgICMgT3JkZXJCeSBhbmQgU29ydEJ5IGFzIEFSUkFZIGZvciBzdWIgc29ydGluZyAob3B0aW9uYWwpCiAgICAgICAgT3JkZXJCeSA9PiBbJ0Rvd24nLCAnVXAnXSwKICAgICAgICBTb3J0QnkgID0+IFsnQ29uZmlnSXRlbUlEJywgJ051bWJlciddLAoKICAgICAgICAjIHVzZXIgc2VhcmNoCiAgICAgICAgVXNlcklEICAgICA9PiAxMjMsICAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBQZXJtaXNzaW9uID0+ICdybycgfHwgJ3J3JywgIyBvcHRpb25hbCwgZGVmYXVsdCBpcyAncm8nCgogICAgICAgICMgQ2FjaGVUVEwsIGNhY2hlIHNlYXJjaCByZXN1bHQgaW4gc2Vjb25kcyAob3B0aW9uYWwsIHRoZSBkZWZhdWx0IGlzIGZvdXIgbWludXRlcykKICAgICAgICBDYWNoZVRUTCA9PiA2MCAqIDE1LAoKICAgICAgICAjIEVuLSBvciBkaXNhYmxlIHVzYWdlIG9mIFF1ZXJ5Q29uZGl0aW9uOyBjb250cm9sbGluZyB0aGUgZXZhbHVhdGlvbiBvZiBzb21lIHNwZWNpYWwgY2hhcmFjdGVycywgZS5nLiAnKycsIGFzIHNlYXJjaCBvcGVyYXRvcnMKICAgICAgICAjIGRlZmF1bHQgMQogICAgICAgIFF1ZXJ5Q29uZGl0aW9uID0+ICgxfDApLAogICAgKTsKClJldHVybnMgZm9yIEM8UmVzdWx0ID0+ICdBUlJBWSc+OgoKICAgIEBDb25maWdJdGVtSURzID0gKCAxLCAyLCAzICk7CgpSZXR1cm5zIGZvciBDPFJlc3VsdCA9PiAnSEFTSCc+IG9yIHdoZW4gbm8gcmVzdWx0IHR5cGUgaXMgc3BlY2lmaWVkOgoKICAgICVDb25maWdJdGVtSURzID0gKAogICAgICAgIDEgPT4gJzIwMTAxMDI3MDAwMDEnLAogICAgICAgIDIgPT4gJzIwMTAxMDI3MDAwMDInLAogICAgICAgIDMgPT4gJzIwMTAxMDI3MDAwMDMnLAogICAgKTsKClJldHVybnMgZm9yIEM8UmVzdWx0ID0+ICdDT1VOVCc+OgoKICAgICROdW1Db25maWdJdGVtSURzID0gMzsgIyB0aHJlZSByZXN1bHRzCgo9Y3V0CgojIFRPRE86IENoZWNrIGFsbCBpbnN0YW5jZXMgd2hlcmUgdGhpcyBpcyBjYWxsZWQuIENoYW5nZSBEeW5hbWljRmllbGRzLCBPcmRlckJ5IC0+IFNvcnRCeSwgT3JkZXJCeURpcmVjdGlvbiAtPiBPcmRlckJ5LCBSZXR1cm4gPT4gQVJSQVkgcmV0dXJucyBub3QgYSByZWYKc3ViIENvbmZpZ0l0ZW1TZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGRlZmF1bHQgdmFsdWVzCiAgICBteSAkUmVzdWx0ICAgICAgICAgPSAkUGFyYW17UmVzdWx0fSAgfHwgJ0hBU0gnOwogICAgbXkgJE9yZGVyQnkgICAgICAgID0gJFBhcmFte09yZGVyQnl9IHx8ICdEb3duJzsKICAgIG15ICRTb3J0QnkgICAgICAgICA9ICRQYXJhbXtTb3J0Qnl9ICB8fCAnTnVtYmVyJzsKICAgIG15ICRMaW1pdCAgICAgICAgICA9ICRQYXJhbXtMaW1pdH0gICB8fCAxMDAwMDsKICAgIG15ICRRdWVyeUNvbmRpdGlvbiA9ICRQYXJhbXtRdWVyeUNvbmRpdGlvbn0gLy8gMTsKCiAgICBteSAlU29ydE9wdGlvbnMgPSAoCiAgICAgICAgQ29uZmlnSXRlbSAgID0+ICdjaS5jb25maWdpdGVtX251bWJlcicsCiAgICAgICAgTnVtYmVyICAgICAgID0+ICdjaS5jb25maWdpdGVtX251bWJlcicsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICd2Lm5hbWUnLAogICAgICAgIERlcGxTdGF0ZSAgICA9PiAnZ2NfZGVwbC5uYW1lJywKICAgICAgICBJbmNpU3RhdGUgICAgPT4gJ2djX2luY2kubmFtZScsCiAgICAgICAgQ3VyRGVwbFN0YXRlID0+ICdnY19jZGVwbC5uYW1lJywKICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ2djX2NpbmNpLm5hbWUnLAogICAgICAgIEFnZSAgICAgICAgICA9PiAnY2kuY3JlYXRlX3RpbWUnLAogICAgICAgIENyZWF0ZWQgICAgICA9PiAnY2kuY3JlYXRlX3RpbWUnLAogICAgICAgIENoYW5nZWQgICAgICA9PiAnY2kuY2hhbmdlX3RpbWUnLAogICAgKTsKCiAgICAjIGNoZWNrIHR5cGVzIG9mIGdpdmVuIGFyZ3VtZW50cwogICAgS0VZOgogICAgZm9yIG15ICRLZXkgKAogICAgICAgIHF3KAogICAgICAgICAgICBDb25maWdJdGVtSUQgQ2xhc3NJRHMgRGVwbFN0YXRlSURzIEN1ckRlcGxTdGF0ZUlEcyBJbmNpU3RhdGVJRHMgQ3VySW5jaVN0YXRlSURzIENyZWF0ZUJ5IENoYW5nZUJ5CiAgICAgICAgKQogICAgICAgICkKICAgIHsKICAgICAgICBuZXh0IEtFWSBpZiAhJFBhcmFteyRLZXl9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aHkgbm8gc2VhcmNoIGZvciAnMCcgPz8/CiAgICAgICAgbmV4dCBLRVkgaWYgcmVmICRQYXJhbXskS2V5fSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXskS2V5fSB9OwoKICAgICAgICAjIGxvZyBlcnJvcgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGdpdmVuIHBhcmFtICckS2V5JyBpcyBpbnZhbGlkIG9yIGFuIGVtcHR5IGFycmF5IHJlZmVyZW5jZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBvYmplY3RzCiAgICBteSAkREJPYmplY3QgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgcXVvdGUgaWQgYXJyYXkgZWxlbWVudHMKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRLZXkgKAogICAgICAgIHF3KAogICAgICAgICAgICBDbGFzc0lEcyBEZXBsU3RhdGVJRHMgQ3VyRGVwbFN0YXRlSURzIEluY2lTdGF0ZUlEcyBDdXJJbmNpU3RhdGVJRHMgQ3JlYXRlQnkgQ2hhbmdlQnkKICAgICAgICApCiAgICAgICAgKQogICAgewogICAgICAgIG5leHQgQVJHVU1FTlQgaWYgISRQYXJhbXskS2V5fTsKCiAgICAgICAgIyBxdW90ZSBlbGVtZW50cwogICAgICAgIGZvciBteSAkRWxlbWVudCAoIEB7ICRQYXJhbXskS2V5fSB9ICkgewogICAgICAgICAgICBpZiAoICFkZWZpbmVkICREQk9iamVjdC0+UXVvdGUoICRFbGVtZW50LCAnSW50ZWdlcicgKSApIHsKCiAgICAgICAgICAgICAgICAjIGxvZyBlcnJvcgogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGdpdmVuIHBhcmFtICckRWxlbWVudCcgaW4gJyRLZXknIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBzb3J0L29yZGVyIGJ5IG9wdGlvbnMKICAgIG15IEBTb3J0QnlBcnJheSAgPSByZWYgJFNvcnRCeSBlcSAnQVJSQVknICA/ICRTb3J0QnktPkAqICA6ICRTb3J0Qnk7CiAgICBteSBAT3JkZXJCeUFycmF5ID0gcmVmICRPcmRlckJ5IGVxICdBUlJBWScgPyAkT3JkZXJCeS0+QCogOiAkT3JkZXJCeTsKCiAgICBmb3IgbXkgJENvdW50ICggMCAuLiAkI1NvcnRCeUFycmF5ICkgewogICAgICAgIGlmICgKICAgICAgICAgICAgISRTb3J0T3B0aW9uc3sgJFNvcnRCeUFycmF5WyRDb3VudF0gfQogICAgICAgICAgICAmJiAkU29ydEJ5QXJyYXlbJENvdW50XSAhfiAvXkR5bmFtaWNGaWVsZF8vCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIHZhbGlkIFNvcnRCeSAoJyAuICRTb3J0QnlBcnJheVskQ291bnRdIC4gJykhJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgVE9ETzogZmFsbCBiYWNrIHRvIGEgZGVmYXVsdCBvZiAnVXAnCiAgICAgICAgaWYgKCAkT3JkZXJCeUFycmF5WyRDb3VudF0gbmUgJ0Rvd24nICYmICRPcmRlckJ5QXJyYXlbJENvdW50XSBuZSAnVXAnICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCB2YWxpZCBPcmRlckJ5ICgnIC4gJE9yZGVyQnlBcnJheVskQ291bnRdIC4gJykhJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgc3FsCiAgICBteSAkU1FMU2VsZWN0OwoKICAgICMgVE9ETzogYWRkIHZlcnNpb24gc2VhcmNoCiAgICBpZiAoICRSZXN1bHQgZXEgJ0NPVU5UJyApIHsKICAgICAgICAkU1FMU2VsZWN0ID0gJ1NFTEVDVCBDT1VOVChESVNUSU5DVChjaS5pZCkpJzsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTUUxTZWxlY3QgPSAnU0VMRUNUIERJU1RJTkNUIGNpLmlkLCBjaS5jb25maWdpdGVtX251bWJlcic7CiAgICB9CgogICAgbXkgJFNRTEZyb20gPSAnIEZST00gY29uZmlnaXRlbSBjaSc7CgogICAgIyBjaGVjayBmb3IgbmVlZGVkIHZlcnNpb24gc2VhcmNoIGluZGV4IHRhYmxlIGpvaW4KICAgIG15ICRWZXJzaW9uVGFibGVKb2luZWQ7CiAgICBpZiAoICRTZWxmLT5fVmVyc2lvblNlYXJjaEluZGV4U1FMSm9pbk5lZWRlZCggU2VhcmNoUGFyYW1zID0+IFwlUGFyYW0gKSApIHsKICAgICAgICAkU1FMRnJvbSAuPSAnIElOTkVSIEpPSU4gY29uZmlnaXRlbV92ZXJzaW9uIHYgT04gY2kubGFzdF92ZXJzaW9uX2lkID0gdi5pZCc7CiAgICAgICAgJFZlcnNpb25UYWJsZUpvaW5lZCA9IDE7CiAgICB9CgogICAgbXkgJFNRTEV4dCA9ICcgV0hFUkUgMSA9IDEnOwoKICAgICMgTGltaXQgdGhlIHNlYXJjaCB0byBqdXN0IG9uZSAob3IgYSBsaXN0KSBDb25maWdJdGVtSUQKICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB8fCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgKSB7CgogICAgICAgIG15ICRTUUxRdWVyeUluQ29uZGl0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1ZXJ5SW5Db25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnY2kuaWQnLAogICAgICAgICAgICBWYWx1ZXMgICAgPT4gcmVmICRQYXJhbXtDb25maWdJdGVtSUR9IGVxICdBUlJBWScgPyAkUGFyYW17Q29uZmlnSXRlbUlEfSA6IFsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gXSwKICAgICAgICAgICAgUXVvdGVUeXBlID0+ICdJbnRlZ2VyJywKICAgICAgICAgICAgQmluZE1vZGUgID0+IDAsCiAgICAgICAgKTsKICAgICAgICAkU1FMRXh0IC49ICcgQU5EICggJyAuICRTUUxRdWVyeUluQ29uZGl0aW9uIC4gJyApICc7CiAgICB9CgogICAgIyBsb29rdXAgY2xhc3NlcwogICAgaWYgKCAkUGFyYW17Q2xhc3Nlc30gKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAlQ2xhc3NMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICApIC8vIHt9CiAgICAgICAgfTsKCiAgICAgICAgZm9yIG15ICRDbGFzcyAoIEB7ICRQYXJhbXtDbGFzc2VzfSB9ICkgewoKICAgICAgICAgICAgaWYgKCAhJENsYXNzTG9va3VweyRDbGFzc30gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBJRCBmb3IgJENsYXNzIGZvdW5kISIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAeyAkUGFyYW17Q2xhc3NJRHN9IH0sICRDbGFzc0xvb2t1cHskQ2xhc3N9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHBlcm1pc3Npb25zIGFyZSBoYW5kbGVkIHZpYSBjbGFzc2VzCiAgICBpZiAoICRQYXJhbXtVc2VySUR9ICYmICRQYXJhbXtVc2VySUR9ICE9IDEgKSB7CgogICAgICAgIG15IEBDbGFzc0lEcyA9ICRQYXJhbXtDbGFzc0lEc30gPyAkUGFyYW17Q2xhc3NJRHN9LT5AKiA6CiAgICAgICAgICAgIGtleXMgJXsKICAgICAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgICkgLy8ge30KICAgICAgICAgICAgfTsKCiAgICAgICAgbXkgQEFsbG93ZWRDbGFzc0lEczsKCiAgICAgICAgZm9yIG15ICRDbGFzc0lEIChAQ2xhc3NJRHMpIHsKICAgICAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRTZWxmLT5QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICRQYXJhbXtQZXJtaXNzaW9ufSAvLyAncm8nLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRIYXNBY2Nlc3MpIHsKICAgICAgICAgICAgICAgIHB1c2ggQEFsbG93ZWRDbGFzc0lEcywgJENsYXNzSUQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBpZiAhQEFsbG93ZWRDbGFzc0lEczsKCiAgICAgICAgJFBhcmFte0NsYXNzSURzfSA9IFxAQWxsb3dlZENsYXNzSURzOwogICAgfQoKICAgICMgY2xhc3MgaWRzCiAgICBpZiAoICRQYXJhbXtDbGFzc0lEc30gKSB7CiAgICAgICAgbXkgJFNRTFF1ZXJ5SW5Db25kaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVlcnlJbkNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdjaS5jbGFzc19pZCcsCiAgICAgICAgICAgIFZhbHVlcyAgICA9PiAkUGFyYW17Q2xhc3NJRHN9LAogICAgICAgICAgICBRdW90ZVR5cGUgPT4gJ0ludGVnZXInLAogICAgICAgICAgICBCaW5kTW9kZSAgPT4gMCwKICAgICAgICApOwogICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCAnIC4gJFNRTFF1ZXJ5SW5Db25kaXRpb24gLiAnICkgJzsKICAgIH0KCiAgICAjIGxvb2t1cCBkZXBsb3ltZW50IHN0YXRlcwogICAgaWYgKCAkUGFyYW17RGVwbFN0YXRlc30gKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAlRGVwbFN0YXRlTG9va3VwID0gcmV2ZXJzZSAlewogICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICkgLy8ge30KICAgICAgICB9OwoKICAgICAgICBmb3IgbXkgJERlcGxTdGF0ZSAoIEB7ICRQYXJhbXtEZXBsU3RhdGVzfSB9ICkgewoKICAgICAgICAgICAgaWYgKCAhJERlcGxTdGF0ZUxvb2t1cHskRGVwbFN0YXRlfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIElEIGZvciAkRGVwbFN0YXRlIGZvdW5kISIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAeyAkUGFyYW17RGVwbFN0YXRlSURzfSB9LCAkRGVwbFN0YXRlTG9va3VweyREZXBsU3RhdGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlcGxveW1lbnQgc3RhdGUgaWRzCiAgICBpZiAoICRQYXJhbXtEZXBsU3RhdGVJRHN9ICkgewogICAgICAgIG15ICRTUUxRdWVyeUluQ29uZGl0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1ZXJ5SW5Db25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICA9PiAndi5kZXBsX3N0YXRlX2lkJywKICAgICAgICAgICAgVmFsdWVzICAgID0+ICRQYXJhbXtEZXBsU3RhdGVJRHN9LAogICAgICAgICAgICBRdW90ZVR5cGUgPT4gJ0ludGVnZXInLAogICAgICAgICAgICBCaW5kTW9kZSAgPT4gMCwKICAgICAgICApOwogICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCAnIC4gJFNRTFF1ZXJ5SW5Db25kaXRpb24gLiAnICkgJzsKICAgIH0KCiAgICAjIGxvb2t1cCBjdXJyZW50IGRlcGxveW1lbnQgc3RhdGVzCiAgICBpZiAoICRQYXJhbXtDdXJEZXBsU3RhdGVzfSApIHsKCiAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgIG15ICVDdXJEZXBsU3RhdGVMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgKSAvLyB7fQogICAgICAgIH07CgogICAgICAgIGZvciBteSAkQ3VyRGVwbFN0YXRlICggQHsgJFBhcmFte0N1ckRlcGxTdGF0ZXN9IH0gKSB7CgogICAgICAgICAgICBpZiAoICEkQ3VyRGVwbFN0YXRlTG9va3VweyRDdXJEZXBsU3RhdGV9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gSUQgZm9yICRDdXJEZXBsU3RhdGUgZm91bmQhIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtDdXJEZXBsU3RhdGVJRHN9IH0sICRDdXJEZXBsU3RhdGVMb29rdXB7JEN1ckRlcGxTdGF0ZX07CiAgICAgICAgfQogICAgfQoKICAgICMgY3VycmVudCBkZXBsb3ltZW50IHN0YXRlIGlkcwogICAgaWYgKCAkUGFyYW17Q3VyRGVwbFN0YXRlSURzfSApIHsKICAgICAgICBteSAkU1FMUXVlcnlJbkNvbmRpdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdWVyeUluQ29uZGl0aW9uKAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ2NpLmN1cl9kZXBsX3N0YXRlX2lkJywKICAgICAgICAgICAgVmFsdWVzICAgID0+ICRQYXJhbXtDdXJEZXBsU3RhdGVJRHN9LAogICAgICAgICAgICBRdW90ZVR5cGUgPT4gJ0ludGVnZXInLAogICAgICAgICAgICBCaW5kTW9kZSAgPT4gMCwKICAgICAgICApOwogICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCAnIC4gJFNRTFF1ZXJ5SW5Db25kaXRpb24gLiAnICkgJzsKICAgIH0KCiAgICAjIGxvb2t1cCBpbmNpZGVudCBzdGF0ZXMKICAgIGlmICggJFBhcmFte0luY2lTdGF0ZXN9ICkgewoKICAgICAgICAjIGdldCBjbGFzcyBsaXN0CiAgICAgICAgbXkgJUluY2lTdGF0ZUxvb2t1cCA9IHJldmVyc2UgJXsKICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICAgICAgKSAvLyB7fQogICAgICAgIH07CgogICAgICAgIGZvciBteSAkSW5jaVN0YXRlICggQHsgJFBhcmFte0luY2lTdGF0ZXN9IH0gKSB7CgogICAgICAgICAgICBpZiAoICEkSW5jaVN0YXRlTG9va3VweyRJbmNpU3RhdGV9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gSUQgZm9yICRJbmNpU3RhdGUgZm91bmQhIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtJbmNpU3RhdGVJRHN9IH0sICRJbmNpU3RhdGVMb29rdXB7JEluY2lTdGF0ZX07CiAgICAgICAgfQogICAgfQoKICAgICMgaW5jaWRlbnQgc3RhdGUgaWRzCiAgICBpZiAoICRQYXJhbXtJbmNpU3RhdGVJRHN9ICkgewogICAgICAgIG15ICRTUUxRdWVyeUluQ29uZGl0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1ZXJ5SW5Db25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICA9PiAndi5pbmNpX3N0YXRlX2lkJywKICAgICAgICAgICAgVmFsdWVzICAgID0+ICRQYXJhbXtJbmNpU3RhdGVJRHN9LAogICAgICAgICAgICBRdW90ZVR5cGUgPT4gJ0ludGVnZXInLAogICAgICAgICAgICBCaW5kTW9kZSAgPT4gMCwKICAgICAgICApOwogICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCAnIC4gJFNRTFF1ZXJ5SW5Db25kaXRpb24gLiAnICkgJzsKICAgIH0KCiAgICAjIGxvb2t1cCBjdXJyZW50IGluY2lkZW50IHN0YXRlcwogICAgaWYgKCAkUGFyYW17Q3VySW5jaVN0YXRlc30gKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAlQ3VySW5jaVN0YXRlTG9va3VwID0gcmV2ZXJzZSAlewogICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICAgICApIC8vIHt9CiAgICAgICAgfTsKCiAgICAgICAgZm9yIG15ICRDdXJJbmNpU3RhdGUgKCBAeyAkUGFyYW17Q3VySW5jaVN0YXRlc30gfSApIHsKCiAgICAgICAgICAgIGlmICggISRDdXJJbmNpU3RhdGVMb29rdXB7JEN1ckluY2lTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBJRCBmb3IgJEN1ckluY2lTdGF0ZSBmb3VuZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte0N1ckluY2lTdGF0ZUlEc30gfSwgJEN1ckluY2lTdGF0ZUxvb2t1cHskQ3VySW5jaVN0YXRlfTsKICAgICAgICB9CiAgICB9CgogICAgIyBpbmNpZGVudCBzdGF0ZSBpZHMKICAgIGlmICggJFBhcmFte0N1ckluY2lTdGF0ZUlEc30gKSB7CiAgICAgICAgbXkgJFNRTFF1ZXJ5SW5Db25kaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVlcnlJbkNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdjaS5jdXJfaW5jaV9zdGF0ZV9pZCcsCiAgICAgICAgICAgIFZhbHVlcyAgICA9PiAkUGFyYW17Q3VySW5jaVN0YXRlSURzfSwKICAgICAgICAgICAgUXVvdGVUeXBlID0+ICdJbnRlZ2VyJywKICAgICAgICAgICAgQmluZE1vZGUgID0+IDAsCiAgICAgICAgKTsKICAgICAgICAkU1FMRXh0IC49ICcgQU5EICggJyAuICRTUUxRdWVyeUluQ29uZGl0aW9uIC4gJyApICc7CiAgICB9CgogICAgIyBvdGhlciBjb25maWcgaXRlbSBzdHVmZgogICAgbXkgJUZpZWxkU1FMTWFwID0gKAogICAgICAgIE51bWJlciAgID0+ICdjaS5jb25maWdpdGVtX251bWJlcicsCiAgICAgICAgTmFtZSAgICAgPT4gJ3YubmFtZScsCiAgICAgICAgQ3JlYXRlQnkgPT4gJ2NpLmNyZWF0ZV9ieScsCiAgICAgICAgQ2hhbmdlQnkgPT4gJ2NpLmNoYW5nZV9ieScsCiAgICApOwoKICAgIEFUVFJJQlVURToKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVGaWVsZFNRTE1hcCApIHsKICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAhZGVmaW5lZCAkUGFyYW17JEtleX07CgogICAgICAgICMgaWYgaXQncyBubyByZWYsIHB1dCBpdCB0byBhcnJheSByZWYKICAgICAgICBpZiAoIHJlZiAkUGFyYW17JEtleX0gZXEgJycgKSB7CiAgICAgICAgICAgICRQYXJhbXskS2V5fSA9IFsgJFBhcmFteyRLZXl9IF07CiAgICAgICAgfQoKICAgICAgICAjIHByb2NjZXNzIGFycmF5IHJlZgogICAgICAgIG15ICRVc2VkID0gMDsKCiAgICAgICAgVkFMVUU6CiAgICAgICAgZm9yIG15ICRWYWx1ZSAoIEB7ICRQYXJhbXskS2V5fSB9ICkgewogICAgICAgICAgICBuZXh0IFZBTFVFIGlmICFkZWZpbmVkICRWYWx1ZSB8fCAhbGVuZ3RoICRWYWx1ZTsKCiAgICAgICAgICAgICRWYWx1ZSA9fiBzL1wqLyUvZ2k7CgogICAgICAgICAgICAjIGNoZWNrIHNlYXJjaCBhdHRyaWJ1dGUsIHdlIGRvIG5vdCBuZWVkIHRvIHNlYXJjaCBmb3IgKgogICAgICAgICAgICBuZXh0IFZBTFVFIGlmICRWYWx1ZSA9fiAvXlwlezEsM30kLzsKCiAgICAgICAgICAgIGlmICggISRVc2VkICkgewogICAgICAgICAgICAgICAgJFNRTEV4dCAuPSAnIEFORCAoJzsKICAgICAgICAgICAgICAgICRVc2VkID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTUUxFeHQgLj0gJyBPUiAnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJFF1ZXJ5Q29uZGl0aW9uKSB7CgogICAgICAgICAgICAgICAgIyB1c2Ugc2VhcmNoIGNvbmRpdGlvbiBleHRlbnNpb24KICAgICAgICAgICAgICAgICRTUUxFeHQgLj0gJERCT2JqZWN0LT5RdWVyeUNvbmRpdGlvbigKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAkRmllbGRTUUxNYXB7JEtleX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTUUxFeHQgLj0gJEZpZWxkU1FMTWFweyRLZXl9IC4gIiA9ICciIC4gJERCT2JqZWN0LT5RdW90ZSgkVmFsdWUpIC4gIiciOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJFVzZWQpIHsKICAgICAgICAgICAgJFNRTEV4dCAuPSAnKSc7CiAgICAgICAgfQogICAgfQoKICAgICMgUmVtZW1iZXIgYWxyZWFkeSBqb2luZWQgdGFibGVzIGZvciBzb3J0aW5nLgogICAgbXkgJUR5bmFtaWNGaWVsZEpvaW5UYWJsZXM7CiAgICBteSAkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIgPSAxOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgb2JqZWN0cwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJFBhcmFtTmFtZSAoIGtleXMgJVBhcmFtICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkUGFyYW1OYW1lID1+IG0vXkR5bmFtaWNGaWVsZF8oLispLzsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkLT4lKiApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gcXFbTm8gc3VjaCBkeW5hbWljIGZpZWxkICIkMSIgKG9yIGl0IGlzIGluYWN0aXZlKV0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBteSAkU2VhcmNoUGFyYW0gPSBkZWxldGUgJFBhcmFteyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZC0+e05hbWV9In07CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkU2VhcmNoUGFyYW07CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIHJlZiAkU2VhcmNoUGFyYW0gZXEgJ0hBU0gnOwoKICAgICAgICBteSAkTmVlZEpvaW47CiAgICAgICAgbXkgJFF1ZXJ5Rm9yRW1wdHlWYWx1ZXMgPSAwOwoKICAgICAgICBmb3IgbXkgJE9wZXJhdG9yICggc29ydCBrZXlzICRTZWFyY2hQYXJhbS0+JSogKSB7CgogICAgICAgICAgICBteSBAU2VhcmNoUGFyYW1zID0gKCByZWYgJFNlYXJjaFBhcmFtLT57JE9wZXJhdG9yfSBlcSAnQVJSQVknICkKICAgICAgICAgICAgICAgID8gQHsgJFNlYXJjaFBhcmFtLT57JE9wZXJhdG9yfSB9CiAgICAgICAgICAgICAgICA6ICggJFNlYXJjaFBhcmFtLT57JE9wZXJhdG9yfSApOwoKICAgICAgICAgICAgbXkgJFNRTEV4dFN1YiA9ICcgQU5EICgnOwogICAgICAgICAgICBteSAkQ291bnRlciAgID0gMDsKICAgICAgICAgICAgVEVYVDoKICAgICAgICAgICAgZm9yIG15ICRUZXh0IChAU2VhcmNoUGFyYW1zKSB7CiAgICAgICAgICAgICAgICBuZXh0IFRFWFQgdW5sZXNzIGRlZmluZWQgJFRleHQ7CiAgICAgICAgICAgICAgICBuZXh0IFRFWFQgaWYgJFRleHQgZXEgJyc7CgogICAgICAgICAgICAgICAgJFRleHQgPX4gcy9cKi8lL2dpOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgc2VhcmNoIGF0dHJpYnV0ZSwgd2UgZG8gbm90IG5lZWQgdG8gc2VhcmNoIGZvciAqCiAgICAgICAgICAgICAgICBuZXh0IFRFWFQgaWYgJFRleHQgPX4gL15cJXsxLDN9JC87CgogICAgICAgICAgICAgICAgIyBza2lwIHZhbGlkYXRpb24gZm9yIGVtcHR5IHZhbHVlcwogICAgICAgICAgICAgICAgaWYgKCAkT3BlcmF0b3IgbmUgJ0VtcHR5JyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyB2YWxpZGF0ZSBkYXRhIHR5cGUKICAgICAgICAgICAgICAgICAgICBteSAkVmFsaWRhdGVTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlVmFsaWRhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIE5vVmFsaWRhdGVSZWdleCAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0gfHwgMSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICggISRWYWxpZGF0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdmFsdWUgJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRUZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiJyBvbiBmaWVsZCAnIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiJyEiLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkQ291bnRlcikgewogICAgICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJyBPUiAnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgRW1wdHkgPT4gMSByZXF1aXJlcyBhIExFRlQgSk9JTi4KICAgICAgICAgICAgICAgIGlmICggJE9wZXJhdG9yIGVxICdFbXB0eScgJiYgJFRleHQgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoU1FMR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgVGFibGVBbGlhcyAgICAgICAgID0+ICJkZnZFbXB0eSREeW5hbWljRmllbGRKb2luQ291bnRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdG9yICAgICAgICAgICA9PiAkT3BlcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaFRlcm0gICAgICAgICA9PiAkVGV4dCwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRRdWVyeUZvckVtcHR5VmFsdWVzID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaFNRTEdldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlQWxpYXMgICAgICAgICA9PiAiZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgT3BlcmF0b3IgICAgICAgICAgID0+ICRPcGVyYXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgU2VhcmNoVGVybSAgICAgICAgID0+ICRUZXh0LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkU1FMRXh0U3ViIC49ICcpJzsKICAgICAgICAgICAgaWYgKCRDb3VudGVyKSB7CiAgICAgICAgICAgICAgICAkU1FMRXh0IC49ICRTUUxFeHRTdWI7CiAgICAgICAgICAgICAgICAkTmVlZEpvaW4gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJE5lZWRKb2luKSB7CgogICAgICAgICAgICBpZiAoICEkVmVyc2lvblRhYmxlSm9pbmVkICkgewogICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gJyBJTk5FUiBKT0lOIGNvbmZpZ2l0ZW1fdmVyc2lvbiB2IE9OIGNpLmxhc3RfdmVyc2lvbl9pZCA9IHYuaWQnOwogICAgICAgICAgICAgICAgJFZlcnNpb25UYWJsZUpvaW5lZCA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkUXVlcnlGb3JFbXB0eVZhbHVlcykgewoKICAgICAgICAgICAgICAgICMgVXNlIExFRlQgSk9JTiB0byBhbGxvdyBmb3IgbnVsbCB2YWx1ZXMuCiAgICAgICAgICAgICAgICAkU1FMRnJvbSAuPSAiIExFRlQgSk9JTiBkeW5hbWljX2ZpZWxkX3ZhbHVlIGRmdkVtcHR5JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyCiAgICAgICAgICAgICAgICAgICAgT04gKHYuaWQgPSBkZnZFbXB0eSREeW5hbWljRmllbGRKb2luQ291bnRlci5vYmplY3RfaWQKICAgICAgICAgICAgICAgICAgICAgICAgQU5EIGRmdkVtcHR5JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyLmZpZWxkX2lkID0gIiAuCiAgICAgICAgICAgICAgICAgICAgJERCT2JqZWN0LT5RdW90ZSggJER5bmFtaWNGaWVsZC0+e0lEfSwgJ0ludGVnZXInICkgLiAiKSAiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gIiBJTk5FUiBKT0lOIGR5bmFtaWNfZmllbGRfdmFsdWUgZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyCiAgICAgICAgICAgICAgICAgICAgT04gKHYuaWQgPSBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIub2JqZWN0X2lkCiAgICAgICAgICAgICAgICAgICAgICAgIEFORCBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIuZmllbGRfaWQgPSAiIC4KICAgICAgICAgICAgICAgICAgICAkREJPYmplY3QtPlF1b3RlKCAkRHluYW1pY0ZpZWxkLT57SUR9LCAnSW50ZWdlcicgKSAuICIpICI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICREeW5hbWljRmllbGRKb2luVGFibGVzeyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9ICJkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIiOwoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZEpvaW5Db3VudGVyKys7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHRpbWUgb2JqZWN0CiAgICAjIHJlbWVtYmVyIGN1cnJlbnQgdGltZSB0byBwcmV2ZW50IHNlYXJjaGVzIGZvciBmdXR1cmUgdGltZXN0YW1wcwogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CgogICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgb2xkZXIvbmV3ZXIgdGhhbiB4IG1pbnV0ZXMKICAgIG15ICVDb25maWdJdGVtVGltZSA9ICgKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZSA9PiAnY2kuY3JlYXRlX3RpbWUnLAogICAgKTsKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVDb25maWdJdGVtVGltZSApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgb2xkZXIgdGhhbiB4IG1pbnV0ZXMKICAgICAgICBpZiAoIGRlZmluZWQgJFBhcmFteyAkS2V5IC4gJ09sZGVyTWludXRlcycgfSApIHsKCiAgICAgICAgICAgICRQYXJhbXsgJEtleSAuICdPbGRlck1pbnV0ZXMnIH0gfHw9IDA7CgogICAgICAgICAgICBteSAkVGltZSA9ICREYXRlVGltZU9iamVjdC0+Q2xvbmUoKTsKICAgICAgICAgICAgJFRpbWUtPlN1YnRyYWN0KCBNaW51dGVzID0+ICRQYXJhbXsgJEtleSAuICdPbGRlck1pbnV0ZXMnIH0gKTsKCiAgICAgICAgICAgIG15ICRUYXJnZXRUaW1lID0gJEtleSBlcSAnQ29uZmlnSXRlbUNyZWF0ZVRpbWUnID8gJFRpbWUtPlRvU3RyaW5nKCkgOiAkVGltZS0+VG9FcG9jaCgpOwoKICAgICAgICAgICAgJFNRTEV4dCAuPSBzcHJpbnRmKCAiIEFORCAoICVzIDw9ICclcycgKSIsICRDb25maWdJdGVtVGltZXskS2V5fSwgJFRhcmdldFRpbWUgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjcmVhdGVkIG5ld2VyIHRoYW4geCBtaW51dGVzCiAgICAgICAgaWYgKCBkZWZpbmVkICRQYXJhbXsgJEtleSAuICdOZXdlck1pbnV0ZXMnIH0gKSB7CgogICAgICAgICAgICAkUGFyYW17ICRLZXkgLiAnTmV3ZXJNaW51dGVzJyB9IHx8PSAwOwoKICAgICAgICAgICAgbXkgJFRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAgICAgJFRpbWUtPlN1YnRyYWN0KCBNaW51dGVzID0+ICRQYXJhbXsgJEtleSAuICdOZXdlck1pbnV0ZXMnIH0gKTsKCiAgICAgICAgICAgIG15ICRUYXJnZXRUaW1lID0gJEtleSBlcSAnQ29uZmlnSXRlbUNyZWF0ZVRpbWUnID8gJFRpbWUtPlRvU3RyaW5nKCkgOiAkVGltZS0+VG9FcG9jaCgpOwoKICAgICAgICAgICAgJFNRTEV4dCAuPSBzcHJpbnRmKCAiIEFORCAoICVzID49ICclcycgKSIsICRDb25maWdJdGVtVGltZXskS2V5fSwgJFRhcmdldFRpbWUgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgb2xkZXIvbmV3ZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVDb25maWdJdGVtVGltZSApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgb2xkZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgICAgICBteSAkQ29tcGFyZU9sZGVyTmV3ZXJEYXRlOwogICAgICAgIGlmICggJFBhcmFteyAkS2V5IC4gJ09sZGVyRGF0ZScgfSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgdGltZSBmb3JtYXQKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJFBhcmFteyAkS2V5IC4gJ09sZGVyRGF0ZScgfQogICAgICAgICAgICAgICAgIX4gL1xkXGRcZFxkLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKTooXGRcZHxcZCkvCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgdGltZSBmb3JtYXQgJyIgLiAkUGFyYW17ICRLZXkgLiAnT2xkZXJEYXRlJyB9IC4gIichIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFteyAkS2V5IC4gJ09sZGVyRGF0ZScgfSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJFRpbWUgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJTZWFyY2ggbm90IGV4ZWN1dGVkIGR1ZSB0byBpbnZhbGlkIHRpbWUgJyIKICAgICAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17ICRLZXkgLiAnT2xkZXJEYXRlJyB9IC4gIichIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJENvbXBhcmVPbGRlck5ld2VyRGF0ZSA9ICRUaW1lOwoKICAgICAgICAgICAgbXkgJFRhcmdldFRpbWUgPSAkS2V5IGVxICdDb25maWdJdGVtQ3JlYXRlVGltZScgPyAkVGltZS0+VG9TdHJpbmcoKSA6ICRUaW1lLT5Ub0Vwb2NoKCk7CgogICAgICAgICAgICAkU1FMRXh0IC49IHNwcmludGYoICIgQU5EICggJXMgPD0gJyVzJyApIiwgJENvbmZpZ0l0ZW1UaW1leyRLZXl9LCAkVGFyZ2V0VGltZSApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgbmV3ZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgICAgICBpZiAoICRQYXJhbXsgJEtleSAuICdOZXdlckRhdGUnIH0gKSB7CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRQYXJhbXsgJEtleSAuICdOZXdlckRhdGUnIH0KICAgICAgICAgICAgICAgICF+IC9cZFxkXGRcZC0oXGRcZHxcZCktKFxkXGR8XGQpIChcZFxkfFxkKTooXGRcZHxcZCk6KFxkXGR8XGQpLwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHRpbWUgZm9ybWF0ICciIC4gJFBhcmFteyAkS2V5IC4gJ05ld2VyRGF0ZScgfSAuICInISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXsgJEtleSAuICdOZXdlckRhdGUnIH0sCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRUaW1lICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIG5vdCBleGVjdXRlZCBkdWUgdG8gaW52YWxpZCB0aW1lICciCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJFBhcmFteyAkS2V5IC4gJ05ld2VyRGF0ZScgfSAuICInISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGRvbid0IGV4ZWN1dGUgcXVlcmllcyBpZiBuZXdlciBkYXRlIGlzIGFmdGVyIGN1cnJlbnQgZGF0ZQogICAgICAgICAgICByZXR1cm4gaWYgJFRpbWUgPiAkRGF0ZVRpbWVPYmplY3Q7CgogICAgICAgICAgICAjIGRvbid0IGV4ZWN1dGUgcXVlcmllcyBpZiBvbGRlci9uZXdlciBkYXRlIHJlc3RyaWN0aW9uIHNob3cgbm93IHZhbGlkIHRpbWVmcmFtZQogICAgICAgICAgICByZXR1cm4gaWYgJENvbXBhcmVPbGRlck5ld2VyRGF0ZSAmJiAkVGltZSA+ICRDb21wYXJlT2xkZXJOZXdlckRhdGU7CgogICAgICAgICAgICBteSAkVGFyZ2V0VGltZSA9ICRLZXkgZXEgJ0NvbmZpZ0l0ZW1DcmVhdGVUaW1lJyA/ICRUaW1lLT5Ub1N0cmluZygpIDogJFRpbWUtPlRvRXBvY2goKTsKCiAgICAgICAgICAgICRTUUxFeHQgLj0gc3ByaW50ZiggIiBBTkQgKCAlcyA+PSAnJXMnICkiLCAkQ29uZmlnSXRlbVRpbWV7JEtleX0sICRUYXJnZXRUaW1lICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjaGFuZ2VkIG9sZGVyIHRoYW4geCBtaW51dGVzCiAgICBpZiAoIGRlZmluZWQgJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU9sZGVyTWludXRlc30gKSB7CgogICAgICAgICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlck1pbnV0ZXN9IHx8PSAwOwoKICAgICAgICBteSAkVGltZVN0YW1wID0gJERhdGVUaW1lT2JqZWN0LT5DbG9uZSgpOwogICAgICAgICRUaW1lU3RhbXAtPlN1YnRyYWN0KCBNaW51dGVzID0+ICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlck1pbnV0ZXN9ICk7CgogICAgICAgICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGV9ID0gJFRpbWVTdGFtcC0+VG9TdHJpbmcoKTsKICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbXMgY2hhbmdlZCBuZXdlciB0aGFuIHggbWludXRlcwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlck1pbnV0ZXN9ICkgewoKICAgICAgICAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJNaW51dGVzfSB8fD0gMDsKCiAgICAgICAgbXkgJFRpbWVTdGFtcCA9ICREYXRlVGltZU9iamVjdC0+Q2xvbmUoKTsKICAgICAgICAkVGltZVN0YW1wLT5TdWJ0cmFjdCggTWludXRlcyA9PiAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJNaW51dGVzfSApOwoKICAgICAgICAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJEYXRlfSA9ICRUaW1lU3RhbXAtPlRvU3RyaW5nKCk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNoYW5nZWQgb2xkZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgIG15ICRDb21wYXJlTGFzdENoYW5nZVRpbWVPbGRlck5ld2VyRGF0ZTsKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU9sZGVyRGF0ZX0gKSB7CgogICAgICAgICMgY2hlY2sgdGltZSBmb3JtYXQKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGV9CiAgICAgICAgICAgICF+IC9cZFxkXGRcZC0oXGRcZHxcZCktKFxkXGR8XGQpIChcZFxkfFxkKTooXGRcZHxcZCk6KFxkXGR8XGQpLwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCB0aW1lIGZvcm1hdCAnJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU9sZGVyRGF0ZX0nISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG15ICRUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU9sZGVyRGF0ZX0sCiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICBpZiAoICEkVGltZSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIG5vdCBleGVjdXRlZCBkdWUgdG8gaW52YWxpZCB0aW1lICciCiAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lT2xkZXJEYXRlfSAuICInISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJENvbXBhcmVMYXN0Q2hhbmdlVGltZU9sZGVyTmV3ZXJEYXRlID0gJFRpbWU7CgogICAgICAgICRTUUxFeHQgLj0gIiBBTkQgY2kuY2hhbmdlX3RpbWUgPD0gJyIgLiAkVGltZS0+VG9TdHJpbmcoKSAuICInIjsKICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbXMgY2hhbmdlZCBuZXdlciB0aGFuIHh4eHgteHgteHggeHg6eHggZGF0ZQogICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJEYXRlfSApIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlckRhdGV9CiAgICAgICAgICAgICF+IC9cZFxkXGRcZC0oXGRcZHxcZCktKFxkXGR8XGQpIChcZFxkfFxkKTooXGRcZHxcZCk6KFxkXGR8XGQpLwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCB0aW1lIGZvcm1hdCAnJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU5ld2VyRGF0ZX0nISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG15ICRUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU5ld2VyRGF0ZX0sCiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICBpZiAoICEkVGltZSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIG5vdCBleGVjdXRlZCBkdWUgdG8gaW52YWxpZCB0aW1lICciCiAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJEYXRlfSAuICInISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZG9uJ3QgZXhlY3V0ZSBxdWVyaWVzIGlmIG5ld2VyIGRhdGUgaXMgYWZ0ZXIgY3VycmVudCBkYXRlCiAgICAgICAgcmV0dXJuIGlmICRUaW1lID4gJERhdGVUaW1lT2JqZWN0OwoKICAgICAgICAjIGRvbid0IGV4ZWN1dGUgcXVlcmllcyBpZiBvbGRlci9uZXdlciBkYXRlIHJlc3RyaWN0aW9uIHNob3cgbm93IHZhbGlkIHRpbWVmcmFtZQogICAgICAgIHJldHVybgogICAgICAgICAgICBpZiAkQ29tcGFyZUxhc3RDaGFuZ2VUaW1lT2xkZXJOZXdlckRhdGUgJiYgJFRpbWUgPiAkQ29tcGFyZUxhc3RDaGFuZ2VUaW1lT2xkZXJOZXdlckRhdGU7CgogICAgICAgICRTUUxFeHQgLj0gIiBBTkQgY2kuY2hhbmdlX3RpbWUgPj0gJyIgLiAkVGltZS0+VG9TdHJpbmcoKSAuICInIjsKICAgIH0KCiAgICAjIGRhdGFiYXNlIHF1ZXJ5IGZvciBzb3J0L29yZGVyIGJ5IG9wdGlvbgogICAgaWYgKCAkUmVzdWx0IG5lICdDT1VOVCcgKSB7CiAgICAgICAgJFNRTEV4dCAuPSAnIE9SREVSIEJZJzsKCiAgICAgICAgbXkgJUpvaW5lZFRhYmxlczsKICAgICAgICBmb3IgbXkgJENvdW50ICggMCAuLiAkI1NvcnRCeUFycmF5ICkgewogICAgICAgICAgICBpZiAoICRDb3VudCA+IDAgKSB7CiAgICAgICAgICAgICAgICAkU1FMRXh0IC49ICcsJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzb3J0IGJ5IGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgaWYgKCAkU29ydEJ5QXJyYXlbJENvdW50XSA9fiAvXkR5bmFtaWNGaWVsZF8oLiopLyApIHsKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGROYW1lID0gJDE7CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkICAgICA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICQxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCB2YWxpZCBTb3J0QnkgKCcgLiAkU29ydEJ5QXJyYXlbJENvdW50XSAuICcpIScsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgSWYgdGhlIHRhYmxlIHdhcyBhbHJlYWR5IGpvaW5lZCBmb3Igc2VhcmNoaW5nLCB3ZSByZXVzZSBpdC4KICAgICAgICAgICAgICAgIGlmICggISREeW5hbWljRmllbGRKb2luVGFibGVzeyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFZlcnNpb25UYWJsZUpvaW5lZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gJyBJTk5FUiBKT0lOIGNvbmZpZ2l0ZW1fdmVyc2lvbiB2IE9OIGNpLmxhc3RfdmVyc2lvbl9pZCA9IHYuaWQnOwogICAgICAgICAgICAgICAgICAgICAgICAkVmVyc2lvblRhYmxlSm9pbmVkID0gMTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRTUUxGcm9tCiAgICAgICAgICAgICAgICAgICAgICAgIC49ICIgTEVGVCBPVVRFUiBKT0lOIGR5bmFtaWNfZmllbGRfdmFsdWUgZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyCiAgICAgICAgICAgICAgICAgICAgICAgIE9OICh2LmlkID0gZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyLm9iamVjdF9pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5EIGRmdiREeW5hbWljRmllbGRKb2luQ291bnRlci5maWVsZF9pZCA9ICIgLgogICAgICAgICAgICAgICAgICAgICAgICAkREJPYmplY3QtPlF1b3RlKCAkRHluYW1pY0ZpZWxkLT57SUR9LCAnSW50ZWdlcicgKSAuICIpICI7CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRKb2luVGFibGVzeyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9ICJkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIiOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIrKzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkU1FMT3JkZXJGaWVsZCA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hTUUxPcmRlckZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgICAgIFRhYmxlQWxpYXMgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkSm9pblRhYmxlc3skRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRTUUxTZWxlY3QgLj0gIiwgJFNRTE9yZGVyRmllbGQgIjsKICAgICAgICAgICAgICAgICRTUUxFeHQgICAgLj0gIiAkU1FMT3JkZXJGaWVsZCAiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgam9pbiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGZvciBzb3J0aW5nCiAgICAgICAgICAgICAgICBpZiAoICRTb3J0QnlBcnJheVskQ291bnRdIGVxICdEZXBsU3RhdGUnICYmICEkSm9pbmVkVGFibGVze0RlcGxTdGF0ZX0rKyApIHsKICAgICAgICAgICAgICAgICAgICAkU1FMRnJvbSAuPSAnIElOTkVSIEpPSU4gZ2VuZXJhbF9jYXRhbG9nIGdjX2RlcGwgT04gKHYuZGVwbF9zdGF0ZV9pZCA9IGdjX2RlcGwuaWQpJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFNvcnRCeUFycmF5WyRDb3VudF0gZXEgJ0luY2lTdGF0ZScgJiYgISRKb2luZWRUYWJsZXN7SW5jaVN0YXRlfSsrICkgewogICAgICAgICAgICAgICAgICAgICRTUUxGcm9tIC49ICcgSU5ORVIgSk9JTiBnZW5lcmFsX2NhdGFsb2cgZ2NfaW5jaSBPTiAodi5pbmNpX3N0YXRlX2lkID0gZ2NfaW5jaS5pZCknOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU29ydEJ5QXJyYXlbJENvdW50XSBlcSAnQ3VyRGVwbFN0YXRlJyAmJiAhJEpvaW5lZFRhYmxlc3tDdXJEZXBsU3RhdGV9KysgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gJyBJTk5FUiBKT0lOIGdlbmVyYWxfY2F0YWxvZyBnY19jZGVwbCBPTiAoY2kuY3VyX2RlcGxfc3RhdGVfaWQgPSBnY19jZGVwbC5pZCknOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU29ydEJ5QXJyYXlbJENvdW50XSBlcSAnQ3VySW5jaVN0YXRlJyAmJiAhJEpvaW5lZFRhYmxlc3tDdXJJbmNpU3RhdGV9KysgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gJyBJTk5FUiBKT0lOIGdlbmVyYWxfY2F0YWxvZyBnY19jaW5jaSBPTiAoY2kuY3VyX2luY2lfc3RhdGVfaWQgPSBnY19jaW5jaS5pZCknOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgUmVndWxhciBzb3J0LgogICAgICAgICAgICAgICAgJFNRTFNlbGVjdCAuPSAnLCAnIC4gJFNvcnRPcHRpb25zeyAkU29ydEJ5QXJyYXlbJENvdW50XSB9OwogICAgICAgICAgICAgICAgJFNRTEV4dCAgICAuPSAnICcgLiAkU29ydE9wdGlvbnN7ICRTb3J0QnlBcnJheVskQ291bnRdIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJE9yZGVyQnlBcnJheVskQ291bnRdIGVxICdVcCcgKSB7CiAgICAgICAgICAgICAgICAkU1FMRXh0IC49ICcgQVNDJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTUUxFeHQgLj0gJyBERVNDJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkQ2FjaGVPYmplY3Q7CgogICAgaWYgKCAkUGFyYW17Q2FjaGVUVEx9ICkgewogICAgICAgICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgICAgIG15ICRDYWNoZURhdGEgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIEtleSAgPT4gJFNRTFNlbGVjdCAuICRTUUxGcm9tIC4gJFNRTEV4dCAuICRSZXN1bHQgLiAkTGltaXQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBkZWZpbmVkICRDYWNoZURhdGEgKSB7CiAgICAgICAgICAgIGlmICggcmVmICRDYWNoZURhdGEgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAgICAgcmV0dXJuICV7JENhY2hlRGF0YX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCByZWYgJENhY2hlRGF0YSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgcmV0dXJuIEB7JENhY2hlRGF0YX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCByZWYgJENhY2hlRGF0YSBlcSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkQ2FjaGVEYXRhOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdJbnZhbGlkIHJlZiAnIC4gcmVmKCRDYWNoZURhdGEpIC4gJyEnCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkYXRhYmFzZSBxdWVyeQogICAgbXkgJUNvbmZpZ0l0ZW1zOwogICAgbXkgQENvbmZpZ0l0ZW1JRHM7CiAgICBteSAkQ291bnQ7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTFNlbGVjdCAuICRTUUxGcm9tIC4gJFNRTEV4dCwKICAgICAgICBMaW1pdCA9PiAkTGltaXQKICAgICk7CgogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJENvdW50ID0gJFJvd1swXTsKICAgICAgICAkQ29uZmlnSXRlbXN7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJFJvd1swXTsKICAgIH0KCiAgICAjIHJldHVybiBDT1VOVAogICAgaWYgKCAkUmVzdWx0IGVxICdDT1VOVCcgKSB7CiAgICAgICAgaWYgKCRDYWNoZU9iamVjdCkgewogICAgICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgICAgIEtleSAgID0+ICRTUUxTZWxlY3QgLiAkU1FMRnJvbSAuICRTUUxFeHQgLiAkUmVzdWx0IC4gJExpbWl0LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvdW50LAogICAgICAgICAgICAgICAgVFRMICAgPT4gJFBhcmFte0NhY2hlVFRMfSB8fCA2MCAqIDQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkQ291bnQ7CiAgICB9CgogICAgIyByZXR1cm4gSEFTSAogICAgZWxzaWYgKCAkUmVzdWx0IGVxICdIQVNIJyApIHsKICAgICAgICBpZiAoJENhY2hlT2JqZWN0KSB7CiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFNRTFNlbGVjdCAuICRTUUxGcm9tIC4gJFNRTEV4dCAuICRSZXN1bHQgLiAkTGltaXQsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBcJUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICAgICAgVFRMICAgPT4gJFBhcmFte0NhY2hlVFRMfSB8fCA2MCAqIDQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAlQ29uZmlnSXRlbXM7CiAgICB9CgogICAgIyByZXR1cm4gQVJSQVkKICAgIGVsc2UgewogICAgICAgIGlmICgkQ2FjaGVPYmplY3QpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgICAgICBUeXBlICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgICAgICBLZXkgICA9PiAkU1FMU2VsZWN0IC4gJFNRTEZyb20gLiAkU1FMRXh0IC4gJFJlc3VsdCAuICRMaW1pdCwKICAgICAgICAgICAgICAgIFZhbHVlID0+IFxAQ29uZmlnSXRlbUlEcywKICAgICAgICAgICAgICAgIFRUTCAgID0+ICRQYXJhbXtDYWNoZVRUTH0gfHwgNjAgKiA0LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gQENvbmZpZ0l0ZW1JRHM7CiAgICB9Cn0KCnN1YiBfVmVyc2lvblNlYXJjaEluZGV4U1FMSm9pbk5lZWRlZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXR0cmlidXRlIChxdy9OYW1lIERlcGxTdGF0ZXMgSW5jaVN0YXRlcyBEZXBsU3RhdGVJRHMgSW5jaVN0YXRlSURzLykgewogICAgICAgIHJldHVybiAxIGlmICRQYXJhbXtTZWFyY2hQYXJhbXN9eyRBdHRyaWJ1dGV9OwogICAgfQoKICAgIGZvciBteSAkS2V5ICgga2V5cyAkUGFyYW17U2VhcmNoUGFyYW1zfS0+JSogKSB7CiAgICAgICAgcmV0dXJuIDEgaWYgJEtleSA9fiAvXkR5bmFtaWNGaWVsZF8vOwogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Definition.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RGVmaW5pdGlvbjsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkRlZmluaXRpb24gLSBzdWIgbW9kdWxlIG9mIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIGRlZmluaXRpb24gb2YgY29uZmlnIGl0ZW0gY2xhc3NlcyBhbmQgcm9sZXMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWN1dAoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkgbm9uZSB1bmlxKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMiBEZWZpbml0aW9uTGlzdCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBkZWZpbml0aW9uIGxpc3QgZm9yIGEgY2xhc3MgYXMgYW4gYXJyYXktaGFzaCByZWZlcmVuY2UuIFRoZSBsaXN0CmlzIHNvcnRlZCBieSB2ZXJzaW9uLgoKICAgIG15ICREZWZpbml0aW9uTGlzdFJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uTGlzdCgKICAgICAgICBDbGFzc0lEID0+IDEyMywKICAgICk7CgpyZXR1cm5zCgogICAgbXkgJERlZmluaXRpb25MaXN0UmVmID0gWwogICAgICAgICAgewogICAgICAgICAgICAnVmVyc2lvbicgICAgICA9PiAnMScsCiAgICAgICAgICAgICdDcmVhdGVUaW1lJyAgID0+ICcyMDEyLTA2LTEyIDE0OjA5OjQzJywKICAgICAgICAgICAgJ0RlZmluaXRpb25JRCcgPT4gJzEnLAogICAgICAgICAgICAnQ3JlYXRlQnknICAgICA9PiAnMTIzJywKICAgICAgICAgICAgJ0RlZmluaXRpb24nICAgPT4gJy0tLQotIEtleTogVmVuZG9yCiAgTmFtZTogVmVuZG9yCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogIC0gVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogNTAKCi0gS2V5OiBEZXNjcmlwdGlvbgogIE5hbWU6IERlc2NyaXB0aW9uCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogIC0gVHlwZTogVGV4dEFyZWEKCi0gS2V5OiBUeXBlCiAgTmFtZTogVHlwZQogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAtIFR5cGU6IFRleHRBcmVhCiAgLSBUeXBlOiBHZW5lcmFsQ2F0YWxvZ1wKICAgIENsYXNzOiBJVFNNOjpDb25maWdJdGVtOjpDb21wdXRlcjo6VHlwZQogICAgVHJhbnNsYXRpb246IDEKIyAuLi4gZXRjIC4uLgonLAogICAgICAgICAgfSwKICAgIF07Cgo9Y3V0CgpzdWIgRGVmaW5pdGlvbkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NsYXNzSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDbGFzc0lEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYXNrIGRhdGFiYXNlCiAgICBteSAkUm93cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RBbGwoCiAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApTRUxFQ1QgaWQsIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiwgdmVyc2lvbiwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieQogIEZST00gY29uZmlnaXRlbV9kZWZpbml0aW9uCiAgV0hFUkUgY2xhc3NfaWQgPSA/CiAgT1JERVIgQlkgdmVyc2lvbgpFTkRfU1FMCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q2xhc3NJRH0gXSwKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyBkZWZpbmVkICRSb3dzOwoKICAgIG15IEBEZWZpbml0aW9uTGlzdDsKICAgIGZvciBteSAkUm93ICggJFJvd3MtPkAqICkgewogICAgICAgIG15ICVEZWZpbml0aW9uOwogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb25JRH0gPSAkUm93LT5bMF07CiAgICAgICAgJERlZmluaXRpb257RGVmaW5pdGlvbn0gICA9ICRSb3ctPlsxXSB8fCAiLS0tIHt9IjsKICAgICAgICAkRGVmaW5pdGlvbntWZXJzaW9ufSAgICAgID0gJFJvdy0+WzJdOwogICAgICAgICREZWZpbml0aW9ue0NyZWF0ZVRpbWV9ICAgPSAkUm93LT5bM107CiAgICAgICAgJERlZmluaXRpb257Q3JlYXRlQnl9ICAgICA9ICRSb3ctPls0XTsKCiAgICAgICAgIyBDaGVjayBpZiBkZWZpbml0aW9uIGNvZGUgaXMgbm90IGEgWUFNTCBzdHJpbmcuCiAgICAgICAgaWYgKCBzdWJzdHIoICREZWZpbml0aW9ue0RlZmluaXRpb259LCAwLCAzICkgbmUgJy0tLScgKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkRlZmluaXRpb25JRDogJERlZmluaXRpb257RGVmaW5pdGlvbklEfSIKICAgICAgICAgICAgICAgICAgICAuICIgQ2xhc3NJRDogJFBhcmFte0NsYXNzSUR9IgogICAgICAgICAgICAgICAgICAgIC4gIiBmb3VuZCBpbiBsZWdhY3kgUGVybCBjb2RlIGZvcm1hdCwgY2FuIG5vdCBjb250aW51ZSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkRGVmaW5pdGlvbntEZWZpbml0aW9ufSA9ICItLS0ge30iOwogICAgICAgIH0KCiAgICAgICAgcHVzaCBARGVmaW5pdGlvbkxpc3QsIFwlRGVmaW5pdGlvbjsKICAgIH0KCiAgICByZXR1cm4gXEBEZWZpbml0aW9uTGlzdDsKfQoKPWhlYWQyIFJvbGVEZWZpbml0aW9uTGlzdCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBkZWZpbml0aW9uIGxpc3QgZm9yIGEgcm9sZSBhcyBhbiBhcnJheS1oYXNoIHJlZmVyZW5jZS4gVGhlIGxpc3QKaXMgc29ydGVkIGJ5IHZlcnNpb24uIFRoaXMgdGhlIHNhbWUgYXMgQzxEZWZpbml0aW9uTGlzdD4sIGJ1dCB0aGUgcGFyYW1ldGVyIEM8Um9sZUlEPiBpcwp1c2VkIGluc3RlYWQgb2YgQzxDbGFzc0lEPi4KCj1jdXQKCnN1YiBSb2xlRGVmaW5pdGlvbkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHJlbmFtZSB0aGUgcGFyYW1ldGVyCiAgICAkUGFyYW17Q2xhc3NJRH0gPSBkZWxldGUgJFBhcmFte1JvbGVJRH07CgogICAgcmV0dXJuICRTZWxmLT5EZWZpbml0aW9uTGlzdCglUGFyYW0pOwp9Cgo9aGVhZDIgRGVmaW5pdGlvbkdldCgpCgpyZXR1cm5zIGEgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbiBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgRGVmaW5pdGlvbklEID0+IDEyMywKICAgICk7CgpvcgoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAxMjMsCiAgICApOwoKUmV0dXJuczoKCiAgICAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0KICAgICREZWZpbml0aW9uLT57Q2xhc3NJRH0KICAgICREZWZpbml0aW9uLT57Q2xhc3N9ICAgICAgICAgICAgICAgIyBOYW1lIG9mIHRoZSBjbGFzcwogICAgJERlZmluaXRpb24tPntEZWZpbml0aW9ufQogICAgJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfQogICAgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9CiAgICAkRGVmaW5pdGlvbi0+e1ZlcnNpb259CiAgICAkRGVmaW5pdGlvbi0+e0NyZWF0ZVRpbWV9CiAgICAkRGVmaW5pdGlvbi0+e0NyZWF0ZUJ5fQoKPWN1dAoKc3ViIERlZmluaXRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0RlZmluaXRpb25JRH0gJiYgISRQYXJhbXtDbGFzc0lEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgRGVmaW5pdGlvbklEIG9yIENsYXNzSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgQFJvdzsKICAgIGlmICggJFBhcmFte0RlZmluaXRpb25JRH0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGlzIGFscmVhZHkgY2FjaGVkCiAgICAgICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57RGVmaW5pdGlvbkdldH0tPnsgJFBhcmFte0RlZmluaXRpb25JRH0gfQogICAgICAgICAgICBpZiAkU2VsZi0+e0NhY2hlfS0+e0RlZmluaXRpb25HZXR9LT57ICRQYXJhbXtEZWZpbml0aW9uSUR9IH07CgogICAgICAgICMgYXNrIGRhdGFiYXNlIGZvciB0aGUgc3BlY2lmaWVkIGRlZmluaXRpb24gdmVyc2lvbgogICAgICAgIEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkLCBjbGFzc19pZCwgY29uZmlnaXRlbV9kZWZpbml0aW9uLCBkeW5hbWljZmllbGRfZGVmaW5pdGlvbiwgdmVyc2lvbiwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSAnCiAgICAgICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtEZWZpbml0aW9uSUR9IF0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGFzayBkYXRhYmFzZSBmb3IgdGhlIG5ld2VzdCB2ZXJzaW9uIGZvciB0aGUgY2xhc3MKICAgICAgICBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlNlbGVjdFJvd0FycmF5KAogICAgICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgY2xhc3NfaWQsIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiwgZHluYW1pY2ZpZWxkX2RlZmluaXRpb24sIHZlcnNpb24sIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkgJwogICAgICAgICAgICAgICAgLiAnRlJPTSBjb25maWdpdGVtX2RlZmluaXRpb24gJwogICAgICAgICAgICAgICAgLiAnV0hFUkUgY2xhc3NfaWQgPSA/IE9SREVSIEJZIHZlcnNpb24gREVTQycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NsYXNzSUR9IF0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVEZWZpbml0aW9uOwogICAgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSA9ICRSb3dbMF07CiAgICAkRGVmaW5pdGlvbntDbGFzc0lEfSAgICAgID0gJFJvd1sxXTsKICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ICAgPSAkUm93WzJdIHx8ICctLS0ge30nOyAgICAjIGEgWUFNTCBzdHJpbmcKICAgIG15ICREeW5hbWljRmllbGRzID0gJFJvd1szXSB8fCAnLS0tIHt9JzsgICAgICAgICAgICAjIGEgWUFNTCBzdHJpbmcKICAgICREZWZpbml0aW9ue1ZlcnNpb259ICAgID0gJFJvd1s0XTsKICAgICREZWZpbml0aW9ue0NyZWF0ZVRpbWV9ID0gJFJvd1s1XTsKICAgICREZWZpbml0aW9ue0NyZWF0ZUJ5fSAgID0gJFJvd1s2XTsKCiAgICByZXR1cm4ge30gdW5sZXNzICREZWZpbml0aW9ue0RlZmluaXRpb25JRH07CgogICAgIyBDaGVjayBpZiBkZWZpbml0aW9uIGNvZGUgaXMgbm90IGEgWUFNTCBzdHJpbmcuCiAgICBpZiAoIHN1YnN0ciggJERlZmluaXRpb257RGVmaW5pdGlvbn0sIDAsIDMgKSBuZSAnLS0tJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEZWZpbml0aW9uSUQ6ICREZWZpbml0aW9ue0RlZmluaXRpb25JRH0iCiAgICAgICAgICAgICAgICAuICIgQ2xhc3NJRDogJERlZmluaXRpb257Q2xhc3NJRH0iCiAgICAgICAgICAgICAgICAuICIgZm91bmQgaW4gbGVnYWN5IFBlcmwgY29kZSBmb3JtYXQsIGNhbiBub3QgY29udGludWUiLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ID0gIi0tLSB7fSI7CiAgICB9CgogICAgJERlZmluaXRpb257RGVmaW5pdGlvblJlZn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgIERhdGEgPT4gJERlZmluaXRpb257RGVmaW5pdGlvbn0sCiAgICApOwoKICAgICMgdGhpcyBjYW4gYmUgY2hhbmdlcyB0byBwcm9kdWNlIGFuIGVycm9yIHNvbWV3aGVuCiAgICAjIGN1cnJlbnRseSAoMTEuMCkgd2Ugd2lsbCBoYXZlIHRvIGRlYWwgd2l0aCBsZWdhY3kgZGVmaW5pdGlvbnMgaW4gdGhlIHN5c3RlbQogICAgaWYgKCByZWYgJERlZmluaXRpb257RGVmaW5pdGlvblJlZn0gbmUgJ0hBU0gnICkgewogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb25SZWZ9ID0ge307CiAgICB9CgogICAgJERlZmluaXRpb257RHluYW1pY0ZpZWxkUmVmfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkRHluYW1pY0ZpZWxkcywKICAgICk7CgogICAgIyBtZXJnZSB0aGUgcm9sZXMgaW50byB0aGUgRGVmaW5pdGlvblJlZiwgdGhlIHBhc3NlZCBpbiByZWZlcmVuY2UgaXMgbW9kaWZpZWQgaW4gcGxhY2UKICAgICRTZWxmLT5fUHJvY2Vzc1JvbGVzKAogICAgICAgIERlZmluaXRpb25SZWYgPT4gJERlZmluaXRpb257RGVmaW5pdGlvblJlZn0sCiAgICApOwoKICAgICMgcHJlcGFyZSBkZWZpbml0aW9uCiAgICAjIFRPRE86IFJld29yaz8KICAgICNpZiAoICREZWZpbml0aW9ue0RlZmluaXRpb25SZWZ9ICYmIHJlZiAkRGVmaW5pdGlvbntEZWZpbml0aW9uUmVmfSBlcSAnQVJSQVknICkgewogICAgIyAgICAkU2VsZi0+X0RlZmluaXRpb25QcmVwYXJlKAogICAgIyAgICAgICAgRGVmaW5pdGlvblJlZiA9PiAkRGVmaW5pdGlvbntEZWZpbml0aW9uUmVmfSwKICAgICMgICAgKTsKICAgICN9CiAgICAjZWxzZSB7CiAgICAjICAgICREZWZpbml0aW9ue0RlZmluaXRpb25SZWZ9ID0gJyc7CiAgICAjfQoKICAgICMgYWRkIHRoZSBuYW1lIG9mIHRoZSBjb25maWcgaXRlbSBjbGFzcyB0byB0aGUgcm9sZSBkZWZpbml0aW9uCiAgICB7CiAgICAgICAgbXkgJElEMk5hbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKCiAgICAgICAgJERlZmluaXRpb257Q2xhc3N9ID0gJElEMk5hbWUtPnsgJERlZmluaXRpb257Q2xhc3NJRH0gfTsKICAgIH0KCiAgICAjIGNhY2hlIHRoZSByZXN1bHQKICAgICRTZWxmLT57Q2FjaGV9LT57RGVmaW5pdGlvbkdldH0tPnsgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSB9ID0gXCVEZWZpbml0aW9uOwoKICAgIHJldHVybiBcJURlZmluaXRpb247Cn0KCj1oZWFkMiBSb2xlRGVmaW5pdGlvbkdldCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSByb2xlIGRlZmluaXRpb24gYXMgaGFzaCByZWZlcmVuY2UuIFRoZSByb2xlIGRlZmluaXRpb25zIGFyZSBzdG9yZWQgaW4gdGhlCnRhYmxlIEk8Y29uZmlnaXRlbV9kZWZpbml0aW9uPiwganVzdCBsaWtlIHRoZSBjb25maWcgaXRlbSBkZWZpbml0aW9ucy4KCkdldCBhIHNwZWNpZmljIHZlcnNpb24gd2hlbiB0aGUgdGVjaG5pY2FsIElEIGlzIGtub3duOgoKICAgIG15ICRSb2xlRGVmaW5pdGlvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Sb2xlRGVmaW5pdGlvbkdldCgKICAgICAgICBEZWZpbml0aW9uSUQgPT4gMTIsCiAgICApOwoKT3IgZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbjoKCiAgICBteSAkUm9sZURlZmluaXRpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+Um9sZURlZmluaXRpb25HZXQoCiAgICAgICAgUm9sZUlEID0+IDEyMywgIyBhbmFsb2dvdXMgdG8gQ2xhc3NJRCBpbiBEZWZpbml0aW9uR2V0KCkKICAgICk7CgpPciBnZXQgYSBzcGVjaWZpYyB2ZXJzaW9uIHdoZW4gdGhlIHZlcnNpb24gaXMga25vd24uCgogICAgbXkgJFJvbGVEZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uR2V0KAogICAgICAgIFJvbGVJRCAgPT4gMTIzLAogICAgICAgIFZlcnNpb24gPT4gMiwKICAgICk7CgpSZXR1cm5zOgoKICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfQogICAgJERlZmluaXRpb24tPntSb2xlSUR9ICAgICAgICAgICAgICAgICAjIGFuYWxvZ291cyB0byBDbGFzc0lEIGluIERlZmluaXRpb25HZXQoKQogICAgJERlZmluaXRpb24tPntSb2xlfSAgICAgICAgICAgICAgICAgICAjIG5hbWUgb2YgdGhlIHJvbGUsIGFuYWxvZ291cyB0byBDbGFzcyBpbiBEZWZpbml0aW9uR2V0KCkKICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0KICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0KICAgICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfQogICAgJERlZmluaXRpb24tPntWZXJzaW9ufQogICAgJERlZmluaXRpb24tPntDcmVhdGVUaW1lfQogICAgJERlZmluaXRpb24tPntDcmVhdGVCeX0KCj1jdXQKCnN1YiBSb2xlRGVmaW5pdGlvbkdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17RGVmaW5pdGlvbklEfSAmJiAhJFBhcmFte1JvbGVJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIERlZmluaXRpb25JRCBvciBSb2xlSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNyZWF0ZSBTUUwKICAgIG15ICggQFdoZXJlLCBAQmluZHMgKTsKICAgIGlmICggJFBhcmFte0RlZmluaXRpb25JRH0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGlzIGFscmVhZHkgY2FjaGVkCiAgICAgICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57Um9sZURlZmluaXRpb25HZXR9LT57ICRQYXJhbXtEZWZpbml0aW9uSUR9IH0KICAgICAgICAgICAgaWYgJFNlbGYtPntDYWNoZX0tPntSb2xlRGVmaW5pdGlvbkdldH0tPnsgJFBhcmFte0RlZmluaXRpb25JRH0gfTsKCiAgICAgICAgcHVzaCBAV2hlcmUsICdpZCA9ID8nOwogICAgICAgIHB1c2ggQEJpbmRzLCBcJFBhcmFte0RlZmluaXRpb25JRH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIGFzayBkYXRhYmFzZSBmb3IgdGhlIG5ld2VzdCB2ZXJzaW9uIGZvciB0aGUgY2xhc3MKICAgICAgICBwdXNoIEBXaGVyZSwgJ2NsYXNzX2lkID0gPyc7CiAgICAgICAgcHVzaCBAQmluZHMsIFwkUGFyYW17Um9sZUlEfTsKCiAgICAgICAgIyBvciByZXF1ZXN0IGEgc3BlY2lmaWMgdmVyc2lvbgogICAgICAgIGlmICggJFBhcmFte1ZlcnNpb259ICkgewogICAgICAgICAgICBwdXNoIEBXaGVyZSwgJ3ZlcnNpb24gPSA/JzsKICAgICAgICAgICAgcHVzaCBAQmluZHMsIFwkUGFyYW17VmVyc2lvbn07CiAgICAgICAgfQogICAgfQoKICAgIG15ICRTUUwgPSBzcHJpbnRmIDw8J0VORF9TUUwnLCBqb2luKCAnIEFORCAnLCBAV2hlcmUgKTsKU0VMRUNUIGlkLCBjbGFzc19pZCwgY29uZmlnaXRlbV9kZWZpbml0aW9uLCB2ZXJzaW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5CiAgRlJPTSBjb25maWdpdGVtX2RlZmluaXRpb24KICBXSEVSRSAlcwogIE9SREVSIEJZIHZlcnNpb24gREVTQwpFTkRfU1FMCgogICAgbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RSb3dBcnJheSgKICAgICAgICBTUUwgID0+ICRTUUwsCiAgICAgICAgQmluZCA9PiBcQEJpbmRzLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVEZWZpbml0aW9uOwogICAgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSA9ICRSb3dbMF07CiAgICAkRGVmaW5pdGlvbntSb2xlSUR9ICAgICAgID0gJFJvd1sxXTsKICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ICAgPSAkUm93WzJdIHx8ICItLS0ge30iOwogICAgJERlZmluaXRpb257VmVyc2lvbn0gICAgICA9ICRSb3dbM107CiAgICAkRGVmaW5pdGlvbntDcmVhdGVUaW1lfSAgID0gJFJvd1s0XTsKICAgICREZWZpbml0aW9ue0NyZWF0ZUJ5fSAgICAgPSAkUm93WzVdOwoKICAgIHJldHVybiB7fSB1bmxlc3MgJERlZmluaXRpb257RGVmaW5pdGlvbklEfTsKCiAgICAjIENoZWNrIGlmIGRlZmluaXRpb24gY29kZSBpcyBub3QgYSBZQU1MIHN0cmluZy4KICAgIGlmICggc3Vic3RyKCAkRGVmaW5pdGlvbntEZWZpbml0aW9ufSwgMCwgMyApIG5lICctLS0nICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkRlZmluaXRpb25JRDogJERlZmluaXRpb257RGVmaW5pdGlvbklEfSIKICAgICAgICAgICAgICAgIC4gIiBSb2xlSUQ6ICREZWZpbml0aW9ue1JvbGVJRH0iCiAgICAgICAgICAgICAgICAuICIgZm91bmQgaW4gbGVnYWN5IFBlcmwgY29kZSBmb3JtYXQsIGNhbiBub3QgY29udGludWUiLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ID0gIi0tLSB7fSI7CiAgICB9CgogICAgJERlZmluaXRpb257RGVmaW5pdGlvblJlZn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgIERhdGEgPT4gJERlZmluaXRpb257RGVmaW5pdGlvbn0sCiAgICApOwoKICAgICMgYWRkIHRoZSBuYW1lIG9mIHRoZSByb2xlIHRvIHRoZSByb2xlIGRlZmluaXRpb24KICAgIHsKICAgICAgICBteSAkSUQyTmFtZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OlJvbGUnLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9ue1JvbGV9ID0gJElEMk5hbWUtPnsgJERlZmluaXRpb257Um9sZUlEfSB9OwogICAgfQoKICAgICMgY2FjaGUgdGhlIHJlc3VsdAogICAgJFNlbGYtPntDYWNoZX0tPntSb2xlRGVmaW5pdGlvbkdldH0tPnsgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSB9ID0gXCVEZWZpbml0aW9uOwoKICAgIHJldHVybiBcJURlZmluaXRpb247Cn0KCj1oZWFkMiBEZWZpbml0aW9uQWRkKCkKCmFkZHMgYSBuZXcgY29uZmlnIGl0ZW0gY2xhc3MgZGVmaW5pdGlvbi4gVGhpcyBjYW4gYmUgdGhlIGluaXRpYWwgdmVyc2lvbiBvZiBhIGNsYXNzIGRlZmluaXRpb24gb3IgYQpjaGFuZ2Ugb2YgYW4gZXhpc3RpbmcgY2xhc3MgZGVmaW5pdGlvbi4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgQ2xhc3NJRCAgICA9PiAxMjMsCiAgICAgICAgRGVmaW5pdGlvbiA9PiAndGhlIGRlZmluaXRpb24gY29kZScsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgIEZvcmNlICAgICAgPT4gMSwgICAgIyBvcHRpb25hbCwgZm9yIGludGVybmFsIHVzZSwgZm9yY2UgYWRkIGV2ZW4gaWYgZGVmaW5pdGlvbiBpcyB1bmNoYW5nZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKHVzZWQgaWYgZHluYW1pYyBmaWVsZHMgY2hhbmdlZCwgb3IgYSBkeW5hbWljIHJvbGUgY2hhbmdlZCkKICAgICk7CgpSZXR1cm5zIGluIHRoZSBjYXNlIG9mIHN1Y2Nlc3M6CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgPT4gMSwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gMTIzLAogICAgfTsKClJldHVybnMgYW4gZXJyb3IgbWVzc2FnZSBpbiB0aGUgY2FzZSBvZiBmYWlsdXJlOgoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgID0+IDAsCiAgICAgICAgRXJyb3IgICAgID0+ICJOZWVkICVzISIsCiAgICAgICAgRXJyb3JBcmdzID0+IFsgJ0RlZmluaXRpb24nIF0sCiAgICB9OwoKT25seSB0d28gYXJndW1lbnRzIG9mIHRoZSBlcnJvciBtZXNzYWdlIGFyZSBzdXBwb3J0ZWQuCgo9Y3V0CgpzdWIgRGVmaW5pdGlvbkFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDbGFzc0lEIERlZmluaXRpb24gVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICBteSAkTWVzc2FnZSA9ICJOZWVkICVzISI7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+IHNwcmludGYoICRNZXNzYWdlLCAkQXJndW1lbnQgKSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yICAgICA9PiAkTWVzc2FnZSwKICAgICAgICAgICAgICAgIEVycm9yQXJncyA9PiBbJEFyZ3VtZW50XSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBzYW5pdHkgb2YgdGhlIGRlZmluaXRpb24KICAgIHsKICAgICAgICBteSAkQ2hlY2tSZXN1bHQgPSAkU2VsZi0+RGVmaW5pdGlvbkNoZWNrKAogICAgICAgICAgICBEZWZpbml0aW9uID0+ICRQYXJhbXtEZWZpbml0aW9ufSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJENoZWNrUmVzdWx0IHVubGVzcyAkQ2hlY2tSZXN1bHQtPntTdWNjZXNzfTsKICAgIH0KCiAgICAjIGdldCBsYXN0IGRlZmluaXRpb24KICAgIG15ICRMYXN0RGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIGRlZmluaXRpb24gaXRzZWxmIG9yIHRoZSBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZWQKICAgIG15ICREZWZpbml0aW9uQ2hhbmdlZCA9CiAgICAgICAgKCAhJExhc3REZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSApCiAgICAgICAgfHwKICAgICAgICAoICRMYXN0RGVmaW5pdGlvbi0+e0RlZmluaXRpb259IG5lICRQYXJhbXtEZWZpbml0aW9ufSApOwoKICAgICMgVE9ETzogJFBhcmFte0ZvcmNlfSB8fCAkU2VsZi0+X0NoZWNrRHluYW1pY0ZpZWxkQ2hhbmdlKCk7IGNhbiBiZSB0YWtlbiBvdXQgb2YgX0RlZmluaXRpb25TeW5jKCkgd2l0aCBhIGxpdHRsZSBhZGFwdGlvbgogICAgJERlZmluaXRpb25DaGFuZ2VkIHx8PSAkUGFyYW17Rm9yY2V9OwoKICAgICMgc3RvcCBhZGQsIGlmIGRlZmluaXRpb24gd2FzIG5vdCBjaGFuZ2VkCiAgICBpZiAoICEkRGVmaW5pdGlvbkNoYW5nZWQgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH07CiAgICB9CgogICAgIyBhZGQgZHluYW1pYyBmaWVsZCBpbmZvLCByb2xlcyBhcmUgYWxyZWFkeSBjb25zaWRlcmVkIGluIF9EZWZpbml0aW9uRHluYW1pY0ZpZWxkR2V0CiAgICBteSAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbiA9ICRTZWxmLT5fRGVmaW5pdGlvbkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAlUGFyYW0sCiAgICApIHx8ICctLS0ge30nOwoKICAgICMgaW5jcmVtZW50IHZlcnNpb24sIHN0YXJ0IHdpdGggdmVyc2lvbiAxIGZvciBjb21wbGV0ZWx5IG5ldyBjbGFzcyBkZWZpbml0aW9ucwogICAgbXkgJFZlcnNpb24gPSAoICRMYXN0RGVmaW5pdGlvbi0+e1ZlcnNpb259IHx8IDAgKSArIDE7CgogICAgIyBpbnNlcnQgbmV3IGRlZmluaXRpb24KICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gY29uZmlnaXRlbV9kZWZpbml0aW9uICcKICAgICAgICAgICAgLiAnKGNsYXNzX2lkLCBjb25maWdpdGVtX2RlZmluaXRpb24sIGR5bmFtaWNmaWVsZF9kZWZpbml0aW9uLCB2ZXJzaW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5KSBWQUxVRVMgJwogICAgICAgICAgICAuICcoPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDbGFzc0lEfSwgXCRQYXJhbXtEZWZpbml0aW9ufSwgXCREeW5hbWljRmllbGREZWZpbml0aW9uLCBcJFZlcnNpb24sIFwkUGFyYW17VXNlcklEfSBdLAogICAgKTsKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgICAgICBFcnJvciAgID0+ICdJbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9kZWZpbml0aW9uIHdhcyBub3Qgc3VjY2Vzc2Z1bCcsCiAgICB9IHVubGVzcyAkU3VjY2VzczsKCiAgICAjIGdldCBpZCBvZiBuZXcgZGVmaW5pdGlvbgogICAgbXkgKCREZWZpbml0aW9uSUQpID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkIEZST00gY29uZmlnaXRlbV9kZWZpbml0aW9uIFdIRVJFICcKICAgICAgICAgICAgLiAnY2xhc3NfaWQgPSA/IEFORCB2ZXJzaW9uID0gPyAnCiAgICAgICAgICAgIC4gJ09SREVSIEJZIHZlcnNpb24gREVTQycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NsYXNzSUR9LCBcJFZlcnNpb24gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGR5bmFtaWMgZmllbGRzIGFyZSBzeW5jZWQKICAgICRTZWxmLT5EZWZpbml0aW9uU2V0U3luY2VkKAogICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgKTsKCiAgICAjIHRyaWdnZXIgRGVmaW5pdGlvbkNyZWF0ZSBldmVudAogICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnRGVmaW5pdGlvbkNyZWF0ZScsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBEZWZpbml0aW9uSUQgID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgICAgIE9sZERlZmluaXRpb24gPT4gJExhc3REZWZpbml0aW9uLAogICAgICAgICAgICBDbGFzc0lEICAgICAgID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgQ29tbWVudCAgICAgICA9PiAkRGVmaW5pdGlvbklELAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLAogICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvbklELAogICAgICAgIFZlcnNpb24gICAgICA9PiAkVmVyc2lvbiwKICAgIH07Cn0KCj1oZWFkMiBSb2xlRGVmaW5pdGlvbkFkZCgpCgphZGRzIGEgbmV3IHJvbGUgZGVmaW5pdGlvbi4gVGhpcyBjYW4gYmUgdGhlIGluaXRpYWwgdmVyc2lvbiBvZiBhIHJvbGUgb3IgYQpjaGFuZ2Ugb2YgYW4gZXhpc3Rpbmcgcm9sZS4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uQWRkKAogICAgICAgIFJvbGVJRCAgICAgPT4gMTIzLAogICAgICAgIERlZmluaXRpb24gPT4gJ3RoZSBkZWZpbml0aW9uIGNvZGUnLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICBGb3JjZSAgICAgID0+IDEsICAgICMgb3B0aW9uYWwsIGZvciB1c2UgZHVyaW5nIGltcG9ydCBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcwogICAgKTsKClJldHVybnMgaW4gdGhlIGNhc2Ugb2Ygc3VjY2VzczoKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLAogICAgICAgIERlZmluaXRpb25JRCA9PiAxMjMsICMgZXZlbiB0aG91Z2ggaXQgaXMgYSByb2xlCiAgICAgICAgVmVyc2lvbiAgICAgID0+IDQsCiAgICB9OwoKUmV0dXJucyBhbiBlcnJvciBtZXNzYWdlIGluIHRoZSBjYXNlIG9mIGZhaWx1cmU6CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgICAgICBFcnJvciAgICAgPT4gIk5lZWQgJXMhIiwKICAgICAgICBFcnJvckFyZ3MgPT4gWyAnRGVmaW5pdGlvbicgXSwKICAgIH07CgpPbmx5IHR3byBhcmd1bWVudHMgb2YgdGhlIGVycm9yIG1lc3NhZ2UgYXJlIHN1cHBvcnRlZC4KCj1jdXQKCnN1YiBSb2xlRGVmaW5pdGlvbkFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhSb2xlSUQgRGVmaW5pdGlvbiBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgIG15ICRNZXNzYWdlID0gIk5lZWQgJXMhIjsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gc3ByaW50ZiggJE1lc3NhZ2UsICRBcmd1bWVudCApLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3IgICAgID0+ICRNZXNzYWdlLAogICAgICAgICAgICAgICAgRXJyb3JBcmdzID0+IFskQXJndW1lbnRdLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHNhbml0eSBvZiB0aGUgcm9sZSBkZWZpbml0aW9uCiAgICB7CiAgICAgICAgbXkgJENoZWNrUmVzdWx0ID0gJFNlbGYtPlJvbGVEZWZpbml0aW9uQ2hlY2soCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJFBhcmFte0RlZmluaXRpb259LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkQ2hlY2tSZXN1bHQgdW5sZXNzICRDaGVja1Jlc3VsdC0+e1N1Y2Nlc3N9OwogICAgfQoKICAgICMgZ2V0IGxhc3QgZGVmaW5pdGlvbiwgZXZlbiB0aG91Z2ggdGhpcyBpcyByb2xlCiAgICBteSAkTGFzdERlZmluaXRpb24gPSAkU2VsZi0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtSb2xlSUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIGRlZmluaXRpb24gaXRzZWxmIG9yIHRoZSBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZWQKICAgIG15ICREZWZpbml0aW9uQ2hhbmdlZCA9CiAgICAgICAgJFBhcmFte0ZvcmNlfQogICAgICAgIHx8CiAgICAgICAgKCAhJExhc3REZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSApCiAgICAgICAgfHwKICAgICAgICAoICRMYXN0RGVmaW5pdGlvbi0+e0RlZmluaXRpb259IG5lICRQYXJhbXtEZWZpbml0aW9ufSApOwoKICAgICMgc3RvcCBhZGQsIGlmIGRlZmluaXRpb24gd2FzIG5vdCBjaGFuZ2VkCiAgICBpZiAoICEkRGVmaW5pdGlvbkNoYW5nZWQgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH07CiAgICB9CgogICAgIyBpbmNyZW1lbnQgdmVyc2lvbiwgc3RhcnRpbmcgd2l0aCAxIGZvciB0aGUgaW5pdGlhbCB2ZXJzaW9uCiAgICBteSAkVmVyc2lvbiA9ICggJExhc3REZWZpbml0aW9uLT57VmVyc2lvbn0gfHwgMCApICsgMTsKCiAgICAjIGluc2VydCBuZXcgZGVmaW5pdGlvbiB3aXRob3V0IGR5bmFtaWNmaWVsZF9kZWZpbml0aW9uCiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiAnCiAgICAgICAgICAgIC4gJyhjbGFzc19pZCwgY29uZmlnaXRlbV9kZWZpbml0aW9uLCB2ZXJzaW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5KSBWQUxVRVMgJwogICAgICAgICAgICAuICcoPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsgXCggJFBhcmFte1JvbGVJRH0sICRQYXJhbXtEZWZpbml0aW9ufSwgJFZlcnNpb24sICRQYXJhbXtVc2VySUR9ICkgXSwKICAgICk7CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgRXJyb3IgICA9PiAnSW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiB3YXMgbm90IHN1Y2Nlc3NmdWwnLAogICAgfSB1bmxlc3MgJFN1Y2Nlc3M7CgogICAgIyBnZXQgaWQgb2YgbmV3IGRlZmluaXRpb24KICAgIG15ICgkTmV3Um9sZURlZmluaXRpb25JRCkgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtX2RlZmluaXRpb24gV0hFUkUgJwogICAgICAgICAgICAuICdjbGFzc19pZCA9ID8gQU5EIHZlcnNpb24gPSA/ICcKICAgICAgICAgICAgLiAnT1JERVIgQlkgdmVyc2lvbiBERVNDJywKICAgICAgICBCaW5kICA9PiBbIFwoICRQYXJhbXtSb2xlSUR9LCAkVmVyc2lvbiApIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBUaGVyZSBpcyBub3cgYW4gaW5pdGlhbCBvciBzdWJzZXF1ZW50IHZlcnNpb24gb2YgYSByb2xlIGRlZmluaXRpb24uIFRoaXMgbmV3IGRlZmluaXRpb24KICAgICMgbWlnaHQgaGF2ZSBhZGRlZCBvciByZW1vdmVkIGR5bmFtaWMgZmllbGRzLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGNvbmZpZyBpdGVtIGNsYXNzZWQgdGhhdAogICAgIyBpbmNsdWRlIHRoZSByb2xlIGR5bmFtaWNhbGx5IG11c3QgYmUgdXBkYXRlZCB0b28uCiAgICAkU2VsZi0+X0RlZmluaXRpb25DcmVhdGVBZnRlclJvbGVDcmVhdGUoCiAgICAgICAgUm9sZUlEID0+ICRQYXJhbXtSb2xlSUR9LAogICAgKTsKCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAxLAogICAgICAgIERlZmluaXRpb25JRCA9PiAkTmV3Um9sZURlZmluaXRpb25JRCwKICAgICAgICBWZXJzaW9uICAgICAgPT4gJFZlcnNpb24sCiAgICB9Owp9Cgo9aGVhZDIgRGVmaW5pdGlvbkNoZWNrKCkKCmNoZWNrcyB0aGUgc3ludGF4IG9mIGEgbmV3IGRlZmluaXRpb24uIEJvdGggY2xhc3MgYW5kIHJvbGUgZGVmaW5pdGlvbnMgY2FuIGJlIGNoZWNrZWQKd2l0aCB0aGlzIG1ldGhvZC4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25DaGVjaygKICAgICAgICBEZWZpbml0aW9uICAgICAgPT4gJ3RoZSBkZWZpbml0aW9uIGNvZGUnLAogICAgICAgIENoZWNrU3ViRWxlbWVudCA9PiAxLCAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgZGVmYXVsdCBpcyAwLCB0byBjaGVjayBzdWIgZWxlbWVudHMgcmVjdXJzaXZlbHkpCiAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICdDbGFzcycsICAgICAgICAgICAjIG9wdGlvbmFsLCBkZWZhdWx0IGlzICdDbGFzcycsIHBvc3NpYmxlIHZhbHVlcyBhcmUgJ0NsYXNzJyBhbmQgJ1JvbGUnCiAgICApOwoKUmV0dXJucyBpbiB0aGUgY2FzZSBvZiBhIHZhbGlkIGRlZmluaXRpb246CgogICAgbXkgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9OwoKSW5kaWNhdGVzIHRoZSBmaXJzdCBmb3VuZCBwcm9ibGVtIGluIHRoZSBjYXNlIG9mIGFuIGludmFsaWQgZGVmaW5pdGlvbjoKCiAgICBteSAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgICAgIEVycm9yICAgICA9PiBxeyVzIGlzIG1pc3NpbmcuIFBsZWFzZSBwcm92aWRlIGRhdGEgZm9yICVzIGluIHRoZSBkZWZpbml0aW9uLn0sCiAgICAgICAgRXJyb3JBcmdzID0+IFsgJ1NlY3Rpb25zJywgJ1NlY3Rpb25zJyBdLAogICAgfTsKCk5vdGUgdGhhdCB0aGUgZXJyb3IgbWVzc2FnZSBpcyBzcGxpdCB1cCBpbiBjb25zdGFudCBhbmQgdmFyaWFibGUgcGFydHMuIFRoaXMgYWxsb3dzIHRyYW5zbGF0aW9uIGluIHRoZSB1c2VyIGludGVyZmFjZS4KCj1jdXQKCnN1YiBEZWZpbml0aW9uQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0RlZmluaXRpb259ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBEZWZpbml0aW9uIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgVGhpcyBtZXRob2QgaXMgdXNlZCBmb3Igcm9sZXMgYW5kIGNsYXNzZXMKICAgIG15ICRUeXBlID0gJFBhcmFte1R5cGV9IC8vICdDbGFzcyc7CgogICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgbXkgJFJldHVybkVycm9yID0gc3ViIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgICAgICAgICAgRXJyb3IgICAgID0+ICRfWzBdLAogICAgICAgICAgICBFcnJvckFyZ3MgPT4gWyAoICRfWzFdIC8vICcnICksICggJF9bMl0gLy8gJycgKSBdLCAgICAjIG9ubHkgdHdvIGFyZ3MgYXJlIHN1cHBvcnRlZAogICAgICAgIH07CiAgICB9OwoKICAgICMgc2ltcGxlIFlBTUwgcGFyc2luZywgd2l0aG91dCB1c2luZyBZQU1MIHRhZ3MKICAgIG15ICREZWZpbml0aW9uUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRQYXJhbXtEZWZpbml0aW9ufSwKICAgICk7CgogICAgIyBZQU1MIGludmFsaWQKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCREZWZpbml0aW9uUmVmKSApIHsKICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgIFRyYW5zbGF0YWJsZSgnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0LicpCiAgICAgICAgKTsKICAgIH0KCiAgICAjIENoZWNrIGlmIGRlZmluaXRpb24gc3RhcnRzIHdpdGggJy0tLScKICAgICMgVGhpcyBpcyBhIGxhc3QgY2hlY2sgZm9yIGxlZ2FjeSBsZWdhY3kgRGVmaW5pdGlvbnMgKHByZSBPVFJTNikgd2hpY2ggd2hlcmUgbm90IFlBTUwKICAgICMgV2UgY2FuIHJlbW92ZSB0aGlzIHRvZ2V0aGVyIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgY29kZSBpbiBEZWZpbml0aW9uR2V0KCkgZXRjLiB3aXRoIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UgYWZ0ZXIgMTEuMAogICAgaWYgKCBzdWJzdHIoICRQYXJhbXtEZWZpbml0aW9ufSwgMCwgMyApIG5lICctLS0nICkgewogICAgICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAgICAgVHJhbnNsYXRhYmxlKCdTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLicpCiAgICAgICAgKTsKICAgIH0KCiAgICAjIE1lcmdlIHRoZSByb2xlcyBpbnRvIHRoZSBEZWZpbml0aW9uUmVmLiBUaGUgcGFzc2VkIGluIHJlZmVyZW5jZSBpcyBtb2RpZmllZCBpbiBwbGFjZS4KICAgICMgVGhpcyBtaWdodCBjcmVhdGVzIHRoZSAnU2VjdGlvbnMnIGF0dHJpYnV0ZSB3aGVuIGl0IGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4KICAgIGlmICggJFR5cGUgZXEgJ0NsYXNzJyApIHsKICAgICAgICBteSAkUmVzdWx0ID0gJFNlbGYtPl9Qcm9jZXNzUm9sZXMoCiAgICAgICAgICAgIERlZmluaXRpb25SZWYgPT4gJERlZmluaXRpb25SZWYsCiAgICAgICAgICAgIEltcG9ydFJvbGVzICAgPT4gJFBhcmFte0ltcG9ydFJvbGVzfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJFJlc3VsdCB1bmxlc3MgJFJlc3VsdC0+e1N1Y2Nlc3N9OwogICAgfQoKICAgICMgY2hlY2sgdGhlIGRhdGEgc3RydWN0dXJlcyBvZiB0aGUgdG9wIGxldmVsIGF0dHJpYnV0ZXMKICAgIG15ICVFeHBlY3RlZEZvcm1hdCA9ICgKICAgICAgICBTZWN0aW9ucyA9PiAnSGFzaCcsCiAgICApOwogICAgaWYgKCAkVHlwZSBlcSAnQ2xhc3MnICkgewogICAgICAgICRFeHBlY3RlZEZvcm1hdHtQYWdlc30gPSAnQXJyYXknOwogICAgfQogICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUV4cGVjdGVkRm9ybWF0ICkgewoKICAgICAgICAjIGVpdGhlciBwYWdlcyBvciBzZWN0aW9ucyBkYXRhIGludmFsaWQKICAgICAgICBpZiAoICEkRGVmaW5pdGlvblJlZi0+eyRLZXl9ICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXslcyBpcyBtaXNzaW5nLiBQbGVhc2UgcHJvdmlkZSBkYXRhIGZvciAlcyBpbiB0aGUgZGVmaW5pdGlvbi59KSwKICAgICAgICAgICAgICAgICRLZXksCiAgICAgICAgICAgICAgICAkS2V5LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBUT0RPOiB0aGlzIGlzIG5vdCB0cmFuc2xhdGFibGUKICAgICAgICBpZiAoIHJlZiAkRGVmaW5pdGlvblJlZi0+eyRLZXl9IG5lIHVjKCAkRXhwZWN0ZWRGb3JtYXR7JEtleX0gKSApIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJXMgaXMgbm90IGEgJXMuIFBsZWFzZSBjb3JyZWN0IHRoZSBzeW50YXgufSksCiAgICAgICAgICAgICAgICAkS2V5LAogICAgICAgICAgICAgICAgJEV4cGVjdGVkRm9ybWF0eyRLZXl9CiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkVmFsaWRhdGVGdW5jdGlvblJlZiA9IFwmeyJLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjazo6SXMkRXhwZWN0ZWRGb3JtYXR7JEtleX1SZWZXaXRoRGF0YSJ9OwogICAgICAgIGlmICggISRWYWxpZGF0ZUZ1bmN0aW9uUmVmLT4oICREZWZpbml0aW9uUmVmLT57JEtleX0gKSApIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJXMgaXMgZW1wdHkuIFBsZWFzZSBwcm92aWRlIGRhdGEgZm9yICVzIGluIHRoZSBkZWZpbml0aW9uLn0pLAogICAgICAgICAgICAgICAgJEtleSwKICAgICAgICAgICAgICAgICRLZXksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgc2Vjb25kIGxldmVsIGRhdGEgZm9ybWF0CiAgICBteSAlU2VjdGlvbklzTWlzc2luZzsKCiAgICAjIGNoZWNrIHN0cnVjdHVyZSBmb3IgZGVmaW5lZCBwYWdlcwogICAgaWYgKCAkRXhwZWN0ZWRGb3JtYXR7UGFnZXN9ICkgewogICAgICAgIGZvciBteSAkUGFnZUluZGV4ICggMCAuLiAkI3sgJERlZmluaXRpb25SZWYtPntQYWdlc30gfSApIHsKICAgICAgICAgICAgbXkgJFBhZ2UgPSAkRGVmaW5pdGlvblJlZi0+e1BhZ2VzfS0+WyRQYWdlSW5kZXhdOwogICAgICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoTmFtZSBDb250ZW50KSkgewogICAgICAgICAgICAgICAgaWYgKCAhJFBhZ2UtPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe0tleSAnJXMnIGlzIG1pc3NpbmcgaW4gdGhlIGRlZmluaXRpb24gb2YgcGFnZSAlcy59KSwKICAgICAgICAgICAgICAgICAgICAgICAgJE5lZWRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgJFBhZ2VJbmRleCwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIHN0cnVjdHVyZSBmb3IgZGVmaW5lZCBwYWdlIGNvbnRlbnQgZGF0YQogICAgICAgICAgICBpZiAoIHJlZiAkUGFnZS0+e0NvbnRlbnR9IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7S2V5ICVzIGZvciBwYWdlICVzIGlzIG5vdCBhbiBBcnJheS59KSwKICAgICAgICAgICAgICAgICAgICAnQ29udGVudCcsCiAgICAgICAgICAgICAgICAgICAgJFBhZ2VJbmRleCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFnZS0+e0NvbnRlbnR9ICkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7S2V5ICVzIGZvciBwYWdlICVzIGlzIGVtcHR5Ln0pLAogICAgICAgICAgICAgICAgICAgICdDb250ZW50JywKICAgICAgICAgICAgICAgICAgICAkUGFnZUluZGV4LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHN0cnVjdHVyZSBmb3IgZGVmaW5lZCBwYWdlIGNvbnRlbnQgc2VjdGlvbnMKICAgICAgICAgICAgICAgIGZvciBteSAkU2VjdGlvbkluZGV4ICggMCAuLiAkI3sgJFBhZ2UtPntDb250ZW50fSB9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICRTZWN0aW9uID0gJFBhZ2UtPntDb250ZW50fS0+WyRTZWN0aW9uSW5kZXhdOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICEkU2VjdGlvbiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7QSBzZWN0aW9uIGluIHBhZ2UgJXMgaXMgaW52YWxpZC4gUGxlYXNlIHByb3ZpZGUgZGF0YSBmb3IgdGhlIHNlY3Rpb24gb3IgcmVtb3ZlIGl0Ln0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBhZ2VJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCByZWYgJFNlY3Rpb24gbmUgJ0hBU0gnICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtEYXRhIGZvciBhIHNlY3Rpb24gaW4gcGFnZSAlcyBpcyBub3QgYSBIYXNoLiBQbGVhc2UgY29ycmVjdCB0aGUgc3ludGF4Ln0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBhZ2VJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAhJFNlY3Rpb24tPiUqICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtEYXRhIGZvciBhIHNlY3Rpb24gaW4gcGFnZSAlcyBpcyBlbXB0eS4gUGxlYXNlIHByb3ZpZGUgZGF0YSBmb3IgdGhlIHNlY3Rpb24ufSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFnZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFNlY3Rpb24tPntTZWN0aW9ufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7QSBzZWN0aW9uIGluIHBhZ2UgJXMgaXMgbWlzc2luZyB0aGUga2V5ICdTZWN0aW9uJywgd2hpY2ggaGFzIHRvIGJlIGZpbGxlZCB3aXRoIHRoZSBzZWN0aW9uIG5hbWUufSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFnZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc3RvcmUgc2VjdGlvbiBuYW1lIGZvciBjaGVja2luZyBkYXRhIGludGVncml0eSBsYXRlciBvbgogICAgICAgICAgICAgICAgICAgICAgICAkU2VjdGlvbklzTWlzc2luZ3sgJFNlY3Rpb24tPntTZWN0aW9ufSB9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgZm9yIHRoZSBvcHRpb25hbCBhcnJheSByZWZlcmVuY2VzCiAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KEludGVyZmFjZXMgR3JvdXBzKSkgewogICAgICAgICAgICAgICAgbmV4dCBLRVkgdW5sZXNzICRQYWdlLT57JEtleX07ICAgICAgICAgICAgICAgIyBpcyBvcHRpb25hbAogICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgcmVmICRQYWdlLT57JEtleX0gZXEgJ0FSUkFZJzsgICAgIyBtdXN0IGJlIGFycmF5cmVmIHdoZW4gaXQgZXhpc3RzCgogICAgICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe0tleSAlcyBmb3IgcGFnZSAlcyBpcyBub3QgYW4gQXJyYXkufSksCiAgICAgICAgICAgICAgICAgICAgJEtleSwKICAgICAgICAgICAgICAgICAgICAkUGFnZUluZGV4LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAlRGVmaW5lZER5bmFtaWNGaWVsZHM7CiAgICBteSBATmVlZGVkQ29udGVudEVudHJ5ID0gcXcvREYgR3JpZCBIZWFkZXIvOwoKICAgICMgc2VjdGlvbnMgZGF0YSBpbiBwYWdlcyBjb250ZW50IGFyZSB2YWxpZCwgZ28gb24gY2hlY2tpbmcKICAgIFNFQ1RJT046CiAgICBmb3IgbXkgJFNlY3Rpb25OYW1lICgga2V5cyAleyAkRGVmaW5pdGlvblJlZi0+e1NlY3Rpb25zfSAvLyB7fSB9ICkgewoKICAgICAgICAjIHJlbW92ZSBkZWZpbmVkIHNlY3Rpb25zIHRvIGxhdGVyIGlkZW50aWZ5IHVuZGVmaW5lZCBvbmVzCiAgICAgICAgZGVsZXRlICRTZWN0aW9uSXNNaXNzaW5neyRTZWN0aW9uTmFtZX07CgogICAgICAgIG15ICRTZWN0aW9uID0gJERlZmluaXRpb25SZWYtPntTZWN0aW9uc317JFNlY3Rpb25OYW1lfTsKCiAgICAgICAgaWYgKCAhJFNlY3Rpb24gfHwgIUlzSGFzaFJlZldpdGhEYXRhKCRTZWN0aW9uKSApIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RWl0aGVyIHRoZSBjb250ZW50IG9mIHNlY3Rpb24gJXMgaXMgZW50aXJlbHkgbWlzc2luZyBvciBub3QgYSBoYXNoLn0pLAogICAgICAgICAgICAgICAgJFNlY3Rpb25OYW1lLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkU2VjdGlvbi0+e01vZHVsZX0gKSB7CiAgICAgICAgICAgIG15ICRNb2R1bGUgPSAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpTZWN0aW9uOjonIC4gJFNlY3Rpb24tPntNb2R1bGV9OwoKICAgICAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgkTW9kdWxlKSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtDYW5ub3QgbG9hZCBNb2R1bGUgaW4gc2VjdGlvbiAlcy59KSwKICAgICAgICAgICAgICAgICAgICAkU2VjdGlvbk5hbWUsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IFNFQ1RJT047CiAgICAgICAgfQoKICAgICAgICAjIHNraXAgZGVzY3JpcHRpb24gc2VjdGlvbnMKICAgICAgICBuZXh0IFNFQ1RJT04gaWYgJFNlY3Rpb24tPntUeXBlfSAmJiAkU2VjdGlvbi0+e1R5cGV9IGVxICdEZXNjcmlwdGlvbic7CgogICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSAmJiAkU2VjdGlvbi0+e1R5cGV9IG5lICdEeW5hbWljRmllbGRzJyApIHsKICAgICAgICAgICAgaWYgKCAhYW55IHsgJFNlY3Rpb24tPntUeXBlfSBlcSAkXyB9IHF3L0NvbmZpZ0l0ZW1MaW5rcyBEZXNjcmlwdGlvbiBSZWZlcmVuY2VkU2VjdGlvbi8gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7SW52YWxpZCB0eXBlIGluIHNlY3Rpb24gJXMufSksCiAgICAgICAgICAgICAgICAgICAgJFNlY3Rpb25OYW1lLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICEkU2VjdGlvbi0+e0NvbnRlbnR9ICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtLZXkgJ0NvbnRlbnQnIGlzIG1pc3NpbmcgaW4gc2VjdGlvbiAlcy59KSwKICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkU2VjdGlvbi0+e0NvbnRlbnR9ICkgKSB7CiAgICAgICAgICAgIHJldHVybiAkUmV0dXJuRXJyb3ItPigKICAgICAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe0RhdGEgZm9yICdDb250ZW50JyBpbiBzZWN0aW9uICVzIGlzIG5vdCBhbiBhcnJheS59KSwKICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgQEdyaWRzOwogICAgICAgIGZvciBteSAkQ29udGVudEl0ZW0gKCAkU2VjdGlvbi0+e0NvbnRlbnR9LT5AKiApIHsKCiAgICAgICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRDb250ZW50SXRlbSkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7QW4gZWxlbWVudCBvZiAnQ29udGVudCcgaW4gc2VjdGlvbiAlcyBkb2VzIG5vdCBjb250YWluIGtleSB2YWx1ZSBwYWlycy59KSwKICAgICAgICAgICAgICAgICAgICAkU2VjdGlvbk5hbWUKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggIWFueSB7ICRDb250ZW50SXRlbS0+eyRffSB9IEBOZWVkZWRDb250ZW50RW50cnkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7U2VjdGlvbiAlcyBoYXMgY29udGVudCB3aGljaCBkb2Vzbid0IHByb3ZpZGUgb25lIG9mIHRoZSBmb2xsb3dpbmcgZW50cmllcyA8JXM+Ln0pLAogICAgICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZSwKICAgICAgICAgICAgICAgICAgICAiQE5lZWRlZENvbnRlbnRFbnRyeSIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJENvbnRlbnRJdGVtLT57REZ9ICkgewogICAgICAgICAgICAgICAgJERlZmluZWREeW5hbWljRmllbGRzeyAkQ29udGVudEl0ZW0tPntERn0gfSA9ICRTZWN0aW9uTmFtZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb250ZW50SXRlbS0+e0dyaWR9ICkgewogICAgICAgICAgICAgICAgcHVzaCBAR3JpZHMsICRDb250ZW50SXRlbS0+e0dyaWR9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJEdyaWRJdGVtIChAR3JpZHMpIHsKCiAgICAgICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRHcmlkSXRlbSkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJ0NvbnRlbnQnIG9mICVzIGNvbnRhaW5zIGEgbWlzY29uZmlndXJlZCBncmlkLn0pLAogICAgICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJEdyaWRJdGVtLT57Um93c30gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJ0NvbnRlbnQnIG9mICVzIGNvbnRhaW5zIGEgZ3JpZCB3aXRob3V0IGFueSByb3dzLn0pLAogICAgICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBUT0RPIHNvbWUgbW9yZSBiYXNpYyBjaGVja3MKICAgICAgICAgICAgZm9yIG15ICRSb3cgKCAkR3JpZEl0ZW0tPntSb3dzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJENlbGwgKCAkUm93LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkQ2VsbC0+e0RGfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7RGF0YSBmb3IgJ0NvbnRlbnQnIG9mICVzIGNvbnRhaW5zIGEgZ3JpZCB3aXRob3V0IERGIGluIGEgY2VsbC59KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTZWN0aW9uTmFtZQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkRGVmaW5lZER5bmFtaWNGaWVsZHN7ICRDZWxsLT57REZ9IH0gPSAkU2VjdGlvbk5hbWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBzZWN0aW9ucyBvZiByb2xlcyB3aGljaCBhcmUgb25seSBhYm91dCB0byBiZSBpbXBvcnRlZCBhcmUgbm90IGRlZmluZWQgeWV0CiAgICBteSAlSW1wb3J0Um9sZXMgPSBtYXAgeyAkXyA9PiAxIH0gQHsgJFBhcmFte0ltcG9ydFJvbGVzfSAvLyBbXSB9OwoKICAgIGZvciBteSAkU2VjdGlvbk5hbWUgKCBrZXlzICVTZWN0aW9uSXNNaXNzaW5nICkgewogICAgICAgIGlmICggJUltcG9ydFJvbGVzICYmICRTZWN0aW9uTmFtZSA9fiAvOjovICkgewogICAgICAgICAgICBST0xFOgogICAgICAgICAgICBmb3IgbXkgJFJvbGUgKCBrZXlzICV7ICREZWZpbml0aW9uUmVmLT57Um9sZXN9IC8vIHt9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFJPTEUgaWYgISRJbXBvcnRSb2xlc3skUm9sZX07CgogICAgICAgICAgICAgICAgIyB0aGlzIHNlY3Rpb24gd2lsbCBiZSBpbXBvcnRlZCBhbmQgY2hlY2tlZCB3aXRoIHRoZSBzcGVjaWZpYyByb2xlCiAgICAgICAgICAgICAgICBkZWxldGUgJFNlY3Rpb25Jc01pc3Npbmd7JFNlY3Rpb25OYW1lfSBpZiAkU2VjdGlvbk5hbWUgPX4gLyREZWZpbml0aW9uUmVmLT57Um9sZXN9eyRSb2xlfXtOYW1lfTo6LzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJVNlY3Rpb25Jc01pc3NpbmcpIHsKICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgIFRyYW5zbGF0YWJsZShxe1RoZSBmb2xsb3dpbmcgc2VjdGlvbnMgYXJlIHVzZWQgaW4gcGFnZXMsIGJ1dCBhcmUgbm90IGRlZmluZWQ6ICVzfSksCiAgICAgICAgICAgIGpvaW4oICcsICcsIHNvcnQga2V5cyAlU2VjdGlvbklzTWlzc2luZyApCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIGFsbCB1c2VkIGR5bmFtaWMgZmllbGRzIGFyZSB2YWxpZAogICAgbXkgJERGSUQyTmFtZUxpc3RSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3QoCiAgICAgICAgVmFsaWQgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgICAgIFJlc3VsdFR5cGUgPT4gJ0hBU0gnLAogICAgKTsKCiAgICBteSAlREZOYW1lMklETGlzdCA9IHJldmVyc2UgJERGSUQyTmFtZUxpc3RSZWYtPiUqOwoKICAgIGZvciBteSAkRGVmaW5lZEZpZWxkTmFtZSAoIGtleXMgJURlZmluZWREeW5hbWljRmllbGRzICkgewoKICAgICAgICAjIGNoZWNrIHdpdGggZHluYW1pYyBmaWVsZCBsaXN0CiAgICAgICAgaWYgKCAhJERGTmFtZTJJRExpc3R7JERlZmluZWRGaWVsZE5hbWV9ICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtEeW5hbWljIGZpZWxkICVzIGlzIHVzZWQgaW4gc2VjdGlvbiAlcywgYnV0IGRvZXMgbm90IGV4aXN0IGluIHRoZSBzeXN0ZW0uIFBlcmhhcHMgeW91IGZvcmdvdCB0byBjcmVhdGUgaXQgb3IgbWlzc3BlbGxlZCBpdHMgbmFtZT99KSwKICAgICAgICAgICAgICAgICREZWZpbmVkRmllbGROYW1lLAogICAgICAgICAgICAgICAgJERlZmluZWREeW5hbWljRmllbGRzeyREZWZpbmVkRmllbGROYW1lfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9Owp9Cgo9aGVhZDIgUm9sZURlZmluaXRpb25DaGVjaygpCgpjaGVja3MgdGhlIHN5bnRheCBhbmQgdGhlIHNhbml0eSBvZiBhIG5ldyByb2xlIGRlZmluaXRpb24uCgpUaGlzIG1ldGhvZCBjdXJyZW50bHkgb25seSBmYWxscyBiYWNrIHRvIHRoZSBtZXRob2QgQzxEZWZpbml0aW9uQ2hlY2soKT4uCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Um9sZURlZmluaXRpb25DaGVjaygKICAgICAgICBEZWZpbml0aW9uICAgICAgPT4gJ3RoZSBkZWZpbml0aW9uIGNvZGUnLAogICAgICAgIENoZWNrU3ViRWxlbWVudCA9PiAxLCAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwsIGRlZmF1bHQgMCwgdG8gY2hlY2sgc3ViIGVsZW1lbnRzIHJlY3Vyc2l2ZWx5KQogICAgKTsKCj1jdXQKCnN1YiBSb2xlRGVmaW5pdGlvbkNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5EZWZpbml0aW9uQ2hlY2soICVQYXJhbSwgVHlwZSA9PiAnUm9sZScgKTsKfQoKPWhlYWQyIERlZmluaXRpb25OZWVkU3luYygpCgpyZXR1cm4gYSBoYXNoIG9mIGNsYXNzIGlkcyB3aXRoIGN1cnJlbnQgZGVmaW5pdGlvbnMgd2l0aCBkeW5hbWljIGZpZWxkcyBub3Qgc3luY2VkCgogICAgbXkgJURlZmluaXRpb25zT3V0T2ZTeW5jID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25OZWVkU3luYygpOwoKUmV0dXJuCgogICAgJURlZmluaXRpb25zT3V0T2ZTeW5jID0gKAogICAgICAgIENsYXNzSUQxID0+IFsgRHluYW1pY0ZpZWxkSUQxLCBEeW5hbWljRmllbGRJRDIgXSwKICAgICAgICBDbGFzc0lEMiA9PiBbIER5bmFtaWNGaWVsZElEMSwgRHluYW1pY0ZpZWxkSUQzIF0sCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25OZWVkU3luYyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIG15ICRDYWNoZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5HZXQoCiAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbURlZmluaXRpb24nLAogICAgICAgIEtleSAgPT4gJ091dE9mU3luY0NsYXNzZXMnLAogICAgKTsKCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRDYWNoZSkgKSB7CiAgICAgICAgcmV0dXJuICRDYWNoZS0+JSo7CiAgICB9CgogICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGNsYXNzX2lkLCBmaWVsZF9pZCBGUk9NIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbl9zeW5jJywKICAgICk7CgogICAgbXkgJU91dE9mU3luYzsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQHsgJE91dE9mU3luY3sgJFJvd1swXSB9IH0sICRSb3dbMV07CiAgICB9CgogICAgIyBjYWNoZSB0aGUgcmVzdWx0CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+U2V0KAogICAgICAgIFR5cGUgID0+ICdDb25maWdJdGVtRGVmaW5pdGlvbicsCiAgICAgICAgS2V5ICAgPT4gJ091dE9mU3luY0NsYXNzZXMnLAogICAgICAgIFZhbHVlID0+IFwlT3V0T2ZTeW5jLAogICAgICAgIFRUTCAgID0+IDcyMDAwLCAgICAgICAgICAgICAgICAgICAgIyAyMCBkCiAgICApOwoKICAgIHJldHVybiAlT3V0T2ZTeW5jOwp9Cgo9aGVhZDIgRGVmaW5pdGlvblNldE91dE9mU3luYygpCgpEZWNsYXJlIGN1cnJlbnQgY2xhc3MgZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMgd2l0aCB0aGVpciBkeW5hbWljIGZpZWxkcwoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25TZXRPdXRPZlN5bmMoCiAgICAgICAgQ2xhc3NlcyA9PiB7CiAgICAgICAgICAgIENsYXNzSUQxID0+IFsgRHluYW1pY0ZpZWxkSUQxLCBEeW5hbWljRmllbGRJRDIgXSwKICAgICAgICAgICAgQ2xhc3NJRDIgPT4gWyBEeW5hbWljRmllbGRJRDEsIER5bmFtaWNGaWVsZElEMyBdLAogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25TZXRPdXRPZlN5bmMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZAogICAgaWYgKCAhJFBhcmFte0NsYXNzZXN9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDbGFzc2VzIGhhc2ghJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUN1cnJlbnQgPSAkU2VsZi0+RGVmaW5pdGlvbk5lZWRTeW5jKCk7CiAgICBteSAlTmV3OwoKICAgIENMQVNTOgogICAgZm9yIG15ICRDbGFzc0lEICgga2V5cyAkUGFyYW17Q2xhc3Nlc30tPiUqICkgewogICAgICAgIGlmICggISRDdXJyZW50eyRDbGFzc0lEfSApIHsKICAgICAgICAgICAgJE5ld3skQ2xhc3NJRH0gPSAkUGFyYW17Q2xhc3Nlc317JENsYXNzSUR9OwoKICAgICAgICAgICAgbmV4dCBDTEFTUzsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkRmllbGRJRCAoICRQYXJhbXtDbGFzc2VzfXskQ2xhc3NJRH0tPkAqICkgewogICAgICAgICAgICBpZiAoICFncmVwIHsgJF8gPT0gJEZpZWxkSUQgfSAkQ3VycmVudHskQ2xhc3NJRH0tPkAqICkgewogICAgICAgICAgICAgICAgcHVzaCBAeyAkTmV3eyRDbGFzc0lEfSB9LCAkRmllbGRJRDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMSB1bmxlc3MgJU5ldzsKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICBteSAkU3VjY2VzcyA9IDE7CiAgICBmb3IgbXkgJENsYXNzSUQgKCBrZXlzICVOZXcgKSB7CiAgICAgICAgZm9yIG15ICRGaWVsZElEICggJE5ld3skQ2xhc3NJRH0tPkAqICkgewoKICAgICAgICAgICAgIyBpbnNlcnQgbmV3IG91dCBvZiBzeW5jIHJlbGF0aW9ucwogICAgICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgID0+ICdJTlNFUlQgSU5UTyBjb25maWdpdGVtX2RlZmluaXRpb25fc3luYyAoY2xhc3NfaWQsIGZpZWxkX2lkKSBWQUxVRVMgKD8sID8pJywKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJENsYXNzSUQsIFwkRmllbGRJRCBdLAogICAgICAgICAgICApID8gJFN1Y2Nlc3MgOiAwOwogICAgICAgIH0KICAgIH0KCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+RGVsZXRlKAogICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW1EZWZpbml0aW9uJywKICAgICAgICBLZXkgID0+ICdPdXRPZlN5bmNDbGFzc2VzJywKICAgICk7CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aGVhZDIgRGVmaW5pdGlvblNldFN5bmNlZCgpCgpEZWNsYXJlIGN1cnJlbnQgY2xhc3MgZGVmaW5pdGlvbiBhcyBpbiBzeW5jIHdpdGggaXRzIGR5bmFtaWMgZmllbGRzCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblNldFN5bmNlZCgKICAgICAgICBDbGFzc0lEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgRGVmaW5pdGlvblNldFN5bmNlZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkCiAgICBpZiAoICEkUGFyYW17Q2xhc3NJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENsYXNzSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gY29uZmlnaXRlbV9kZWZpbml0aW9uX3N5bmMgV0hFUkUgY2xhc3NfaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDbGFzc0lEfSBdLAogICAgKTsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+RGVsZXRlKAogICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW1EZWZpbml0aW9uJywKICAgICAgICBLZXkgID0+ICdPdXRPZlN5bmNDbGFzc2VzJywKICAgICk7CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aGVhZDIgRGVmaW5pdGlvblN5bmMoKQoKQWRkIG5ldyBkZWZpbml0aW9ucyBmb3IgYWxsIGNsYXNzZXMgd2hlcmUgZHluYW1pYyBmaWVsZCBjb250ZW50cyBjaGFuZ2VkIGNvbXBhcmVkIHRvIHRoZSBjdXJyZW50IGRlZmluaXRpb24KCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uU3luYygpOwoKPWN1dAoKc3ViIERlZmluaXRpb25TeW5jIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJU91dE9mU3luYyA9ICRTZWxmLT5EZWZpbml0aW9uTmVlZFN5bmMoKTsKCiAgICByZXR1cm4gMSB1bmxlc3MgJU91dE9mU3luYzsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgIG15IEBDbGFzc0lEcyA9IGtleXMgJU91dE9mU3luYzsKCiAgICBDTEFTUzoKICAgIGZvciBteSAkQ2xhc3NJRCAoQENsYXNzSURzKSB7CgogICAgICAgICMgY2hlY2sgd2hldGhlciBtZWFuaW5nZnVsIGNvbnRlbnQgaXMgKHN0aWxsKSBhZmZlY3RlZAogICAgICAgIG15ICROZWVkc1N5bmMgID0gMDsKICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZERlZmluaXRpb247CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJEZpZWxkSUQgKCAkT3V0T2ZTeW5jeyRDbGFzc0lEfS0+QCogKSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBJRCA9PiAkRmllbGRJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRPbGREeW5hbWljRmllbGQgPSAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17ICREeW5hbWljRmllbGQtPntOYW1lfSB9OwogICAgICAgICAgICBpZiAoICEkT2xkRHluYW1pY0ZpZWxkIHx8ICRPbGREeW5hbWljRmllbGQtPntJRH0gbmUgJER5bmFtaWNGaWVsZC0+e0lEfSApIHsKCiAgICAgICAgICAgICAgICAjIGNvbnNpZGVyIG5hbWUgY2hhbmdlcwogICAgICAgICAgICAgICAgJE5lZWRzU3luYyA9IDE7CgogICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJE9sZER5bmFtaWNGaWVsZC0+e0xhYmVsfSBuZSAkRHluYW1pY0ZpZWxkLT57TGFiZWx9ICkgewoKICAgICAgICAgICAgICAgICMgZGlmZmVyZW50IGxhYmVscyBjYW4gYmUgZHVlIHRvIHRoZSBzZWN0aW9uIGRlZmluaXRpb24KICAgICAgICAgICAgICAgIGlmICggISREeW5hbWljRmllbGREZWZpbml0aW9uICkgewogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGREZWZpbml0aW9uWUFNTCA9ICRTZWxmLT5fRGVmaW5pdGlvbkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb259LAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgICAgICkgfHwgJy0tLSB7fSc7CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbllBTUwsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICRPbGREeW5hbWljRmllbGQtPntMYWJlbH0gbmUgJER5bmFtaWNGaWVsZERlZmluaXRpb24tPnsgJER5bmFtaWNGaWVsZC0+e05hbWV9IH17TGFiZWx9ICkgewogICAgICAgICAgICAgICAgICAgICROZWVkc1N5bmMgPSAxOwoKICAgICAgICAgICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgRGF0YUlzRGlmZmVyZW50KAogICAgICAgICAgICAgICAgICAgIERhdGExID0+ICRPbGREeW5hbWljRmllbGQtPntDb25maWd9LAogICAgICAgICAgICAgICAgICAgIERhdGEyID0+ICREeW5hbWljRmllbGQtPntDb25maWd9LAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkTmVlZHNTeW5jID0gMTsKCiAgICAgICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJE5lZWRzU3luYyApIHsKICAgICAgICAgICAgJFNlbGYtPkRlZmluaXRpb25TZXRTeW5jZWQoCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBDTEFTUyB1bmxlc3MgJE5lZWRzU3luYzsKICAgICAgICB9CgogICAgICAgIG15ICRSZXN1bHQgPSAkU2VsZi0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb259LAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgIEZvcmNlICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgIGlmICggISRSZXN1bHQtPntTdWNjZXNzfSApIHsKICAgICAgICAgICAgbXkgJEVycm9yTWVzc2FnZSA9IHNwcmludGYgJFJlc3VsdC0+e0Vycm9yfSwgJFJlc3VsdC0+e0Vycm9yQXJnc30tPkAqOwogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAkRXJyb3JNZXNzYWdlLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENsYXNzSW1wb3J0KCkKCkltcG9ydCBjb25maWcgaXRlbSBjbGFzcyBpbmNsdWRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIG5hbWVzcGFjZXMsIGJhc2VkIG9uIGNsYXNzIGRlZmluaXRpb24KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzSW1wb3J0KAogICAgICAgIENvbnRlbnQgICAgID0+ICRDb250ZW50LAogICAgICAgIENsYXNzRXhpc3RzID0+ICIoRVJST1J8SUdOT1JFfFVQREFURSkiICAgIyAob3B0aW9uYWwpIGhvdyB0byBoYW5kbGUgaW1wb3J0IG9mIGFscmVhZHkgZXhpc3RpbmcgY2xhc3NlcywgZGVmYXVsdCBFUlJPUgogICAgKTsKClJldHVybnM6CgogICAgbXkgJFJlc3VsdCA9ICgKICAgICAgICBTdWNjZXNzICAgICAgPT4gKDF8MCksICAgICAgICAgICAgICAjIFN0YXRlCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdTb21lIE1lc3NhZ2UnLCAgICAgIyBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgZmFpbHVyZQogICAgKTsKCj1jdXQKCnN1YiBDbGFzc0ltcG9ydCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtDbGFzc0V4aXN0c30gfHw9ICdFUlJPUic7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgICMgZXhwZWN0IGFycmF5IHJlZiBvZiBkZWZpbml0aW9ucwogICAgbXkgJERlZmluaXRpb25MaXN0ID0gJFBhcmFte0NvbnRlbnR9OwogICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCREZWZpbml0aW9uTGlzdCkgKSB7CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ1BhcmFtIERlZmluaXRpb25MaXN0IGlzIGVtcHR5IG9yIG5vdCBhbiBhcnJheSByZWZlcmVuY2UuJywKICAgICAgICB9OwogICAgfQoKICAgICMgaW5pdGlhbGl6ZSBuZWVkZWQgdmFyaWFibGVzCiAgICBteSAlQ2xhc3NEZWZpbml0aW9uczsKICAgIG15ICVSb2xlRGVmaW5pdGlvbnM7CiAgICBteSBAQ2xhc3NDYXRlZ29yaWVzOwogICAgbXkgJUR5bmFtaWNGaWVsZHM7CiAgICBteSAlTmFtZXNwYWNlczsKICAgIG15ICVTZXRERnM7CiAgICBteSAlQ2xhc3NOYW1lMklEID0gcmV2ZXJzZSAlewogICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKSAvLyB7fQogICAgfTsKICAgIG15ICVEeW5hbWljRmllbGRMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdCgKICAgICAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgICAgICBSZXN1bHRUeXBlID0+ICdIQVNIJywKICAgICAgICApIHx8IHt9CiAgICB9OwogICAgbXkgJVJvbGVOYW1lMklEID0gcmV2ZXJzZSAlewogICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpSb2xlJywKICAgICAgICApIC8vIHt9CiAgICB9OwoKICAgICMgMC4gcGVyZm9ybSBzYW5pdHkgY2hlY2tzIEkgLSBnZXQgcm9sZXMgYW5kIGNsYXNzZXMKICAgIG15ICVJbXBvcnRSb2xlczsKICAgIG15ICVJbXBvcnRDbGFzc2VzOwogICAgZm9yIG15ICREZWZpbml0aW9uSXRlbSAoICREZWZpbml0aW9uTGlzdC0+QCogKSB7CiAgICAgICAgaWYgKCAkRGVmaW5pdGlvbkl0ZW0tPntDbGFzc30gJiYgJERlZmluaXRpb25JdGVtLT57Q2xhc3N9e05hbWV9ICkgewogICAgICAgICAgICAkSW1wb3J0Q2xhc3Nlc3sgJERlZmluaXRpb25JdGVtLT57Q2xhc3N9e05hbWV9IH0gPSAkRGVmaW5pdGlvbkl0ZW07CgogICAgICAgICAgICBpZiAoICRDbGFzc05hbWUySUR7ICREZWZpbml0aW9uSXRlbS0+e0NsYXNzfXtOYW1lfSB9ICYmICRQYXJhbXtDbGFzc0V4aXN0c30gZXEgJ0VSUk9SJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJDbGFzcyAkRGVmaW5pdGlvbkl0ZW0tPntDbGFzc317TmFtZX0gYWxyZWFkeSBleGlzdHMuIiwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRGVmaW5pdGlvbkl0ZW0tPntSb2xlTmFtZX0gKSB7CiAgICAgICAgICAgICRJbXBvcnRSb2xlc3sgJERlZmluaXRpb25JdGVtLT57Um9sZU5hbWV9IH0gPSAkRGVmaW5pdGlvbkl0ZW07CgogICAgICAgICAgICBpZiAoICRSb2xlTmFtZTJJRHsgJERlZmluaXRpb25JdGVtLT57Um9sZU5hbWV9IH0gJiYgJFBhcmFte0NsYXNzRXhpc3RzfSBlcSAnRVJST1InICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIlJvbGUgJERlZmluaXRpb25JdGVtLT57Um9sZU5hbWV9IGFscmVhZHkgZXhpc3RzLiIsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIk5lZWQgQ2xhc3Mgb3IgUm9sZU5hbWUgaW4gRGVmaW5pdGlvbi4iLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHBlcmZvcm0gc2FuaXR5IGNoZWNrcyBJSSAtIG1vcmUgY2xhc3MgYW5kIHJvbGUgc3BlY2lmaWNzOyBjb2xsZWN0IGNhdGVnb3J5IGFuZCBkZiBkYXRhCiAgICBmb3IgbXkgJERlZmluaXRpb25JdGVtICggJERlZmluaXRpb25MaXN0LT5AKiApIHsKCiAgICAgICAgbXkgJERlZmluaXRpb25SZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICREZWZpbml0aW9uSXRlbS0+e0RlZmluaXRpb259LAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJERlZmluaXRpb25SZWYgKSB7CiAgICAgICAgICAgIG15ICROYW1lID0gJERlZmluaXRpb25JdGVtLT57Um9sZU5hbWV9IHx8ICREZWZpbml0aW9uSXRlbS0+e0NsYXNzfXtOYW1lfTsKCiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiSXRlbSAnJE5hbWUnIGhhcyBub3QgYSB2YWxpZCBZQU1MIGRlZmluaXRpb24gZmllbGQuIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uS2V5ICgga2V5cyAleyREZWZpbml0aW9uUmVmfSApIHsKICAgICAgICAgICAgJERlZmluaXRpb25JdGVtLT57JERlZmluaXRpb25LZXl9ID0gJERlZmluaXRpb25SZWYtPnskRGVmaW5pdGlvbktleX07CiAgICAgICAgfQoKICAgICAgICAjICAgICAgICBteSAkVHlwZSA9ICREZWZpbml0aW9uSXRlbS0+e0NsYXNzfSA/ICdDbGFzcycgOiAnUm9sZSc7CiAgICAgICAgIwogICAgICAgICMgVE9ETzogQWRkIGEgcHJlbGltaW5hcnkgY2hlY2sKICAgICAgICAjICAgICAgICAjIGNoZWNrIGRlZmluaXRpb24gZm9yIHZhbGlkaXR5CiAgICAgICAgIyAgICAgICAgbXkgJENoZWNrUmVzdWx0ID0gJFNlbGYtPkRlZmluaXRpb25DaGVjaygKICAgICAgICAjICAgICAgICAgICAgRGVmaW5pdGlvbiAgPT4gJERlZmluaXRpb25JdGVtLT57RGVmaW5pdGlvbn0sCiAgICAgICAgIyAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICRUeXBlLAogICAgICAgICMgICAgICAgICAgICBJbXBvcnRSb2xlcyA9PiBbIGtleXMgJUltcG9ydFJvbGVzIF0sCiAgICAgICAgIyAgICAgICAgKTsKICAgICAgICAjCiAgICAgICAgIyAgICAgICAgaWYgKCAhJENoZWNrUmVzdWx0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgIyAgICAgICAgICAgIG15ICROYW1lID0gJERlZmluaXRpb25JdGVtLT57Um9sZU5hbWV9IHx8ICREZWZpbml0aW9uSXRlbS0+e0NsYXNzfXtOYW1lfTsKICAgICAgICAjCiAgICAgICAgIyAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgIyAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAjICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiSXRlbSAnJE5hbWUnIGZhaWxlZCBpbml0aWFsIGRlZmluaXRpb24gY2hlY2suIiwKICAgICAgICAjICAgICAgICAgICAgfTsKICAgICAgICAjICAgICAgICB9CgogICAgICAgICMgY29sbGVjdCBjbGFzcyB0YWdzCiAgICAgICAgaWYgKCAkRGVmaW5pdGlvbkl0ZW0tPntDbGFzc30gKSB7CiAgICAgICAgICAgIEBDbGFzc0NhdGVnb3JpZXMgPSB1bmlxKCBAQ2xhc3NDYXRlZ29yaWVzLCAoICREZWZpbml0aW9uSXRlbS0+e0NsYXNzfXtDYXRlZ29yaWVzfSAvLyBbXSApLT5AKiApOwogICAgICAgIH0KCiAgICAgICAgIyBjb2xsZWN0IGR5bmFtaWMgZmllbGRzIChpZiB0aGV5IGV4aXN0KQogICAgICAgIGlmICggJERlZmluaXRpb25JdGVtLT57RHluYW1pY0ZpZWxkc30gKSB7CiAgICAgICAgICAgICVEeW5hbWljRmllbGRzID0gKAogICAgICAgICAgICAgICAgJUR5bmFtaWNGaWVsZHMsCiAgICAgICAgICAgICAgICAkRGVmaW5pdGlvbkl0ZW0tPntEeW5hbWljRmllbGRzfS0+JSosCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZmV0Y2ggZXhpc3RpbmcgY2F0ZWdvcmllcyB0byBjaGVjayBmb3IgZHVwbGljYXRlcwogICAgbXkgJEV4aXN0aW5nQ2F0ZWdvcmllcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzOjpDYXRlZ29yeScsCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICkgLy8ge307CgogICAgIyBoYW5kbGUgY3JlYXRpb24gb2YgY29uZmlnIGl0ZW0gY2xhc3MgY2F0ZWdvcmllcwogICAgQ0FURUdPUlk6CiAgICBmb3IgbXkgJENhdGVnb3J5IChAQ2xhc3NDYXRlZ29yaWVzKSB7CgogICAgICAgIG5leHQgQ0FURUdPUlkgaWYgYW55IHsgJF8gZXEgJENhdGVnb3J5IH0gdmFsdWVzICRFeGlzdGluZ0NhdGVnb3JpZXMtPiUqOwoKICAgICAgICBteSAkU3VjY2VzcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICAgICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3M6OkNhdGVnb3J5JywKICAgICAgICAgICAgTmFtZSAgICA9PiAkQ2F0ZWdvcnksCiAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGRuJ3QgYWRkIGNvbmZpZyBpdGVtIGNsYXNzIGNhdGVnb3J5ICRDYXRlZ29yeS4iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFkZCBpbm5lciBmaWVsZHMgb2Ygc2V0IERGcyB0byBoYXNoCiAgICBmb3IgbXkgJEZpZWxkICgga2V5cyAlRHluYW1pY0ZpZWxkcyApIHsKICAgICAgICBpZiAoICREeW5hbWljRmllbGRzeyRGaWVsZH17RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgbXkgJVNldEZpZWxkcyA9IG1hcCB7ICRfLT57REZ9ID0+ICRfLT57RGVmaW5pdGlvbn0gfSAkRHluYW1pY0ZpZWxkc3skRmllbGR9e0NvbmZpZ317SW5jbHVkZX0tPkAqOwoKICAgICAgICAgICAgaWYgKCAhJVNldEZpZWxkcyApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkVycm9uZW91cyBjb25maWd1cmF0aW9uIG9mIFNldCAkRmllbGQuIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICVTZXRERnMgPSAoCiAgICAgICAgICAgICAgICAlU2V0REZzLAogICAgICAgICAgICAgICAgJVNldEZpZWxkcywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBkeW5hbWljIGZpZWxkcwogICAgbXkgJUFsbEZpZWxkcyA9ICggJUR5bmFtaWNGaWVsZHMsICVTZXRERnMgKTsKICAgIGZvciBteSAkRmllbGQgKCBrZXlzICVBbGxGaWVsZHMgKSB7CiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkTG9va3VweyRGaWVsZH0gKSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICRGaWVsZCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX0gbmUgJEFsbEZpZWxkc3skRmllbGR9e0ZpZWxkVHlwZX0gfHwgJER5bmFtaWNGaWVsZC0+e09iamVjdFR5cGV9IG5lICdJVFNNQ29uZmlnSXRlbScgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiRHluYW1pY0ZpZWxkICRGaWVsZCBleGlzdHMgYnV0IGRvZXMgbm90IGhhdmUgdGhlIHJlcXVpcmVkIE9iamVjdC0gYW5kL29yIEZpZWxkVHlwZS4iLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57TXVsdGlWYWx1ZX0geG9yICRBbGxGaWVsZHN7JEZpZWxkfXtNdWx0aVZhbHVlfSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJEeW5hbWljRmllbGQgJEZpZWxkIGV4aXN0cyBidXQgZG9lcyBub3QgbWF0Y2ggdGhlIG11bHRpdmFsdWUgc2V0dGluZy4iLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkRmllbGQgIX4gbXsgXEEgW2EtekEtWlxkXC1dKyBceiB9eG1zICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkludmFsaWQgRHluYW1pY0ZpZWxkIG5hbWUgJyRGaWVsZCcuIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIGlmICggJEZpZWxkID1+IC9eKFteLV0rKS0vICkgewogICAgICAgICAgICAkTmFtZXNwYWNlc3skMX0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIDEuIGNyZWF0ZSBhbGwgY2xhc3NlcwogICAgQ0xBU1NERUZJTklUSU9OOgogICAgZm9yIG15ICRDbGFzc0RlZmluaXRpb24gKCBncmVwIHsgJF8tPntDbGFzc30gfSAkRGVmaW5pdGlvbkxpc3QtPkAqICkgewoKICAgICAgICBteSAlQ2xhc3NEYXRhID0gJXsgZGVsZXRlICRDbGFzc0RlZmluaXRpb24tPntDbGFzc30gfTsKCiAgICAgICAgIyBoYW5kbGUgZHVwbGljYXRpb25zIGFjY29yZGluZyBwYXJhbSBDbGFzc0V4aXN0cwogICAgICAgIG15ICRDbGFzc0lEOwogICAgICAgIGlmICggJENsYXNzTmFtZTJJRHsgJENsYXNzRGF0YXtOYW1lfSB9ICkgewogICAgICAgICAgICBpZiAoICRQYXJhbXtDbGFzc0V4aXN0c30gZXEgJ1VQREFURScgKSB7CiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgID0+ICRDbGFzc05hbWUySUR7ICRDbGFzc0RhdGF7TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgID0+ICRDbGFzc0RhdGF7TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJDb3VsZCBub3QgdXBkYXRlIGNsYXNzICRDbGFzc0RhdGF7TmFtZX0uIiwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJENsYXNzSUQgPSAkQ2xhc3NOYW1lMklEeyAkQ2xhc3NEYXRhe05hbWV9IH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBuZXh0IENMQVNTREVGSU5JVElPTjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJENsYXNzSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1BZGQoCiAgICAgICAgICAgICAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICRDbGFzc0RhdGF7TmFtZX0sCiAgICAgICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkQ2xhc3NJRCApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJDb3VsZCBub3QgYWRkIGNsYXNzICRDbGFzc0RhdGF7TmFtZX0uIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgc2V0IGNsYXNzIHByZWZlcmVuY2VzCiAgICAgICAgUFJFRkVSRU5DRUtFWToKICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2VLZXkgKHF3KE5hbWVNb2R1bGUgTnVtYmVyTW9kdWxlIFZlcnNpb25TdHJpbmdNb2R1bGUgUGVybWlzc2lvbiBDYXRlZ29yaWVzIFZlcnNpb25UcmlnZ2VyKSkgewoKICAgICAgICAgICAgIyB0cmFuc2l0aW9uOiBwcmVmZXJlbmNlIFBlcm1pc3Npb24gaXMgbmFtZWQgUGVybWlzc2lvbkdyb3VwIGluIGRlZmluaXRpb24gc3ludGF4CiAgICAgICAgICAgIG15ICRQcmVmZXJlbmNlVmFsdWU7CiAgICAgICAgICAgIGlmICggJFByZWZlcmVuY2VLZXkgZXEgJ1Blcm1pc3Npb24nICkgewoKICAgICAgICAgICAgICAgIG5leHQgUFJFRkVSRU5DRUtFWSB1bmxlc3MgJENsYXNzRGF0YXtQZXJtaXNzaW9uR3JvdXB9OwoKICAgICAgICAgICAgICAgICRQcmVmZXJlbmNlVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgR3JvdXAgPT4gJENsYXNzRGF0YXtQZXJtaXNzaW9uR3JvdXB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRQcmVmZXJlbmNlVmFsdWUgPSAkQ2xhc3NEYXRheyRQcmVmZXJlbmNlS2V5fTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFS0VZIHVubGVzcyAkUHJlZmVyZW5jZVZhbHVlOwoKICAgICAgICAgICAgaWYgKCAhcmVmICRQcmVmZXJlbmNlVmFsdWUgKSB7CiAgICAgICAgICAgICAgICAkUHJlZmVyZW5jZVZhbHVlID0gWyRQcmVmZXJlbmNlVmFsdWVdOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IFBSRUZFUkVOQ0VLRVkgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkUHJlZmVyZW5jZVZhbHVlKTsKCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRQcmVmZXJlbmNlS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICRQcmVmZXJlbmNlVmFsdWUsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkbid0IHVwZGF0ZSBwcmVmZXJlbmNlICRQcmVmZXJlbmNlS2V5IGZvciBjb25maWcgaXRlbSBjbGFzcyAkQ2xhc3NJRC4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjb2xsZWN0IGRlZmluaXRpb24KICAgICAgICAkQ2xhc3NEZWZpbml0aW9uc3skQ2xhc3NJRH0gPSAkQ2xhc3NEZWZpbml0aW9uLT57RGVmaW5pdGlvbn07CiAgICB9CgogICAgIyAyLiBjcmVhdGUgYWxsIHJvbGVzCiAgICBST0xFREVGSU5JVElPTjoKICAgIGZvciBteSAkUm9sZURlZmluaXRpb24gKCBncmVwIHsgJF8tPntSb2xlTmFtZX0gfSAkRGVmaW5pdGlvbkxpc3QtPkAqICkgewoKICAgICAgICBteSAkUm9sZU5hbWUgPSBkZWxldGUgJFJvbGVEZWZpbml0aW9uLT57Um9sZU5hbWV9OwoKICAgICAgICAjIGhhbmRsZSBkdXBsaWNhdGlvbnMgYWNjb3JkaW5nIHBhcmFtIENsYXNzRXhpc3RzCiAgICAgICAgbXkgJFJvbGVJRDsKICAgICAgICBpZiAoICRSb2xlTmFtZTJJRHskUm9sZU5hbWV9ICkgewogICAgICAgICAgICBpZiAoICRQYXJhbXtDbGFzc0V4aXN0c30gZXEgJ1VQREFURScgKSB7CiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgID0+ICRSb2xlTmFtZTJJRHskUm9sZU5hbWV9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJFJvbGVOYW1lLAogICAgICAgICAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgdXBkYXRlIHJvbGUgJFJvbGVOYW1lLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkUm9sZUlEID0gJFJvbGVOYW1lMklEeyRSb2xlTmFtZX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBuZXh0IFJPTEVERUZJTklUSU9OOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUm9sZUlEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgICAgICAgICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Um9sZScsCiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICRSb2xlTmFtZSwKICAgICAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggISRSb2xlSUQgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiQ291bGQgbm90IGFkZCByb2xlICRSb2xlTmFtZS4iLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBjb2xsZWN0IGRlZmluaXRpb24KICAgICAgICAkUm9sZURlZmluaXRpb25zeyRSb2xlSUR9ID0gJFJvbGVEZWZpbml0aW9uLT57RGVmaW5pdGlvbn07CiAgICB9CgogICAgIyBuYW1lc3BhY2UgaGFuZGxpbmcKICAgIGlmICglTmFtZXNwYWNlcykgewoKICAgICAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwoKICAgICAgICAjIEdldCBjdXJyZW50IHNldHRpbmcgdmFsdWUuCiAgICAgICAgbXkgJVNldHRpbmcgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICdEeW5hbWljRmllbGQ6Ok5hbWVzcGFjZXMnLAogICAgICAgICk7CgogICAgICAgICMgZW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCB1bml0IHRlc3RzCiAgICAgICAgbXkgJEV4aXN0aW5nTmFtZXNwYWNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkOjpOYW1lc3BhY2VzJykgfHwgW107CiAgICAgICAgbXkgJUFsbE5hbWVzcGFjZXMgICAgICA9ICgKICAgICAgICAgICAgKCBtYXAgeyAkXyA9PiAxIH0gJEV4aXN0aW5nTmFtZXNwYWNlcy0+QCogKSwKICAgICAgICAgICAgJU5hbWVzcGFjZXMsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lc3BhY2VzIG5lZWQgdG8gYmUgY2hhbmdlZAogICAgICAgIG15ICRVcGRhdGVOYW1lc3BhY2VzID0gMDsKICAgICAgICBORVdOQU1FU1BBQ0U6CiAgICAgICAgZm9yIG15ICROZXdOYW1lc3BhY2UgKCBrZXlzICVBbGxOYW1lc3BhY2VzICkgewogICAgICAgICAgICBpZiAoIG5vbmUgeyAkTmV3TmFtZXNwYWNlIGVxICRfIH0gJEV4aXN0aW5nTmFtZXNwYWNlcy0+QCogKSB7CiAgICAgICAgICAgICAgICAkVXBkYXRlTmFtZXNwYWNlcyA9IDE7CiAgICAgICAgICAgICAgICBsYXN0IE5FV05BTUVTUEFDRTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJFVwZGF0ZU5hbWVzcGFjZXMpIHsKCiAgICAgICAgICAgIG15ICRFeGNsdXNpdmVMb2NrR1VJRCA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdMb2NrKAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICAgICAgICAgICAgICBGb3JjZSAgICAgPT4gMSwKICAgICAgICAgICAgICAgIERlZmF1bHRJRCA9PiAkU2V0dGluZ3tEZWZhdWx0SUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBVcGRhdGUgc2V0dGluZyB3aXRoIG1vZGlmaWVkIGRhdGEKICAgICAgICAgICAgbXkgJVJlc3VsdCA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdVcGRhdGUoCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkOjpOYW1lc3BhY2VzJywKICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSAgICA9PiBbIGtleXMgJUFsbE5hbWVzcGFjZXMgXSwKICAgICAgICAgICAgICAgIEV4Y2x1c2l2ZUxvY2tHVUlEID0+ICRFeGNsdXNpdmVMb2NrR1VJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRSZXN1bHR7U3VjY2Vzc30gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IHVwZGF0ZSBzZXR0aW5nIER5bmFtaWNGaWVsZDo6TmFtZXNwYWNlcy4nLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVW5sb2NrKAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICAgICAgICAgICAgICBEZWZhdWx0SUQgPT4gJFNldHRpbmd7RGVmYXVsdElEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IHVubG9jayBzZXR0aW5nIER5bmFtaWNGaWVsZDo6TmFtZXNwYWNlcy4nLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJURlcGxveW1lbnRSZXN1bHQgPSAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgICAgICAgICAgICAgQ29tbWVudHMgICAgICA9PiAiQ2xhc3NJbXBvcnQgdXBkYXRpbmcgRHluYW1pY0ZpZWxkOjpOYW1lc3BhY2VzIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIEZvcmNlICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIERpcnR5U2V0dGluZ3MgPT4gWydEeW5hbWljRmllbGQ6Ok5hbWVzcGFjZXMnXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggISREZXBsb3ltZW50UmVzdWx0e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0RlcGxveW1lbnQgZmFpbGVkIScsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgc3BsaXQgZHluYW1pYyBmaWVsZHMgaW4gdGhyZWUgc2VwYXJhdGUgZ3JvdXBzCiAgICBteSBATm9ybWFsRmllbGROYW1lcyA9IGdyZXAgeyAkQWxsRmllbGRzeyRffXtGaWVsZFR5cGV9IG5lICdMZW5zJyAmJiAkQWxsRmllbGRzeyRffXtGaWVsZFR5cGV9IG5lICdTZXQnIH0ga2V5cyAlQWxsRmllbGRzOwogICAgbXkgQExlbnNGaWVsZE5hbWVzICAgPSBncmVwIHsgJEFsbEZpZWxkc3skX317RmllbGRUeXBlfSBlcSAnTGVucycgfSBrZXlzICVBbGxGaWVsZHM7CiAgICBteSBAU2V0RmllbGROYW1lcyAgICA9IGdyZXAgeyAkQWxsRmllbGRzeyRffXtGaWVsZFR5cGV9IGVxICdTZXQnIH0ga2V5cyAlQWxsRmllbGRzOwoKICAgICMgc29ydCBsZW5zIGZpZWxkcyBpbiBjYXNlIGEgbGVucyBoYXMgYW5vdGhlciBsZW5zIGFzIGF0dHJpYnV0ZSBkeW5hbWljIGZpZWxkCiAgICBteSBATGVuc0ZpZWxkTmFtZXNTb3J0ZWQgPSBzb3J0IHsKICAgICAgICAoICRBbGxGaWVsZHN7JGJ9e05hbWV9IGVxICRBbGxGaWVsZHN7JGF9e0NvbmZpZ317QXR0cmlidXRlREZ9ICkgPD0+ICggJEFsbEZpZWxkc3skYX17TmFtZX0gZXEgJEFsbEZpZWxkc3skYn17Q29uZmlnfXtBdHRyaWJ1dGVERn0gKQogICAgfSBATGVuc0ZpZWxkTmFtZXM7CgogICAgIyAzLiBjcmVhdGUgZHluYW1pYyBmaWVsZHMKICAgIG15ICRPcmRlciA9IHNjYWxhcigga2V5cyAlRHluYW1pY0ZpZWxkTG9va3VwICk7CiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGROYW1lICggQE5vcm1hbEZpZWxkTmFtZXMsIEBMZW5zRmllbGROYW1lc1NvcnRlZCwgQFNldEZpZWxkTmFtZXMgKSB7CiAgICAgICAgbmV4dCBGSUVMRCBpZiAkRHluYW1pY0ZpZWxkTG9va3VweyRGaWVsZE5hbWV9OwoKICAgICAgICBteSAkRmllbGRDb25maWcgPSAkQWxsRmllbGRzeyRGaWVsZE5hbWV9OwoKICAgICAgICBteSAlU2V0Q29uZmlnOwogICAgICAgIGlmICggJEZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgbXkgQEluY2x1ZGVkID0gbWFwIHsgeyBERiA9PiAkXy0+e0RGfSB9IH0gJEZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfS0+QCo7CiAgICAgICAgICAgICVTZXRDb25maWcgPSAoCiAgICAgICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgICAgICRGaWVsZENvbmZpZy0+e0NvbmZpZ30tPiUqLAogICAgICAgICAgICAgICAgICAgIEluY2x1ZGUgPT4gXEBJbmNsdWRlZCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGlmIG5lZWRlZCwgcGVyZm9ybSBuZWNlc3NhcnkgdHJhbnNmb3JtYXRpb25zCiAgICAgICAgJEZpZWxkQ29uZmlnID0gJFNlbGYtPl9EeW5hbWljRmllbGRDb25maWdUcmFuc2Zvcm0oCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRmllbGRDb25maWcsCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICA9PiAnSW1wb3J0JywKICAgICAgICApOwoKICAgICAgICBteSAkRmllbGRJRCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEFkZCgKICAgICAgICAgICAgJEZpZWxkQ29uZmlnLT4lKiwKICAgICAgICAgICAgJVNldENvbmZpZywKICAgICAgICAgICAgRmllbGRPcmRlciA9PiArKyRPcmRlciwKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBSZW9yZGVyICAgID0+IDAsCiAgICAgICAgICAgIFZhbGlkSUQgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRGaWVsZElEICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGFkZCBkeW5hbWljIGZpZWxkICRGaWVsZENvbmZpZy0+e05hbWV9LiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgdHJpZ2dlciBkeW5hbWljIGZpZWxkIGV2ZW50cwogICAgIyAgIHRoaXMgaXMgZG9uZSBiZWNhdXNlIFNldC1pbm5lciBkeW5hbWljIGZpZWxkcyBhcmUgdXBkYXRlZCBhZnRlcndhcmRzIHZpYQogICAgIyAgIGFuIGV2ZW50LCBjYXVzaW5nIHRoZSBkYXRhIGluIHRoZSBjb25maWcgaXRlbSBkZWZpbml0aW9ucyB0byBiZWNvbWUgb3V0ZGF0ZWQKICAgICREeW5hbWljRmllbGRPYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgIyA0LiBhZGQgZGVmaW5pdGlvbnMKICAgIGZvciBteSAkUm9sZUlEICgga2V5cyAlUm9sZURlZmluaXRpb25zICkgewogICAgICAgIG15ICRSZXR1cm4gPSAkU2VsZi0+Um9sZURlZmluaXRpb25BZGQoCiAgICAgICAgICAgIFJvbGVJRCAgICAgPT4gJFJvbGVJRCwKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkUm9sZURlZmluaXRpb25zeyRSb2xlSUR9LAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgIEZvcmNlICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkUmV0dXJuLT57U3VjY2Vzc30gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IHN0b3JlIGRlZmluaXRpb24uJywKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CiAgICBmb3IgbXkgJENsYXNzSUQgKCBrZXlzICVDbGFzc0RlZmluaXRpb25zICkgewogICAgICAgIG15ICRSZXR1cm4gPSAkU2VsZi0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkQ2xhc3NEZWZpbml0aW9uc3skQ2xhc3NJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgRm9yY2UgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRSZXR1cm4tPntTdWNjZXNzfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb3VsZCBub3Qgc3RvcmUgZGVmaW5pdGlvbi4nLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4geyBTdWNjZXNzID0+IDEgfTsKfQoKPWhlYWQyIENsYXNzRXhwb3J0KCkKCkV4cG9ydCBjb25maWcgaXRlbSBjbGFzc2VzLCBpbmNsdWRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIG5hbWVzcGFjZXMsIGludG8gYSBZQU1MIHN0cmluZwoKICAgIG15ICRZQU1MU3RyaW5nID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzRXhwb3J0KAogICAgICAgIEl0ZW1JRExpc3QgPT4gW0NsYXNzSUQxLCBDbGFzc0lEMiwgQ2xhc3NJRDMsIC4uLl0sICAgICAgIyBsaXN0IG9mIGNsYXNzIG9yIC8gYW5kIHJvbGUgSURzIHRvIGV4cG9ydAogICAgKTsKCkluIGNhc2Ugb2YgYSBmYWlsdXJlIEM8dW5kZWY+IGlzIHJldHVybmVkLgoKPWN1dAoKc3ViIENsYXNzRXhwb3J0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkWUFNTE9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKICAgIG15ICRBbGxFeHBvcnRlZENsYXNzZXNSZWY7CgogICAgZm9yIG15ICRFeHBvcnRJdGVtSUQgKCBAeyAkUGFyYW17SXRlbUlETGlzdH0gfSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBpdGVtIGlzIHJvbGUgb3IgY2xhc3MKICAgICAgICBteSAkSXRlbURhdGEgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkRXhwb3J0SXRlbUlELAogICAgICAgICk7CiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1EYXRhKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIklEICRFeHBvcnRJdGVtSUQgaXMgaW52YWxpZCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBpZiAoICRJdGVtRGF0YS0+e0NsYXNzfSBuZSAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnICYmICRJdGVtRGF0YS0+e0NsYXNzfSBuZSAnSVRTTTo6Q29uZmlnSXRlbTo6Um9sZScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJdGVtIHdpdGggSUQgJEV4cG9ydEl0ZW1JRCBpcyBuZWl0aGVyIGEgY29uZmlnIGl0ZW0gY2xhc3Mgbm9yIGEgY29uZmlnIGl0ZW0gcm9sZSEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJUV4cG9ydEl0ZW07CiAgICAgICAgbXkgJERlZmluaXRpb25SZWY7CiAgICAgICAgaWYgKCAkSXRlbURhdGEtPntDbGFzc30gZXEgJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJyApIHsKCiAgICAgICAgICAgICMgZmV0Y2ggY2xhc3MgZGVmaW5pdGlvbgogICAgICAgICAgICAkRGVmaW5pdGlvblJlZiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KCBDbGFzc0lEID0+ICRFeHBvcnRJdGVtSUQgKTsKICAgICAgICAgICAgJEV4cG9ydEl0ZW17Q2xhc3N9e05hbWV9ID0gJERlZmluaXRpb25SZWYtPntDbGFzc307CgogICAgICAgICAgICAjIGZldGNoIGNsYXNzIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRFeHBvcnRJdGVtSUQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISVDbGFzc1ByZWZlcmVuY2VzICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBnZXQgcHJlZmVyZW5jZSBkYXRhIGZvciBjbGFzcyAkRGVmaW5pdGlvblJlZi0+e0NsYXNzfSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgUFJFRkVSRU5DRVNLRVk6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZUtleSAoIGtleXMgJUNsYXNzUHJlZmVyZW5jZXMgKSB7CgogICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFU0tFWSB1bmxlc3MgJENsYXNzUHJlZmVyZW5jZXN7JFByZWZlcmVuY2VLZXl9OwogICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFU0tFWSB1bmxlc3MgJENsYXNzUHJlZmVyZW5jZXN7JFByZWZlcmVuY2VLZXl9WzBdOwoKICAgICAgICAgICAgICAgICMgdHJhbnNpdGlvbiBvZiBQZXJtaXNzaW9uIHRvIFBlcm1pc3Npb25Hcm91cAogICAgICAgICAgICAgICAgaWYgKCAkUHJlZmVyZW5jZUtleSBlcSAnUGVybWlzc2lvbicgKSB7CgogICAgICAgICAgICAgICAgICAgICMgdHJhbnNsYXRlIGdyb3VwIGlkIGludG8gZ3JvdXAgbmFtZQogICAgICAgICAgICAgICAgICAgIG15ICRQcmVmZXJlbmNlVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwSUQgPT4gJENsYXNzUHJlZmVyZW5jZXN7JFByZWZlcmVuY2VLZXl9WzBdLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRFeHBvcnRJdGVte0NsYXNzfXtQZXJtaXNzaW9uR3JvdXB9ID0gJFByZWZlcmVuY2VWYWx1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHNpbmdsZS12YWx1ZSBhdHRyaWJ1dGVzCiAgICAgICAgICAgICAgICBlbHNpZiAoIGdyZXAgeyAkXyBlcSAkUHJlZmVyZW5jZUtleSB9IHF3KE5hbWVNb2R1bGUgTnVtYmVyTW9kdWxlIFZlcnNpb25TdHJpbmdNb2R1bGUpICkgewogICAgICAgICAgICAgICAgICAgICRFeHBvcnRJdGVte0NsYXNzfXskUHJlZmVyZW5jZUtleX0gPSAkQ2xhc3NQcmVmZXJlbmNlc3skUHJlZmVyZW5jZUtleX1bMF07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBtdWx0aS12YWx1ZSBhdHRyaWJ1dGVzCiAgICAgICAgICAgICAgICBlbHNpZiAoIGdyZXAgeyAkXyBlcSAkUHJlZmVyZW5jZUtleSB9IHF3KENhdGVnb3JpZXMgVmVyc2lvblRyaWdnZXIpICkgewogICAgICAgICAgICAgICAgICAgICRFeHBvcnRJdGVte0NsYXNzfXskUHJlZmVyZW5jZUtleX0gPSAkQ2xhc3NQcmVmZXJlbmNlc3skUHJlZmVyZW5jZUtleX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkSXRlbURhdGEtPntDbGFzc30gZXEgJ0lUU006OkNvbmZpZ0l0ZW06OlJvbGUnICkgewoKICAgICAgICAgICAgIyBmZXRjaCByb2xlIGRlZmluaXRpb24KICAgICAgICAgICAgJERlZmluaXRpb25SZWYgPSAkU2VsZi0+Um9sZURlZmluaXRpb25HZXQoIFJvbGVJRCA9PiAkRXhwb3J0SXRlbUlEICk7CiAgICAgICAgICAgICRFeHBvcnRJdGVte1JvbGVOYW1lfSA9ICREZWZpbml0aW9uUmVmLT57Um9sZX07CiAgICAgICAgfQoKICAgICAgICAjIHBlcmZvcm0gZHluYW1pYyBmaWVsZCB0cmFuc2Zvcm1hdGlvbgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoIGtleXMgJERlZmluaXRpb25SZWYtPntEeW5hbWljRmllbGRSZWZ9LT4lKiApIHsKICAgICAgICAgICAgbXkgJFRyYW5zZm9ybWVkREZDb25maWcgPSAkU2VsZi0+X0R5bmFtaWNGaWVsZENvbmZpZ1RyYW5zZm9ybSgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRGVmaW5pdGlvblJlZi0+e0R5bmFtaWNGaWVsZFJlZn17JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICAgICAgID0+ICdFeHBvcnQnLAogICAgICAgICAgICApOwogICAgICAgICAgICAkRXhwb3J0SXRlbXtEeW5hbWljRmllbGRzfXskRHluYW1pY0ZpZWxkTmFtZX0gPSAkVHJhbnNmb3JtZWRERkNvbmZpZzsKICAgICAgICB9CgogICAgICAgICMgZXhwb3J0IHRoZSBzdWIteWFtbCBkZWZpbml0aW9uIGZpZWxkIGFzIGEgc3RyaW5nIGZpZWxkCiAgICAgICAgJEV4cG9ydEl0ZW17RGVmaW5pdGlvbn0gPSAkRGVmaW5pdGlvblJlZi0+e0RlZmluaXRpb259OwoKICAgICAgICBwdXNoIEB7JEFsbEV4cG9ydGVkQ2xhc3Nlc1JlZn0sIFwlRXhwb3J0SXRlbTsKICAgIH0KCiAgICBteSAkQWxsRXhwb3J0ZWRDbGFzc2VzU3RyID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgRGF0YSA9PiAkQWxsRXhwb3J0ZWRDbGFzc2VzUmVmCiAgICApOwoKICAgIHJldHVybiAkQWxsRXhwb3J0ZWRDbGFzc2VzU3RyOwp9Cgo9YmVnaW4gSW50ZXJuYWw6Cgo9aGVhZDIgX1Byb2Nlc3NSb2xlcwoKRm9yIGNvbnZlbmllbmNlIHRoZSBZQU1MIGZvciBhIGNvbmZpZyBpdGVtIGNsYXNzIG1heSBjb250YWluIGEgc3VidHJlZSBjYWxsZWQgUm9sZXMuIFVzdWFsbHkgdGhlc2UgUm9sZXMKbG9hZCBvdGhlciBZQU1MIGRvY3VtZW50cyB3aGljaCBjb250YWluIGEgU2VjdGlvbiBoYXNoLiBUaGVzZSBzZWN0aW9uIGEgbWVyZ2VkIGludG8gdGhlIHRvcGxldmVsIFNlY3Rpb24gaGFzaC4KVGhlIGtleXMgb2YgdGhlIG1lcmdlZCBpbiBzZWN0aW9ucyBhcmUgdGhlIFJvbGUga2V5IGpvaW5lZCB3aXRoIHRoZSBsb2FkZWQgc2VjdGlvbiBuYW1lLiBUaGUgam9pbiBtYXJrZXIgaXMgQzw6Oj4uCgpUaGUgcGFzc2VkIGluIGhhc2ggcmVmZXJlbmNlIGlzIG1vZGlmaWVkIGluIHBsYWNlLgoKPWN1dAoKc3ViIF9Qcm9jZXNzUm9sZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIGRlZmluaXRpb24KICAgIGlmICggISRQYXJhbXtEZWZpbml0aW9uUmVmfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgRGVmaW5pdGlvblJlZiEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHJvbGVzIGFyZSBvcHRpb25hbAogICAgbXkgJERlZmluaXRpb25SZWYgPSAkUGFyYW17RGVmaW5pdGlvblJlZn07CiAgICBteSAkUm9sZXMgICAgICAgICA9ICREZWZpbml0aW9uUmVmLT57Um9sZXN9OwoKICAgIHJldHVybiB7IFN1Y2Nlc3MgPT4gMSB9IHVubGVzcyAkUm9sZXM7CgogICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgbXkgJFJldHVybkVycm9yID0gc3ViIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgICAgICAgICAgRXJyb3IgICAgID0+ICRfWzBdLAogICAgICAgICAgICBFcnJvckFyZ3MgPT4gWyAoICRfWzFdIC8vICcnICksICggJF9bMl0gLy8gJycgKSBdLCAgICAjIG9ubHkgdHdvIGFyZ3MgYXJlIHN1cHBvcnRlZAogICAgICAgIH07CiAgICB9OwoKICAgIGlmICggcmVmICRSb2xlcyBuZSAnSEFTSCcgKSB7CiAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICBUcmFuc2xhdGFibGUocXtLZXkgJXMgaXMgbm90IGEgSGFzaC59KSwKICAgICAgICAgICAgJ1JvbGVzJywKICAgICAgICApOwogICAgfQoKICAgICMgbm90aGluZyB0byBkbwogICAgcmV0dXJuIHsgU3VjY2VzcyA9PiAxIH0gdW5sZXNzICRSb2xlcy0+JSo7CgogICAgIyBnZXQgcm9sZSBsaXN0IGZvciBtYXBwaW5nIG5hbWUgdG8gSUQKICAgIG15ICVSb2xlTmFtZTJJRDsKICAgIHsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkUm9sZUxpc3QgICAgICAgICAgICAgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Um9sZScsCiAgICAgICAgKTsKICAgICAgICAlUm9sZU5hbWUySUQgPSByZXZlcnNlICRSb2xlTGlzdC0+JSo7CiAgICB9CgogICAgbXkgJUltcG9ydFJvbGVzID0gbWFwIHsgJF8gPT4gMSB9IEB7ICRQYXJhbXtJbXBvcnRSb2xlc30gLy8gW10gfTsKCiAgICAjIG92ZXJ3cml0ZSB3aXRob3V0IG1lcmN5CiAgICBST0xFX0tFWToKICAgIGZvciBteSAkUm9sZUtleSAoIGtleXMgJFJvbGVzLT4lKiApIHsKICAgICAgICBteSAkUm9sZVNvdXJjZSA9ICRSb2xlcy0+eyRSb2xlS2V5fTsKCiAgICAgICAgIyBUaGUgbmFtZSBvZiB0aGUgcm9sZSBpcyBwZXIgZGVmYXVsdCB0aGUga2V5IGluIHRoZSBSb2xlcyBoYXNoLAogICAgICAgICMgYnV0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGFuIGV4cGxpY2l0IGF0dHJpYnV0ZSAnTmFtZScuCiAgICAgICAgIyBUaGlzIGFsbG93cyB0byB1c2UgYSBtb3JlIGNvbnZlbmllbnQgbmFtZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KICAgICAgICBteSAkUm9sZU5hbWUgPSAkUm9sZVNvdXJjZS0+e05hbWV9IC8vICRSb2xlS2V5OwoKICAgICAgICAjIFRoZSBhdHRyaWJ1dGUgVmVyc2lvbiBpcyBub3QgcmVxdWlyZWQgaW4gdGhlIFlBTUwuCiAgICAgICAgIyBXaGVuIG5vIFZlcnNpb24gaXMgcGFzc2VkIHRoZW4gdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSByb2xlIGlzIHVzZWQuCiAgICAgICAgI2lmICggISRSb2xlU291cmNlLT57VmVyc2lvbn0gKSB7CiAgICAgICAgIyAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgIyAgICAgICAgVHJhbnNsYXRhYmxlKHF7S2V5ICVzIGlzIG1pc3NpbmcgZm9yIHRoZSByb2xlICVzfSksCiAgICAgICAgIyAgICAgICAgJ1ZlcnNpb24nLAogICAgICAgICMgICAgICAgICRSb2xlTmFtZSwKICAgICAgICAjICAgICk7CiAgICAgICAgI30KCiAgICAgICAgIyB0aGUgZmV0Y2hpbmcgaXMgZG9uZSB2aWEgdGhlIElECiAgICAgICAgbXkgJFJvbGVJRCA9ICRSb2xlTmFtZTJJRHskUm9sZU5hbWV9OwoKICAgICAgICBpZiAoICEkUm9sZUlEICYmICEkSW1wb3J0Um9sZXN7JFJvbGVOYW1lfSApIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7VGhlIHJvbGUgJXMgd2FzIG5vdCBmb3VuZC59KSwKICAgICAgICAgICAgICAgICRSb2xlTmFtZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZG8gbm90IGNoZWNrIGFueSBmdXJ0aGVyLCBpZiB0aGUgcm9sZSBpcyBvbmx5IGFib3V0IHRvIGJlIGltcG9ydGVkCiAgICAgICAgcmV0dXJuIHsgU3VjY2VzcyA9PiAxIH0gaWYgJEltcG9ydFJvbGVzeyRSb2xlTmFtZX07CgogICAgICAgICMgVGhpcyBhbHJlYWR5IHBhcnNlcyB0aGUgWUFNTAogICAgICAgIG15ICRSb2xlRGVmaW5pdGlvbiA9ICRTZWxmLT5Sb2xlRGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgUm9sZUlEICA9PiAkUm9sZUlELAogICAgICAgICAgICBWZXJzaW9uID0+ICRSb2xlU291cmNlLT57VmVyc2lvbn0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFJvbGVEZWZpbml0aW9uICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtUaGUgcm9sZSAlcyB3aXRoIHZlcnNpb24gJXMgd2FzIG5vdCBmb3VuZC59KSwKICAgICAgICAgICAgICAgICRSb2xlTmFtZSwKICAgICAgICAgICAgICAgICRSb2xlU291cmNlLT57VmVyc2lvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIHJlZiAkUm9sZURlZmluaXRpb24gbmUgJ0hBU0gnICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtUaGUgcm9sZSAlcyB3aXRoIHZlcnNpb24gJXMgaXMgbm90IGEgaGFzaC59KSwKICAgICAgICAgICAgICAgICRSb2xlTmFtZSwKICAgICAgICAgICAgICAgICRSb2xlU291cmNlLT57VmVyc2lvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoCiAgICAgICAgICAgICEkUm9sZURlZmluaXRpb24tPntEZWZpbml0aW9ufQogICAgICAgICAgICB8fAogICAgICAgICAgICAhJFJvbGVEZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0KICAgICAgICAgICAgfHwKICAgICAgICAgICAgISRSb2xlRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9LT57U2VjdGlvbnN9CiAgICAgICAgICAgIHx8CiAgICAgICAgICAgIHJlZiAkUm9sZURlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfS0+e1NlY3Rpb25zfSBuZSAnSEFTSCcKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7VGhlIHJvbGUgJXMgd2l0aCB2ZXJzaW9uICVzIGlzIG5vdCB2YWxpZC59KSwKICAgICAgICAgICAgICAgICRSb2xlTmFtZSwKICAgICAgICAgICAgICAgICRSb2xlU291cmNlLT57VmVyc2lvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEFkZCB0aGUgc2VjdGlvbnMgZnJvbSB0aGUgUm9sZSB0byB0aGUgU2VjdGlvbnMgb2YgdGhlIGNsYXNzLgogICAgICAgICMgTm90ZSB0aGF0IHRoZSBjb252ZW5pZW50IG5hbWUgZnJvbSB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpcyB1c2VkIGhlcmUKICAgICAgICBteSAkUm9sZVNlY3Rpb25zID0gJFJvbGVEZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0tPntTZWN0aW9uc307CiAgICAgICAgZm9yIG15ICRSb2xlU2VjdGlvbktleSAoIGtleXMgJFJvbGVTZWN0aW9ucy0+JSogKSB7CgogICAgICAgICAgICAjIGlmIGEgY2xhc3MgaGFzIHZhbGlkIHJvbGVzLCB0aGVuIFNlY3Rpb25zIGlzIG5vdCByZXF1aXJlZAogICAgICAgICAgICAkRGVmaW5pdGlvblJlZi0+e1NlY3Rpb25zfSAvLz0ge307CgogICAgICAgICAgICBteSAkU2VjdGlvbk5hbWUgPSBqb2luICc6OicsICRSb2xlS2V5LCAkUm9sZVNlY3Rpb25LZXk7CiAgICAgICAgICAgICREZWZpbml0aW9uUmVmLT57U2VjdGlvbnN9LT57JFNlY3Rpb25OYW1lfSA9ICRSb2xlU2VjdGlvbnMtPnskUm9sZVNlY3Rpb25LZXl9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4geyBTdWNjZXNzID0+IDEgfTsKfQoKPWhlYWQyIF9EZWZpbml0aW9uUHJlcGFyZSgpCgpQcmVwYXJlIHRoZSBzeW50YXggb2YgYSBuZXcgZGVmaW5pdGlvbi4KCiAgICBteSAkVHJ1ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5fRGVmaW5pdGlvblByZXBhcmUoCiAgICAgICAgRGVmaW5pdGlvblJlZiA9PiAkQXJyYXlSZWYsCiAgICApOwoKPWN1dAoKc3ViIF9EZWZpbml0aW9uUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgVE9ETzogdGhlIG1ldGhvZCBpcyB1bnVzZWQuIEVpdGhlciByZW1vdmUgaXQgb3IgYWN0dWFsbHkgdXNlIGl0LgogICAgIyBjaGVjayBkZWZpbml0aW9uCiAgICBpZiAoICEkUGFyYW17RGVmaW5pdGlvblJlZn0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIERlZmluaXRpb25SZWYhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBmb3IgbXkgJEl0ZW0gKCBAeyAkUGFyYW17RGVmaW5pdGlvblJlZn0gfSApIHsKCiAgICAgICAgIyBzZXQgQ291bnRNaW4KICAgICAgICAkSXRlbS0+e0NvdW50TWlufSAvLz0gMTsKCiAgICAgICAgIyBzZXQgQ291bnRNYXgKICAgICAgICAkSXRlbS0+e0NvdW50TWF4fSB8fD0gMTsKCiAgICAgICAgIyBzZXQgQ291bnRNaW4KICAgICAgICBpZiAoICRJdGVtLT57Q291bnRNaW59ID4gJEl0ZW0tPntDb3VudE1heH0gKSB7CiAgICAgICAgICAgICRJdGVtLT57Q291bnRNaW59ID0gJEl0ZW0tPntDb3VudE1heH07CiAgICAgICAgfQoKICAgICAgICAjIHNldCBDb3VudERlZmF1bHQKICAgICAgICAkSXRlbS0+e0NvdW50RGVmYXVsdH0gLy89IDE7CiAgICAgICAgaWYgKCAkSXRlbS0+e0NvdW50RGVmYXVsdH0gPCAkSXRlbS0+e0NvdW50TWlufSApIHsKICAgICAgICAgICAgJEl0ZW0tPntDb3VudERlZmF1bHR9ID0gJEl0ZW0tPntDb3VudE1pbn07CiAgICAgICAgfQogICAgICAgIGlmICggJEl0ZW0tPntDb3VudERlZmF1bHR9ID4gJEl0ZW0tPntDb3VudE1heH0gKSB7CiAgICAgICAgICAgICRJdGVtLT57Q291bnREZWZhdWx0fSA9ICRJdGVtLT57Q291bnRNYXh9OwogICAgICAgIH0KCiAgICAgICAgIyBzdGFydCByZWN1cnNpb24sIGlmICJTdWIiIGlzIGRlZmluZWQuCiAgICAgICAgaWYgKCAkSXRlbS0+e1N1Yn0gJiYgcmVmICRJdGVtLT57U3VifSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAkU2VsZi0+X0RlZmluaXRpb25QcmVwYXJlKAogICAgICAgICAgICAgICAgRGVmaW5pdGlvblJlZiA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBkZWxldGUgJEl0ZW0tPntTdWJ9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9EZWZpbml0aW9uRHluYW1pY0ZpZWxkR2V0KCkKCkNyZWF0ZSBhIFlBTUwgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGRlZmluaXRpb24gb2YgdGhlIGR5bmFtaWMgZmllbGRzIHJlbGV2YW50IGZvciB0aGlzIGNvbmZpZyBpdGVtLgpUaGUgZGVmaW5pdGlvbiBjYW4gYmUgcGFzc2VkIGluIGVpdGhlciBhcyBhIFlBTUwgc3RyaW5nIG9yIGFzIGEgUGVybCBkYXRhIHN0cnVjdHVyZS4KCiAgICBteSAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbllBTUwgPSAkU2VsZi0+X0RlZmluaXRpb25EeW5hbWljRmllbGRHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb259LAogICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICApOwoKb3IKCiAgICBteSAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbllBTUwgPSAkU2VsZi0+X0RlZmluaXRpb25EeW5hbWljRmllbGRHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9LAogICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICApOwoKPWN1dAoKc3ViIF9EZWZpbml0aW9uRHluYW1pY0ZpZWxkR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJElzSW5pdGlhbENhbGwgPSBkZWZpbmVkICRQYXJhbXtEZWZpbml0aW9ufTsgICAgIyB0aGUgWUFNTCBkZWZpbml0aW9uCgogICAgIyBJbiB0aGUgaW5pdGlhbCBjYWxsIHRoZSBEZWZpbml0aW9uIGlzIHBhc3NlZCBhcyBZQU1MLgogICAgIyBJbiB0aGUgc3Vic2VxdWVudCByZWN1cnNpdmUgY2FsbHMgRGVmaW5pdGlvblBlcmwgaXMgcGFzc2VkIGFzIGEgUGVybCBkYXRhIHN0cnVjdHVyZS4KICAgIGlmICgkSXNJbml0aWFsQ2FsbCkgewogICAgICAgICRQYXJhbXtEZWZpbml0aW9uUGVybH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICRQYXJhbXtEZWZpbml0aW9ufSwKICAgICAgICApOwoKICAgICAgICAjIG1lcmdlIHRoZSByb2xlcyBpbnRvIHRoZSBEZWZpbml0aW9uUmVmLCB0aGUgcGFzc2VkIGluIHJlZmVyZW5jZSBpcyBtb2RpZmllZCBpbiBwbGFjZQogICAgICAgICRTZWxmLT5fUHJvY2Vzc1JvbGVzKAogICAgICAgICAgICBEZWZpbml0aW9uUmVmID0+ICRQYXJhbXtEZWZpbml0aW9uUGVybH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlQ29udGVudEhhc2ggID0gcmVmICRQYXJhbXtEZWZpbml0aW9uUGVybH0gZXEgJ0hBU0gnICA/ICRQYXJhbXtEZWZpbml0aW9uUGVybH0tPiUqIDogKCk7CiAgICBteSBAQ29udGVudEFycmF5ID0gcmVmICRQYXJhbXtEZWZpbml0aW9uUGVybH0gZXEgJ0FSUkFZJyA/ICRQYXJhbXtEZWZpbml0aW9uUGVybH0tPkAqIDogKCk7CgogICAgIyBsb2csIGV2ZW4gd2hlbiBlbXB0eSBhcnJheXMgb3IgaGFzaGVzIGFyZSBhbGxvd2VkCiAgICBpZiAoICElQ29udGVudEhhc2ggJiYgIUBDb250ZW50QXJyYXkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIERlZmluaXRpb24gb3IgRGVmaW5pdGlvblBlcmwgYXMgaGFzaCBvciBhcnJheSEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHJlY3Vyc2l2ZWx5IGNvbGxlY3QgdGhlIGR5bmFtaWMgZmllbGRzCiAgICBteSAlRHluYW1pY0ZpZWxkczsKCiAgICAjIFRPRE86IHNwZWNpZnkgdGhlIHBhdGggd2hlcmUgREYgZmllbGRzIGFyZSBleHBlY3RlZCwgbWF5YmUgd2l0aCBKU09OOjpQYXRoCiAgICBLRVk6CiAgICBmb3IgbXkgJEtleSAoIGtleXMgJUNvbnRlbnRIYXNoICkgewogICAgICAgIGlmICggJEtleSBlcSAnREYnICkgewogICAgICAgICAgICAkRHluYW1pY0ZpZWxkc3sgJENvbnRlbnRIYXNoeyRLZXl9IH0gPSBcJUNvbnRlbnRIYXNoOwoKICAgICAgICAgICAgbmV4dCBLRVk7CiAgICAgICAgfQoKICAgICAgICAjIGRvIG5vdCBkZXNjZW5kIGludG8gSW50ZXJmYWNlcyBhbmQgR3JvdXBzLAogICAgICAgICMgYXMgdGhlc2UgbWF5IGJlIGVtcHR5IGFuZCB3b3VsZCBiZSBsb2dnZWQgYXMgZXJyb3JzCiAgICAgICAgIyBUT0RPOiBhcmUgSW50ZXJmYWNlcyBhbmQgR3JvdXBzIHN0aWxsIHVzZWQgPwogICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0ludGVyZmFjZXMnOwogICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0dyb3Vwcyc7CiAgICAgICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnUGFnZXMnOwogICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ1JvbGVzJzsKCiAgICAgICAgbmV4dCBLRVkgdW5sZXNzIHJlZiAkQ29udGVudEhhc2h7JEtleX07CgogICAgICAgICMgZGVzY2VuZAogICAgICAgICVEeW5hbWljRmllbGRzID0gKAogICAgICAgICAgICAlRHluYW1pY0ZpZWxkcywKICAgICAgICAgICAgJFNlbGYtPl9EZWZpbml0aW9uRHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgRGVmaW5pdGlvblBlcmwgPT4gJENvbnRlbnRIYXNoeyRLZXl9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICApLAogICAgICAgICk7CiAgICB9CgogICAgZm9yIG15ICRFbnRyeSAoQENvbnRlbnRBcnJheSkgewogICAgICAgIGlmICggcmVmICRFbnRyeSApIHsKICAgICAgICAgICAgJUR5bmFtaWNGaWVsZHMgPSAoCiAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkcywKICAgICAgICAgICAgICAgICRTZWxmLT5fRGVmaW5pdGlvbkR5bmFtaWNGaWVsZEdldCggRGVmaW5pdGlvblBlcmwgPT4gJEVudHJ5ICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgdGhlIHJlY3Vyc2l2ZSBjYWxscyBvbmx5IGNvbGxlY3QgdGhlIGR5bmFtaWMgZmllbGRzCiAgICByZXR1cm4gJUR5bmFtaWNGaWVsZHMgdW5sZXNzICRJc0luaXRpYWxDYWxsOwoKICAgICMgc29tZSBtb3JlIHdvcmsgdG8gZG8gaW4gdGhlIGluaXRpYWwgY2FsbAogICAgbXkgJVJldHVybkR5bmFtaWNGaWVsZHM7CiAgICB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKCiAgICAgICAgIyBTdG9yZSBjb25maWcgaXRlbSBjbGFzcyB0byBjaGVjayBmb3IgdmVyc2lvbiB0cmlnZ2VycyBpbiBkeW5hbWljIGZpZWxkIG9iamVjdCBoYW5kbGVyCiAgICAgICAgbXkgJENsYXNzSUQyTmFtZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwogICAgICAgIG15ICRDbGFzcyA9ICRDbGFzc0lEMk5hbWUtPnsgJFBhcmFte0NsYXNzSUR9IH07CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJE5hbWUgKCBrZXlzICVEeW5hbWljRmllbGRzICkgewogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KCBOYW1lID0+ICROYW1lICk7CgogICAgICAgICAgICAjIG9ubHkgcmV0dXJuIHZhbGlkIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkLT4lKjsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGQtPntWYWxpZElEfSBlcSAnMSc7CgogICAgICAgICAgICAjIGZvciBzZXQgZmllbGRzIGFsc28gdGhlIGNvbnRhaW5lZCBkeW5hbWljIGZpZWxkcyBoYXZlIHRvIGJlIHZlcnNpb25lZAogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSggJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317SW5jbHVkZX0gKTsKCiAgICAgICAgICAgICAgICBJTkNMVURFRDoKICAgICAgICAgICAgICAgIGZvciBteSAkSW5jbHVkZWRERiAoICREeW5hbWljRmllbGQtPntDb25maWd9e0luY2x1ZGV9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IElOQ0xVREVEIHVubGVzcyAkSW5jbHVkZWRERi0+e0RGfTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJEluY2x1ZGVkREZDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJEluY2x1ZGVkREYtPntERn0gKTsKCiAgICAgICAgICAgICAgICAgICAgJEluY2x1ZGVkREYtPntEZWZpbml0aW9ufSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgSUQgICAgICAgICA9PiAkSW5jbHVkZWRERkNvbmZpZy0+e0lEfSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkSW5jbHVkZWRERkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgID0+ICRJbmNsdWRlZERGQ29uZmlnLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWcgICAgID0+ICRJbmNsdWRlZERGQ29uZmlnLT57Q29uZmlnfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRUeXBlICA9PiAkSW5jbHVkZWRERkNvbmZpZy0+e0ZpZWxkVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJEluY2x1ZGVkREZDb25maWctPntPYmplY3RUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgQ0lDbGFzcyAgICA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFJldHVybkR5bmFtaWNGaWVsZHN7JE5hbWV9ID0gewogICAgICAgICAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57SUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sCiAgICAgICAgICAgICAgICBMYWJlbCAgICAgID0+ICREeW5hbWljRmllbGQtPntMYWJlbH0sCiAgICAgICAgICAgICAgICBDb25maWcgICAgID0+ICREeW5hbWljRmllbGQtPntDb25maWd9LCAgICAgICAjIG1heSBjb250YWluIGluY2x1ZGVkIERGCiAgICAgICAgICAgICAgICBGaWVsZFR5cGUgID0+ICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9LAogICAgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAkRHluYW1pY0ZpZWxkLT57T2JqZWN0VHlwZX0sCiAgICAgICAgICAgICAgICBDSUNsYXNzICAgID0+ICRDbGFzcywKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGZvciBteSAkQXR0cmlidXRlIChxdy9NYW5kYXRvcnkgTGFiZWwgUmVhZG9ubHkvKSB7CiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQgJER5bmFtaWNGaWVsZHN7JE5hbWV9eyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAgICAgICAgICRSZXR1cm5EeW5hbWljRmllbGRzeyROYW1lfXskQXR0cmlidXRlfSA9ICREeW5hbWljRmllbGRzeyROYW1lfXskQXR0cmlidXRlfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHRoZSBpbml0aWFsIGNhbGwgcmV0dXJucyBZQU1MCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+RHVtcCgKICAgICAgICBEYXRhID0+IFwlUmV0dXJuRHluYW1pY0ZpZWxkcywKICAgICk7Cn0KCj1oZWFkMiBfRHluYW1pY0ZpZWxkQ29uZmlnVHJhbnNmb3JtKCkKClRyYW5zZm9ybWF0aW9ucyBvZiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWcgbmVlZGVkIGZvciBJbXBvcnQvRXhwb3J0LgpOb3RlIHRoYXQgdGhlIHBhc3NlZCBpbiBkeW5hbWljIGZpZWxkIGNvbmZpZyBpcyBtb2RpZmllZCBpbiBwbGFjZS4KCiAgICAkRmllbGRDb25maWcgPSAkU2VsZi0+X0R5bmFtaWNGaWVsZENvbmZpZ1RyYW5zZm9ybSgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEZpZWxkQ29uZmlnLAogICAgICAgIEFjdGlvbiAgICAgICAgICAgICA9PiAnSW1wb3J0JywKICAgICk7Cgo9Y3V0CgpzdWIgX0R5bmFtaWNGaWVsZENvbmZpZ1RyYW5zZm9ybSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhBY3Rpb24gRHluYW1pY0ZpZWxkQ29uZmlnKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICBpZiAoIGdyZXAgeyAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtGaWVsZFR5cGV9IGVxICRfIH0gcXcoQWdlbnQgQ29uZmlnSXRlbSBDb25maWdJdGVtVmVyc2lvbiBDdXN0b21lckNvbXBhbnkgQ3VzdG9tZXJVc2VyIEZBUSBUaWNrZXQpICkgewoKICAgICAgICAjIG5lZWRlZCB0cmFuc2Zvcm1hdGlvbjogTmFtZSAtPiBJRAogICAgICAgIGlmICggJFBhcmFte0FjdGlvbn0gZXEgJ0ltcG9ydCcgKSB7CgogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1F1ZXVlfSApIHsKICAgICAgICAgICAgICAgIG15IEBRdWV1ZUlEczsKICAgICAgICAgICAgICAgIGZvciBteSAkUXVldWVOYW1lICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UXVldWV9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBRdWV1ZUlEcywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPlF1ZXVlTG9va3VwKCBRdWV1ZSA9PiAkUXVldWVOYW1lICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtRdWV1ZX0gPSBcQFF1ZXVlSURzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VGlja2V0VHlwZX0gKSB7CiAgICAgICAgICAgICAgICBteSBAVHlwZUlEczsKICAgICAgICAgICAgICAgIGZvciBteSAkVHlwZU5hbWUgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUaWNrZXRUeXBlfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAVHlwZUlEcywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKS0+VHlwZUxvb2t1cCggVHlwZUlEID0+ICRUeXBlTmFtZSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VGlja2V0VHlwZX0gPSBcQFR5cGVJRHM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtDbGFzc0lEc30gKSB7CiAgICAgICAgICAgICAgICBteSAlQ2xhc3NOYW1lMklEID0gcmV2ZXJzZSAlewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgbXkgQENsYXNzSURzID0gbWFwCiAgICAgICAgICAgICAgICAgICAgeyAkQ2xhc3NOYW1lMklEeyRffSB9CiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntDbGFzc0lEc30tPkAqOwogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317Q2xhc3NJRHN9ID0gXEBDbGFzc0lEczsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBuZWVkZWQgdHJhbnNmb3JtYXRpb246IElEIC0+IE5hbWUKICAgICAgICBlbHNpZiAoICRQYXJhbXtBY3Rpb259IGVxICdFeHBvcnQnICkgewoKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtRdWV1ZX0gKSB7CiAgICAgICAgICAgICAgICBteSBAUXVldWVOYW1lczsKICAgICAgICAgICAgICAgIGZvciBteSAkUXVldWVJRCAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1F1ZXVlfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUXVldWVOYW1lcywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPlF1ZXVlTG9va3VwKCBRdWV1ZUlEID0+ICRRdWV1ZUlEICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtRdWV1ZX0gPSBcQFF1ZXVlTmFtZXM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUaWNrZXRUeXBlfSApIHsKICAgICAgICAgICAgICAgIG15IEBUeXBlTmFtZXM7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFR5cGVJRCAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RpY2tldFR5cGV9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBUeXBlTmFtZXMsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJyktPlR5cGVMb29rdXAoIFR5cGVJRCA9PiAkVHlwZUlEICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUaWNrZXRUeXBlfSA9IFxAVHlwZU5hbWVzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317Q2xhc3NJRHN9ICkgewogICAgICAgICAgICAgICAgbXkgJUNsYXNzSUQyTmFtZSA9ICV7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBteSBAQ2xhc3NOYW1lcyA9IG1hcAogICAgICAgICAgICAgICAgICAgIHsgJENsYXNzSUQyTmFtZXskX30gfQogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57Q2xhc3NJRHN9LT5AKjsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0NsYXNzSURzfSA9IFxAQ2xhc3NOYW1lczsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317RmllbGRUeXBlfSBlcSAnTGVucycgKSB7CgogICAgICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgogICAgICAgIGlmICggJFBhcmFte0FjdGlvbn0gZXEgJ0ltcG9ydCcgKSB7CiAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVERiA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtBdHRyaWJ1dGVERn0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317QXR0cmlidXRlREZ9ID0gJEF0dHJpYnV0ZURGLT57SUR9OwogICAgICAgICAgICBteSAkUmVmZXJlbmNlREYgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317UmVmZXJlbmNlREZ9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1JlZmVyZW5jZURGfSA9ICRSZWZlcmVuY2VERi0+e0lEfTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkUGFyYW17QWN0aW9ufSBlcSAnRXhwb3J0JyApIHsKICAgICAgICAgICAgbXkgJEF0dHJpYnV0ZURGID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgSUQgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtBdHRyaWJ1dGVERn0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317QXR0cmlidXRlREZ9ID0gJEF0dHJpYnV0ZURGLT57TmFtZX07CiAgICAgICAgICAgIG15ICRSZWZlcmVuY2VERiA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIElEID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317UmVmZXJlbmNlREZ9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1JlZmVyZW5jZURGfSA9ICRSZWZlcmVuY2VERi0+e05hbWV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHNhbml0aXplIGNvbmZpZ3Mgb2Ygc2V0LWluY2x1ZGVkIERGcwogICAgaWYgKCAkUGFyYW17QWN0aW9ufSBlcSAiRXhwb3J0IiAmJiBJc0FycmF5UmVmV2l0aERhdGEoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57SW5jbHVkZX0gKSApIHsKICAgICAgICBJTkNMVURFRF9ERjoKICAgICAgICBmb3IgbXkgJEluY2x1ZGVkREYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e0luY2x1ZGV9LT5AKiApIHsKCiAgICAgICAgICAgIGRlbGV0ZSAkSW5jbHVkZWRERi0+e0RlZmluaXRpb259e0lEfTsKCiAgICAgICAgICAgICMgRmlsdGVyIG9mZiB0aGUgJ1BhcnRPZlNldCcgYXR0cmlidXRlLCBpdCBpcyBub3QgbmVjZXNzYXJ5IGFuZCBtYXkgY2F1c2UgaW5jb25zaXN0ZW5jeSBlcnJvcnMgbGF0ZXIgb24gaW1wb3J0CiAgICAgICAgICAgIGRlbGV0ZSAkSW5jbHVkZWRERi0+e0RlZmluaXRpb259LT57Q29uZmlnfS0+e1BhcnRPZlNldH07CgogICAgICAgICAgICAjIHRyYW5zZm9ybSBpbmNsdWRlZCBjb25maWdzIHJlY3Vyc2l2ZWx5IG9uIGV4cG9ydAogICAgICAgICAgICAkSW5jbHVkZWRERi0+e0RlZmluaXRpb259ID0gJFNlbGYtPl9EeW5hbWljRmllbGRDb25maWdUcmFuc2Zvcm0oCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEluY2x1ZGVkREYtPntEZWZpbml0aW9ufSwKICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICA9PiAnRXhwb3J0JywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkUGFyYW17QWN0aW9ufSBlcSAnRXhwb3J0JyApIHsKICAgICAgICBkZWxldGUgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317SUR9OwogICAgfQoKICAgIHJldHVybiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKfQoKPWhlYWQyIF9EZWZpbml0aW9uQ3JlYXRlQWZ0ZXJSb2xlQ3JlYXRlKCkKCkNvbmZpZyBpdGVtIGNsYXNzIGRlZmluaXRpb24gbWF5IGluY2x1ZGUgZHluYW1pYyByb2xlcy4gVGhpcyBtZWFucwp0aGF0IHRoZSB1c2Ugcm9sZXMgd2l0aG91dCBzcGVjaWZ5aW5nIGEgdmVyc2lvbiBvZiB0aGUgcm9sZS4gVGhpcwptZWFucyB0aGUgY2xhc3MgZGVmaW5pdGlvbnMgbWF5IGhhdmUgdG8gYmUgdXBkYXRlIHdoZW4gYSByb2xlIGlzCmNoYW5nZWQuCgogICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+X0RlZmluaXRpb25DcmVhdGVBZnRlclJvbGVDcmVhdGUoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRGaWVsZENvbmZpZywKICAgICAgICBBY3Rpb24gICAgICAgICAgICAgPT4gJ0ltcG9ydCcsCiAgICApOwoKPWN1dAoKc3ViIF9EZWZpbml0aW9uQ3JlYXRlQWZ0ZXJSb2xlQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgdGhlIG5hbWUgb2YgdGhlIHJvbGVkIHRoZSBuYW1lIG9mIHRoZSByb2xlIHRvIHRoZSByb2xlIGRlZmluaXRpb24KICAgIG15ICRSb2xlTmFtZTsKICAgIHsKICAgICAgICBteSAkUm9sZUlEICAgICAgPSAkUGFyYW17Um9sZUlEfTsKICAgICAgICBteSAkUm9sZUlEMk5hbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpSb2xlJywKICAgICAgICApOwogICAgICAgICRSb2xlTmFtZSA9ICRSb2xlSUQyTmFtZS0+eyRSb2xlSUR9OwogICAgfQoKICAgICMgTG9vcCBvdmVyIGFsbCBjbGFzc2VzIGFuZCBjaGVjayB3aGV0aGVyIHRoZXkgaW5jbHVkZSB0aGUgY2hhbmdlZCBkeW5hbWljIGZpZWxkCiAgICBteSAkQ2xhc3NJRDJOYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwogICAgbXkgQENsYXNzSXNBZmZlY3RlZDsKICAgIENMQVNTX0lEOgogICAgZm9yIG15ICRDbGFzc0lEICggc29ydCB7ICRhIGNtcCAkYiB9IGtleXMgJENsYXNzSUQyTmFtZS0+JSogKSB7CgogICAgICAgICMgRGVmaW5pdGlvbkdldCgpIGRvZXMgcmVzb2x2ZSB0aGUgcm9sZSBkZWNsYXJhdGlvbiwKICAgICAgICAjIGJ1dCB0aGUgYXR0cmlidXRlICdSb2xlcycgaXMgc3RpbGwgaW5jbHVkZWQKICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgIG5leHQgQ0xBU1NfSUQgdW5sZXNzICREZWZpbml0aW9uOwogICAgICAgIG5leHQgQ0xBU1NfSUQgdW5sZXNzICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn07CgogICAgICAgIG15ICRSb2xlcyA9ICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0tPntSb2xlc30gLy8ge307CgogICAgICAgIFJPTEVfS0VZOgogICAgICAgIGZvciBteSAkUm9sZUtleSAoIGtleXMgJFJvbGVzLT4lKiApIHsKICAgICAgICAgICAgbXkgJFJvbGVTb3VyY2UgPSAkUm9sZXMtPnskUm9sZUtleX07CgogICAgICAgICAgICBuZXh0IFJPTEVfS0VZIHVubGVzcyByZWYgJFJvbGVTb3VyY2UgZXEgJ0hBU0gnOyAgICAjIGFuIGVtcHR5IGhhc2hyZWYgaXMgT0sKCiAgICAgICAgICAgICMgb25seSBkeW5hbWljIHJvbGVzLCB0aGF0IGlzIHJvbGVzIHdpdGhvdXQgdmVyc2lvbiwgYXJlIHJlbGV2YW50IGhlcmUKICAgICAgICAgICAgbmV4dCBST0xFX0tFWSBpZiAkUm9sZVNvdXJjZS0+e1ZlcnNpb259OwoKICAgICAgICAgICAgIyBUaGUgbmFtZSBvZiB0aGUgcm9sZSBpcyBwZXIgZGVmYXVsdCB0aGUga2V5IGluIHRoZSBSb2xlcyBoYXNoLAogICAgICAgICAgICAjIGJ1dCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBhbiBleHBsaWNpdCBhdHRyaWJ1dGUgJ05hbWUnLgogICAgICAgICAgICAjIFRoaXMgYWxsb3dzIHRvIHVzZSBhIG1vcmUgY29udmVuaWVudCBuYW1lIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLgogICAgICAgICAgICBteSAkRGVjbGFyZWRSb2xlTmFtZSA9ICRSb2xlU291cmNlLT57TmFtZX0gLy8gJFJvbGVLZXk7CgogICAgICAgICAgICBuZXh0IFJPTEVfS0VZIHVubGVzcyAkRGVjbGFyZWRSb2xlTmFtZSBlcSAkUm9sZU5hbWU7CgogICAgICAgICAgICBwdXNoIEBDbGFzc0lzQWZmZWN0ZWQsICRDbGFzc0lEOwoKICAgICAgICAgICAgbGFzdCBST0xFX0tFWTsKICAgICAgICB9CiAgICB9CgogICAgIyBmb3JjZSBuZXcgdmVyc2lvbnMgZm9yIHRoZSBhZmZlY3RlZCBjbGFzc2VzCiAgICBmb3IgbXkgJENsYXNzSUQgKEBDbGFzc0lzQWZmZWN0ZWQpIHsKICAgICAgICBteSAkT2xkRGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KCBDbGFzc0lEID0+ICRDbGFzc0lEICk7CiAgICAgICAgJFNlbGYtPkRlZmluaXRpb25BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJE9sZERlZmluaXRpb24tPntEZWZpbml0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICBGb3JjZSAgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWVuZCBJbnRlcm5hbDoKCj1jdXQKCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/CountLicenseLinks.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6Q291bnRMaWNlbnNlTGlua3M7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkNvdW50TGljZW5zZUxpbmtzIC0gRXZlbnQgaGFuZGxlciB0aGF0IGNvdW50IGxpY2Vuc2VzIHVzaW5nIGxpbmtlZCBDSSdzCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBldmVudCBoYW5kbGVyIGZ1bmN0aW9ucyBmb3IgY291bnQgbGljZW5zZXMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkRG9IaXN0b3J5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RG9MaW5rQ291bnQnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aXRlbSBSdW4oKQoKVGhpcyBtZXRob2QgaGFuZGxlcyB0aGUgZXZlbnQuCgogICAgJERvTGlua0NvdW50T2JqZWN0LT5SdW4oCiAgICAgICAgRXZlbnQgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICduZXcgdmFsdWU6IDEnLAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRGF0YSBFdmVudCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgR2V0IENvbmZpZyBvcHRpb25zCiAgICBteSAlTGljZW5zZVNldHRpbmdzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TGljZW5zZUNvdW50JyktPiUqOwoKICAgIG15ICVEZXBsb3ltZW50U3RhdGVMaXN0ID0gJXsKICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICApCiAgICB9OwoKICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnRGVwbG95bWVudFN0YXRlVXBkYXRlJyApIHsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRDdXJyZW50RGVwbFN0YXRlSUQgID0gJFBhcmFte0RhdGF9e05ld307CiAgICAgICAgbXkgJFByZXZpb3VzRGVwbFN0YXRlSUQgPSAkUGFyYW17RGF0YX17T2xkfTsKICAgICAgICBteSAkQ3VycmVudERlcGxTdGF0ZSAgICA9ICREZXBsb3ltZW50U3RhdGVMaXN0eyRDdXJyZW50RGVwbFN0YXRlSUR9OwogICAgICAgIG15ICRQcmV2aW91c0RlcGxTdGF0ZSAgID0gJERlcGxveW1lbnRTdGF0ZUxpc3R7JFByZXZpb3VzRGVwbFN0YXRlSUR9OwoKICAgICAgICBTRVRUSU5HOgogICAgICAgIGZvciBteSAkS2V5ICgga2V5cyAlTGljZW5zZVNldHRpbmdzICkgewoKICAgICAgICAgICAgIyBpZiBhbGwgZGVwbG95bWVudCBzdGF0ZXMgYXJlIHZhbGlkIHdlIGRvIG5vdCBjaGVjayBjaGFuZ2VzCiAgICAgICAgICAgIG5leHQgU0VUVElORyBpZiAhJExpY2Vuc2VTZXR0aW5nc3skS2V5fXtWYWxpZERlcGxTdGF0ZXN9OwoKICAgICAgICAgICAgbXkgQFZhbGlkRGVwbFN0YXRlcyAgICA9ICRMaWNlbnNlU2V0dGluZ3N7JEtleX17VmFsaWREZXBsU3RhdGVzfS0+QCo7CiAgICAgICAgICAgIG15ICRMaWNlbnNlUmVmZXJlbmNlREYgPSAkTGljZW5zZVNldHRpbmdzeyRLZXl9e0xpY2Vuc2VSZWZlcmVuY2VERn07CgogICAgICAgICAgICBuZXh0IFNFVFRJTkcgaWYgISRDb25maWdJdGVtLT57IkR5bmFtaWNGaWVsZF8kTGljZW5zZVJlZmVyZW5jZURGIn07CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoIG5vbmUgeyAkXyBlcSAkUHJldmlvdXNEZXBsU3RhdGUgfSBAVmFsaWREZXBsU3RhdGVzICkKICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICAgICAoIGFueSB7ICRfIGVxICRDdXJyZW50RGVwbFN0YXRlIH0gQFZhbGlkRGVwbFN0YXRlcyApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvciBteSAkTGljZW5zZVJlZmVyZW5jZSAoICRDb25maWdJdGVtLT57IkR5bmFtaWNGaWVsZF8kTGljZW5zZVJlZmVyZW5jZURGIn0tPkAqICkgewogICAgICAgICAgICAgICAgICAgICRTZWxmLT5fTGljZW5zZXNBY2NvdW50aW5nVXBkYXRlKAogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgPT4gJExpY2Vuc2VSZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgTGljZW5zZVNldHRpbmdzID0+ICRMaWNlbnNlU2V0dGluZ3N7JEtleX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGVsdGEgICAgICAgICAgID0+IC0xCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAgICAgKCBhbnkgeyAkXyBlcSAkUHJldmlvdXNEZXBsU3RhdGUgfSBAVmFsaWREZXBsU3RhdGVzICkKICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICAgICAoIG5vbmUgeyAkXyBlcSAkQ3VycmVudERlcGxTdGF0ZSB9IEBWYWxpZERlcGxTdGF0ZXMgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJExpY2Vuc2VSZWZlcmVuY2UgKCAkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJExpY2Vuc2VSZWZlcmVuY2VERiJ9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+X0xpY2Vuc2VzQWNjb3VudGluZ1VwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgID0+ICRMaWNlbnNlUmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIExpY2Vuc2VTZXR0aW5ncyA9PiAkTGljZW5zZVNldHRpbmdzeyRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIERlbHRhICAgICAgICAgICA9PiAxCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gZXEgJ0NvbmZpZ0l0ZW1EZWxldGUnICkgewoKICAgICAgICBTRVRUSU5HOgogICAgICAgIGZvciBteSAkS2V5ICgga2V5cyAlTGljZW5zZVNldHRpbmdzICkgewogICAgICAgICAgICBteSAkTGljZW5zZVJlZmVyZW5jZURGID0gJExpY2Vuc2VTZXR0aW5nc3skS2V5fXtMaWNlbnNlUmVmZXJlbmNlREZ9OwogICAgICAgICAgICBteSBAVmFsaWREZXBsU3RhdGVzICAgID0gKCAkTGljZW5zZVNldHRpbmdzeyRLZXl9e1ZhbGlkRGVwbFN0YXRlc30gfHwgW10gKS0+QCo7CgogICAgICAgICAgICBuZXh0IFNFVFRJTkcgaWYgISRQYXJhbXtEYXRhfXtDb25maWdJdGVtfXsiRHluYW1pY0ZpZWxkXyRMaWNlbnNlUmVmZXJlbmNlREYifTsKICAgICAgICAgICAgbmV4dCBTRVRUSU5HIGlmIEBWYWxpZERlcGxTdGF0ZXMgJiYgbm9uZSB7ICRfIGVxICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfXtDdXJEZXBsU3RhdGV9IH0gQFZhbGlkRGVwbFN0YXRlczsKCiAgICAgICAgICAgIGZvciBteSAkTGljZW5zZVJlZmVyZW5jZSAoICRQYXJhbXtEYXRhfXtDb25maWdJdGVtfXsiRHluYW1pY0ZpZWxkXyRMaWNlbnNlUmVmZXJlbmNlREYifS0+QCogKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+X0xpY2Vuc2VzQWNjb3VudGluZ1VwZGF0ZSgKICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgPT4gJExpY2Vuc2VSZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgID0+ICRQYXJhbXtEYXRhfXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIExpY2Vuc2VTZXR0aW5ncyA9PiAkTGljZW5zZVNldHRpbmdzeyRLZXl9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBEZWx0YSAgICAgICAgICAgPT4gMQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gPX4gL15Db25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlXy8gKSB7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIFNFVFRJTkc6CiAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICVMaWNlbnNlU2V0dGluZ3MgKSB7CiAgICAgICAgICAgIG15ICRMaWNlbnNlUmVmZXJlbmNlREYgPSAkTGljZW5zZVNldHRpbmdzeyRLZXl9e0xpY2Vuc2VSZWZlcmVuY2VERn07CiAgICAgICAgICAgIG15ICRUb3RhbExpY2Vuc2VzREYgICAgPSAkTGljZW5zZVNldHRpbmdzeyRLZXl9e1RvdGFsTGljZW5zZXNERn07CgogICAgICAgICAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgIkNvbmZpZ0l0ZW1EeW5hbWljRmllbGRVcGRhdGVfJExpY2Vuc2VSZWZlcmVuY2VERiIgKSB7CiAgICAgICAgICAgICAgICBteSBAVmFsaWREZXBsU3RhdGVzID0gKCAkTGljZW5zZVNldHRpbmdzeyRLZXl9e1ZhbGlkRGVwbFN0YXRlc30gfHwgW10gKS0+QCo7CgogICAgICAgICAgICAgICAgbmV4dCBTRVRUSU5HIGlmIEBWYWxpZERlcGxTdGF0ZXMgJiYgbm9uZSB7ICRfIGVxICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfSB9IEBWYWxpZERlcGxTdGF0ZXM7CgogICAgICAgICAgICAgICAgbXkgQE9sZExpY2Vuc2VSZWZlcmVuY2VzTGlzdCA9ICggJFBhcmFte0RhdGF9e09sZFZhbHVlfSB8fCBbXSApLT5AKjsKICAgICAgICAgICAgICAgIG15IEBOZXdMaWNlbnNlUmVmZXJlbmNlc0xpc3QgPSAoICRQYXJhbXtEYXRhfXtWYWx1ZX0gICAgfHwgW10gKS0+QCo7CiAgICAgICAgICAgICAgICBteSAlRGVsdGE7CgogICAgICAgICAgICAgICAgT0xEOgogICAgICAgICAgICAgICAgZm9yIG15ICRMaWNlbnNlUmVmZXJlbmNlIChAT2xkTGljZW5zZVJlZmVyZW5jZXNMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBPTEQgaWYgISRMaWNlbnNlUmVmZXJlbmNlOwoKICAgICAgICAgICAgICAgICAgICAkRGVsdGF7JExpY2Vuc2VSZWZlcmVuY2V9Kys7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgTkVXOgogICAgICAgICAgICAgICAgZm9yIG15ICRMaWNlbnNlUmVmZXJlbmNlIChATmV3TGljZW5zZVJlZmVyZW5jZXNMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBORVcgaWYgISRMaWNlbnNlUmVmZXJlbmNlOwoKICAgICAgICAgICAgICAgICAgICAkRGVsdGF7JExpY2Vuc2VSZWZlcmVuY2V9LS07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgREVMVEE6CiAgICAgICAgICAgICAgICBmb3IgbXkgJExpY2Vuc2VSZWZlcmVuY2UgKCBrZXlzICVEZWx0YSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERFTFRBIGlmICEkRGVsdGF7JExpY2Vuc2VSZWZlcmVuY2V9OwoKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+X0xpY2Vuc2VzQWNjb3VudGluZ1VwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgID0+ICRMaWNlbnNlUmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIExpY2Vuc2VTZXR0aW5ncyA9PiAkTGljZW5zZVNldHRpbmdzeyRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIERlbHRhICAgICAgICAgICA9PiAkRGVsdGF7JExpY2Vuc2VSZWZlcmVuY2V9CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzaWYgKCAkUGFyYW17RXZlbnR9IGVxICJDb25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlXyRUb3RhbExpY2Vuc2VzREYiICkgewogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgICAgICAgICBteSAkUmVmZXJlbmNlRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJExpY2Vuc2VTZXR0aW5nc3skS2V5fXtMaWNlbnNlUmVmZXJlbmNlREZ9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15ICRSZWZlcmVuY2VEeW5hbWljRmllbGRJRCA9ICRSZWZlcmVuY2VEeW5hbWljRmllbGRDb25maWctPntJRH07CgogICAgICAgICAgICAgICAgbXkgJFRvdGFsTGljZW5zZXMgPSAkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJFRvdGFsTGljZW5zZXNERiJ9OwogICAgICAgICAgICAgICAgbXkgJENvdW50TGlua3MgICAgPSAwOwoKICAgICAgICAgICAgICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdCb3RoJywKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIExJTks6CiAgICAgICAgICAgICAgICBmb3IgbXkgJExpbmsgKCAkTGlua2VkQ29uZmlnSXRlbXMtPkAqICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgTElOSyBpZiAkTGluay0+e0R5bmFtaWNGaWVsZElEfSAhPSAkUmVmZXJlbmNlRHluYW1pY0ZpZWxkSUQ7CiAgICAgICAgICAgICAgICAgICAgJENvdW50TGlua3MrKzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkQXZhaWxhYmxlRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJExpY2Vuc2VTZXR0aW5nc3skS2V5fXtBdmFpbGFibGVMaWNlbnNlc0RGfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdmFpbGFibGVEeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVG90YWxMaWNlbnNlcyAtICRDb3VudExpbmtzLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9MaWNlbnNlc0FjY291bnRpbmdVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJExvZ09iamVjdCAgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgTmFtZSA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtBdmFpbGFibGVMaWNlbnNlc0RGfSwKICAgICk7CiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIG15ICRBdmFpbGFibGVMaWNlbnNlc0RGID0gJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317QXZhaWxhYmxlTGljZW5zZXNERn07CiAgICBteSAkU3VjY2VzcyAgICAgICAgICAgICA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgJEF2YWlsYWJsZUxpY2Vuc2VzREYgPT4gJENvbmZpZ0l0ZW0tPnskQXZhaWxhYmxlTGljZW5zZXNERn0gKyAkUGFyYW17RGVsdGF9LAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgZmllbGQgJyRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e0F2YWlsYWJsZUxpY2Vuc2VzREZ9JyIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAkUGFyYW17RGVsdGF9IDwgMCApIHsKICAgICAgICBteSAkTWluaW11bUxpY2Vuc2VzICAgICAgICAgICAgICAgICAgPSAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtNaW5pbXVtTGljZW5zZXN9OwogICAgICAgICRDb25maWdJdGVtLT57JEF2YWlsYWJsZUxpY2Vuc2VzREZ9ICs9ICRQYXJhbXtEZWx0YX07ICAgICMgU3luY2hyb25pemUgQ0kgc25hcHNob3QKCiAgICAgICAgaWYgKCAkTWluaW11bUxpY2Vuc2VzICYmICRDb25maWdJdGVtLT57JEF2YWlsYWJsZUxpY2Vuc2VzREZ9IDwgJE1pbmltdW1MaWNlbnNlcyApIHsKICAgICAgICAgICAgJFNlbGYtPl9Ob3RpZnkoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtICAgICAgPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICBMaWNlbnNlU2V0dGluZ3MgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc30KICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfTm90aWZ5IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayB3aGV0aGVyIGEgdGlja2V0IHdhcyBnZW5lcmF0ZWQgcHJldmlvdXNseSBhbmQgaXMgbm90IGNsb3NlZAogICAgbXkgJExpbmtPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwogICAgbXkgJUxpbmtMaXN0ICAgPSAkTGlua09iamVjdC0+TGlua0tleUxpc3QoCiAgICAgICAgT2JqZWN0MSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleTEgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgT2JqZWN0MiA9PiAnVGlja2V0JywKICAgICAgICBTdGF0ZSAgID0+ICdWYWxpZCcsCiAgICAgICAgVHlwZSAgICA9PiAnRGVwZW5kc09uJywKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBmb3IgbXkgJExpbmtlZFRpY2tldElEICgga2V5cyAlTGlua0xpc3QgKSB7CiAgICAgICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkTGlua2VkVGlja2V0SUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICBTaWxlbnQgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBza2lwIG5vdGlmaWNhdGlvbiBpZiBhbiBvcGVuIHRpY2tldCB3YXMgYWxyZWFkeSBjcmVhdGVkCiAgICAgICAgaWYgKAogICAgICAgICAgICAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e0R5bmFtaWNGaWVsZH0gfQogICAgICAgICAgICAmJiAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e0R5bmFtaWNGaWVsZH0gfSA9PSAxCiAgICAgICAgICAgICYmICRUaWNrZXR7U3RhdGVUeXBlfSBuZSAiY2xvc2VkIgogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgcHJlcGFyZSBzdWJzdGl0dXRpb25zCiAgICBteSAlU3Vic3RpdHV0aW9ucyA9ICgKICAgICAgICAnPE9UT0JPX0NPTkZJR0lURU1fTlVNQkVSPicgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17TnVtYmVyfSwKICAgICAgICAnPE9UT0JPX0NPTkZJR0lURU1fTkFNRT4nICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17TmFtZX0sCiAgICAgICAgJzxPVE9CT19DT05GSUdJVEVNX0xJQ0VOU0VTX0FWQUlMPicgPT4gJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtBdmFpbGFibGVMaWNlbnNlc0RGfSB9LAogICAgICAgICc8T1RPQk9fQ09ORklHSVRFTV9MSUNFTlNFU19NSU4+JyAgID0+ICRQYXJhbXtDb25maWdJdGVtfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317TWluaW11bUxpY2Vuc2VzREZ9IH0sCiAgICApOwoKICAgIFNVQktFWToKICAgIGZvciBteSAkS2V5ICggKCAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e1RpdGxlfSAuICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17VGV4dH0gKSA9fiAvPE9UT0JPX0NPTkZJR0lURU1fKFtePl0rKT4vZyApIHsKICAgICAgICBuZXh0IFNVQktFWSBpZiBleGlzdHMgJFN1YnN0aXR1dGlvbnN7IjxPVE9CT19DT05GSUdJVEVNXyRLZXk+In07CiAgICAgICAgbmV4dCBTVUJLRVkgaWYgISRQYXJhbXtDb25maWdJdGVtfXskS2V5fTsKCiAgICAgICAgJFN1YnN0aXR1dGlvbnN7IjxPVE9CT19DT05GSUdJVEVNXyRLZXk+In0gPSAkUGFyYW17Q29uZmlnSXRlbX17JEtleX0gLy8gJyc7CiAgICB9CgogICAgbXkgJFRpY2tldFRpdGxlICAgICAgPSAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e1RpdGxlfTsKICAgIG15ICROb3RpZmljYXRpb25UZXh0ID0gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtUZXh0fTsKICAgIGZvciBteSAkS2V5ICgga2V5cyAlU3Vic3RpdHV0aW9ucyApIHsKICAgICAgICAkVGlja2V0VGl0bGUgICAgICA9fiBzLyRLZXkvJFN1YnN0aXR1dGlvbnN7ICRLZXkgfS9nOwogICAgICAgICROb3RpZmljYXRpb25UZXh0ID1+IHMvJEtleS8kU3Vic3RpdHV0aW9uc3sgJEtleSB9L2c7CiAgICB9CgogICAgIyBhbGwgY2hlY2tzIGZpbmlzaGVkIC0+IGNyZWF0ZSBhIHRpY2tldCBhcyBub3RpZmljYXRpb24KICAgIG15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICBUTiAgICAgICAgICAgPT4gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCksCiAgICAgICAgVGl0bGUgICAgICAgID0+ICRUaWNrZXRUaXRsZSwKICAgICAgICBRdWV1ZSAgICAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtRdWV1ZX0sCiAgICAgICAgTG9jayAgICAgICAgID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17TG9ja30gICAgICAgICB8fCAndW5sb2NrJywKICAgICAgICBQcmlvcml0eSAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtQcmlvcml0eX0gICAgIHx8ICczIG5vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17U3RhdGV9ICAgICAgICB8fCAnbmV3JywKICAgICAgICBUeXBlICAgICAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtUeXBlfSAgICAgICAgIHx8ICcnLAogICAgICAgIFNlcnZpY2UgICAgICA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e1NlcnZpY2V9ICAgICAgfHwgJycsCiAgICAgICAgU0xBICAgICAgICAgID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17U0xBfSAgICAgICAgICB8fCAnJywKICAgICAgICBDdXN0b21lcklEICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtDdXN0b21lcklEfSAgIHx8ICcnLAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e0N1c3RvbWVyVXNlcn0gfHwgJycsCiAgICAgICAgT3duZXJJRCAgICAgID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17T3duZXJJRH0gICAgICB8fCAnMScsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgaWYgKCAhJFRpY2tldElEICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGNyZWF0ZSBhIHRpY2tldCBmb3IgQ29uZmlnSXRlbUlEOiAkUGFyYW17Q29uZmlnSXRlbX17Q29uZmlnSXRlbUlEfSEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZG8gYXJ0aWNsZSBkYiBpbnNlcnQKICAgIG15ICRBcnRpY2xlT2JqZWN0ICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpOwogICAgbXkgJEludGVybmFsQXJ0aWNsZUJhY2tlbmRPYmplY3QgPSAkQXJ0aWNsZU9iamVjdC0+QmFja2VuZEZvckNoYW5uZWwoIENoYW5uZWxOYW1lID0+ICdJbnRlcm5hbCcgKTsKICAgIG15ICRBcnRpY2xlSUQgICAgICAgICAgICAgICAgICAgID0gJEludGVybmFsQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17U2VuZGVyVHlwZX0gfHwgJ3N5c3RlbScsCiAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMCwKICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCcsCiAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJE5vdGlmaWNhdGlvblRleHQsCiAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJFRpY2tldFRpdGxlLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ05ld1RpY2tldCcsCiAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gIlwlXCVDTURCTm90aWZpY2F0aW9uIiwKICAgICk7CgogICAgIyBjbG9zZSB0aWNrZXQgaWYgYXJ0aWNsZSBjcmVhdGUgZmFpbGVkIQogICAgaWYgKCAhJEFydGljbGVJRCApIHsKICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXREZWxldGUoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgcHJvY2VzcyB0aWNrZXQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxpbmsgdGlja2V0IGFuZCBjb25maWcgaXRlbQogICAgJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICAgICAgU291cmNlT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU291cmNlS2V5ICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXtDb25maWdJdGVtSUR9LAogICAgICAgIFRhcmdldE9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICBUYXJnZXRLZXkgICAgPT4gJFRpY2tldElELAogICAgICAgIFR5cGUgICAgICAgICA9PiAnRGVwZW5kc09uJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgIyBzZXQgdGhlIGR5bmFtaWMgZmllbGQgIHRvIDEsIHRvIG1hcmsgdGhlIHRpY2tldCBhcyBnZW5lcmF0ZWQgYnkgdGhpcyBzY3JpcHQKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkICAgICAgICAgICAgICA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBOYW1lID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17RHluYW1pY0ZpZWxkfSwKICAgICk7CiAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9YmFjawo=</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/DefinitionConfigItemUpdate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkRlZmluaXRpb25Db25maWdJdGVtVXBkYXRlOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyh1bmlxKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RGVmaW5pdGlvbkNvbmZpZ0l0ZW1VcGRhdGUgLSBFdmVudCBoYW5kbGVyIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgb24gZGVmaW5pdGlvbiBjaGFuZ2VzCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwoKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJEV2ZW50T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RGVmaW5pdGlvbkNvbmZpZ0l0ZW1VcGRhdGUnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7fSwgJFR5cGU7Cn0KCj1oZWFkMiBSdW4oKQoKVGhpcyBtZXRob2QgaGFuZGxlcyB0aGUgZXZlbnQuCgogICAgJEV2ZW50T2JqZWN0LT5SdW4oCiAgICAgICAgRXZlbnQgPT4gJ0RlZmluaXRpb25DcmVhdGUnLAogICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICAgICBMYXN0RGVmaW5pdGlvbklEID0+ICRMYXN0RGVmaW5pdGlvbklELAogICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KERhdGEgRXZlbnQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAkUGFyYW17RXZlbnR9IG5lICdEZWZpbml0aW9uQ3JlYXRlJzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KERlZmluaXRpb25JRCBDbGFzc0lEKSkgewogICAgICAgIGlmICggISRQYXJhbXtEYXRhfXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCBpbiBEYXRhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICREQk9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBvbmx5IGNvbnNpZGVyIHByb2R1Y3RpdmUgYW5kIHByZXByb2R1Y3RpdmUgQ0lzCiAgICBteSAkU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzICAgICAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSA9PiBbICdwcmVwcm9kdWN0aXZlJywgJ3Byb2R1Y3RpdmUnIF0sCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJERlcGxTdGF0ZVN0cmluZyA9IGpvaW4gcXssIH0sIGtleXMgJXskU3RhdGVMaXN0fTsKCiAgICAjIG9ubHkgY29uc2lkZXIgcHJvZHVjdGl2ZSBhbmQgcHJlcHJvZHVjdGl2ZSBDSXMKICAgIG15ICVBZmZlY3RlZENJcyA9ICREQk9iamVjdC0+U2VsZWN0TWFwcGluZygKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBjaS5pZCwgY2kubGFzdF92ZXJzaW9uX2lkIEZST00gY29uZmlnaXRlbSBjaScKICAgICAgICAgICAgLiAiIFdIRVJFIGNpLmNsYXNzX2lkID0gPyBBTkQgY2kuY3VyX2RlcGxfc3RhdGVfaWQgSU4gKCAkRGVwbFN0YXRlU3RyaW5nICkiLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0RhdGF9e0NsYXNzSUR9IF0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJUFmZmVjdGVkQ0lzOwoKICAgICMgYWRkIGhpc3RvcnkgZW50cmllcwogICAgZm9yIG15ICRJRCAoIGtleXMgJUFmZmVjdGVkQ0lzICkgewogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5QWRkKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJElELAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ0RlZmluaXRpb25VcGRhdGUnLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAiJFBhcmFte0RhdGF9e0RlZmluaXRpb25JRH0iLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJUNsYXNzUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0RhdGF9e0NsYXNzSUR9LAogICAgKTsKCiAgICAjIGlmIHdlIGFyZSBjaGFuZ2luZyByZWZlcmVuY2UgZHluYW1pYyBmaWVsZHMsIHdlIG5lZWQgdG8gc3luY2hyb25pc2UgdGhlIGxpbmsgdGFibGUgYWNjb3JkaW5nbHkKICAgICMgdGhpcyBpcyBkb25lIGJlZm9yZSBWZXJzaW9uQWRkLCB3aGljaCB3aWxsIGluZXZpdGFibHkgd3JpdGUgdGhlIGxpbmtzLCB0b28sIHdpdGggdGhlIG5ldyBDb25maWcgYWxyZWFkeQogICAgaWYgKCAkUGFyYW17RGF0YX17T2xkRGVmaW5pdGlvbn0gJiYgJFBhcmFte0RhdGF9e09sZERlZmluaXRpb259e0R5bmFtaWNGaWVsZFJlZn0gKSB7CiAgICAgICAgbXkgJE9sZER5bmFtaWNGaWVsZFJlZiA9ICRQYXJhbXtEYXRhfXtPbGREZWZpbml0aW9ufXtEeW5hbWljRmllbGRSZWZ9IC8vIHt9OwogICAgICAgIG15ICREZWZpbml0aW9uUmVmICAgICAgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRQYXJhbXtEYXRhfS0+e0NsYXNzSUR9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFBhcmFte0RhdGF9LT57RGVmaW5pdGlvbklEfSwKICAgICAgICApOwoKICAgICAgICBteSBARHluYW1pY0ZpZWxkTmFtZXMgPSB1bmlxKCBrZXlzICREZWZpbml0aW9uUmVmLT57RHluYW1pY0ZpZWxkUmVmfS0+JSosIGtleXMgJE9sZER5bmFtaWNGaWVsZFJlZi0+JSogKTsKICAgICAgICBteSAlQ29uZmlnSXRlbTsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoQER5bmFtaWNGaWVsZE5hbWVzKSB7CiAgICAgICAgICAgIG15ICROZXdERiA9ICREZWZpbml0aW9uUmVmLT57RHluYW1pY0ZpZWxkUmVmfXskRHluYW1pY0ZpZWxkTmFtZX07CiAgICAgICAgICAgIG15ICRPbGRERiA9ICRPbGREeW5hbWljRmllbGRSZWYtPnskRHluYW1pY0ZpZWxkTmFtZX07CiAgICAgICAgICAgIG15ICRERiAgICA9ICROZXdERiAvLyAkT2xkREY7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJERGLT57Q29uZmlnfXtSZWZlcmVuY2VkT2JqZWN0VHlwZX07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkREYtPntDb25maWd9e1JlZmVyZW5jZWRPYmplY3RUeXBlfSA9fiAnXklUU01Db25maWdJdGVtJzsKCiAgICAgICAgICAgIG15ICRTa2lwID0gMTsKICAgICAgICAgICAgaWYgKCAkTmV3REYgJiYgJE9sZERGICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRDb25maWcgKHF3L0xpbmtUeXBlIExpbmtSZWZlcmVuY2luZ1R5cGUgTGlua0RpcmVjdGlvbi8pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICggJE5ld0RGLT57Q29uZmlnfXskQ29uZmlnfSAvLyAnJyApIG5lICggJE9sZERGLT57Q29uZmlnfXskQ29uZmlnfSAvLyAnJyApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU2tpcCA9IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNraXAgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkU2tpcDsKCiAgICAgICAgICAgIElEUzoKICAgICAgICAgICAgZm9yIG15ICRJRCAoIGtleXMgJUFmZmVjdGVkQ0lzICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW17JElEfSAvLz0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkSUQsCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkQ29uZmlnSXRlbXskSUR9eyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZE5hbWUifTsKCiAgICAgICAgICAgICAgICBuZXh0IElEUyB1bmxlc3MgJFZhbHVlICYmICRWYWx1ZS0+WzBdOwoKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5TeW5jTGlua1RhYmxlKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgID0+ICROZXdERiwKICAgICAgICAgICAgICAgICAgICBPbGREeW5hbWljRmllbGRDb25maWcgICA9PiAkT2xkREYsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgPT4gJElELAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1WZXJzaW9uSUQgICAgID0+ICRDb25maWdJdGVteyRJRH17VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtTGFzdFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbXskSUR9e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGlmIGRlZmluaXRpb24gdXBkYXRlcyBzaG91bGQgdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbiwgY2FsbCBWZXJzaW9uQWRkCiAgICBpZiAoIGdyZXAgeyAkXyBlcSAnRGVmaW5pdGlvblVwZGF0ZScgfSBAeyAkQ2xhc3NQcmVmZXJlbmNlc3tWZXJzaW9uVHJpZ2dlcn0gLy8gW10gfSApIHsKICAgICAgICBmb3IgbXkgJElEICgga2V5cyAlQWZmZWN0ZWRDSXMgKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiB3ZSBkbyBub3QgbmVlZCB0byBhZGQgYSBuZXcgdmVyc2lvbiwgdXBkYXRlIGFsbCBhZmZlY3RlZCB2ZXJzaW9ucyBhbmQgY2xlYXIgdGhlIGNhY2hlCiAgICBlbHNlIHsKICAgICAgICAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gJ1VQREFURSBjb25maWdpdGVtX3ZlcnNpb24nCiAgICAgICAgICAgICAgICAuICcgU0VUIGRlZmluaXRpb25faWQgPSA/JwogICAgICAgICAgICAgICAgLiAnIFdIRVJFIGlkIElOICgnCiAgICAgICAgICAgICAgICAuICcgU0VMRUNUIGxhc3RfdmVyc2lvbl9pZCcKICAgICAgICAgICAgICAgIC4gJyBGUk9NIGNvbmZpZ2l0ZW0nCiAgICAgICAgICAgICAgICAuICcgV0hFUkUgY2xhc3NfaWQgPSA/JwogICAgICAgICAgICAgICAgLiAiIEFORCBjdXJfZGVwbF9zdGF0ZV9pZCBJTiAoICREZXBsU3RhdGVTdHJpbmcgKSIKICAgICAgICAgICAgICAgIC4gJyApJywKICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17RGF0YX17RGVmaW5pdGlvbklEfSwgXCRQYXJhbXtEYXRhfXtDbGFzc0lEfSBdLAogICAgICAgICk7CgogICAgICAgICMgY2xlYXIgdGhlIGNhY2hlCiAgICAgICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgICAgIGZvciBteSAkSUQgKCBrZXlzICVBZmZlY3RlZENJcyApIHsKICAgICAgICAgICAgZm9yIG15ICRERkRhdGEgKCAwLCAxICkgewogICAgICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAkQ29uZmlnSXRlbU9iamVjdC0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAkREZEYXRhLAogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAkQ29uZmlnSXRlbU9iamVjdC0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQWZmZWN0ZWRDSXN7JElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgREZEYXRhICAgID0+ICRERkRhdGEsCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/DoHistory.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkRvSGlzdG9yeTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RG9IaXN0b3J5IC0gRXZlbnQgaGFuZGxlciB0aGF0IHJlY29yZHMgdGhlIGhpc3RvcnkKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CgogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkRG9IaXN0b3J5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RG9IaXN0b3J5Jyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3Mge30sICRUeXBlOwp9Cgo9aGVhZDIgUnVuKCkKClRoaXMgbWV0aG9kIGhhbmRsZXMgdGhlIGV2ZW50LgoKICAgICREb0hpc3RvcnlPYmplY3QtPlJ1bigKICAgICAgICBFdmVudCA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJ25ldyB2YWx1ZTogMScsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhEYXRhIEV2ZW50IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGZvciBkeW5hbWljIGZpZWxkcyBmaXJzdCwgbW9zdCBldmVudHMgd2lsbCBiZSB0aGlzLAogICAgIyBSZWFkYWJsZVZhbHVlIGFuZCBSZWFkYWJsZU9sZFZhbHVlIGFyZSBleHBlY3RlZCB0byBiZSBzdHJpbmdzCiAgICBpZiAoICRQYXJhbXtFdmVudH0gPX4gbS9eQ29uZmlnSXRlbUR5bmFtaWNGaWVsZFVwZGF0ZV8vICkgewogICAgICAgIHJldHVybiAkU2VsZi0+X0hpc3RvcnlBZGQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17RGF0YX17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdWYWx1ZVVwZGF0ZScsCiAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAiJFBhcmFte0RhdGF9e0ZpZWxkTmFtZX0lJSRQYXJhbXtEYXRhfXtSZWFkYWJsZU9sZFZhbHVlfSUlJFBhcmFte0RhdGF9e1JlYWRhYmxlVmFsdWV9IiwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBkdWUgdG8gY29uc2lzdGVuY3kgd2l0aCB0aWNrZXQgaGlzdG9yeSwgd2UgbmVlZCBIaXN0b3J5VHlwZQogICAgJFBhcmFte0hpc3RvcnlUeXBlfSA9ICRQYXJhbXtFdmVudH07CgogICAgIyBkaXNwYXRjaCB0YWJsZSBmb3IgYWxsIGV2ZW50cwogICAgbXkgJURpc3BhdGNoZXIgPSAoCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSAgICAgID0+IFwmX0hpc3RvcnlBZGQsCiAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSAgICAgID0+IFwmX1JldHVybiwKICAgICAgICBDb25maWdJdGVtRGVsZXRlICAgICAgPT4gXCZfQ29uZmlnSXRlbURlbGV0ZSwKICAgICAgICBMaW5rQWRkICAgICAgICAgICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBMaW5rRGVsZXRlICAgICAgICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBOYW1lVXBkYXRlICAgICAgICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBJbmNpZGVudFN0YXRlVXBkYXRlICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBEZXBsb3ltZW50U3RhdGVVcGRhdGUgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBEZWZpbml0aW9uVXBkYXRlICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBWZXJzaW9uQ3JlYXRlICAgICAgICAgPT4gXCZfSGlzdG9yeUFkZCwKICAgICAgICBWZXJzaW9uVXBkYXRlICAgICAgICAgPT4gXCZfUmV0dXJuLAogICAgICAgIERlZmluaXRpb25DcmVhdGUgICAgICA9PiBcJl9SZXR1cm4sCiAgICAgICAgVmVyc2lvbkRlbGV0ZSAgICAgICAgID0+IFwmX0hpc3RvcnlBZGQsCiAgICAgICAgQXR0YWNobWVudEFkZFBvc3QgICAgID0+IFwmX0hpc3RvcnlBZGQsCiAgICAgICAgQXR0YWNobWVudERlbGV0ZVBvc3QgID0+IFwmX0hpc3RvcnlBZGQsCiAgICApOwoKICAgICMgZXJyb3IgaGFuZGxpbmcKICAgIGlmICggIWV4aXN0cyAkRGlzcGF0Y2hlcnsgJFBhcmFte0V2ZW50fSB9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnbm9uIGV4aXN0ZW50IGhpc3RvcnkgdHlwZTogJyAuICRQYXJhbXtFdmVudH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2FsbCBjYWxsYmFjawogICAgbXkgJFN1YiA9ICREaXNwYXRjaGVyeyAkUGFyYW17RXZlbnR9IH07CiAgICAkU2VsZi0+JFN1YigKICAgICAgICAlUGFyYW0sCiAgICAgICAgJXsgJFBhcmFte0RhdGF9IH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDEgSU5URVJOQUwgSU5URVJGQUNFCgo9aGVhZDIgX1JldHVybigpCgpkbyBub3RoaW5nCgo9Y3V0CgpzdWIgX1JldHVybiB7IHJldHVybiAxIH0KCj1oZWFkMiBfQ29uZmlnSXRlbURlbGV0ZSgpCgpoaXN0b3J5J3MgZXZlbnQgaGFuZGxlciBmb3IgQ29uZmlnSXRlbURlbGV0ZQoKPWN1dAoKc3ViIF9Db25maWdJdGVtRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWxldGUgaGlzdG9yeQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkhpc3RvcnlEZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9IaXN0b3J5QWRkKCkKCmhpc3RvcnkncyBkZWZhdWx0IGV2ZW50IGhhbmRsZXIuCgo9Y3V0CgpzdWIgX0hpc3RvcnlBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFkZCBoaXN0b3J5IGVudHJ5CiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkhpc3RvcnlBZGQoCiAgICAgICAgJVBhcmFtLAogICAgKTsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/RebuildACLPreselectionCache.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OlJlYnVpbGRBQ0xQcmVzZWxlY3Rpb25DYWNoZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RmllbGRSZXN0cmljdGlvbnMnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkZpZWxkUmVzdHJpY3Rpb25zJyk7CiAgICAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QtPlNldEFDTFByZXNlbGVjdGlvbkNhY2hlKCk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/EvaluateScriptFields.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkV2YWx1YXRlU2NyaXB0RmllbGRzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkNhY2hlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6OkJhc2VTY3JpcHQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhEYXRhIEV2ZW50KSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH07CgogICAgbXkgJEV2ZW50cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6QmFzZVNjcmlwdCcpLT5HZXRVcGRhdGVFdmVudHMoKTsKCiAgICByZXR1cm4gMSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEV2ZW50cyk7CiAgICByZXR1cm4gMSBpZiAhJEV2ZW50cy0+eyAkUGFyYW17RXZlbnR9IH07CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0RhdGF9e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICBmb3IgbXkgJEZpZWxkSUQgKCAkRXZlbnRzLT57ICRQYXJhbXtFdmVudH0gfS0+QCogKSB7CgogICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIElEID0+ICRGaWVsZElELAogICAgICAgICk7CgogICAgICAgICMgaWYgd2Ugc3RvcmUgc2V0IHZhbHVlcywgc3RvcmUgYXMgbWFueSB2YWx1ZXMgYXMgdGhlcmUgYXJlIGluIHRpY2tldCBkYXRhIGZvciB0aGUgc2V0CiAgICAgICAgbXkgJFZhbHVlOwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317UGFydE9mU2V0fSApIHsKICAgICAgICAgICAgbXkgQFZhbHVlczsKICAgICAgICAgICAgbXkgJFNldENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIElEID0+ICREeW5hbWljRmllbGQtPntDb25maWd9e1BhcnRPZlNldH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBmb3IgbXkgJFNldFZhbHVlICggJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRTZXRDb25maWctPntOYW1lfSJ9LT5AKiApIHsKICAgICAgICAgICAgICAgIG15ICVTZXRWYWx1ZXNNYXBwZWQgPSBtYXAgeyAoICJEeW5hbWljRmllbGRfJF8iID0+ICRTZXRWYWx1ZS0+eyRffSApIH0ga2V5cyAkU2V0VmFsdWUtPiUqOwogICAgICAgICAgICAgICAgcHVzaCBAVmFsdWVzLCAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+RXZhbHVhdGUoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0ICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICAgICAgICAgICAgICAlU2V0VmFsdWVzTWFwcGVkLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRWYWx1ZSA9IFxAVmFsdWVzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkV2YWx1YXRlKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICBPYmplY3QgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICBTZXQgICAgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317UGFydE9mU2V0fSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFN0b3JlICAgICAgICAgICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/FieldRestrictions.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RmllbGRSZXN0cmljdGlvbnM7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlVzZXInLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RmllbGRSZXN0cmljdGlvbnMgLSBmdW5jdGlvbnMgdG8gcmVzdHJpY3QgRHluYW1pY0ZpZWxkIGNvbnRlbnQgYW5kIGZpZWxkIHZpc2liaWxpdHkgZm9yIHZhcmlvdXMgZm9ybXMKCj1oZWFkMSBTWU5PUFNJUwoKQ3JlYXRlIEZpZWxkUmVzdHJpY3Rpb25zIG9iamVjdAogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkZpZWxkUmVzdHJpY3Rpb25zJyk7Cgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpEb24ndCB1c2UgdGhlIGNvbnN0cnVjdG9yIGRpcmVjdGx5LCB1c2UgdGhlIE9iamVjdE1hbmFnZXIgaW5zdGVhZDoKCiAgICBteSAkRmllbGRSZXN0cmljdGlvbnNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkZpZWxkUmVzdHJpY3Rpb25zJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAkU2VsZi0+e0NhY2hlT2JqZWN0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIEdldEZpZWxkU3RhdGVzKCkKClJldHVybnMgcG9zc2libGUgdmFsdWVzLCBzZWxlY3RlZCB2YWx1ZXMsIGFuZCB2aXNpYmlsaXR5IG9mIGZpZWxkcwoKICAgIG15ICRMb29wUHJvdGVjdGlvbiA9IDEwMDsKCiAgICBteSAlU3RhdGVzID0gJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5HZXRGaWVsZFN0YXRlcygKICAgICAgICBDb25maWdJdGVtT2JqZWN0ICAgICAgICAgID0+ICRDb25maWdJdGVtT2JqZWN0LAogICAgICAgIER5bmFtaWNGaWVsZHMgICAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZ3MsCiAgICAgICAgRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9PiAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCwKICAgICAgICBDaGFuZ2VkRWxlbWVudHMgICAgICAgICAgID0+IHt9LAogICAgICAgIEN1c3RvbWVyVXNlciAgICAgICAgICAgICAgPT4gJEN1c3RvbWVyVXNlciwKICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgICAgID0+ICRBY3Rpb24sCiAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBGb3JtSUQgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICBHZXRQYXJhbSAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgIH0sCiAgICAgICAgTG9vcFByb3RlY3Rpb24gICAgICAgICAgICA9PiBcJExvb3BQcm90ZWN0aW9uLCAgICAgICAgICAgICAgIyByZXN0cmljdHMgbnVtYmVyIG9mIHJlY3Vyc2l2ZSBjYWxsczsgcGFzc2luZyBhIHJlZmVyZW5jZSB0byAndW5kZWYnIHdpbGwgbGVhZCB0byBhIHdhcm5pbmcKICAgICAgICBBdXRvc2VsZWN0ICAgICAgICAgICAgICAgID0+IHt9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsOyBkZWZhdWx0OiB1bmRlZjsge0ZpZWxkID0+IDAsMSwyLCAuLi59CiAgICAgICAgQUNMUHJlc2VsZWN0aW9uICAgICAgICAgICA9PiAwfDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIFBvc3NpYmxlVmFsdWVzT25seSAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWw7IGFzc3VtZSBhbGwgZmllbGRzIGFyZSB2aXNpYmxlIGUuZy4gZm9yIHNldHMKICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICVTdGF0ZXMgPSAoCiAgICAgICAgRmllbGRzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICBJbmRleCAgICAgICAgICAgPT4gPEluZGV4IHdpdGhpbiBAeyAkRHluYW1pY0ZpZWxkQ29uZmlncyB9PgogICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgID0+ICRQb3NzaWJsZVZhbHVlcywKICAgICAgICAgICAgfQogICAgICAgICAgICAuLi4KICAgICAgICBdLAogICAgICAgIFZpc2liaWxpdHkgPT4gewogICAgICAgICAgICBGaWVsZDEgID0+IDEsCiAgICAgICAgICAgIEZpZWxkMiAgPT4gMCwKICAgICAgICB9LAogICAgICAgIE5ld1ZhbHVlcyA9PiB7CiAgICAgICAgICAgIC4uLgogICAgICAgIH0sCiAgICApOwoKPWN1dAoKc3ViIEdldEZpZWxkU3RhdGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQKICAgIGZvciAocXcoQWN0aW9uIEdldFBhcmFtKSkgewogICAgICAgIGlmICggISRQYXJhbXskX30gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRfISIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjbGVhbiBjb25maWcgaXRlbSBpZCBpZiBpdCBpcyAnTkVXJwogICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUlEfSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSBlcSAnTkVXJyApIHsKICAgICAgICBkZWxldGUgJFBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICB9CgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gJiYgISRQYXJhbXtDdXN0b21lclVzZXJ9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBVc2VySUQgb3IgQ3VzdG9tZXJVc2VySUQhIgogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGRlY3JlbWVudCBvbiB1bmRlZiByZXN1bHQgaW4gJy0xJywgc28gaWYgTG9vcFByb3RlY3Rpb24gaXMgdW5kZWYsIGZ1bmN0aW9uIGFib3J0cyBoZXJlCiAgICBpZiAoICR7ICRQYXJhbXtMb29wUHJvdGVjdGlvbn0gfS0tIDwgMSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlJhbiBpbnRvIHVucmVzb2x2YWJsZSBsb29wISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IHRoZSBjdXJyZW50IHZpc2liaWxpdHkKICAgIG15ICRDYWNoZWRWaXNpYmlsaXR5ID0gJFBhcmFte0FDTFByZXNlbGVjdGlvbn0KICAgICAgICA/ICRTZWxmLT57Q2FjaGVPYmplY3R9LT5HZXQoCiAgICAgICAgICAgIFR5cGUgPT4gJ0hpZGRlbkZpZWxkcycsCiAgICAgICAgICAgIEtleSAgPT4gJFBhcmFte0Zvcm1JRH0sCiAgICAgICAgKQogICAgICAgIDogdW5kZWY7CgogICAgIyBkb24ndCBza2lwIGFueSBmaWVsZHMgaW5pdGlhbGx5IG9yIGlmIEFDTFByZXNlbGN0aW9uIGlzIGRpc2FibGVkCiAgICBteSAkQ29tcGxldGVSdW4gPSAkQ2FjaGVkVmlzaWJpbGl0eSA/IDAgOiAxOwoKICAgICMgc2hvcnRjdXQKICAgIG15ICRERlBhcmFtID0gJFBhcmFte0dldFBhcmFtfXtEeW5hbWljRmllbGR9OwoKICAgICMgVE9ETzogbmVlZGVkLCBiZWNhdXNlIENvbmZpZ0l0ZW1BY2wgdGFtcGVycyB3aXRoIHRoZSBEeW5hbWljRmllbGQgcmVmZXJlbmNlLCBpZiBDb25maWdJdGVtSUQgaXMgZ2l2ZW4KICAgIGZvciBteSAkTmFtZSAoIGtleXMgJFBhcmFte0R5bmFtaWNGaWVsZHN9LT4lKiApIHsKICAgICAgICAkUGFyYW17R2V0UGFyYW19e0R5bmFtaWNGaWVsZH17ICdEeW5hbWljRmllbGRfJyAuICROYW1lIH0gLy89ICRQYXJhbXtHZXRQYXJhbX17RHluYW1pY0ZpZWxkfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUgfTsgICAgIyBhbGwga2V5cyBoYXZlIHRvIGV4aXN0CiAgICB9CgogICAgIyB0cmFuc2Zvcm0gZHluYW1pYyBmaWVsZCBkYXRhIGludG8gREZOYW1lID0+IERGTmFtZSBwYWlyCiAgICBteSAlRHluYW1pY0ZpZWxkQWNsID0gbWFwIHsgJF8gPT4gJF8gfSBrZXlzICRQYXJhbXtEeW5hbWljRmllbGRzfS0+JSo7CgogICAgbXkgJVVzZXJQcmVmZXJlbmNlczsKICAgIG15ICVWaXNpYmlsaXR5OwogICAgbXkgJFZpc0NoZWNrID0gMTsKCiAgICAjIGluIHRoZSBzcGVjaWFsIGNhc2Ugb2YgYXNzdW1pbmcgdmlzaWJsZSBmaWVsZHMgd2Ugc3RpbGwgd2FudCB0byBrbm93IHdoZXRoZXIgd2UgZG8gYSAkQ29tcGxldGVSdW4KICAgICMgYnV0IHdlIGRpc2NhcmQgYWxsIHZpc2liaWxpdHkgY2hlY2tzCiAgICBpZiAoICRQYXJhbXtQb3NzaWJsZVZhbHVlc09ubHl9ICkgewogICAgICAgICRWaXNDaGVjayA9IDA7CgogICAgICAgICMgdHJlYXQgYWxsIGZpZWxkcyBhcyBhbHdheXMgdmlzaWJsZQogICAgICAgICRDYWNoZWRWaXNpYmlsaXR5ID0gewogICAgICAgICAgICBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXyA9PiAxIH0ga2V5cyAkUGFyYW17RHluYW1pY0ZpZWxkc30tPiUqCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGluIHRoZSBzdGFuZGFyZCBjYXNlIGFuZCBpZiB3ZSB1c2UgQUNMLVByZXNlbGVjdGlvbiBvbmx5IHZpcyBjaGVjayBpZiBuZWNlc3NhcnkKICAgIGVsc2lmICggISRDb21wbGV0ZVJ1biApIHsKICAgICAgICAkVmlzQ2hlY2sgPSAwOwoKICAgICAgICAjIGNoZWNrIHdoZXRoZXIgZm9ybS1BQ0xzIGFyZSBhZmZlY3RlZCBieSBhbnkgb2YgdGhlIGNoYW5nZWQgZWxlbWVudHMKICAgICAgICBFTEVNRU5UOgogICAgICAgIGZvciBteSAkRWxlbWVudCAoIHNvcnQga2V5cyAleyAkUGFyYW17Q2hhbmdlZEVsZW1lbnRzfSB9ICkgewoKICAgICAgICAgICAgIyBhdXRvdml2aWZpY2F0aW9uIGNvdWxkIGJlIGF2b2lkZWQKICAgICAgICAgICAgaWYgKCAkUGFyYW17QUNMUHJlc2VsZWN0aW9ufXtSdWxlc317Rm9ybX17JEVsZW1lbnR9ICkgewogICAgICAgICAgICAgICAgJFZpc0NoZWNrID0gMTsKICAgICAgICAgICAgICAgIGxhc3QgRUxFTUVOVDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICEkUGFyYW17QUNMUHJlc2VsZWN0aW9ufXtGaWVsZHN9eyRFbGVtZW50fSApIHsKICAgICAgICAgICAgICAgICRWaXNDaGVjayA9IDE7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkRWxlbWVudCBub3QgZGVmaW5lZCBpbiBDb25maWdJdGVtQUNMIHByZXNlbGVjdGlvbiBydWxlcyEiCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbGFzdCBFTEVNRU5UOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkVmlzQ2hlY2spIHsKCiAgICAgICAgIyBjYWxsIGNvbmZpZyBpdGVtIEFDTHMgZm9yIER5bmFtaWNGaWVsZHMgdG8gY2hlY2sgZmllbGQgdmlzaWJpbGl0eQogICAgICAgIG15ICRBQ0xSZXN1bHQgPSAkUGFyYW17Q29uZmlnSXRlbU9iamVjdH0tPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICV7ICRQYXJhbXtHZXRQYXJhbX0gfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkUGFyYW17QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnRm9ybScsCiAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJy0nLAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlRHluYW1pY0ZpZWxkQWNsLAogICAgICAgICk7CgogICAgICAgIGlmICgkQUNMUmVzdWx0KSB7CiAgICAgICAgICAgICVWaXNpYmlsaXR5ID0gbWFwIHsgJ0R5bmFtaWNGaWVsZF8nIC4gJF8gPT4gMCB9IGtleXMgJFBhcmFte0R5bmFtaWNGaWVsZHN9LT4lKjsKICAgICAgICAgICAgbXkgJUFjbERhdGEgPSAkUGFyYW17Q29uZmlnSXRlbU9iamVjdH0tPkNvbmZpZ0l0ZW1BY2xEYXRhKCk7CiAgICAgICAgICAgIGZvciBteSAkRmllbGQgKCBzb3J0IGtleXMgJUFjbERhdGEgKSB7CiAgICAgICAgICAgICAgICAkVmlzaWJpbGl0eXsgJ0R5bmFtaWNGaWVsZF8nIC4gJEZpZWxkIH0gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAlVmlzaWJpbGl0eSA9IG1hcCB7ICdEeW5hbWljRmllbGRfJyAuICRfID0+IDEgfSBrZXlzICRQYXJhbXtEeW5hbWljRmllbGRzfS0+JSo7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB1c2VyIHByZWZlcmVuY2VzIGZvciBwb3NzaWJsZSB1c2VyIGRlZmF1bHQgdmFsdWVzCiAgICAgICAgaWYgKCAkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAgICAgJVVzZXJQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICgkQ2FjaGVkVmlzaWJpbGl0eSkgewogICAgICAgICVWaXNpYmlsaXR5ID0gJXskQ2FjaGVkVmlzaWJpbGl0eX07CiAgICB9CgogICAgbXkgKCAlRmllbGRzLCAlTmV3VmFsdWVzLCAlU2V0cyApOwogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCB2YWx1ZXMgJFBhcmFte0R5bmFtaWNGaWVsZHN9LT4lKiApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICBteSAkREZOYW1lICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJFBhcmFte0R5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3R9LT5IYXNCZWhhdmlvcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnLAogICAgICAgICk7CgogICAgICAgICMgMS4gaGFuZGxlIGhpZGRlbiBmaWVsZHMKICAgICAgICBpZiAoICVWaXNpYmlsaXR5ICYmICRWaXNpYmlsaXR5eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID09IDAgKSB7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAoICRDYWNoZWRWaXNpYmlsaXR5ICYmICRDYWNoZWRWaXNpYmlsaXR5LT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPT0gMCApOwoKICAgICAgICAgICAgIyB2YWx1ZXMgb2YgdmlzaWJsZSBmaWVsZHMgdHVybmluZyBpbnZpc2libGUgYXJlIGRlbGV0ZWQgb3Igc2V0IHRvIHZhbHVlcyBvZiBjb25maWcgaXRlbSBkYXRhIGlmIHByZXNlbnQKICAgICAgICAgICAgbXkgJFVwZGF0ZVJlcXVpcmVkID0gIWRlZmluZWQgJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSA/IDAgOgogICAgICAgICAgICAgICAgcmVmKCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkKICAgICAgICAgICAgICAgID8KICAgICAgICAgICAgICAgICggSXNBcnJheVJlZldpdGhEYXRhKCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgPyAxIDogMCApCiAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID1+IG0vXi0/JC8gPyAwIDogMTsKCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtRGF0YTsKICAgICAgICAgICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkQ29uZmlnSXRlbURhdGEtPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSApIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJFZhbHVlSXNEaWZmZXJlbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlSXNEaWZmZXJlbnQoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZTEgICAgICAgICAgICAgPT4gJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUyICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGF0YS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkVmFsdWVJc0RpZmZlcmVudCkgewogICAgICAgICAgICAgICAgICAgICAgICAkVXBkYXRlUmVxdWlyZWQgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFVwZGF0ZVJlcXVpcmVkID0gMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgdmFsdWVzIGFyZSBwcmVzZW50LCBGaWVsZHJlc3RyaWN0aW9ucyBoYXZlIHRvIGJlIGNoZWNrZWQgYWdhaW4gZm9yIHRoZSBuZXdseSBjaGFuZ2VkIGVsZW1lbnRzCiAgICAgICAgICAgIGlmICgkVXBkYXRlUmVxdWlyZWQpIHsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSBlbnRyeSBhbmQgcmVtZW1iZXIgY2hhbmdlCiAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gcmVmKCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgPyBbXSA6ICcnOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgd2UgaGF2ZSBhIGNvbmZpZyBpdGVtIGRhdGEgdmFsdWUgYW5kIHVzZSB0aGVtLCBpZiBzbwogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRDb25maWdJdGVtRGF0YS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkQ29uZmlnSXRlbURhdGEtPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGZpZWxkcyBoYXZlIHRvIGJlIGFkZGVkIHRvIGNvcnJlY3RseSByZW1vdmUgYWxsIGNvbnRlbnQKICAgICAgICAgICAgICAgIGlmICggISRJc0FDTFJlZHVjaWJsZSApIHsKICAgICAgICAgICAgICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiB7fSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CgogICAgICAgICMgMi4gaGFuZGxlIGZpZWxkcyB3aGljaCBzZXQgdGhlaXIgZHluYW1pYyBjb250ZW50IHRoZW1zZWx2ZXMKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJhbXtEeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0fS0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnU2V0c0R5bmFtaWNDb250ZW50JywKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAlQ29udGVudCA9ICRQYXJhbXtEeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0fS0+R2V0RmllbGRTdGF0ZSgKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIENhY2hlZFZpc2liaWxpdHkgICAgICAgID0+ICRDYWNoZWRWaXNpYmlsaXR5LAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0ID0+ICRTZWxmLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjaGVjayBpZiBhdXRvc2VsZWN0aW9uIGlzIGFjdGl2YXRlZCBhbmQgZmllbGQgY2hhbmdlZCBpbiBhbnkgd2F5CiAgICAgICAgICAgIGlmICggJENvbnRlbnR7UG9zc2libGVWYWx1ZXN9ICYmICRQYXJhbXtBdXRvc2VsZWN0fSAmJiAkUGFyYW17QXV0b3NlbGVjdH17RHluYW1pY0ZpZWxkfXskREZOYW1lfSApIHsKCiAgICAgICAgICAgICAgICBteSAkU2VsZWN0ZWQgPSBleGlzdHMgJENvbnRlbnR7TmV3VmFsdWV9ID8gJENvbnRlbnR7TmV3VmFsdWV9IDogJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKCiAgICAgICAgICAgICAgICBteSAkQXV0b3NlbGVjdGVkID0gJFNlbGYtPkF1dG9zZWxlY3QoCiAgICAgICAgICAgICAgICAgICAgQ3VycmVudCAgICAgICAgPT4gJFNlbGVjdGVkLAogICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzID0+ICRDb250ZW50e1Bvc3NpYmxlVmFsdWVzfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRBdXRvc2VsZWN0ZWQgKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbnRlbnR7TmV3VmFsdWV9ID0gJEF1dG9zZWxlY3RlZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgbmV3IHZhbHVlIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICBpZiAoIGV4aXN0cyAkQ29udGVudHtOZXdWYWx1ZX0gKSB7CiAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJENvbnRlbnR7TmV3VmFsdWV9OwogICAgICAgICAgICAgICAgJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9ICRDb250ZW50e05ld1ZhbHVlfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCBleGlzdHMgJENvbnRlbnR7UG9zc2libGVWYWx1ZXN9ICkgewogICAgICAgICAgICAgICAgJEZpZWxkc3skREZOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiAkQ29udGVudHtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggZXhpc3RzICRDb250ZW50e1NldH0gKSB7CiAgICAgICAgICAgICAgICAlU2V0cyA9ICgKICAgICAgICAgICAgICAgICAgICAlU2V0cywKICAgICAgICAgICAgICAgICAgICAkQ29udGVudHtTZXR9LT4lKiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCBleGlzdHMgJENvbnRlbnR7TmV3VmFsdWV9ICkgewogICAgICAgICAgICAgICAgJEZpZWxkc3skREZOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgTm90QUNMUmVkdWNpYmxlID0+IDEsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICB9CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRDb25maWctPntSZWFkb25seX07CgogICAgICAgICMgMy4gc2tpcCBub24gQUNMIHJlZHVjaWJsZSBmaWVsZHMuLi4KICAgICAgICBpZiAoICEkSXNBQ0xSZWR1Y2libGUgKSB7CgogICAgICAgICAgICAjIC4uLmJ1dCBzZXQgYWN0dWFsIG9yIGRlZmF1bHQgdmFsdWVzIG9mIHJlYXBwZWFyaW5nIGZpZWxkcyBmaXJzdAogICAgICAgICAgICBpZiAoICRDYWNoZWRWaXNpYmlsaXR5ICYmICRDYWNoZWRWaXNpYmlsaXR5LT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPT0gMCApIHsKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkQ29uZmlnSXRlbURhdGEtPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE5ld1ZhbHVlc3siRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9ICRDb25maWdJdGVtRGF0YS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9OwogICAgICAgICAgICAgICAgICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90QUNMUmVkdWNpYmxlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRVc2VyUHJlZmVyZW5jZXN7IlVzZXJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkVXNlclByZWZlcmVuY2VzeyJVc2VyRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKICAgICAgICAgICAgICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoIGRlZmluZWQgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfSApIHsKICAgICAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfTsKICAgICAgICAgICAgICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KCiAgICAgICAgbXkgJENoZWNrQUNMcyA9IDE7CgogICAgICAgICMgNC4gaGFuZGxlIGFsbCBzdGFuZGFyZCBBQ0wgcmVkdWNpYmxlIGZpZWxkcwogICAgICAgICMgZXZhbHVhdGUgcHJlc2VsZWN0aW9uCiAgICAgICAgaWYgKCAhJENvbXBsZXRlUnVuICkgewogICAgICAgICAgICBpZiAoICEkUGFyYW17QUNMUHJlc2VsZWN0aW9ufXtGaWVsZHN9eyAnRHluYW1pY0ZpZWxkXycgLiAkREZOYW1lIH0gKSB7CgogICAgICAgICAgICAgICAgIyBubyB3YXkgdG8gdGVsbCBpZiB0aGVyZSBhcmUgYWNscyB3aGljaCBjb25uZWN0IHRoZSBjaGFuZ2VkIGVsZW1lbnQgdG8gdGhlIGFmZmVjdGVkIGZpZWxkCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEeW5hbWljRmllbGRfJERGTmFtZSBub3QgZGVmaW5lZCBpbiBDb25maWdJdGVtQUNMIHByZXNlbGVjdGlvbiBydWxlcyEiCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJENoZWNrQUNMcyA9IDA7CgogICAgICAgICAgICAgICAgIyBjaGVjayBhY2xzIGlmLi4uCiAgICAgICAgICAgICAgICAjIC4uLmEgZmllbGQgcmVhcHBlYXJzOiBwb3NzaWJsZSB2YWx1ZXMgaGF2ZSB0byBiZSByZWNhbGN1bGF0ZWQ7CiAgICAgICAgICAgICAgICBpZiAoICRDYWNoZWRWaXNpYmlsaXR5LT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAkQ2hlY2tBQ0xzID0gMTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhOwogICAgICAgICAgICAgICAgICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIHRha2UgdGhlIGNvbmZpZyBpdGVtIG9yIGRlZmF1bHQgdmFsdWUgYW5kIHB1dCBpdCBhbHNvIGludG8gTmV3VmFsdWVzCiAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGUgdW5saWtlbHkgY2FzZSB0aGF0IHRoZXkgd2lsbCBiZSBkZWxldGVkIGFnYWluLCB0aGlzIHdpbGwganVzdCBjYXVzZSBhIHJlZHVuZGFudCBzZWNvbmQgcnVuCiAgICAgICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRDb25maWdJdGVtRGF0YS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJENvbmZpZ0l0ZW1EYXRhLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn07CiAgICAgICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkQ29uZmlnSXRlbURhdGEtPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRVc2VyUHJlZmVyZW5jZXN7IlVzZXJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJFVzZXJQcmVmZXJlbmNlc3siVXNlckR5bmFtaWNGaWVsZF8kREZOYW1lIn07CiAgICAgICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkVXNlclByZWZlcmVuY2VzeyJVc2VyRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0RlZmF1bHRWYWx1ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtEZWZhdWx0VmFsdWV9OwogICAgICAgICAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyAuLi5hdXRvc2VsZWN0IGlzIHR1cm5lZCBvbiBmb3IgdGhlIGNoYW5nZWQgZmllbGQgKHJlZmlsbCBhIGZpZWxkIGVtcHRpZWQgYnkgaGFuZCkKICAgICAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICAgICAkUGFyYW17QXV0b3NlbGVjdH0KICAgICAgICAgICAgICAgICAgICAmJiAkUGFyYW17QXV0b3NlbGVjdH17RHluYW1pY0ZpZWxkfXskREZOYW1lfQogICAgICAgICAgICAgICAgICAgICYmICRQYXJhbXtDaGFuZ2VkRWxlbWVudHN9eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRDaGVja0FDTHMgPSAxOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIEVMRU1FTlQ6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRFbGVtZW50ICggc29ydCBrZXlzICV7ICRQYXJhbXtDaGFuZ2VkRWxlbWVudHN9IH0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIC4uLnRoZSBjaGFuZ2VkIGVsZW1lbnQgYWZmZWN0cyB0aGUgY3VycmVudCBmaWVsZAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17QUNMUHJlc2VsZWN0aW9ufXtSdWxlc317Q29uZmlnSXRlbX17JEVsZW1lbnR9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICdEeW5hbWljRmllbGRfJyAuICRERk5hbWUgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ2hlY2tBQ0xzID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgRUxFTUVOVDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyAuLi50aGUgZWxlbWVudCBpcyBub3QgZGVmaW5lZCBpbiB0aGUgY2FjaGUgYW5kIHRodXMgdGhlcmUgaXMgbm8gd2F5IHRvIHRlbGwgaWYgdGhlcmUgYXJlIGFjbHMgd2hpY2ggY29ubmVjdCBpdCB0byB0aGUgYWZmZWN0ZWQgZmllbGQKICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAhJFBhcmFte0FDTFByZXNlbGVjdGlvbn17RmllbGRzfXskRWxlbWVudH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ2hlY2tBQ0xzID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIiRFbGVtZW50IG5vdCBkZWZpbmVkIGluIENvbmZpZ0l0ZW1BQ0wgcHJlc2VsZWN0aW9uIHJ1bGVzISIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IEVMRU1FTlQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaWYgbm90aGluZyBjaGFuZ2VkLCBvbWl0IHRoaXMgZmllbGQKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJENoZWNrQUNMczsKCiAgICAgICAgIyBlbHNlIGNoZWNrIEFDTHMKICAgICAgICBteSAkUG9zc2libGVWYWx1ZXMgPSAkUGFyYW17RHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdH0tPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICApOwoKICAgICAgICAjIGNvbnZlcnQgcG9zc2libGUgdmFsdWVzIGtleSA9PiB2YWx1ZSB0byBrZXkgPT4ga2V5IGZvciBBQ0xzIHVzaW5nIGEgSGFzaCBzbGljZQogICAgICAgIG15ICVBY2xEYXRhID0gJXskUG9zc2libGVWYWx1ZXN9OwogICAgICAgIEBBY2xEYXRheyBrZXlzICVBY2xEYXRhIH0gPSBrZXlzICVBY2xEYXRhOwoKICAgICAgICAjIHNldCBwb3NzaWJsZSB2YWx1ZXMgZmlsdGVyIGZyb20gQUNMcwogICAgICAgIG15ICRBQ0wgPSAkUGFyYW17Q29uZmlnSXRlbU9iamVjdH0tPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICV7ICRQYXJhbXtHZXRQYXJhbX0gfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkUGFyYW17QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnQ29uZmlnSXRlbScsCiAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJERGTmFtZSwKICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUFjbERhdGEsCiAgICAgICAgKTsKICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICBteSAlRmlsdGVyID0gJFBhcmFte0NvbmZpZ0l0ZW1PYmplY3R9LT5Db25maWdJdGVtQWNsRGF0YSgpOwoKICAgICAgICAgICAgIyBjb252ZXJ0IEZpbHRlciBrZXkgPT4ga2V5IGJhY2sgdG8ga2V5ID0+IHZhbHVlIHVzaW5nIG1hcAogICAgICAgICAgICAleyRQb3NzaWJsZVZhbHVlc30gPSBtYXAgeyAkXyA9PiAkUG9zc2libGVWYWx1ZXMtPnskX30gfSBrZXlzICVGaWx0ZXI7CiAgICAgICAgfQoKICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiAkUG9zc2libGVWYWx1ZXMsCiAgICAgICAgfTsKCiAgICAgICAgIyBjaGVjayB3aGV0aGVyIGFsbCBzZWxlY3RlZCBlbnRyaWVzIGFyZSBzdGlsbCB2YWxpZAogICAgICAgIGlmICgKICAgICAgICAgICAgZGVmaW5lZCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9CiAgICAgICAgICAgICYmCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0KICAgICAgICAgICAgICAgIHx8ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gZXEgJzAnCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgbXVsdGlzZWxlY3QgYW5kIC12YWx1ZSBmaWVsZHMKICAgICAgICAgICAgaWYgKCByZWYoICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gKSApIHsKICAgICAgICAgICAgICAgIFNFTEVDVEVEOgogICAgICAgICAgICAgICAgZm9yIG15ICRTZWxlY3RlZCAoIEB7ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gfSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBza2lwIGVtcHR5IHZhbHVlcyAocG9zc2libGUgb25seSBmb3IgbXVsdGl2YWx1ZSkKICAgICAgICAgICAgICAgICAgICBuZXh0IFNFTEVDVEVEIGlmICFkZWZpbmVkICRTZWxlY3RlZDsKCiAgICAgICAgICAgICAgICAgICAgIyBpZiBhIHNlbGVjdGVkIHZhbHVlIGlzIG5vdCBwb3NzaWJsZSBhbnltb3JlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkUG9zc2libGVWYWx1ZXMtPnskU2VsZWN0ZWR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e011bHRpVmFsdWV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE5ld1ZhbHVlc3siRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAgeyBkZWZpbmVkICRfICYmICFkZWZpbmVkICRQb3NzaWJsZVZhbHVlcy0+eyRffSA/IHVuZGVmIDogJF8gfSAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9LT5AKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlcCB7IGRlZmluZWQgJFBvc3NpYmxlVmFsdWVzLT57JFNlbGVjdGVkfSB9ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0tPkAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBsYXN0IFNFTEVDVEVEOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzaW5nbGVzZWxlY3QgZmllbGRzCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkUG9zc2libGVWYWx1ZXMtPnsgJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSB9ICkgewogICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhdXRvc2VsZWN0IGlmIGFwcGxpY2FibGUKICAgICAgICBpZiAoICRQYXJhbXtBdXRvc2VsZWN0fSAmJiAkUGFyYW17QXV0b3NlbGVjdH17RHluYW1pY0ZpZWxkfXskREZOYW1lfSApIHsKCiAgICAgICAgICAgIG15ICRTZWxlY3RlZCA9ICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0KICAgICAgICAgICAgICAgIC8vICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gLy8gJyc7CgogICAgICAgICAgICBteSAkQXV0b3NlbGVjdGVkID0gJFNlbGYtPkF1dG9zZWxlY3QoCiAgICAgICAgICAgICAgICBDdXJyZW50ICAgICAgICA9PiAkU2VsZWN0ZWQsCiAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiAkUG9zc2libGVWYWx1ZXMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoIGRlZmluZWQgJEF1dG9zZWxlY3RlZCApIHsKICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkQXV0b3NlbGVjdGVkOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgY2FjaGUgdGhlIG5ldyB2aXNpYmlsaXR5CiAgICBpZiAoICRQYXJhbXtBQ0xQcmVzZWxlY3Rpb259ICYmICRWaXNDaGVjayApIHsKICAgICAgICAkU2VsZi0+e0NhY2hlT2JqZWN0fS0+U2V0KAogICAgICAgICAgICBUeXBlICA9PiAnSGlkZGVuRmllbGRzJywKICAgICAgICAgICAgS2V5ICAgPT4gJFBhcmFte0Zvcm1JRH0sCiAgICAgICAgICAgIFZhbHVlID0+IHslVmlzaWJpbGl0eX0sCiAgICAgICAgICAgIFRUTCAgID0+IDYwICogMjAsICAgICAgICAgICMgMjAgbWluCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGlmIGFkZGl0aW9uYWwgZWxlbWVudHMgYXJlIGNoYW5nZWQgYnkgdGhlIHJvdXRpbmUsIHJlY3Vyc2l2ZWx5IGNhbGwgR2V0RmllbGRTdGF0ZXMsIHVudGlsIGFsbCBkZXBlbmRlbmNpZXMgYXJlIHdvcmtlZCB0aHJvdWdoCiAgICBpZiAoJU5ld1ZhbHVlcykgewoKICAgICAgICBteSAlUmVjdSA9ICRTZWxmLT5HZXRGaWVsZFN0YXRlcygKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBHZXRQYXJhbSA9PiB7CiAgICAgICAgICAgICAgICAleyAkUGFyYW17R2V0UGFyYW19IH0sCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgPT4gewogICAgICAgICAgICAgICAgICAgICV7ICRQYXJhbXtHZXRQYXJhbX17RHluYW1pY0ZpZWxkfSB9LAogICAgICAgICAgICAgICAgICAgICVOZXdWYWx1ZXMsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBDaGFuZ2VkRWxlbWVudHMgPT4geyBtYXAgeyAkXyA9PiAxIH0ga2V5cyAlTmV3VmFsdWVzIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBhbHdheXMgdGFrZSB0aGUgaW5uZXJtb3N0IHZpc2liaWxpdHkKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkUmVjdXtWaXNpYmlsaXR5fSApICkgewogICAgICAgICAgICAlVmlzaWJpbGl0eSA9ICV7ICRSZWN1e1Zpc2liaWxpdHl9IH07CiAgICAgICAgfQoKICAgICAgICAjIGNvbWJpbmUgdGhlIGZpZWxkIGluZm8sIGlubmVyIHZhbHVlcyB0YWtlIHByZWNlZGVuY2UKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkUmVjdXtGaWVsZHN9ICkgKSB7CiAgICAgICAgICAgICVGaWVsZHMgPSAoCiAgICAgICAgICAgICAgICAlRmllbGRzLAogICAgICAgICAgICAgICAgJXsgJFJlY3V7RmllbGRzfSB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjb21iaW5lIGFsbCBjaGFuZ2VkIGVsZW1lbnRzCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFJlY3V7TmV3VmFsdWVzfSApICkgewogICAgICAgICAgICAlTmV3VmFsdWVzID0gKAogICAgICAgICAgICAgICAgJU5ld1ZhbHVlcywKICAgICAgICAgICAgICAgICV7ICRSZWN1e05ld1ZhbHVlc30gfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZmluYWxseSB0YWtlIGNhcmUgb2Ygc2V0IGluZm9ybWF0aW9uCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFJlY3V7U2V0c30gKSApIHsKICAgICAgICAgICAgJVNldHMgPSAoCiAgICAgICAgICAgICAgICAlU2V0cywKICAgICAgICAgICAgICAgICV7ICRSZWN1e1NldHN9IH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAoCiAgICAgICAgRmllbGRzICAgICA9PiBcJUZpZWxkcywKICAgICAgICBWaXNpYmlsaXR5ID0+IFwlVmlzaWJpbGl0eSwKICAgICAgICBOZXdWYWx1ZXMgID0+IFwlTmV3VmFsdWVzLAogICAgICAgIFNldHMgICAgICAgPT4gXCVTZXRzLAogICAgKTsKfQoKPWhlYWQyIEF1dG9zZWxlY3QoKQoKQXV0b3NlbGVjdHMgYSB2YWx1ZSBpZiB0aGUgY3VycmVudCBzZWxlY3Rpb24gaXMgZW1wdHkgYW5kIG9ubHkgb25lIHZhbGlkIG9wdGlvbiBpcyBwcmVzZW50LCBlbHNlIHVuZGVmIGlzIHJldHVybmVkCgogICAgbXkgJFNlbGVjdGVkID0gJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5BdXRvc2VsZWN0KAogICAgICAgIEN1cnJlbnQgICAgICAgID0+ICRWYWx1ZSwgICAjIHVuZGVmLCAnJywgb3IgW10KICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiB7fSwKICAgICk7Cgo9Y3V0CgpzdWIgQXV0b3NlbGVjdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgcmV0dXJuLCBpZiBhbHJlYWR5IGZpbGxlZCAoICcwJyBpcyB2YWxpZCEgKQogICAgaWYgKAogICAgICAgIGRlZmluZWQgJFBhcmFte0N1cnJlbnR9CiAgICAgICAgJiYgKCAoICFyZWYoICRQYXJhbXtDdXJyZW50fSApICYmICRQYXJhbXtDdXJyZW50fSAhfiAvXi0/JC8gKSB8fCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtDdXJyZW50fSApICkKICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuIHVuZGVmOyAgICAjIyBubyBjcml0aWMgcXcoU3Vicm91dGluZXM6OlByb2hpYml0RXhwbGljaXRSZXR1cm5VbmRlZikKICAgIH0KCiAgICAjIGNoZWNrIHBvc3NpYmxlIHZhbHVlcwogICAgaWYgKCAhJFBhcmFte1Bvc3NpYmxlVmFsdWVzfSApIHsKICAgICAgICByZXR1cm4gdW5kZWY7ICAgICMjIG5vIGNyaXRpYyBxdyhTdWJyb3V0aW5lczo6UHJvaGliaXRFeHBsaWNpdFJldHVyblVuZGVmKQogICAgfQogICAgaWYgKCByZWYoICRQYXJhbXtQb3NzaWJsZVZhbHVlc30gKSBuZSAnSEFTSCcgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQb3NzaWJsZVZhbHVlcyBoYXMgdG8gYmUgYSBIYXNoIHJlZiEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gdW5kZWY7ICAgICMjIG5vIGNyaXRpYyBxdyhTdWJyb3V0aW5lczo6UHJvaGliaXRFeHBsaWNpdFJldHVyblVuZGVmKQogICAgfQoKICAgIG15ICggJFZhbGlkS2V5cywgJFVzZWRLZXkgKTsKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRQYXJhbXtQb3NzaWJsZVZhbHVlc30gfSApIHsKCiAgICAgICAgIyBleGNsdWRlIGVtcHR5IHZhbHVlczsgJy0nIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogICAgICAgIGlmICggJEtleSAhfiAvXi0/JC8gKSB7CiAgICAgICAgICAgIGlmICggKyskVmFsaWRLZXlzID4gMSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZjsgICAgIyMgbm8gY3JpdGljIHF3KFN1YnJvdXRpbmVzOjpQcm9oaWJpdEV4cGxpY2l0UmV0dXJuVW5kZWYpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFVzZWRLZXkgPSAkS2V5OwogICAgICAgIH0KICAgIH0KICAgIGlmICggISRWYWxpZEtleXMgKSB7CiAgICAgICAgcmV0dXJuIHVuZGVmOyAgICAjIyBubyBjcml0aWMgcXcoU3Vicm91dGluZXM6OlByb2hpYml0RXhwbGljaXRSZXR1cm5VbmRlZikKICAgIH0gICAgIyBlbHNlICRWYWxpZEtleXMgPT0gMSA9PiBhdXRvc2VsZWN0CgogICAgIyBmaWxsIHRoZSBmaWVsZCBpZiBhbmQgYWRkIGl0IHRvIHRoZSBjaGFuZ2VkIGVsZW1lbnRzCiAgICBpZiAoIHJlZiggJFBhcmFte0N1cnJlbnR9ICkgKSB7CiAgICAgICAgcmV0dXJuIFskVXNlZEtleV07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gJFVzZWRLZXk7CiAgICB9Cgp9Cgo9aGVhZDIgU2V0QUNMUHJlc2VsZWN0aW9uQ2FjaGUoKQoKQ2FsY3VsYXRlcyBhbmQgc3RvcmVzIHNpbXBsZSBmaWVsZCByZWxhdGlvbnMgYW5kIGdyb3VwcyBBQ0xzIHZpYSB0aGVpciBvdXRwdXQgdHlwZXMgdG8gcHJlc2VsZWN0IHRoZW0gd2hlbiB1c2VkLCBsYXRlciBvbgoKICAgIG15ICRBQ0xQcmVzZWxlY3Rpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+U2V0QUNMUHJlc2VsZWN0aW9uQ2FjaGUoKTsKCj1jdXQKCnN1YiBTZXRBQ0xQcmVzZWxlY3Rpb25DYWNoZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRBY2xzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdDb25maWdJdGVtQWNsJyk7CgogICAgIyBzdGFuZGFyZCBmaWVsZHMKICAgIG15ICVGaWVsZHMgPSAoCiAgICAgICAgRGVwbFN0YXRlID0+ICdEZXBsU3RhdGUnLAogICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaVN0YXRlJywKICAgICk7CgogICAgIyBkeW5hbWljIGZpZWxkcwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoIHZhbHVlcyAleyAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0KCBSZXN1bHRUeXBlID0+ICdIQVNIJyApIH0gKSB7CiAgICAgICAgJEZpZWxkc3siRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGROYW1lIn0gPSAiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGROYW1lIjsKICAgIH0KCiAgICBteSAlUHJlc2VsZWN0aW9uUnVsZXM7CgogICAgIyBwYXJzZSBBY2xzCiAgICBBQ0w6CiAgICBmb3IgbXkgJEFDTCAoIHZhbHVlcyAleyRBY2xzfSApIHsKCiAgICAgICAgIyBnZXQgY29udHJvbGxpbmcgZWxlbWVudHMgKEVsZW1lbnRDaGFuZ2VkIGxhdGVyIG9uKQogICAgICAgIG15ICVDb250cm9sbGVyOwogICAgICAgIGZvciBteSAkUHJvcGVydGllc0hhc2ggKHF3KFByb3BlcnRpZXMgUHJvcGVydGllc0RhdGFiYXNlKSkgewogICAgICAgICAgICBpZiAoICRBQ0wtPnskUHJvcGVydGllc0hhc2h9e0NvbmZpZ0l0ZW19ICkgewogICAgICAgICAgICAgICAgTkFNRToKICAgICAgICAgICAgICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAleyAkQUNMLT57JFByb3BlcnRpZXNIYXNofXtDb25maWdJdGVtfSB9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggISRGaWVsZHN7JE5hbWV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJGaWVsZCAkTmFtZSB1c2VkIGluIEFDTHMsIGlzIG5vdCBkZWZpbmVkISIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBOQU1FOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkQ29udHJvbGxlcnskTmFtZX0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJEFDTC0+eyRQcm9wZXJ0aWVzSGFzaH17RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgIE5BTUU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJXsgJEFDTC0+eyRQcm9wZXJ0aWVzSGFzaH17RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggISRGaWVsZHN7JE5hbWV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJGaWVsZCAkTmFtZSB1c2VkIGluIEFDTHMsIGlzIG5vdCBkZWZpbmVkISIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBOQU1FOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkQ29udHJvbGxlcnskTmFtZX0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciBteSAkRmllbGQgKHF3L0RlcGxTdGF0ZSBJbmNpU3RhdGUvKSB7CiAgICAgICAgICAgICAgICBpZiAoICRBQ0wtPnskUHJvcGVydGllc0hhc2h9eyRGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbnRyb2xsZXJ7JEZpZWxkfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCAhJUNvbnRyb2xsZXIgKSB7IG5leHQgQUNMIH0KCiAgICAgICAgIyBnZXQgYWZmZWN0ZWQgZWxlbWVudHMKICAgICAgICBmb3IgbXkgJEltcGFjdCAocXcoUG9zc2libGUgUG9zc2libGVBZGQgUG9zc2libGVOb3QpKSB7CgogICAgICAgICAgICAjIENvbmZpZ0l0ZW0gUnVsZXMKICAgICAgICAgICAgaWYgKCAkQUNMLT57JEltcGFjdH17Q29uZmlnSXRlbX0gKSB7CiAgICAgICAgICAgICAgICBBRkZFQ1RFRDoKICAgICAgICAgICAgICAgIGZvciBteSAkQWZmZWN0ZWQgKCBzb3J0IGtleXMgJXsgJEFDTC0+eyRJbXBhY3R9e0NvbmZpZ0l0ZW19IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEZpZWxkc3skQWZmZWN0ZWR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJGaWVsZCAkQWZmZWN0ZWQgdXNlZCBpbiBBQ0xzLCBpcyBub3QgZGVmaW5lZCEiCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgQUZGRUNURUQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudENoYW5nZWQgKCBzb3J0IGtleXMgJUNvbnRyb2xsZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRQcmVzZWxlY3Rpb25SdWxlc3tDb25maWdJdGVtfXsgJEZpZWxkc3skRWxlbWVudENoYW5nZWR9IH17ICRGaWVsZHN7JEFmZmVjdGVkfSB9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgRm9ybSBSdWxlcwogICAgICAgICAgICBpZiAoICRBQ0wtPnskSW1wYWN0fS0+e0Zvcm19ICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRFbGVtZW50Q2hhbmdlZCAoIHNvcnQga2V5cyAlQ29udHJvbGxlciApIHsKICAgICAgICAgICAgICAgICAgICAkUHJlc2VsZWN0aW9uUnVsZXN7Rm9ybX17ICRGaWVsZHN7JEVsZW1lbnRDaGFuZ2VkfSB9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfQoKICAgIG15ICRSZXR1cm4gPSB7CiAgICAgICAgRmllbGRzID0+IHsgbWFwIHsgJF8gPT4gMSB9ICggdmFsdWVzICVGaWVsZHMgKSB9LAogICAgICAgIFJ1bGVzICA9PiBcJVByZXNlbGVjdGlvblJ1bGVzLAogICAgfTsKCiAgICAkU2VsZi0+e0NhY2hlT2JqZWN0fS0+U2V0KAogICAgICAgIFR5cGUgID0+ICdDb25maWdJdGVtQUNMJywgICAgICAgIyBvbmx5IFthLXpBLVowLTlfXSBjaGFycyB1c2FibGUKICAgICAgICBLZXkgICA9PiAnUHJlc2VsZWN0aW9uJywKICAgICAgICBWYWx1ZSA9PiAkUmV0dXJuLAogICAgICAgIFRUTCAgID0+IDYwICogNjAgKiAyNCAqIDEwMCwgICAgIyBzZWNvbmRzLCB0aGlzIG1lYW5zIDEwMCBkYXlzCiAgICApOwoKICAgIHJldHVybiAkUmV0dXJuOwoKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/History.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6SGlzdG9yeTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Okhpc3RvcnkgLSBtb2R1bGUgZm9yIElUU01Db25maWdJdGVtLnBtIHdpdGggaGlzdG9yeSBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBoaXN0b3J5IGZ1bmN0aW9ucy4KCj1oZWFkMiBIaXN0b3J5R2V0KCkKClJldHVybnMgYW4gYXJyYXkgcmVmZXJlbmNlIHdpdGggYWxsIGhpc3RvcnkgZW50cmllcyBmb3IgdGhlIGdpdmVuIGNvbmZpZyBpdGVtLgpFYWNoIGFycmF5IGVsZW1lbnQgaXMgYSBoYXNoIHJlZmVyZW5jZSByZXByZXNlbnRpbmcgb25lIGhpc3RvcnkgZW50cnkuCgpUaGVzZSBoYXNoIHJlZmVyZW5jZXMgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dDoKCiAgICAkSW5mb3tIaXN0b3J5RW50cnlJRH0KICAgICRJbmZve0NvbmZpZ0l0ZW1JRH0KICAgICRJbmZve0hpc3RvcnlUeXBlfQogICAgJEluZm97SGlzdG9yeVR5cGVJRH0KICAgICRJbmZve0NvbW1lbnR9CiAgICAkSW5mb3tDcmVhdGVkQnl9CiAgICAkSW5mb3tDcmVhdGVUaW1lfQogICAgJEluZm97VXNlcklEfQogICAgJEluZm97VXNlckxvZ2lufQogICAgJEluZm97VXNlckxhc3RuYW1lfQogICAgJEluZm97VXNlckZpcnN0bmFtZX0KICAgICRJbmZve1VzZXJGdWxsbmFtZX0KCiAgICBteSAkSW5mbyA9ICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5R2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjM0LAogICAgKTsKCj1jdXQKCnN1YiBIaXN0b3J5R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBjYWNoZWQgcmVzdWx0IGV4aXN0cywgcmV0dXJuIHRoYXQgcmVzdWx0CiAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntDSVZlcnNpb25zfS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9CiAgICAgICAgaWYgJFNlbGYtPntDYWNoZX0tPntDSVZlcnNpb25zfS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9OwoKICAgICMgZmV0Y2ggc29tZSBkYXRhIGZyb20gaGlzdG9yeSBmb3IgZ2l2ZW4gY29uZmlnIGl0ZW0KICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgY2guaWQsIGNoLmNvbmZpZ2l0ZW1faWQsIGNoLmNvbnRlbnQsIGNoLnR5cGVfaWQsICcKICAgICAgICAgICAgLiAnY2guY3JlYXRlX2J5LCBjaC5jcmVhdGVfdGltZSwgY2h0Lm5hbWUgJwogICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeSBjaCwgY29uZmlnaXRlbV9oaXN0b3J5X3R5cGUgY2h0ICcKICAgICAgICAgICAgLiAnV0hFUkUgY2gudHlwZV9pZCA9IGNodC5pZCBBTkQgY2guY29uZmlnaXRlbV9pZCA9ID8gJwogICAgICAgICAgICAuICdPUkRFUiBCWSBjaC5pZCcsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICAjIHNhdmUgZGF0YSBmcm9tIGhpc3RvcnkgaW4gYXJyYXkKICAgIG15IEBFbnRyaWVzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBteSAlVG1wID0gKAogICAgICAgICAgICBIaXN0b3J5RW50cnlJRCA9PiAkUm93WzBdLAogICAgICAgICAgICBDb25maWdJdGVtSUQgICA9PiAkUm93WzFdLAogICAgICAgICAgICBDb21tZW50ICAgICAgICA9PiAkUm93WzJdLAogICAgICAgICAgICBIaXN0b3J5VHlwZUlEICA9PiAkUm93WzNdLAogICAgICAgICAgICBDcmVhdGVCeSAgICAgICA9PiAkUm93WzRdLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgICA9PiAkUm93WzVdLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAkUm93WzZdLAogICAgICAgICk7CgogICAgICAgIHB1c2ggQEVudHJpZXMsIFwlVG1wOwogICAgfQoKICAgICMgZ2V0IG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdXNlciB3aG8gY3JlYXRlZCBoaXN0b3J5IGVudHJpZXMKICAgIGZvciBteSAkRW50cnkgKEBFbnRyaWVzKSB7CgogICAgICAgICMgZ2V0IHVzZXIgaW5mb3JtYXRpb24KICAgICAgICBteSAlVXNlckluZm8gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgVXNlcklEID0+ICRFbnRyeS0+e0NyZWF0ZUJ5fSwKICAgICAgICAgICAgQ2FjaGVkID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBzYXZlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIGhpc3RvcnkgZW50cnkKICAgICAgICAkRW50cnktPntVc2VySUR9ICAgICAgICA9ICRVc2VySW5mb3tVc2VySUR9OwogICAgICAgICRFbnRyeS0+e1VzZXJMb2dpbn0gICAgID0gJFVzZXJJbmZve1VzZXJMb2dpbn07CiAgICAgICAgJEVudHJ5LT57VXNlckZpcnN0bmFtZX0gPSAkVXNlckluZm97VXNlckZpcnN0bmFtZX07CiAgICAgICAgJEVudHJ5LT57VXNlckxhc3RuYW1lfSAgPSAkVXNlckluZm97VXNlckxhc3RuYW1lfTsKICAgICAgICAkRW50cnktPntVc2VyRnVsbG5hbWV9ICA9ICRVc2VySW5mb3tVc2VyRnVsbG5hbWV9OwogICAgfQoKICAgICMgc2F2ZSByZXN1bHQgaW4gY2FjaGUKICAgICRTZWxmLT57Q2FjaGV9LT57Q0lWZXJzaW9uc30tPnsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfSA9IFxARW50cmllczsKCiAgICByZXR1cm4gXEBFbnRyaWVzOwp9Cgo9aGVhZDIgSGlzdG9yeUVudHJ5R2V0KCkKClJldHVybnMgYSBoYXNoIHJlZmVyZW5jZSB3aXRoIGluZm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIGhpc3RvcnkgZW50cnkuClRoZSBoYXNoIHJlZmVyZW5jZSBjb250YWluIGluZm9ybWF0aW9uIGFib3V0OgoKICAgICRJbmZve0hpc3RvcnlFbnRyeUlEfQogICAgJEluZm97Q29uZmlnSXRlbUlEfQogICAgJEluZm97SGlzdG9yeVR5cGV9CiAgICAkSW5mb3tIaXN0b3J5VHlwZUlEfQogICAgJEluZm97Q29tbWVudH0KICAgICRJbmZve0NyZWF0ZUJ5fQogICAgJEluZm97Q3JlYXRlVGltZX0KICAgICRJbmZve1VzZXJJRH0KICAgICRJbmZve1VzZXJMb2dpbn0KICAgICRJbmZve1VzZXJMYXN0bmFtZX0KICAgICRJbmZve1VzZXJGaXJzdG5hbWV9CiAgICAkSW5mb3tVc2VyRnVsbG5hbWV9CgogICAgbXkgJEluZm8gPSAkQ29uZmlnSXRlbU9iamVjdC0+SGlzdG9yeUVudHJ5R2V0KAogICAgICAgIEhpc3RvcnlFbnRyeUlEID0+IDEyMzQsCiAgICApOwoKPWN1dAoKc3ViIEhpc3RvcnlFbnRyeUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoSGlzdG9yeUVudHJ5SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBjYWNoZWQgcmVzdWx0IGV4aXN0cywgcmV0dXJuIHRoYXQgcmVzdWx0CiAgICBpZiAoICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbnN9LT57ICRQYXJhbXtIaXN0b3J5RW50cnlJRH0gfSApIHsKICAgICAgICBteSAoJENvbmZpZ0l0ZW1JRCkgPSBrZXlzICV7ICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbnN9LT57ICRQYXJhbXtIaXN0b3J5RW50cnlJRH0gfSB9OwogICAgICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+e1ZlcnNpb25zfS0+eyAkUGFyYW17SGlzdG9yeUVudHJ5SUR9IH0tPnskQ29uZmlnSXRlbUlEfTsKICAgIH0KCiAgICAjIGZldGNoIGEgc2luZ2xlIGVudHJ5IGZyb20gaGlzdG9yeQogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBjaC5pZCwgY2guY29uZmlnaXRlbV9pZCwgY2guY29udGVudCwgY2gudHlwZV9pZCwgJwogICAgICAgICAgICAuICdjaC5jcmVhdGVfYnksIGNoLmNyZWF0ZV90aW1lLCBjaHQubmFtZSAnCiAgICAgICAgICAgIC4gJ0ZST00gY29uZmlnaXRlbV9oaXN0b3J5IGNoLCBjb25maWdpdGVtX2hpc3RvcnlfdHlwZSBjaHQgJwogICAgICAgICAgICAuICdXSEVSRSBjaC50eXBlX2lkID0gY2h0LmlkIEFORCBjaC5pZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtIaXN0b3J5RW50cnlJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAlRW50cnk7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAlRW50cnkgPSAoCiAgICAgICAgICAgIEhpc3RvcnlFbnRyeUlEID0+ICRSb3dbMF0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgIENvbW1lbnQgICAgICAgID0+ICRSb3dbMl0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgID0+ICRSb3dbM10sCiAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgID0+ICRSb3dbNF0sCiAgICAgICAgICAgIENyZWF0ZVRpbWUgICAgID0+ICRSb3dbNV0sCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgID0+ICRSb3dbNl0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB1c2VyIGRhdGEgZm9yIHRoaXMgZW50cnkKICAgIG15ICVVc2VySW5mbyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFVzZXJEYXRhKAogICAgICAgIFVzZXJJRCA9PiAkRW50cnl7Q3JlYXRlQnl9LAogICAgICAgIENhY2hlZCA9PiAxLAogICAgKTsKCiAgICAkRW50cnl7VXNlcklEfSAgICAgICAgPSAkVXNlckluZm97VXNlcklEfTsKICAgICRFbnRyeXtVc2VyTG9naW59ICAgICA9ICRVc2VySW5mb3tVc2VyTG9naW59OwogICAgJEVudHJ5e1VzZXJGaXJzdG5hbWV9ID0gJFVzZXJJbmZve1VzZXJGaXJzdG5hbWV9OwogICAgJEVudHJ5e1VzZXJMYXN0bmFtZX0gID0gJFVzZXJJbmZve1VzZXJMYXN0bmFtZX07CiAgICAkRW50cnl7VXNlckZ1bGxuYW1lfSAgPSAkVXNlckluZm97VXNlckZ1bGxuYW1lfTsKCiAgICAkU2VsZi0+e0NhY2hlfS0+e1ZlcnNpb25zfS0+eyAkUGFyYW17SGlzdG9yeUVudHJ5SUR9IH0tPnsgJEVudHJ5e0NvbmZpZ0l0ZW1JRH0gfSA9IFwlRW50cnk7CgogICAgcmV0dXJuIFwlRW50cnk7Cn0KCj1oZWFkMiBIaXN0b3J5QWRkKCkKCkFkZHMgYSBzaW5nbGUgaGlzdG9yeSBlbnRyeSB0byB0aGUgaGlzdG9yeS4KCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICBDb25maWdJdGVtSUQgID0+IDEyMzQsCiAgICAgICAgSGlzdG9yeVR5cGUgICA9PiAnTmV3Q29uZmlnSXRlbScsICMgZWl0aGVyIEhpc3RvcnlUeXBlIG9yIEhpc3RvcnlUeXBlSUQgaXMgbmVlZGVkCiAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICBDb21tZW50ICAgICAgID0+ICdBbnkgdXNlZnVsIGluZm9ybWF0aW9uJywKICAgICk7Cgo9Y3V0CgpzdWIgSGlzdG9yeUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIFVzZXJJRCBDb21tZW50KSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIGlmICggISggJFBhcmFte0hpc3RvcnlUeXBlfSB8fCAkUGFyYW17SGlzdG9yeVR5cGVJRH0gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSGlzdG9yeVR5cGUgb3IgSGlzdG9yeVR5cGVJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGhpc3RvcnkgdHlwZSBpZCBmcm9tIGhpc3RvcnkgdHlwZSBpZiBoaXN0b3J5IHR5cGUgaXMgZ2l2ZW4uCiAgICBpZiAoICRQYXJhbXtIaXN0b3J5VHlwZX0gKSB7CiAgICAgICAgbXkgJElkID0gJFNlbGYtPkhpc3RvcnlUeXBlTG9va3VwKCBIaXN0b3J5VHlwZSA9PiAkUGFyYW17SGlzdG9yeVR5cGV9ICk7CgogICAgICAgIGlmICggISRJZCApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0ludmFsaWQgaGlzdG9yeSB0eXBlIGdpdmVuIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRQYXJhbXtIaXN0b3J5VHlwZUlEfSA9ICRJZDsKICAgIH0KCiAgICAjIGlmIGhpc3RvcnkgdHlwZSBpcyBnaXZlbgogICAgZWxzaWYgKCAkUGFyYW17SGlzdG9yeVR5cGVJRH0gKSB7CiAgICAgICAgbXkgJE5hbWUgPSAkU2VsZi0+SGlzdG9yeVR5cGVMb29rdXAoIEhpc3RvcnlUeXBlSUQgPT4gJFBhcmFte0hpc3RvcnlUeXBlSUR9ICk7CgogICAgICAgIGlmICggISROYW1lICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnSW52YWxpZCBoaXN0b3J5IHR5cGUgaWQgZ2l2ZW4hJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGdpdmVuIGNvbmZpZyBpdGVtIGlkIHBvaW50cyB0byBhbiBleGlzdGluZyBjb25maWcgaXRlbSBudW1iZXIKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CgogICAgICAgIG15ICROdW1iZXIgPSAkU2VsZi0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISROdW1iZXIgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdJbnZhbGlkIGNvbmZpZyBpdGVtIGlkIGdpdmVuIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgY2FjaGVkIHJlc3VsdHMKICAgIGRlbGV0ZSAkU2VsZi0+e0NhY2hlfS0+e0NJVmVyc2lvbnN9LT57ICRQYXJhbXtDb25maWdJdGVtSUR9IH07CgogICAgIyBzaG9ydGVuIHRoZSBjb21tZW50IGlmIGl0IGlzIGJpZ2dlciB0aGFuIG1heCBsZW5ndGgKICAgIGlmICggbGVuZ3RoKCAkUGFyYW17Q29tbWVudH0gKSA+IDE5MSApIHsKCiAgICAgICAgbXkgKCAkRmllbGQsICRPbGQsICROZXcgKSA9IHNwbGl0IC8lJS8sICRQYXJhbXtDb21tZW50fSwgMzsKCiAgICAgICAgbXkgJExlbmd0aCA9IGludCggKCAxOTEgLSBsZW5ndGgoJEZpZWxkKSAtIDQgKSAvIDIgKTsKCiAgICAgICAgaWYgKCBsZW5ndGgoJE9sZCkgPiAkTGVuZ3RoICkgewogICAgICAgICAgICBteSAkSW5kZXggPSBpbnQoICRMZW5ndGggLyAyICk7CiAgICAgICAgICAgICRPbGQgPSBzdWJzdHIoICRPbGQsIDAsICRJbmRleCAtIDIgKSAuICcuLi4nIC4gc3Vic3RyKCAkT2xkLCBsZW5ndGgoJE9sZCkgLSAkSW5kZXggKyAyICk7CiAgICAgICAgfQogICAgICAgIGlmICggbGVuZ3RoKCROZXcpID4gJExlbmd0aCApIHsKICAgICAgICAgICAgbXkgJEluZGV4ID0gaW50KCAkTGVuZ3RoIC8gMiApOwogICAgICAgICAgICAkTmV3ID0gc3Vic3RyKCAkTmV3LCAwLCAkSW5kZXggLSAyICkgLiAnLi4uJyAuIHN1YnN0ciggJE5ldywgbGVuZ3RoKCROZXcpIC0gJEluZGV4ICsgMiApOwogICAgICAgIH0KICAgICAgICBteSAkTmV3Q29tbWVudCA9ICRGaWVsZCAuICclJScgLiAkT2xkIC4gJyUlJyAuICROZXc7CgogICAgICAgICRQYXJhbXtDb21tZW50fSA9ICROZXdDb21tZW50OwogICAgfQoKICAgICMgaW5zZXJ0IGhpc3RvcnkgZW50cnkKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBjb25maWdpdGVtX2hpc3RvcnkgKCBjb25maWdpdGVtX2lkLCBjb250ZW50LCBjcmVhdGVfYnksICcKICAgICAgICAgICAgLiAnY3JlYXRlX3RpbWUsIHR5cGVfaWQgKSBWQUxVRVMgKCA/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyApJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBcJFBhcmFte0NvbW1lbnR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17SGlzdG9yeVR5cGVJRH0sCiAgICAgICAgXSwKICAgICk7Cn0KCj1oZWFkMiBIaXN0b3J5RGVsZXRlKCkKCkRlbGV0ZXMgY29tcGxldGUgaGlzdG9yeSBmb3IgYSBnaXZlbiBjb25maWcgaXRlbQoKICAgICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5RGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIEhpc3RvcnlEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlbGV0ZSBjYWNoZWQgcmVzdWx0cwogICAgZGVsZXRlICRTZWxmLT57Q2FjaGV9LT57Q0lWZXJzaW9ufS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9OwogICAgZm9yIG15ICRWZXJzaW9uTnIgKCBzb3J0IGtleXMgJXsgJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uc30gfSApIHsKICAgICAgICBteSAoJENhY2hlQ29uZmlnSXRlbSkgPSBrZXlzICV7ICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbnN9LT57JFZlcnNpb25Ocn0gfTsKICAgICAgICBkZWxldGUgJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uc30tPnskVmVyc2lvbk5yfSBpZiAkQ2FjaGVDb25maWdJdGVtIGVxICRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgfQoKICAgICMgZGVsZXRlIGhpc3RvcnkgZm9yIGdpdmVuIGNvbmZpZyBpdGVtCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeSBXSEVSRSBjb25maWdpdGVtX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKfQoKPWhlYWQyIEhpc3RvcnlFbnRyeURlbGV0ZSgpCgpEZWxldGVzIGEgc2luZ2xlIGhpc3RvcnkgZW50cnkuCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlFbnRyeURlbGV0ZSgKICAgICAgICBIaXN0b3J5RW50cnlJRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIEhpc3RvcnlFbnRyeURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoSGlzdG9yeUVudHJ5SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgc2luZ2xlIGVudHJ5CiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeSBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0hpc3RvcnlFbnRyeUlEfSBdLAogICAgKTsKfQoKPWhlYWQyIEhpc3RvcnlUeXBlTG9va3VwKCkKClRoaXMgbWV0aG9kIGRvZXMgYSBsb29rdXAgZm9yIGEgaGlzdG9yeSB0eXBlLiBJZiBhIGhpc3RvcnkgdHlwZSBpZCBpcyBnaXZlbiwKaXQgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgaGlzdG9yeSB0eXBlLiBJZiBhIGhpc3RvcnkgdHlwZSBpcyBnaXZlbiwgdGhlIGFwcHJvcHJpYXRlCmlkIGlzIHJldHVybmVkLgoKICAgIG15ICROYW1lID0gJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlUeXBlTG9va3VwKAogICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gMTIzNCwKICAgICk7CgogICAgbXkgJElkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlUeXBlTG9va3VwKAogICAgICAgIEhpc3RvcnlUeXBlID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgICk7Cgo9Y3V0CgpzdWIgSGlzdG9yeVR5cGVMb29rdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAoJEtleSkgPSBncmVwIHsgJFBhcmFteyRffSB9IHF3KEhpc3RvcnlUeXBlSUQgSGlzdG9yeVR5cGUpOwoKICAgICMgY2hlY2sgZm9yIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJEtleSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSGlzdG9yeVR5cGVJRCBvciBIaXN0b3J5VHlwZSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgaWYgcmVzdWx0IGlzIGNhY2hlZCByZXR1cm4gdGhhdCByZXN1bHQKICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+e0hpc3RvcnlUeXBlTG9va3VwfS0+eyAkUGFyYW17JEtleX0gfQogICAgICAgIGlmICRTZWxmLT57Q2FjaGV9LT57SGlzdG9yeVR5cGVMb29rdXB9LT57ICRQYXJhbXskS2V5fSB9OwoKICAgICMgc2V0IHRoZSBhcHByb3ByaWF0ZSBTUUwgc3RhdGVtZW50CiAgICBteSAkU1FMID0gJ1NFTEVDVCBuYW1lIEZST00gY29uZmlnaXRlbV9oaXN0b3J5X3R5cGUgV0hFUkUgaWQgPSA/JzsKCiAgICBpZiAoICRLZXkgZXEgJ0hpc3RvcnlUeXBlJyApIHsKICAgICAgICAkU1FMID0gJ1NFTEVDVCBpZCBGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeV90eXBlIFdIRVJFIG5hbWUgPSA/JzsKICAgIH0KCiAgICAjIGZldGNoIHRoZSByZXF1ZXN0ZWQgdmFsdWUKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17JEtleX0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAkVmFsdWU7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRWYWx1ZSA9ICRSb3dbMF07CiAgICB9CgogICAgIyBzYXZlIHZhbHVlIGluIGNhY2hlCiAgICAkU2VsZi0+e0NhY2hlfS0+e0hpc3RvcnlUeXBlTG9va3VwfS0+eyAkUGFyYW17JEtleX0gfSA9ICRWYWx1ZTsKCiAgICByZXR1cm4gJFZhbHVlOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/Link.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Okxpbms7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpMaW5rIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKVGhpcyBtb2R1bGUgc3VwcG9ydHMgdGhlIG1haW50ZW5hbmNlIG9mIHRoZSBjb250ZW50IG9mIHRoZSB0YWJsZSBCPGNvbmZpZ2l0ZW1fbGluaz4uIFRoaXMgdGFibGUKaXMgYSBzaGFkb3cgb2YgdGhlIGluZm9ybWF0aW9uIHRoYXQgaXMgY29udGFpbmVkIGluIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkcyB0aGF0IGNvbm5lY3Qgb2JqZWN0cwpvZiB0eXBlIEM8SVRTTUNvbmZpZ0l0ZW0+IGFuZCBDPElUU01Db25maWdJdGVtVmVyc2lvbj4uCgpUaGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgTGlua09iamVjdCBmZWF0dXJlIGlzIGFsc28gcmVwcmVzZW50ZWQgaW4gQjxjb25maWdpdGVtX2xpbms+LiBUaGVzZQpjYXNlIGlzIG1hcmtlZCBieSBCPGNvbmZpZ2l0ZW1fbGluay5keW5hbWljX2ZpZWxkX2lkPiBoYXZpbmcgdGhlIHZhbHVlIEI8TlVMTD4uCgpUaGVyZSBpcyBzdXBwb3J0IGZvciBpbW1lZGlhdGUgdXBkYXRlIG9mIHRoZSB0YWJsZSBhbmQgZm9yIGEgY29tcGxldGUgcmVidWlsZCBvZiB0aGUgdGFibGUuCgpQbGFubmVkIGlzIGFsc28gc3VwcG9ydCBmb3IgZHVtcGluZyB0aGUgY29tcGxldGUgZ3JhcGggc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBmb3IgcHJlc2VudGF0aW9uLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBBZGRDb25maWdJdGVtTGluaygpCgpUaGlzIG1ldGhvZCBpcyBzcGVjaWZpY2FsbHkgZm9yIGFkZGluZyBhIGxpbmsgYmV0d2VlbiB0d28gY29uZmlnIGl0ZW1zLiBJdCBpcyBuZWVkZWQKZm9yIHN1cHBvcnRpbmcgdGhlIExpbmtPYmplY3QgZnVuY3Rpb25hbGl0eS4KClRoZSBsaW5raW5nIG9mIHNwZWNpZmljIHZlcnNpb25zIGlzIG5vdCBzdXBwb3J0ZWQuCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+QWRkQ29uZmlnSXRlbUxpbmsoCiAgICAgICAgVHlwZSAgICAgICAgICAgPT4gJ0RlcGVuZHNPbicsCiAgICAgICAgU291cmNlQ29uZmlnSUQgPT4gMTI3LAogICAgICAgIFRhcmdldENvbmZpZ0lEID0+IDEyOCwKICAgICk7Cgo9Y3V0CgpzdWIgQWRkQ29uZmlnSXRlbUxpbmsgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVHlwZSBTb3VyY2VDb25maWdJdGVtSUQgVGFyZ2V0Q29uZmlnSXRlbUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBsb29rdXAgdHlwZSBpZAogICAgbXkgJFR5cGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPlR5cGVMb29rdXAoCiAgICAgICAgTmFtZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApJTlNFUlQgSU5UTyBjb25maWdpdGVtX2xpbmsgKAogICAgbGlua190eXBlX2lkLCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1faWQsIGR5bmFtaWNfZmllbGRfaWQsIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkKICApCiAgVkFMVUVTICg/LCA/LCA/LCBOVUxMLCBjdXJyZW50X3RpbWVzdGFtcCwgMSApCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsgXCggJFR5cGVJRCwgJFBhcmFte1NvdXJjZUNvbmZpZ0l0ZW1JRH0sICRQYXJhbXtUYXJnZXRDb25maWdJdGVtSUR9ICkgXSwKICAgICk7CgogICAgJFNlbGYtPl9UcmlnZ2VyQ3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17U291cmNlQ29uZmlnSXRlbUlEfSwKICAgICAgICBMaW5rZWQgICAgICAgPT4gWyAkUGFyYW17VGFyZ2V0Q29uZmlnSXRlbUlEfSBdLAogICAgICAgIFVubGlua2VkICAgICA9PiBbXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBEZWxldGVDb25maWdJdGVtTGluaygpCgpUaGlzIG1ldGhvZCBpcyBzcGVjaWZpY2FsbHkgZm9yIGRlbGV0aW5nIGEgbGluayBiZXR3ZWVuIHR3byBjb25maWcgaXRlbXMuIEl0IGlzIG5lZWRlZApmb3Igc3VwcG9ydGluZyB0aGUgTGlua09iamVjdCBmdW5jdGlvbmFsaXR5LgoKVGhlIHVubGlua2luZyBvZiBzcGVjaWZpYyB2ZXJzaW9ucyBpcyBub3Qgc3VwcG9ydGVkLgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlbGV0ZUNvbmZpZ0l0ZW1MaW5rKAogICAgICAgIFR5cGUgICAgICAgICAgID0+ICdEZXBlbmRzT24nLAogICAgICAgIFNvdXJjZUNvbmZpZ0lEID0+IDEyNywKICAgICAgICBUYXJnZXRDb25maWdJRCA9PiAxMjgsCiAgICApOwoKPWN1dAoKc3ViIERlbGV0ZUNvbmZpZ0l0ZW1MaW5rIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFR5cGUgU291cmNlQ29uZmlnSXRlbUlEIFRhcmdldENvbmZpZ0l0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9va3VwIHR5cGUgaWQKICAgIG15ICRMaW5rVHlwZUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+VHlwZUxvb2t1cCgKICAgICAgICBOYW1lICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwogICAgJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsCkRFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fbGluawogIFdIRVJFIGxpbmtfdHlwZV9pZCA9ID8KICAgIEFORCBzb3VyY2VfY29uZmlnaXRlbV9pZCA9ID8KICAgIEFORCB0YXJnZXRfY29uZmlnaXRlbV9pZCA9ID8KICAgIEFORCBkeW5hbWljX2ZpZWxkX2lkIElTIE5VTEwKRU5EX1NRTAogICAgICAgIEJpbmQgPT4gWyBcKCAkTGlua1R5cGVJRCwgJFBhcmFte1NvdXJjZUNvbmZpZ0l0ZW1JRH0sICRQYXJhbXtUYXJnZXRDb25maWdJdGVtSUR9ICkgXSwKICAgICk7CgogICAgJFNlbGYtPl9UcmlnZ2VyQ3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17U291cmNlQ29uZmlnSXRlbUlEfSwKICAgICAgICBMaW5rZWQgICAgICAgPT4gW10sCiAgICAgICAgVW5saW5rZWQgICAgID0+IFsgJFBhcmFte1RhcmdldENvbmZpZ0l0ZW1JRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBMaW5rZWRDb25maWdJdGVtcygpCgpnZXQgdGhlIGNvbmZpZyBpdGVtcyB0aGF0IGFyZSBkaXJlY3RseSBsaW5rZWQgdG8gYSBzcGVjaWZpYyBjb25maWcgaXRlbS4gTm8gZGV0YWlscwpvZiB0aGUgbGlua2VkIGNvbmZpZyBpdGVtcyBhcmUgcmV0dXJuZWQuCgogICAgIyBvbmx5IGxpbmtlZCBmcm9tIGEgY29uZmlnIGl0ZW0KICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICBDb25maWdJdGVtSUQgPT4gMzIxLAogICAgICAgIFR5cGVzICAgICAgICA9PiBbICdQYXJlbnRDaGlsZCcsICdJc0luc3BpcmVkQnknIF0sICMgb3B0aW9uYWwKICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1NvdXJjZScsICMgb25lIG9mIFNvdXJjZSwgVGFyZ2V0LCBCb3RoCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKb3IKCiAgICAjIG9ubHkgbGlua2VkIGZyb20gYSBjb25maWcgaXRlbSB2ZXJzaW9uCiAgICBteSAkTGlua2VkQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+TGlua2VkQ29uZmlnSXRlbXMoCiAgICAgICAgVmVyc2lvbklEICA9PiA0ODksCiAgICAgICAgVHlwZXMgICAgICA9PiBbICdQYXJlbnRDaGlsZCcsICdJc0luc3BpcmVkQnknIF0sICMgb3B0aW9uYWwKICAgICAgICBEaXJlY3Rpb24gID0+ICdTb3VyY2UnLCAjIG9uZSBvZiBTb3VyY2UsIFRhcmdldCwgQm90aAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgpQYXNzaW5nIGJvdGggY29uZmlnIGl0ZW0gSUQgYW5kIGNvbmZpZyBpdGVtIHZlcnNpb24gSUQgaXMgZmluZSB0b28uCgogICAgIyBsaW5rIHZpYSBpdGVtIG9mIHZlcnNpb24KICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICBDb25maWdJdGVtSUQgPT4gMzIxLAogICAgICAgIFZlcnNpb25JRCAgICA9PiA0ODksCiAgICAgICAgVHlwZXMgICAgICAgID0+IFsgJ1BhcmVudENoaWxkJywgJ0lzSW5zcGlyZWRCeScgXSwgIyBvcHRpb25hbAogICAgICAgIERpcmVjdGlvbiAgICA9PiAnU291cmNlJywgIyBvbmUgb2YgU291cmNlLCBUYXJnZXQsIEJvdGgKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpUaGUgc2VtYW50aWNzIG9mIHRoZSBwYXJhbWV0ZXIgQzxEaXJlY3Rpb24+IGNhbiBiZSBjb25mdXNpbmcuIFRoZSBhYm92ZSBjYWxsIGNhbiBiZSB2ZXJiYWxpemVkIGFzOgoiR2l2ZSBtZSBhbGwgY29uZmlnIGl0ZW1zIHRoYXQgaGF2ZSBhICdQYXJlbnRDaGlsZCcgb3IgJ0lzSW5zcGlyZWRCeScgcmVsYXRpb25zaGlwIGluIHdoaWNoIHRoZQpjb25maWcgaXRlbSAzMjEgaXMgdGhlIFNvdXJjZSBvYmplY3QuIgoKUmV0dXJucyBhbiBlbXB0eSBhcnJheSByZWYgd2hlbiBubyByZWxhdGlvbnNoaXBzIHdlcmUgZm91bmQ6CgogICAgJExpbmtlZENvbmZpZ0l0ZW1zID0gW107CgpSZXR1cm5zIGEgbGlzdCB3aGVuIHJlbGF0aW9uc2hpcHMgaGF2ZSBiZWVuIGZvdW5kLiBFaXRoZXIgQzxDb25maWdJdGVtSUQ+IG9yIEM8VmVyc2lvbklEPiBpcyBzZXQuCkM8RHluYW1pY0ZpZWxkSUQ+IGlzIG5vdCBkZWZpbmVkIHdoZW4gTGlua09iamVjdCBpcyB1c2VkLgoKICAgICRMaW5rZWRDb25maWdJdGVtcyA9IFsKICAgICAgICB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+IDE3LAogICAgICAgICAgICBWZXJzaW9uSUQgICAgICA9PiB1bmRlZiwKICAgICAgICAgICAgRGlyZWN0aW9uICAgICAgPT4gJ1NvdXJjZScsCiAgICAgICAgICAgIExpbmtUeXBlSUQgICAgID0+IDIsCiAgICAgICAgICAgIExpbmtUeXBlICAgICAgID0+ICdQYXJlbnRDaGlsZCcsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZElEID0+IDEyNywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gdW5kZWYsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgID0+IDIyLAogICAgICAgICAgICBEaXJlY3Rpb24gICAgICA9PiAnU291cmNlJywKICAgICAgICAgICAgTGlua1R5cGVJRCAgICAgPT4gMiwKICAgICAgICAgICAgTGlua1R5cGUgICAgICAgPT4gJ0lzSW5zcGlyZWRCeScsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZElEID0+IHVuZGVmLAogICAgICAgIH0sCiAgICAgICAgLi4uCiAgICBdOwoKPWN1dAoKc3ViIExpbmtlZENvbmZpZ0l0ZW1zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KERpcmVjdGlvbiBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGlmICggISggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfHwgJFBhcmFte1ZlcnNpb25JRH0gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgZWl0aGVyIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgUGFzc2luZyBib3RoIENvbmZpZ0l0ZW1JRCBhbmQgVmVyc2lvbklEIGlzIGZpbmUKCiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgIyBnZXQgY29tcGxldGUgbGlzdCBmb3IgYm90aCBkaXJlY3Rpb25zIChvciBvbmx5IG9uZSBpZiByZXN0cmljdGVkKQogICAgbXkgKCAkU1FMLCBAQmluZHMgKTsKICAgIHsKICAgICAgICAjIHRoZSBsaW5rIHR5cGUgaXMgb3B0aW9uYWwKICAgICAgICBteSBAVHlwZUNvbmRpdGlvbnM7ICAgICMgMCBvciAxIGNvbmRpdGlvbnMKICAgICAgICBteSBAVHlwZUJpbmRzOyAgICAgICAgICMgMCwgMSwgb3IgbWFueSBiaW5kcwogICAgICAgIGlmICggJFBhcmFte1R5cGVzfSAmJiByZWYgJFBhcmFte1R5cGVzfSBlcSAnQVJSQVknICkgewoKICAgICAgICAgICAgIyBlbXB0eSBsaXN0IG9mIHR5cGVzIGdpdmVzIG5vIHJlc3VsdAogICAgICAgICAgICByZXR1cm4gW10gdW5sZXNzICRQYXJhbXtUeXBlc30tPkAqOwoKICAgICAgICAgICAgbXkgJFBsYWNlaG9sZGVycyA9IGpvaW4gJywgJywgbWFwIHsnPyd9ICRQYXJhbXtUeXBlc30tPkAqOwogICAgICAgICAgICBwdXNoIEBUeXBlQ29uZGl0aW9ucywgImxpbmtfdHlwZV9pZCBJTiAoJFBsYWNlaG9sZGVycykiOwoKICAgICAgICAgICAgcHVzaCBAVHlwZUJpbmRzLCBtYXAKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkTGlua09iamVjdC0+VHlwZUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgID0+ICRfLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkUGFyYW17VHlwZXN9LT5AKjsKICAgICAgICB9CgogICAgICAgICMgdGhlc2UgIGFycmF5cyBoYXZlIGVpdGhlciAxIG9yIDIgZWxlbWVudHMKICAgICAgICBteSAoIEBTb3VyY2VDb25kaXRpb25zLCBAVGFyZ2V0Q29uZGl0aW9ucywgQElEQmluZHMgKTsKICAgICAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25kaXRpb25zLCAnc291cmNlX2NvbmZpZ2l0ZW1faWQgPSA/JzsKICAgICAgICAgICAgcHVzaCBAVGFyZ2V0Q29uZGl0aW9ucywgJ3RhcmdldF9jb25maWdpdGVtX2lkID0gPyc7CiAgICAgICAgICAgIHB1c2ggQElEQmluZHMsICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgIH0KICAgICAgICBpZiAoICRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25kaXRpb25zLCAnc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCA9ID8nOwogICAgICAgICAgICBwdXNoIEBUYXJnZXRDb25kaXRpb25zLCAndGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCA9ID8nOwogICAgICAgICAgICBwdXNoIEBJREJpbmRzLCAgICAgICAgICAkUGFyYW17VmVyc2lvbklEfTsKICAgICAgICB9CgogICAgICAgICMgbGluayBkaXJlY3Rpb25zIGFyZSByZWFkIGluIHRoZSBzYW1lIG1hbm5lciBhcyB3aW5kIGRpcmVjdGlvbnMgLSBub3J0aCB3aW5kIGNvbWVzIGZyb20gdGhlIG5vcnRoLAogICAgICAgICMgYSAiU291cmNlIiBkaXJlY3Rpb24gcmV0dXJucyBhbGwgbGlua2VkIENJcyB3aGVyZSB3ZSBjb21lIGZyb20gJFBhcmFte0NvbmZpZ0l0ZW1JRH0gYXMgc291cmNlCiAgICAgICAgIyAuLi5vciBzbzsgdGhpcyBpcyBjb25zaXN0ZW50IHdpdGggS2VybmVsL1N5c3RlbS9MaW5rT2JqZWN0LnBtIG1vc3QgaW1wb3J0YW50bHkKICAgICAgICBpZiAoICRQYXJhbXtEaXJlY3Rpb259IGVxICdTb3VyY2UnICkgewogICAgICAgICAgICAkU1FMID0gPDwiRU5EX1NRTCI7ClNFTEVDVCBESVNUSU5DVCB0YXJnZXRfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgbGlua190eXBlX2lkLCAnU291cmNlJywgZHluYW1pY19maWVsZF9pZAogIEZST00gY29uZmlnaXRlbV9saW5rCiAgV0hFUkUgQHtbIGpvaW4gJyBBTkQgJywgKCBtYXAgeyAiKCRfKSIgfSBqb2luICcgT1IgJywgQFNvdXJjZUNvbmRpdGlvbnMgKSwgQFR5cGVDb25kaXRpb25zIF19CkVORF9TUUwKICAgICAgICAgICAgQEJpbmRzID0gKCBASURCaW5kcywgQFR5cGVCaW5kcyApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtEaXJlY3Rpb259IGVxICdUYXJnZXQnICkgewogICAgICAgICAgICAkU1FMID0gPDwiRU5EX1NRTCI7ClNFTEVDVCBESVNUSU5DVCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgbGlua190eXBlX2lkLCAnVGFyZ2V0JywgZHluYW1pY19maWVsZF9pZAogIEZST00gY29uZmlnaXRlbV9saW5rCiAgV0hFUkUgQHtbIGpvaW4gJyBBTkQgJywgKCBtYXAgeyAiKCRfKSIgfSBqb2luICcgT1IgJywgQFRhcmdldENvbmRpdGlvbnMgKSwgQFR5cGVDb25kaXRpb25zIF19CkVORF9TUUwKICAgICAgICAgICAgQEJpbmRzID0gKCBASURCaW5kcywgQFR5cGVCaW5kcyApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIyBCb3RoIGRpcmVjdGlvbnMKICAgICAgICAgICAgIyBUT0RPOiB0ZXN0IHdpdGggUG9zdGdyZVNRTCBhbmQgT3JhY2xlCiAgICAgICAgICAgICRTUUwgPSA8PCJFTkRfU1FMIjsKKAogIFNFTEVDVCBESVNUSU5DVCB0YXJnZXRfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgbGlua190eXBlX2lkLCAnU291cmNlJywgZHluYW1pY19maWVsZF9pZAogICAgRlJPTSBjb25maWdpdGVtX2xpbmsKICAgIFdIRVJFIEB7WyBqb2luICcgQU5EICcsICggbWFwIHsgIigkXykiIH0gam9pbiAnIE9SICcsIEBTb3VyY2VDb25kaXRpb25zKSwgQFR5cGVDb25kaXRpb25zIF19CikKVU5JT04KKAogIFNFTEVDVCBESVNUSU5DVCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgbGlua190eXBlX2lkLCAnVGFyZ2V0JywgZHluYW1pY19maWVsZF9pZAogICAgRlJPTSBjb25maWdpdGVtX2xpbmsKICAgIFdIRVJFIEB7WyBqb2luICcgQU5EICcsICggbWFwIHsgIigkXykiIH0gam9pbiAnIE9SICcsIEBUYXJnZXRDb25kaXRpb25zKSwgQFR5cGVDb25kaXRpb25zIF19CikKRU5EX1NRTAogICAgICAgICAgICBAQmluZHMgPSAoIEBJREJpbmRzLCBAVHlwZUJpbmRzLCBASURCaW5kcywgQFR5cGVCaW5kcyApOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkUm93cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RBbGwoCiAgICAgICAgU1FMICA9PiAkU1FMLAogICAgICAgIEJpbmQgPT4gWyBcKEBCaW5kcykgXSwKICAgICk7CgogICAgbXkgQFJlc3VsdCA9IG1hcAogICAgICAgIHsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRfLT5bMF0sCiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgPT4gJF8tPlsxXSwKICAgICAgICAgICAgICAgIExpbmtUeXBlSUQgICA9PiAkXy0+WzJdLAogICAgICAgICAgICAgICAgTGlua1R5cGUgICAgID0+ICRMaW5rT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICAgICAgICAgIFR5cGVJRCA9PiAkXy0+WzJdLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgICA9PiAkXy0+WzNdLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkSUQgPT4gJF8tPls0XSwKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkUm93cy0+QCo7CgogICAgcmV0dXJuIFxAUmVzdWx0Owp9Cgo9aGVhZDIgU3luY0xpbmtUYWJsZSgpCgpUaGlzIG1ldGhvZCBlbnRhaWxzIHRoZSBsb2dpYyBmb3Iga2VlcGluZyB0aGUgdGFibGUgQjxjb25maWdpdGVtX2xpbms+IGluIHN5bmMKd2l0aCBkeW5hbWljIGZpZWxkIHVwZGF0ZXMuCgpEZWZpbml0aW9uVXBkYXRlcyBwYXNzIE9sZER5bmFtaWNGaWVsZENvbmZpZyBhcyBhZGRpdGlvbmFsIHBhcmFtZXRlciBiZWNhdXNlCmxpbmtpbmcgYW5kIHVubGlua2luZyBtaWdodCBkaWZmZXIuCgpJbiB0aGUgYmVsb3cgdGhlIG9iamVjdCBob2xkaW5nIHRoZSBkeW5hbWljIGZpZWxkIGlzIHJlZmVycmVkIHRvIGFzICJSZWZlcmVuY2luZyIsCnRoZSBvYmplY3RzIHdoaWNoIGFyZSB0aGUgdmFsdWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkIGFyZSAiUmVmZXJlbmNlZCIuIFRoaXMgaXMKaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIExpbmtUeXBlRGlyZWN0aW9uIHdoaWNoIGNhbiBlaXRoZXIgYmUKUmVmZXJlbmNpbmdJc1NvdXJjZSBvciBSZWZlcmVuY2luZ0lzVGFyZ2V0LgoKPWN1dAoKc3ViIFN5bmNMaW5rVGFibGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRNaXNzaW5nICggZ3JlcCB7ICEkUGFyYW17JF99IH0gcXcoRHluYW1pY0ZpZWxkQ29uZmlnIENvbmZpZ0l0ZW1JRCBDb25maWdJdGVtTGFzdFZlcnNpb25JRCBDb25maWdJdGVtVmVyc2lvbklEKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE1pc3NpbmchIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAgID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CiAgICBteSAkT2xkRmllbGRDb25maWcgICAgICAgPSAkUGFyYW17T2xkRHluYW1pY0ZpZWxkQ29uZmlnfTsKICAgIG15ICREeW5hbWljRmllbGRJRCAgICAgICA9ICREeW5hbWljRmllbGRDb25maWctPntJRH07CiAgICBteSAkREZEZXRhaWxzICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfTsKICAgIG15ICRPbGRERkRldGFpbHMgICAgICAgICA9ICRPbGRGaWVsZENvbmZpZyA/ICRPbGRGaWVsZENvbmZpZy0+e0NvbmZpZ30gOiAkREZEZXRhaWxzOwogICAgbXkgJFJlZmVyZW5jZWRPYmplY3RUeXBlID0gJERGRGV0YWlscy0+e1JlZmVyZW5jZWRPYmplY3RUeXBlfTsKCiAgICBpZiAoICRSZWZlcmVuY2VkT2JqZWN0VHlwZSBuZSAnSVRTTUNvbmZpZ0l0ZW0nICYmICRSZWZlcmVuY2VkT2JqZWN0VHlwZSBuZSAnSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBwYXJhbWV0ZXIgUmVmZXJlbmNlZE9iamVjdFR5cGUgbXVzdCBiZSBlaXRoZXIgSVRTTUNvbmZpZ0l0ZW0gb3IgSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHsKICAgICAgICBteSBATGlua0NvbmZpZ3M7CgogICAgICAgIHB1c2ggQExpbmtDb25maWdzLCAkREZEZXRhaWxzICAgIGlmICRERkRldGFpbHMtPntMaW5rVHlwZX07CiAgICAgICAgcHVzaCBATGlua0NvbmZpZ3MsICRPbGRERkRldGFpbHMgaWYgJE9sZEZpZWxkQ29uZmlnICYmICRPbGRERkRldGFpbHMtPntMaW5rVHlwZX07CgogICAgICAgICMgTGlua2luZyBpcyBub3QgbmVjZXNzYXJpbHkgc2V0IHVwLiBUaGF0IGlzIGZpbmUuCiAgICAgICAgcmV0dXJuIDEgdW5sZXNzIEBMaW5rQ29uZmlnczsKCiAgICAgICAgIyBXaGVuIGxpbmtpbmcgaXMgc2V0IHVwIHdlIG5lZWQgdGhlIGNvbXBsZXRlIGluZm9ybWF0aW9uIGZvciBob3cKICAgICAgICAjIHRoZSBsaW5raW5nIHNob3VsZCBiZSBkb25lLgogICAgICAgIGZvciBteSAkQ29uZmlnIChATGlua0NvbmZpZ3MpIHsKICAgICAgICAgICAgTkVFREVEOgogICAgICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoTGlua0RpcmVjdGlvbiBMaW5rUmVmZXJlbmNpbmdUeXBlKSkgewogICAgICAgICAgICAgICAgbmV4dCBORUVERUQgaWYgJENvbmZpZy0+eyROZWVkZWR9OwoKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gcXF7SW52YWxpZCBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyYXRpb24uIFRoZSBzZXR0aW5nICROZWVkZWQgaXMgbWlzc2luZyx9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJExpbmtPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwogICAgbXkgJERCT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIFdlIGNhbiBlaXRoZXIgYnVpbGQgInN0YXRpYyIgbGlua3MgZnJvbSBzcGVjaWZpYyBjb25maWcgaXRlbSB2ZXJzaW9ucwogICAgIyBvciAiZHluYW1pYyIgbGlua3MgZnJvbSBhIENJIGRpcmVjdGx5LgogICAgIyBEZXBlbmRpbmcgb24gdGhhdCB3ZSB1c2UgYSBkaWZmZXJlbnQgb2JqZWN0IGlkCiAgICBteSAkT2JqZWN0SUQgPSAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnID8gJFBhcmFte0NvbmZpZ0l0ZW1JRH0gOiAkUGFyYW17Q29uZmlnSXRlbVZlcnNpb25JRH07CgogICAgbXkgJExpbmtUeXBlSUQ7CiAgICBteSAkT2JqZWN0Q29sdW1uOwogICAgbXkgJFZhbHVlQ29sdW1uOwogICAgbXkgQE9sZFZhbHVlczsKCiAgICBteSAkR2V0Q29sdW1uRGF0YSA9IHN1YiB7CiAgICAgICAgbXkgJENvbmZpZyA9ICRfWzBdOwoKICAgICAgICBteSAkTGlua1R5cGVOYW1lID0gJENvbmZpZy0+e0xpbmtUeXBlfTsKICAgICAgICAkTGlua1R5cGVJRCA9ICRMaW5rT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICBOYW1lICAgPT4gJExpbmtUeXBlTmFtZSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJExpbmtUeXBlSUQgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgbGluayB0eXBlICckTGlua1R5cGVOYW1lJyBpcyBub3QgdmFsaWQnLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIFRoZSBjb2x1bW4gZm9yIHRoZSAocmVmZXJlbmNpbmcpIG9iamVjdCBpZCBkZXBlbmRzIG9uIHRoZSBkaXJlY3Rpb24gYW5kCiAgICAgICAgIyBvbiB3aGV0aGVyIHdlIGxpbmsgZnJvbSBhIHNwZWNpZmljIHZlcnNpb24gKHN0YXRpYykgb3IgdGhlIENJIChkeW5hbWljKQogICAgICAgICMgUG9zc2libGUgY29sdW1ucyBhcmU6CiAgICAgICAgIyAgIHRhcmdldF9jb25maWdpdGVtX2lkCiAgICAgICAgIyAgIHRhcmdldF9jb25maWdpdGVtX3ZlcnNpb25faWQsCiAgICAgICAgIyAgIHNvdXJjZV9jb25maWdpdGVtX2lkLAogICAgICAgICMgICBzb3VyY2VfY29uZmlnaXRlbV92ZXJzaW9uX2lkCiAgICAgICAgJE9iamVjdENvbHVtbiA9IGpvaW4gJ18nLAogICAgICAgICAgICAoICRDb25maWctPntMaW5rRGlyZWN0aW9ufSBlcSAnUmVmZXJlbmNpbmdJc1NvdXJjZScgPyAnc291cmNlJyAgICAgOiAndGFyZ2V0JyApLAogICAgICAgICAgICAoICRDb25maWctPntMaW5rUmVmZXJlbmNpbmdUeXBlfSBlcSAnRHluYW1pYycgICAgICAgPyAnY29uZmlnaXRlbScgOiAnY29uZmlnaXRlbV92ZXJzaW9uJyApLAogICAgICAgICAgICAnaWQnOwoKICAgICAgICAjIFRoZSBjb2x1bW4gZm9yIHRoZSAocmVmZXJlbmNlZCkgdmFsdWUgYWxzbyBkZXBlbmRzIG9uIHRoZSBsaW5rIGRpcmVjdGlvbgogICAgICAgICMgYW5kIGhlcmUgb24gdGhlIGZpZWxkIHR5cGU7IGlmIHRoZSBsYXR0ZXIgY2hhbmdlcyBiZXR3ZWVuIGRlZmluaXRpb25zIFJlYnVpbGRMaW5rVGFibGUgaGFzIHRvIGJlIHVzZWQKICAgICAgICAjIFRoZSBwb3NzaWJsZSBjb2x1bW5zIGFyZSB0aGUgc2FtZSBhcyBhYm92ZQogICAgICAgICRWYWx1ZUNvbHVtbiA9IGpvaW4gJ18nLAogICAgICAgICAgICAoICRDb25maWctPntMaW5rRGlyZWN0aW9ufSBlcSAnUmVmZXJlbmNpbmdJc1NvdXJjZScgPyAndGFyZ2V0JyAgICAgOiAnc291cmNlJyApLAogICAgICAgICAgICAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyAgPyAnY29uZmlnaXRlbScgOiAnY29uZmlnaXRlbV92ZXJzaW9uJyApLAogICAgICAgICAgICAnaWQnOwogICAgfTsKCiAgICAjIGZpcnN0IGRlbGV0ZSBleGlzdGluZyBsaW5rcwogICAgaWYgKCAkT2xkREZEZXRhaWxzLT57TGlua1R5cGV9ICkgewogICAgICAgICRHZXRDb2x1bW5EYXRhLT4oJE9sZERGRGV0YWlscyk7CgogICAgICAgICMgaWYgd2UgaGF2ZSBDSSAtIENJIGxpbmtzLCB3ZSBoYXZlIHRvIHRyaWdnZXIgQ3VySW5jaVN0YXRlIFJlY2FsY3VsYXRpb24gZm9yIGRlbGV0ZWQgbGlua3MKICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyAmJiAkT2xkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnICkgewogICAgICAgICAgICBAT2xkVmFsdWVzID0gJERCT2JqZWN0LT5TZWxlY3RDb2xBcnJheSgKICAgICAgICAgICAgICAgIFNRTCAgPT4gIlNFTEVDVCAkVmFsdWVDb2x1bW4gRlJPTSBjb25maWdpdGVtX2xpbmsgV0hFUkUgZHluYW1pY19maWVsZF9pZCA9ID8gQU5EICRPYmplY3RDb2x1bW4gPSA/IiwKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJER5bmFtaWNGaWVsZElELCBcJE9iamVjdElEIF0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBjb25maWdpdGVtX2xpbmsgV0hFUkUgZHluYW1pY19maWVsZF9pZCA9ID8gQU5EICRPYmplY3RDb2x1bW4gPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkRHluYW1pY0ZpZWxkSUQsIFwkT2JqZWN0SUQgXSwKICAgICAgICApOwogICAgfQoKICAgICMgaWYgd2UgZGlkIGEgZGVmaW5pdGlvbiB1cGRhdGUsIHdlIGhhdmUgdG8gImxvYWQiIHRoZSBuZXcgREYgQ29uZmlnCiAgICBpZiAoJE9sZEZpZWxkQ29uZmlnKSB7CiAgICAgICAgJEdldENvbHVtbkRhdGEtPigkREZEZXRhaWxzKTsKICAgIH0KCiAgICBteSBATmV3VmFsdWVzID0gJFBhcmFte1ZhbHVlfQogICAgICAgID8gcmVmICRQYXJhbXtWYWx1ZX0gPyAoIGdyZXAgeyRffSAkUGFyYW17VmFsdWV9LT5AKiApIDogKCAkUGFyYW17VmFsdWV9ICkKICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgKCk7CgogICAgIyBmaW5hbGx5IHNldCB0aGUgbmV3IGxpbmtzCiAgICBpZiAoICRERkRldGFpbHMtPntMaW5rVHlwZX0gJiYgQE5ld1ZhbHVlcyApIHsKCiAgICAgICAgJERCT2JqZWN0LT5Eb0FycmF5KAogICAgICAgICAgICBTUUwgPT4gPDwiRU5EX1NRTCIsCklOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fbGluayAoCiAgICBkeW5hbWljX2ZpZWxkX2lkLCBsaW5rX3R5cGVfaWQsICRPYmplY3RDb2x1bW4sICRWYWx1ZUNvbHVtbiwKICAgIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkKICApCiAgVkFMVUVTICgKICAgID8sID8sID8sID8sCiAgICBjdXJyZW50X3RpbWVzdGFtcCwgMQogICkKRU5EX1NRTAogICAgICAgICAgICBCaW5kID0+IFsgJER5bmFtaWNGaWVsZElELCAkTGlua1R5cGVJRCwgJE9iamVjdElELCBcQE5ld1ZhbHVlcyBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBsYXN0bHkgd2UgaGF2ZSB0byByZWNhbGMgY3VycmVudCBpbmNpZGVudCBzdGF0ZXMgZm9yIGZ1bGx5IGR5bmFtaWMgbGlua3MKICAgIGlmICgKICAgICAgICBAT2xkVmFsdWVzCiAgICAgICAgfHwKICAgICAgICAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyAmJiAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnICkKICAgICAgICApCiAgICB7CgogICAgICAgIG15ICVMaW5rZWQ7CiAgICAgICAgbXkgJVVubGlua2VkID0gbWFwIHsgJF8gPT4gMSB9IEBPbGRWYWx1ZXM7CgogICAgICAgICMgaWYgd2UgaGF2ZSBhIG5vcm1hbCBmaWVsZCB1cGRhdGUsIHdlIGRvIG5vdCBuZWVkIHRvIHJlY2FsY3VsYXRlIGxpbmtzIHdoaWNoIGRvIG5vdCBjaGFuZ2UKICAgICAgICBpZiAoICEkT2xkRmllbGRDb25maWcgKSB7CiAgICAgICAgICAgIGZvciBteSAkSUQgKEBOZXdWYWx1ZXMpIHsKICAgICAgICAgICAgICAgIGlmICggZXhpc3RzICRVbmxpbmtlZHskSUR9ICkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkVW5saW5rZWR7JElEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMaW5rZWR7JElEfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaW4gY2FzZSBvZiBhIGRlZmluaXRpb24gdXBkYXRlICh3ZSBoYXZlIGFuIG9sZCBERiBDb25maWcpIHdlIGp1c3QgaGF2ZSB0byBjaGVjayB3aGV0aGVyIHdlIHN0aWxsIGFyZSBmdWxseSBkeW5hbWljCiAgICAgICAgIyB3ZSBkbyBub3Qgc2tpcCBzdGF5aW5nIGxpbmtzLCBiZWNhdXNlIGRpcmVjdGlvbiBhbmQgdHlwZSBtaWdodCBoYXZlIGNoYW5nZWQKICAgICAgICBlbHNpZiAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyAmJiAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnICkgewogICAgICAgICAgICAlTGlua2VkID0gbWFwIHsgJF8gPT4gMSB9IEBOZXdWYWx1ZXM7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+X1RyaWdnZXJDdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0SUQsCiAgICAgICAgICAgIExpbmtlZCAgICAgICA9PiBbIGtleXMgJUxpbmtlZCBdLAogICAgICAgICAgICBVbmxpbmtlZCAgICAgPT4gWyBrZXlzICVVbmxpbmtlZCBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBhc3N1bWUgc3VjY2VzcwogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBSZWJ1aWxkTGlua1RhYmxlKCkKCnB1cmdlIGFuZCByZXBvcHVsYXRlIHRoZSB0YWJsZSBCPGNvbmZpZ2l0ZW1fbGluaz4gYmFzZWQgb24gdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkcwphbmQgb24gdGhlIExpbmtPYmplY3QgZGF0YS4KCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJlYnVpbGRMaW5rVGFibGU7CgpUaGUgcmVzdWx0IGlzIGEgaGFzaHJlZiBsaWtlOgoKICAgIG15ICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgPT4gMSwgIyBvciAwIGluIGNhc2Ugb2YgZmFpbHVyZQogICAgICAgIE1lc3NhZ2UgID0+ICdzb21lIG1lc3NhZ2UnLAogICAgICAgIENvbG9yICAgID0+ICdncmVlbicsICAgICMgb3IgcmVkLCBvciB5ZWxsb3cKICAgIH07Cgo9Y3V0CgpzdWIgUmVidWlsZExpbmtUYWJsZSB7CiAgICBteSAoJFNlbGYpID0gQF87CgogICAgIyBubyBwYXJhbWV0ZXJzIGFyZSBzdXBwb3J0ZWQKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIHB1cmdlIHRoZSB0YWJsZSwgZ2l2ZSB1cCBpbiBjYXNlIG9mIGVycm9yCiAgICBteSAkU3VjY2Vzc1B1cmdlID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fbGluaycKICAgICk7CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLicpLAogICAgICAgIENvbG9yICAgPT4gJ3JlZCcsCiAgICB9IHVubGVzcyAkU3VjY2Vzc1B1cmdlOwoKICAgICMgR2V0IHRoZSByZWxldmFudCBkeW5hbWljIGZpZWxkcy4gUmVsZXZhbnQgYXJlIG9ubHkKICAgICMgUmVmZXJlbmNlIGR5bmFtaWMgZmllbGRzIHRoYXQgY29ubmVjdCBhbiBJVFNNQ29uZmlnSXRlbQogICAgIyB0byBhbm90aGVyIElUU01Db25maWdJdGVtIG9yIGFuIElUU01Db25maWdJdGVtVmVyc2lvbi4KICAgICMgQW5vdGhlciBjb25kaXRpb24gaXMgdGhhdCB0aGUgYXR0cmlidXRlICdMaW5rVHlwZScgaXMgY29uZmlndXJlZCBmb3IgdGhhdAogICAgIyBkeW5hbWljIGZpZWxkLgogICAgbXkgQER5bmFtaWNGaWVsZHM7CiAgICB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgICAgICBteSAkQ29tcGxldGVEeW5hbWljRmllbGRMaXN0ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nCiAgICAgICAgKTsKICAgICAgICBARHluYW1pY0ZpZWxkcyA9CiAgICAgICAgICAgIGdyZXAgeyAkXy0+e0NvbmZpZ30tPntMaW5rVHlwZX0gfQogICAgICAgICAgICBncmVwIHsgcmVmICRfLT57Q29uZmlnfSBlcSAnSEFTSCcgfQogICAgICAgICAgICBncmVwIHsgJF8tPntGaWVsZFR5cGV9ID1+IG0vXkNvbmZpZ0l0ZW0vIH0KICAgICAgICAgICAgJENvbXBsZXRlRHluYW1pY0ZpZWxkTGlzdC0+QCo7CiAgICB9CgogICAgIyBub3RoaW5nIHRvIGRvIHdoZW4gdGhlcmUgYXJlIG5vIGR5bmFtaWMgZmllbGRzCiAgICAjIFRPRE86IGNvdmVyIHRoZSBjYXNlIHdoZXJlIG9ubHkgTGlua09iamVjdCBpcyB1c2VkCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCcpLAogICAgICAgIENvbG9yICAgPT4gJ3llbGxvdycsCiAgICB9IHVubGVzcyBARHluYW1pY0ZpZWxkczsKCiAgICAjIE5lZWRlZCBmb3IgZGVjaWRpbmcgd2hpY2ggYXR0cmlidXRlIG9mIGNvbmZpZ2l0ZW1fbGluayBpcyB1c2VkLgogICAgbXkgJUxpbmtzVG9DSSA9CiAgICAgICAgbWFwICB7ICRfLT57SUR9ID0+IDEgfQogICAgICAgIGdyZXAgeyAkXy0+e0ZpZWxkVHlwZX0gZXEgJ0NvbmZpZ0l0ZW0nIH0KICAgICAgICBARHluYW1pY0ZpZWxkczsKICAgIG15ICVMaW5rc1RvQ0lWZXJzaW9uID0KICAgICAgICBtYXAgIHsgJF8tPntJRH0gPT4gMSB9CiAgICAgICAgZ3JlcCB7ICRfLT57RmllbGRUeXBlfSBlcSAnQ29uZmlnSXRlbVZlcnNpb24nIH0KICAgICAgICBARHluYW1pY0ZpZWxkczsKCiAgICAjIEVhc3kgYWNjZWVkIHRvIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZy4KICAgIG15ICVERkxvb2t1cEJ5SUQgPQogICAgICAgIG1hcCB7ICRfLT57SUR9ID0+ICRfIH0KICAgICAgICBARHluYW1pY0ZpZWxkczsKCiAgICAjIEdldCB0aGUgcmVsZXZhbnQgZHluYW1pYyBmaWVsZCB2YWx1ZXMuCiAgICAjIFRoZSBtZXRob2RzIGluIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGRWYWx1ZSBhcmUgc3BlY2lmaWMgdG8gc3BlY2lmaWMgZmllbGRzLAogICAgIyBzbyB1c2UgZGVkaWNhdGVkIFNRTCBoZXJlLgogICAgbXkgJFJvd3M7CiAgICB7CiAgICAgICAgbXkgJVF1ZXJ5Q29uZGl0aW9uID0gJERCT2JqZWN0LT5RdWVyeUluQ29uZGl0aW9uKAogICAgICAgICAgICBLZXkgICAgICA9PiAnZGZ2LmZpZWxkX2lkJywKICAgICAgICAgICAgVmFsdWVzICAgPT4gWyBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAlREZMb29rdXBCeUlEIF0sCiAgICAgICAgICAgIEJpbmRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkUm93cyA9ICREQk9iamVjdC0+U2VsZWN0QWxsKAogICAgICAgICAgICBTUUwgPT4gPDwiRU5EX1NRTCIsClNFTEVDVCBkZnYuZmllbGRfaWQsIHYuY29uZmlnaXRlbV9pZCwgdi5pZCwgZGZ2LnZhbHVlX2ludCwgdl9tYXgubWF4X3ZlcnNpb25faWQKICBGUk9NIGR5bmFtaWNfZmllbGRfdmFsdWUgZGZ2CiAgSU5ORVIgSk9JTiBjb25maWdpdGVtX3ZlcnNpb24gdgogICAgT04gZGZ2Lm9iamVjdF9pZCA9IHYuaWQKICBJTk5FUiBKT0lOICgKICAgIFNFTEVDVCBjb25maWdpdGVtX2lkLCBNQVgoaWQpIEFTIG1heF92ZXJzaW9uX2lkCiAgICAgIEZST00gY29uZmlnaXRlbV92ZXJzaW9uCiAgICAgIEdST1VQIEJZIGNvbmZpZ2l0ZW1faWQKICApIEFTIHZfbWF4CiAgICBPTiB2X21heC5jb25maWdpdGVtX2lkID0gdi5jb25maWdpdGVtX2lkCiAgV0hFUkUgJFF1ZXJ5Q29uZGl0aW9ue1NRTH0KICBPUkRFUiBieSBkZnYuaWQKRU5EX1NRTAogICAgICAgICAgICBCaW5kID0+ICRRdWVyeUNvbmRpdGlvbntWYWx1ZXN9LAogICAgICAgICk7CiAgICB9CgogICAgIyBwcmVwYXJlIHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlcyBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIGEgYmF0Y2ggaW5zZXJ0CgogICAgIyBmb3IgdGhlIGxpbmsgdHlwZXMgd2UgbmVlZCB0byBkbyBzb21lIHdvcmsKICAgIG15ICRMaW5rT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKICAgIG15ICgKICAgICAgICBATGlua1R5cGVJRHMsCiAgICAgICAgQFNvdXJjZUNvbmZpZ0l0ZW1JRHMsCiAgICAgICAgQFNvdXJjZUNvbmZpZ0l0ZW1WZXJzaW9uSURzLAogICAgICAgIEBUYXJnZXRDb25maWdJdGVtSURzLAogICAgICAgIEBUYXJnZXRDb25maWdJdGVtVmVyc2lvbklEcywKICAgICAgICBARmllbGRJRHMsCiAgICApOwogICAgUk9XOgogICAgZm9yIG15ICRSb3cgKCAkUm93cy0+QCogKSB7CiAgICAgICAgbXkgKCAkRmllbGRJRCwgJENvbmZpZ0l0ZW1JRCwgJFZlcnNpb25JRCwgJFZhbHVlLCAkTWF4VmVyc2lvbklEICkgPSAkUm93LT5AKjsKCiAgICAgICAgbmV4dCBST1cgdW5sZXNzICRERkxvb2t1cEJ5SUR7JEZpZWxkSUR9OwoKICAgICAgICBteSAkREZEZXRhaWxzID0gJERGTG9va3VwQnlJRHskRmllbGRJRH0tPntDb25maWd9OwoKICAgICAgICBuZXh0IFJPVyB1bmxlc3MgJERGRGV0YWlsczsKCiAgICAgICAgTkVFREVEOgogICAgICAgIGZvciBteSAkTmVlZGVkIChxdyhMaW5rVHlwZSBMaW5rRGlyZWN0aW9uKSkgewogICAgICAgICAgICBuZXh0IE5FRURFRCBpZiAkREZEZXRhaWxzLT57JE5lZWRlZH07CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiBxcXtJbnZhbGlkIGR5bmFtaWMgZmllbGQgY29uZmlndXJhdGlvbi4gVGhlIHNldHRpbmcgJE5lZWRlZCBpcyBtaXNzaW5nIGZvciBmaWVsZCAkREZMb29rdXBCeUlEeyRGaWVsZElEfS0+e05hbWV9LH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFJPVzsKICAgICAgICB9CgogICAgICAgIG15ICRMaW5rVHlwZU5hbWUgPSAkREZEZXRhaWxzLT57TGlua1R5cGV9OwogICAgICAgIG15ICRMaW5rVHlwZUlEICAgPSAkTGlua09iamVjdC0+VHlwZUxvb2t1cCgKICAgICAgICAgICAgTmFtZSAgID0+ICRMaW5rVHlwZU5hbWUsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRMaW5rVHlwZUlEICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGxpbmsgdHlwZSAnJExpbmtUeXBlTmFtZScgaXMgbm90IHZhbGlkJy4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBST1c7CiAgICAgICAgfQoKICAgICAgICAjIHNvbWV0aW1lcyBvbmx5IHRoZSBzZXR0aW5nIG9mIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uIGlzIHJlbGV2YW50CiAgICAgICAgIyBUaGUgZGVmYXVsdCBpcyBEeW5hbWljLgogICAgICAgIG15ICRMaW5rSXNEeW5hbWljID0gMDsKICAgICAgICAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gLy89ICdEeW5hbWljJzsKICAgICAgICBpZiAoICRERkRldGFpbHMtPntMaW5rUmVmZXJlbmNpbmdUeXBlfSBlcSAnJyB8fCAkREZEZXRhaWxzLT57TGlua1JlZmVyZW5jaW5nVHlwZX0gZXEgJ0R5bmFtaWMnICkgewogICAgICAgICAgICBuZXh0IFJPVyB1bmxlc3MgJFZlcnNpb25JRCA9PSAkTWF4VmVyc2lvbklEOwoKICAgICAgICAgICAgJExpbmtJc0R5bmFtaWMgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBzb21lIHZhbHVlcyBhcmUgaW5kZXBlbmRlbnQgb2YgdGhlIGRpcmVjdGlvbgogICAgICAgIHB1c2ggQExpbmtUeXBlSURzLCAkTGlua1R5cGVJRDsKICAgICAgICBwdXNoIEBGaWVsZElEcywgICAgJEZpZWxkSUQ7CgogICAgICAgIG15ICRMaW5rRGlyZWN0aW9uID0gJERGRGV0YWlscy0+e0xpbmtEaXJlY3Rpb259OwogICAgICAgIGlmICggJExpbmtEaXJlY3Rpb24gZXEgJ1JlZmVyZW5jaW5nSXNTb3VyY2UnICkgewogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25maWdJdGVtSURzLCAgICAgICAgJExpbmtJc0R5bmFtaWMgICAgICAgICAgICAgID8gJENvbmZpZ0l0ZW1JRCA6IHVuZGVmOwogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25maWdJdGVtVmVyc2lvbklEcywgJExpbmtJc0R5bmFtaWMgICAgICAgICAgICAgID8gdW5kZWYgICAgICAgICA6ICRWZXJzaW9uSUQ7CiAgICAgICAgICAgIHB1c2ggQFRhcmdldENvbmZpZ0l0ZW1JRHMsICAgICAgICAkTGlua3NUb0NJeyRGaWVsZElEfSAgICAgICAgPyAkVmFsdWUgICAgICAgIDogdW5kZWY7CiAgICAgICAgICAgIHB1c2ggQFRhcmdldENvbmZpZ0l0ZW1WZXJzaW9uSURzLCAkTGlua3NUb0NJVmVyc2lvbnskRmllbGRJRH0gPyAkVmFsdWUgICAgICAgIDogdW5kZWY7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBhcyBhYm92ZSwgYnV0IGJhY2t3YXJkcwogICAgICAgICAgICBwdXNoIEBUYXJnZXRDb25maWdJdGVtSURzLCAgICAgICAgJExpbmtJc0R5bmFtaWMgICAgICAgICAgICAgID8gJENvbmZpZ0l0ZW1JRCA6IHVuZGVmOwogICAgICAgICAgICBwdXNoIEBUYXJnZXRDb25maWdJdGVtVmVyc2lvbklEcywgJExpbmtJc0R5bmFtaWMgICAgICAgICAgICAgID8gdW5kZWYgICAgICAgICA6ICRWZXJzaW9uSUQ7CiAgICAgICAgICAgIHB1c2ggQFNvdXJjZUNvbmZpZ0l0ZW1JRHMsICAgICAgICAkTGlua3NUb0NJeyRGaWVsZElEfSAgICAgICAgPyAkVmFsdWUgICAgICAgIDogdW5kZWY7CiAgICAgICAgICAgIHB1c2ggQFNvdXJjZUNvbmZpZ0l0ZW1WZXJzaW9uSURzLCAkTGlua3NUb0NJVmVyc2lvbnskRmllbGRJRH0gPyAkVmFsdWUgICAgICAgIDogdW5kZWY7CiAgICAgICAgfQogICAgfQoKICAgICMgTXVsdGl2YWx1ZSBJTlNFUlQKICAgIG15ICROdW1SZWZlcmVuY2VSb3dzID0gJERCT2JqZWN0LT5Eb0FycmF5KAogICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKSU5TRVJUIElOVE8gY29uZmlnaXRlbV9saW5rICgKICAgIGxpbmtfdHlwZV9pZCwKICAgIHNvdXJjZV9jb25maWdpdGVtX2lkLAogICAgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwKICAgIHRhcmdldF9jb25maWdpdGVtX2lkLAogICAgdGFyZ2V0X2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwKICAgIGR5bmFtaWNfZmllbGRfaWQsCiAgICBjcmVhdGVfdGltZSwKICAgIGNyZWF0ZV9ieQogICkKICBWQUxVRVMgKD8sID8sID8sID8sID8sID8sIENVUlJFTlRfVElNRVNUQU1QKCksIDEpCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXEBMaW5rVHlwZUlEcywKICAgICAgICAgICAgXEBTb3VyY2VDb25maWdJdGVtSURzLAogICAgICAgICAgICBcQFNvdXJjZUNvbmZpZ0l0ZW1WZXJzaW9uSURzLAogICAgICAgICAgICBcQFRhcmdldENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgIFxAVGFyZ2V0Q29uZmlnSXRlbVZlcnNpb25JRHMsCiAgICAgICAgICAgIFxARmllbGRJRHMsCiAgICAgICAgXSwKICAgICk7CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJyksCiAgICAgICAgQ29sb3IgICA9PiAncmVkJywKICAgIH0gdW5sZXNzIGRlZmluZWQgJE51bVJlZmVyZW5jZVJvd3M7CgogICAgIyBhZGQgcm93cyBmcm9tIExpbmtPYmplY3QsIHRoYXQgaXMgZnJvbSB0aGUgbGlua19yZWxhdGlvbiB0YWJsZQogICAgbXkgJE51bUxpbmtPYmplY3RSb3dzID0gMDsKICAgIHsKICAgICAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgICAgICMgZ2V0IGEgbGlzdCBvZiBwb3NzaWJsZSBsaW5rIHR5cGVzIGJldHdlZW4gY29uZmlnIGl0ZW1zIGZyb20gdGhlIFN5c0NvbmZpZwogICAgICAgIG15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgICAgICAgICAgT2JqZWN0MSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBPYmplY3QyID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgKTsKCiAgICAgICAgIyBmb3IgdGhlIGRhdGFiYXNlIFNFTEVDVCB3ZSBuZWVkIHRoZSBudW1lcmljIElEcwogICAgICAgIG15IEBQb3NzaWJsZUxpbmtUeXBlSURzID0KICAgICAgICAgICAgbWFwIHsgJExpbmtPYmplY3QtPlR5cGVMb29rdXAoIE5hbWUgPT4gJF8sIFVzZXJJRCA9PiAxICkgfQogICAgICAgICAgICBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiAgICAgICAgbXkgJVR5cGVRdWVyeUNvbmRpdGlvbiA9ICREQk9iamVjdC0+UXVlcnlJbkNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgPT4gJ3R5cGVfaWQnLAogICAgICAgICAgICBWYWx1ZXMgICA9PiBcQFBvc3NpYmxlTGlua1R5cGVJRHMsCiAgICAgICAgICAgIEJpbmRNb2RlID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBsaW1pdCB0byBsaW5rcyBiZXR3ZWVuIGNvbmZpZyBpdGVtcwogICAgICAgICMgQW4gSUQgaXMgY3JlYXRlZCB3aGVuIE9iamVjdExvb2t1cCgpIGlzIGNhbGxlZCB0aGUgZm9yIGZpcnN0IHRpbWUgd2l0aCB0aGF0IG5hbWUKICAgICAgICBteSAkQ0lPYmplY3RJRCA9ICRMaW5rT2JqZWN0LT5PYmplY3RMb29rdXAoCiAgICAgICAgICAgIE5hbWUgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICApOwoKICAgICAgICAjIHRlbXBvcmFyeSBsaW5rcyBhcmUgbm90IGNvbnNpZGVyZWQKICAgICAgICBteSAkVGVtcG9yYXJ5U3RhdGVJRCA9ICRMaW5rT2JqZWN0LT5TdGF0ZUxvb2t1cCgKICAgICAgICAgICAgTmFtZSA9PiAnVGVtcG9yYXJ5JywKICAgICAgICApOwoKICAgICAgICBteSAkU1FMID0gPDwiRU5EX1NRTCI7ClNFTEVDVCB0eXBlX2lkLCBzb3VyY2Vfa2V5LCB0YXJnZXRfa2V5CiAgRlJPTSBsaW5rX3JlbGF0aW9uCiAgV0hFUkUgc3RhdGVfaWQgPD4gPwogICAgQU5EIHNvdXJjZV9vYmplY3RfaWQgPSA/CiAgICBBTkQgdGFyZ2V0X29iamVjdF9pZCA9ID8KICAgIEFORCAkVHlwZVF1ZXJ5Q29uZGl0aW9ue1NRTH0KRU5EX1NRTAogICAgICAgIG15IEBCaW5kcyA9ICgKICAgICAgICAgICAgXCRUZW1wb3JhcnlTdGF0ZUlELAogICAgICAgICAgICBcJENJT2JqZWN0SUQsCiAgICAgICAgICAgIFwkQ0lPYmplY3RJRCwKICAgICAgICAgICAgJFR5cGVRdWVyeUNvbmRpdGlvbntWYWx1ZXN9LT5AKgogICAgICAgICk7CgogICAgICAgIHJldHVybiB1bmxlc3MgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgID0+ICRTUUwsCiAgICAgICAgICAgIEJpbmQgPT4gXEBCaW5kcywKICAgICAgICApOwoKICAgICAgICBteSAoIEBMaW5rVHlwZUlEcywgQFNvdXJjZUNvbmZpZ0l0ZW1JRHMsIEBUYXJnZXRDb25maWdJdGVtSURzICk7CiAgICAgICAgd2hpbGUgKCBteSAoICRMaW5rVHlwZUlELCAkU291cmNlQ29uZmlnSXRlbUlELCAkVGFyZ2V0Q29uZmlnSXRlbUlEICkgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgICAgIHB1c2ggQExpbmtUeXBlSURzLCAgICAgICAgICRMaW5rVHlwZUlEOwogICAgICAgICAgICBwdXNoIEBTb3VyY2VDb25maWdJdGVtSURzLCAkU291cmNlQ29uZmlnSXRlbUlEOwogICAgICAgICAgICBwdXNoIEBUYXJnZXRDb25maWdJdGVtSURzLCAkVGFyZ2V0Q29uZmlnSXRlbUlEOwogICAgICAgIH0KCiAgICAgICAgIyBNdWx0aXZhbHVlIElOU0VSVAogICAgICAgICROdW1MaW5rT2JqZWN0Um93cyA9ICREQk9iamVjdC0+RG9BcnJheSgKICAgICAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApJTlNFUlQgSU5UTyBjb25maWdpdGVtX2xpbmsgKAogICAgbGlua190eXBlX2lkLCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1faWQsCiAgICBjcmVhdGVfdGltZSwgY3JlYXRlX2J5CiAgKQogIFZBTFVFUyAoCiAgICA/LCA/LCA/LAogICAgQ1VSUkVOVF9USU1FU1RBTVAoKSwgMQogICkKRU5EX1NRTAogICAgICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgICAgIFxATGlua1R5cGVJRHMsCiAgICAgICAgICAgICAgICBcQFNvdXJjZUNvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgICAgICBcQFRhcmdldENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkTnVtUm93cyA9ICROdW1SZWZlcmVuY2VSb3dzICsgJE51bUxpbmtPYmplY3RSb3dzOwoKICAgICMgd2FybiB3aGVuIHRoZXJlIGFyZSBubyBsaW5rcwogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnKSwKICAgICAgICBDb2xvciAgID0+ICd5ZWxsb3cnLAogICAgfSBpZiAkTnVtUm93cyA9PSAwOwoKICAgICMgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGxpbmssIGxvb2tzIGdvb2QKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdEb25lJyksCiAgICAgICAgQ29sb3IgICA9PiAnZ3JlZW4nLAogICAgfTsKfQoKc3ViIF9UcmlnZ2VyQ3VySW5jaVN0YXRlUmVjYWxjIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0lUU006OkNvcmU6OkluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24nKTsKCiAgICByZXR1cm4gMSBpZiAhJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24tPiUqOwoKICAgICMgdGhlIGNhY2hlIGZvciBEeW5hbWljRmllbGRzID0+IDAgaXMgYWxyZWFkeSBlbXB0aWVkIGJlZm9yZSBERnMgYXJlIHdyaXR0ZW4KICAgIG15ICRSZWZlcmVuY2luZ0NJID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICApOwoKICAgICMgdG8gbm90IGFsd2F5cyByZWNhbGN1bGF0ZSB0aGUgY29tcGxldGUKICAgIG15IEBDSXNUb1JlY2FsYzsKCiAgICAjIGlmIHRoZSByZWZlcmVuY2luZyBDSSBkb2VzIG5vdCBoYXZlIGEgbWF0Y2hpbmcgQ3VySW5jaSBhbmQgSW5jaSBzdGF0ZSwganVzdCByZWNhbGN1bGF0ZSBldmVyeXRoaW5nCiAgICBpZiAoICRSZWZlcmVuY2luZ0NJLT57Q3VySW5jaVN0YXRlSUR9IG5lICRSZWZlcmVuY2luZ0NJLT57SW5jaVN0YXRlSUR9ICkgewogICAgICAgIEBDSXNUb1JlY2FsYyA9ICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKTsKCiAgICAgICAgcHVzaCBAQ0lzVG9SZWNhbGMsICRQYXJhbXtVbmxpbmtlZH0tPkAqOwogICAgfQoKICAgIGVsc2UgewogICAgICAgIExJTktFRDoKICAgICAgICBmb3IgbXkgJElEICggJFBhcmFte0xpbmtlZH0tPkAqICkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkSUQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG9ubHkgaW5pdGlhdGUgdGhlIHdob2xlIHJlY2FsY3VsYXRpb24gaWYgdGhlcmUgaXMgYW55IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgQ3VySW5jaVN0YXRlcwogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlSUR9IG5lICRSZWZlcmVuY2luZ0NJLT57Q3VySW5jaVN0YXRlSUR9ICkgewogICAgICAgICAgICAgICAgQENJc1RvUmVjYWxjID0gKCAkUGFyYW17Q29uZmlnSXRlbUlEfSApOwoKICAgICAgICAgICAgICAgIGxhc3QgTElOS0VEOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJElEICggJFBhcmFte1VubGlua2VkfS0+QCogKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRJRCwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZm9yIHVubGlua2VkIENJcyB3ZSBhbHdheXMgaGF2ZSB0byBhZGQgYm90aCBzaWRlcwogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlSUR9IG5lICRSZWZlcmVuY2luZ0NJLT57Q3VySW5jaVN0YXRlSUR9ICkgewogICAgICAgICAgICAgICAgJENJc1RvUmVjYWxjWzBdID0gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICBwdXNoIEBDSXNUb1JlY2FsYywgJElEOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxIGlmICFAQ0lzVG9SZWNhbGM7CgogICAgcmV0dXJuICRTZWxmLT5DdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiBcQENJc1RvUmVjYWxjLAogICAgKTsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Mask.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TWFzazsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsIHF3KGZpcnN0KTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6WUFNTCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok1hc2sgLSBmdW5jdGlvbnMgdG8gcHJlcGFyZSBhbmQgYWRtaW5pc3RyYXRlIGNvbmZpZyBpdGVtIG1hc2tzCgo9aGVhZDEgREVTQ1JJUFRJT04KCmZ1bmN0aW9ucyB0byBwcmVwYXJlIGFuZCBhZG1pbmlzdHJhdGUgY29uZmlnIGl0ZW0gbWFza3MKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCkRvbid0IHVzZSB0aGUgY29uc3RydWN0b3IgZGlyZWN0bHksIHVzZSB0aGUgT2JqZWN0TWFuYWdlciBpbnN0ZWFkOgoKICAgIG15ICRNYXNrT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpNYXNrJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIERlZmluaXRpb25TZXQoKQoKU2V0IHRoZSBkZWZpbml0aW9uIGZvciBhIGNvbmZpZyBpdGVtIG1hc2sKCiAgICBteSAkU3VjY2VzcyA9ICRNYXNrT2JqZWN0LT5EZWZpbml0aW9uU2V0KAogICAgICAgIERlZmluaXRpb24gICAgICAgPT4gXEBEZWZpbml0aW9uLAogICAgICAgIERlZmluaXRpb25TdHJpbmcgPT4gJFlBTUxTdHJpbmcsICAjIGVpdGhlciBEZWZpbml0aW9uIG9yIERlZmluaXRpb25TdHJpbmcgaXMgbmVlZGVkCiAgICAgICAgTWFzayAgICAgICAgICAgICA9PiAkTWFzaywKICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRVc2VySUQsCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25TZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcvVXNlcklEIE1hc2svKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkUGFyYW17RGVmaW5pdGlvblN0cmluZ30gKSB7CgogICAgICAgICMgVmFsaWRhdGUgWUFNTCBjb2RlIGJ5IGNvbnZlcnRpbmcgaXQgdG8gUGVybC4KICAgICAgICBteSAkRGVmaW5pdGlvblJlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJFBhcmFte0RlZmluaXRpb25TdHJpbmd9LAogICAgICAgICk7CgogICAgICAgIGlmICggcmVmICREZWZpbml0aW9uUmVmIG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIGFuZCBhcnJheSBpbiB2YWxpZCBZQU1MIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtEZWZpbml0aW9ufSApIHsKICAgICAgICAkUGFyYW17RGVmaW5pdGlvblN0cmluZ30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5EdW1wKAogICAgICAgICAgICBEYXRhID0+ICRQYXJhbXtEZWZpbml0aW9ufSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkUGFyYW17RGVmaW5pdGlvblN0cmluZ30gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdDb3VsZCBub3QgZ2VuZXJhdGUgWUFNTCBmcm9tIHByb3ZpZGVkIERlZmluaXRpb24hJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBEZWZpbml0aW9uIG9yIERlZmluaXRpb25TdHJpbmchJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAkU2VsZi0+RGVmaW5pdGlvbkRlbGV0ZSgKICAgICAgICBNYXNrICAgICAgPT4gJFBhcmFte01hc2t9LAogICAgICAgIEtlZXBDYWNoZSA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdJTlNFUlQgSU5UTyBmcm9udGVuZF9tYXNrX2RlZmluaXRpb24gKCBtYXNrLCBkZWZpbml0aW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5ICkgVkFMVUVTICggPywgPywgY3VycmVudF90aW1lc3RhbXAsID8gKScsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TWFza30sIFwkUGFyYW17RGVmaW5pdGlvblN0cmluZ30sIFwkUGFyYW17VXNlcklEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIERlZmluaXRpb25HZXQoKQoKR2V0IHRoZSBkZWZpbml0aW9uIGZvciBhIGNvbmZpZyBpdGVtIG1hc2sKCiAgICBteSAkRGVmaW5pdGlvbiA9ICRNYXNrT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgIE1hc2sgICA9PiAkTWFzaywKICAgICAgICBSZXR1cm4gPT4gJ0FSUkFZJywgIyBPcHRpb25hbCBlaXRoZXIgQVJSQVkgKGRlZmF1bHQpIG9yIFNUUklORyB3aGljaCByZXR1cm5zIHRoZSBZQU1MCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcvTWFzay8pIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAkUGFyYW17UmV0dXJufSB8fD0gJ0FSUkFZJzsKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJ1NFTEVDVCBkZWZpbml0aW9uIEZST00gZnJvbnRlbmRfbWFza19kZWZpbml0aW9uIFdIRVJFIG1hc2sgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17TWFza30gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAoJERlZmluaXRpb25TdHJpbmcpID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCk7CgogICAgcmV0dXJuIGlmICEkRGVmaW5pdGlvblN0cmluZzsKCiAgICByZXR1cm4gJERlZmluaXRpb25TdHJpbmcgaWYgJFBhcmFte1JldHVybn0gZXEgJ1NUUklORyc7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkRGVmaW5pdGlvblN0cmluZywKICAgICk7Cn0KCj1oZWFkMiBEZWZpbml0aW9uRGVsZXRlKCkKCkRlbGV0ZSB0aGUgZGVmaW5pdGlvbiBmb3IgYSBjb25maWcgaXRlbSBtYXNrCgogICAgbXkgJFN1Y2Nlc3MgPSAkTWFza09iamVjdC0+RGVmaW5pdGlvbkRlbGV0ZSgKICAgICAgICBNYXNrID0+ICRNYXNrLAogICAgKTsKCj1jdXQKCnN1YiBEZWZpbml0aW9uRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3L01hc2svKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBmcm9udGVuZF9tYXNrX2RlZmluaXRpb24gV0hFUkUgbWFzayA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte01hc2t9IF0sCiAgICApOwp9Cgo9aGVhZDIgQ29uZmlndXJlZE1hc2tzTGlzdCgpCgpHZXQgYWxsIGNvbmZpZ3VyZWQgbWFza3MKCiAgICBteSBATWFza3MgPSAkTWFza09iamVjdC0+Q29uZmlndXJlZE1hc2tzTGlzdCgpOwoKPWN1dAoKc3ViIENvbmZpZ3VyZWRNYXNrc0xpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgbWFzayBGUk9NIGZyb250ZW5kX21hc2tfZGVmaW5pdGlvbicsCiAgICApOwoKICAgIG15IEBNYXNrczsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQE1hc2tzLCAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBATWFza3M7Cn0KCj1oZWFkMiBSZW5kZXJJbnB1dCgpCgpSZW5kZXIgaW5wdXQgZmllbGRzIGFjY29yZGluZyB0byBtYXNrIGRlZmluaXRpb24KCiAgICAkTWFza09iamVjdC0+UmVuZGVySW5wdXQoCiAgICAgICAgR2V0UGFyYW0gICAgICAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgTWFza0RlZmluaXRpb24gICAgICAgID0+ICRNYXNrRGVmaW5pdGlvbiwKICAgICAgICBEeW5hbWljRmllbGRDb25maWdzICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZ3MsCiAgICAgICAgQ29uZmlnICAgICAgICAgICAgICAgID0+ICRDb25maWcsCiAgICAgICAgU2VwYXJhdGVEeW5hbWljRmllbGRzID0+ICRTZXBhcmF0ZUR5bmFtaWNGaWVsZHMsCiAgICApOwoKPWN1dAoKc3ViIFJlbmRlcklucHV0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3L0dldFBhcmFtIExheW91dE9iamVjdCBNYXNrRGVmaW5pdGlvbi8pIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnc30gKTsKCiAgICBteSAlR2V0UGFyYW0gPSAleyAkUGFyYW17R2V0UGFyYW19IH07CgogICAgbXkgJUR5bmFtaWNGaWVsZENvbmZpZ3NIYXNoID0gbWFwIHsgJF8tPntOYW1lfSA9PiAkXyB9IEB7ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWdzfSB9OwoKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte01hc2tEZWZpbml0aW9ufSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCBtYXNrIGRlZmluaXRpb24hIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZvciBteSAkQXJlYURlZmluaXRpb24gKCBAeyAkUGFyYW17TWFza0RlZmluaXRpb259IH0gKSB7CiAgICAgICAgbXkgJUFyZWEgPSAoIFJvd3MgPT4gW10gKTsKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkQXJlYURlZmluaXRpb24tPntHcmlkfSApICkgewogICAgICAgICAgICAlQXJlYSA9ICRBcmVhRGVmaW5pdGlvbi0+e0dyaWR9LT4lKjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRBcmVhRGVmaW5pdGlvbi0+e0xpc3R9ICkgKSB7CiAgICAgICAgICAgICRBcmVhe1Jvd3N9ICAgID0gWyBtYXAgeyBbJF9dIH0gJEFyZWFEZWZpbml0aW9uLT57TGlzdH0tPkAqIF07CiAgICAgICAgICAgICRBcmVhe0NvbHVtbnN9ID0gMTsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkUm93ICggQHsgJEFyZWF7Um93c30gfSApIHsKCiAgICAgICAgICAgIG15ICRSb3dDbGFzc1N0cmluZyA9ICcnOwogICAgICAgICAgICBteSAkUm93UmVhZE9ubHkgICAgPSAoIGZpcnN0IHsgJF8tPntSZWFkT25seX0gfSAkUm93LT5AKiApID8gMSA6IDA7CgogICAgICAgICAgICAjIGhpZGUgY29tcGxldGUgcm93IGlmIG5vIGZpZWxkIGlzIHZpc2libGUKICAgICAgICAgICAgaWYgKCAkUGFyYW17VmlzaWJpbGl0eX0gJiYgIWdyZXAgeyAkUGFyYW17VmlzaWJpbGl0eX17IkR5bmFtaWNGaWVsZF8kXy0+e05hbWV9In0gfSBAeyRSb3d9ICkgewogICAgICAgICAgICAgICAgJFJvd0NsYXNzU3RyaW5nIC49ICcgb29vQUNMSGlkZGVuJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzcGVjaWFsIHRyZWF0bWVudCBmb3Igc2VwYXJhdGUgZHluYW1pYyBmaWVsZHMgYmFzZWQgb24gZmlyc3QgZmllbGQKICAgICAgICAgICAgbXkgJFJvd0Jsb2NrTmFtZSA9ICRQYXJhbXtTZXBhcmF0ZUR5bmFtaWNGaWVsZHN9ICYmICRQYXJhbXtTZXBhcmF0ZUR5bmFtaWNGaWVsZHN9LT57ICRSb3ctPlswXXtOYW1lfSB9CiAgICAgICAgICAgICAgICA/ICdSb3dfRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17U2VwYXJhdGVEeW5hbWljRmllbGRzfS0+eyAkUm93LT5bMF17TmFtZX0gfSA6ICdSb3dfRHluYW1pY0ZpZWxkJzsKCiAgICAgICAgICAgICMgQ29sdW1uIHNpemUgc3RyaW5nIGlzIHNwbGl0IGluIHBhcnRzLiBVc2VkIGFyZSBhcyBtYW55IHBhcnRzIGFzIGNvbHVtbnMgYXJlIGRlZmluZWQKICAgICAgICAgICAgIyBQYXJ0cyBhcmUgY2hlY2tlZCBhZ2FpbnN0IGEgcmVnZXgKICAgICAgICAgICAgbXkgJENvbHVtblNpemVTdHJpbmcgPSAnJzsKICAgICAgICAgICAgaWYgKCAkQXJlYXtDb2x1bW5TaXplfSApIHsKICAgICAgICAgICAgICAgIG15IEBDb2x1bW5TaXplcyA9IHNwbGl0KCAnICcsICRBcmVhe0NvbHVtblNpemV9ICk7CiAgICAgICAgICAgICAgICBteSAkQ29sdW1uSW5kZXggPSAwOwogICAgICAgICAgICAgICAgQ09MVU1OU0laRToKICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uU2l6ZSAoQENvbHVtblNpemVzKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU5TSVpFIGlmICRDb2x1bW5TaXplICF+IC9eKChcZChcLlxkKT9mclxzPyl8KFxkK3B4XHM/KXxhdXRvXHM/KSskLzsKICAgICAgICAgICAgICAgICAgICBsYXN0IENPTFVNTlNJWkUgaWYgJENvbHVtbkluZGV4ID09ICggJEFyZWF7Q29sdW1uc30gfHwgMSApOwogICAgICAgICAgICAgICAgICAgICRDb2x1bW5TaXplU3RyaW5nIC49ICRDb2x1bW5TaXplIC4gJyAnOwogICAgICAgICAgICAgICAgICAgICRDb2x1bW5JbmRleCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgd2hpbGUgKCBzY2FsYXIgc3BsaXQoICcgJywgJENvbHVtblNpemVTdHJpbmcgKSA8ICRBcmVhe0NvbHVtbnN9ICkgewogICAgICAgICAgICAgICAgICAgICRDb2x1bW5TaXplU3RyaW5nIC49ICcgMWZyJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkQ29sdW1uU2l6ZVN0cmluZyB8fD0gIjFmciAiIHggJEFyZWF7Q29sdW1uc307CgogICAgICAgICAgICAkUm93Q2xhc3NTdHJpbmcgLj0gJEFyZWF7Q29sdW1uc30gPiAxID8gJyBNdWx0aUNvbHVtbicgOiAnJzsKICAgICAgICAgICAgbXkgJE11bHRpVmFsdWVGaWVsZCA9ICcnOwogICAgICAgICAgICBFTEVNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEZpZWxkSXRlbSAoICRSb3ctPkAqICkgewogICAgICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnc0hhc2h7ICRGaWVsZEl0ZW0tPntOYW1lfSB9LT57Q29uZmlnfXtNdWx0aVZhbHVlfSApIHsKICAgICAgICAgICAgICAgICAgICAkUm93Q2xhc3NTdHJpbmcgLj0gJyBNdWx0aVZhbHVlJzsKICAgICAgICAgICAgICAgICAgICAkTXVsdGlWYWx1ZUZpZWxkID0gJEZpZWxkSXRlbS0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgIGxhc3QgRUxFTUVOVDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkUm93QmxvY2tOYW1lLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVDb2x1bW5zID0+ICRDb2x1bW5TaXplU3RyaW5nLAogICAgICAgICAgICAgICAgICAgIFJvd0NsYXNzZXMgICAgICA9PiAkUm93Q2xhc3NTdHJpbmcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgQFRlbXBsYXRlRGF0YUxpc3Q7CgogICAgICAgICAgICAjIER5bmFtaWNGaWVsZEhUTUwgaXMgYXNzdW1lZCB0byBiZSBhIGhhc2ggd2l0aCBzZXBhcmF0ZSBodG1sIGZvciBlYWNoIHZhbHVlCiAgICAgICAgICAgIG15IEBIVE1MQ291bnRLZXlzID0ga2V5cyAkR2V0UGFyYW17RHluYW1pY0ZpZWxkSFRNTH0tPnskTXVsdGlWYWx1ZUZpZWxkfXtIVE1MfS0+JSo7CiAgICAgICAgICAgIG15ICRNYXhWYWx1ZUNvdW50ID0gQEhUTUxDb3VudEtleXMgPyAkI0hUTUxDb3VudEtleXMgOiAwOwogICAgICAgICAgICBmb3IgKCBteSAkUm93SW5kZXggPSAwOyAkUm93SW5kZXggPD0gJE1heFZhbHVlQ291bnQ7ICRSb3dJbmRleCsrICkgewogICAgICAgICAgICAgICAgbXkgJEdyaWRFbGVtZW50U3RhcnQgPSAxOwogICAgICAgICAgICAgICAgRUxFTUVOVDoKICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoIHNvcnQgeyAoICRhLT57U3RhcnR9IHx8IDEgKSA8PT4gKCAkYi0+e1N0YXJ0fSB8fCAxICkgfSBAeyRSb3d9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICREeW5hbWljRmllbGRDb25maWdzSGFzaHsgJEVsZW1lbnQtPntOYW1lfSB9ICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJEdldFBhcmFte0R5bmFtaWNGaWVsZEhUTUx9LT57ICRFbGVtZW50LT57TmFtZX0gfSApOwoKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICAgPSAkRHluYW1pY0ZpZWxkQ29uZmlnc0hhc2h7ICRFbGVtZW50LT57TmFtZX0gfTsKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkSFRNTERhdGEgPSAkR2V0UGFyYW17RHluYW1pY0ZpZWxkSFRNTH0tPnsgJEVsZW1lbnQtPntOYW1lfSB9OwogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRIVE1MICAgICA9ICREeW5hbWljRmllbGRIVE1MRGF0YS0+e0hUTUx9eyRSb3dJbmRleH07CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJER5bmFtaWNGaWVsZEhUTUwgJiYgISRSb3dJbmRleCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUwgPSAkRHluYW1pY0ZpZWxkSFRNTERhdGEtPntGaWVsZH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVCBpZiAhJER5bmFtaWNGaWVsZEhUTUw7CgogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5DbGFzc1N0cmluZyA9ICcnOwoKICAgICAgICAgICAgICAgICAgICAjIGhpZGUgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17VmlzaWJpbGl0eX0gJiYgISRQYXJhbXtWaXNpYmlsaXR5fXsiRHluYW1pY0ZpZWxkXyRFbGVtZW50LT57TmFtZX0ifSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENvbHVtbkNsYXNzU3RyaW5nIC49ICcgb29vQUNMSGlkZGVuJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY29sdW1uIHBsYWNlbWVudAogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5TdHlsZSA9ICdncmlkLWNvbHVtbjogJzsKICAgICAgICAgICAgICAgICAgICAkR3JpZEVsZW1lbnRTdGFydCA9ICggJEVsZW1lbnQtPntTdGFydH0gJiYgJEVsZW1lbnQtPntTdGFydH0gPiAkR3JpZEVsZW1lbnRTdGFydCApID8gJEVsZW1lbnQtPntTdGFydH0gOiAkR3JpZEVsZW1lbnRTdGFydDsKCiAgICAgICAgICAgICAgICAgICAgIyBzYXZpbmcgZWxlbWVudCBzdGFydCBmb3IgY29ycmVjdCBwbGFjaW5nIG9mIHJvd3Mgd2l0aCBtaXhlZCBmaWVsZHMgKG11bHRpdmFsdWUgYW5kIG5vbi1tdWx0aXZhbHVlKQogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LT57U3RhcnR9ID0gJEdyaWRFbGVtZW50U3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgJENvbHVtblN0eWxlIC49ICRHcmlkRWxlbWVudFN0YXJ0IC4gJyAvICc7CiAgICAgICAgICAgICAgICAgICAgJEdyaWRFbGVtZW50U3RhcnQrKzsKICAgICAgICAgICAgICAgICAgICAkQ29sdW1uU3R5bGUgLj0gJEVsZW1lbnQtPntTcGFufSA/ICdzcGFuICcgLiAkRWxlbWVudC0+e1NwYW59IDogJ3NwYW4gMSc7CgogICAgICAgICAgICAgICAgICAgICMgc3BlY2lhbCB0cmVhdG1lbnQgZm9yIHNlcGFyYXRlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbEJsb2NrTmFtZSA9ICRQYXJhbXtTZXBhcmF0ZUR5bmFtaWNGaWVsZHN9ICYmICRQYXJhbXtTZXBhcmF0ZUR5bmFtaWNGaWVsZHN9LT57ICRFbGVtZW50LT57TmFtZX0gfQogICAgICAgICAgICAgICAgICAgICAgICA/ICdEeW5hbWljRmllbGRfJyAuICRFbGVtZW50LT57TmFtZX0gOiAnRHluYW1pY0ZpZWxkJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSAmJiAkUm93SW5kZXggPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFRlbXBsYXRlQ29uZmlnID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+JSosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICggJFBhcmFte0lEU3VmZml4fSA/ICRQYXJhbXtJRFN1ZmZpeH0gOiAnJyApIC4gJ19UZW1wbGF0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRGaWVsZFRlbXBsYXRlSFRNTCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RWRpdEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRUZW1wbGF0ZUNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyksICAgICMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBhcmFtT2JqZWN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQUpBWFVwZGF0ZSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGRhdGFibGVGaWVsZHMgICAgPT4gJFBhcmFte0FKQVhVcGRhdGFibGVGaWVsZHN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJJbnRlcmZhY2UgID0+ICRQYXJhbXtDdXN0b21lckludGVyZmFjZX0gfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRPbmx5ICAgICAgICAgICA9PiAkRWxlbWVudC0+e1JlYWRPbmx5fSAgICAgIHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFRlbXBsYXRlRGF0YUxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGQgICAgICAgPT4gKCAkRmllbGRUZW1wbGF0ZUhUTUwtPntIVE1MfXsnMCd9IHx8ICRGaWVsZFRlbXBsYXRlSFRNTC0+e0ZpZWxkfSApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0eWxlID0+ICRDb2x1bW5TdHlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRDb2x1bW5DbGFzc1N0cmluZyAuPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSA/ICcgTXVsdGlWYWx1ZV8nIC4gJFJvd0luZGV4IDogJyc7CiAgICAgICAgICAgICAgICAgICAgbXkgJENlbGxCbG9ja0RhdGEgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdHlsZSAgID0+ICRDb2x1bW5TdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgRmllbGQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkSFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgVG9vbHRpcCAgICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUb29sdGlwfSwKICAgICAgICAgICAgICAgICAgICAgICAgTXVsdGlWYWx1ZSAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93UmVhZE9ubHkgICA9PiAkUm93UmVhZE9ubHksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkNsYXNzZXMgPT4gJENvbHVtbkNsYXNzU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICBJbmRleCAgICAgICAgID0+ICRSb3dJbmRleCwKICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRSb3dJbmRleCA9PSAwICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2VsbEJsb2NrRGF0YS0+e0xhYmVsfSA9ICREeW5hbWljRmllbGRIVE1MRGF0YS0+e0xhYmVsfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkQ29sQmxvY2tOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICRDZWxsQmxvY2tEYXRhLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQWRkIHRlbXBsYXRlcyBmb3IgZHluYW1pY2ZpZWxkcyBhdCBlbmQgb2Ygcm93CiAgICAgICAgICAgIGZvciBteSAkVGVtcGxhdGVEYXRhIChAVGVtcGxhdGVEYXRhTGlzdCkgewogICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZE11bHRpVmFsdWVUZW1wbGF0ZScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkVGVtcGxhdGVEYXRhLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Number.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGNvbmZpZyBpdGVtIG51bWJlciBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIENvbmZpZ0l0ZW1OdW1iZXJMb29rdXAoKQoKcmV0dXJuIGNvbmZpZyBpdGVtIGlkIG9yIGNvbmZpZyBpdGVtIG51bWJlcgoKICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJMb29rdXAoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7CgogICAgb3IKCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJMb29rdXAoCiAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAnMTIzNDU0MzIxJywKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbU51bWJlckxvb2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17Q29uZmlnSXRlbUlEfSAmJiAhJFBhcmFte0NvbmZpZ0l0ZW1OdW1iZXJ9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb25maWdJdGVtSUQgb3IgQ29uZmlnSXRlbU51bWJlciEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGlzIGFscmVhZHkgY2FjaGVkCiAgICAgICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57Q29uZmlnSXRlbU51bWJlckxvb2t1cH0tPntJRH0tPnsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfQogICAgICAgICAgICBpZiAkU2VsZi0+e0NhY2hlfS0+e0NvbmZpZ0l0ZW1OdW1iZXJMb29rdXB9LT57SUR9LT57ICRQYXJhbXtDb25maWdJdGVtSUR9IH07CgogICAgICAgICMgYXNrIGRhdGFiYXNlCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgY29uZmlnaXRlbV9udW1iZXIgRlJPTSBjb25maWdpdGVtIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXI7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkUm93WzBdOwogICAgICAgIH0KCiAgICAgICAgIyBjYWNoZSB0aGUgcmVzdWx0CiAgICAgICAgJFNlbGYtPntDYWNoZX0tPntDb25maWdJdGVtTnVtYmVyTG9va3VwfS0+e0lEfS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9ID0gJENvbmZpZ0l0ZW1OdW1iZXI7CgogICAgICAgIHJldHVybiAkQ29uZmlnSXRlbU51bWJlcjsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHJlc3VsdCBpcyBhbHJlYWR5IGNhY2hlZAogICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57Q29uZmlnSXRlbU51bWJlckxvb2t1cH0tPntOdW1iZXJ9LT57ICRQYXJhbXtDb25maWdJdGVtTnVtYmVyfSB9CiAgICAgICAgaWYgJFNlbGYtPntDYWNoZX0tPntDb25maWdJdGVtTnVtYmVyTG9va3VwfS0+e051bWJlcn0tPnsgJFBhcmFte0NvbmZpZ0l0ZW1OdW1iZXJ9IH07CgogICAgIyBhc2sgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtIFdIRVJFIGNvbmZpZ2l0ZW1fbnVtYmVyID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NvbmZpZ0l0ZW1OdW1iZXJ9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkQ29uZmlnSXRlbUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEID0gJFJvd1swXTsKICAgIH0KCiAgICAjIGNhY2hlIHRoZSByZXN1bHQKICAgICRTZWxmLT57Q2FjaGV9LT57Q29uZmlnSXRlbU51bWJlckxvb2t1cH0tPntOdW1iZXJ9LT57ICRQYXJhbXtDb25maWdJdGVtTnVtYmVyfSB9ID0gJENvbmZpZ0l0ZW1JRDsKCiAgICByZXR1cm4gJENvbmZpZ0l0ZW1JRDsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoKQoKY3JlYXRlIGEgbmV3IGNvbmZpZyBpdGVtIG51bWJlcgoKICAgIG15ICROdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICBUeXBlICAgID0+ICdBdXRvSW5jcmVtZW50JywKICAgICAgICBDbGFzc0lEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbU51bWJlckNyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhUeXBlIENsYXNzSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9hZCBiYWNrZW5kCiAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAkUGFyYW17VHlwZX0gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgY29uZmlnIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBiYWNrZW5kIG1vZHVsZSAkUGFyYW17VHlwZX0hICRAIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlQmFzZUNsYXNzKCAkUGFyYW17VHlwZX0gKTsKCiAgICAjIGNyZWF0ZSBudW1iZXIKICAgIG15ICROdW1iZXIgPSAkU2VsZi0+X0NvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoJVBhcmFtKTsKCiAgICByZXR1cm4gJE51bWJlcjsKfQoKPWhlYWQyIEN1cnJlbnRDb3VudGVyR2V0KCkKCnJldHVybiB0aGUgY3VycmVudCBjb3VudGVyIG9mIGEgY2xhc3MKCiAgICBteSAkQ291bnRlciA9ICRDb25maWdJdGVtT2JqZWN0LT5DdXJyZW50Q291bnRlckdldCgKICAgICAgICBDbGFzc0lEID0+IDEyMywKICAgICAgICBUeXBlICAgID0+ICdBdXRvSW5jcmVtZW50JywKICAgICk7Cgo9Y3V0CgpzdWIgQ3VycmVudENvdW50ZXJHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2xhc3NJRCBUeXBlKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFzayB0aGUgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGNvdW50ZXIgRlJPTSBjb25maWdpdGVtX2NvdW50ZXIgV0hFUkUgJwogICAgICAgICAgICAuICdjbGFzc19pZCA9ID8gQU5EIGNvdW50ZXJfdHlwZSA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDbGFzc0lEfSwgXCRQYXJhbXtUeXBlfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJE51bWJlcjsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJE51bWJlciA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICROdW1iZXI7Cn0KCj1oZWFkMiBDdXJyZW50Q291bnRlclNldCgpCgpzZXQgdGhlIGN1cnJlbnQgY291bnRlciBvZiBhIGNsYXNzCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q3VycmVudENvdW50ZXJTZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAxMjMsCiAgICAgICAgVHlwZSAgICA9PiAnQXV0b0luY3JlbWVudCcsCiAgICAgICAgQ291bnRlciA9PiAnMTInLAogICAgKTsKCj1jdXQKCnN1YiBDdXJyZW50Q291bnRlclNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDbGFzc0lEIFR5cGUgQ291bnRlcikpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgb2xkIGNvdW50ZXIKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtX2NvdW50ZXIgV0hFUkUgY2xhc3NfaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDbGFzc0lEfSBdLAogICAgKTsKCiAgICAjIHNldCBuZXcgY291bnRlcgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gY29uZmlnaXRlbV9jb3VudGVyICcKICAgICAgICAgICAgLiAnKGNsYXNzX2lkLCBjb3VudGVyX3R5cGUsIGNvdW50ZXIpIFZBTFVFUyAoPywgPywgPyknLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NsYXNzSUR9LCBcJFBhcmFte1R5cGV9LCBcJFBhcmFte0NvdW50ZXJ9IF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/Number/AutoIncrement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50IC0gY29uZmlnIGl0ZW0gbnVtYmVyIGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBhdXRvIGluY3JlbWVudCBjb25maWcgaXRlbSBudW1iZXIgZnVuY3Rpb25zCgo9aGVhZDIgX0NvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoKQoKY3JlYXRlIGEgbmV3IGNvbmZpZyBpdGVtIG51bWJlcgoKICAgIG15ICROdW1iZXIgPSAkQmFja2VuZE9iamVjdC0+X0NvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgQ2xhc3NJRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIF9Db25maWdJdGVtTnVtYmVyQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDbGFzc0lEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ2xhc3NJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IHN5c3RlbSBpZAogICAgbXkgJFN5c3RlbUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTeXN0ZW1JRCcpOwoKICAgICMgZ2V0IGN1cnJlbnQgY291bnRlcgogICAgbXkgJEN1cnJlbnRDb3VudGVyID0gJFNlbGYtPkN1cnJlbnRDb3VudGVyR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgIFR5cGUgICAgPT4gJ0F1dG9JbmNyZW1lbnQnLAogICAgKSB8fCAwOwoKICAgIENJUEhFUjoKICAgIGZvciBteSAkQ2lwaGVyICggMSAuLiAxXzAwMF8wMDBfMDAwICkgewoKICAgICAgICAjIGNyZWF0ZSBuZXcgbnVtYmVyCiAgICAgICAgbXkgJE51bWJlciA9ICRTeXN0ZW1JRCAuICRQYXJhbXtDbGFzc0lEfSAuIHNwcmludGYoICIlMDZkIiwgKCAkQ3VycmVudENvdW50ZXIgKyAkQ2lwaGVyICkgKTsKCiAgICAgICAgIyBmaW5kIGV4aXN0aW5nIG51bWJlcgogICAgICAgIG15ICREdXBsaWNhdGUgPSAkU2VsZi0+Q29uZmlnSXRlbU51bWJlckxvb2t1cCgKICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkTnVtYmVyLAogICAgICAgICk7CgogICAgICAgIG5leHQgQ0lQSEVSIGlmICREdXBsaWNhdGU7CgogICAgICAgICMgc2V0IGNvdW50ZXIKICAgICAgICAkU2VsZi0+Q3VycmVudENvdW50ZXJTZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICBUeXBlICAgID0+ICdBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgQ291bnRlciA9PiAoICRDdXJyZW50Q291bnRlciArICRDaXBoZXIgKSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJE51bWJlcjsKICAgIH0KCiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Permission.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb24gLSBtb2R1bGUgZm9yIElUU01Db25maWdJdGVtLnBtIHdpdGggUGVybWlzc2lvbiBmdW5jdGlvbnMKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIFBlcm1pc3Npb24gZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBQZXJtaXNzaW9uKCkKCnJldHVybnMgd2hldGhlciB0aGUgdXNlciBoYXMgcGVybWlzc2lvbnMgb3Igbm90CgogICAgbXkgJEFjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgIFR5cGUgICAgID0+ICdybycsCiAgICAgICAgU2NvcGUgICAgPT4gJ0NsYXNzJywgIyBDbGFzcyB8fCBJdGVtCiAgICAgICAgQ2xhc3NJRCAgPT4gMTIzLCAgICAgIyBpZiBTY29wZSBpcyAnQ2xhc3MnCiAgICAgICAgSXRlbUlEICAgPT4gMTIzLCAgICAgIyBpZiBTY29wZSBpcyAnSXRlbScKICAgICAgICBVc2VySUQgICA9PiAxMjMsCiAgICApOwoKb3Igd2l0aG91dCBsb2dnaW5nLCBmb3IgZXhhbXBsZSBmb3IgdG8gY2hlY2sgaWYgYSBsaW5rL2FjdGlvbiBzaG91bGQgYmUgc2hvd24KCiAgICBteSAkQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgVHlwZSAgICAgPT4gJ3JvJywKICAgICAgICBTY29wZSAgICA9PiAnQ2xhc3MnLCAjIENsYXNzIHx8IEl0ZW0KICAgICAgICBDbGFzc0lEICA9PiAxMjMsICAgICAjIGlmIFNjb3BlIGlzICdDbGFzcycKICAgICAgICBJdGVtSUQgICA9PiAxMjMsICAgICAjIGlmIFNjb3BlIGlzICdJdGVtJwogICAgICAgIExvZ05vICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhUeXBlIFNjb3BlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgSXRlbUlEIG9yIENsYXNzSUQgZGVwZW5kZW50CiAgICAjIG9uIHRoZSBTY29wZQogICAgaWYgKAogICAgICAgICggJFBhcmFte1Njb3BlfSBlcSAnQ2xhc3MnICYmICEkUGFyYW17Q2xhc3NJRH0gKQogICAgICAgIHx8CiAgICAgICAgKCAkUGFyYW17U2NvcGV9IGVxICdJdGVtJyAmJiAhJFBhcmFte0l0ZW1JRH0gKQogICAgICAgICkKICAgIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgQ2xhc3NJRCBpZiBTY29wZSBpcyAnQ2xhc3MnIG9yIEl0ZW1JRCBpZiBTY29wZSBpcyAnSXRlbSchIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBSdW4gYWxsIElUU01Db25maWdJdGVtIFBlcm1pc3Npb24gbW9kdWxlcy4KICAgICMKICAgICMgVGhlIGlkZWEgaXMgdGhlIHRoZSBwZXJtaXNzaW9uIG1vZHVsZXMgYXJlIG9yZGVyZWQgYW5kIGNhbiBiZSBkaXZpZGVkIGludG8gdHdvIHBoYXNlcy4KICAgICMgSW4gdGhlIGZpcnN0IHBoYXNlICdSZXF1aXJlZCcgaXMgb24gYW5kICdHcmFudGVkJyBpcyBvZmYuIFRoaXMgYXNzdXJlcyB0aGF0IGFsbCByZXF1aXJlZAogICAgIyBwcmVjb25kaXRpb25zIGFyZSBtZXQuIEluIHRoZSBzZWNvbmQgcGhhc2UgJ1JlcXVpcmVkJyBpcyBvZmYgYW5kICdHcmFudGVkJyBpcyBvbi4gSXQgc3VmZmljZXMKICAgICMgd2hlbiBvbmx5IG9uIHNlY29uZCBwaGFzZSBtb2R1bGUgZ3JhbnRzIGFjY2Vzcy4KICAgICMKICAgICMgT3RoZXIgY29tYmluYXRpb25zIGFyZSBwb3NzaWJsZSBidXQgbWlnaHQgYnJpbmcgc3VycHJpc2luZyByZXN1bHRzLgogICAgaWYgKAogICAgICAgIHJlZiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoICdJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6JyAuICRQYXJhbXtTY29wZX0gKSBlcSAnSEFTSCcKICAgICAgICApCiAgICB7CiAgICAgICAgbXkgJU1vZHVsZXMgPSAlewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoICdJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6JyAuICRQYXJhbXtTY29wZX0gKQogICAgICAgIH07CiAgICAgICAgTU9EVUxFOgogICAgICAgIGZvciBteSAkTW9kdWxlICggc29ydCBrZXlzICVNb2R1bGVzICkgewoKICAgICAgICAgICAgIyBsb2FkIG1vZHVsZQogICAgICAgICAgICBuZXh0IE1PRFVMRSB1bmxlc3MgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJE1vZHVsZXN7JE1vZHVsZX0tPntNb2R1bGV9ICk7CgogICAgICAgICAgICAjIGNyZWF0ZSBvYmplY3QKICAgICAgICAgICAgbXkgJE1vZHVsZU9iamVjdCA9ICRNb2R1bGVzeyRNb2R1bGV9LT57TW9kdWxlfS0+bmV3OwoKICAgICAgICAgICAgIyBleGVjdXRlIFJ1bigpCiAgICAgICAgICAgIG15ICRBY2Nlc3NPayA9ICRNb2R1bGVPYmplY3QtPlJ1biglUGFyYW0pOwoKICAgICAgICAgICAgIyBjaGVjayBncmFudGVkIG9wdGlvbiAoc2hvdWxkIEkgc2F5IG9rKQogICAgICAgICAgICBpZiAoICRBY2Nlc3NPayAmJiAkTW9kdWxlc3skTW9kdWxlfS0+e0dyYW50ZWR9ICkgewoKICAgICAgICAgICAgICAgICMgYWNjZXNzIG9rCiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZWZ1c2UgYWNjZXNzICBiZWNhdXNlIGFjY2VzcyBpcyBmYWxzZSBidXQgaXQncyByZXF1aXJlZAogICAgICAgICAgICBpZiAoICEkQWNjZXNzT2sgJiYgJE1vZHVsZXN7JE1vZHVsZX0tPntSZXF1aXJlZH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICEkUGFyYW17TG9nTm99ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBlcm1pc3Npb24gZGVuaWVkIGJlY2F1c2UgbW9kdWxlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIigkTW9kdWxlc3skTW9kdWxlfS0+e01vZHVsZX0pIGlzIHJlcXVpcmVkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIihVc2VySUQ6ICRQYXJhbXtVc2VySUR9ICckUGFyYW17VHlwZX0nICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIm9uICRQYXJhbXtTY29wZX06ICIgLiAkUGFyYW17ICRQYXJhbXtTY29wZX0gLiAnSUQnIH0gLiAiKSEiLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyByZWZ1c2UgYWNjZXNzCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBkb24ndCBncmFudCBhY2Nlc3MKICAgIGlmICggISRQYXJhbXtMb2dOb30gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGVybWlzc2lvbiBkZW5pZWQgKFVzZXJJRDogJFBhcmFte1VzZXJJRH0gJyRQYXJhbXtUeXBlfScgIgogICAgICAgICAgICAgICAgLiAib24gJFBhcmFte1Njb3BlfTogIiAuICRQYXJhbXsgJFBhcmFte1Njb3BlfSAuICdJRCcgfSAuICIpISIsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm47Cn0KCj1oZWFkMiBDdXN0b21lclBlcm1pc3Npb24oKQoKcmV0dXJucyB3aGV0aGVyIHRoZSB1c2VyIGhhcyBwZXJtaXNzaW9ucyBvciBub3QKCiAgICBteSAkQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkN1c3RvbWVyUGVybWlzc2lvbigKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxMjMsCiAgICAgICAgTG9nTm8gICAgICAgID0+IDEsICAgICMgb3B0aW9uYWwsIGRvIG5vdCBsb2csIGRlZmF1bHQ6IDAKICAgICk7Cgo9Y3V0CgpzdWIgQ3VzdG9tZXJQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDdXN0b21lckdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyR3JvdXAnKTsKICAgIG15ICVHcm91cExvb2t1cDsKCiAgICBteSAlQ29uZGl0aW9ucyA9ICV7ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJykgLy8ge30gfTsKICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIENPTkRJVElPTjoKICAgIGZvciBteSAkQ29uZGl0aW9uU2V0ICggdmFsdWVzICVDb25kaXRpb25zICkgewogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0dyb3Vwc30gJiYgJENvbmRpdGlvblNldC0+e0dyb3Vwc30tPkAqICkgewogICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRDdXN0b21lckdyb3VwT2JqZWN0LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBub25lIHsgJEdyb3VwTG9va3VweyRffSB9ICRDb25kaXRpb25TZXQtPntHcm91cHN9LT5AKjsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0NsYXNzZXN9ICkgewogICAgICAgICAgICBteSBAQ2xhc3NlcyA9IHJlZiAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30gPyAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30tPkAqIDogKCAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30gKTsKCiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmIEBDbGFzc2VzICYmICFncmVwIHsgJF8gZXEgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSBAQ2xhc3NlczsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0RlcGxveW1lbnRTdGF0ZXN9ICkgewogICAgICAgICAgICBteSBARGVwbFN0YXRlcyA9IHJlZiAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30gPyAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30tPkAqIDogKCAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30gKTsKCiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmIEBEZXBsU3RhdGVzICYmICFncmVwIHsgJF8gZXEgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGV9IH0gQERlcGxTdGF0ZXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25kaXRpb25TZXQtPntEeW5hbWljRmllbGRWYWx1ZXN9ICkgewogICAgICAgICAgICBmb3IgbXkgJEZpZWxkTmFtZSAoIGtleXMgJENvbmRpdGlvblNldC0+e0R5bmFtaWNGaWVsZFZhbHVlc30tPiUqICkgewogICAgICAgICAgICAgICAgbXkgJENvbmRpdGlvblZhbHVlID0gJENvbmRpdGlvblNldC0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0gLy8gJyc7CgogICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJEZpZWxkTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmICRDb25kaXRpb25WYWx1ZSBuZSAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggIXJlZiAkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJEZpZWxkTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmICRDb25kaXRpb25WYWx1ZSBuZSAkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJEZpZWxkTmFtZSJ9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29uZGl0aW9uVmFsdWUgZXEgJycgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifS0+QCo7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBub25lIHsgJF8gZXEgJENvbmRpdGlvblZhbHVlIH0gJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifS0+QCo7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmICEkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkfSB9OwoKICAgICAgICAgICAgbXkgQEN1c3RvbWVyVXNlcnMgPSByZWYgJENvbmZpZ0l0ZW0tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmRpdGlvblNldC0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gfQogICAgICAgICAgICAgICAgPyAkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkfSB9LT5AKgogICAgICAgICAgICAgICAgOiAoICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICRDb25kaXRpb25TZXQtPntDdXN0b21lclVzZXJEeW5hbWljRmllbGR9IH0gKTsKCiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmIG5vbmUgeyAkXyBlcSAkUGFyYW17VXNlcklEfSB9IEBDdXN0b21lclVzZXJzOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgISRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICRDb25kaXRpb25TZXQtPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9IH07CgogICAgICAgICAgICBteSBAQ3VzdG9tZXJDb21wYW5pZXMgPSByZWYgJENvbmZpZ0l0ZW0tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmRpdGlvblNldC0+e0N1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZH0gfQogICAgICAgICAgICAgICAgPyAkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSB9LT5AKgogICAgICAgICAgICAgICAgOiAoICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICRDb25kaXRpb25TZXQtPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9IH0gKTsKCiAgICAgICAgICAgIG15ICVBY2Nlc3NpYmxlQ3VzdG9tZXJzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyR3JvdXAnKS0+R3JvdXBDb250ZXh0Q3VzdG9tZXJzKAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBub25lIHsgJEFjY2Vzc2libGVDdXN0b21lcnN7JF99IH0gQEN1c3RvbWVyQ29tcGFuaWVzOwogICAgICAgIH0KCiAgICAgICAgIyBncmFudCBhY2Nlc3MKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBpZiAoICEkUGFyYW17TG9nTm99ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBlcm1pc3Npb24gZGVuaWVkIChDdXN0b21lclVzZXJJRDogJFBhcmFte1VzZXJJRH0gIgogICAgICAgICAgICAgICAgLiAib24gQ29uZmlnSXRlbTogIiAuICRQYXJhbXtDb25maWdJdGVtSUR9IC4gIikhIiwKICAgICAgICApOwogICAgfQoKICAgICMgZG9uJ3QgZ3JhbnQgYWNjZXNzCiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Permission/ClassGroupCheck.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6Q2xhc3NHcm91cENoZWNrOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6Q2xhc3NHcm91cENoZWNrIC0gY2hlY2sgaWYgYSB1c2VyIGJlbG9uZ3MgdG8gYSBncm91cAo9aGVhZDEgREVTQ1JJUFRJT04KClRoaXMgaXMgYSBwZXJtaXNzaW9uIG1vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwoKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJENoZWNrT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uOjpDbGFzc0dyb3VwQ2hlY2snKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7fSwgJFR5cGU7Cn0KCj1oZWFkMiBSdW4oKQoKdGhpcyBtZXRob2QgZG9lcyB0aGUgY2hlY2sgaWYgdGhlIHVzZSBiZWxvbmdzIHRvIGEgZ2l2ZW4gZ3JvdXAKCiAgICBteSAkSGFzQWNjZXNzID0gJENoZWNrT2JqZWN0LT5SdW4oCiAgICAgICAgVXNlcklEICA9PiAxMjMsCiAgICAgICAgVHlwZSAgICA9PiAncm8nLAogICAgICAgIENsYXNzSUQgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzOjpDb21wdXRlcicsCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVXNlcklEIFR5cGUgQ2xhc3NJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhIGZvciB0aGUgcmVsZXZhbnQgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICRDbGFzc0l0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRDbGFzc0l0ZW0tPntQZXJtaXNzaW9ufTsKICAgIG15ICgkQ2xhc3NJdGVtUGVybWlzc2lvbikgPSAkQ2xhc3NJdGVtLT57UGVybWlzc2lvbn0tPkAqOwogICAgcmV0dXJuIHVubGVzcyAkQ2xhc3NJdGVtUGVybWlzc2lvbjsKCiAgICAjIGdldCB1c2VyIGdyb3VwcwogICAgbXkgQEdyb3VwSURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICBSZXN1bHQgPT4gJ0lEJywKICAgICAgICBDYWNoZWQgPT4gMSwKICAgICk7CgogICAgIyBsb29raW5nIGZvciBncm91cCBpZCwgZ3JhbnQgYWNjZXNzIGlmIHVzZXIgaXMgaW4gZ3JvdXAKICAgIGZvciBteSAkR3JvdXBJRCAoQEdyb3VwSURzKSB7CiAgICAgICAgcmV0dXJuIDEgaWYgJENsYXNzSXRlbVBlcm1pc3Npb24gJiYgJEdyb3VwSUQgZXEgJENsYXNzSXRlbVBlcm1pc3Npb247CiAgICB9CgogICAgIyByZWZ1c2UgYWNjZXNzIHBlciBkZWZhdWx0CiAgICByZXR1cm47Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/Permission/ItemClassGroupCheck.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6SXRlbUNsYXNzR3JvdXBDaGVjazsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6SXRlbUNsYXNzR3JvdXBDaGVjayAtIGNoZWNrIGlmIGEgdXNlciBjYW4gYWNjZXNzIGFuIGl0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKVGhpcyBpcyBhIHBlcm1pc3Npb24gbW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uClRoZSBjaGVjayBpcyBiYXNlZCBvbiB0aGUgY2xhc3Mgb2YgdGhlIGNvbmZpZyBpdGVtLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRDaGVja09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6SXRlbUNsYXNzR3JvdXBDaGVjaycpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgcmV0dXJuIGJsZXNzIHt9LCAkVHlwZTsKfQoKPWhlYWQyIFJ1bigpCgp0aGlzIG1ldGhvZCBkb2VzIHRoZSBjaGVjayBpZiB0aGUgdXNlciBjYW4gYWNjZXNzIGFuIGl0ZW0KCiAgICBteSAkSGFzQWNjZXNzID0gJENoZWNrT2JqZWN0LT5SdW4oCiAgICAgICAgVXNlcklEID0+IDEyMywKICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICBJdGVtSUQgPT4gMzQ1LAogICAgKTsKCj1jdXQKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFVzZXJJRCBUeXBlIEl0ZW1JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbSBkYXRhCiAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17SXRlbUlEfSwKICAgICk7CgogICAgIyBnZXQgZGF0YSBmb3IgdGhlIHJlbGV2YW50IGNvbmZpZyBpdGVtIGNsYXNzCiAgICBteSAkQ2xhc3NJdGVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJENsYXNzSXRlbS0+e1Blcm1pc3Npb259OwogICAgbXkgKCRDbGFzc0l0ZW1QZXJtaXNzaW9uKSA9ICRDbGFzc0l0ZW0tPntQZXJtaXNzaW9ufS0+QCo7CiAgICByZXR1cm4gdW5sZXNzICRDbGFzc0l0ZW1QZXJtaXNzaW9uOwoKICAgICMgZ2V0IHVzZXIgZ3JvdXBzCiAgICBteSBAR3JvdXBJRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICBUeXBlICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgIFJlc3VsdCA9PiAnSUQnLAogICAgICAgIENhY2hlZCA9PiAxLAogICAgKTsKCiAgICAjIGxvb2tpbmcgZm9yIGdyb3VwIGlkLCBncmFudCBhY2Nlc3MgaWYgdXNlciBpcyBpbiBncm91cAogICAgZm9yIG15ICRHcm91cElEIChAR3JvdXBJRHMpIHsKICAgICAgICByZXR1cm4gMSBpZiAkQ2xhc3NJdGVtUGVybWlzc2lvbiAmJiAkR3JvdXBJRCBlcSAkQ2xhc3NJdGVtUGVybWlzc2lvbjsKICAgIH0KCiAgICAjIHJlZnVzZSBhY2Nlc3MgcGVyIGRlZmF1bHQKICAgIHJldHVybjsKfQoKMTsK</File>
        <File Location="Kernel/System/ITSMConfigItem/Version.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvbjsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgcXcoYW55KTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvbiAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCB2ZXJzaW9uIGZ1bmN0aW9ucyBmb3IgSVRTTUNvbmZpZ0l0ZW0gb2JqZWN0cy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgVmVyc2lvblpvb21MaXN0KCkKCnJldHVybiBhIGNvbmZpZyBpdGVtIHZlcnNpb24gbGlzdCBhcyBhcnJheS1oYXNoIHJlZmVyZW5jZQoKICAgIG15ICRWZXJzaW9uTGlzdFJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uWm9vbUxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvblpvb21MaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb25maWdJdGVtSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW0gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICApOwoKICAgICMgZ2V0IHZlcnNpb24gem9vbSBsaXN0CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCBpZCwgbmFtZSwgdmVyc2lvbl9zdHJpbmcsIGRlcGxfc3RhdGVfaWQsIGluY2lfc3RhdGVfaWQsIGRlc2NyaXB0aW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5CiAgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24KICBXSEVSRSBjb25maWdpdGVtX2lkID0gPwogIE9SREVSIEJZIGlkCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQFZlcnNpb25MaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBWZXJzaW9uTGlzdCwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgICA9PiAkUm93WzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkUm93WzFdLAogICAgICAgICAgICAgICAgVmVyc2lvblN0cmluZyA9PiAkUm93WzJdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICA9PiAkUm93WzNdLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICA9PiAkUm93WzRdLAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICA9PiAkUm93WzVdLAogICAgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICA9PiAkUm93WzZdLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICA9PiAkUm93WzddLAogICAgICAgICAgICAgICAgQ2hhbmdlVGltZSAgICA9PiAkUm93WzhdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICA9PiAkUm93WzldLAogICAgICAgICAgICB9OwoKICAgIH0KCiAgICBmb3IgbXkgJFZlcnNpb24gKEBWZXJzaW9uTGlzdCkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGZ1bmN0aW9uYWxpdHkKICAgICAgICBteSAkRGVwbFN0YXRlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkVmVyc2lvbi0+e0RlcGxTdGF0ZUlEfSwKICAgICAgICApOwoKICAgICAgICAkVmVyc2lvbi0+e0RlcGxTdGF0ZX0gICAgID0gJERlcGxTdGF0ZS0+e05hbWV9OwogICAgICAgICRWZXJzaW9uLT57RGVwbFN0YXRlVHlwZX0gPSAkRGVwbFN0YXRlLT57RnVuY3Rpb25hbGl0eX1bMF0gLy8gJyc7CgogICAgICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGZ1bmN0aW9uYWxpdHkKICAgICAgICBteSAkSW5jaVN0YXRlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkVmVyc2lvbi0+e0luY2lTdGF0ZUlEfSwKICAgICAgICApOwoKICAgICAgICAkVmVyc2lvbi0+e0luY2lTdGF0ZX0gICAgID0gJEluY2lTdGF0ZS0+e05hbWV9OwogICAgICAgICRWZXJzaW9uLT57SW5jaVN0YXRlVHlwZX0gPSAkSW5jaVN0YXRlLT57RnVuY3Rpb25hbGl0eX1bMF0gLy8gJyc7CgogICAgICAgICMgYWRkIGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICAkVmVyc2lvbi0+e0NsYXNzSUR9ICAgICAgICAgID0gJENvbmZpZ0l0ZW0tPntDbGFzc0lEfTsKICAgICAgICAkVmVyc2lvbi0+e0NsYXNzfSAgICAgICAgICAgID0gJENvbmZpZ0l0ZW0tPntDbGFzc307CiAgICAgICAgJFZlcnNpb24tPntOdW1iZXJ9ICAgICAgICAgICA9ICRDb25maWdJdGVtLT57TnVtYmVyfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckRlcGxTdGF0ZUlEfSAgID0gJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGVJRH07CiAgICAgICAgJFZlcnNpb24tPntDdXJEZXBsU3RhdGV9ICAgICA9ICRDb25maWdJdGVtLT57Q3VyRGVwbFN0YXRlfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckRlcGxTdGF0ZVR5cGV9ID0gJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGVUeXBlfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckluY2lTdGF0ZUlEfSAgID0gJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGVJRH07CiAgICAgICAgJFZlcnNpb24tPntDdXJJbmNpU3RhdGV9ICAgICA9ICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckluY2lTdGF0ZVR5cGV9ID0gJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGVUeXBlfTsKICAgIH0KCiAgICByZXR1cm4gXEBWZXJzaW9uTGlzdDsKfQoKPWhlYWQyIFZlcnNpb25MaXN0QWxsKCkKClJldHVybnMgYSB0d28tZGltZW5zaW9uYWwgaGFzaCByZWZlcmVuY2Ugd2l0aCB0aGUgY29uZmlnIGl0ZW0gaWRzIGFzIGtleXMgb2YgdGhlIGZpcnN0IGxldmVsCmFuZCB0aGUgY29ycmVzcG9uZGluZyB2ZXJzaW9uIGlkcyBhcyBrZXlzIG9mIHRoZSBzZWNvbmQgbGV2ZWwsCnRoZW4gZm9sbG93ZWQgYnkgdGhlIHZlcnNpb24gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZS4KCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3RBbGwoCiAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiBbIDEsIDIsIDMsIDQsIC4uLl0sICAgICMgb3B0aW9uYWwKCiAgICAgICAgT2xkZXJEYXRlICAgICA9PiAnMjAxNC0xMi0yMiAyMzo1OTo1OScsICMgb3B0aW9uYWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmaW5kcyB2ZXJzaW9ucyBvbGRlciB0aGFuIHRoZSBnaXZlbiBkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRm9ybWF0IE1VU1QgYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBZWVlZLU1NLUREIEhIOk1NOlNTCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmlsbCBtaXNzaW5nIHZhbHVlcyB3aXRoIDAgZmlyc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFeGFtcGxlOiAyMDE0LTA0LTAxIDA3OjAzOjA0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3RoZXJ3aXNlIGl0IHdvbid0IGJlIHRha2VuIGFzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdmFsaWQgc2VhcmNoIHBhcmFtZXRlcgoKICAgICAgICBMaW1pdCAgICAgICAgID0+IDEwMDAwMDAsICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKClJldHVybnM6CgogICAgJFZlcnNpb25MaXN0UmVmID0gewoKICAgICAgICAjIENvbmZpZ0l0ZW1JRAogICAgICAgIDEgPT4gewoKICAgICAgICAgICAgIyBWZXJzaW9uSUQKICAgICAgICAgICAgMTAwID0+IHsKICAgICAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAxLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAnQ29uZmlnSXRlbTEnLAogICAgICAgICAgICAgICAgVmVyc2lvblN0cmluZyA9PiAnVmVyc2lvbjEnLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICA9PiA1LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICA9PiAzLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICA9PiAyLAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnQUJDRCcsCiAgICAgICAgICAgICAgICBDcmVhdGVUaW1lICAgID0+ICcyMDE2LTAzLTIyIDE3OjU4OjAwJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICMgVmVyc2lvbklECiAgICAgICAgICAgIDEwMSA9PiB7CiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgID0+IDEwMSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gMSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0NvbmZpZ0l0ZW0yJywKICAgICAgICAgICAgICAgIFZlcnNpb25TdHJpbmcgPT4gJ1ZlcnNpb24yJywKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgPT4gNSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgPT4gMywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgPT4gMiwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgPT4gJ0FCQ0QnLAogICAgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICA9PiAnMjAxNi0wMy0yMiAxNzo1ODowMCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBDb25maWdJdGVtSUQKICAgICAgICAyID0+IHsKCiAgICAgICAgICAgICMgVmVyc2lvbklECiAgICAgICAgICAgIDE1MCA9PiB7CiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgICAgID0+IDE1MCwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gMiwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0NvbmZpZ0l0ZW0xJywKICAgICAgICAgICAgICAgIFZlcnNpb25TdHJpbmcgPT4gJ1ZlcnNpb24xJywKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgPT4gNSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgPT4gMywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgPT4gMiwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgPT4gJ0FCQ0QnLAogICAgICAgICAgICAgICAgQ3JlYXRlVGltZSAgICA9PiAnMjAxNi0wMy0yMiAxNzo1ODowMCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICAjIFZlcnNpb25JRAogICAgICAgICAgICAxNTEgPT4gewogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgICA9PiAxNTEsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+IDIsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICdDb25maWdJdGVtMScsCiAgICAgICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICdWZXJzaW9uMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgID0+IDUsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgID0+IDMsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgID0+IDIsCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICdBQkNEJywKICAgICAgICAgICAgICAgIENyZWF0ZVRpbWUgICAgPT4gJzIwMTYtMDMtMjIgMTc6NTg6MDAnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFZlcnNpb25MaXN0QWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjb2xsZWN0IHRoZSBjb25kaXRpb25zIGZvciB0aGUgV0hFUkUgY2xhdXNlCiAgICBteSBAQ29uZGl0aW9uczsKICAgIG15IEBCaW5kUGFyYW1ldGVyOwoKICAgICMgaWYgd2UgZ290IENvbmZpZ0l0ZW1JRHMgbWFrZSBzdXJlIHdlIGp1c3QgaGF2ZSBudW1lcmljIGlkcywKICAgICMgZXh0cmFjdCB0aG9zZSBhbmQgdXNlIGl0IGZvciB0aGUgcXVlcnkKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17Q29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICBteSBAQ29uZmlnSXRlbUlEcyA9IGdyZXAgeyAkXyA9fiBtL15cZCskLyB9IEB7ICRQYXJhbXtDb25maWdJdGVtSURzfSB9OwogICAgICAgIHB1c2ggQENvbmRpdGlvbnMsICdjb25maWdpdGVtX2lkIElOICgnIC4gKCBqb2luICcsICcsIEBDb25maWdJdGVtSURzICkgLiAnKSc7CiAgICB9CgogICAgaWYgKCAkUGFyYW17T2xkZXJEYXRlfSAmJiAkUGFyYW17T2xkZXJEYXRlfSA9fiBtL15cZHs0fVwtXGR7Mn1cLVxkezJ9XCBcZHsyfVw6XGR7Mn06XGR7Mn0kLyApIHsKICAgICAgICBwdXNoIEBDb25kaXRpb25zLCAgICAnY3JlYXRlX3RpbWUgPCA/JzsKICAgICAgICBwdXNoIEBCaW5kUGFyYW1ldGVyLCBcJFBhcmFte09sZGVyRGF0ZX07CiAgICB9CgogICAgIyBidWlsZCBzcWwKICAgIG15ICRTUUwgPSA8PCdFTkRfU1FMJzsKU0VMRUNUIGlkLCBjb25maWdpdGVtX2lkLCBuYW1lLCB2ZXJzaW9uX3N0cmluZywgZGVmaW5pdGlvbl9pZCwgZGVwbF9zdGF0ZV9pZCwgaW5jaV9zdGF0ZV9pZCwgZGVzY3JpcHRpb24sCiAgICBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5CiAgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24KRU5EX1NRTAoKICAgIGlmIChAQ29uZGl0aW9ucykgewogICAgICAgICRTUUwgLj0gJ1dIRVJFICcgLiBqb2luICcgQU5EICcsIEBDb25kaXRpb25zOwogICAgfQoKICAgICMgc2V0IGxpbWl0CiAgICBpZiAoICRQYXJhbXtMaW1pdH0gKSB7CiAgICAgICAgJFBhcmFte0xpbWl0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdW90ZSggJFBhcmFte0xpbWl0fSwgJ0ludGVnZXInICk7CiAgICB9CgogICAgaWYgKEBCaW5kUGFyYW1ldGVyKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgICAgIEJpbmQgID0+IFxAQmluZFBhcmFtZXRlciwKICAgICAgICAgICAgTGltaXQgPT4gJFBhcmFte0xpbWl0fSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlUmVzdWx0czsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFJlc3VsdHN7ICRSb3dbMV0gfS0+eyAkUm93WzBdIH0gPSB7CiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFJvd1swXSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUm93WzFdLAogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICRSb3dbMl0gIHx8ICcnLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRSb3dbM10gIHx8ICcnLAogICAgICAgICAgICBEZWZpbml0aW9uSUQgID0+ICRSb3dbNF0gIHx8ICcnLAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgID0+ICRSb3dbNV0gIHx8ICcnLAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgID0+ICRSb3dbNl0gIHx8ICcnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICRSb3dbN10gIHx8ICcnLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgID0+ICRSb3dbOF0gIHx8ICcnLAogICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+ICRSb3dbOV0gIHx8ICcnLAogICAgICAgICAgICBDaGFuZ2VUaW1lICAgID0+ICRSb3dbMTBdIHx8ICcnLAogICAgICAgICAgICBDaGFuZ2VCeSAgICAgID0+ICRSb3dbMTFdIHx8ICcnLAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIFwlUmVzdWx0czsKfQoKPWhlYWQyIFZlcnNpb25MaXN0KCkKCnJldHVybiB0aGUgbGlzdCBvZiBjb25maWcgaXRlbSB2ZXJzaW9uIElEcyBvZiB0aGUgc3BlY2lmaWVkIGNvbmZpZyBpdGVtIGFzIGFuIGFycmF5IHJlZmVyZW5jZS4KVGhlIElEcyBhcmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlci4KCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbkxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCB2ZXJzaW9uIGxpc3QKICAgIG15IEBWZXJzaW9uTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RDb2xBcnJheSgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCBpZAogIEZST00gY29uZmlnaXRlbV92ZXJzaW9uCiAgV0hFUkUgY29uZmlnaXRlbV9pZCA9ID8KICBPUkRFUiBCWSBpZApFTkRfU1FMCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICByZXR1cm4gXEBWZXJzaW9uTGlzdDsKfQoKPWhlYWQyIFZlcnNpb25OYW1lR2V0KCkKCnJldHVybnMgdGhlIG5hbWUgb2YgYSB2ZXJzaW9uIG9mIGEgY29uZmlnIGl0ZW0uCgogICAgbXkgJFZlcnNpb25OYW1lID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25OYW1lR2V0KAogICAgICAgIFZlcnNpb25JRCA9PiAxMjMsCiAgICApOwoKb3IKCiAgICBteSAkVmVyc2lvbk5hbWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbk5hbWVHZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbk5hbWVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1ZlcnNpb25JRH0gJiYgISRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBWZXJzaW9uSUQgb3IgQ29uZmlnSXRlbUlEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSApIHsKCiAgICAgICAgIyBjaGVjayBpZiByZXN1bHQgaXMgYWxyZWFkeSBjYWNoZWQKICAgICAgICBteSAkQ2FjaGVLZXkgPSAnVmVyc2lvbk5hbWVHZXQ6OlZlcnNpb25JRDo6JyAuICRQYXJhbXtWZXJzaW9uSUR9OwogICAgICAgIG15ICRDYWNoZSAgICA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJHskQ2FjaGV9IGlmICRDYWNoZTsKCiAgICAgICAgIyBnZXQgdmVyc2lvbgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgbmFtZSAnCiAgICAgICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17VmVyc2lvbklEfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBjaGVjayBpZiByZXN1bHQgaXMgYWxyZWFkeSBjYWNoZWQKICAgICAgICBteSAkQ2FjaGVLZXkgPSAnVmVyc2lvbk5hbWVHZXQ6OkNvbmZpZ0l0ZW1JRDo6JyAuICRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgIG15ICRDYWNoZSAgICA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJHskQ2FjaGV9IGlmICRDYWNoZTsKCiAgICAgICAgIyBnZXQgdmVyc2lvbgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgbmFtZSAnCiAgICAgICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiAnCiAgICAgICAgICAgICAgICAuICdXSEVSRSBjb25maWdpdGVtX2lkID0gPyBPUkRFUiBCWSBpZCBERVNDJywKICAgICAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NvbmZpZ0l0ZW1JRH0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJVZlcnNpb247CiAgICB3aGlsZSAoIG15ICggJElkLCAkTmFtZSApID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkVmVyc2lvbntWZXJzaW9uSUR9ID0gJElkOwogICAgICAgICRWZXJzaW9ue05hbWV9ICAgICAgPSAkTmFtZTsKICAgIH0KCiAgICAjIGNoZWNrIHZlcnNpb24KICAgIGlmICggISRWZXJzaW9ue1ZlcnNpb25JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdObyBzdWNoIGNvbmZpZyBpdGVtIHZlcnNpb24hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCBjYWNoZSBmb3IgVmVyc2lvbklEIChhbHdheXMpCiAgICBteSAkQ2FjaGVLZXkgPSAnVmVyc2lvbk5hbWVHZXQ6OlZlcnNpb25JRDo6JyAuICRWZXJzaW9ue1ZlcnNpb25JRH07CiAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICBUeXBlICA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFwkVmVyc2lvbntOYW1lfSwKICAgICk7CgogICAgIyBzZXQgY2FjaGUgZm9yIENvbmZpZ0l0ZW1JRCAob25seSBpZiBjYWxsZWQgd2l0aCBDb25maWdJdGVtSUQpCiAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRDYWNoZUtleSA9ICdWZXJzaW9uTmFtZUdldDo6Q29uZmlnSXRlbUlEOjonIC4gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICAgICAgVmFsdWUgPT4gXCRWZXJzaW9ue05hbWV9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRWZXJzaW9ue05hbWV9Owp9Cgo9aGVhZDIgVmVyc2lvbkNvbmZpZ0l0ZW1JREdldCgpCgpyZXR1cm4gdGhlIGNvbmZpZyBpdGVtIGlkIG9mIGEgdmVyc2lvbgoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkNvbmZpZ0l0ZW1JREdldCgKICAgICAgICBWZXJzaW9uSUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBWZXJzaW9uQ29uZmlnSXRlbUlER2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBWZXJzaW9uSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHJlc3VsdCBpcyBhbHJlYWR5IGNhY2hlZAogICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbkNvbmZpZ0l0ZW1JREdldH0tPnsgJFBhcmFte1ZlcnNpb25JRH0gfQogICAgICAgIGlmICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbkNvbmZpZ0l0ZW1JREdldH0tPnsgJFBhcmFte1ZlcnNpb25JRH0gfTsKCiAgICAjIGdldCBjb25maWcgaXRlbSBpZAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJ1NFTEVDVCBjb25maWdpdGVtX2lkIEZST00gY29uZmlnaXRlbV92ZXJzaW9uIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1ZlcnNpb25JRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICB3aGlsZSAoIG15ICgkSWQpID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEID0gJElkOwogICAgfQoKICAgICMgY2FjaGUgdGhlIHJlc3VsdAogICAgJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uQ29uZmlnSXRlbUlER2V0fS0+eyAkUGFyYW17VmVyc2lvbklEfSB9ID0gJENvbmZpZ0l0ZW1JRDsKCiAgICByZXR1cm4gJENvbmZpZ0l0ZW1JRDsKfQoKPWhlYWQyIFZlcnNpb25BZGQoKQoKYWRkcyBhIG5ldyB2ZXJzaW9uIHRvIGVpdGhlciBhbiBleGlzdGluZyBjb25maWcgaXRlbS4KT3IgYWRkcyB0aGUgaW5pdGlhbCB2ZXJzaW9uIHRvIGFuIGNvbmZpZyBpdGVtIHRoYXQgaXMgYmVpbmcgY3JlYXRlZC4KCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgPT4gMTIzLAogICAgICAgIExhc3RWZXJzaW9uSUQgICAgID0+IDEyMywKICAgICAgICBMYXN0VmVyc2lvbiAgICAgICA9PiB7Li4ufSAgICAgICAgICAjIGVpdGhlciBDb25maWdJdGVtSUQgb3IgTGFzdFZlcnNpb24oSUQpIGlzIG1hbmRhdG9yeQogICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gJ1RoZSBOYW1lJywgICAgIyBvcHRpb25hbAogICAgICAgIFZlcnNpb25TdHJpbmcgICAgID0+ICdUaGUgVmVyc2lvbicsICMgb3B0aW9uYWwKICAgICAgICBEZXBsU3RhdGVJRCAgICAgICA9PiA4LCAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgPT4gNCwgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIERlc2NyaXB0aW9uICAgICAgID0+ICdBQkNEJywgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBEeW5hbWljRmllbGRfTmFtZSA9PiAkVmFsdWUsICAgICAgICAjIG9wdGlvbmFsCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25BZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRMYXN0VmVyc2lvbiA9ICRQYXJhbXtMYXN0VmVyc2lvbn0gfHwgJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRQYXJhbXtMYXN0VmVyc2lvbklEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIG15ICVWZXJzaW9uID0gKAogICAgICAgICRMYXN0VmVyc2lvbi0+JSosCiAgICAgICAgJVBhcmFtLAogICAgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KENvbmZpZ0l0ZW1JRCBOYW1lIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEKSkgewogICAgICAgIGlmICggISRWZXJzaW9ueyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXR0cmlidXRlISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkQ2xhc3NMaXN0OwogICAgcmV0dXJuIHVubGVzcyByZWYgJENsYXNzTGlzdCBlcSAnSEFTSCc7CgogICAgbXkgJUNsYXNzUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICBJdGVtSUQgPT4gJFZlcnNpb257Q2xhc3NJRH0sCiAgICApOwoKICAgIG15ICROYW1lTW9kdWxlT2JqZWN0OwogICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlc3tOYW1lTW9kdWxlfSA/ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9WzBdIDogJyc7CiAgICBpZiAoJE5hbWVNb2R1bGUpIHsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCJLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok5hbWU6OiROYW1lTW9kdWxlIikgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIG5hbWUgbW9kdWxlIGZvciBjbGFzcyAkVmVyc2lvbntDbGFzc30hIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIGEgYmFja2VuZCBvYmplY3QKICAgICAgICAkTmFtZU1vZHVsZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JE5hbWVNb2R1bGUiKTsKCiAgICAgICAgIyBvdmVycmlkZSBwb3NzaWJsZSBpbmNvbWluZyBuYW1lCiAgICAgICAgJFZlcnNpb257TmFtZX0gPSAkTmFtZU1vZHVsZU9iamVjdC0+Q29uZmlnSXRlbU5hbWVDcmVhdGUoJVBhcmFtKTsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykgKSB7CgogICAgICAgICAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSAkU2VsZi0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICdORVcnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRWZXJzaW9ue0NsYXNzSUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRWZXJzaW9ue05hbWV9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzdG9wIHByb2Nlc3NpbmcgaWYgdGhlIG5hbWUgaXMgbm90IHVuaXF1ZQogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkTmFtZUR1cGxpY2F0ZXMpICkgewoKICAgICAgICAgICAgICAgICMgYnVpbGQgYSBzdHJpbmcgb2YgYWxsIGR1cGxpY2F0ZSBJRHMKICAgICAgICAgICAgICAgIG15ICREdXBsaWNhdGVzID0gam9pbiAnLCAnLCBAeyROYW1lRHVwbGljYXRlc307CgogICAgICAgICAgICAgICAgIyB3cml0ZSBhbiBlcnJvciBsb2cgbWVzc2FnZSBjb250YWluaW5nIGFsbCB0aGUgZHVwbGljYXRlIElEcwogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIG5hbWUgJFZlcnNpb257TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgKENvbmZpZ0l0ZW1JRHM6ICREdXBsaWNhdGVzKSEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJFZlcnNpb25TdHJpbmdNb2R1bGVPYmplY3Q7CiAgICBteSAkVmVyc2lvblN0cmluZ01vZHVsZSA9ICRDbGFzc1ByZWZlcmVuY2Vze1ZlcnNpb25TdHJpbmdNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblN0cmluZ01vZHVsZX1bMF0gOiAnJzsKICAgIGlmICgkVmVyc2lvblN0cmluZ01vZHVsZSkgewoKICAgICAgICAjIGNoZWNrIGlmIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCJLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb25TdHJpbmc6OiRWZXJzaW9uU3RyaW5nTW9kdWxlIikgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY2xhc3MgJENsYXNzTGlzdC0+eyAkUGFyYW17Q2xhc3NJRH0gfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBiYWNrZW5kIG9iamVjdAogICAgICAgICRWZXJzaW9uU3RyaW5nTW9kdWxlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpWZXJzaW9uU3RyaW5nOjokVmVyc2lvblN0cmluZ01vZHVsZSIpOwoKICAgICAgICAjIG92ZXJyaWRlIHBvc3NpYmxlIGluY29taW5nIHZlcnNpb24gc3RyaW5nCiAgICAgICAgJFZlcnNpb257VmVyc2lvblN0cmluZ30gPSAkVmVyc2lvblN0cmluZ01vZHVsZU9iamVjdC0+VmVyc2lvblN0cmluZ0dldCgKICAgICAgICAgICAgVmVyc2lvbiAgICA9PiBcJVZlcnNpb24sCiAgICAgICAgICAgIFZlcnNpb25BZGQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgbmV3IHZlcnNpb25zIGFyZSBhbHdheXMgYWRkZWQgd2l0aCB0aGUgbmV3ZXN0IGRlZmluaXRpb24KICAgIG15ICREZWZpbml0aW9uID0gJFNlbGYtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkVmVyc2lvbntDbGFzc0lEfSwKICAgICk7CgogICAgaWYgKCAhJERlZmluaXRpb24gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIERlZmluaXRpb24hIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBpbnNlcnQgbmV3IHZlcnNpb24KICAgIG15ICRJbnNlcnRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsCklOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fdmVyc2lvbiAoCiAgICBjb25maWdpdGVtX2lkLCBuYW1lLCB2ZXJzaW9uX3N0cmluZywgZGVmaW5pdGlvbl9pZCwgZGVwbF9zdGF0ZV9pZCwgaW5jaV9zdGF0ZV9pZCwgZGVzY3JpcHRpb24sCiAgICBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5CikKVkFMVUVTICgKICAgID8sID8sID8sID8sID8sID8sID8sCiAgIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPwopCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFwkVmVyc2lvbntOYW1lfSwKICAgICAgICAgICAgXCRWZXJzaW9ue1ZlcnNpb25TdHJpbmd9LAogICAgICAgICAgICBcJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgICAgICAgICBcJFZlcnNpb257RGVwbFN0YXRlSUR9LAogICAgICAgICAgICBcJFZlcnNpb257SW5jaVN0YXRlSUR9LAogICAgICAgICAgICBcJFZlcnNpb257RGVzY3JpcHRpb259LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRJbnNlcnRTdWNjZXNzOwoKICAgICMgZ2V0IGlkIG9mIG5ldyB2ZXJzaW9uCiAgICBteSAoJFZlcnNpb25JRCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKU0VMRUNUIGlkCiAgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24KICBXSEVSRSBjb25maWdpdGVtX2lkID0gPwogIE9SREVSIEJZIGlkIERFU0MKRU5EX1NRTAogICAgICAgIEJpbmQgID0+IFsgXCRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGNoZWNrIHZlcnNpb24gaWQKICAgIGlmICggISRWZXJzaW9uSUQgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBnZXQgdGhlIG5ldyB2ZXJzaW9uIGlkISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRSZWNhbGNDdXJJbmNpU3RhdGUgPSAkU2VsZi0+X1VwZGF0ZUN1ckF0dHIoCiAgICAgICAgVmVyc2lvbiAgICAgPT4gXCVWZXJzaW9uLAogICAgICAgIExhc3RWZXJzaW9uID0+ICRMYXN0VmVyc2lvbiwKICAgICAgICBWZXJzaW9uSUQgICA9PiAkVmVyc2lvbklELAogICAgICAgIFVzZXJJRCAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIENsZWFyIHRoZSBjYWNoZSBmb3IgQ29uZmlnSXRlbUdldCB3aXRob3V0IGR5bmFtaWMgZmllbGRzCiAgICBteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIEtleSAgPT4gam9pbigKICAgICAgICAgICAgJzo6JywgJ0NvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZlcnNpb257Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgREZEYXRhICAgICAgID0+IDAsCiAgICAgICAgKSwKICAgICk7CgogICAgIyB0cmlnZ2VyIFZlcnNpb25DcmVhdGUgZXZlbgogICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnVmVyc2lvbkNyZWF0ZScsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZlcnNpb257Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIE9sZERlcGxTdGF0ZSA9PiAkTGFzdFZlcnNpb24tPntDdXJEZXBsU3RhdGV9LAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15IEBVcGRhdGVkRHluYW1pY0ZpZWxkczsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZCAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFkZWZpbmVkICRWZXJzaW9ueyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnTGVucycgJiYgISRQYXJhbXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH07CgogICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmVyc2lvbnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUhhbmRsZWQgID0+IDEsCiAgICAgICAgICAgIEV4dGVybmFsU291cmNlICAgICA9PiAoICRQYXJhbXtFeHRlcm5hbFNvdXJjZX0gJiYgZXhpc3RzICRQYXJhbXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gKSwKICAgICAgICApOwoKICAgICAgICAjIG9ubHkgdGhyb3cgZXZlbnRzIGZvciBmaWVsZHMgY2hhbmdlZCBmcm9tIHRoZSBsYXN0IHZlcnNpb24gLSBjaGVja2VkIGJ5IENvbmZpZ0l0ZW1VcGRhdGUoKQogICAgICAgIGlmICggJFN1Y2Nlc3MgJiYgZXhpc3RzICRQYXJhbXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQFVwZGF0ZWREeW5hbWljRmllbGRzLCAkRHluYW1pY0ZpZWxkLT57TmFtZX07CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSB2ZXJzaW9uIGRhdGEgd2l0aCBhY3R1YWwgZHluYW1pYyBmaWVsZCB2YWx1ZXMKICAgICAgICAjIGltcG9ydGFudCBpbiBjYXNlIG9mIHJlZmVyZW5jZSBmaWVsZHMKICAgICAgICBpZiAoICRQYXJhbXtFeHRlcm5hbFNvdXJjZX0gJiYgJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317SW1wb3J0U2VhcmNoQXR0cmlidXRlfSApIHsKICAgICAgICAgICAgbXkgJFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlR2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFZlcnNpb257ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSB9ID0gJFZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICAjIENsZWFyIHRoZSBjYWNoZSBmb3IgQ29uZmlnSXRlbUdldCB3aXRoIGR5bmFtaWMgZmllbGRzCiAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+IGpvaW4oCiAgICAgICAgICAgICc6OicsICdDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAxLAogICAgICAgICksCiAgICApOwoKICAgIGZvciBteSAkTmFtZSAoQFVwZGF0ZWREeW5hbWljRmllbGRzKSB7CgogICAgICAgICMgcHJlcGFyZSByZWFkYWJsZSB2YWx1ZXMgZm9yIHRoZSBoaXN0b3J5CiAgICAgICAgbXkgJFJlYWRhYmxlVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+UmVhZGFibGVWYWx1ZVJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskTmFtZX0sCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmVyc2lvbnsgJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUgfSwKICAgICAgICApOwogICAgICAgIG15ICRSZWFkYWJsZU9sZFZhbHVlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlJlYWRhYmxlVmFsdWVSZW5kZXIoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JE5hbWV9LAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJExhc3RWZXJzaW9uLT57ICdEeW5hbWljRmllbGRfJyAuICROYW1lIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBUcmlnZ2VyIGR5bmFtaWMgZmllbGQgdXBkYXRlIGV2ZW50LgogICAgICAgICMgVGhpcyBtaWdodCB1cGRhdGUgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4KICAgICAgICAjIEFsc28gcGFzcyBpbiB0aGUgbGFzdCB2ZXJzaW9uIGluIG9yZGVyIHRvIGFsbG93IGZvciBzcGVjaWFsIGhhbmRsaW5nIHdoZW4gdGhlIGxhc3QgdmVyc2lvbiBpcyBjaGFuZ2VkLgogICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgIEV2ZW50ID0+ICdDb25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlXycgLiAkTmFtZSwKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgRmllbGROYW1lICAgICAgICAgICAgICAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICA9PiAkVmVyc2lvbnsgJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUgfSwKICAgICAgICAgICAgICAgIE9sZFZhbHVlICAgICAgICAgICAgICAgID0+ICRMYXN0VmVyc2lvbi0+eyAnRHluYW1pY0ZpZWxkXycgLiAkTmFtZSB9LAogICAgICAgICAgICAgICAgUmVhZGFibGVWYWx1ZSAgICAgICAgICAgPT4gJFJlYWRhYmxlVmFsdWUtPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBSZWFkYWJsZU9sZFZhbHVlICAgICAgICA9PiAkUmVhZGFibGVPbGRWYWx1ZS0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgID0+ICRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtVmVyc2lvbklEICAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxhc3RWZXJzaW9uSUQgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJlY2FsY3VsYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIGFsbCBsaW5rZWQgY29uZmlnIGl0ZW1zCiAgICBpZiAoJFJlY2FsY0N1ckluY2lTdGF0ZSkgewogICAgICAgICRTZWxmLT5DdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVmVyc2lvbntDb25maWdJdGVtSUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRWZXJzaW9uSUQ7Cn0KCj1oZWFkMiBWZXJzaW9uVXBkYXRlKCkKCnVwZGF0ZSBhIHZlcnNpb24KCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25VcGRhdGUoCiAgICAgICAgVmVyc2lvbklEICAgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVmVyc2lvbiAgICAgICAgICAgICAgICA9PiB7Li4ufSAgICAgICAgICAjIGVpdGhlciBWZXJzaW9uSUQgb3IgVmVyc2lvbiBpcyBtYW5kYXRvcnkKICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgRGVmaW5pdGlvbklEICAgICAgICAgICA9PiAxMjMsICAgICAgICAgICAjIG9wdGlvbmFsLCBJRCBvZiB0aGUgZGVmaW5pdGlvbiB3aGljaCB3YXMgdXNlZCBmb3IgY3JlYXRpbmcgdGhlIGlucHV0CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAnVGhlIE5hbWUnLCAgICAjIG9wdGlvbmFsCiAgICAgICAgVmVyc2lvblN0cmluZyAgICAgICAgICA9PiAnVGhlIFZlcnNpb24nLCAjIG9wdGlvbmFsCiAgICAgICAgRGVwbFN0YXRlSUQgICAgICAgICAgICA9PiA4LCAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgICAgICA9PiA0LCAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICA9PiAnQUJDRCcsICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgRHluYW1pY0ZpZWxkXzwkREZOYW1lPiA9PiAkVmFsdWUsICAgICAgICAjIG9wdGlvbmFsLCBvbmUgcGFyYW1ldGVyIGZvciBlYWNoIGR5bmFtaWMgZmllbGQgd2hpY2ggc2hvdWxkIGJlIHVwZGF0ZWQKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvblVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWZXJzaW9uID0gJFBhcmFte1ZlcnNpb259IHx8ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBdHRyaWJ1dGUhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAhJFZlcnNpb24gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFZlcnNpb24gb3IgVmVyc2lvbklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgSXRlbUlEID0+ICRWZXJzaW9uLT57Q2xhc3NJRH0sCiAgICApOwoKICAgIG15ICROYW1lTW9kdWxlT2JqZWN0OwogICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlc3tOYW1lTW9kdWxlfSA/ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9WzBdIDogJyc7CiAgICBpZiAoJE5hbWVNb2R1bGUpIHsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCJLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok5hbWU6OiROYW1lTW9kdWxlIikgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIG5hbWUgbW9kdWxlIGZvciBjbGFzcyAkVmVyc2lvbi0+e0NsYXNzfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBiYWNrZW5kIG9iamVjdAogICAgICAgICROYW1lTW9kdWxlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOYW1lOjokTmFtZU1vZHVsZSIpOwoKICAgICAgICAjIFRPRE86IEltcHJvdmUgYmVoYXZpb3VyIG9mIG1vZHVsZXMgd2hpY2ggYWxsb3cgbmFtZSByZXVzYWdlIGFuZCBkbyBub3QgYWx3YXlzIGRlbGV0ZSBhbmQgcmVjcmVhdGUgbmFtZXMKICAgICAgICAjIEluIGNhc2Ugd2UgaGF2ZSBhIG5hbWUgbW9kdWxlIHdoaWNoIGNyZWF0ZXMgbmFtZXMgaW5jcmVtZW50YWxseSwgd2UgY3VycmVudGx5IGhhdmUgdG8gZGVsZXRlIGZpcnN0IGFuZCByZWNyZWF0ZSB0aGVuCiAgICAgICAgaWYgKCAkTmFtZU1vZHVsZU9iamVjdC0+Y2FuKCdDb25maWdJdGVtTmFtZURlbGV0ZScpICkgewogICAgICAgICAgICAkTmFtZU1vZHVsZU9iamVjdC0+Q29uZmlnSXRlbU5hbWVEZWxldGUoICRWZXJzaW9uLT57TmFtZX0gKTsKICAgICAgICB9CgogICAgICAgICRQYXJhbXtOYW1lfSA9ICROYW1lTW9kdWxlT2JqZWN0LT5Db25maWdJdGVtTmFtZUNyZWF0ZSgKICAgICAgICAgICAgJFZlcnNpb24tPiUqLAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykgJiYgJFBhcmFte05hbWV9IG5lICRWZXJzaW9uLT57TmFtZX0gKSB7CgogICAgICAgICAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSAkU2VsZi0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRWZXJzaW9uLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkVmVyc2lvbi0+e0NsYXNzSUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc3RvcCBwcm9jZXNzaW5nIGlmIHRoZSBuYW1lIGlzIG5vdCB1bmlxdWUKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJE5hbWVEdXBsaWNhdGVzKSApIHsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGEgc3RyaW5nIG9mIGFsbCBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgICAgICBteSAkRHVwbGljYXRlcyA9IGpvaW4gJywgJywgQHskTmFtZUR1cGxpY2F0ZXN9OwoKICAgICAgICAgICAgICAgICMgd3JpdGUgYW4gZXJyb3IgbG9nIG1lc3NhZ2UgY29udGFpbmluZyBhbGwgdGhlIGR1cGxpY2F0ZSBJRHMKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBuYW1lICRQYXJhbXtOYW1lfSBpcyBhbHJlYWR5IGluIHVzZSAoQ29uZmlnSXRlbUlEczogJER1cGxpY2F0ZXMpISIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmVyc2lvblN0cmluZ01vZHVsZU9iamVjdDsKICAgIG15ICRWZXJzaW9uU3RyaW5nTW9kdWxlID0gJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblN0cmluZ01vZHVsZX0gPyAkQ2xhc3NQcmVmZXJlbmNlc3tWZXJzaW9uU3RyaW5nTW9kdWxlfVswXSA6ICcnOwogICAgaWYgKCRWZXJzaW9uU3RyaW5nTW9kdWxlKSB7CgogICAgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGV4aXN0cwogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6JFZlcnNpb25TdHJpbmdNb2R1bGUiKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjbGFzcyAkVmVyc2lvbi0+e0NsYXNzfSEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgYSBiYWNrZW5kIG9iamVjdAogICAgICAgICRWZXJzaW9uU3RyaW5nTW9kdWxlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgiS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpWZXJzaW9uU3RyaW5nOjokVmVyc2lvblN0cmluZ01vZHVsZSIpOwoKICAgICAgICAjIG92ZXJyaWRlIHBvc3NpYmxlIGluY29taW5nIHZlcnNpb24gc3RyaW5nCiAgICAgICAgJFZlcnNpb24tPntWZXJzaW9uU3RyaW5nfSA9ICRWZXJzaW9uU3RyaW5nTW9kdWxlT2JqZWN0LT5WZXJzaW9uU3RyaW5nR2V0KAogICAgICAgICAgICBWZXJzaW9uID0+IHsKICAgICAgICAgICAgICAgICRWZXJzaW9uLT4lKiwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRDYWNoZU9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKICAgIG15ICRSZWNhbGNDdXJJbmNpU3RhdGUgPSAwOwoKICAgIGlmICggYW55IHsgZGVmaW5lZCAkUGFyYW17JF99IH0gcXcvTmFtZSBWZXJzaW9uU3RyaW5nIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEIERlZmluaXRpb25JRCBEZXNjcmlwdGlvbi8gKSB7CiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgIGZvciBteSAkQXR0cmlidXRlIChxdy9OYW1lIFZlcnNpb25TdHJpbmcgRGVwbFN0YXRlSUQgSW5jaVN0YXRlSUQgRGVmaW5pdGlvbklEIERlc2NyaXB0aW9uLykgewogICAgICAgICAgICAkUGFyYW17JEF0dHJpYnV0ZX0gfHw9ICRWZXJzaW9uLT57JEF0dHJpYnV0ZX07CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSBleGlzdGluZyB2ZXJzaW9uCiAgICAgICAgbXkgJFVwZGF0ZVN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClVQREFURSBjb25maWdpdGVtX3ZlcnNpb24KICBTRVQgbmFtZSA9ID8sIHZlcnNpb25fc3RyaW5nID0gPywgZGVmaW5pdGlvbl9pZCA9ID8sIGRlcGxfc3RhdGVfaWQgPSA/LCBpbmNpX3N0YXRlX2lkID0gPywgZGVzY3JpcHRpb24gPSA/LCBjaGFuZ2VfdGltZSA9IGN1cnJlbnRfdGltZXN0YW1wLCBjaGFuZ2VfYnkgPSA/CiAgV0hFUkUgaWQgPSA/CkVORF9TUUwKICAgICAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgICAgICBcJFBhcmFte05hbWV9LAogICAgICAgICAgICAgICAgXCRQYXJhbXtWZXJzaW9uU3RyaW5nfSwKICAgICAgICAgICAgICAgIFwkUGFyYW17RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgICAgIFwkUGFyYW17RGVwbFN0YXRlSUR9LAogICAgICAgICAgICAgICAgXCRQYXJhbXtJbmNpU3RhdGVJRH0sCiAgICAgICAgICAgICAgICBcJFBhcmFte0Rlc2NyaXB0aW9ufSwKICAgICAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFwkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIHVubGVzcyAkVXBkYXRlU3VjY2VzczsKCiAgICAgICAgIyBUaGUgY29uZmlnIGl0ZW0gaXMgb25seSBhZmZlY3RlZCB3aGVuIHRoZSBsYXN0IHZlcnNpb24gd2FzIG1vZGlmaWVkCiAgICAgICAgaWYgKCAkVmVyc2lvbi0+e1ZlcnNpb25JRH0gZXEgJFZlcnNpb24tPntMYXN0VmVyc2lvbklEfSApIHsKICAgICAgICAgICAgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gPSAkVmVyc2lvbi0+e0NvbmZpZ0l0ZW1JRH07CgogICAgICAgICAgICAkUmVjYWxjQ3VySW5jaVN0YXRlID0gJFNlbGYtPl9VcGRhdGVDdXJBdHRyKAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgICAgIExhc3RWZXJzaW9uID0+ICRWZXJzaW9uLAogICAgICAgICAgICAgICAgVmVyc2lvbklEICAgPT4gJFZlcnNpb24tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENsZWFyIHRoZSBjYWNoZSBmb3IgYmFzZSBhdHRyaWJ1dGVzCiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICBLZXkgID0+IGpvaW4oCiAgICAgICAgICAgICAgICAgICAgJzo6JywgJ0NvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgREZEYXRhICAgID0+IDAsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICc6OicsICdDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZlcnNpb24tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAwLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICBLZXkgID0+IGpvaW4oICc6OicsICdWZXJzaW9uTmFtZUdldCcsIFZlcnNpb25JRCA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0gKSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgdHJpZ2dlciBWZXJzaW9uVXBkYXRlIGV2ZW50CiAgICAgICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgICAgICBFdmVudCA9PiAnVmVyc2lvblVwZGF0ZScsCiAgICAgICAgICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRWZXJzaW9uLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJFZlcnNpb24tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgICAgIE9sZERlcGxTdGF0ZSA9PiAkVmVyc2lvbi0+e0N1ckRlcGxTdGF0ZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsYXRlc3QgZGVmaW5pdGlvbiBmb3IgdGhlIGNsYXNzCiAgICBteSAkRGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFZlcnNpb24tPntDbGFzc0lEfSwKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSBAVXBkYXRlZER5bmFtaWNGaWVsZHM7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBrZXlzICVQYXJhbSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJEF0dHJpYnV0ZSA9fiBtL15EeW5hbWljRmllbGRfKC4rKS87CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskMX07CgogICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JDF9OwoKICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUhhbmRsZWQgID0+IDEsCiAgICAgICAgICAgIEV4dGVybmFsU291cmNlICAgICA9PiAkUGFyYW17RXh0ZXJuYWxTb3VyY2V9LAogICAgICAgICk7CgogICAgICAgIGlmICgkU3VjY2VzcykgewogICAgICAgICAgICBwdXNoIEBVcGRhdGVkRHluYW1pY0ZpZWxkcywgJER5bmFtaWNGaWVsZC0+e05hbWV9OwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgdmVyc2lvbiBkYXRhIHdpdGggYWN0dWFsIGR5bmFtaWMgZmllbGQgdmFsdWVzCiAgICAgICAgIyBpbXBvcnRhbnQgaW4gY2FzZSBvZiByZWZlcmVuY2UgZmllbGRzCiAgICAgICAgaWYgKCAkUGFyYW17RXh0ZXJuYWxTb3VyY2V9ICYmICREeW5hbWljRmllbGQtPntDb25maWd9e0ltcG9ydFNlYXJjaEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRWZXJzaW9uLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhcmFteyRBdHRyaWJ1dGV9ID0gJFZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICAjIENsZWFyIHRoZSBjYWNoZSBmb3IgZHluYW1pYyBmaWVsZHMsIHRvbwogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgIERGRGF0YSAgICA9PiAxLAogICAgICAgICksCiAgICApOwogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVmVyc2lvbi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIERGRGF0YSAgICAgICA9PiAxLAogICAgICAgICksCiAgICApOwoKICAgIGZvciBteSAkTmFtZSAoQFVwZGF0ZWREeW5hbWljRmllbGRzKSB7CgogICAgICAgICMgcHJlcGFyZSByZWFkYWJsZSB2YWx1ZXMgZm9yIHRoZSBoaXN0b3J5CiAgICAgICAgbXkgJFJlYWRhYmxlVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+UmVhZGFibGVWYWx1ZVJlbmRlcigKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskTmFtZX0sCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17ICdEeW5hbWljRmllbGRfJyAuICROYW1lIH0sCiAgICAgICAgKTsKICAgICAgICBteSAkUmVhZGFibGVPbGRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5SZWFkYWJsZVZhbHVlUmVuZGVyKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyROYW1lfSwKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWZXJzaW9uLT57ICdEeW5hbWljRmllbGRfJyAuICROYW1lIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBUcmlnZ2VyIHRoZSBkeW5hbWljIGZpZWxkIHVwZGF0ZSBldmVudC4KICAgICAgICAjIFRoaXMgbWlnaHQgdXBkYXRlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuCiAgICAgICAgIyBBbHNvIHBhc3MgaW4gdGhlIGxhc3QgdmVyc2lvbiBpbiBvcmRlciB0byBhbGxvdyBmb3Igc3BlY2lhbCBoYW5kbGluZyB3aGVuIHRoZSBsYXN0IHZlcnNpb24gaXMgY2hhbmdlZC4KICAgICAgICAkU2VsZi0+RXZlbnRIYW5kbGVyKAogICAgICAgICAgICBFdmVudCA9PiAnQ29uZmlnSXRlbUR5bmFtaWNGaWVsZFVwZGF0ZV8nIC4gJE5hbWUsCiAgICAgICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgICAgIEZpZWxkTmFtZSAgICAgICAgICAgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgICAgICAgPT4gJFBhcmFteyAnRHluYW1pY0ZpZWxkXycgLiAkTmFtZSB9LAogICAgICAgICAgICAgICAgT2xkVmFsdWUgICAgICAgICAgICAgICAgPT4gJFZlcnNpb24tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUgfSwKICAgICAgICAgICAgICAgIFJlYWRhYmxlVmFsdWUgICAgICAgICAgID0+ICRSZWFkYWJsZVZhbHVlLT57VmFsdWV9LAogICAgICAgICAgICAgICAgUmVhZGFibGVPbGRWYWx1ZSAgICAgICAgPT4gJFJlYWRhYmxlT2xkVmFsdWUtPntWYWx1ZX0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICA9PiAkVmVyc2lvbi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtVmVyc2lvbklEICAgICA9PiAkVmVyc2lvbi0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTGFzdFZlcnNpb25JRCA9PiAkVmVyc2lvbi0+e0xhc3RWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICgkUmVjYWxjQ3VySW5jaVN0YXRlKSB7CgogICAgICAgICMgcmVjYWxjdWxhdGUgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgYWxsIGxpbmtlZCBjb25maWcgaXRlbXMKICAgICAgICAkU2VsZi0+Q3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZlcnNpb24tPntDb25maWdJdGVtSUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWZXJzaW9uRGVsZXRlKCkKCmRlbGV0ZSBhbiBleGlzdGluZyB2ZXJzaW9uIG9yIHZlcnNpb25zCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRlbGV0ZSgKICAgICAgICBWZXJzaW9uSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKCm9yCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRlbGV0ZSgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMzIxLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCm9yCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRlbGV0ZSgKICAgICAgICBWZXJzaW9uSURzID0+IFsgMSwgMiwgMywgNCBdLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbkRlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAhJFBhcmFte1ZlcnNpb25JRH0gJiYgISRQYXJhbXtDb25maWdJdGVtSUR9ICYmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtWZXJzaW9uSURzfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBWZXJzaW9uSUQsIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSURzIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFZlcnNpb25MaXN0ID0gW107CiAgICBpZiAoICRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgIHB1c2ggQHskVmVyc2lvbkxpc3R9LCAkUGFyYW17VmVyc2lvbklEfTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte1ZlcnNpb25JRHN9ICkgewogICAgICAgIHB1c2ggQHskVmVyc2lvbkxpc3R9LCBAeyAkUGFyYW17VmVyc2lvbklEc30gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICMgZ2V0IHZlcnNpb24gbGlzdAogICAgICAgICRWZXJzaW9uTGlzdCA9ICRTZWxmLT5WZXJzaW9uTGlzdCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDEgaWYgIXNjYWxhciBAeyRWZXJzaW9uTGlzdH07CgogICAgIyBnZXQgY29uZmlnIGl0ZW0gaWQgZm9yIHZlcnNpb24gKG5lZWRlZCBmb3IgZXZlbnQgaGFuZGxpbmcpCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgIyB0byBzdG9yZSB1bmlxdWUgY29uZmlnIGl0ZW0gaWRzIGlmIHRoZXJlIGFyZSB2ZXJzaW9ucyBmcm9tIGRpZmZlcmVudCBjb25maWcgaXRlbXMKICAgIG15ICVDb25maWdJdGVtSURzOwoKICAgIG15ICRTdWNjZXNzOwogICAgZm9yIG15ICRWZXJzaW9uSUQgKCBAeyRWZXJzaW9uTGlzdH0gKSB7CgogICAgICAgICMgZ2V0IGNvbmZpZ2l0ZW0gaWQgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSB8fCAkUGFyYW17VmVyc2lvbklEc30gKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkU2VsZi0+VmVyc2lvbkNvbmZpZ0l0ZW1JREdldCgKICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbklELAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyByZW1lbWJlciB0aGUgdW5pcXVlIGNvbmZpZyBpdGVtIGlkcwogICAgICAgICRDb25maWdJdGVtSURzeyRDb25maWdJdGVtSUR9ID0gMTsKCiAgICAgICAgIyBnZXQgYSBsaXN0IG9mIGFsbCBhdHRhY2htZW50cwogICAgICAgIG15IEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJFNlbGYtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0gdmVyc2lvbgogICAgICAgIEZJTEVOQU1FOgogICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIGRlbGV0ZSB0aGUgYXR0YWNobWVudAogICAgICAgICAgICBteSAkRGVsZXRpb25TdWNjZXNzID0gJFNlbGYtPlZlcnNpb25BdHRhY2htZW50RGVsZXRlKAogICAgICAgICAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJERlbGV0aW9uU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlVua25vd24gcHJvYmxlbSB3aGVuIGRlbGV0aW5nIGF0dGFjaG1lbnQgJEZpbGVuYW1lIG9mIENvbmZpZ0l0ZW0gVmVyc2lvbiAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIiRWZXJzaW9uSUQuIFBsZWFzZSBjaGVjayB0aGUgVmlydHVhbEZTIGJhY2tlbmQgZm9yIHN0YWxlICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiZmlsZXMhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIGR5bmFtaWMgZmllbGQgdmFsdWVzIGZvciB0aGlzIHZlcnNpb24KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnKS0+T2JqZWN0VmFsdWVzRGVsZXRlKAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIE9iamVjdElEICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB2ZXJzaW9uCiAgICAgICAgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRWZXJzaW9uSUQgXSwKICAgICAgICApOwoKICAgICAgICAjIHRyaWdnZXIgVmVyc2lvbkRlbGV0ZSBldmVudCB3aGVuIGRlbGV0aW9uIHdhcyBzdWNjZXNzZnVsCiAgICAgICAgaWYgKCRTdWNjZXNzKSB7CgogICAgICAgICAgICAkU2VsZi0+RXZlbnRIYW5kbGVyKAogICAgICAgICAgICAgICAgRXZlbnQgPT4gJ1ZlcnNpb25EZWxldGUnLAogICAgICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZGVsZXRlIGFmZmVjdGVkIGNhY2hlcwogICAgICAgICAgICBmb3IgbXkgJERGRGF0YSAocXcoMCAxKSkgewogICAgICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgICAgICAgICBERkRhdGEgICAgPT4gJERGRGF0YQogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICBLZXkgID0+IGpvaW4oICc6OicsICdWZXJzaW9uTmFtZUdldCcsIFZlcnNpb25JRCA9PiAkVmVyc2lvbklEICksCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBkZWxldGUgJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uQ29uZmlnSXRlbUlER2V0fS0+eyRWZXJzaW9uSUR9OwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAlQ29uZmlnSXRlbUlEcyApIHsKCiAgICAgICAgIyBkZWxldGUgYWZmZWN0ZWQgY2FjaGVzIGZvciBDb25maWdJdGVtSUQgKG1vc3QgcmVjZW50IHZlcnNpb24gbWlnaHQgaGF2ZSBiZWVuIHJlbW92ZWQpCiAgICAgICAgZm9yIG15ICRERkRhdGEgKHF3KDAgMSkpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgICAgIEtleSAgPT4gam9pbigKICAgICAgICAgICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgREZEYXRhICAgICAgID0+ICRERkRhdGEKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiBqb2luKCAnOjonLCAnVmVyc2lvbk5hbWVHZXQnLCBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCApLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aGVhZDIgVmVyc2lvblNlYXJjaCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBsaXN0IGFzIGFuIGFycmF5IHJlZmVyZW5jZQoKICAgIG15ICRDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25TZWFyY2goCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdUaGUgTmFtZScsICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgOSwgOCwgNywgNiBdLCAgIyAob3B0aW9uYWwpCiAgICAgICAgRGVwbFN0YXRlSURzID0+IFsgMzIxLCAxMjMgXSwgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSW5jaVN0YXRlSURzID0+IFsgMzIxLCAxMjMgXSwgICAgIyAob3B0aW9uYWwpCgogICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLCAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQoKICAgICAgICBPcmRlckJ5ID0+IFsgJ0NvbmZpZ0l0ZW1JRCcsICdOdW1iZXInIF0sICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgIyBkZWZhdWx0OiBbICdDb25maWdJdGVtSUQnIF0KICAgICAgICAjIChDb25maWdJdGVtSUQsIE5hbWUsIE51bWJlciwgQ2xhc3NJRCwgRGVwbFN0YXRlSUQsIEluY2lTdGF0ZUlECiAgICAgICAgIyBDcmVhdGVUaW1lLCBDcmVhdGVCeSwgQ2hhbmdlVGltZSwgQ2hhbmdlQnkpCgogICAgICAgICMgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgT3JkZXJCeToKICAgICAgICAjIFRoZSBPcmRlckJ5RGlyZWN0aW9uIGNhbiBiZSBzcGVjaWZpZWQgZm9yIGVhY2ggT3JkZXJCeSBhdHRyaWJ1dGUuCiAgICAgICAgIyBUaGUgcGFpcmluZyBpcyBtYWRlIGJ5IHRoZSBhcnJheSBpbmRpY2VzLgoKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsgJ1VwJywgJ0Rvd24nIF0sICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAjIGRlZmF1bHQ6IFsgJ1VwJyBdCiAgICAgICAgIyAoRG93biB8IFVwKQoKICAgICAgICBMaW1pdCAgICAgICAgICA9PiAxMjIsICAjIChvcHRpb25hbCkKICAgICAgICBVc2luZ1dpbGRjYXJkcyA9PiAwLCAgICAjIChvcHRpb25hbCkgZGVmYXVsdCAxCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25TZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCBkZWZhdWx0IHZhbHVlcwogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17VXNpbmdXaWxkY2FyZHN9ICkgewogICAgICAgICRQYXJhbXtVc2luZ1dpbGRjYXJkc30gPSAxOwogICAgfQoKICAgICMgdmVyaWZ5IHRoYXQgYWxsIHBhc3NlZCBhcnJheSBwYXJhbWV0ZXJzIGNvbnRhaW4gYW4gYXJyYXlyZWYKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRBcmd1bWVudCAoCiAgICAgICAgcXcoCiAgICAgICAgICAgIE9yZGVyQnkKICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbgogICAgICAgICkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFBhcmFteyRBcmd1bWVudH0gfHw9IFtdOwoKICAgICAgICAgICAgbmV4dCBBUkdVTUVOVDsKICAgICAgICB9CgogICAgICAgIGlmICggcmVmICRQYXJhbXskQXJndW1lbnR9IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkQXJndW1lbnQgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IG9yZGVyIGFuZCBvcmRlciBkaXJlY3Rpb24KICAgIGlmICggIUB7ICRQYXJhbXtPcmRlckJ5fSB9ICkgewogICAgICAgICRQYXJhbXtPcmRlckJ5fSA9IFsnQ29uZmlnSXRlbUlEJ107CiAgICB9CiAgICBpZiAoICFAeyAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gfSApIHsKICAgICAgICAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gPSBbJ1VwJ107CiAgICB9CgogICAgIyBkZWZpbmUgb3JkZXIgdGFibGUKICAgIG15ICVPcmRlckJ5VGFibGUgPSAoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICd2ci5jb25maWdpdGVtX2lkJywKICAgICAgICBOYW1lICAgICAgICAgPT4gJ3ZyLm5hbWUnLAogICAgICAgIE51bWJlciAgICAgICA9PiAnY2kuY29uZmlnaXRlbV9udW1iZXInLAogICAgICAgIENsYXNzSUQgICAgICA9PiAnY2kuY2xhc3NfaWQnLAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAndnIuZGVwbF9zdGF0ZV9pZCcsCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICd2ci5pbmNpX3N0YXRlX2lkJywKICAgICAgICBDcmVhdGVUaW1lICAgPT4gJ2NpLmNyZWF0ZV90aW1lJywKICAgICAgICBDcmVhdGVCeSAgICAgPT4gJ2NpLmNyZWF0ZV9ieScsCgogICAgICAgICMgdGhlIGNoYW5nZSB0aW1lIG9mIHRoZSBDSSBpcyB0aGUgc2FtZSBhcyB0aGUgY3JlYXRlIHRpbWUgb2YgdGhlIHZlcnNpb24hCiAgICAgICAgQ2hhbmdlVGltZSA9PiAndnIuY3JlYXRlX3RpbWUnLAoKICAgICAgICBDaGFuZ2VCeSA9PiAnY2kuY2hhbmdlX2J5JywKICAgICk7CgogICAgIyBjaGVjayBpZiBPcmRlckJ5IGNvbnRhaW5zIG9ubHkgdW5pcXVlIHZhbGlkIHZhbHVlcwogICAgbXkgJU9yZGVyQnlTZWVuOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgIGlmICggISRPcmRlckJ5IHx8ICEkT3JkZXJCeVRhYmxleyRPcmRlckJ5fSB8fCAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ICkgewoKICAgICAgICAgICAgIyBmb3VuZCBhbiBlcnJvcgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiT3JkZXJCeSBjb250YWlucyBpbnZhbGlkIHZhbHVlICckT3JkZXJCeScgIgogICAgICAgICAgICAgICAgICAgIC4gJ29yIHRoZSB2YWx1ZSBpcyB1c2VkIG1vcmUgdGhhbiBvbmNlIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgdGhlIHZhbHVlIHRvIGNoZWNrIGlmIGl0IGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UKICAgICAgICAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ID0gMTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIE9yZGVyQnlEaXJlY3Rpb24gYXJyYXkgY29udGFpbnMgb25seSAnVXAnIG9yICdEb3duJwogICAgRElSRUNUSU9OOgogICAgZm9yIG15ICREaXJlY3Rpb24gKCBAeyAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gfSApIHsKCiAgICAgICAgIyBvbmx5ICdVcCcgb3IgJ0Rvd24nIGFsbG93ZWQKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAkRGlyZWN0aW9uIGVxICdVcCc7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgJERpcmVjdGlvbiBlcSAnRG93bic7CgogICAgICAgICMgZm91bmQgYW4gZXJyb3IKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk9yZGVyQnlEaXJlY3Rpb24gY2FuIG9ubHkgY29udGFpbiAnVXAnIG9yICdEb3duJyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYXNzZW1ibGUgdGhlIE9SREVSIEJZIGNsYXVzZQogICAgbXkgQFNRTE9yZGVyQnk7CiAgICBteSAkQ291bnQgPSAwOwogICAgbXkgQE9yZGVyQnlTZWxlY3RDb2x1bW5zOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgICMgc2V0IHRoZSBkZWZhdWx0IG9yZGVyIGRpcmVjdGlvbgogICAgICAgIG15ICREaXJlY3Rpb24gPSAnREVTQyc7CgogICAgICAgICMgYWRkIHRoZSBnaXZlbiBvcmRlciBkaXJlY3Rpb24KICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufS0+WyRDb3VudF0gKSB7CiAgICAgICAgICAgIGlmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnVXAnICkgewogICAgICAgICAgICAgICAgJERpcmVjdGlvbiA9ICdBU0MnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAkRGlyZWN0aW9uID0gJ0RFU0MnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBTUUwKICAgICAgICBwdXNoIEBTUUxPcmRlckJ5LCAgICAgICAgICAgIiRPcmRlckJ5VGFibGV7JE9yZGVyQnl9ICREaXJlY3Rpb24iOwogICAgICAgIHB1c2ggQE9yZGVyQnlTZWxlY3RDb2x1bW5zLCAkT3JkZXJCeVRhYmxleyRPcmRlckJ5fTsKCiAgICB9CiAgICBjb250aW51ZSB7CiAgICAgICAgJENvdW50Kys7CiAgICB9CgogICAgIyBnZXQgbGlrZSBlc2NhcGUgc3RyaW5nIG5lZWRlZCBmb3Igc29tZSBkYXRhYmFzZXMgKGUuZy4gb3JhY2xlKQogICAgbXkgJExpa2VFc2NhcGVTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+R2V0RGF0YWJhc2VGdW5jdGlvbignTGlrZUVzY2FwZVN0cmluZycpOwoKICAgICMgYWRkIG5hbWUgdG8gc3FsIHdoZXJlIGFycmF5CiAgICBteSBAU1FMV2hlcmU7CiAgICBpZiAoIGRlZmluZWQgJFBhcmFte05hbWV9ICYmICRQYXJhbXtOYW1lfSBuZSAnJyApIHsKCiAgICAgICAgIyBkdXBsaWNhdGUgdGhlIG5hbWUKICAgICAgICBteSAkTmFtZSA9ICRQYXJhbXtOYW1lfTsKCiAgICAgICAgIyBxdW90ZQogICAgICAgICROYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1b3RlKCROYW1lKTsKCiAgICAgICAgaWYgKCAkUGFyYW17VXNpbmdXaWxkY2FyZHN9ICkgewoKICAgICAgICAgICAgIyBwcmVwYXJlIGxpa2Ugc3RyaW5nCiAgICAgICAgICAgICRTZWxmLT5fUHJlcGFyZUxpa2VTdHJpbmcoIFwkTmFtZSApOwoKICAgICAgICAgICAgcHVzaCBAU1FMV2hlcmUsICJMT1dFUih2ci5uYW1lKSBMSUtFIExPV0VSKCckTmFtZScpICRMaWtlRXNjYXBlU3RyaW5nIjsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHB1c2ggQFNRTFdoZXJlLCAiTE9XRVIodnIubmFtZSkgPSBMT1dFUignJE5hbWUnKSI7CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGFycmF5IHBhcmFtcwogICAgbXkgJUFycmF5UGFyYW1zID0gKAogICAgICAgIENsYXNzSURzICAgICA9PiAnY2kuaWQgPSB2ci5jb25maWdpdGVtX2lkIEFORCBjaS5jbGFzc19pZCcsCiAgICAgICAgRGVwbFN0YXRlSURzID0+ICd2ci5kZXBsX3N0YXRlX2lkJywKICAgICAgICBJbmNpU3RhdGVJRHMgPT4gJ3ZyLmluY2lfc3RhdGVfaWQnLAogICAgKTsKCiAgICBBUlJBWVBBUkFNOgogICAgZm9yIG15ICRBcnJheVBhcmFtICggc29ydCBrZXlzICVBcnJheVBhcmFtcyApIHsKCiAgICAgICAgbmV4dCBBUlJBWVBBUkFNIGlmICEkUGFyYW17JEFycmF5UGFyYW19OwoKICAgICAgICBpZiAoIHJlZiAkUGFyYW17JEFycmF5UGFyYW19IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkQXJyYXlQYXJhbSBtdXN0IGJlIGFuIGFycmF5IHJlZmVyZW5jZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBuZXh0IEFSUkFZUEFSQU0gaWYgIUB7ICRQYXJhbXskQXJyYXlQYXJhbX0gfTsKCiAgICAgICAgIyBxdW90ZSBhcyBpbnRlZ2VyCiAgICAgICAgZm9yIG15ICRPbmVQYXJhbSAoIEB7ICRQYXJhbXskQXJyYXlQYXJhbX0gfSApIHsKICAgICAgICAgICAgJE9uZVBhcmFtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1b3RlKCAkT25lUGFyYW0sICdJbnRlZ2VyJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgc3RyaW5nCiAgICAgICAgbXkgJEluU3RyaW5nID0gam9pbiBxeywgfSwgQHsgJFBhcmFteyRBcnJheVBhcmFtfSB9OwoKICAgICAgICBwdXNoIEBTUUxXaGVyZSwgIiRBcnJheVBhcmFtc3sgJEFycmF5UGFyYW0gfSBJTiAoJEluU3RyaW5nKSI7CiAgICB9CgogICAgIyBhZGQgcHJldmlvdXMgdmVyc2lvbiBwYXJhbQogICAgaWYgKCAhJFBhcmFte1ByZXZpb3VzVmVyc2lvblNlYXJjaH0gKSB7CiAgICAgICAgcHVzaCBAU1FMV2hlcmUsICdjaS5sYXN0X3ZlcnNpb25faWQgPSB2ci5pZCc7CiAgICB9CgogICAgIyBjcmVhdGUgd2hlcmUgc3RyaW5nCiAgICBteSAkV2hlcmVTdHJpbmcgPSBAU1FMV2hlcmUgPyAnIFdIRVJFICcgLiBqb2luIHF7IEFORCB9LCBAU1FMV2hlcmUgOiAnJzsKCiAgICAjIHNldCBsaW1pdCwgcXVvdGUgYXMgaW50ZWdlcgogICAgaWYgKCAkUGFyYW17TGltaXR9ICkgewogICAgICAgICRQYXJhbXtMaW1pdH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVvdGUoICRQYXJhbXtMaW1pdH0sICdJbnRlZ2VyJyApOwogICAgfQoKICAgICMgYWRkIHRoZSBvcmRlciBieSBjb2x1bW5zIGFsc28gdG8gdGhlIHNlbGVjdGVkIGNvbHVtbnMKICAgIG15ICRPcmRlckJ5U2VsZWN0U3RyaW5nID0gJyc7CiAgICBpZiAoQE9yZGVyQnlTZWxlY3RDb2x1bW5zKSB7CiAgICAgICAgJE9yZGVyQnlTZWxlY3RTdHJpbmcgPSBqb2luICcsICcsIEBPcmRlckJ5U2VsZWN0Q29sdW1uczsKICAgICAgICAkT3JkZXJCeVNlbGVjdFN0cmluZyA9ICcsICcgLiAkT3JkZXJCeVNlbGVjdFN0cmluZzsKICAgIH0KCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgJFNRTCA9ICJTRUxFQ1QgRElTVElOQ1QgdnIuY29uZmlnaXRlbV9pZCAkT3JkZXJCeVNlbGVjdFN0cmluZyAiCiAgICAgICAgLiAnRlJPTSBjb25maWdpdGVtIGNpLCBjb25maWdpdGVtX3ZlcnNpb24gdnIgJwogICAgICAgIC4gJFdoZXJlU3RyaW5nOwoKICAgICMgYWRkIHRoZSBPUkRFUiBCWSBjbGF1c2UKICAgIGlmIChAU1FMT3JkZXJCeSkgewogICAgICAgICRTUUwgLj0gJyBPUkRFUiBCWSAnOwogICAgICAgICRTUUwgLj0gam9pbiAnLCAnLCBAU1FMT3JkZXJCeTsKICAgICAgICAkU1FMIC49ICcgJzsKICAgIH0KCiAgICAjIGFzayB0aGUgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gJFBhcmFte0xpbWl0fSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBAQ29uZmlnSXRlbUxpc3Q7CiAgICB3aGlsZSAoIG15ICgkSWQpID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBDb25maWdJdGVtTGlzdCwgJElkOwogICAgfQoKICAgIHJldHVybiBcQENvbmZpZ0l0ZW1MaXN0Owp9Cgo9aGVhZDIgVmVyc2lvbkF0dGFjaG1lbnRBZGQoKQoKYWRkcyBhbiBhdHRhY2htZW50IHRvIGEgY29uZmlnIGl0ZW0KCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEFkZCgKICAgICAgICBWZXJzaW9uSUQgICAgPT4gMSwKICAgICAgICBGaWxlbmFtZSAgICAgICAgPT4gJ2ZpbGVuYW1lJywKICAgICAgICBDb250ZW50ICAgICAgICAgPT4gJ2NvbnRlbnQnLAogICAgICAgIENvbnRlbnRUeXBlICAgICA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25BdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhWZXJzaW9uSUQgRmlsZW5hbWUgQ29udGVudCBDb250ZW50VHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgd3JpdGUgdG8gdmlydHVhbCBmcwogICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPldyaXRlKAogICAgICAgIEZpbGVuYW1lICAgID0+ICJDb25maWdJdGVtVmVyc2lvbi8kUGFyYW17VmVyc2lvbklEfS8kUGFyYW17RmlsZW5hbWV9IiwKICAgICAgICBNb2RlICAgICAgICA9PiAnYmluYXJ5JywKICAgICAgICBDb250ZW50ICAgICA9PiBcJFBhcmFte0NvbnRlbnR9LAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgQ29udGVudElEICAgPT4gJFBhcmFte0NvbnRlbnRJRH0sCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICRQYXJhbXtDb250ZW50VHlwZX0sCiAgICAgICAgICAgIFZlcnNpb25JRCAgID0+ICRQYXJhbXtWZXJzaW9uSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBlcnJvcgogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW5ub3QgYWRkIGF0dGFjaG1lbnQgZm9yIGNvbmZpZyBpdGVtIHZlcnNpb24gJFBhcmFte1ZlcnNpb25JRH0iLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFZlcnNpb25BdHRhY2htZW50RGVsZXRlKCkKCkRlbGV0ZSB0aGUgZ2l2ZW4gZmlsZSBmcm9tIHRoZSB2aXJ0dWFsIGZpbGVzeXN0ZW0uCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgVmVyc2lvbklEID0+IDEyMywgICAgICAgICAgICAgICAjIHVzZWQgaW4gZXZlbnQgaGFuZGxpbmcsIGUuZy4gZm9yIGxvZ2dpbmcgdGhlIGhpc3RvcnkKICAgICAgICBGaWxlbmFtZSAgICAgPT4gJ1Byb2plY3RwbGFuLnBkZicsICMgaWRlbnRpZmllcyB0aGUgYXR0YWNobWVudCAodG9nZXRoZXIgd2l0aCB0aGUgVmVyc2lvbklEKQogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBWZXJzaW9uQXR0YWNobWVudERlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVmVyc2lvbklEIEZpbGVuYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcHJlZml4CiAgICBteSAkRmlsZW5hbWUgPSAnQ29uZmlnSXRlbVZlcnNpb24vJyAuICRQYXJhbXtWZXJzaW9uSUR9IC4gJy8nIC4gJFBhcmFte0ZpbGVuYW1lfTsKCiAgICAjIGRlbGV0ZSBmaWxlCiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RGVsZXRlKAogICAgICAgIEZpbGVuYW1lID0+ICRGaWxlbmFtZSwKICAgICk7CgogICAgIyBjaGVjayBmb3IgZXJyb3IKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IGRlbGV0ZSBhdHRhY2htZW50ICRGaWxlbmFtZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gJFN1Y2Nlc3M7Cn0KCj1oZWFkMiBWZXJzaW9uQXR0YWNobWVudEdldCgpCgpUaGlzIG1ldGhvZCByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IG9uZSBzcGVjaWZpYyBhdHRhY2htZW50LgoKICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50R2V0KAogICAgICAgIFZlcnNpb25JRCA9PiA0LAogICAgICAgIEZpbGVuYW1lICAgICA9PiAndGVzdC50eHQnLAogICAgKTsKCnJldHVybnMKCiAgICB7CiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBBbGxQcmVmZXJlbmNlcyA9PiAndGVzdCcsCiAgICAgICAgfSwKICAgICAgICBGaWxlbmFtZSAgICA9PiAndGVzdC50eHQnLAogICAgICAgIENvbnRlbnQgICAgID0+ICdjb250ZW50JywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgRmlsZXNpemUgICAgPT4gMTIzNDg0MDksCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgfQoKPWN1dAoKc3ViIFZlcnNpb25BdHRhY2htZW50R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFZlcnNpb25JRCBGaWxlbmFtZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcHJlZml4CiAgICBteSAkRmlsZW5hbWUgPSAnQ29uZmlnSXRlbVZlcnNpb24vJyAuICRQYXJhbXtWZXJzaW9uSUR9IC4gJy8nIC4gJFBhcmFte0ZpbGVuYW1lfTsKCiAgICAjIGZpbmQgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0KICAgIG15IEBBdHRhY2htZW50cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RmluZCgKICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyByZXR1cm4gZXJyb3IgaWYgZmlsZSBkb2VzIG5vdCBleGlzdAogICAgaWYgKCAhQEF0dGFjaG1lbnRzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISIsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YSBmb3IgYXR0YWNobWVudAogICAgbXkgJUF0dGFjaG1lbnREYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5SZWFkKAogICAgICAgIEZpbGVuYW1lID0+ICRGaWxlbmFtZSwKICAgICAgICBNb2RlICAgICA9PiAnYmluYXJ5JywKICAgICk7CgogICAgbXkgJEF0dGFjaG1lbnRJbmZvID0gewogICAgICAgICVBdHRhY2htZW50RGF0YSwKICAgICAgICBGaWxlbmFtZSAgICA9PiAkUGFyYW17RmlsZW5hbWV9LAogICAgICAgIENvbnRlbnQgICAgID0+ICR7ICRBdHRhY2htZW50RGF0YXtDb250ZW50fSB9LAogICAgICAgIENvbnRlbnRUeXBlID0+ICRBdHRhY2htZW50RGF0YXtQcmVmZXJlbmNlc30tPntDb250ZW50VHlwZX0sCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgIEZpbGVzaXplICAgID0+ICRBdHRhY2htZW50RGF0YXtQcmVmZXJlbmNlc30tPntGaWxlc2l6ZVJhd30sCiAgICB9OwoKICAgIHJldHVybiAkQXR0YWNobWVudEluZm87Cn0KCj1oZWFkMiBWZXJzaW9uQXR0YWNobWVudExpc3QoKQoKUmV0dXJucyBhbiBhcnJheSB3aXRoIGFsbCBhdHRhY2htZW50cyBvZiB0aGUgZ2l2ZW4gY29uZmlnIGl0ZW0uCgogICAgbXkgQEF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICBWZXJzaW9uSUQgPT4gMTIzLAogICAgKTsKCnJldHVybnMKCiAgICBAQXR0YWNobWVudHMgPSAoCiAgICAgICAgJ2ZpbGVuYW1lLnR4dCcsCiAgICAgICAgJ290aGVyX2ZpbGUucGRmJywKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbkF0dGFjaG1lbnRMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBWZXJzaW9uSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBmaW5kIGFsbCBhdHRhY2htZW50cyBvZiB0aGlzIGNvbmZpZyBpdGVtCiAgICBteSBAQXR0YWNobWVudHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPkZpbmQoCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgfSwKICAgICk7CgogICAgZm9yIG15ICRGaWxlbmFtZSAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICMgcmVtb3ZlIGV4dHJhIGluZm9ybWF0aW9uIGZyb20gZmlsZW5hbWUKICAgICAgICAkRmlsZW5hbWUgPX4gc3sgXEEgQ29uZmlnSXRlbVZlcnNpb24gLyBcZCsgLyB9e314bXM7CiAgICB9CgogICAgcmV0dXJuIEBBdHRhY2htZW50czsKfQoKPWhlYWQyIFZlcnNpb25BdHRhY2htZW50RXhpc3RzKCkKCkNoZWNrcyBpZiBhIGZpbGUgd2l0aCBhIGdpdmVuIGZpbGVuYW1lIGV4aXN0cy4KCiAgICBteSAkRXhpc3RzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50RXhpc3RzKAogICAgICAgIEZpbGVuYW1lICA9PiAndGVzdC50eHQnLAogICAgICAgIFZlcnNpb25JRCA9PiAxMjMsCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25BdHRhY2htZW50RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhGaWxlbmFtZSBWZXJzaW9uSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RmluZCgKICAgICAgICBGaWxlbmFtZSA9PiAnQ29uZmlnSXRlbVZlcnNpb24vJyAuICRQYXJhbXtWZXJzaW9uSUR9IC4gJy8nIC4gJFBhcmFte0ZpbGVuYW1lfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfVXBkYXRlQ3VyQXR0ciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDdXJJbmNpU3RhdGVJRDsKICAgIG15ICRSZWNhbGNDdXJJbmNpU3RhdGUgPSAwOwoKICAgICMgaWYgdGhlIGxhc3QgdmVyc2lvbiBkb2VzIG5vdCB5ZXQgaGF2ZSBhIEN1ckluY2lTdGF0ZUlEIHlldCB0aGUgQ29uZmlnSXRlbSBpcyBuZXcKICAgICMgc2V0IGN1cnJlbnQgSW5jaVN0YXRlSUQ7IHJlY2FsY3VsYXRpb24gaXMgbm90IG5lY2Vzc2FyeSAobm8gbGlua3MgY2FuIGV4aXN0IHlldCkKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0xhc3RWZXJzaW9ufXtDdXJJbmNpU3RhdGVJRH0gKSB7CiAgICAgICAgJEN1ckluY2lTdGF0ZUlEID0gJFBhcmFte1ZlcnNpb259e0luY2lTdGF0ZUlEfTsKICAgIH0KCiAgICAjIGlmIHRoZSBjb25maWcgaXRlbSB1cGRhdGUgZG9lcyBub3QgY2hhbmdlIHRoZSBJbmNpU3RhdGVJRAogICAgIyB3ZSBqdXN0IGtlZXAgdGhlIEN1ckluY2lTdGF0ZUlEOyBubyByZWNhbGN1bGF0aW9uCiAgICBlbHNpZiAoICRQYXJhbXtWZXJzaW9ufXtJbmNpU3RhdGVJRH0gZXEgJFBhcmFte0xhc3RWZXJzaW9ufXtJbmNpU3RhdGVJRH0gKSB7CiAgICAgICAgJEN1ckluY2lTdGF0ZUlEID0gJFBhcmFte0xhc3RWZXJzaW9ufXtDdXJJbmNpU3RhdGVJRH07CiAgICB9CgogICAgIyBpZiB0aGUgaW5jaWRlbnQgc3RhdGUgY2hhbmdlcywgd2Ugc3RhcnQgdGhlIHJlY2FsY3VsYXRpb24KICAgICMgd2UgZG8gbm90IHRlc3QgZm9yIGNhc2VzIGxpa2Ugc2FtZSBJbmNpU3RhdGVUeXBlLCBvciBuZXcgSW5jaVN0YXRlIGVxIGxhc3QgQ3VySW5jaVN0YXRlCiAgICBlbHNlIHsKICAgICAgICAkQ3VySW5jaVN0YXRlSUQgICAgID0gJFBhcmFte1ZlcnNpb259e0luY2lTdGF0ZUlEfTsKICAgICAgICAkUmVjYWxjQ3VySW5jaVN0YXRlID0gMTsKICAgIH0KCiAgICAjIFVwZGF0ZSBsYXN0IHZlcnNpb24sIGN1cl9pbmNpX3N0YXRlX2lkLCBjdXJfZGVwbF9zdGF0ZV9pZCBvZiB0aGUgY29uZmlnIGl0ZW0uCiAgICAjIGN1cl9pbmNpX3N0YXRlX2lkIGlzIG5lZWRlZCBieSBDdXJJbmNpU3RhdGVSZWNhbGMoKS4KICAgIG15ICRVcGRhdGVTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKVVBEQVRFIGNvbmZpZ2l0ZW0KICBTRVQKICAgIGxhc3RfdmVyc2lvbl9pZCAgID0gPywKICAgIGN1cl9pbmNpX3N0YXRlX2lkID0gPywKICAgIGN1cl9kZXBsX3N0YXRlX2lkID0gPywKICAgIGNoYW5nZV90aW1lICAgICAgID0gY3VycmVudF90aW1lc3RhbXAsCiAgICBjaGFuZ2VfYnkgICAgICAgICA9ID8KICBXSEVSRSBpZCA9ID8KRU5EX1NRTAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgICAgIFwkQ3VySW5jaVN0YXRlSUQsCiAgICAgICAgICAgIFwkUGFyYW17VmVyc2lvbn17RGVwbFN0YXRlSUR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VmVyc2lvbn17Q29uZmlnSXRlbUlEfSwKICAgICAgICBdLAogICAgKTsKCiAgICBpZiAoICEkVXBkYXRlU3VjY2VzcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgY3VycmVudCBhdHRyaWJ1dGVzIG9mIENvbmZpZ0l0ZW1JRCAkUGFyYW17VmVyc2lvbn17Q29uZmlnSXRlbUlEfSEiLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRSZWNhbGNDdXJJbmNpU3RhdGU7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/VersionString/Incremental.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6SW5jcmVtZW50YWw7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb25TdHJpbmc6OkluY3JlbWVudGFsIC0gVXNpbmcgYSBjb3VudGVyIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKbXkgJFZlcnNpb25TdHJpbmdNb2R1bGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb25TdHJpbmc6OkluY3JlbWVudGFsJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICgkVHlwZSkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcygge30sICRUeXBlICk7Cn0KCnN1YiBWZXJzaW9uU3RyaW5nR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRQYXJhbXtWZXJzaW9ufXtWZXJzaW9uU3RyaW5nfSBpZiAoICRQYXJhbXtWZXJzaW9ufXtWZXJzaW9uU3RyaW5nfSAmJiAhJFBhcmFte1ZlcnNpb25BZGR9ICk7CgogICAgIyBleHBlY3RlZCBwYXJhbXM6IFZlcnNpb24KICAgIG15ICRWZXJzaW9uTGlzdFJlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uTGlzdEFsbCgKICAgICAgICBDb25maWdJdGVtSURzID0+IFsgJFBhcmFte1ZlcnNpb259e0NvbmZpZ0l0ZW1JRH0gXSwKICAgICk7CgogICAgcmV0dXJuIDEgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRWZXJzaW9uTGlzdFJlZik7CgogICAgbXkgJEluaXRpYWxWZXJzaW9uU3RyaW5nID0gKCBzY2FsYXIga2V5cyAkVmVyc2lvbkxpc3RSZWYtPnsgJFBhcmFte1ZlcnNpb259e0NvbmZpZ0l0ZW1JRH0gfS0+JSogKSArIDE7CiAgICBteSAkVmVyc2lvblN0cmluZzsKICAgIHdoaWxlICggIWRlZmluZWQgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgaWYgKCBncmVwIHsgJF8tPntWZXJzaW9uU3RyaW5nfSBlcSAkSW5pdGlhbFZlcnNpb25TdHJpbmcgfSB2YWx1ZXMgJFZlcnNpb25MaXN0UmVmLT57ICRQYXJhbXtWZXJzaW9ufXtDb25maWdJdGVtSUR9IH0tPiUqICkgewogICAgICAgICAgICAkSW5pdGlhbFZlcnNpb25TdHJpbmcrKzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRWZXJzaW9uU3RyaW5nID0gJEluaXRpYWxWZXJzaW9uU3RyaW5nOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFZlcnNpb25TdHJpbmc7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/VersionString/TemplateToolkit.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6VGVtcGxhdGVUb29sa2l0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSBJc0hhc2hSZWZXaXRoRGF0YSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6VGVtcGxhdGVUb29sa2l0IC0gRXZhbHVhdGluZyBhIFRlbXBsYXRlOjpUb29sa2l0IGV4cHJlc3Npb24gZm9yIHRoZSB2ZXJzaW9uIHN0cmluZwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdC4gRG8gbm90IHVzZSBpdCBkaXJlY3RseSwgaW5zdGVhZCB1c2U6CgpteSAkVmVyc2lvblN0cmluZ01vZHVsZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvblN0cmluZzo6VGVtcGxhdGVUb29sa2l0Jyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICgkVHlwZSkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcygge30sICRUeXBlICk7Cn0KCnN1YiBWZXJzaW9uU3RyaW5nR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte1ZlcnNpb259ICk7CiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtWZXJzaW9ufXtDbGFzc0lEfTsKCiAgICAjIGZldGNoIGV4cHJlc3Npb24gZnJvbSBnZW5lcmFsIGNhdGFsb2cgY2xhc3MgcHJlZmVyZW5jZXMKICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtWZXJzaW9ufXtDbGFzc0lEfSwKICAgICk7CiAgICByZXR1cm4gdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSggJENsYXNzUHJlZmVyZW5jZXN7VmVyc2lvblN0cmluZ0V4cHJlc3Npb259ICk7CgogICAgIyBldmFsdWF0ZSBleHByZXNzaW9uIGRlZmluZWQgaW4gc3lzY29uZmlnCiAgICBteSAkVmVyc2lvblN0cmluZyA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlID0+ICRDbGFzc1ByZWZlcmVuY2Vze1ZlcnNpb25TdHJpbmdFeHByZXNzaW9ufVswXSwKICAgICAgICBEYXRhICAgICA9PiAkUGFyYW17VmVyc2lvbn0sCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJFZlcnNpb25TdHJpbmc7CgogICAgIyByZW1vdmUgbmV3bGluZXMgYW5kIGNhcnJpYWdlIHJldHVybnMgdG8gZW5hYmxlIG1hdGNoaW5nIHdpdGggZWRpdCBmaWVsZCB2YWx1ZQogICAgJFZlcnNpb25TdHJpbmcgPX4gcy8oXG58XHIpLy9nOwoKICAgICMgaWYgcHJldmlvdXMgdmVyc2lvbnMgZXhpc3QsIGNoZWNrIGlmIHN0cmluZyBpcyB0YWtlbgogICAgIyBmZXRjaCB2ZXJzaW9ucwogICAgbXkgJFZlcnNpb25MaXN0UmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlZlcnNpb25MaXN0QWxsKAogICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gWyAkUGFyYW17VmVyc2lvbn17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICBpZiAoIGdyZXAgeyAkXy0+e1ZlcnNpb25TdHJpbmd9IGVxICRWZXJzaW9uU3RyaW5nIH0gdmFsdWVzICRWZXJzaW9uTGlzdFJlZi0+eyAkUGFyYW17VmVyc2lvbn17Q29uZmlnSXRlbUlEfSB9LT4lKiApIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICRWZXJzaW9uU3RyaW5nOwp9CgoxOwo=</File>
        <File Location="Kernel/System/ImportExport/ObjectBackend/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6Ok9iamVjdEJhY2tlbmQ6OklUU01Db25maWdJdGVtOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgRW5jb2RlOwp1c2UgTGlzdDo6QWxsVXRpbHMgcXcoZmlyc3QgcGFpcndpc2UpOwp1c2UgTUlNRTo6QmFzZTY0ICAgcXcoZGVjb2RlX2Jhc2U2NCBlbmNvZGVfYmFzZTY0KTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc1N0cmluZ1dpdGhEYXRhIElzSGFzaFJlZldpdGhEYXRhIElzQXJyYXlSZWZXaXRoRGF0YSBJc1Bvc2l0aXZlSW50ZWdlcik7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpKU09OJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpJVFNNQ29uZmlnSXRlbSAtIGltcG9ydC9leHBvcnQgYmFja2VuZCBmb3IgSVRTTUNvbmZpZ0l0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGZ1bmN0aW9ucyB0byBpbXBvcnQgYW5kIGV4cG9ydCBJVFNNIGNvbmZpZyBpdGVtcy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CgogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6Ok9iamVjdEJhY2tlbmQ6OklUU01Db25maWdJdGVtJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3Mge30sICRUeXBlOwp9Cgo9aGVhZDIgT2JqZWN0QXR0cmlidXRlc0dldCgpCgpnZXQgdGhlIG9iamVjdCBhdHRyaWJ1dGVzIG9mIGFuIG9iamVjdCBhcyBhIHJlZiB0byBhbiBhcnJheSBvZiBoYXNoIHJlZmVyZW5jZXMKCiAgICBteSAkQXR0cmlidXRlcyA9ICRPYmplY3RCYWNrZW5kLT5PYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBPYmplY3RBdHRyaWJ1dGVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0CiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgcmV0dXJuIFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDbGFzc0lEJywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdDbGFzcycpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NvdW50TWF4JywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCcpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgVmFsdWVEZWZhdWx0ID0+ICczJywKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAwLAogICAgICAgICAgICAgICAgUmVnZXggICAgICAgID0+IHFyeyBcQSBcZCogXHogfXhtcywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggICAgPT4gNSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NvdW50TWF4U2V0T3V0ZXInLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50JyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICBWYWx1ZURlZmF1bHQgPT4gJzAnLAogICAgICAgICAgICAgICAgUmVxdWlyZWQgICAgID0+IDAsCiAgICAgICAgICAgICAgICBSZWdleCAgICAgICAgPT4gcXJ7IFxBIFxkKiBceiB9eG1zLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNSwKICAgICAgICAgICAgICAgIE1heExlbmd0aCAgICA9PiA1LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnQ291bnRNYXhTZXRJbm5lcicsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCcpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgVmFsdWVEZWZhdWx0ID0+ICcwJywKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAwLAogICAgICAgICAgICAgICAgUmVnZXggICAgICAgID0+IHFyeyBcQSBcZCogXHogfXhtcywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggICAgPT4gNSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0VtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMnLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCcpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDaGVja2JveCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJbmNsdWRlQXR0YWNobWVudHMnLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ0ltcG9ydC9FeHBvcnQgYXR0YWNobWVudHMgKGFzIHRoZSBsYXN0IGVudHJpZXMgcGVyIGxpbmUpJyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NoZWNrYm94JywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgXTsKfQoKPWhlYWQyIE1hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KCkKCmdldHMgdGhlIG1hcHBpbmcgYXR0cmlidXRlcyBvZiBhbiBvYmplY3QgYXMgcmVmZXJlbmNlIHRvIGFuIGFycmF5IG9mIGhhc2ggcmVmZXJlbmNlcy4KCiAgICBteSAkQXR0cmlidXRlcyA9ICRPYmplY3RCYWNrZW5kLT5NYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCgKICAgICAgICBUZW1wbGF0ZUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkQXR0cmlidXRlcyA9IFsKICAgICAgICB7CiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIERhdGEgPT4gWwogICAgICAgICAgICAgICAgICAgIHsgS2V5ID0+ICJOdW1iZXIiLCBWYWx1ZSA9PiAiTnVtYmVyIiB9LAogICAgICAgICAgICAgICAgICAgIHsgS2V5ID0+ICJOYW1lIiwgVmFsdWUgPT4gIk5hbWUiIH0sCiAgICAgICAgICAgICAgICAgICAgeyBLZXkgPT4gIkRlcGxTdGF0ZSIsIFZhbHVlID0+ICJEZXBsb3ltZW50IFN0YXRlIiB9LAogICAgICAgICAgICAgICAgICAgIHsgS2V5ID0+ICJJbmNpU3RhdGUiLCBWYWx1ZSA9PiAiSW5jaWRlbnQgU3RhdGUiIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIk5hbWVzcGFjZUJvZGVuLUJvZGVuZmFyYmU6OjEiLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAiTmFtZXNwYWNlQm9kZW4tQm9kZW5mYXJiZTo6MSIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIEtleSA9PiAiTmFtZXNwYWNlQm9kZW4tQm9kZW5mYXJiZTo6MiIsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICJOYW1lc3BhY2VCb2Rlbi1Cb2RlbmZhcmJlOjoyIiwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJOYW1lc3BhY2VCb2Rlbi1Cb2RlbmZhcmJlOjozIiwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gIk5hbWVzcGFjZUJvZGVuLUJvZGVuZmFyYmU6OjMiLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBSZXF1aXJlZCA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICAgICAgICAgIFR5cGUgPT4gIlNlbGVjdGlvbiIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEtleSAgID0+ICJLZXkiLAogICAgICAgICAgICBOYW1lICA9PiAiS2V5IiwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgSW5wdXQgPT4geyBUeXBlID0+ICJDaGVja2JveCIgfSwKICAgICAgICAgICAgS2V5ICAgPT4gIklkZW50aWZpZXIiLAogICAgICAgICAgICBOYW1lICA9PiAiSWRlbnRpZmllciIsCiAgICAgICAgfSwKICAgIF07Cgo9Y3V0CgpzdWIgTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVGVtcGxhdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKICAgICMgZ2V0IG9iamVjdCBkYXRhCiAgICBteSAkT2JqZWN0RGF0YSA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk9iamVjdERhdGFHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkUGFyYW17VGVtcGxhdGVJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyAkT2JqZWN0RGF0YTsKICAgIHJldHVybiBbXSB1bmxlc3MgcmVmICRPYmplY3REYXRhIGVxICdIQVNIJzsKICAgIHJldHVybiBbXSB1bmxlc3MgJE9iamVjdERhdGEtPntDbGFzc0lEfTsKCiAgICAjIGdldCBkZWZpbml0aW9uIGZvciB0aGUgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgKTsKCiAgICAjIG5vIGVycm9yIGhhbmRsaW5nCiAgICByZXR1cm4gdW5sZXNzICREZWZpbml0aW9uOwogICAgcmV0dXJuIHVubGVzcyByZWYgJERlZmluaXRpb24gZXEgJ0hBU0gnOwogICAgcmV0dXJuIHVubGVzcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn07CiAgICByZXR1cm4gdW5sZXNzIHJlZiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0gZXEgJ0hBU0gnOwoKICAgIG15IEBFbGVtZW50cyA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ051bWJlcicpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTmFtZScsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnTmFtZScpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdEZXBsb3ltZW50IFN0YXRlJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0luY2lkZW50IFN0YXRlJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdWZXJzaW9uU3RyaW5nJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdWZXJzaW9uIFN0cmluZycpLAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGRlc2NyaXB0aW9uIGlmIGRlZmluZWQKICAgIG15ICRIYXNEZXNjcmlwdGlvbiA9ICggZ3JlcCB7ICRfLT57VHlwZX0gJiYgJF8tPntUeXBlfSBlcSAnRGVzY3JpcHRpb24nIH0gdmFsdWVzICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn17U2VjdGlvbnN9LT4lKiApID8gMSA6IDA7CiAgICBpZiAoJEhhc0Rlc2NyaXB0aW9uKSB7CiAgICAgICAgcHVzaCBARWxlbWVudHMsIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdEZXNjcmlwdGlvbicpLAogICAgICAgIH07CiAgICB9CgogICAgIyBhZGQgZWxlbWVudHMKICAgIHB1c2ggQEVsZW1lbnRzLCAkU2VsZi0+X01hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIER5bmFtaWNGaWVsZFJlZiAgICAgICA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0sICAgICMgcGFnZSBsYXlvdXQgaXMgaWdub3JlZCBoZXJlCiAgICAgICAgQ291bnRNYXhMaW1pdCAgICAgICAgID0+ICRPYmplY3REYXRhLT57Q291bnRNYXh9ICAgICAgICAgfHwgMywKICAgICAgICBDb3VudE1heFNldE91dGVyTGltaXQgPT4gJE9iamVjdERhdGEtPntDb3VudE1heFNldE91dGVyfSB8fCAwLAogICAgICAgIENvdW50TWF4U2V0SW5uZXJMaW1pdCA9PiAkT2JqZWN0RGF0YS0+e0NvdW50TWF4U2V0SW5uZXJ9IHx8IDAsCiAgICApOwoKICAgIHJldHVybiBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnS2V5JywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdLZXknKSwKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFxARWxlbWVudHMsCiAgICAgICAgICAgICAgICBSZXF1aXJlZCAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJZGVudGlmaWVyJywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdJZGVudGlmaWVyJyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NoZWNrYm94JywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgXTsKfQoKPWhlYWQyIFNlYXJjaEF0dHJpYnV0ZXNHZXQoKQoKZ2V0IHRoZSBzZWFyY2ggb2JqZWN0IGF0dHJpYnV0ZXMgb2YgYW4gb2JqZWN0IGFzIGFycmF5L2hhc2ggcmVmZXJlbmNlCgogICAgbXkgJEF0dHJpYnV0ZUxpc3QgPSAkT2JqZWN0QmFja2VuZC0+U2VhcmNoQXR0cmlidXRlc0dldCgKICAgICAgICBUZW1wbGF0ZUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVGVtcGxhdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKICAgICMgZ2V0IG9iamVjdCBkYXRhCiAgICBteSAkT2JqZWN0RGF0YSA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk9iamVjdERhdGFHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkUGFyYW17VGVtcGxhdGVJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyAkT2JqZWN0RGF0YTsKICAgIHJldHVybiBbXSB1bmxlc3MgcmVmICRPYmplY3REYXRhIGVxICdIQVNIJzsKICAgIHJldHVybiBbXSB1bmxlc3MgJE9iamVjdERhdGEtPntDbGFzc0lEfTsKCiAgICAjIGdldCBkZWZpbml0aW9uCiAgICBteSAkRGVmaW5pdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJE9iamVjdERhdGEtPntDbGFzc0lEfSwKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyAkRGVmaW5pdGlvbjsKICAgIHJldHVybiBbXSB1bmxlc3MgcmVmICREZWZpbml0aW9uIGVxICdIQVNIJzsKICAgIHJldHVybiBbXSB1bmxlc3MgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9OwogICAgcmV0dXJuIFtdIHVubGVzcyByZWYgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9IGVxICdIQVNIJzsKCiAgICAjIGdldCBkZXBsb3ltZW50IGFuZCBpbmNpZGVudCBzdGF0ZSBsaXN0cywgaWdub3JpbmcgZXJyb3JzCiAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyBkZWZpbmVkICREZXBsU3RhdGVMaXN0OwoKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICk7CgogICAgcmV0dXJuIFtdIHVubGVzcyBkZWZpbmVkICRJbmNpU3RhdGVMaXN0OwoKICAgIG15IEBBdHRyaWJ1dGVzID0gKAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnTnVtYmVyJyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICBTaXplICAgICAgPT4gODAsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTkxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTmFtZScsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnTmFtZScpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgID0+IDgwLAogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDE5MSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBTdGF0ZScpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREZXBsU3RhdGVMaXN0LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnSW5jaVN0YXRlSURzJywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdJbmNpZGVudCBTdGF0ZScpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gMSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTGltaXQnLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ0xpbWl0JyksCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICBTaXplICAgICAgPT4gODAsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTkxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIGR5bmFtaWMgZmllbGQgYXR0cmlidXRlcwogICAgcHVzaCBAQXR0cmlidXRlcywgJFNlbGYtPl9ERlNlYXJjaEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSwKICAgICk7CgogICAgcmV0dXJuIFxAQXR0cmlidXRlczsKfQoKPWhlYWQyIEV4cG9ydERhdGFHZXQoKQoKZ2V0IGV4cG9ydCBkYXRhIGFzIGEgcmVmZXJlbmNlIHRvIGFuIGFycmF5IGZvciBhcnJheSByZWZlcmVuY2VzLCB0aGF0IGlzIGEgQzwyRC10YWJsZT4KCiAgICBteSAkUm93cyA9ICRPYmplY3RCYWNrZW5kLT5FeHBvcnREYXRhR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgRXhwb3J0RGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhUZW1wbGF0ZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRJbXBvcnRFeHBvcnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0Jyk7CgogICAgIyBnZXQgb2JqZWN0IGRhdGEKICAgIG15ICRPYmplY3REYXRhID0gJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0RGF0YUdldCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRQYXJhbXtUZW1wbGF0ZUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIG9iamVjdCBkYXRhCiAgICBpZiAoICEkT2JqZWN0RGF0YSB8fCByZWYgJE9iamVjdERhdGEgbmUgJ0hBU0gnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gb2JqZWN0IGRhdGEgZm91bmQgZm9yIHRoZSB0ZW1wbGF0ZSBpZCAkUGFyYW17VGVtcGxhdGVJRH0iLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIHRoZSBjbGFzcyBpZCBmcm9tIHRoZSB0ZW1wbGF0ZQogICAgewogICAgICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIHVubGVzcyBkZWZpbmVkICRDbGFzc0xpc3Q7CgogICAgICAgIGlmICggISRPYmplY3REYXRhLT57Q2xhc3NJRH0gfHwgISRDbGFzc0xpc3QtPnsgJE9iamVjdERhdGEtPntDbGFzc0lEfSB9ICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHZhbGlkIGNsYXNzIGlkIGZvdW5kIGZvciB0aGUgdGVtcGxhdGUgaWQgJFBhcmFte1RlbXBsYXRlSUR9IiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGhlIElEcyBmb3IgdGhlIG1hcHBpbmcgaW4gdGhpcyB0ZW1wbGF0ZQogICAgbXkgJE1hcHBpbmdJRHMgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5NYXBwaW5nTGlzdCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRQYXJhbXtUZW1wbGF0ZUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHRoZSBtYXBwaW5nIGxpc3QKICAgIGlmICggISRNYXBwaW5nSURzIHx8IHJlZiAkTWFwcGluZ0lEcyBuZSAnQVJSQVknIHx8ICEkTWFwcGluZ0lEcy0+QCogKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gdmFsaWQgbWFwcGluZyBsaXN0IGZvdW5kIGZvciB0aGUgdGVtcGxhdGUgaWQgJFBhcmFte1RlbXBsYXRlSUR9IiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjcmVhdGUgdGhlIG1hcHBpbmcgb2JqZWN0IGxpc3QKICAgIG15IEBNYXBwaW5nT2JqZWN0TGlzdDsKICAgIGZvciBteSAkTWFwcGluZ0lEICggJE1hcHBpbmdJRHMtPkAqICkgewoKICAgICAgICAjIGdldCBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgbXkgJE1hcHBpbmdPYmplY3REYXRhID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdERhdGFHZXQoCiAgICAgICAgICAgIE1hcHBpbmdJRCA9PiAkTWFwcGluZ0lELAogICAgICAgICAgICBVc2VySUQgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKCAhJE1hcHBpbmdPYmplY3REYXRhIHx8IHJlZiAkTWFwcGluZ09iamVjdERhdGEgbmUgJ0hBU0gnICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHZhbGlkIG1hcHBpbmcgbGlzdCBmb3VuZCBmb3IgdGhlIHRlbXBsYXRlIGlkICRQYXJhbXtUZW1wbGF0ZUlEfSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBNYXBwaW5nT2JqZWN0TGlzdCwgJE1hcHBpbmdPYmplY3REYXRhOwogICAgfQoKICAgICMgZ2V0IHNlYXJjaCBkYXRhCiAgICBteSAkU2VhcmNoRGF0YSA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPlNlYXJjaERhdGFHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkUGFyYW17VGVtcGxhdGVJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIHVubGVzcyAkU2VhcmNoRGF0YTsKICAgIHJldHVybiB1bmxlc3MgcmVmICRTZWFyY2hEYXRhIGVxICdIQVNIJzsKCiAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QsIGZvciB0cmFuc2xhdGluZyB0aGUgbnVtZXJpYyBJRHMgaW50byByZWFkYWJsZSBuYW1lcwogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwogICAgaWYgKCAhJERlcGxTdGF0ZUxpc3QgfHwgcmVmICREZXBsU3RhdGVMaXN0IG5lICdIQVNIJyApIHsKCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBnZXQgdGhlIGdlbmVyYWwgY2F0YWxvZyBsaXN0IElUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0LCBmb3IgdHJhbnNsYXRpbmcgdGhlIG51bWVyaWMgSURzIGludG8gcmVhZGFibGUgbmFtZXMKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICk7CiAgICBpZiAoICEkSW5jaVN0YXRlTGlzdCB8fCByZWYgJEluY2lTdGF0ZUxpc3QgbmUgJ0hBU0gnICkgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGdldCB0aGUgZ2VuZXJhbCBjYXRhbG9nIGxpc3QgSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBjdXJyZW50IGRlZmluaXRpb24gb2YgdGhpcyBjbGFzcwogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRPYmplY3REYXRhLT57Q2xhc3NJRH0sCiAgICAgICAgVXNlcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgbXkgJVNlYXJjaFBhcmFtczsKCiAgICAjIGFkZCBudW1iZXIgdG8gdGhlIHNlYXJjaCBwYXJhbXMKICAgIGlmICggJFNlYXJjaERhdGEtPntOdW1iZXJ9ICkgewogICAgICAgICRTZWFyY2hQYXJhbXN7TnVtYmVyfSA9IGRlbGV0ZSAkU2VhcmNoRGF0YS0+e051bWJlcn07CiAgICB9CgogICAgIyBhZGQgbmFtZSB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgaWYgKCAkU2VhcmNoRGF0YS0+e05hbWV9ICkgewogICAgICAgICRTZWFyY2hQYXJhbXN7TmFtZX0gPSBkZWxldGUgJFNlYXJjaERhdGEtPntOYW1lfTsKICAgIH0KCiAgICAjIGFkZCBkZXBsb3ltZW50IHN0YXRlIHRvIHRoZSBzZWFyY2ggcGFyYW1zCiAgICBpZiAoICRTZWFyY2hEYXRhLT57RGVwbFN0YXRlSURzfSApIHsKICAgICAgICBteSBARGVwbFN0YXRlSURzID0gc3BsaXQgLyMjIyMjLywgJFNlYXJjaERhdGEtPntEZXBsU3RhdGVJRHN9OwogICAgICAgICRTZWFyY2hQYXJhbXN7RGVwbFN0YXRlSURzfSA9IFxARGVwbFN0YXRlSURzOwogICAgICAgIGRlbGV0ZSAkU2VhcmNoRGF0YS0+e0RlcGxTdGF0ZUlEc307CiAgICB9CgogICAgIyBhZGQgaW5jaWRlbnQgc3RhdGUgdG8gdGhlIHNlYXJjaCBwYXJhbXMKICAgIGlmICggJFNlYXJjaERhdGEtPntJbmNpU3RhdGVJRHN9ICkgewogICAgICAgIG15IEBJbmNpU3RhdGVJRHMgPSBzcGxpdCAvIyMjIyMvLCAkU2VhcmNoRGF0YS0+e0luY2lTdGF0ZUlEc307CiAgICAgICAgJFNlYXJjaFBhcmFtc3tJbmNpU3RhdGVJRHN9ID0gXEBJbmNpU3RhdGVJRHM7CiAgICAgICAgZGVsZXRlICRTZWFyY2hEYXRhLT57SW5jaVN0YXRlSURzfTsKICAgIH0KCiAgICAjIGFkZCBsaW1pdCB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgaWYgKCBJc1Bvc2l0aXZlSW50ZWdlciggJFNlYXJjaERhdGEtPntMaW1pdH0gKSApIHsKICAgICAgICAkU2VhcmNoUGFyYW1ze0xpbWl0fSA9IGRlbGV0ZSAkU2VhcmNoRGF0YS0+e0xpbWl0fTsKICAgIH0KCiAgICAjIGFkZCBhbGwgZHluYW1pYyBmaWVsZCBkYXRhIHRvIHRoZSBzZWFyY2ggcGFyYW1zCiAgICBteSAlREZTZWFyY2hQYXJhbXMgPSAkU2VsZi0+X0RGU2VhcmNoRGF0YVByZXBhcmUoCiAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSwKICAgICAgICBTZWFyY2hEYXRhICAgICAgPT4gJFNlYXJjaERhdGEsCiAgICApOwogICAgQFNlYXJjaFBhcmFtc3sga2V5cyAlREZTZWFyY2hQYXJhbXMgfSA9IHZhbHVlcyAlREZTZWFyY2hQYXJhbXM7CgogICAgIyBzZWFyY2ggdGhlIGNvbmZpZyBpdGVtcwogICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAlU2VhcmNoUGFyYW1zLAogICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbICRPYmplY3REYXRhLT57Q2xhc3NJRH0gXSwKICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMCwKICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICApOwoKICAgICMgSlNPTiBzdXBwb3J0IG1pZ2h0IGJlIG5lZWRlZCBmb3IgU2V0IGR5bmFtaWMgZmllbGRzCiAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CgogICAgbXkgJEZvcm1hdHRlckNhbkhhbmRsZVJlZmVyZW5jZXMgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5Gb3JtYXR0ZXJDYW5IYW5kbGVSZWZlcmVuY2VzKAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFBhcmFte1RlbXBsYXRlSUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15IEBSb3dzOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewoKICAgICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIGNvbmZpZyBpdGVtLCBpbmNsdWRpbmcgdGhlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgdW5sZXNzICRDb25maWdJdGVtOwogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIHVubGVzcyByZWYgJENvbmZpZ0l0ZW0gZXEgJ0hBU0gnOwoKICAgICAgICAjIGFkZCBkYXRhIHRvIHRoZSBleHBvcnQgZGF0YSBhcnJheQogICAgICAgIG15IEBSb3dJdGVtczsKICAgICAgICBNQVBQSU5HT0JKRUNUOgogICAgICAgIGZvciBteSAkTWFwcGluZ09iamVjdCAoQE1hcHBpbmdPYmplY3RMaXN0KSB7CgogICAgICAgICAgICAjIGV4dHJhY3Qga2V5CiAgICAgICAgICAgIG15ICRLZXkgPSAkTWFwcGluZ09iamVjdC0+e0tleX07CgogICAgICAgICAgICAjIGhhbmRsZSBlbXB0eSBrZXkKICAgICAgICAgICAgaWYgKCAhJEtleSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFJvd0l0ZW1zLCAnJzsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdPQkpFQ1Q7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIGNvbmZpZyBpdGVtIG51bWJlcgogICAgICAgICAgICBpZiAoICRLZXkgZXEgJ051bWJlcicgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9OwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBoYW5kbGUgY3VycmVudCBjb25maWcgaXRlbSBuYW1lCiAgICAgICAgICAgIGlmICggJEtleSBlcSAnTmFtZScgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJENvbmZpZ0l0ZW0tPntOYW1lfTsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdPQkpFQ1Q7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIGRlcGxveW1lbnQgc3RhdGUKICAgICAgICAgICAgaWYgKCAkS2V5IGVxICdEZXBsU3RhdGUnICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGVJRH0gfHw9ICdEVU1NWSc7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJERlcGxTdGF0ZUxpc3QtPnsgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGVJRH0gfTsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdPQkpFQ1Q7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIGluY2lkZW50IHN0YXRlCiAgICAgICAgICAgIGlmICggJEtleSBlcSAnSW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtLT57SW5jaVN0YXRlSUR9IHx8PSAnRFVNTVknOwogICAgICAgICAgICAgICAgcHVzaCBAUm93SXRlbXMsICRJbmNpU3RhdGVMaXN0LT57ICRDb25maWdJdGVtLT57SW5jaVN0YXRlSUR9IH07CgogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGhhbmRsZSBkZXNjcmlwdGlvbgogICAgICAgICAgICBpZiAoICRLZXkgZXEgJ0Rlc2NyaXB0aW9uJyApIHsKCiAgICAgICAgICAgICAgICBteSAkRGVzY3JpcHRpb24gPSAkQ29uZmlnSXRlbS0+e0Rlc2NyaXB0aW9ufTsKCiAgICAgICAgICAgICAgICAjIHByZXBhcmUgZGVzY3JpcHRpb24gaW5saW5lIGltYWdlcyBmb3IgZXhwb3J0CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIyBmZXRjaCBjb25maWcgaXRlbSBhdHRhY2htZW50IGxpc3QgZm9yIGhhbmRsaW5nIGlubGluZSBhdHRhY2htZW50cwogICAgICAgICAgICAgICAgICAgIG15IEBBdHRhY2htZW50TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBmZXRjaCBhdHRhY2htZW50IGRhdGEgYW5kIHJlcGxhY2UgY29udGVudCBpZCBpbiBkZXNjcmlwdGlvbiB3aXRoIGJhc2U2NC1lbmNvZGVkIGF0dGFjaG1lbnQgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRGaWxlbmFtZSAoQEF0dGFjaG1lbnRMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50R2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICA9PiAkRmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT57Q29udGVudElEfSA9ICRBdHRhY2htZW50LT57UHJlZmVyZW5jZXN9e0NvbnRlbnRJRH07CgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoIEZpbGVuYW1lIENvbnRlbnRUeXBlIERpc3Bvc2l0aW9uICkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT57JEtleX0gPSBFbmNvZGU6OmVuY29kZSggJ1VURi04JywgJEF0dGFjaG1lbnQtPnskS2V5fSApOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBteSAkQXR0YWNobWVudFN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KCBGaWxlbmFtZSBDb250ZW50SUQgQ29udGVudFR5cGUgRGlzcG9zaXRpb24gQ29udGVudCBDb250ZW50QWx0ZXJuYXRpdmUgKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPnskS2V5fSAvLz0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudFN0cmluZyAuPSAkQXR0YWNobWVudFN0cmluZyA/ICcjIyMnIDogJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudFN0cmluZyAuPSAkS2V5IC4gJyMjIycgLiBlbmNvZGVfYmFzZTY0KCAkQXR0YWNobWVudC0+eyRLZXl9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICREZXNjcmlwdGlvbiA9fiBzLyg/PG9wZW4+c3JjPSIpKGNpZDopKD88Y2lkPiRBdHRhY2htZW50LT57Q29udGVudElEfSkoPzxjbG9zZT4iICkvJCt7b3Blbn0kQXR0YWNobWVudFN0cmluZyQre2Nsb3NlfS9nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJERlc2NyaXB0aW9uOwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBoYW5kbGUgdmVyc2lvbiBzdHJpbmcKICAgICAgICAgICAgaWYgKCAkS2V5IGVxICdWZXJzaW9uU3RyaW5nJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFJvd0l0ZW1zLCAkQ29uZmlnSXRlbS0+e1ZlcnNpb25TdHJpbmd9OwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBBbGwgb3RoZXIgYXR0cmlidXRlcyBpbmRpY2F0ZSBkeW5hbWljIGZpZWxkcy4KICAgICAgICAgICAgIyBUaGlzIGdldHMgd2hhdGV2ZXIgQ29uZmlnSXRlbUdldCgpIHB1dHMgaW50byB0aGUgb2JqZWN0LiBFLmcuIGZvciBHZW5lcmFsQ2F0YWxvZyBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICAjIHdlIGdldCB0aGUgaXRlbSBJRCBpbnRvIHRoZSBnZW5lcmFsIGNhdGFsb2cuIFRoaXMgaXMgZmluZSBmb3IgSW1wb3J0L0V4cG9ydCwgYnV0IG5vdCByZWFsbHkgaHVtYW4gcmVhZGFibGUuCiAgICAgICAgICAgICMgTm90ZSB0aGF0IHRoaW5ncyBsaWtlIHRoZSBpbmNpZGVudCBzdGF0ZSBhcmUgbG9va2VkIHVwLgoKICAgICAgICAgICAgIyBUaGUgS2V5IGVuY29kZXMgc29tZSBleHRyYSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgIyBOb3RlIHRoYXQgdGhlIGluZGV4ZXMgc3RhcnQgYXQgMSBpbiB0aGUga2V5IG5hbWVzCiAgICAgICAgICAgIG15ICggJERGRnVsbE5hbWUsICRJbmRleCwgJElubmVyREYsICRJbm5lckluZGV4ICkgPSBzcGxpdCAvOjovLCAkS2V5OwogICAgICAgICAgICBteSAkREZOYW1lOwogICAgICAgICAgICBpZiAoICRERkZ1bGxOYW1lID1+IC9eRHluYW1pY0ZpZWxkXyguKikvICkgewogICAgICAgICAgICAgICAgJERGTmFtZSA9ICQxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG15ICRGaWVsZENvbmZpZyA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskREZOYW1lfTsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJEZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgICMgaWdub3JlIHVuZXhwZWN0ZWQgaW5kZXhlcywgYnV0IHN0aWxsIGN1dCB0aGUgJzo6JwogICAgICAgICAgICBpZiAoIGRlZmluZWQgJEluZGV4ICYmICRJbmRleCAhfiBtL15bMS05XVswLTldKiQvICkgewogICAgICAgICAgICAgICAgdW5kZWYgJEluZGV4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkSW5uZXJJbmRleCAmJiAkSW5uZXJJbmRleCAhfiBtL15bMS05XVswLTldKiQvICkgewogICAgICAgICAgICAgICAgdW5kZWYgJElubmVySW5kZXg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRDb25maWdJdGVtLT57JERGRnVsbE5hbWV9OwoKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJyc7CgogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFRoZSBmb3JtYXR0aW5nIGRlcGVuZHMgb24gdGhlIGNvbmZpZyBvZiB0aGUgZHluYW1pYyBmaWVsZCwgd2hpY2ggaXMgbm90IHJlYWxseSBuaWNlLgogICAgICAgICAgICBteSAkSXNNdWx0aVZhbHVlID0gJEZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e011bHRpVmFsdWV9ID8gMiA6IDA7CiAgICAgICAgICAgIG15ICRJc1NldCAgICAgICAgPSAoICRGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gLy8gJycgKSBlcSAnU2V0JzsKCiAgICAgICAgICAgICMgaGFuZGxlIHNwZWNpYWwgY2FzZXMKICAgICAgICAgICAgbXkgJEFjdHVhbFZhbHVlID0gZXZhbCB7CgogICAgICAgICAgICAgICAgIyBhIHNwZWNpZmljIGluZGV4IHdhcyByZXF1ZXN0ZWQKICAgICAgICAgICAgICAgIGlmICggJElzTXVsdGlWYWx1ZSAmJiAkSW5kZXggKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRWYWx1ZS0+WyAkSW5kZXggLSAxIF0gLy8gJyc7ICAgICMgYXMgaWYgYW4gZW1wdHkgc3RyaW5nIHdlcmUgbm90IHZhbGlkCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBGb3IgU2V0IHNpbmdsZSBhbmQgbXVsdGl2YWx1ZSBmaWVsZHMgYmVoYXZlIHRoZSBzYW1lIHdheS4KICAgICAgICAgICAgICAgICMgTm8gbmVlZCB0byBzaGF2ZSBvZmYgYSBsZXZlbC4KICAgICAgICAgICAgICAgIHJldHVybiAkVmFsdWUgaWYgJElzU2V0OwoKICAgICAgICAgICAgICAgICMgZ2V0IGZpcnN0IGVsZW1lbnQgZm9yIHNpbmdsZSB2YWx1ZSBmaWVsZHMKICAgICAgICAgICAgICAgIHJldHVybiAkVmFsdWUtPlswXSAvLyAnJyBpZiAoICEkSXNNdWx0aVZhbHVlICYmIHJlZiAkVmFsdWUgZXEgJ0FSUkFZJyApOwoKICAgICAgICAgICAgICAgICMgdGhlIGRlZmF1bHQKICAgICAgICAgICAgICAgIHJldHVybiAkVmFsdWU7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICAjIGNoZWNrIGlmIHdlIGFyZSBkZWFsaW5nIHdpdGggYSBzZXQtaW5uZXIgZmllbGQKICAgICAgICAgICAgaWYgKCRJbm5lckRGKSB7CgogICAgICAgICAgICAgICAgIyBmZXRjaCBhbmQgc2V0IGZpZWxkIGNvbmZpZwogICAgICAgICAgICAgICAgbXkgJElubmVyRmllbGRJdGVtICAgPSBmaXJzdCB7ICRfLT57REZ9IGVxICRJbm5lckRGIH0gJEZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfS0+QCo7CiAgICAgICAgICAgICAgICBteSAkSW5uZXJGaWVsZENvbmZpZyA9ICRJbm5lckZpZWxkSXRlbS0+e0RlZmluaXRpb259OwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJElubmVyRmllbGRDb25maWcpOwoKICAgICAgICAgICAgICAgICMgc2V0IHZhbHVlCiAgICAgICAgICAgICAgICBteSAkSW5uZXJWYWx1ZSA9ICRBY3R1YWxWYWx1ZS0+eyRJbm5lckRGfTsKCiAgICAgICAgICAgICAgICBpZiAoICFkZWZpbmVkICRJbm5lclZhbHVlICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFJvd0l0ZW1zLCAnJzsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgVGhlIGZvcm1hdHRpbmcgZGVwZW5kcyBvbiB0aGUgY29uZmlnIG9mIHRoZSBkeW5hbWljIGZpZWxkLCB3aGljaCBpcyBub3QgcmVhbGx5IG5pY2UuCiAgICAgICAgICAgICAgICBteSAkSW5uZXJJc011bHRpVmFsdWUgPSAkSW5uZXJGaWVsZENvbmZpZy0+e0NvbmZpZ317TXVsdGlWYWx1ZX0gPyAyIDogMDsKCiAgICAgICAgICAgICAgICAjIGhhbmRsZSBzcGVjaWFsIGNhc2VzCiAgICAgICAgICAgICAgICBteSAkQWN0dWFsSW5uZXJWYWx1ZSA9IGV2YWwgewoKICAgICAgICAgICAgICAgICAgICAjIGEgc3BlY2lmaWMgaW5kZXggd2FzIHJlcXVlc3RlZAogICAgICAgICAgICAgICAgICAgIGlmICggJElubmVySXNNdWx0aVZhbHVlICYmICRJbm5lckluZGV4ICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJElubmVyVmFsdWUtPlsgJElubmVySW5kZXggLSAxIF0gLy8gJyc7ICAgICMgYXMgaWYgYW4gZW1wdHkgc3RyaW5nIHdlcmUgbm90IHZhbGlkCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGdldCBmaXJzdCBlbGVtZW50IGZvciBzaW5nbGUgdmFsdWUgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRJbm5lclZhbHVlLT5bMF0gLy8gJycgaWYgKCAhJElubmVySXNNdWx0aVZhbHVlICYmIHJlZiAkSW5uZXJWYWx1ZSBlcSAnQVJSQVknICk7CgogICAgICAgICAgICAgICAgICAgICMgdGhlIGRlZmF1bHQKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJElubmVyVmFsdWU7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgJEFjdHVhbFZhbHVlID0gJEFjdHVhbElubmVyVmFsdWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgVGhpcyBpcyByZWxldmFudCBmb3IgZS5nLiB0aGUgQ1NWIGJhY2tlbmQgd2hpY2ggY2FuJ3QgdHJhbnNwYXJlbnRseSBzZXJpYWxpemUgZGF0YSBzdHJ1Y3R1cmVzLgogICAgICAgICAgICAjIFJlZmVyZW5jZXMgYXJlIEpTT05pZmllZC4gVGhpcyBoYXBwZW5zIHdoZW46CiAgICAgICAgICAgICMgLSBhIG11bHRpdmFsdWUgZmllbGQgZ2l2ZXMgYW4gYXJyYXkgcmVmZXJlbmNlCiAgICAgICAgICAgICMgLSBhIG11bHRpdmFsdWUgU2V0IGZpZWxkIGdpdmVzIGFuIGFycmF5IHJlZmVyZW5jZSB3aXRoIGFycmF5IHJlZmVyZW5jZXMgaW5zaWRlCiAgICAgICAgICAgICMgLSBhIHNpbmdsZXZhbHVlIFNldCBmaWVsZCBnaXZlcyBhbiBhcnJheSByZWZlcmVuY2UKICAgICAgICAgICAgaWYgKCAhJEZvcm1hdHRlckNhbkhhbmRsZVJlZmVyZW5jZXMgJiYgcmVmICRBY3R1YWxWYWx1ZSApIHsKCiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJEpTT05PYmplY3QtPkVuY29kZSgKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiAkQWN0dWFsVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgU29ydEtleXMgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRoZSByZWd1bGFyIGNhc2UKICAgICAgICAgICAgcHVzaCBAUm93SXRlbXMsICRBY3R1YWxWYWx1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkT2JqZWN0RGF0YS0+e0luY2x1ZGVBdHRhY2htZW50c30gKSB7CiAgICAgICAgICAgIG15IEBBdHRhY2htZW50cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KCBGaWxlbmFtZSBDb250ZW50VHlwZSBEaXNwb3NpdGlvbiApKSB7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPnskS2V5fSA9IEVuY29kZTo6ZW5jb2RlKCAnVVRGLTgnLCAkQXR0YWNobWVudC0+eyRLZXl9ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnRTdHJpbmc7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoIEZpbGVuYW1lIENvbnRlbnRJRCBDb250ZW50VHlwZSBEaXNwb3NpdGlvbiBDb250ZW50IENvbnRlbnRBbHRlcm5hdGl2ZSApKSB7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPnskS2V5fSAvLz0gJyc7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnRTdHJpbmcgLj0gJEF0dGFjaG1lbnRTdHJpbmcgPyAnIyMjJyA6ICcnOwogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50U3RyaW5nIC49ICRLZXkgLiAnIyMjJyAuIGVuY29kZV9iYXNlNjQoICRBdHRhY2htZW50LT57JEtleX0gKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBSb3dJdGVtcywgJEF0dGFjaG1lbnRTdHJpbmc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHB1c2ggQFJvd3MsIFxAUm93SXRlbXM7CiAgICB9CgogICAgcmV0dXJuIFxAUm93czsKfQoKPWhlYWQyIEltcG9ydERhdGFTYXZlKCkKCmltcG9ydHMgYSBzaW5nbGUgZW50aXR5IG9mIHRoZSBpbXBvcnQgZGF0YS4gVGhlIEM8VGVtcGxhdGVJRD4gcG9pbnRzIHRvIHRoZSBkZWZpbml0aW9uCm9mIHRoZSBjdXJyZW50IGltcG9ydC4gQzxJbXBvcnREYXRhUm93PiBob2xkcyB0aGUgZGF0YS4gQzxDb3VudGVyPiBpcyBvbmx5IHVzZWQgaW4KZXJyb3IgbWVzc2FnZXMsIGZvciBpbmRpY2F0aW5nIHdoaWNoIGl0ZW0gd2FzIG5vdCBpbXBvcnRlZCBzdWNjZXNzZnVsbHkuCgpUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBjb25maWcgaXRlbSB3aWxsIG5ldmVyIGJlIGRlbGV0ZWQuIFdoZW4gdGhlcmUgYXJlIG5vCmNoYW5nZXMgaW4gdGhlIGRhdGEsIHRoZSBpbXBvcnQgd2lsbCBiZSBza2lwcGVkLiBXaGVuIHRoZXJlIGlzIG5ldyBvciBjaGFuZ2VkIGRhdGEsCnRoZW4gYSBuZXcgY29uZmlnIGl0ZW0gb3IgYSBuZXcgdmVyc2lvbiBpcyBjcmVhdGVkLgoKSW4gdGhlIGNhc2Ugb2YgY2hhbmdlZCBkYXRhLCB0aGUgbmV3IHZlcnNpb24gb2YgdGhlIGNvbmZpZyBpdGVtIHdpbGwgY29udGFpbiB0aGUKYXR0cmlidXRlcyBvZiB0aGUgQzxJbXBvcnREYXRhUm93PiBwbHVzIHRoZSBvbGQgYXR0cmlidXRlcyB0aGF0IGFyZQpub3QgcGFydCBvZiB0aGUgaW1wb3J0IGRlZmluaXRpb24uClRodXMgSW1wb3J0RGF0YVNhdmUoKSBndWFyYW50ZWVzIHRvIG5vdCBvdmVyd3JpdGUgdW5kZWNsYXJlZCBhdHRyaWJ1dGVzLgoKVGhlIGJlaGF2aW9yIHdoZW4gaW1wb3J0ZWQgYXR0cmlidXRlcyBhcmUgZW1wdHkgZGVwZW5kcyBvbiB0aGUgc2V0dGluZyBpbiB0aGUgb2JqZWN0IGRhdGEuCldoZW4gQzxFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzPiBpcyBub3Qgc2V0LCB0aGVuIGVtcHR5IHZhbHVlcyB3aWxsIHdpcGUgb3V0CnRoZSBvbGQgZGF0YS4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci4gV2hlbiBDPEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXM+IGlzIHNldCwKdGhlbiBlbXB0eSB2YWx1ZXMgd2lsbCBsZWF2ZSB0aGUgb2xkIHZhbHVlcy4KClRoZSBkZWNpc2lvbiB3aGF0IGNvbnN0aXR1dGUgYW4gZW1wdHkgdmFsdWUgaXMgYSBiaXQgaGFpcnkuCkhlcmUgYXJlIHRoZSBydWxlcy4KRmllbGRzIHRoYXQgYXJlIG5vdCBldmVuIG1lbnRpb25lZCBpbiB0aGUgSW1wb3J0IGRlZmluaXRpb24gYXJlIGVtcHR5LiBUaGVzZSBhcmUgdGhlICdub3QgZGVmaW5lZCcgZmllbGRzLgpFbXB0eSBzdHJpbmdzIGFuZCB1bmRlZmluZWQgdmFsdWVzIGNvbnN0aXR1dGUgZW1wdHkgZmllbGRzLgpGaWVsZHMgd2l0aCB3aXRoIG9ubHkgb25lIG9yIG1vcmUgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFyZSBub3QgZW1wdHkuCkZpZWxkcyB3aXRoIHRoZSBkaWdpdCAnMCcgYXJlIG5vdCBlbXB0eS4KCiAgICBteSAoICRDb25maWdJdGVtSUQsICRSZXRDb2RlICkgPSAkT2JqZWN0QmFja2VuZC0+SW1wb3J0RGF0YVNhdmUoCiAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAxMjMsCiAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiAkQXJyYXlSZWYsCiAgICAgICAgQ291bnRlciAgICAgICA9PiAzNjcsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgKTsKCkFuIGVtcHR5IEM8Q29uZmlnSXRlbUlEPiBpbmRpY2F0ZXMgZmFpbHVyZS4gT3RoZXJ3aXNlIGl0IGluZGljYXRlcyB0aGUKbG9jYXRpb24gb2YgdGhlIGltcG9ydGVkIGRhdGEuCkM8UmV0Q29kZT4gaXMgZWl0aGVyICdDcmVhdGVkJywgJ1VwZGF0ZWQnIG9yICdTa2lwcGVkJy4gJ0NyZWF0ZWQnIG1lYW5zIHRoYXQgYSBuZXcKY29uZmlnIGl0ZW0gaGFzIGJlZW4gY3JlYXRlZC4gJ1VwZGF0ZWQnIG1lYW5zIHRoYXQgYSBuZXcgdmVyc2lvbiBoYXMgYmVlbiBhZGRlZCB0bwphbiBleGlzdGluZyBjb25maWcgaXRlbS4gJ1NraXBwZWQnIG1lYW5zIHRoYXQgbm8gbmV3IHZlcnNpb24gaGFzIGJlZW4gY3JlYXRlZCwKYXMgdGhlIG5ldyBkYXRhIGlzIGlkZW50aWNhbCB0byB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgYW4gZXhpc3RpbmcgY29uZmlnIGl0ZW0uCgpObyBjb2RlcyBoYXZlIHlldCBiZWVuIGRlZmluZWQgZm9yIHRoZSBmYWlsdXJlIGNhc2UuCgo9Y3V0CgpzdWIgSW1wb3J0RGF0YVNhdmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVGVtcGxhdGVJRCBJbXBvcnREYXRhUm93IENvdW50ZXIgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpbXBvcnQgZGF0YSByb3cKICAgIGlmICggcmVmICRQYXJhbXtJbXBvcnREYXRhUm93fSBuZSAnQVJSQVknICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06IEltcG9ydERhdGFSb3cgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKICAgICMgZ2V0IG9iamVjdCBkYXRhLCB0aGF0IGlzIHRoZSBjb25maWcgb2YgdGhpcyB0ZW1wbGF0ZQogICAgbXkgJE9iamVjdERhdGEgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFBhcmFte1RlbXBsYXRlSUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwogICAgaWYgKCAhJE9iamVjdERhdGEgfHwgcmVmICRPYmplY3REYXRhIG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgLiAiTm8gb2JqZWN0IGRhdGEgZm91bmQgZm9yIHRoZSB0ZW1wbGF0ZSBpZCAnJFBhcmFte1RlbXBsYXRlSUR9JyIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMganVzdCBmb3IgY29udmVuaWVuY2UKICAgIG15ICRFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0gJE9iamVjdERhdGEtPntFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzfTsKCiAgICAjIGNoZWNrIHRoZSBjbGFzcyBpZCBvZiB0aGUgdGVtcGxhdGUgY29uZmlnCiAgICB7CiAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwoKICAgICAgICBpZiAoICEkQ2xhc3NMaXN0IHx8IHJlZiAkQ2xhc3NMaXN0IG5lICdIQVNIJyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAuICJDYW4ndCBnZXQgdGhlIGdlbmVyYWwgY2F0YWxvZyBsaXN0IElUU006OkNvbmZpZ0l0ZW06OkNsYXNzIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGlmICggISRPYmplY3REYXRhLT57Q2xhc3NJRH0gfHwgISRDbGFzc0xpc3QtPnsgJE9iamVjdERhdGEtPntDbGFzc0lEfSB9ICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAuICJObyBjbGFzcyBmb3VuZCBmb3IgdGhlIHRlbXBsYXRlIGlkICckUGFyYW17VGVtcGxhdGVJRH0nIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGhlIG1hcHBpbmcgbGlzdAogICAgbXkgJE1hcHBpbmdJRHMgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5NYXBwaW5nTGlzdCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRQYXJhbXtUZW1wbGF0ZUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHRoZSBtYXBwaW5nIGxpc3QKICAgIGlmICggISRNYXBwaW5nSURzIHx8IHJlZiAkTWFwcGluZ0lEcyBuZSAnQVJSQVknIHx8ICEkTWFwcGluZ0lEcy0+QCogKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAuICJObyB2YWxpZCBtYXBwaW5nIGxpc3QgZm91bmQgZm9yIHRoZSB0ZW1wbGF0ZSBpZCAnJFBhcmFte1RlbXBsYXRlSUR9JyIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY3JlYXRlIHRoZSBtYXBwaW5nIG9iamVjdCBsaXN0CiAgICAjIFRPRE86IHdoeSBpcyB0aGlzIGNhbGxlZCBmb3IgZXZlcnkgcm93IG9mIHRoZSBpbXBvcnQgZmlsZSA/CiAgICBteSBATWFwcGluZ09iamVjdExpc3Q7CiAgICBmb3IgbXkgJE1hcHBpbmdJRCAoICRNYXBwaW5nSURzLT5AKiApIHsKCiAgICAgICAgIyBnZXQgbWFwcGluZyBvYmplY3QgZGF0YQogICAgICAgIG15ICRNYXBwaW5nT2JqZWN0RGF0YSA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdPYmplY3REYXRhR2V0KAogICAgICAgICAgICBNYXBwaW5nSUQgPT4gJE1hcHBpbmdJRCwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgbWFwcGluZyBvYmplY3QgZGF0YQogICAgICAgIGlmICggISRNYXBwaW5nT2JqZWN0RGF0YSB8fCByZWYgJE1hcHBpbmdPYmplY3REYXRhIG5lICdIQVNIJyApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgLiAiTm8gbWFwcGluZyBvYmplY3QgZGF0YSBmb3VuZCBmb3IgdGhlIG1hcHBpbmcgaWQgJyRNYXBwaW5nSUQnIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHB1c2ggQE1hcHBpbmdPYmplY3RMaXN0LCAkTWFwcGluZ09iamVjdERhdGE7CiAgICB9CgogICAgIyBjaGVjayBhbmQgcmVtZW1iZXIgdGhlIElkZW50aWZpZXJzCiAgICAjIHRoZSBJZGVudGlmaWVycyBpZGVudGlmeSB0aGUgY29uZmlnIGl0ZW0gdGhhdCBzaG91bGQgYmUgdXBkYXRlZAogICAgbXkgJUlkZW50aWZpZXI7CiAgICB7CiAgICAgICAgbXkgJFJvd0luZGV4ID0gMDsKICAgICAgICBNQVBQSU5HT0JKRUNUREFUQToKICAgICAgICBmb3IgbXkgJE1hcHBpbmdPYmplY3REYXRhIChATWFwcGluZ09iamVjdExpc3QpIHsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVERBVEEgdW5sZXNzICRNYXBwaW5nT2JqZWN0RGF0YS0+e0lkZW50aWZpZXJ9OwoKICAgICAgICAgICAgIyBjaGVjayBpZiBpZGVudGlmaWVyIGFscmVhZHkgZXhpc3RzCiAgICAgICAgICAgIGlmICggJElkZW50aWZpZXJ7ICRNYXBwaW5nT2JqZWN0RGF0YS0+e0tleX0gfSApIHsKCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICInJE1hcHBpbmdPYmplY3REYXRhLT57S2V5fScgaGFzIGJlZW4gdXNlZCBtdWx0aXBsZSB0aW1lcyBhcyBhbiBpZGVudGlmaWVyIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNldCBpZGVudGlmaWVyIHZhbHVlCiAgICAgICAgICAgICRJZGVudGlmaWVyeyAkTWFwcGluZ09iamVjdERhdGEtPntLZXl9IH0gPSAkUGFyYW17SW1wb3J0RGF0YVJvd30tPlskUm93SW5kZXhdOwoKICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUREFUQSBpZiAkTWFwcGluZ09iamVjdERhdGEtPntLZXl9ICYmICRQYXJhbXtJbXBvcnREYXRhUm93fS0+WyRSb3dJbmRleF07CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgIC4gIklkZW50aWZpZXIgZmllbGQgaXMgZW1wdHkiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjb250aW51ZSB7CiAgICAgICAgICAgICRSb3dJbmRleCsrOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsb29rdXAgdGFibGUgZm9yIGdldHRpbmcgdGhlIElEIGZvciBkZXBsb3ltZW50IHN0YXRlIG5hbWVzCiAgICBteSAlRGVwbFN0YXRlTGlzdFJldmVyc2U7CiAgICB7CiAgICAgICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJERlcGxTdGF0ZUxpc3QgfHwgcmVmICREZXBsU3RhdGVMaXN0IG5lICdIQVNIJyApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgLiAiQ2FuJ3QgZ2V0IHRoZSBnZW5lcmFsIGNhdGFsb2cgbGlzdCBJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSByZXZlcnNlIG1hcHBpbmcsIHRoYXQgaXMgZnJvbSBuYW1lIHRvIElECiAgICAgICAgJURlcGxTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAkRGVwbFN0YXRlTGlzdC0+JSo7CiAgICB9CgogICAgIyBnZXQgbG9va3VwIHRhYmxlIGZvciBnZXR0aW5nIHRoZSBJRCBmb3IgaW5jaWRlbnQgc3RhdGUgbmFtZXMKICAgIG15ICVJbmNpU3RhdGVMaXN0UmV2ZXJzZTsKICAgIHsKICAgICAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJEluY2lTdGF0ZUxpc3QgfHwgcmVmICRJbmNpU3RhdGVMaXN0IG5lICdIQVNIJyApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgLiAiQ2FuJ3QgZ2V0IHRoZSBnZW5lcmFsIGNhdGFsb2cgbGlzdCBJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSByZXZlcnNlIG1hcHBpbmcsIHRoYXQgaXMgZnJvbSBuYW1lIHRvIElECiAgICAgICAgJUluY2lTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAkSW5jaVN0YXRlTGlzdC0+JSo7CiAgICB9CgogICAgIyBnZXQgY3VycmVudCBkZWZpbml0aW9uIG9mIHRoaXMgY2xhc3MKICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgICAgIFVzZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgY2hlY2sgZGVmaW5pdGlvbiBkYXRhCiAgICBpZiAoICEkRGVmaW5pdGlvbiB8fCByZWYgJERlZmluaXRpb24gbmUgJ0hBU0gnICkgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgLiAiQ2FuJ3QgZ2V0IHRoZSBkZWZpbml0aW9uIG9mIGNsYXNzIGlkICRPYmplY3REYXRhLT57Q2xhc3NJRH0iLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHRyeSB0byBnZXQgdGhlIGNvbmZpZyBpdGVtIGlkIHdoZW4gdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGlkZW50aWZpZXIKICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICBpZiAoJUlkZW50aWZpZXIpIHsKCiAgICAgICAgbXkgJVNlYXJjaFBhcmFtczsKCiAgICAgICAgIyBhZGQgbnVtYmVyIHRvIHRoZSBzZWFyY2ggcGFyYW1zCiAgICAgICAgaWYgKCAkSWRlbnRpZmllcntOdW1iZXJ9ICkgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze051bWJlcn0gPSBkZWxldGUgJElkZW50aWZpZXJ7TnVtYmVyfTsKICAgICAgICB9CgogICAgICAgICMgYWRkIG5hbWUgdG8gdGhlIHNlYXJjaCBwYXJhbXMKICAgICAgICBpZiAoICRJZGVudGlmaWVye05hbWV9ICkgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze05hbWV9ID0gZGVsZXRlICRJZGVudGlmaWVye05hbWV9OwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgZGVwbG95bWVudCBzdGF0ZSB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgICAgIGlmICggJElkZW50aWZpZXJ7RGVwbFN0YXRlfSApIHsKCiAgICAgICAgICAgICMgZXh0cmFjdCBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICAgICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXsgJElkZW50aWZpZXJ7RGVwbFN0YXRlfSB9IHx8ICcnOwoKICAgICAgICAgICAgaWYgKCAhJERlcGxTdGF0ZUlEICkgewoKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIlRoZSBkZXBsb3ltZW50IHN0YXRlICckSWRlbnRpZmllcntEZXBsU3RhdGV9JyBpcyBpbnZhbGlkIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze0RlcGxTdGF0ZUlEc30gPSBbJERlcGxTdGF0ZUlEXTsKICAgICAgICAgICAgZGVsZXRlICRJZGVudGlmaWVye0RlcGxTdGF0ZX07CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBpbmNpZGVudCBzdGF0ZSB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgICAgIGlmICggJElkZW50aWZpZXJ7SW5jaVN0YXRlfSApIHsKCiAgICAgICAgICAgICMgZXh0cmFjdCBpbmNpZGVudCBzdGF0ZSBpZAogICAgICAgICAgICBteSAkSW5jaVN0YXRlSUQgPSAkSW5jaVN0YXRlTGlzdFJldmVyc2V7ICRJZGVudGlmaWVye0luY2lTdGF0ZX0gfSB8fCAnJzsKCiAgICAgICAgICAgIGlmICggISRJbmNpU3RhdGVJRCApIHsKCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICJUaGUgaW5jaWRlbnQgc3RhdGUgJyRJZGVudGlmaWVye0luY2lTdGF0ZX0nIGlzIGludmFsaWQiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7SW5jaVN0YXRlSURzfSA9IFskSW5jaVN0YXRlSURdOwogICAgICAgICAgICBkZWxldGUgJElkZW50aWZpZXJ7SW5jaVN0YXRlfTsKICAgICAgICB9CgogICAgICAgICMgdGhlIHJlbWFpbmluZyBpdGVtcyBpbiAlSWRlbnRpZmllciBhcmUgYWxsIGZvciBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVERkltcG9ydFNlYXJjaFBhcmFtcyA9ICRTZWxmLT5fREZJbXBvcnRTZWFyY2hEYXRhUHJlcGFyZSgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSwKICAgICAgICAgICAgSWRlbnRpZmllciAgICAgID0+IFwlSWRlbnRpZmllciwKICAgICAgICApOwogICAgICAgIEBTZWFyY2hQYXJhbXN7IGtleXMgJURGSW1wb3J0U2VhcmNoUGFyYW1zIH0gPSB2YWx1ZXMgJURGSW1wb3J0U2VhcmNoUGFyYW1zOwoKICAgICAgICAjIHNlYXJjaCBleGlzdGluZyBjb25maWcgaXRlbSB3aXRoIHRoZSBzYW1lIGlkZW50aWZpZXJzCiAgICAgICAgKCAkQ29uZmlnSXRlbUlELCBteSBAT3RoZXJDb25maWdJdGVtSURzICkgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgJVNlYXJjaFBhcmFtcywKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgID0+IFsgJE9iamVjdERhdGEtPntDbGFzc0lEfSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMCwKICAgICAgICAgICAgVXNpbmdXaWxkY2FyZHMgICAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIFF1ZXJ5Q29uZGl0aW9uICAgICAgICA9PiAwLAogICAgICAgICk7CgogICAgICAgIGlmIChAT3RoZXJDb25maWdJdGVtSURzKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgIC4gIklkZW50aWZpZXIgZmllbGRzIE5PVCB1bmlxdWUhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdmVyc2lvbiBkYXRhIG9mIHRoZSBjb25maWcgaXRlbQogICAgbXkgJFZlcnNpb25EYXRhID0ge307CiAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewoKICAgICAgICAjIGdldCBsYXRlc3QgdmVyc2lvbgogICAgICAgICRWZXJzaW9uRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIG15ICVNYXBwaW5nT2JqZWN0S2V5RGF0YSA9IG1hcCB7ICRfLT57S2V5fSA9PiAxIH0gQE1hcHBpbmdPYmplY3RMaXN0OwoKICAgICMgYnVpbGQgbGlzdCBvZiBkeW5hbWljIGZpZWxkcyB0byBpbmNsdWRlIGZpZWxkcyBvZiBkZWZpbml0aW9uIGFuZCBvZiBpbmNsdWRlZCBzZXQgZmllbGRzCiAgICBteSAlRHluYW1pY0ZpZWxkTGlzdDsKCiAgICAjIENoZWNrIGlmIGN1cnJlbnQgZGVmaW5pdGlvbiBvZiB0aGlzIGNsYXNzIGhhcyByZXF1aXJlZCBhdHRyaWJ1dGUgd2hpY2ggZG9lcyBub3QgZXhpc3QgaW4gbWFwcGluZyBsaXN0LgogICAgREZfTkFNRToKICAgIGZvciBteSAkREZOYW1lICggc29ydCBrZXlzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+eyRERk5hbWV9OwoKICAgICAgICAjIHNldCBmaWVsZCBuYW1lcyB0byBkaWZmZXJlbnRpYXRlIGR5bmFtaWMgZmllbGRzIGZyb20gc3RhbmRhcmQgYXR0cmlidXRlcwogICAgICAgICREeW5hbWljRmllbGRMaXN0eyRERk5hbWV9ID0gJER5bmFtaWNGaWVsZENvbmZpZzsKCiAgICAgICAgIyBUT0RPOiBpcyB0aGUgc3BlY2lhbCBjYXNlIGZvciBTZXQgbmVlZGVkID8KICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICBmb3IgbXkgJEluY2x1ZGVkREYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfS0+QCogKSB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdHsgJEluY2x1ZGVkREYtPntERn0gfSA9ICRJbmNsdWRlZERGLT57RGVmaW5pdGlvbn07CgogICAgICAgICAgICAgICAgIyBhc3N1bWluZyB0aGF0IGRmIHNldHMgYXJlIG5vdCBuZXN0ZWQgZGVlcGVyIHRoYW4gdHdvIHN0YWdlcwogICAgICAgICAgICAgICAgaWYgKCAkSW5jbHVkZWRERi0+e0RlZmluaXRpb259e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICROZXN0ZWRJbmNsdWRlZERGICggJEluY2x1ZGVkREYtPntEZWZpbml0aW9ufXtDb25maWd9e0luY2x1ZGV9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZExpc3R7ICROZXN0ZWRJbmNsdWRlZERGLT57REZ9IH0gPSAkTmVzdGVkSW5jbHVkZWRERi0+e0RlZmluaXRpb259OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBvbmx5IHJlcXVpcmVkIGF0dHJpYnV0ZXMKICAgICAgICBuZXh0IERGX05BTUUgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntSZXF1aXJlZH07CgogICAgICAgIG15ICRLZXkgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgIG5leHQgREZfTkFNRSBpZiAkTWFwcGluZ09iamVjdEtleURhdGF7IkR5bmFtaWNGaWVsZF8kS2V5In07CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAuICJBdHRyaWJ1dGUgJyRLZXknIGlzIHJlcXVpcmVkLCBidXQgZG9lcyBub3QgZXhpc3QgaW4gbWFwcGluZyBsaXN0ISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IHVwIGZpZWxkcyBpbiBWZXJzaW9uRGF0YSBhbmQgaW4gdGhlIFhNTCBhdHRyaWJ1dGVzCiAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CiAgICBteSAlREZIYXNoOyAgICAjIG1hcCBmaWVsZCBuYW1lLCBpbmNsdWRpbmcgdGhlIHByZWZpeCAnRHluYW1pY0ZpZWxkXycsIHRvIHRoZSB2YWx1ZQogICAgbXkgJFJvd0luZGV4ID0gMDsKICAgIE1BUFBJTkdfT0JKRUNUX0RBVEE6CiAgICBmb3IgbXkgJE1hcHBpbmdPYmplY3REYXRhIChATWFwcGluZ09iamVjdExpc3QpIHsKCiAgICAgICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgICAgIG15ICRLZXkgICA9ICRNYXBwaW5nT2JqZWN0RGF0YS0+e0tleX07CiAgICAgICAgbXkgJFZhbHVlID0gJFBhcmFte0ltcG9ydERhdGFSb3d9LT5bJFJvd0luZGV4XTsKCiAgICAgICAgaWYgKCAkS2V5IGVxICdOdW1iZXInICkgewoKICAgICAgICAgICAgIyBEbyBub3RoaW5nLiBUaGUgSW1wb3J0IG1heSBub3Qgb3ZlcnJpZGUgdGhlIGNvbmZpZyBpdGVtIG51bWJlci4KICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkS2V5IGVxICdOYW1lJyApIHsKCiAgICAgICAgICAgIGlmICggJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgJiYgKCAhZGVmaW5lZCAkVmFsdWUgfHwgJFZhbHVlIGVxICcnICkgKSB7CgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nLCBrZWVwIHRoZSBvbGQgdmFsdWUKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJFZhbHVlICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiVGhlIG5hbWUgJyRWYWx1ZScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+eyRLZXl9ID0gJFZhbHVlOwoKICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkS2V5IGVxICdEZXBsU3RhdGUnICkgewoKICAgICAgICAgICAgaWYgKCAkRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyAmJiAoICFkZWZpbmVkICRWYWx1ZSB8fCAkVmFsdWUgZXEgJycgKSApIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcsIGtlZXAgdGhlIG9sZCB2YWx1ZQogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGV4dHJhY3QgZGVwbG95bWVudCBzdGF0ZSBpZAogICAgICAgICAgICBteSAkRGVwbFN0YXRlSUQgPSAkRGVwbFN0YXRlTGlzdFJldmVyc2V7JFZhbHVlfSB8fCAnJzsKICAgICAgICAgICAgaWYgKCAhJERlcGxTdGF0ZUlEICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiVGhlIGRlcGxveW1lbnQgc3RhdGUgJyRWYWx1ZScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+e0RlcGxTdGF0ZUlEfSA9ICREZXBsU3RhdGVJRDsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICB9CgogICAgICAgIGlmICggJEtleSBlcSAnSW5jaVN0YXRlJyApIHsKCiAgICAgICAgICAgIGlmICggJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgJiYgKCAhZGVmaW5lZCAkVmFsdWUgfHwgJFZhbHVlIGVxICcnICkgKSB7CgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nLCBrZWVwIHRoZSBvbGQgdmFsdWUKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICAgICAgICAgIG15ICRJbmNpU3RhdGVJRCA9ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXskVmFsdWV9IHx8ICcnOwogICAgICAgICAgICBpZiAoICEkSW5jaVN0YXRlSUQgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICJUaGUgaW5jaWRlbnQgc3RhdGUgJyRWYWx1ZScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+e0luY2lTdGF0ZUlEfSA9ICRJbmNpU3RhdGVJRDsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICB9CgogICAgICAgIGlmICggJEtleSBlcSAnRGVzY3JpcHRpb24nICkgewoKICAgICAgICAgICAgaWYgKCAkRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyAmJiAoICFkZWZpbmVkICRWYWx1ZSB8fCAkVmFsdWUgZXEgJycgKSApIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcsIGtlZXAgdGhlIG9sZCB2YWx1ZQogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICEkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAuICJUaGUgZGVzY3JpcHRpb24gJyRWYWx1ZScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmV0cmlldmUgYW5kIHN0b3JlIGRlc2NyaXB0aW9uIGlubGluZSBpbWFnZXMgZm9yIGltcG9ydAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBteSBARGVzY3JpcHRpb25BdHRhY2htZW50czsKCiAgICAgICAgICAgICAgICAjIGF0dGFjaG1lbnRzIGFyZSBzdG9yZWQgaW4gdGhlIHNyYyBhdHRyaWJ1dGUgb2YgdGhlaXIgaW1nIHRhZyBhcyBiYXNlNjQgZW5jb2RlZCBzdHJpbmcKICAgICAgICAgICAgICAgIG15IEBBdHRhY2htZW50U3RyaW5ncyA9ICRWYWx1ZSA9fiAvc3JjPVwiKC4rPylcIiAvZ3M7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnRTdHJpbmcgKEBBdHRhY2htZW50U3RyaW5ncykgewogICAgICAgICAgICAgICAgICAgIG15ICVBdHRhY2htZW50ID0gc3BsaXQoIC8jIyMvLCAkQXR0YWNobWVudFN0cmluZywgLTEgKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICVBdHRhY2htZW50ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudHskS2V5fSA9ICRBdHRhY2htZW50eyRLZXl9IGVxICcnID8gJycgOiBkZWNvZGVfYmFzZTY0KCAkQXR0YWNobWVudHskS2V5fSApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgS0VZOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkS2V5IChxdyggRmlsZW5hbWUgQ29udGVudFR5cGUgRGlzcG9zaXRpb24gKSkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IEtFWSB1bmxlc3MgJEF0dGFjaG1lbnR7JEtleX07CgogICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudHskS2V5fSA9IEVuY29kZTo6ZGVjb2RlKCAnVVRGLTgnLCAkQXR0YWNobWVudHskS2V5fSApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcHVzaCBARGVzY3JpcHRpb25BdHRhY2htZW50cywgXCVBdHRhY2htZW50OwoKICAgICAgICAgICAgICAgICAgICAjIGVzY2FwZSBiYXNlNjQgc3BlY2lhbCBjaGFyYWN0ZXJzICcvJyBhbmQgJysnCiAgICAgICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnRTdHJpbmdFc2NhcGVkID0gJEF0dGFjaG1lbnRTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnRTdHJpbmdFc2NhcGVkID1+IHMvXC8vXFxcLy9nOwogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50U3RyaW5nRXNjYXBlZCA9fiBzL1wrL1xcXCsvZzsKCiAgICAgICAgICAgICAgICAgICAgIyByZXBsYWNlIGJhc2U2NCBlbmNvZGVkIHN0cmluZyBpbiBkZXNjcmlwdGlvbiB3aXRoIGNvbnRlbmQgaWQKICAgICAgICAgICAgICAgICAgICAkVmFsdWUgPX4gcy8kQXR0YWNobWVudFN0cmluZ0VzY2FwZWQvY2lkOiRBdHRhY2htZW50e0NvbnRlbnRJRH0vZ3M7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb25BdHRhY2htZW50c30gPSBcQERlc2NyaXB0aW9uQXR0YWNobWVudHM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+eyRLZXl9ID0gJFZhbHVlOwoKICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkS2V5IGVxICdWZXJzaW9uU3RyaW5nJyApIHsKCiAgICAgICAgICAgIGlmICggJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgJiYgKCAhZGVmaW5lZCAkVmFsdWUgfHwgJFZhbHVlIGVxICcnICkgKSB7CgogICAgICAgICAgICAgICAgIyBkbyBub3RoaW5nLCBrZWVwIHRoZSBvbGQgdmFsdWUKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJFZhbHVlICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiVGhlIHZlcnNpb24gc3RyaW5nICckVmFsdWUnIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkVmVyc2lvbkRhdGEtPnskS2V5fSA9ICRWYWx1ZTsKCiAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICB9CgogICAgICAgIGlmICggJEtleSA9fiBtL15EeW5hbWljRmllbGRfKD88REZOYW1lV2l0aEluZGV4Pi4rKS8gKSB7CgogICAgICAgICAgICBpZiAoJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMpIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcsIGtlZXAgdGhlIG9sZCB2YWx1ZQogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBIGlmICFkZWZpbmVkICRWYWx1ZTsKCiAgICAgICAgICAgICAgICBpZiAoIHJlZiAkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJFZhbHVlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQSBpZiAkVmFsdWUgZXEgJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgVGhlIGtleSBtaWdodCBlbmNvbXBhc3MgYW4gaW5kZXgsIGluZGljYXRlZCBieSAnOjonLgogICAgICAgICAgICAjIE5vdGUgdGhhdCB0aGUgIGluZGV4ZXMgYXJlIDEtYmFzZWQuCiAgICAgICAgICAgIG15ICggJERGTmFtZSwgJEluZGV4LCAkSW5uZXJERk5hbWUsICRJbm5lckluZGV4ICkgPSBzcGxpdCAvOjovLCAkK3tERk5hbWVXaXRoSW5kZXh9OwoKICAgICAgICAgICAgIyBpZ25vcmUgdW5leHBlY3RlZCBpbmRleGVzLCBidXQgc3RpbGwgY3V0IHRoZSAnOjonCiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkSW5kZXggJiYgJEluZGV4ICF+IG0vXlsxLTldWzAtOV0qJC8gKSB7CiAgICAgICAgICAgICAgICB1bmRlZiAkSW5kZXg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRJbm5lckluZGV4ICYmICRJbm5lckluZGV4ICF+IG0vXlsxLTldWzAtOV0qJC8gKSB7CiAgICAgICAgICAgICAgICB1bmRlZiAkSW5uZXJJbmRleDsKICAgICAgICAgICAgfQogICAgICAgICAgICBteSAkREZLZXkgPSAiRHluYW1pY0ZpZWxkXyRERk5hbWUiOwoKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRMaXN0eyRERk5hbWV9OwoKICAgICAgICAgICAgIyBza2lwIGltcG9ydCB3aGVuIHRoZSBkeW5hbWljIGZpZWxkIGlzIG5vdCBmb3VuZAogICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEEgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBoYW5kbGUgc2V0LWlubmVyIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgIGlmICgkSW5uZXJERk5hbWUpIHsKICAgICAgICAgICAgICAgIG15ICRJbm5lckRGQ29uZmlnID0gJER5bmFtaWNGaWVsZExpc3R7JElubmVyREZOYW1lfTsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEEgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRJbm5lckRGQ29uZmlnKTsKCiAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX0gLy89IFtdOwogICAgICAgICAgICAgICAgJERGSGFzaHskREZLZXl9WyAkSW5kZXggLSAxIF17JElubmVyREZOYW1lfSAvLz0gW107CgogICAgICAgICAgICAgICAgaWYgKCByZWYgJFZhbHVlICkgewogICAgICAgICAgICAgICAgICAgICRERkhhc2h7JERGS2V5fVsgJEluZGV4IC0gMSBdeyRJbm5lckRGTmFtZX1bICRJbm5lckluZGV4IC0gMSBdID0gJFZhbHVlOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBNdWx0aXZhbHVlIGZpZWxkcyBhcmUgZXhwb3J0ZWQgYXMgSlNPTiBzdHJpbmdzIGluIHRoZSBjYXNlIG9mIENTViBleHBvcnRzLgogICAgICAgICAgICAgICAgbXkgJElubmVySXNNdWx0aVZhbHVlID0gJElubmVyREZDb25maWctPntDb25maWd9e011bHRpVmFsdWV9OwoKICAgICAgICAgICAgICAgIGlmICggJElubmVySXNNdWx0aVZhbHVlICYmICRJbm5lckluZGV4ICkgewogICAgICAgICAgICAgICAgICAgICRERkhhc2h7JERGS2V5fVsgJEluZGV4IC0gMSBdeyRJbm5lckRGTmFtZX1bICRJbm5lckluZGV4IC0gMSBdID0gJFZhbHVlOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBUaGUgdmFsdWUgaXMgZW5jb2RlZCBhcyBKU09OIGZvciBtdWx0aXZhbHVlCiAgICAgICAgICAgICAgICBpZiAoJElubmVySXNNdWx0aVZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgJERGSGFzaHskREZLZXl9WyAkSW5kZXggLSAxIF17JElubmVyREZOYW1lfSA9ICRKU09OT2JqZWN0LT5EZWNvZGUoCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGtlZXAgdGhlIHZhbHVlIGFzIGlzLCBmb3Igc2luZ2xlIHZhbHVlLCBub24tc2V0CiAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX1bICRJbmRleCAtIDEgXXskSW5uZXJERk5hbWV9ID0gJFZhbHVlOwoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZWZlcmVuY2VzIGFyZSBuZXZlciB1bnBhY2tlZAogICAgICAgICAgICBpZiAoIHJlZiAkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX0gPSAkVmFsdWU7CgogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIE11bHRpdmFsdWUgZmllbGRzIGFyZSBleHBvcnRlZCBhcyBKU09OIHN0cmluZ3MgaW4gdGhlIGNhc2Ugb2YgQ1NWIGV4cG9ydHMuCiAgICAgICAgICAgIG15ICRJc011bHRpVmFsdWUgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e011bHRpVmFsdWV9OwogICAgICAgICAgICBteSAkSXNTZXQgICAgICAgID0gKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSAvLyAnJyApIGVxICdTZXQnOwoKICAgICAgICAgICAgIyBGb3IgaW5kZXhlZCBhY2Nlc3Mgb25seSBTZXRzIGFyZSBKU09OIGVuY29kZWQKICAgICAgICAgICAgaWYgKCAkSXNNdWx0aVZhbHVlICYmICRJbmRleCApIHsKICAgICAgICAgICAgICAgICRERkhhc2h7JERGS2V5fSAvLz0gW107CiAgICAgICAgICAgICAgICBpZiAoJElzU2V0KSB7CiAgICAgICAgICAgICAgICAgICAgJERGSGFzaHskREZLZXl9LT5bICRJbmRleCAtIDEgXSA9ICRKU09OT2JqZWN0LT5EZWNvZGUoCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX0tPlsgJEluZGV4IC0gMSBdID0gJFZhbHVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR19PQkpFQ1RfREFUQTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBUaGUgdmFsdWUgaXMgZW5jb2RlZCBhcyBKU09OIGZvciBtdWx0aXZhbHVlIGFuZCBzZXRzCiAgICAgICAgICAgIGlmICggJElzTXVsdGlWYWx1ZSB8fCAkSXNTZXQgKSB7CiAgICAgICAgICAgICAgICAkREZIYXNoeyRERktleX0gPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdfT0JKRUNUX0RBVEE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMga2VlcCB0aGUgdmFsdWUgYXMgaXMsIGZvciBzaW5nbGUgdmFsdWUsIG5vbi1zZXQKICAgICAgICAgICAgJERGSGFzaHskREZLZXl9ID0gJFZhbHVlOwoKICAgICAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgICAgIH0KCiAgICAgICAgIyBza2lwIHRoaXMgbWFwcGluZyB3aGVuIGl0IGNvdWxkIG5vdCBiZSBoYW5kbGVkCiAgICAgICAgbmV4dCBNQVBQSU5HX09CSkVDVF9EQVRBOwogICAgfQogICAgY29udGludWUgewogICAgICAgICRSb3dJbmRleCsrOwogICAgfQoKICAgICMgaWYgZW1wdHkgZmllbGRzIGltcGx5IHRoYXQgb2xkIHZhbHVlcyBzaG91bGQgYmUgcHJlc2VydmVkLAogICAgIyAgIHdlIHRpZHkgdGhlIGltcG9ydGVkIGR5bmFtaWMgZmllbGQgZGF0YSBvZiBlbXB0eSBvciB1bmRlZmluZWQgdmFsdWVzCiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlREZIYXNoICkgewogICAgICAgIGlmICggJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgJiYgKCAhZGVmaW5lZCAkREZIYXNoeyRLZXl9IHx8ICRERkhhc2h7JEtleX0gZXEgJycgKSApIHsKICAgICAgICAgICAgZGVsZXRlICRERkhhc2h7JEtleX07CiAgICAgICAgfQogICAgfQoKICAgIG15ICVOZXdWZXJzaW9uRGF0YSA9ICVERkhhc2g7CgogICAgIyBjaGVjayBpZiB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICBpZiAoCiAgICAgICAgSXNTdHJpbmdXaXRoRGF0YSggJFZlcnNpb25EYXRhLT57TmFtZX0gKQogICAgICAgICYmICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVW5pcXVlQ0lOYW1lOjpFbmFibGVVbmlxdWVuZXNzQ2hlY2snKQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPntEZWJ1Z30gPiAwICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2hlY2tpbmcgZm9yIGR1cGxpY2F0ZSBuYW1lcyAoQ2xhc3NJRDogJE9iamVjdERhdGEtPntDbGFzc0lEfSwgIgogICAgICAgICAgICAgICAgICAgIC4gIk5hbWU6ICRWZXJzaW9uRGF0YS0+e05hbWV9LCBDb25maWdJdGVtSUQ6ICIgLiAkQ29uZmlnSXRlbUlEIHx8ICdORVcnIC4gJyknLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJE5hbWVEdXBsaWNhdGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlVuaXF1ZU5hbWVDaGVjaygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQgfHwgJ05FVycsCiAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFZlcnNpb25EYXRhLT57TmFtZX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzdG9wIHByb2Nlc3NpbmcgaWYgdGhlIG5hbWUgaXMgbm90IHVuaXF1ZQogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCROYW1lRHVwbGljYXRlcykgKSB7CgogICAgICAgICAgICAjIGJ1aWxkIGEgc3RyaW5nIG9mIGFsbCBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgIG15ICROYW1lRHVwbGljYXRlc1N0cmluZyA9IGpvaW4gJywgJywgQHskTmFtZUR1cGxpY2F0ZXN9OwoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiVGhlIG5hbWUgJFZlcnNpb25EYXRhLT57TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1JRChzKTogIgogICAgICAgICAgICAgICAgICAgIC4gJE5hbWVEdXBsaWNhdGVzU3RyaW5nLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGhlIHJldHVybiBjb2RlIHRvIGFsc28gaW5jbHVkZSB0aGUgZHVwbGljYXRlIG5hbWUKICAgICAgICAgICAgIyByZXR1cm4gdW5kZWYgZm9yIHRoZSBjb25maWcgaXRlbSBpZCBzbyBpdCB3aWxsIGJlIGNvdW50ZWQgYXMgJ0ZhaWxlZCcKICAgICAgICAgICAgcmV0dXJuIHVuZGVmLCAiRHVwbGljYXRlTmFtZSAnJFZlcnNpb25EYXRhLT57TmFtZX0nIjsgICAgIyMgbm8gY3JpdGljIHF3KFN1YnJvdXRpbmVzOjpQcm9oaWJpdEV4cGxpY2l0UmV0dXJuVW5kZWYpCiAgICAgICAgfQogICAgfQoKICAgICMgZXh0cmFjdCB0aGUgZGF0YSB0aGF0IGNvbmNlcm5zIGR5bmFtaWMgZmllbGRzCiAgICBteSAlREZWZXJzaW9uRGF0YSA9CiAgICAgICAgbWFwICB7ICRfID0+ICROZXdWZXJzaW9uRGF0YXskX30gfQogICAgICAgIGdyZXAge20vXkR5bmFtaWNGaWVsZC99CiAgICAgICAga2V5cyAlTmV3VmVyc2lvbkRhdGE7CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIHRoZSBzcGVjaWZpZWQgY29uZmlnIGl0ZW0gYWxyZWFkeSBleGlzdHMKICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CgogICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAkVmVyc2lvbkRhdGEtPntOYW1lfSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgPT4gJFZlcnNpb25EYXRhLT57RGVwbFN0YXRlSUR9LAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgID0+ICRWZXJzaW9uRGF0YS0+e0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICA9PiAkVmVyc2lvbkRhdGEtPntEZXNjcmlwdGlvbn0sCiAgICAgICAgICAgIFZlcnNpb25TdHJpbmcgPT4gJFZlcnNpb25EYXRhLT57VmVyc2lvblN0cmluZ30sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICVERkhhc2gsCiAgICAgICAgICAgIEV4dGVybmFsU291cmNlID0+IDEsCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAuICJFcnJvciB3aGVuIGFkZGluZyB0aGUgbmV3IGNvbmZpZyBpdGVtIHZlcnNpb24uIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZmV0Y2ggdXBkYXRlZCBkYXRhIHRvIGdldCB2ZXJzaW9uIGlkCiAgICAgICAgbXkgJFVwZGF0ZWRDb25maWdJdGVtRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgaW1wb3J0IGRlc2NyaXB0aW9uIGlubGluZSBpbWFnZXMKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb25BdHRhY2htZW50c30gKSApIHsKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50ICggJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb25BdHRhY2htZW50c30tPkAqICkgewogICAgICAgICAgICAgICAgbXkgJFZlcnNpb25BdHRhY2htZW50U3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFVwZGF0ZWRDb25maWdJdGVtRGF0YS0+e0xhc3RWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT4lKiwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdGhlIGxhc3QgYW5kIHVubWFwcGVkIGVudHJpZXMgYXJlIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gQHsgJFBhcmFte0ltcG9ydERhdGFSb3d9IH1bICRSb3dJbmRleCAuLiAkI3sgJFBhcmFte0ltcG9ydERhdGFSb3d9IH0gXTsKCiAgICAgICAgIyBpZiBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzIGlzIGZhbHNlLCBjbGVhciBhbGwgYXR0YWNobWVudHMKICAgICAgICBpZiAoICEkRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyApIHsKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApOwogICAgICAgICAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgIG15ICRDbGVhclN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJE9iamVjdERhdGEtPntJbmNsdWRlQXR0YWNobWVudHN9ICYmIEBBdHRhY2htZW50cyApIHsKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50U3RyaW5nIChAQXR0YWNobWVudHMpIHsKICAgICAgICAgICAgICAgIG15ICVBdHRhY2htZW50ID0gc3BsaXQoIC8jIyMvLCAkQXR0YWNobWVudFN0cmluZywgLTEgKTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAoIGtleXMgJUF0dGFjaG1lbnQgKSB7CiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnR7JEtleX0gPSAkQXR0YWNobWVudHskS2V5fSBlcSAnJyA/ICcnIDogZGVjb2RlX2Jhc2U2NCggJEF0dGFjaG1lbnR7JEtleX0gKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBLRVk6CiAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoIEZpbGVuYW1lIENvbnRlbnRUeXBlIERpc3Bvc2l0aW9uICkpIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEtFWSB1bmxlc3MgJEF0dGFjaG1lbnR7JEtleX07CgogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50eyRLZXl9ID0gRW5jb2RlOjpkZWNvZGUoICdVVEYtOCcsICRBdHRhY2htZW50eyRLZXl9ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgZHVwbGljYXRlcwogICAgICAgICAgICAgICAgbXkgJEV4aXN0cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEV4aXN0cygKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnR7RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGlmIGR1cGxpY2F0ZSBleGlzdHMsIGRlbGV0ZSBpdCB0byBvdmVyd3JpdGUgd2l0aCB0aGUgaW1wb3J0ZWQgYXR0YWNobWVudAogICAgICAgICAgICAgICAgaWYgKCRFeGlzdHMpIHsKICAgICAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkQXR0YWNobWVudHtGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdGhlIGF0dGFjaG1lbnQgZGVsZXRlIHN1Y2Nlc3MKICAgICAgICAgICAgICAgICAgICBpZiAoICEkRGVsZXRlU3VjY2VzcyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aXRoIGltcG9ydGluZyBhbiBhdHRhY2htZW50IGZvciBjb25maWcgaXRlbSAkQ29uZmlnSXRlbUlEOiBDb3VsZG4ndCBjbGVhbiB1cCBleGlzdGluZyBmaWxlICRBdHRhY2htZW50e0ZpbGVuYW1lfSEiLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAlQXR0YWNobWVudCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayB0aGUgYXR0YWNobWVudCBhZGQgc3VjY2VzcwogICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CgogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb3Igd2l0aCBpbXBvcnRpbmcgYW4gYXR0YWNobWVudCBmb3IgY29uZmlnIGl0ZW0gJENvbmZpZ0l0ZW1JRDogQWRkaW5nIGZpbGUgJEF0dGFjaG1lbnR7RmlsZW5hbWV9IGZhaWxlZCEiLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBpZiBDb25maWdJdGVtVXBkYXRlIHN1Y2NlZWRlZCwgd2UgY29uc2lkZXIgdGhlIGRhdGEgYXMgY2hhbmdlZCByZWdhcmRsZXNzIHdoZXRoZXIgZGF0YSB3YXMgZGlmZmVyZW50CiAgICAgICAgbXkgJFJldENvZGUgPSBUcmFuc2xhdGFibGUoJ0NoYW5nZWQnKTsKCiAgICAgICAgcmV0dXJuICRDb25maWdJdGVtSUQsICRSZXRDb2RlOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgbm8gY29uZmlnIGl0ZW0gd2FzIGZvdW5kLCBzbyBhZGQgbmV3IGNvbmZpZyBpdGVtCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgICAgICA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAkVmVyc2lvbkRhdGEtPntOYW1lfSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgICA9PiAkVmVyc2lvbkRhdGEtPntEZXBsU3RhdGVJRH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgID0+ICRWZXJzaW9uRGF0YS0+e0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb259LAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nICA9PiAkVmVyc2lvbkRhdGEtPntWZXJzaW9uU3RyaW5nfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIEV4dGVybmFsU291cmNlID0+IDEsCiAgICAgICAgICAgICVERlZlcnNpb25EYXRhLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgdGhlIG5ldyBjb25maWcgaXRlbSBpZAogICAgICAgIGlmICggISRDb25maWdJdGVtSUQgKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgIC4gIkVycm9yIHdoZW4gYWRkaW5nIHRoZSBuZXcgY29uZmlnIGl0ZW0uIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgaW1wb3J0IGRlc2NyaXB0aW9uIGlubGluZSBpbWFnZXMKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFZlcnNpb25EYXRhLT57RGVzY3JpcHRpb25BdHRhY2htZW50c30gKSApIHsKCiAgICAgICAgICAgICMgZ2V0IGxhdGVzdCB2ZXJzaW9uIGlkCiAgICAgICAgICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uTGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApIHx8IFtdOwogICAgICAgICAgICBteSAkTGF0ZXN0VmVyc2lvbklEID0gJFZlcnNpb25MaXN0LT5bLTFdIC8vIDA7CgogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKCAkVmVyc2lvbkRhdGEtPntEZXNjcmlwdGlvbkF0dGFjaG1lbnRzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBteSAkVmVyc2lvbkF0dGFjaG1lbnRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkTGF0ZXN0VmVyc2lvbklELAogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT4lKiwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdGhlIGxhc3QgYW5kIHVubWFwcGVkIGVudHJpZXMgYXJlIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRzID0gQHsgJFBhcmFte0ltcG9ydERhdGFSb3d9IH1bICRSb3dJbmRleCAuLiAkI3sgJFBhcmFte0ltcG9ydERhdGFSb3d9IH0gXTsKICAgICAgICBpZiAoICRPYmplY3REYXRhLT57SW5jbHVkZUF0dGFjaG1lbnRzfSAmJiBAQXR0YWNobWVudHMgKSB7CiAgICAgICAgICAgIGZvciBteSAkQXR0YWNobWVudFN0cmluZyAoQEF0dGFjaG1lbnRzKSB7CiAgICAgICAgICAgICAgICBteSAlQXR0YWNobWVudCA9IHNwbGl0KCAvIyMjLywgJEF0dGFjaG1lbnRTdHJpbmcsIC0xICk7CgogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICVBdHRhY2htZW50ICkgewogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50eyRLZXl9ID0gJEF0dGFjaG1lbnR7JEtleX0gZXEgJycgPyAnJyA6IGRlY29kZV9iYXNlNjQoICRBdHRhY2htZW50eyRLZXl9ICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgS0VZOgogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KCBGaWxlbmFtZSBDb250ZW50VHlwZSBEaXNwb3NpdGlvbiApKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBLRVkgdW5sZXNzICRBdHRhY2htZW50eyRLZXl9OwoKICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudHskS2V5fSA9IEVuY29kZTo6ZGVjb2RlKCAnVVRGLTgnLCAkQXR0YWNobWVudHskS2V5fSApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICVBdHRhY2htZW50LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHRoZSBhdHRhY2htZW50IGFkZCBzdWNjZXNzCiAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKCiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFcnJvciB3aXRoIGltcG9ydGluZyBhbiBhdHRhY2htZW50IGZvciBjb25maWcgaXRlbSAkQ29uZmlnSXRlbUlEOiBBZGRpbmcgZmlsZSAkQXR0YWNobWVudHtGaWxlbmFtZX0gZmFpbGVkISIsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJENvbmZpZ0l0ZW1JRCwgVHJhbnNsYXRhYmxlKCdDcmVhdGVkJyk7CiAgICB9Cn0KCj1oZWFkMSBJTlRFUk5BTCBJTlRFUkZBQ0UKCj1oZWFkMiBfTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoKQoKcmVjdXJzaXZlIGZ1bmN0aW9uIGZvciBNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCgpLgpEZWZpbml0aW9ucyBmb3Igb2JqZWN0IGF0dHJpYnV0ZXMgYXJlIHBhc3NlZCBpbiBDPER5bmFtaWNGaWVsZFJlZj4uClRoZSBuZXcgb2JqZWN0IGF0dHJpYnV0ZXMgYXJlIHJldHVybmVkLgpDPENvdW50TWF4TGltaXQ+IGxpbWl0cyB0aGUgbWF4IGxlbmd0aCBvZiBpbXBvcnRhYmxlIGFycmF5cy4KQzxDb3VudE1heFNldE91dGVyTGltaXQ+IGxpbWl0cyB0aGUgbWF4IGxlbmd0aCBvZiBpbXBvcnRhYmxlIGFycmF5cyBvZiBTZXQgZHluYW1pYyBmaWVsZHMuCkM8Q291bnRNYXhTZXRJbm5lckxpbWl0PiBsaW1pdHMgdGhlIG1heCBsZW5ndGggb2YgaW1wb3J0YWJsZSBhcnJheXMgb2YgU2V0IGR5bmFtaWMgZmllbGQgY29udGVudCBmaWVsZHMuCgogICAgcHVzaCBARWxlbWVudHMsICRPYmplY3RCYWNrZW5kLT5fTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkUmVmICAgICAgID0+ICRIYXNoUmVmLAogICAgICAgIENvdW50TWF4TGltaXQgICAgICAgICA9PiAzLAogICAgICAgIENvdW50TWF4U2V0T3V0ZXJMaW1pdCA9PiAwLAogICAgICAgIENvdW50TWF4U2V0SW5uZXJMaW1pdCA9PiAwLAogICAgKTsKCj1jdXQKCnN1YiBfTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIHBhcmFtcwogICAgZm9yIG15ICRDb3VudE1heEF0dHIgKHF3KENvdW50TWF4TGltaXQgQ291bnRNYXhTZXRPdXRlckxpbWl0IENvdW50TWF4U2V0SW5uZXJMaW1pdCkpIHsKICAgICAgICByZXR1cm4gdW5sZXNzIGRlZmluZWQgJFBhcmFteyRDb3VudE1heEF0dHJ9OwogICAgICAgIHJldHVybiB1bmxlc3MgcmVmICRQYXJhbXskQ291bnRNYXhBdHRyfSBlcSAnJzsKICAgIH0KCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9OwogICAgcmV0dXJuIHVubGVzcyByZWYgJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0gZXEgJ0hBU0gnOwoKICAgIG15IEBFbGVtZW50czsKICAgIGZvciBteSAkREZOYW1lICggc29ydCBrZXlzICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9LT4lKiApIHsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0tPnskREZOYW1lfTsKICAgICAgICBteSAkREZEZXRhaWxzICAgICAgICAgID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ307CgogICAgICAgICMgdGhlIHZlcnNpb24gd2l0aG91dCBwcmVmaXggaXMgYWx3YXlzIHBvc3NpYmxlCiAgICAgICAgIyAgIGRlc3BpdGUgZm9yIFNldCBmaWVsZHMsIHdoaWNoIGlzIGNvbnRyb2xsZWQgYnkgQ291bnRNYXhTZXRPdXRlckxpbWl0CiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBuZSAnU2V0JyB8fCAkUGFyYW17Q291bnRNYXhTZXRPdXRlckxpbWl0fSApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXggYW5kIGEgcG90ZW50aWFsIGNvdW50CiAgICAgICAgICAgIG15ICRLZXkgPSBqb2luICc6OicsCiAgICAgICAgICAgICAgICAoICRQYXJhbXtLZXlQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAkREZOYW1lOwoKICAgICAgICAgICAgIyBjcmVhdGUga2V5IHN0cmluZywgaW5jbHVkaW5nIGEgcG90ZW50aWFsIHByZWZpeCBhbmQgYSBwb3RlbnRpYWwgY291bnQKICAgICAgICAgICAgbXkgJFZhbHVlID0gam9pbiAnOjonLAogICAgICAgICAgICAgICAgKCAkUGFyYW17VmFsdWVQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAkREZOYW1lOwoKICAgICAgICAgICAgIyBhZGQgcm93CiAgICAgICAgICAgIHB1c2ggQEVsZW1lbnRzLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICJEeW5hbWljRmllbGRfJEtleSIsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gIkR5bmFtaWNGaWVsZF8kVmFsdWUiLAogICAgICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgTGltaXQgdGhlIGxlbmd0aCBvZiBpbXBvcnRhYmxlIGFycmF5cywgZXZlbiBpZiBtb3JlIGVsZW1lbnRzIGNhbiBiZSBzZXQgdmlhIHRoZSBHVUkuCiAgICAgICAgbXkgJElzTXVsdGkgID0gJERGRGV0YWlscy0+e011bHRpc2VsZWN0fSB8fCAkREZEZXRhaWxzLT57TXVsdGlWYWx1ZX07CiAgICAgICAgbXkgJENvdW50TWF4ID0gMDsKICAgICAgICBpZiAoJElzTXVsdGkpIHsKCiAgICAgICAgICAgICMgdXNlIFNldE91dGVyIGxpbWl0IGZvciBTZXQgZmllbGRzIHRoZW1zZWx2ZXMKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKICAgICAgICAgICAgICAgICRDb3VudE1heCA9ICRQYXJhbXtDb3VudE1heFNldE91dGVyTGltaXR9IC8vIDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdXNlIG5vcm1hbCBsaW1pdCBmb3IgZXZlcnl0aGluZyBlbHNlCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJENvdW50TWF4ID0gJFBhcmFte0NvdW50TWF4TGltaXR9IC8vIDM7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvciBteSAkQ291bnQgKCAxIC4uICRDb3VudE1heCApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXggYW5kIGEgcG90ZW50aWFsIGNvdW50CiAgICAgICAgICAgIG15ICRLZXkgPSBqb2luICc6OicsCiAgICAgICAgICAgICAgICAoICRQYXJhbXtLZXlQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAkREZOYW1lLAogICAgICAgICAgICAgICAgJENvdW50OwoKICAgICAgICAgICAgIyBjcmVhdGUga2V5IHN0cmluZywgaW5jbHVkaW5nIGEgcG90ZW50aWFsIHByZWZpeCBhbmQgYSBwb3RlbnRpYWwgY291bnQKICAgICAgICAgICAgbXkgJFZhbHVlID0gam9pbiAnOjonLAogICAgICAgICAgICAgICAgKCAkUGFyYW17VmFsdWVQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAkREZOYW1lLAogICAgICAgICAgICAgICAgJENvdW50OwoKICAgICAgICAgICAgIyBhZGQgcm93CiAgICAgICAgICAgIHB1c2ggQEVsZW1lbnRzLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICJEeW5hbWljRmllbGRfJEtleSIsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gIkR5bmFtaWNGaWVsZF8kVmFsdWUiLAogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICMgaW4gY2FzZSBvZiBTZXQsIGl0ZXJhdGUgaW5uZXIgZmllbGRzIGFzIHdlbGwKICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnU2V0JyApIHsKCiAgICAgICAgICAgICAgICBteSAkSW5uZXJGaWVsZHMgPSAkREZEZXRhaWxzLT57SW5jbHVkZX07CgogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJElubmVyRmllbGRzKSApIHsKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEZpZWxkSXRlbSAoICRJbm5lckZpZWxkcy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRGaWVsZENvbmZpZyAgICA9ICRGaWVsZEl0ZW0tPntEZWZpbml0aW9ufTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJElubmVyREZEZXRhaWxzID0gJEZpZWxkQ29uZmlnLT57Q29uZmlnfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIHZlcnNpb24gd2l0aG91dCBwcmVmaXggaXMgYWx3YXlzIHBvc3NpYmxlCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXggYW5kIGEgcG90ZW50aWFsIGNvdW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkSW5uZXJLZXkgPSBqb2luICc6OicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkUGFyYW17S2V5UHJlZml4fSB8fCAoKSApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRERk5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggJFBhcmFte0tleVByZWZpeH0gfHwgKCkgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBrZXkgc3RyaW5nLCBpbmNsdWRpbmcgYSBwb3RlbnRpYWwgcHJlZml4IGFuZCBhIHBvdGVudGlhbCBjb3VudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJElubmVyVmFsdWUgPSBqb2luICc6OicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkUGFyYW17VmFsdWVQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERGTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkUGFyYW17VmFsdWVQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgcm93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBFbGVtZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICJEeW5hbWljRmllbGRfJElubmVyS2V5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gIkR5bmFtaWNGaWVsZF8kSW5uZXJWYWx1ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJElubmVySXNNdWx0aSAgPSAkSW5uZXJERkRldGFpbHMtPntNdWx0aXNlbGVjdH0gfHwgJElubmVyREZEZXRhaWxzLT57TXVsdGlWYWx1ZX07CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb3VudElubmVyTWF4ID0gJElubmVySXNNdWx0aSA/ICggJFBhcmFte0NvdW50TWF4U2V0SW5uZXJMaW1pdH0gLy8gMCApIDogMDsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ291bnRJbm5lciAoIDEgLi4gJENvdW50SW5uZXJNYXggKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjcmVhdGUga2V5IHN0cmluZywgaW5jbHVkaW5nIGEgcG90ZW50aWFsIHByZWZpeCBhbmQgYSBwb3RlbnRpYWwgY291bnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRJbm5lcktleSA9IGpvaW4gJzo6JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICRQYXJhbXtLZXlQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERGTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAkUGFyYW17S2V5UHJlZml4fSB8fCAoKSApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDb3VudElubmVyOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXggYW5kIGEgcG90ZW50aWFsIGNvdW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkSW5uZXJWYWx1ZSA9IGpvaW4gJzo6JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICRQYXJhbXtWYWx1ZVByZWZpeH0gfHwgKCkgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkREZOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICRQYXJhbXtWYWx1ZVByZWZpeH0gfHwgKCkgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ291bnRJbm5lcjsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCByb3cKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEVsZW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gIkR5bmFtaWNGaWVsZF8kSW5uZXJLZXkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAiRHluYW1pY0ZpZWxkXyRJbm5lclZhbHVlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBARWxlbWVudHM7Cn0KCj1oZWFkMiBfREZTZWFyY2hBdHRyaWJ1dGVzR2V0KCkKCnJlY3Vyc2l2ZSBmdW5jdGlvbiBmb3IgU2VhcmNoQXR0cmlidXRlc0dldCgpCgogICAgJE9iamVjdEJhY2tlbmQtPl9ERlNlYXJjaEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkQXJyYXlSZWYsCiAgICAgICAgQXR0cmlidXRlTGlzdCA9PiAkQXJyYXlSZWYsCiAgICApOwoKPWN1dAoKc3ViIF9ERlNlYXJjaEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17RHluYW1pY0ZpZWxkUmVmfTsKICAgIHJldHVybiB1bmxlc3MgcmVmICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9IGVxICdIQVNIJzsKCiAgICBteSBAQXR0cmlidXRlczsKICAgIERGX05BTUU6CiAgICBmb3IgbXkgJERGTmFtZSAoIHNvcnQga2V5cyAkUGFyYW17RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9LT57JERGTmFtZX07CgogICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXgKICAgICAgICBteSAkS2V5ID0gam9pbiAnOjonLAogICAgICAgICAgICAoICRQYXJhbXtLZXlQcmVmaXh9IHx8ICgpICksCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBjcmVhdGUgbmFtZSBzdHJpbmcsIGluY2x1ZGluZyBhIHBvdGVudGlhbCBwcmVmaXgKICAgICAgICBteSAkTmFtZSA9IGpvaW4gJzo6JywKICAgICAgICAgICAgKCAkUGFyYW17TmFtZVByZWZpeH0gfHwgKCkgKSwKICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKCiAgICAgICAgIyBhZGQgYXR0cmlidXRlLCBpZiBtYXJrZWQgYXMgc2VhcmNoYWJsZQoKICAgICAgICAjIFRPRE86IGRldGVybWluZSB3aGV0aGVyIERGIGlzIHNlYXJjaGFibGU6ICREeW5hbWljRmllbGRDb25maWctPntTZWFyY2hhYmxlfQogICAgICAgICMgVE9ETzogdXNlIHNlYXJjaCBmaWVsZCBmcm9tIGR5bmFtaWMgZmllbGQgZHJpdmVyCiAgICAgICAgaWYgKDEpIHsKCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ1RleHQnIHx8ICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdUZXh0QXJlYScgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntJbnB1dH0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplICAgICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SW5wdXR9LT57SW5wdXR9LT57U2l6ZX0gfHwgNjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SW5wdXR9LT57SW5wdXR9LT57TWF4TGVuZ3RofSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0dlbmVyYWxDYXRhbG9nJyApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgbGlzdAogICAgICAgICAgICAgICAgbXkgJEdlbmVyYWxDYXRhbG9nTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e0NsYXNzfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlcywKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICRLZXksCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLCAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogZGV0ZXJtaW5lIHdoZXRoZXIgaXRlbXMgc2hvdWxkIGJlIHRyYW5zbGF0ZWQgJER5bmFtaWNGaWVsZENvbmZpZy0+e0lucHV0fS0+e0lucHV0fS0+e1RyYW5zbGF0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVE9ETzogaGFuZGxlIFNldHMKICAgICAgICBuZXh0IERGX05BTUUgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntTdWJ9OwoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgJFNlbGYtPl9ERlNlYXJjaEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZFJlZiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57U3VifSwKICAgICAgICAgICAgS2V5UHJlZml4ICAgICAgID0+ICRLZXksCiAgICAgICAgICAgIE5hbWVQcmVmaXggICAgICA9PiAkTmFtZSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiBAQXR0cmlidXRlczsKfQoKPWhlYWQyIF9ERlNlYXJjaERhdGFQcmVwYXJlKCkKCnJlY3Vyc2lvbiBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBleHBvcnQgWE1MIHNlYXJjaCBwYXJhbXMKCiAgICBteSAlREZTZWFyY2hQYXJhbXMgPSAkT2JqZWN0QmFja2VuZC0+X0RGU2VhcmNoRGF0YVByZXBhcmUoCiAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREeW5hbWljRmllbGRSZWYsCiAgICAgICAgU2VhcmNoRGF0YSAgICAgID0+ICRIYXNoUmVmLAogICAgKTsKCj1jdXQKCnN1YiBfREZTZWFyY2hEYXRhUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9OwogICAgcmV0dXJuIHVubGVzcyByZWYgJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0gZXEgJ0hBU0gnOwogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17U2VhcmNoRGF0YX07CiAgICByZXR1cm4gdW5sZXNzIHJlZiAkUGFyYW17U2VhcmNoRGF0YX0gZXEgJ0hBU0gnOwoKICAgIG15ICVERlNlYXJjaFBhcmFtczsKICAgIERGX05BTUU6CiAgICBmb3IgbXkgJERGTmFtZSAoIHNvcnQga2V5cyAkUGFyYW17RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9LT57JERGTmFtZX07CgogICAgICAgICMgY3JlYXRlIGtleQogICAgICAgIG15ICRLZXkgPSAkUGFyYW17UHJlZml4fSA/ICRQYXJhbXtQcmVmaXh9IC4gJzo6JyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA6ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgbmV4dCBERl9OQU1FIHVubGVzcyAkUGFyYW17U2VhcmNoRGF0YX0tPnskS2V5fTsgICAgIyAnIyMjIyMnIHNlcGFyYXRlZAoKICAgICAgICAkREZTZWFyY2hQYXJhbXN7IkR5bmFtaWNGaWVsZF8kS2V5In0gPSB7IEVxdWFscyA9PiBbIHNwbGl0IC8jIyMjIy8sICRQYXJhbXtTZWFyY2hEYXRhfS0+eyRLZXl9IF0gfTsKCiAgICAgICAgIyBUT0RPOiBzdXBwb3J0IFNldHMKICAgICAgICBuZXh0IERGX05BTUUgaWYgISREeW5hbWljRmllbGRDb25maWctPntTdWJ9OwoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgbXkgJVNldFNlYXJjaFBhcmFtcyA9ICRTZWxmLT5fREZTZWFyY2hEYXRhUHJlcGFyZSgKICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57U3VifSwKICAgICAgICAgICAgV2hhdCAgICAgICAgICA9PiAkUGFyYW17V2hhdH0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgICAgPT4gJFBhcmFte1NlYXJjaERhdGF9LAogICAgICAgICAgICBQcmVmaXggICAgICAgID0+ICRLZXksCiAgICAgICAgKTsKICAgICAgICBAREZTZWFyY2hQYXJhbXN7IGtleXMgJVNldFNlYXJjaFBhcmFtcyB9ID0gdmFsdWVzICVTZXRTZWFyY2hQYXJhbXM7CiAgICB9CgogICAgcmV0dXJuICVERlNlYXJjaFBhcmFtczsKfQoKPWhlYWQyIF9ERkltcG9ydFNlYXJjaERhdGFQcmVwYXJlKCkKCnJlY3Vyc2l2ZSBmdW5jdGlvbiB0byBwcmVwYXJlIHRoZSBpbXBvcnQgZHluYW1pYyBmaWVsZCBzZWFyY2ggcGFyYW1zCgogICAgbXkgJURGSW1wb3J0U2VhcmNoUGFyYW1zID0gJE9iamVjdEJhY2tlbmQtPl9ERkltcG9ydFNlYXJjaERhdGFQcmVwYXJlKAogICAgICAgIER5bmFtaWNGaWVsZFJlZiA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0sCiAgICAgICAgSWRlbnRpZmllciAgICAgID0+IFwlSWRlbnRpZmllciwKICAgICAgICBQcmVmaXggICAgICAgICAgPT4gJEtleSwgICAgIyBwYXNzZWQgb25seSBpbiB0aGUgcmVjdXJzaW9uIGNhc2UKICAgICk7Cgo9Y3V0CgpzdWIgX0RGSW1wb3J0U2VhcmNoRGF0YVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17RHluYW1pY0ZpZWxkUmVmfTsKICAgIHJldHVybiB1bmxlc3MgcmVmICRQYXJhbXtEeW5hbWljRmllbGRSZWZ9IGVxICdIQVNIJzsKICAgIHJldHVybiB1bmxlc3MgJFBhcmFte0lkZW50aWZpZXJ9OwogICAgcmV0dXJuIHVubGVzcyByZWYgJFBhcmFte0lkZW50aWZpZXJ9IGVxICdIQVNIJzsKCiAgICBteSAlREZTZWFyY2hQYXJhbXM7CiAgICBERl9OQU1FOgogICAgZm9yIG15ICRERk5hbWUgKCBzb3J0IGtleXMgJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZFJlZn0tPnskREZOYW1lfTsKCiAgICAgICAgIyBjcmVhdGUga2V5CiAgICAgICAgbXkgJEtleSA9IGpvaW4gJzo6JywKICAgICAgICAgICAgKCAkUGFyYW17UHJlZml4fSB8fCAoKSApLAogICAgICAgICAgICAkREZOYW1lOwoKICAgICAgICBuZXh0IERGX05BTUUgdW5sZXNzICRQYXJhbXtJZGVudGlmaWVyfS0+eyJEeW5hbWljRmllbGRfJEtleSJ9OwoKICAgICAgICAjIFRPRE86IHRoaXMgaXMgYnJva2VuIGZvciBtdWx0aXZhbHVlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgJERGU2VhcmNoUGFyYW1zeyJEeW5hbWljRmllbGRfJEtleSJ9ID0geyBFcXVhbHMgPT4gWyBzcGxpdCAvIyMjIyMvLCAkUGFyYW17SWRlbnRpZmllcn0tPnsiRHluYW1pY0ZpZWxkXyRLZXkifSBdIH07CgogICAgICAgICMgY2hlY2sgaWYgdmFsdWUgdHJhbnNmb3JtYXRpb24gaXMgbmVjZXNzYXJ5CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICAgICAgbXkgJElzUmVmZXJlbmNlRmllbGQgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzUmVmZXJlbmNlRmllbGQnLAogICAgICAgICk7CiAgICAgICAgaWYgKCRJc1JlZmVyZW5jZUZpZWxkKSB7CgogICAgICAgICAgICBteSAkVmFsdWUgPSAkUGFyYW17SWRlbnRpZmllcn0tPnsiRHluYW1pY0ZpZWxkXyRLZXkifTsKCiAgICAgICAgICAgIG5leHQgREZfTkFNRSB1bmxlc3MgJFZhbHVlOwoKICAgICAgICAgICAgIyBUT0RPIHNraXBwaW5nIG11bHRpdmFsdWUgZmllbGRzCiAgICAgICAgICAgIG5leHQgREZfTkFNRSBpZiByZWYgJFZhbHVlOwoKICAgICAgICAgICAgIyBwZXJmb3JtIHNlYXJjaCBiYXNlZCBvbiB2YWx1ZSBhbmQgcHJldmlvdXNseSBmZXRjaGVkIGRhdGEKICAgICAgICAgICAgbXkgQE9iamVjdElEcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hPYmplY3RzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBUZXJtICAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgICAgID0+IDEsCiAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLCAgICAjIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpQZXJsOjpQYXJhbU9iamVjdCkKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggc2NhbGFyIEBPYmplY3RJRHMgPT0gMSApIHsKICAgICAgICAgICAgICAgICRERlNlYXJjaFBhcmFtc3siRHluYW1pY0ZpZWxkXyRLZXkifSA9IHsgRXF1YWxzID0+IFsgc3BsaXQgLyMjIyMjLywgJE9iamVjdElEc1swXSBdIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVE9ETzogaGFuZGxlIFNldHMKICAgICAgICBuZXh0IERGX05BTUUgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntTdWJ9OwoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgbXkgJVNldFNlYXJjaFBhcmFtcyA9ICRTZWxmLT5fREZJbXBvcnRTZWFyY2hEYXRhUHJlcGFyZSgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkUmVmID0+ICREeW5hbWljRmllbGRDb25maWctPntTdWJ9LAogICAgICAgICAgICBJZGVudGlmaWVyICAgICAgPT4gJFBhcmFte0lkZW50aWZpZXJ9LAogICAgICAgICAgICBQcmVmaXggICAgICAgICAgPT4gJEtleSwKICAgICAgICApOwogICAgICAgIEBERlNlYXJjaFBhcmFtc3sga2V5cyAlU2V0U2VhcmNoUGFyYW1zIH0gPSB2YWx1ZXMgJVNldFNlYXJjaFBhcmFtczsKICAgIH0KCiAgICByZXR1cm4gJURGU2VhcmNoUGFyYW1zOwp9CgoxOwo=</File>
        <File Location="Kernel/System/LinkObject/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0OjpJVFNNQ29uZmlnSXRlbTsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3Q6OklUU01Db25maWdJdGVtIC0gTGlua09iamVjdCBtb2R1bGUgZm9yIElUU01Db25maWdJdGVtCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QuIERvIG5vdCB1c2UgaXQgZGlyZWN0bHksIGluc3RlYWQgdXNlOgoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRMaW5rT2JqZWN0SVRTTUNvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW0nKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIHJldHVybiBibGVzcyB7fSwgJFR5cGU7Cn0KCj1oZWFkMiBMaW5rTGlzdFdpdGhEYXRhKCkKCmZpbGwgdXAgdGhlIGxpbmsgbGlzdCB3aXRoIGRhdGEKCiAgICAkU3VjY2VzcyA9ICRMaW5rT2JqZWN0QmFja2VuZC0+TGlua0xpc3RXaXRoRGF0YSgKICAgICAgICBMaW5rTGlzdCA9PiAkSGFzaFJlZiwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rTGlzdFdpdGhEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KExpbmtMaXN0IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbGluayBsaXN0CiAgICBpZiAoIHJlZiAkUGFyYW17TGlua0xpc3R9IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0xpbmtMaXN0IG11c3QgYmUgYSBoYXNoIHJlZmVyZW5jZSEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBmb3IgbXkgJExpbmtUeXBlICggc29ydCBrZXlzICV7ICRQYXJhbXtMaW5rTGlzdH0gfSApIHsKCiAgICAgICAgZm9yIG15ICREaXJlY3Rpb24gKCBzb3J0IGtleXMgJXsgJFBhcmFte0xpbmtMaXN0fS0+eyRMaW5rVHlwZX0gfSApIHsKCiAgICAgICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IGtleXMgJXsgJFBhcmFte0xpbmtMaXN0fS0+eyRMaW5rVHlwZX0tPnskRGlyZWN0aW9ufSB9ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGxhc3QgdmVyc2lvbiBkYXRhCiAgICAgICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHJlbW92ZSBpZCBmcm9tIGhhc2ggaWYgY29uZmlnIGl0ZW0gY2FuIG5vdCBnZXQKICAgICAgICAgICAgICAgIGlmICggISRDb25maWdJdGVtIHx8IHJlZiAkQ29uZmlnSXRlbSBuZSAnSEFTSCcgfHwgISV7JENvbmZpZ0l0ZW19ICkgewogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkUGFyYW17TGlua0xpc3R9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259LT57JENvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhZGQgdmVyc2lvbiBkYXRhCiAgICAgICAgICAgICAgICAkUGFyYW17TGlua0xpc3R9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259LT57JENvbmZpZ0l0ZW1JRH0gPSAkQ29uZmlnSXRlbTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIE9iamVjdFBlcm1pc3Npb24oKQoKY2hlY2tzIHJlYWQgcGVybWlzc2lvbiBmb3IgYSBnaXZlbiBvYmplY3QgYW5kIFVzZXJJRC4KCiAgICAkUGVybWlzc2lvbiA9ICRMaW5rT2JqZWN0LT5PYmplY3RQZXJtaXNzaW9uKAogICAgICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBLZXkgICAgID0+IDEyMywKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdFBlcm1pc3Npb24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoT2JqZWN0IEtleSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBjb25maWcgb2YgY29uZmlnaXRlbSB6b29tIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tJyk7CgogICAgIyBjaGVjayBmb3IgYWNjZXNzIHJpZ2h0cwogICAgbXkgJEFjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5QZXJtaXNzaW9uKAogICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgSXRlbUlEID0+ICRQYXJhbXtLZXl9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICBUeXBlICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICApOwoKICAgIHJldHVybiAkQWNjZXNzOwp9Cgo9aGVhZDIgT2JqZWN0RGVzY3JpcHRpb25HZXQoKQoKcmV0dXJuIGEgaGFzaCBvZiBvYmplY3QgZGVzY3JpcHRpb25zCgogICAgJURlc2NyaXB0aW9uID0gJExpbmtPYmplY3QtPk9iamVjdERlc2NyaXB0aW9uR2V0KAogICAgICAgIEtleSAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgpSZXR1cm5zOgoKICAgICVEZXNjcmlwdGlvbiA9ICgKICAgICAgICBOb3JtYWwgPT4gIkNvbmZpZ0l0ZW0jIDEyMzQ0NTUiLAogICAgICAgIExvbmcgICA9PiAiQ29uZmlnSXRlbSMgMTIzNDQ1NTogVGhlIENvbmZpZyBJdGVtIFRpdGxlIiwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0RGVzY3JpcHRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoT2JqZWN0IEtleSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgbXkgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAnQ29uZmlnSXRlbScsCiAgICAgICAgTG9uZyAgID0+ICdDb25maWdJdGVtJywKICAgICk7CgogICAgcmV0dXJuICVEZXNjcmlwdGlvbiBpZiAkUGFyYW17TW9kZX0gJiYgJFBhcmFte01vZGV9IGVxICdUZW1wb3JhcnknOwoKICAgICMgZ2V0IGxhc3QgdmVyc2lvbiBkYXRhCiAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17S2V5fSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkQ29uZmlnSXRlbTsKICAgIHJldHVybiBpZiByZWYgJENvbmZpZ0l0ZW0gbmUgJ0hBU0gnOwogICAgcmV0dXJuIGlmICEleyRDb25maWdJdGVtfTsKCiAgICAjIGNyZWF0ZSBkZXNjcmlwdGlvbgogICAgJURlc2NyaXB0aW9uID0gKAogICAgICAgIE5vcm1hbCA9PiAiQ29uZmlnSXRlbSMgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9IiwKICAgICAgICBMb25nICAgPT4gIkNvbmZpZ0l0ZW0jICRDb25maWdJdGVtLT57TnVtYmVyfTogJENvbmZpZ0l0ZW0tPntOYW1lfSIsCiAgICApOwoKICAgIHJldHVybiAlRGVzY3JpcHRpb247Cn0KCj1oZWFkMiBPYmplY3RTZWFyY2goKQoKcmV0dXJuIGEgaGFzaCBsaXN0IG9mIHRoZSBzZWFyY2ggcmVzdWx0cwoKICAgICRTZWFyY2hMaXN0ID0gJExpbmtPYmplY3RCYWNrZW5kLT5PYmplY3RTZWFyY2goCiAgICAgICAgU3ViT2JqZWN0ICAgID0+ICcyNScsICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBTZWFyY2hQYXJhbXMgPT4gJEhhc2hSZWYsICAgICMgKG9wdGlvbmFsKQogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKClJldHVybnM6CgogICAgJFNlYXJjaExpc3QgPSB7CiAgICAgICAgQzxOT1RMSU5LRUQ+ID0+IHsKICAgICAgICAgICAgU291cmNlID0+IHsKICAgICAgICAgICAgICAgIDEyICA9PiAkRGF0YU9mSXRlbTEyLAogICAgICAgICAgICAgICAgMjEyID0+ICREYXRhT2ZJdGVtMjEyLAogICAgICAgICAgICAgICAgMzMyID0+ICREYXRhT2ZJdGVtMzMyLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIE9iamVjdFNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgcGFyYW1zCiAgICAkUGFyYW17U2VhcmNoUGFyYW1zfSB8fD0ge307CgogICAgIyBzZXQgZm9jdXMKICAgIG15ICVTZWFyY2g7CiAgICBmb3IgbXkgJEVsZW1lbnQgKHF3KE51bWJlciBOYW1lKSkgewogICAgICAgIGlmICggJFBhcmFte1NlYXJjaFBhcmFtc30tPnskRWxlbWVudH0gKSB7CiAgICAgICAgICAgICRTZWFyY2h7JEVsZW1lbnR9ID0gJyUnIC4gJFBhcmFte1NlYXJjaFBhcmFtc30tPnskRWxlbWVudH0gLiAnJSc7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggISRQYXJhbXtTdWJPYmplY3R9ICkgewoKICAgICAgICAjIGdldCB0aGUgY29uZmlnIHdpdGggdGhlIGRlZmF1bHQgc3Vib2JqZWN0cwogICAgICAgIG15ICREZWZhdWx0U3Vib2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdMaW5rT2JqZWN0OjpEZWZhdWx0U3ViT2JqZWN0JykgfHwge307CgogICAgICAgICMgZXh0cmFjdCBkZWZhdWx0IGNsYXNzIG5hbWUKICAgICAgICBteSAkRGVmYXVsdENsYXNzID0gJERlZmF1bHRTdWJvYmplY3QtPntJVFNNQ29uZmlnSXRlbX0gfHwgJyc7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgIHJldHVybiBpZiAhJENsYXNzTGlzdDsKICAgICAgICByZXR1cm4gaWYgcmVmICRDbGFzc0xpc3QgbmUgJ0hBU0gnOwoKICAgICAgICAjIGxvb2t1cCB0aGUgY2xhc3MgaWQKICAgICAgICBteSAlQ2xhc3NMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskQ2xhc3NMaXN0fTsKICAgICAgICAkUGFyYW17U3ViT2JqZWN0fSA9ICRDbGFzc0xpc3RSZXZlcnNleyREZWZhdWx0Q2xhc3N9IHx8ICcnOwogICAgfQoKICAgIHJldHVybiBpZiAhJFBhcmFte1N1Yk9iamVjdH07CgogICAgIyBzZWFyY2ggdGhlIGNvbmZpZyBpdGVtcwogICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAleyAkUGFyYW17U2VhcmNoUGFyYW1zfSB9LAogICAgICAgICVTZWFyY2gsCiAgICAgICAgQ2xhc3NJRHMgICAgICAgPT4gWyAkUGFyYW17U3ViT2JqZWN0fSBdLAogICAgICAgIFVzaW5nV2lsZGNhcmRzID0+IDEsCiAgICAgICAgU29ydEJ5ICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICBPcmRlckJ5ICAgICAgICA9PiBbJ1VwJ10sCiAgICAgICAgTGltaXQgICAgICAgICAgPT4gNTAsCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgUmVzdWx0ICAgICAgICAgPT4gJ0FSUkFZJywKICAgICk7CgogICAgbXkgJVNlYXJjaExpc3Q7CiAgICBDT05GSUdJVEVNSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQENvbmZpZ0l0ZW1JRHMpIHsKCiAgICAgICAgIyBnZXQgbGFzdCB2ZXJzaW9uIGRhdGEKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwoKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhJENvbmZpZ0l0ZW07CiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgcmVmICRDb25maWdJdGVtIG5lICdIQVNIJzsKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhJXskQ29uZmlnSXRlbX07CgogICAgICAgICMgYWRkIHZlcnNpb24gZGF0YQogICAgICAgICRTZWFyY2hMaXN0e05PVExJTktFRH0tPntTb3VyY2V9LT57JENvbmZpZ0l0ZW1JRH0gPSAkQ29uZmlnSXRlbTsKICAgIH0KCiAgICByZXR1cm4gXCVTZWFyY2hMaXN0Owp9Cgo9aGVhZDIgTGlua0FkZFByZSgpCgpsaW5rIGFkZCBwcmUgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0FkZFByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFNvdXJjZUtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCm9yCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0FkZFByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFRhcmdldEtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBMaW5rQWRkUHJlIHsKICAgIHJldHVybiAxOyAgICAjIG5vdGhpbmcgdG8gZG8KfQoKPWhlYWQyIExpbmtBZGRQb3N0KCkKCmxpbmsgYWRkIHBvc3QgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0FkZFBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgpvcgoKICAgICRUcnVlID0gJExpbmtPYmplY3QtPkxpbmtBZGRQb3N0KAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtBZGRQb3N0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBUeXBlIFN0YXRlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZG8gbm90IHVwZGF0ZSBjb25maWdpdGVtX2xpbmsgdGFibGUgZm9yIHRlbXBvcmFyeSBsaW5rcwogICAgIyBkbyBub3QgcmVjYWxjdWxhdGUgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgZm9yIHRlbXBvcmFyeSBsaW5rcwogICAgIyBkbyBub3QgZW1pdCB0aGUgTGlua0FkZCBldmVudCBmb3IgdGVtcG9yYXJ5IGxpbmtzCiAgICByZXR1cm4gMSBpZiAkUGFyYW17U3RhdGV9IGVxICdUZW1wb3JhcnknOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBTeW5jIHRoZSBuZXcgbGluayB0byB0aGUgY29uZmlnaXRlbV9saW5rIHRhYmxlLgogICAgIyBUaGlzIGlzIG9ubHkgbmVlZGVkIGZvciBsaW5rcyBiZXR3ZWVuIGNvbmZpZyBpdGVtcy4KICAgICMgV2hlbiBhIGxpbmsgaXMgYWRkZWQgdGhlbiBMaW5rQWRkUG9zdCgpIGlzIGNhbGxlZCB0d2ljZS4gQnV0IG9ubHkKICAgICMgb25lIG9mIHRoZSBjYWxscyBoYXMgdG8gYmUgY29uc2lkZXJlZCBoZXJlLCBhcyBvbmx5IG9uZSBlbnRyeSBpbiAnY29uZmlnaXRlbV9saW5rJwogICAgIyBpcyBuZWVkZWQuCiAgICBpZiAoICRQYXJhbXtUYXJnZXRLZXl9ICYmICggJFBhcmFte1RhcmdldE9iamVjdH0gLy8gJycgKSBlcSAnSVRTTUNvbmZpZ0l0ZW0nICkgewogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5BZGRDb25maWdJdGVtTGluaygKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICAgICAgU291cmNlQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtLZXl9LAogICAgICAgICAgICBUYXJnZXRDb25maWdJdGVtSUQgPT4gJFBhcmFte1RhcmdldEtleX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIFJlY2FsY3VsYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIHRoaXMgQ0kgZm9yIGxpbmtzIHRvIHNlcnZpY2VzCiAgICAjIFRoaXMgd2lsbCBpbXBsaWNpdGx5IHVwZGF0ZSB0aGUgc2VydmljZSBpbmNpZGVudCBzdGF0ZQogICAgIyBDb25maWdJdGVtTGlua3Mgd2lsbCBiZSBoYW5kbGVkIGJ5IHRoZSBDb25maWdJdGVtTGluayBvYmplY3QKICAgIGVsc2lmICggKCAkUGFyYW17VGFyZ2V0T2JqZWN0fSAvLyAkUGFyYW17U291cmNlT2JqZWN0fSApIGVxICdTZXJ2aWNlJyApIHsKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0tleX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHRyaWdnZXIgTGlua0FkZCBldmVudCwgdGhlIGNvbW1lbnQgaXMgYSBraW5kIG9mIGhpZGRlbiBjaGFubmVsCiAgICBteSAkQ29tbWVudCA9IGpvaW4gJyUlJywKICAgICAgICAoICRQYXJhbXtUYXJnZXRLZXl9ICAgIHx8ICRQYXJhbXtTb3VyY2VLZXl9ICksCiAgICAgICAgKCAkUGFyYW17VGFyZ2V0T2JqZWN0fSB8fCAkUGFyYW17U291cmNlT2JqZWN0fSApOwogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnTGlua0FkZCcsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0tleX0sCiAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkQ29tbWVudCwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBMaW5rRGVsZXRlUHJlKCkKCmxpbmsgZGVsZXRlIHByZSBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgU291cmNlT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU291cmNlS2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKb3IKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtEZWxldGVQcmUgewogICAgcmV0dXJuIDE7ICAgICMgbm90aGluZyB0byBkbwp9Cgo9aGVhZDIgTGlua0RlbGV0ZVBvc3QoKQoKbGluayBkZWxldGUgcG9zdCBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUG9zdCgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFNvdXJjZUtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCm9yCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0RlbGV0ZVBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBUYXJnZXRLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgTGlua0RlbGV0ZVBvc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkbyBub3Qgbm90ZSB1cGRhdGUgY29uZmlnaXRlbV9saW5rIHRhYmxlIGZvciB0ZW1wb3JhcnkgbGlua3MKICAgICMgZG8gbm90IG5vdGUgcmVjYWxjdWxhdGUgdGhlIGN1cnJlbnQgaW4gaW5jaWRlbnQgc3RhdGUgZm9yIHRlbXBvcmFyeSBsaW5rcwogICAgIyBkbyBub3QgdHJpZ2dlciBldmVudCBmb3IgdGVtcG9yYXJ5IGxpbmtzCiAgICByZXR1cm4gMSBpZiAkUGFyYW17U3RhdGV9IGVxICdUZW1wb3JhcnknOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBzeW5jIHRoZSBkZWxldGVlIGxpbmsgdG8gdGhlIGNvbmZpZ2l0ZW1fbGluayB0YWJsZS4KICAgICMgVGhpcyBpcyBvbmx5IG5lZWRlZCBmb3Igb25lIGRpcmVjdGlvbi4KICAgIGlmICggJFBhcmFte1RhcmdldEtleX0gJiYgKCAkUGFyYW17VGFyZ2V0T2JqZWN0fSAvLyAnJyApIGVxICdJVFNNQ29uZmlnSXRlbScgKSB7CiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkRlbGV0ZUNvbmZpZ0l0ZW1MaW5rKAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgICAgICBTb3VyY2VDb25maWdJdGVtSUQgPT4gJFBhcmFte0tleX0sCiAgICAgICAgICAgIFRhcmdldENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17VGFyZ2V0S2V5fSwKICAgICAgICApOwogICAgfQoKICAgICMgVE9ETzogVXBkYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIHVubGlua2VkIHNlcnZpY2VzCiAgICAjIGVsc2lmICggKCAkUGFyYW17VGFyZ2V0T2JqZWN0fSAvLyAkUGFyYW17U291cmNlT2JqZWN0fSApIGVxICdTZXJ2aWNlJyApIHsKICAgICMgfQoKICAgICMgdHJpZ2dlciBMaW5rRGVsZXRlIGV2ZW50LCB0aGUgY29tbWVudCBpcyBhIGtpbmQgb2YgaGlkZGVuIGNoYW5uZWwKICAgIG15ICRDb21tZW50ID0gam9pbiAnOjonLAogICAgICAgICggJFBhcmFte1RhcmdldEtleX0gICAgfHwgJFBhcmFte1NvdXJjZUtleX0gKSwKICAgICAgICAoICRQYXJhbXtUYXJnZXRPYmplY3R9IHx8ICRQYXJhbXtTb3VyY2VPYmplY3R9ICk7CiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdMaW5rRGVsZXRlJywKICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17S2V5fSwKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRDb21tZW50LAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Location="Kernel/System/ProcessManagement/TransitionAction/ConfigItemAdd.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpQcm9jZXNzTWFuYWdlbWVudDo6VHJhbnNpdGlvbkFjdGlvbjo6Q29uZmlnSXRlbUFkZDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkJhc2UpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlByb2Nlc3NNYW5hZ2VtZW50OjpUcmFuc2l0aW9uQWN0aW9uOjpDb25maWdJdGVtQWRkIC0gQSBtb2R1bGUgdG8gY3JlYXRlIGEgY29uZmlnIGl0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIENvbmZpZ0l0ZW1DcmVhdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkNvbmZpZ0l0ZW1DcmVhdGUnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUGFyYW1zKCkKClJldHVybnMgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1zIGZvciB0aGlzIHRyYW5zaXRpb24gYWN0aW9uIG1vZHVsZQoKICAgIG15IEBQYXJhbXMgPSAkT2JqZWN0LT5QYXJhbXMoKTsKCkVhY2ggZWxlbWVudCBpcyBhIGhhc2ggcmVmZXJlbmNlIHRoYXQgZGVzY3JpYmVzIHRoZSBjb25maWcgcGFyYW1ldGVyLgpDdXJyZW50bHkgb25seSB0aGUga2V5cyBJPEtleT4sIEk8VmFsdWU+IGFuZCBJPE9wdGlvbmFsPiBhcmUgdXNlZC4KCj1jdXQKCnN1YiBQYXJhbXMgewogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgIG15IEBQYXJhbXMgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ1RoZSBudW1iZXIgKHJlcXVpcmVkIGlmIG5vIG51bWJlciBtb2R1bGUgaXMgY29uZmlndXJlZCknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdBIG5hbWUgKHJlcXVpcmVkIGlmIG5vIG5hbWUgbW9kdWxlIGlzIGNvbmZpZ3VyZWQpJywKICAgICAgICAgICAgT3B0aW9uYWwgPT4gMSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJ1ZlcnNpb25TdHJpbmcnLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnVGhlIHZlcnNpb24gc3RyaW5nIChyZXF1aXJlZCBpZiBubyB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgaXMgY29uZmlndXJlZCknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBWYWx1ZSA9PiAnQSBjbGFzcyAocmVxdWlyZWQpJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgIFZhbHVlID0+ICdBIGRlcGxveW1lbnQgc3RhdGUgKHJlcXVpcmVkKScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAnQW4gaW5jaWRlbnQgc3RhdGUgKHJlcXVpcmVkKScsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdEeW5hbWljRmllbGRfPE5hbWU+IChyZXBsYWNlIDxOYW1lPiknLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnQSB2YWx1ZScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdMaW5rQXMnLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnQWx0ZXJuYXRpdmUgdG98RGVwZW5kcyBvbnxSZWxldmFudCB0bycsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdTdG9yZUNvbmZpZ0l0ZW1JRER5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdOYW1lWCAobmFtZSBvZiBEeW5hbWljRmllbGQgaG9sZGluZyB0aGUgaWQgb2YgdGhlIGNyZWF0ZWQgQ29uZmlnSXRlbSBpbiB0aGUgb3JpZ2luYWwgdGlja2V0KScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdVc2VySUQnLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnMSAoY2FuIG92ZXJ3cml0ZSB0aGUgbG9nZ2VkIGluIHVzZXIpJywKICAgICAgICAgICAgT3B0aW9uYWwgPT4gMSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gQFBhcmFtczsKfQoKPWhlYWQyIFJ1bigpCgogICAgUnVuIERhdGEKCiAgICBteSAkQ29uZmlnSXRlbUNyZWF0ZVJlc3VsdCA9ICRDb25maWdJdGVtQ3JlYXRlQWN0aW9uT2JqZWN0LT5SdW4oCiAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgID0+IDEyMywKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICAgICAgPT4gXCVUaWNrZXQsICAgIyByZXF1aXJlZAogICAgICAgIFByb2Nlc3NFbnRpdHlJRCAgICAgICAgICA9PiAnUDEyMycsCiAgICAgICAgQWN0aXZpdHlFbnRpdHlJRCAgICAgICAgID0+ICdBMTIzJywKICAgICAgICBUcmFuc2l0aW9uRW50aXR5SUQgICAgICAgPT4gJ1QxMjMnLAogICAgICAgIFRyYW5zaXRpb25BY3Rpb25FbnRpdHlJRCA9PiAnVEExMjMnLAogICAgICAgIENvbmZpZyAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICMgY29uZmlnIGl0ZW0gcmVxdWlyZWQ6CiAgICAgICAgICAgIENsYXNzICAgICAgICAgPT4gJ0NsYXNzIG9mIHRoZSBDb25maWcgSXRlbScsCiAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgPT4gJ1NvbWUgRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgPT4gJ1NvbWUgSW5jaWRlbnQgU3RhdGUnLAoKICAgICAgICAgICAgIyBjb25maWcgaXRlbSBvcHRpb25hbDoKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAnU29tZSBDb25maWcgSXRlbSBOYW1lJywKICAgICAgICAgICAgJURhdGFQYXlsb2FkLAoKICAgICAgICAgICAgIyBvdGhlcjoKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVYID0+ICRWYWx1ZSwKICAgICAgICAgICAgTGlua0FzID0+ICRMaW5rVHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3JtYWwsIFBhcmVudCwgQ2hpbGQsIGV0Yy4gKHJlc3BlY3RpdmUgb3JpZ2luYWwgdGlja2V0KQogICAgICAgICAgICBVc2VySUQgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCB0byBvdmVycmlkZSB0aGUgVXNlcklEIGZyb20gdGhlIGxvZ2dlZCB1c2VyCiAgICAgICAgfQogICAgKTsKICAgIFRpY2tldCBjb250YWlucyB0aGUgcmVzdWx0IG9mIFRpY2tldEdldCBpbmNsdWRpbmcgRHluYW1pY0ZpZWxkcwogICAgQ29uZmlnIGlzIHRoZSBDb25maWcgSGFzaCBzdG9yZWQgaW4gYSBQcm9jZXNzOjpUcmFuc2l0aW9uQWN0aW9uJ3MgIENvbmZpZyBrZXkKICAgIFJldHVybnM6CgogICAgJENvbmZpZ0l0ZW1DcmVhdGVSZXN1bHQgPSAxOyAjIDAKCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZGVmaW5lIGEgY29tbW9uIG1lc3NhZ2UgdG8gb3V0cHV0IGluIGNhc2Ugb2YgYW55IGVycm9yCiAgICBteSAkQ29tbW9uTWVzc2FnZSA9ICJQcm9jZXNzOiAkUGFyYW17UHJvY2Vzc0VudGl0eUlEfSBBY3Rpdml0eTogJFBhcmFte0FjdGl2aXR5RW50aXR5SUR9IgogICAgICAgIC4gIiBUcmFuc2l0aW9uOiAkUGFyYW17VHJhbnNpdGlvbkVudGl0eUlEfSIKICAgICAgICAuICIgVHJhbnNpdGlvbkFjdGlvbjogJFBhcmFte1RyYW5zaXRpb25BY3Rpb25FbnRpdHlJRH0gLSAiOwoKICAgICMgY2hlY2sgZm9yIG1pc3Npbmcgb3Igd3JvbmcgcGFyYW1zCiAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5fQ2hlY2tQYXJhbXMoCiAgICAgICAgJVBhcmFtLAogICAgICAgIENvbW1vbk1lc3NhZ2UgPT4gJENvbW1vbk1lc3NhZ2UsCiAgICApOwogICAgcmV0dXJuIGlmICEkU3VjY2VzczsKCiAgICAjIG92ZXJyaWRlIFVzZXJJRCBpZiBzcGVjaWZpZWQgYXMgYSBwYXJhbWV0ZXIgaW4gdGhlIFRBIGNvbmZpZwogICAgJFBhcmFte1VzZXJJRH0gPSAkU2VsZi0+X092ZXJyaWRlVXNlcklEKCVQYXJhbSk7CgogICAgIyB1c2UgdGlja2V0IGF0dHJpYnV0ZXMgaWYgbmVlZGVkCiAgICAkU2VsZi0+X1JlcGxhY2VUaWNrZXRBdHRyaWJ1dGVzKCVQYXJhbSk7CiAgICAkU2VsZi0+X1JlcGxhY2VBZGRpdGlvbmFsQXR0cmlidXRlcyglUGFyYW0pOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgJUNsYXNzMklETWFwICAgICA9IHJldmVyc2UgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCggQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJyApLT4lKjsKICAgIG15ICVEZXBsU3RhdGUySURNYXAgPSByZXZlcnNlICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnICktPiUqOwogICAgbXkgJUluY2lTdGF0ZTJJRE1hcCA9IHJldmVyc2UgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCggQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnICktPiUqOwoKICAgIG15ICVDb25maWdJdGVtUGFyYW07CgogICAgZm9yIG15ICRPcHRpb25hbEF0dHJpYnV0ZSAocXcvTmFtZSBOdW1iZXIgVmVyc2lvblN0cmluZy8pIHsKICAgICAgICBpZiAoICRQYXJhbXtDb25maWd9eyRPcHRpb25hbEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtUGFyYW17JE9wdGlvbmFsQXR0cmlidXRlfSA9ICRQYXJhbXtDb25maWd9eyRPcHRpb25hbEF0dHJpYnV0ZX07CiAgICAgICAgfQogICAgfQoKICAgICRDb25maWdJdGVtUGFyYW17Q2xhc3NJRH0gICAgID0gJENsYXNzMklETWFweyAkUGFyYW17Q29uZmlnfXtDbGFzc30gfTsKICAgICRDb25maWdJdGVtUGFyYW17RGVwbFN0YXRlSUR9ID0gJERlcGxTdGF0ZTJJRE1hcHsgJFBhcmFte0NvbmZpZ317RGVwbFN0YXRlfSB9OwogICAgJENvbmZpZ0l0ZW1QYXJhbXtJbmNpU3RhdGVJRH0gPSAkSW5jaVN0YXRlMklETWFweyAkUGFyYW17Q29uZmlnfXtJbmNpU3RhdGV9IH07CgogICAgZm9yIG15ICROZWVkZWQgKHF3L0NsYXNzIERlcGxTdGF0ZSBJbmNpU3RhdGUvKSB7CiAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW1QYXJhbXsgJE5lZWRlZCAuICdJRCcgfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJENvbW1vbk1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAuICJDb3VsZCBub3QgcmV0cmlldmUgJE5lZWRlZCIgLiAiSUQgZnJvbSAnJFBhcmFte0NvbmZpZ317ICROZWVkZWQgfScgaW4gVGlja2V0OiIKICAgICAgICAgICAgICAgICAgICAuICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9IC4gJyEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJFNldE1hcHBpbmcgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkczo6RHluYW1pY0ZpZWxkU2V0OjpJbm5lckZpZWxkc1RpY2tldFRvQ0knKSAvLyB7fTsKCiAgICAjIGFkZCBkeW5hbWljIGZpZWxkcwogICAgQ09ORklHUEFSQU06CiAgICBmb3IgbXkgJENvbmZpZ1BhcmFtICgga2V5cyAkUGFyYW17Q29uZmlnfS0+JSogKSB7CiAgICAgICAgbXkgJEZpZWxkTmFtZTsKCiAgICAgICAgaWYgKCAkQ29uZmlnUGFyYW0gPX4gL15EeW5hbWljRmllbGRfKC4rKS8gKSB7CiAgICAgICAgICAgICRGaWVsZE5hbWUgPSAkMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG5leHQgQ09ORklHUEFSQU07CiAgICAgICAgfQoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDT05GSUdQQVJBTSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZCk7CgogICAgICAgICMgZm9yIHNldCBmaWVsZHMgd2UgbmVlZCB0byBtYXAgdGhlIG5hbWUgb2YgdGhlIGlubmVyIGZpZWxkcwogICAgICAgIGlmICggJER5bmFtaWNGaWVsZCAmJiAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnU2V0JyAmJiByZWYgJFBhcmFte0NvbmZpZ317JENvbmZpZ1BhcmFtfSApIHsKICAgICAgICAgICAgU0VUVkFMVUU6CiAgICAgICAgICAgIGZvciBteSAkU2V0VmFsdWUgKCAkUGFyYW17Q29uZmlnfXskQ29uZmlnUGFyYW19LT5AKiApIHsKICAgICAgICAgICAgICAgIG5leHQgU0VUVkFMVUUgdW5sZXNzICRTZXRWYWx1ZTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJElubmVyRmllbGQgKCBrZXlzICRTZXRWYWx1ZS0+JSogKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2V0TWFwcGluZy0+eyRJbm5lckZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNldFZhbHVlLT57ICRTZXRNYXBwaW5nLT57JElubmVyRmllbGR9IH0gPSBkZWxldGUgJFNldFZhbHVlLT57JElubmVyRmllbGR9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJENvbmZpZ0l0ZW1QYXJhbXskQ29uZmlnUGFyYW19ID0gJFBhcmFte0NvbmZpZ317JENvbmZpZ1BhcmFtfTsKICAgIH0KCiAgICAjIGNyZWF0ZSBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICVDb25maWdJdGVtUGFyYW0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAkQ29tbW9uTWVzc2FnZQogICAgICAgICAgICAgICAgLiAiQ291bGRuJ3QgY3JlYXRlIE5ldyBDb25maWdJdGVtIGZyb20gVGlja2V0OiAiCiAgICAgICAgICAgICAgICAuICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9IC4gJyEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHN0b3JlIGNyZWF0ZWQgQ29uZmlnSXRlbUlECiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57U3RvcmVDb25maWdJdGVtSUREeW5hbWljRmllbGR9ICkgewogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFte0NvbmZpZ30tPntTdG9yZUNvbmZpZ0l0ZW1JRER5bmFtaWNGaWVsZH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJER5bmFtaWNGaWVsZENvbmZpZyB8fCAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZykgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLiAiQ291bGRuJ3QgZ2V0IER5bmFtaWNGaWVsZCAkUGFyYW17Q29uZmlnfS0+e1N0b3JlQ29uZmlnSXRlbUlERHluYW1pY0ZpZWxkfSBmb3IgVGlja2V0ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9LiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSB2YWx1ZQogICAgICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5WYWx1ZVNldCgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSwKICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJENvbW1vbk1lc3NhZ2UKICAgICAgICAgICAgICAgICAgICAuICJDb3VsZG4ndCBzZXQgRHluYW1pY0ZpZWxkIFZhbHVlIG9uICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfToiCiAgICAgICAgICAgICAgICAgICAgLiAiIGZvciBUaWNrZXQ6ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbGluayB0aWNrZXQKICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9ICkgewoKICAgICAgICAjIGdldCBsaW5rIG9iamVjdAogICAgICAgIG15ICRMaW5rT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIGFsbCB0eXBlcwogICAgICAgIG15ICVDb25maWd1cmVkVHlwZXMgPSAkTGlua09iamVjdC0+VHlwZUxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRTZWxlY3RlZFR5cGU7CiAgICAgICAgbXkgJFNlbGVjdGVkRGlyZWN0aW9uOwoKICAgICAgICBUWVBFOgogICAgICAgIGZvciBteSAkVHlwZSAoIHNvcnQga2V5cyAlQ29uZmlndXJlZFR5cGVzICkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30gbmUgJENvbmZpZ3VyZWRUeXBlc3skVHlwZX0tPntTb3VyY2VOYW1lfQogICAgICAgICAgICAgICAgJiYgJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9IG5lICRDb25maWd1cmVkVHlwZXN7JFR5cGV9LT57VGFyZ2V0TmFtZX0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBUWVBFOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRTZWxlY3RlZFR5cGUgICAgICA9ICRUeXBlOwogICAgICAgICAgICAkU2VsZWN0ZWREaXJlY3Rpb24gPSAnU291cmNlJzsKICAgICAgICAgICAgaWYgKCAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30gZXEgJENvbmZpZ3VyZWRUeXBlc3skVHlwZX0tPntUYXJnZXROYW1lfSApIHsKICAgICAgICAgICAgICAgICRTZWxlY3RlZERpcmVjdGlvbiA9ICdUYXJnZXQnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxhc3QgVFlQRTsKICAgICAgICB9CgogICAgICAgIGlmICggISRTZWxlY3RlZFR5cGUgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLiAiTGlua0FzICRQYXJhbXtDb25maWd9LT57TGlua0FzfSBpcyBpbnZhbGlkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNvdXJjZU9iamVjdElEICAgPSAkQ29uZmlnSXRlbUlEOwogICAgICAgIG15ICRTb3VyY2VPYmplY3RUeXBlID0gJ0lUU01Db25maWdJdGVtJzsKICAgICAgICBteSAkVGFyZ2V0T2JqZWN0SUQgICA9ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9OwogICAgICAgIG15ICRUYXJnZXRPYmplY3RUeXBlID0gJ1RpY2tldCc7CiAgICAgICAgaWYgKCAkU2VsZWN0ZWREaXJlY3Rpb24gZXEgJ1RhcmdldCcgKSB7CiAgICAgICAgICAgICRTb3VyY2VPYmplY3RJRCAgID0gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH07CiAgICAgICAgICAgICRTb3VyY2VPYmplY3RUeXBlID0gJ1RpY2tldCc7CiAgICAgICAgICAgICRUYXJnZXRPYmplY3RJRCAgID0gJENvbmZpZ0l0ZW1JRDsKICAgICAgICAgICAgJFRhcmdldE9iamVjdFR5cGUgPSAnSVRTTUNvbmZpZ0l0ZW0nOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkTGlua09iamVjdC0+TGlua0FkZCgKICAgICAgICAgICAgU291cmNlT2JqZWN0ID0+ICRTb3VyY2VPYmplY3RUeXBlLAogICAgICAgICAgICBTb3VyY2VLZXkgICAgPT4gJFNvdXJjZU9iamVjdElELAogICAgICAgICAgICBUYXJnZXRPYmplY3QgPT4gJFRhcmdldE9iamVjdFR5cGUsCiAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGFyZ2V0T2JqZWN0SUQsCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkU2VsZWN0ZWRUeXBlLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAkQ29tbW9uTWVzc2FnZQogICAgICAgICAgICAgICAgICAgIC4gIkNvdWxkbid0IExpbmsgVGlja2V0cyAkU291cmNlT2JqZWN0SUQgd2l0aCAkVGFyZ2V0T2JqZWN0SUQgYXMgJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ProcessManagement/TransitionAction/ConfigItemUpdate.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpQcm9jZXNzTWFuYWdlbWVudDo6VHJhbnNpdGlvbkFjdGlvbjo6Q29uZmlnSXRlbVVwZGF0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkJhc2UpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlByb2Nlc3NNYW5hZ2VtZW50OjpUcmFuc2l0aW9uQWN0aW9uOjpDb25maWdJdGVtVXBkYXRlIC0gQSBtb2R1bGUgdG8gY3JlYXRlIGEgY29uZmlnIGl0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIENvbmZpZ0l0ZW1DcmVhdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkNvbmZpZ0l0ZW1DcmVhdGUnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUGFyYW1zKCkKClJldHVybnMgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1zIGZvciB0aGlzIHRyYW5zaXRpb24gYWN0aW9uIG1vZHVsZQoKICAgIG15IEBQYXJhbXMgPSAkT2JqZWN0LT5QYXJhbXMoKTsKCkVhY2ggZWxlbWVudCBpcyBhIGhhc2ggcmVmZXJlbmNlIHRoYXQgZGVzY3JpYmVzIHRoZSBjb25maWcgcGFyYW1ldGVyLgpDdXJyZW50bHkgb25seSB0aGUga2V5cyBJPEtleT4sIEk8VmFsdWU+IGFuZCBJPE9wdGlvbmFsPiBhcmUgdXNlZC4KCj1jdXQKCnN1YiBQYXJhbXMgewogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgIG15IEBQYXJhbXMgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnQ29uZmlnSXRlbUlEJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0NvbmZpZ0l0ZW1JRCAocmVxdWlyZWQgaWYgbm8gTnVtYmVyIGlzIGdpdmVuKScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnQ29uZmlnSXRlbSBOdW1iZXIgKHJlcXVpcmVkIGlmIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdBIG5hbWUgKGNhbiBvbmx5IGJlIGNoYW5nZWQgaWYgbm8gbmFtZSBtb2R1bGUgaXMgY29uZmlndXJlZCknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnVmVyc2lvblN0cmluZycsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdUaGUgdmVyc2lvbiBzdHJpbmcgKG9ubHkgaWYgbm8gdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGlzIGNvbmZpZ3VyZWQgYW5kIGEgdmVyc2lvbiBpcyBhZGRlZCknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ1NldCBhIG5ldyBkZXBsb3ltZW50IHN0YXRlJywKICAgICAgICAgICAgT3B0aW9uYWwgPT4gMSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdTZXQgYSBuZXcgaW5jaWRlbnQgc3RhdGUnLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnRHluYW1pY0ZpZWxkXzxOYW1lPiAocmVwbGFjZSA8TmFtZT4pJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0EgdmFsdWUnLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnTGlua0FzJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0FsdGVybmF0aXZlIHRvfERlcGVuZHMgb258UmVsZXZhbnQgdG8nLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnVXNlcklEJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJzEgKGNhbiBvdmVyd3JpdGUgdGhlIGxvZ2dlZCBpbiB1c2VyKScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIEBQYXJhbXM7Cn0KCj1oZWFkMiBSdW4oKQoKICAgIFJ1biBEYXRhCgogICAgbXkgJENvbmZpZ0l0ZW1VcGRhdGVSZXN1bHQgPSAkQ29uZmlnSXRlbVVwZGF0ZUFjdGlvbk9iamVjdC0+UnVuKAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgICAgID0+IFwlVGlja2V0LCAgICMgcmVxdWlyZWQKICAgICAgICBQcm9jZXNzRW50aXR5SUQgICAgICAgICAgPT4gJ1AxMjMnLAogICAgICAgIEFjdGl2aXR5RW50aXR5SUQgICAgICAgICA9PiAnQTEyMycsCiAgICAgICAgVHJhbnNpdGlvbkVudGl0eUlEICAgICAgID0+ICdUMTIzJywKICAgICAgICBUcmFuc2l0aW9uQWN0aW9uRW50aXR5SUQgPT4gJ1RBMTIzJywKICAgICAgICBDb25maWcgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAjIGNvbmZpZyBpdGVtIHJlcXVpcmVkOgogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICdJRCBvZiB0aGUgQ29uZmlnIEl0ZW0nLAogICAgICAgICAgICAjIE9SCiAgICAgICAgICAgIE51bWJlciAgICAgICAgPT4gJ051bWJlciBvZiB0aGUgQ29uZmlnSXRlbScsCgogICAgICAgICAgICAjIGNvbmZpZyBpdGVtIG9wdGlvbmFsOgogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICdTb21lIENvbmZpZyBJdGVtIE5hbWUnLAogICAgICAgICAgICBEZXBsU3RhdGUgICAgID0+ICdTb21lIERlcGxveW1lbnQgU3RhdGUnLAogICAgICAgICAgICBJbmNpU3RhdGUgICAgID0+ICdTb21lIEluY2lkZW50IFN0YXRlJywKICAgICAgICAgICAgJURhdGFQYXlsb2FkLAoKICAgICAgICAgICAgIyBvdGhlcjoKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVYID0+ICRWYWx1ZSwKICAgICAgICAgICAgTGlua0FzID0+ICRMaW5rVHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3JtYWwsIFBhcmVudCwgQ2hpbGQsIGV0Yy4gKHJlc3BlY3RpdmUgb3JpZ2luYWwgdGlja2V0KQogICAgICAgICAgICBVc2VySUQgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCB0byBvdmVycmlkZSB0aGUgVXNlcklEIGZyb20gdGhlIGxvZ2dlZCB1c2VyCiAgICAgICAgfQogICAgKTsKICAgIFRpY2tldCBjb250YWlucyB0aGUgcmVzdWx0IG9mIFRpY2tldEdldCBpbmNsdWRpbmcgRHluYW1pY0ZpZWxkcwogICAgQ29uZmlnIGlzIHRoZSBDb25maWcgSGFzaCBzdG9yZWQgaW4gYSBQcm9jZXNzOjpUcmFuc2l0aW9uQWN0aW9uJ3MgIENvbmZpZyBrZXkKICAgIFJldHVybnM6CgogICAgJENvbmZpZ0l0ZW1DcmVhdGVSZXN1bHQgPSAxOyAjIDAKCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZGVmaW5lIGEgY29tbW9uIG1lc3NhZ2UgdG8gb3V0cHV0IGluIGNhc2Ugb2YgYW55IGVycm9yCiAgICBteSAkQ29tbW9uTWVzc2FnZSA9ICJQcm9jZXNzOiAkUGFyYW17UHJvY2Vzc0VudGl0eUlEfSBBY3Rpdml0eTogJFBhcmFte0FjdGl2aXR5RW50aXR5SUR9IgogICAgICAgIC4gIiBUcmFuc2l0aW9uOiAkUGFyYW17VHJhbnNpdGlvbkVudGl0eUlEfSIKICAgICAgICAuICIgVHJhbnNpdGlvbkFjdGlvbjogJFBhcmFte1RyYW5zaXRpb25BY3Rpb25FbnRpdHlJRH0gLSAiOwoKICAgICMgY2hlY2sgZm9yIG1pc3Npbmcgb3Igd3JvbmcgcGFyYW1zCiAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5fQ2hlY2tQYXJhbXMoCiAgICAgICAgJVBhcmFtLAogICAgICAgIENvbW1vbk1lc3NhZ2UgPT4gJENvbW1vbk1lc3NhZ2UsCiAgICApOwogICAgcmV0dXJuIGlmICEkU3VjY2VzczsKCiAgICAjIG92ZXJyaWRlIFVzZXJJRCBpZiBzcGVjaWZpZWQgYXMgYSBwYXJhbWV0ZXIgaW4gdGhlIFRBIGNvbmZpZwogICAgJFBhcmFte1VzZXJJRH0gPSAkU2VsZi0+X092ZXJyaWRlVXNlcklEKCVQYXJhbSk7CgogICAgIyB1c2UgdGlja2V0IGF0dHJpYnV0ZXMgaWYgbmVlZGVkCiAgICAkU2VsZi0+X1JlcGxhY2VUaWNrZXRBdHRyaWJ1dGVzKCVQYXJhbSk7CiAgICAkU2VsZi0+X1JlcGxhY2VBZGRpdGlvbmFsQXR0cmlidXRlcyglUGFyYW0pOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgJURlcGxTdGF0ZTJJRE1hcCA9IHJldmVyc2UgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCggQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScgKS0+JSo7CiAgICBteSAlSW5jaVN0YXRlMklETWFwID0gcmV2ZXJzZSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KCBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScgKS0+JSo7CgogICAgbXkgJUNvbmZpZ0l0ZW1QYXJhbTsKCiAgICBpZiAoICRQYXJhbXtDb25maWd9e0NvbmZpZ0l0ZW1JRH0gKSB7CgogICAgICAgICMgZm9yIHRoZSBwcm9jZXNzZXMgbW9zdGx5IHRoZSBDb25maWdJdGVtcyB3aWxsIGNvbWUgZnJvbSByZWZlcmVuY2UgZmllbGRzCiAgICAgICAgaWYgKCByZWYgJFBhcmFte0NvbmZpZ317Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9ID0gJFBhcmFte0NvbmZpZ317Q29uZmlnSXRlbUlEfVswXTsKICAgICAgICB9CgogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQ29uZmlnSXRlbVBhcmFte0NvbmZpZ0l0ZW1JRH0gPSAkUGFyYW17Q29uZmlnfXtDb25maWdJdGVtSUR9OwogICAgICAgIH0KICAgIH0KCiAgICBlbHNlIHsKICAgICAgICAkQ29uZmlnSXRlbVBhcmFte0NvbmZpZ0l0ZW1JRH0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkUGFyYW17Q29uZmlnfXtOdW1iZXJ9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAhJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgIG15ICRNaXNzaW5nID0gJFBhcmFte0NvbmZpZ317TnVtYmVyfSA/ICJObyBDb25maWdJdGVtIHdpdGggTnVtYmVyICckUGFyYW17Q29uZmlnfXtOdW1iZXJ9JyEiCiAgICAgICAgICAgIDogIk5lZWQgQ29uZmlnSXRlbUlEIG9yIE51bWJlciEiOwoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJENvbW1vbk1lc3NhZ2UKICAgICAgICAgICAgICAgIC4gIkNvdWxkIG5vdCB1cGRhdGUgQ0kgaW4gVGlja2V0OiIKICAgICAgICAgICAgICAgIC4gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH0gLiAiISAkTWlzc2luZyIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICk7CgogICAgaWYgKCAhJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAuICJObyBDb25maWdJdGVtIHdpdGggSUQgJyRDb25maWdJdGVtUGFyYW17Q29uZmlnSXRlbUlEfSc7IGZhaWxlZCBpbiBUaWNrZXQ6IgogICAgICAgICAgICAgICAgLiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSAuICIhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgZm9yIG15ICRPcHRpb25hbEF0dHJpYnV0ZSAoIHF3L05hbWUgTnVtYmVyIFZlcnNpb25TdHJpbmcvICkgewogICAgICAgIGlmICggJFBhcmFte0NvbmZpZ317ICRPcHRpb25hbEF0dHJpYnV0ZSB9ICkgewogICAgICAgICAgICAkQ29uZmlnSXRlbVBhcmFte05hbWV9ID0gJFBhcmFte0NvbmZpZ317ICRPcHRpb25hbEF0dHJpYnV0ZSB9OwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRQYXJhbXtDb25maWd9e0RlcGxTdGF0ZX0gJiYgJERlcGxTdGF0ZTJJRE1hcHsgJFBhcmFte0NvbmZpZ317RGVwbFN0YXRlfSB9ICkgewogICAgICAgICRDb25maWdJdGVtUGFyYW17RGVwbFN0YXRlSUR9ID0gJERlcGxTdGF0ZTJJRE1hcHsgJFBhcmFte0NvbmZpZ317RGVwbFN0YXRlfSB9OwogICAgfQogICAgaWYgKCAkUGFyYW17Q29uZmlnfXtJbmNpU3RhdGV9ICYmICRJbmNpU3RhdGUySURNYXB7ICRQYXJhbXtDb25maWd9e0luY2lTdGF0ZX0gfSApIHsKICAgICAgICAkQ29uZmlnSXRlbVBhcmFte0luY2lTdGF0ZUlEfSA9ICRJbmNpU3RhdGUySURNYXB7ICRQYXJhbXtDb25maWd9e0luY2lTdGF0ZX0gfTsKICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJFNldE1hcHBpbmcgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkczo6RHluYW1pY0ZpZWxkU2V0OjpJbm5lckZpZWxkc1RpY2tldFRvQ0knKSAvLyB7fTsKCiAgICAjIGFkZCBkeW5hbWljIGZpZWxkcwogICAgQ09ORklHUEFSQU06CiAgICBmb3IgbXkgJENvbmZpZ1BhcmFtICgga2V5cyAkUGFyYW17Q29uZmlnfS0+JSogKSB7CiAgICAgICAgbmV4dCBDT05GSUdQQVJBTSBpZiAkQ29uZmlnUGFyYW0gIX4gL15EeW5hbWljRmllbGRfKC4rKS87CgogICAgICAgIG15ICRGaWVsZE5hbWUgICAgPSAkMTsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDT05GSUdQQVJBTSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICREeW5hbWljRmllbGQgKTsKCiAgICAgICAgIyBmb3Igc2V0IGZpZWxkcyB3ZSBuZWVkIHRvIG1hcCB0aGUgbmFtZSBvZiB0aGUgaW5uZXIgZmllbGRzCiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkICYmICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnICYmIHJlZiAkUGFyYW17Q29uZmlnfXsgJENvbmZpZ1BhcmFtIH0gKSB7CiAgICAgICAgICAgIFNFVFZBTFVFOgogICAgICAgICAgICBmb3IgbXkgJFNldFZhbHVlICggJFBhcmFte0NvbmZpZ317ICRDb25maWdQYXJhbSB9LT5AKiApIHsKICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICRTZXRWYWx1ZTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJElubmVyRmllbGQgKCBrZXlzICRTZXRWYWx1ZS0+JSogKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2V0TWFwcGluZy0+eyAkSW5uZXJGaWVsZCB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU2V0VmFsdWUtPnsgJFNldE1hcHBpbmctPnsgJElubmVyRmllbGQgfSB9ID0gZGVsZXRlICRTZXRWYWx1ZS0+eyAkSW5uZXJGaWVsZCB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJENvbmZpZ0l0ZW1QYXJhbXsgJENvbmZpZ1BhcmFtIH0gPSAkUGFyYW17Q29uZmlnfXsgJENvbmZpZ1BhcmFtIH07CiAgICB9CgogICAgIyB1cGRhdGUgY29uZmlnIGl0ZW0KICAgICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgJUNvbmZpZ0l0ZW1QYXJhbSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAkQ29tbW9uTWVzc2FnZQogICAgICAgICAgICAgICAgLiAiQ291bGRuJ3QgdXBkYXRlIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9IGZyb20gVGlja2V0OiAiCiAgICAgICAgICAgICAgICAuICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9IC4gJyEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxpbmsgdGlja2V0CiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57TGlua0FzfSApIHsKCiAgICAgICAgIyBnZXQgbGluayBvYmplY3QKICAgICAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgICAgICMgZ2V0IGNvbmZpZyBvZiBhbGwgdHlwZXMKICAgICAgICBteSAlQ29uZmlndXJlZFR5cGVzID0gJExpbmtPYmplY3QtPlR5cGVMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBteSAkU2VsZWN0ZWRUeXBlOwogICAgICAgIG15ICRTZWxlY3RlZERpcmVjdGlvbjsKCiAgICAgICAgVFlQRToKICAgICAgICBmb3IgbXkgJFR5cGUgKCBzb3J0IGtleXMgJUNvbmZpZ3VyZWRUeXBlcyApIHsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9IG5lICRDb25maWd1cmVkVHlwZXN7JFR5cGV9LT57U291cmNlTmFtZX0KICAgICAgICAgICAgICAgICYmICRQYXJhbXtDb25maWd9LT57TGlua0FzfSBuZSAkQ29uZmlndXJlZFR5cGVzeyRUeXBlfS0+e1RhcmdldE5hbWV9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5leHQgVFlQRTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkU2VsZWN0ZWRUeXBlICAgICAgPSAkVHlwZTsKICAgICAgICAgICAgJFNlbGVjdGVkRGlyZWN0aW9uID0gJ1NvdXJjZSc7CiAgICAgICAgICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9IGVxICRDb25maWd1cmVkVHlwZXN7JFR5cGV9LT57VGFyZ2V0TmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZWN0ZWREaXJlY3Rpb24gPSAnVGFyZ2V0JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBsYXN0IFRZUEU7CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkU2VsZWN0ZWRUeXBlICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAkQ29tbW9uTWVzc2FnZQogICAgICAgICAgICAgICAgICAgIC4gIkxpbmtBcyAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30gaXMgaW52YWxpZCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG15ICRTb3VyY2VPYmplY3RJRCAgID0gJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgIG15ICRTb3VyY2VPYmplY3RUeXBlID0gJ0lUU01Db25maWdJdGVtJzsKICAgICAgICBteSAkVGFyZ2V0T2JqZWN0SUQgICA9ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9OwogICAgICAgIG15ICRUYXJnZXRPYmplY3RUeXBlID0gJ1RpY2tldCc7CiAgICAgICAgaWYgKCAkU2VsZWN0ZWREaXJlY3Rpb24gZXEgJ1RhcmdldCcgKSB7CiAgICAgICAgICAgICRTb3VyY2VPYmplY3RJRCAgID0gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH07CiAgICAgICAgICAgICRTb3VyY2VPYmplY3RUeXBlID0gJ1RpY2tldCc7CiAgICAgICAgICAgICRUYXJnZXRPYmplY3RJRCAgID0gJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgICAgICAkVGFyZ2V0T2JqZWN0VHlwZSA9ICdJVFNNQ29uZmlnSXRlbSc7CiAgICAgICAgfQoKICAgICAgICBteSAkU3VjY2VzcyA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJFNvdXJjZU9iamVjdFR5cGUsCiAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkU291cmNlT2JqZWN0SUQsCiAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAkVGFyZ2V0T2JqZWN0VHlwZSwKICAgICAgICAgICAgVGFyZ2V0S2V5ICAgID0+ICRUYXJnZXRPYmplY3RJRCwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRTZWxlY3RlZFR5cGUsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLiAiQ291bGRuJ3QgTGluayBUaWNrZXRzICRTb3VyY2VPYmplY3RJRCB3aXRoICRUYXJnZXRPYmplY3RJRCBhcyAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30hIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Location="Kernel/System/Service/PreferencesDB.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBmZjllMjk3YmFmMjg3ZTE2MDcxZDNhYzZhZDdmNmMxM2YxMWFjN2ZhIC0gS2VybmVsL1N5c3RlbS9TZXJ2aWNlL1ByZWZlcmVuY2VzREIucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6U2VydmljZTo6UHJlZmVyZW5jZXNEQjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q2FjaGVUeXBlfSA9ICdTZXJ2aWNlUHJlZmVyZW5jZXNEQic7CiAgICAkU2VsZi0+e0NhY2hlVFRMfSAgPSA2MCAqIDYwICogMjQgKiAyMDsKCiAgICAjIHByZWZlcmVuY2VzIHRhYmxlIGRhdGEKICAgICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZX0gICAgICAgICAgPSAnc2VydmljZV9wcmVmZXJlbmNlcyc7CiAgICAkU2VsZi0+e1ByZWZlcmVuY2VzVGFibGVLZXl9ICAgICAgID0gJ3ByZWZlcmVuY2VzX2tleSc7CiAgICAkU2VsZi0+e1ByZWZlcmVuY2VzVGFibGVWYWx1ZX0gICAgID0gJ3ByZWZlcmVuY2VzX3ZhbHVlJzsKICAgICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVNlcnZpY2VJRH0gPSAnc2VydmljZV9pZCc7CgogICAgIyBjcmVhdGUgY2FjaGUgcHJlZml4CiAgICAkU2VsZi0+e0NhY2hlUHJlZml4fSA9ICdTZXJ2aWNlUHJlZmVyZW5jZXNEQicKICAgICAgICAuICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZX0KICAgICAgICAuICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZUtleX0KICAgICAgICAuICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVZhbHVlfQogICAgICAgIC4gJFNlbGYtPntQcmVmZXJlbmNlc1RhYmxlU2VydmljZUlEfTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBTZXJ2aWNlUHJlZmVyZW5jZXNTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIChxdyhTZXJ2aWNlSUQgS2V5IFZhbHVlKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJF8hIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZGVsZXRlIG9sZCBkYXRhCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSAkU2VsZi0+e1ByZWZlcmVuY2VzVGFibGV9IFdIRVJFICIKICAgICAgICAgICAgLiAiJFNlbGYtPntQcmVmZXJlbmNlc1RhYmxlU2VydmljZUlEfSA9ID8gQU5EICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZUtleX0gPSA/IiwKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtTZXJ2aWNlSUR9LCBcJFBhcmFte0tleX0gXSwKICAgICk7CgogICAgIyBpbnNlcnQgbmV3IGRhdGEKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gIklOU0VSVCBJTlRPICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZX0gKCRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVNlcnZpY2VJRH0sICIKICAgICAgICAgICAgLiAiICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZUtleX0sICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVZhbHVlfSkgIgogICAgICAgICAgICAuICIgVkFMVUVTICg/LCA/LCA/KSIsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U2VydmljZUlEfSwgXCRQYXJhbXtLZXl9LCBcJFBhcmFte1ZhbHVlfSBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSBjYWNoZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRTZWxmLT57Q2FjaGVQcmVmaXh9IC4gJFBhcmFte1NlcnZpY2VJRH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgpzdWIgU2VydmljZVByZWZlcmVuY2VzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciAocXcoU2VydmljZUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskX30gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRfISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KIyAtLS0KIyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAtLS0KIwojICAgICMgY2hlY2sgaWYgc2VydmljZSBwcmVmZXJlbmNlcyBhcmUgYXZhaWxhYmxlCiMgICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NlcnZpY2VQcmVmZXJlbmNlcycpOwojIC0tLQoKICAgICMgcmVhZCBjYWNoZQogICAgbXkgJENhY2hlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkdldCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRTZWxmLT57Q2FjaGVQcmVmaXh9IC4gJFBhcmFte1NlcnZpY2VJRH0sCiAgICApOwogICAgcmV0dXJuICV7JENhY2hlfSBpZiAkQ2FjaGU7CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcHJlZmVyZW5jZXMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAiU0VMRUNUICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZUtleX0sICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZVZhbHVlfSAiCiAgICAgICAgICAgIC4gIiBGUk9NICRTZWxmLT57UHJlZmVyZW5jZXNUYWJsZX0gV0hFUkUgJFNlbGYtPntQcmVmZXJlbmNlc1RhYmxlU2VydmljZUlEfSA9ID8iLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1NlcnZpY2VJRH0gXSwKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXsgJFJvd1swXSB9ID0gJFJvd1sxXTsKICAgIH0KCiAgICAjIHNldCBjYWNoZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPlNldCgKICAgICAgICBUeXBlICA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgS2V5ICAgPT4gJFNlbGYtPntDYWNoZVByZWZpeH0gLiAkUGFyYW17U2VydmljZUlEfSwKICAgICAgICBWYWx1ZSA9PiBcJURhdGEsCiAgICApOwoKICAgIHJldHVybiAlRGF0YTsKfQoKMTsK</File>
        <File Location="Kernel/System/Stats/Dynamic/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdGF0czo6RHluYW1pYzo6SVRTTUNvbmZpZ0l0ZW07Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgR2V0T2JqZWN0TmFtZSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgIHJldHVybiAnSVRTTUNvbmZpZ0l0ZW0nOwp9CgpzdWIgR2V0T2JqZWN0QmVoYXZpb3VycyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVCZWhhdmlvdXJzID0gKAogICAgICAgIFByb3ZpZGVzRGFzaGJvYXJkV2lkZ2V0ID0+IDEsCiAgICApOwoKICAgIHJldHVybiAlQmVoYXZpb3VyczsKfQoKc3ViIEdldE9iamVjdEF0dHJpYnV0ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdAogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICk7CgogICAgIyBnZXQgY3VycmVudCB0aW1lIHRvIGZpeCBidWcjMzgzMAogICAgbXkgJFRpbWVTdGFtcCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpLT5Ub1N0cmluZygpOwoKICAgICMgY3JlYXRlIG9iamVjdCBhdHRyaWJ1dGUgYXJyYXkKICAgIG15IEBPYmplY3RBdHRyaWJ1dGVzID0gKAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgICAgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiAgICA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgICAgID0+ICdDbGFzc0lEcycsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgICAgPT4gJ011bHRpU2VsZWN0RmllbGQnLAogICAgICAgICAgICBMYW5ndWFnZVRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAxLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ011bHRpU2VsZWN0RmllbGQnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+ICREZXBsU3RhdGVMaXN0LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdJbmNpZGVudCBTdGF0ZScsCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAxLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ011bHRpU2VsZWN0RmllbGQnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdJbnB1dEZpZWxkJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdJbnB1dEZpZWxkJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnQ3JlYXRlIFRpbWUnLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdDcmVhdGVUaW1lJywKICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVGltZVN0YXJ0ID0+ICdDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgICAgICAgICBUaW1lU3RvcCAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnQ2hhbmdlIFRpbWUnLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdDaGFuZ2VUaW1lJywKICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFRpbWVTdG9wICAgICAgICAgPT4gJFRpbWVTdGFtcCwKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBUaW1lU3RhcnQgPT4gJ0NvbmZpZ0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlJywKICAgICAgICAgICAgICAgIFRpbWVTdG9wICA9PiAnQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgYWRkIHRoZSB4bWwgZGF0YQogICAgQ0xBU1NJRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQga2V5cyAleyRDbGFzc0xpc3R9ICkgewoKICAgICAgICAjIGdldCB4bWwgZGVmaW5pdGlvbiBoYXNoCiAgICAgICAgbXkgJFhNTERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICBuZXh0IENMQVNTSUQgaWYgISRYTUxEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfTsKCiAgICAgICAgJFNlbGYtPl9YTUxBdHRyaWJ1dGVBZGQoCiAgICAgICAgICAgIE9iamVjdEF0dHJpYnV0ZXMgPT4gXEBPYmplY3RBdHRyaWJ1dGVzLAogICAgICAgICAgICBYTUxEZWZpbml0aW9uICAgID0+ICRYTUxEZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0sCiAgICAgICAgICAgIFByZWZpeCAgICAgICAgICAgPT4gJ1hNTDo6JyAuICRDbGFzc0lELAogICAgICAgICAgICBQcmVmaXhOYW1lICAgICAgID0+ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gQE9iamVjdEF0dHJpYnV0ZXM7Cn0KCnN1YiBfWE1MQXR0cmlidXRlQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICEkUGFyYW17T2JqZWN0QXR0cmlidXRlc307CiAgICByZXR1cm4gaWYgISRQYXJhbXtYTUxEZWZpbml0aW9ufTsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte1hNTERlZmluaXRpb259IG5lICdBUlJBWSc7CgogICAgaWYgKCAkUGFyYW17UHJlZml4fSApIHsKICAgICAgICAkUGFyYW17UHJlZml4fSAuPSAnOjonOwogICAgfQogICAgaWYgKCAkUGFyYW17UHJlZml4TmFtZX0gKSB7CiAgICAgICAgJFBhcmFte1ByZWZpeE5hbWV9IC49ICc6Oic7CiAgICB9CgogICAgJFBhcmFte0xldmVsfSAgICAgIHx8PSAwOwogICAgJFBhcmFte1ByZWZpeH0gICAgIHx8PSAnJzsKICAgICRQYXJhbXtQcmVmaXhOYW1lfSB8fD0gJyc7CgogICAgSVRFTToKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtYTUxEZWZpbml0aW9ufSB9ICkgewoKICAgICAgICBuZXh0IElURU0gaWYgISRJdGVtLT57U2VhcmNoYWJsZX0gJiYgISRJdGVtLT57U3VifTsKCiAgICAgICAgIyBjcmVhdGUga2V5IGFuZCBuYW1lCiAgICAgICAgbXkgJEtleSAgPSAkUGFyYW17UHJlZml4fSAuICRJdGVtLT57S2V5fTsKICAgICAgICBteSAkTmFtZSA9ICRQYXJhbXtQcmVmaXhOYW1lfSAuICRJdGVtLT57TmFtZX07CgogICAgICAgICMgYWRkIGF0dHJpYnV0ZQogICAgICAgIG15ICRBdHRyaWJ1dGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+WE1MU3RhdHNBdHRyaWJ1dGVDcmVhdGUoCiAgICAgICAgICAgIEtleSAgPT4gJEtleSwKICAgICAgICAgICAgSXRlbSA9PiAkSXRlbSwKICAgICAgICAgICAgTmFtZSA9PiAkTmFtZSwKICAgICAgICApOwoKICAgICAgICBuZXh0IElURU0gaWYgISRBdHRyaWJ1dGU7CiAgICAgICAgbmV4dCBJVEVNIGlmIHJlZiAkQXR0cmlidXRlIG5lICdBUlJBWSc7CiAgICAgICAgbmV4dCBJVEVNIGlmICFzY2FsYXIgQHskQXR0cmlidXRlfTsKCiAgICAgICAgIyBhZGQgYXR0cmlidXRlcyB0byBvYmplY3QgYXJyYXkKICAgICAgICBwdXNoIEB7ICRQYXJhbXtPYmplY3RBdHRyaWJ1dGVzfSB9LCBAeyRBdHRyaWJ1dGV9OwoKICAgICAgICBuZXh0IElURU0gaWYgISRJdGVtLT57U3VifTsKCiAgICAgICAgIyBzdGFydCByZWN1cnNpb24sIGlmICJTdWIiIHdhcyBmb3VuZAogICAgICAgICRTZWxmLT5fWE1MQXR0cmlidXRlQWRkKAogICAgICAgICAgICBPYmplY3RBdHRyaWJ1dGVzID0+ICRQYXJhbXtPYmplY3RBdHRyaWJ1dGVzfSwKICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiAgICA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgIExldmVsICAgICAgICAgICAgPT4gJFBhcmFte0xldmVsfSArIDEsCiAgICAgICAgICAgIFByZWZpeCAgICAgICAgICAgPT4gJEtleSwKICAgICAgICAgICAgUHJlZml4TmFtZSAgICAgICA9PiAkTmFtZSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgR2V0U3RhdEVsZW1lbnRQcmV2aWV3IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICggaW50IHJhbmQgNTAwICkgKyAxOwp9CgpzdWIgR2V0U3RhdEVsZW1lbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCBsaW1pdAogICAgJFBhcmFte0xpbWl0fSA9IDFfMDAwXzAwMDsKCiAgICAjIGV4dHJhY3QgYWxsIHhtbCBwYXJhbSBrZXlzIGZyb20gdGhlIHBhcmFtIGhhc2gKICAgIG15IEBYTUxQYXJhbXMgPSBncmVwIHsgJF8gPX4gbXtcQSBYTUw6On14bXMgfSBzb3J0IGtleXMgJVBhcmFtOwoKICAgIGlmIChAWE1MUGFyYW1zKSB7CiAgICAgICAgcmV0dXJuICdZb3UgbXVzdCBkZWZpbmUgYSBjbGFzcyBpbiBvbmUgYXhpcy4nIGlmICEkUGFyYW17Q2xhc3NJRHN9OwogICAgICAgIHJldHVybiAnWW91IG11c3QgZGVmaW5lIGEgY2xhc3MgaW4gb25lIGF4aXMuJyBpZiByZWYgJFBhcmFte0NsYXNzSURzfSBuZSAnQVJSQVknOwogICAgfQoKICAgICMgdG8gY29sbGVjdCBkYXRlIGZpZWxkcyBzZXBhcmF0ZWx5CiAgICBteSAlWE1MUGFyYW1zRGF0ZUZpZWxkczsKCiAgICBteSAlWE1MQ2xhc3NJRHM7CiAgICBQQVJBTUtFWToKICAgIGZvciBteSAkUGFyYW1LZXkgKEBYTUxQYXJhbXMpIHsKCiAgICAgICAgIyBleHRyYWN0IHNlYXJjaCB2YWx1ZXMKICAgICAgICBteSAkU2VhcmNoVmFsdWVzID0gJFBhcmFteyRQYXJhbUtleX07CgogICAgICAgICMgcHJlcGFyZSBwYXJhbSB2YWx1ZQogICAgICAgIGlmICggIXJlZiAkU2VhcmNoVmFsdWVzICkgewogICAgICAgICAgICAkU2VhcmNoVmFsdWVzID0gWyRTZWFyY2hWYWx1ZXNdOwogICAgICAgIH0KCiAgICAgICAgbmV4dCBQQVJBTUtFWSBpZiAhQHskU2VhcmNoVmFsdWVzfTsKCiAgICAgICAgIyBzcGxpdCBwYXJhbSBrZXkKICAgICAgICBteSAoICRDbGFzc0lELCAkU2VhcmNoS2V5ICkgPSAkUGFyYW1LZXkgPX4gbXsgXEEgWE1MOjogKCBcZCsgKSA6OiAoLispIFx6IH14bXM7CgogICAgICAgICMgcHJlcGFyZSBzZWFyY2gga2V5CiAgICAgICAgJFNlYXJjaEtleSA9fiBzWyA6OiBdWyd9WyVdeyddeG1zZzsKCiAgICAgICAgIyBBZGQgY2xhc3MgaWQgdG8geG1sIGNsYXNzIGlkIGhhc2gKICAgICAgICAkWE1MQ2xhc3NJRHN7JENsYXNzSUR9ID0gMTsKCiAgICAgICAgIyBjb2xsZWN0IGRhdGUgZmllbGRzIHNlcGFyYXRlbHkgKGUuZyBXYXJyYW50eUV4cGlyYXRpb25EYXRlTmV3ZXJEYXRlKQogICAgICAgIGlmICggJFNlYXJjaEtleSA9fiBteyAoLispICggTmV3ZXJEYXRlIHwgT2xkZXJEYXRlICkgXHogfXhtcyApIHsKICAgICAgICAgICAgJFhNTFBhcmFtc0RhdGVGaWVsZHN7JDF9LT57JDJ9ID0gJFNlYXJjaFZhbHVlcy0+WzBdOwoKICAgICAgICAgICAgbmV4dCBQQVJBTUtFWTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHNlYXJjaCBoYXNoCiAgICAgICAgbXkgJFNlYXJjaEhhc2ggPSB7CiAgICAgICAgICAgICdbMV17XCdWZXJzaW9uXCd9WzFde1wnJyAuICRTZWFyY2hLZXkgLiAnXCd9WyVde1wnQ29udGVudFwnfScgPT4gJFNlYXJjaFZhbHVlcywKICAgICAgICB9OwoKICAgICAgICBwdXNoIEB7ICRQYXJhbXtXaGF0fSB9LCAkU2VhcmNoSGFzaDsKICAgIH0KCiAgICAjIGJ1aWxkIHNlYXJjaCBoYXNoIGZvciBkYXRlIGZpZWxkcwogICAgZm9yIG15ICREYXRlRmllbGROYW1lICggc29ydCBrZXlzICVYTUxQYXJhbXNEYXRlRmllbGRzICkgewoKICAgICAgICBteSAkU2VhcmNoSGFzaCA9IHsKICAgICAgICAgICAgJ1sxXXtcJ1ZlcnNpb25cJ31bMV17XCcnIC4gJERhdGVGaWVsZE5hbWUgLiAnXCd9WyVde1wnQ29udGVudFwnfScgPT4gewogICAgICAgICAgICAgICAgJy1iZXR3ZWVuJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJFhNTFBhcmFtc0RhdGVGaWVsZHN7JERhdGVGaWVsZE5hbWV9LT57TmV3ZXJEYXRlfSwKICAgICAgICAgICAgICAgICAgICAkWE1MUGFyYW1zRGF0ZUZpZWxkc3skRGF0ZUZpZWxkTmFtZX0tPntPbGRlckRhdGV9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9OwoKICAgICAgICBwdXNoIEB7ICRQYXJhbXtXaGF0fSB9LCAkU2VhcmNoSGFzaDsKICAgIH0KCiAgICBpZiAoJVhNTENsYXNzSURzKSB7CiAgICAgICAgbXkgQEV4aXN0cyA9IGdyZXAgeyAkWE1MQ2xhc3NJRHN7JF99IH0gQHsgJFBhcmFte0NsYXNzSURzfSB9OwoKICAgICAgICByZXR1cm4gMCBpZiAhQEV4aXN0czsKICAgIH0KCiAgICAjIHN0YXJ0IGNvbmZpZyBpdGVtIGV4dGVuZGVkIHNlYXJjaAogICAgbXkgJEFtb3VudE9mQ0lzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgJVBhcmFtLAogICAgICAgIFJlc3VsdCA9PiAnQ09VTlQnLAogICAgKTsKCiAgICByZXR1cm4gJEFtb3VudE9mQ0lzOwp9CgpzdWIgRXhwb3J0V3JhcHBlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBcJVBhcmFtOwp9CgpzdWIgSW1wb3J0V3JhcHBlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBcJVBhcmFtOwp9CgoxOwo=</File>
        <File Location="Kernel/System/SysConfig/ValueType/Entity/ConfigItemClass.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTeXNDb25maWc6OlZhbHVlVHlwZTo6RW50aXR5OjpDb25maWdJdGVtQ2xhc3M7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpTeXNDb25maWc6OlZhbHVlVHlwZTo6RW50aXR5KTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZzo6VmFsdWVUeXBlOjpFbnRpdHk6OkNvbmZpZ0l0ZW1DbGFzcyAtIFN5c3RlbSBjb25maWd1cmF0aW9uIGNvbmZpZyBpdGVtIGNsYXNzIGVudGl0eSB0eXBlIGJhY2tlbmQuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpDcmVhdGUgYW4gb2JqZWN0LiBEbyBub3QgdXNlIGl0IGRpcmVjdGx5LCBpbnN0ZWFkIHVzZToKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRFbnRpdHlUeXBlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZzo6VmFsdWVUeXBlOjpFbnRpdHk6OkNvbmZpZ0l0ZW1DbGFzcycpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdC4KICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgRW50aXR5VmFsdWVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ0l0ZW1DbGFzc2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7CgogICAgbXkgQFJlc3VsdDsKCiAgICBmb3IgbXkgJElEICggc29ydCBrZXlzICRDb25maWdJdGVtQ2xhc3Nlcy0+JSogKSB7CiAgICAgICAgcHVzaCBAUmVzdWx0LCAkQ29uZmlnSXRlbUNsYXNzZXMtPnskSUR9OwogICAgfQoKICAgIHJldHVybiBAUmVzdWx0Owp9CgpzdWIgRW50aXR5TG9va3VwRnJvbVdlYlJlcXVlc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ2xhc3NJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb25maWdJdGVtQ2xhc3NJRCcgKSAvLyAnJzsKCiAgICByZXR1cm4gaWYgISRDbGFzc0lEOwoKICAgIG15ICRJdGVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgSXRlbUlEID0+ICRDbGFzc0lELAogICAgKTsKCiAgICByZXR1cm4gJEl0ZW0tPntOYW1lfTsKfQoKMTsK</File>
        <File Location="Kernel/System/Ticket/Event/TicketStatusLink.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpUaWNrZXRTdGF0dXNMaW5rOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KERhdGEgRXZlbnQgQ29uZmlnKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIHJldHVybiAxIGlmICEkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpTZXRJbmNpZGVudFN0YXRlT25MaW5rJyk7CgogICAgIyBnZXQgdGlja2V0IGlkIGRlcGVuZGluZyBvbiBldmVudAogICAgbXkgJFRpY2tldElEOwogICAgaWYgKCAkUGFyYW17RXZlbnR9IGVxICdMaW5rQWRkJyB8fCAkUGFyYW17RXZlbnR9IGVxICdMaW5rRGVsZXRlJyApIHsKICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIENvbW1lbnQpKSB7CiAgICAgICAgICAgIGlmICggISRQYXJhbXtEYXRhfS0+eyROZWVkZWR9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkIGluIERhdGEhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnTGlua0FkZCcgKSB7CiAgICAgICAgICAgIGlmICggISRQYXJhbXtEYXRhfS0+e1R5cGV9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBUeXBlIGluIERhdGEhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgbGluayBldmVudCBjb25jZXJucyBhIHRpY2tldAogICAgICAgIHJldHVybiAxIHVubGVzcyAkUGFyYW17RGF0YX0tPntDb21tZW50fSA9fiBteyBcQSAoIFxkKyApICUlVGlja2V0IFx6IH14bXM7CgogICAgICAgICRUaWNrZXRJRCA9ICQxOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9LT57VGlja2V0SUR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBUaWNrZXRJRCBpbiBEYXRhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJFRpY2tldElEID0gJFBhcmFte0RhdGF9LT57VGlja2V0SUR9OwogICAgfQoKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBteSAlVGlja2V0ICAgICAgID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKICAgIHJldHVybiAxIGlmICElVGlja2V0OwoKICAgICMgY2hlY2sgaWYgdGlja2V0IHR5cGUgaXMgcmVsZXZhbnQgKG9wdGlvbmFsIGZ1bmN0aW9uYWxpdHkpCiAgICBteSAkT2xkVGlja2V0VHlwZVJlbGV2YW50OwogICAgbXkgJE5ld1RpY2tldFR5cGVSZWxldmFudDsKICAgIG15ICRUaWNrZXRUeXBlcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OlRpY2tldFR5cGVzJyk7CiAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFR5cGVVcGRhdGUnICkgewoKICAgICAgICAjIHRpY2tldCB0eXBlcyBhcmUgbm90IHVzZWQsIGNoYW5nZXMgZG9uJ3QgYWZmZWN0IENJIGluY2lkZW50IHN0YXRlcwogICAgICAgIHJldHVybiAxIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFRpY2tldFR5cGVzKTsKCiAgICAgICAgIyBkZXRlcm1pbmUgdHlwZSBvZiB0aWNrZXQgYmVmb3JlIGxhc3QgdXBkYXRlCiAgICAgICAgbXkgJE9sZFRpY2tldFR5cGU7CiAgICAgICAgbXkgQEhpc3RvcnlMaW5lcyA9ICRUaWNrZXRPYmplY3QtPkhpc3RvcnlHZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwogICAgICAgIExJTkU6CiAgICAgICAgZm9yIG15ICRMaW5lICggcmV2ZXJzZSBASGlzdG9yeUxpbmVzICkgewogICAgICAgICAgICBuZXh0IExJTkUgaWYgJExpbmUtPntIaXN0b3J5VHlwZX0gbmUgJ1R5cGVVcGRhdGUnOwogICAgICAgICAgICBteSBAQ29tbWVudFBhcnRzID0gc3BsaXQgLyUlLywgJExpbmUtPntOYW1lfTsKICAgICAgICAgICAgJE9sZFRpY2tldFR5cGUgPSAkQ29tbWVudFBhcnRzWzNdOwogICAgICAgICAgICBsYXN0IExJTkU7CiAgICAgICAgfQogICAgICAgIGlmICggISRPbGRUaWNrZXRUeXBlICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRm91bmQgbm8gcHJldmlvdXMgdGlja2V0IHR5cGUgZm9yIHRpY2tldCBpZCAkVGlja2V0SUQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBvbmx5IGNoYW5nZXMgcmVsZXZhbnQtPmlycmVsZXZhbnQgYW5kIGlycmVsZXZhbnQtPnJlbGV2YW50IGFyZSBvZiBpbnRlcmVzdAogICAgICAgICRPbGRUaWNrZXRUeXBlUmVsZXZhbnQgPSAxIGlmIGdyZXAgeyAkXyBlcSAkT2xkVGlja2V0VHlwZSB9IEB7JFRpY2tldFR5cGVzfTsKICAgICAgICAkTmV3VGlja2V0VHlwZVJlbGV2YW50ID0gMSBpZiBncmVwIHsgJF8gZXEgJFRpY2tldHtUeXBlfSB9IEB7JFRpY2tldFR5cGVzfTsKICAgICAgICByZXR1cm4gMSBpZiAoICRPbGRUaWNrZXRUeXBlUmVsZXZhbnQgfHwgJycgKSBlcSAoICROZXdUaWNrZXRUeXBlUmVsZXZhbnQgfHwgJycgKTsKICAgIH0KCiAgICAjIHNob3J0Y3V0IGZvciBvdGhlciBldmVudHMgKGNoZWNrIGlmIHRpY2tldCB0eXBlIGlzIGluIHNjb3BlKQogICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFRpY2tldFR5cGVzKSApIHsKICAgICAgICByZXR1cm4gMSBpZiAhJFRpY2tldHtUeXBlfTsKICAgICAgICByZXR1cm4gMSBpZiAhZ3JlcCB7ICRfIGVxICRUaWNrZXR7VHlwZX0gfSBAeyRUaWNrZXRUeXBlc307CiAgICB9CgogICAgIyBjaGVjayBpZiB0aWNrZXQgc3RhdGUgaXMgcmVsZXZhbnQKICAgIG15ICRPbGRUaWNrZXRTdGF0ZVJlbGV2YW50OwogICAgbXkgJE5ld1RpY2tldFN0YXRlUmVsZXZhbnQ7CiAgICBteSBAT3BlblN0YXRlVHlwZXMgPSAoICduZXcnLCAnb3BlbicsICdwZW5kaW5nIHJlbWluZGVyJywgJ3BlbmRpbmcgYXV0bycgKTsKICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0U3RhdGVVcGRhdGUnICkgewogICAgICAgIGlmICggISRQYXJhbXtEYXRhfS0+e09sZFRpY2tldERhdGF9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBUaWNrZXRJRCBpbiBPbGRUaWNrZXREYXRhISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgb25seSBjaGFuZ2VzIG9wZW4tPmNsb3NlIGFuZCBjbG9zZS0+b3BlbiBhcmUgb2YgaW50ZXJlc3QKICAgICAgICAkTmV3VGlja2V0U3RhdGVSZWxldmFudCA9IDEgaWYgZ3JlcCB7ICRfIGVxICRUaWNrZXR7U3RhdGVUeXBlfSB9IEBPcGVuU3RhdGVUeXBlczsKICAgICAgICAkT2xkVGlja2V0U3RhdGVSZWxldmFudCA9IDEgaWYgZ3JlcCB7ICRfIGVxICRQYXJhbXtEYXRhfS0+e09sZFRpY2tldERhdGF9LT57U3RhdGVUeXBlfSB9IEBPcGVuU3RhdGVUeXBlczsKICAgICAgICByZXR1cm4gMSBpZiAoICROZXdUaWNrZXRTdGF0ZVJlbGV2YW50IHx8ICcnICkgZXEgKCAkT2xkVGlja2V0U3RhdGVSZWxldmFudCB8fCAnJyApOwogICAgfQoKICAgICMgc2hvcnRjdXQgZm9yIG90aGVyIGV2ZW50cyAoY2hlY2sgaWYgdGlja2V0IHN0YXRlIGlzIGluIHNjb3BlKQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuIDEgaWYgIWdyZXAgeyAkXyBlcSAkVGlja2V0e1N0YXRlVHlwZX0gfSBAT3BlblN0YXRlVHlwZXM7CiAgICB9CgogICAgIyBzaG9ydGN1dCBmb3IgdGlja2V0IGV2ZW50cyAoY2hlY2sgaWYgdGlja2V0IGhhcyBhbnkgcG90ZW50aWFsbHkgcmVsZXZhbnQgbGlua3MpCiAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFN0YXRlVXBkYXRlJyB8fCAkUGFyYW17RXZlbnR9IGVxICdUaWNrZXRUeXBlVXBkYXRlJyApIHsKICAgICAgICBteSAlTGlua0tleUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rS2V5TGlzdCgKICAgICAgICAgICAgT2JqZWN0MSA9PiAnVGlja2V0JywKICAgICAgICAgICAgS2V5MSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIE9iamVjdDIgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgU3RhdGUgICA9PiAnVmFsaWQnLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gMSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoIFwlTGlua0tleUxpc3QgKTsKICAgIH0KCiAgICAjIHByZXBhcmUgaW5jaWRlbnQgc3RhdGVzIGFuZCByZWxldmFudCBsaW5rIHR5cGVzIHBlciBpbmNpZGVudCBzdGF0ZQogICAgbXkgJEluY2lkZW50U3RhdGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6SW5jaWRlbnRTdGF0ZXMnKTsKICAgIG15ICRMaW5rVHlwZXMgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OkxpbmtUeXBlcycpOwogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJExpbmtUeXBlcykgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIGNvbmZpZ3VyYXRpb24gZm9yICdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6TGlua1R5cGVzJyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgbXkgJUxpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZTsKCiAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgJ0xpbmtBZGQnICkgewogICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXskTGlua1R5cGVzfSApIHsKICAgICAgICAgICAgaWYgKCAkTGlua1R5cGUgZXEgJFBhcmFte0RhdGF9LT57VHlwZX0gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRMaW5rVHlwZXNCeUluY2lkZW50U3RhdGV7ICRMaW5rVHlwZXMtPnskTGlua1R5cGV9IH0gfSwgJExpbmtUeXBlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAxIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rVHlwZXNCeUluY2lkZW50U3RhdGUgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXskTGlua1R5cGVzfSApIHsKICAgICAgICAgICAgcHVzaCBAeyAkTGlua1R5cGVzQnlJbmNpZGVudFN0YXRleyAkTGlua1R5cGVzLT57JExpbmtUeXBlfSB9IH0sICRMaW5rVHlwZTsKICAgICAgICB9CiAgICB9CgogICAgIyBoYW5kbGUgYWRkZWQgb3IgcmVtb3ZlZCBsaW5rcwogICAgaWYgKCAkUGFyYW17RXZlbnR9IGVxICdMaW5rQWRkJyB8fCAkUGFyYW17RXZlbnR9IGVxICdMaW5rRGVsZXRlJyApIHsKICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFte0RhdGF9LT57Q29uZmlnSXRlbUlEfTsKICAgICAgICBteSAkVmVyc2lvbiAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgb3B0aW9uYWw6IGNoZWNrIGlmIENJIGRlcGxveW1lbnQgc3RhdGUgaXMgcmVsZXZhbnQKICAgICAgICBteSAkRGVwbG95bWVudFN0YXRlcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OkRlcGxveW1lbnRTdGF0ZXMnKTsKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkRGVwbG95bWVudFN0YXRlcykgKSB7CiAgICAgICAgICAgIHJldHVybiAxIGlmICFncmVwIHsgJF8gZXEgJFZlcnNpb24tPntEZXBsU3RhdGV9IH0gQHskRGVwbG95bWVudFN0YXRlc307CiAgICAgICAgfQoKICAgICAgICAjIHJhaXNlIGluY2lkZW50IHN0YXRlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnTGlua0FkZCcgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X0NoZWNrUmFpc2VJbmNpZGVudFN0YXRlKAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgICAgICAgICAgICAgID0+ICRWZXJzaW9uLAogICAgICAgICAgICAgICAgSW5jaWRlbnRTdGF0ZXMgICAgICAgICAgID0+ICRJbmNpZGVudFN0YXRlcywKICAgICAgICAgICAgICAgIExpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSA9PiBcJUxpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSwKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGxvd2VyIGluY2lkZW50IHN0YXRlIGlmIG5lY2Vzc2FyeQogICAgICAgIHJldHVybiAkU2VsZi0+X0NoZWNrTG93ZXJJbmNpZGVudFN0YXRlKAogICAgICAgICAgICBWZXJzaW9uICAgICAgICAgICAgICAgICAgPT4gJFZlcnNpb24sCiAgICAgICAgICAgIEluY2lkZW50U3RhdGVzICAgICAgICAgICA9PiAkSW5jaWRlbnRTdGF0ZXMsCiAgICAgICAgICAgIExpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSA9PiBcJUxpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSwKICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICApOwogICAgfQoKICAgICMgaGFuZGxlIHRpY2tldCBjbG9zdXJlL3JlLW9wZW4gYW5kIHJlbGV2YW50L2lycmVsZXZhbnQgdHlwZSBjaGFuZ2UKICAgIGVsc2lmICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0U3RhdGVVcGRhdGUnIHx8ICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFR5cGVVcGRhdGUnICkgewoKICAgICAgICAjIHJlbGV2YW50IHRpY2tldCBzdGF0ZSBhbmQgdHlwZSB1cGRhdGVzIGFyZSBoYW5kbGVkIHRoZSBzYW1lIHdheQogICAgICAgICMgYm90aCBtZWFuIGEgdGlja2V0IGlzIHJlbGV2YW50IGZvciBDSSBpbmNpZGVudCBzdGF0ZSBjaGFuZ2VzIG9yIG5vdAogICAgICAgICMgdGlja2V0IHJlLW9wZW4gb3IgY2hhbmdlIHRvIHJlbGV2YW50IHR5cGUgPSBtaWdodCBoYXZlIHRvIHJhaXNlIGluY2lkZW50IHN0YXRlIG9mIENJcwogICAgICAgICMgdGlja2V0IGNsb3N1cmUgb3IgY2hhbmdlIHRvIGlycmVsZXZhbnQgdHlwZSA9IG1pZ2h0IGhhdmUgdG8gbG93ZXIgaW5jaWRlbnQgc3RhdGUgb2YgQ0lzCiAgICAgICAgbXkgJFJlbGV2YW50Tm93OwogICAgICAgIGlmICgKICAgICAgICAgICAgKCAkUGFyYW17RXZlbnR9IGVxICdUaWNrZXRTdGF0ZVVwZGF0ZScgJiYgJE5ld1RpY2tldFN0YXRlUmVsZXZhbnQgKQogICAgICAgICAgICB8fCAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFR5cGVVcGRhdGUnICYmICROZXdUaWNrZXRUeXBlUmVsZXZhbnQgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkUmVsZXZhbnROb3cgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBsb29wIHRocm91Z2ggYWxsIGxpbmsgdHlwZXMgYW5kIGNoZWNrIGxpbmtzIHRvIHNlZSBpZiB0aGVyZSBhcmUgcG9zc2libHkgYWZmZWN0ZWQgQ0lzCiAgICAgICAgbXkgJERlcGxveW1lbnRTdGF0ZXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpEZXBsb3ltZW50U3RhdGVzJyk7CiAgICAgICAgSU5DSURFTlRTVEFURToKICAgICAgICBmb3IgbXkgJEluY2lkZW50U3RhdGUgKCBAeyRJbmNpZGVudFN0YXRlc30gKSB7CiAgICAgICAgICAgIExJTktUWVBFOgogICAgICAgICAgICBmb3IgbXkgJExpbmtUeXBlICggQHsgJExpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZXskSW5jaWRlbnRTdGF0ZX0gfSApIHsKICAgICAgICAgICAgICAgIG15IEBMaW5rZWRDSXMgPSAkU2VsZi0+X0NoZWNrVGlja2V0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IExJTktUWVBFIGlmICFATGlua2VkQ0lzOwoKICAgICAgICAgICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChATGlua2VkQ0lzKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFZlcnNpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbDogY2hlY2sgaWYgQ0kgZGVwbG95bWVudCBzdGF0ZSBpcyByZWxldmFudAogICAgICAgICAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCREZXBsb3ltZW50U3RhdGVzKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgIWdyZXAgeyAkXyBlcSAkVmVyc2lvbi0+e0RlcGxTdGF0ZX0gfSBAeyREZXBsb3ltZW50U3RhdGVzfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgY3VycmVudCBpbmNpZGVudCBzdGF0ZSB2cyBzdGF0ZSBjYXVzZWQgYnkgbGluawoKICAgICAgICAgICAgICAgICAgICAjIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgaXMgbG93ZXIgdGhhbiBjYXVzZWQgYnkgbGluayAtPiBzZXQKICAgICAgICAgICAgICAgICAgICBpZiAoJFJlbGV2YW50Tm93KSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNob3J0Y3V0OiBub3RoaW5nIHRvIGRvIGlmIENJIGlzIGFscmVhZHkgaW4gaGlnaGVzdCBpbmNpZGVudCBzdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkVmVyc2lvbi0+e0luY2lTdGF0ZX0gZXEgJEluY2lkZW50U3RhdGVzLT5bMF07CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNob3J0Y3V0OiBub3RoaW5nIHRvIGRvIGlmIENJIGlzIGFscmVhZHkgaW4gc2FtZSBpbmNpZGVudCBzdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkVmVyc2lvbi0+e0luY2lTdGF0ZX0gZXEgJEluY2lkZW50U3RhdGU7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIENJIGlzIGluIGhpZ2hlciBpbmNpZGVudCBzdGF0ZSBhbHJlYWR5CiAgICAgICAgICAgICAgICAgICAgICAgIFRNUElOQ0lERU5UU1RBVEU6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkVG1wSW5jaWRlbnRTdGF0ZSAoIEB7JEluY2lkZW50U3RhdGVzfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFsbCBmdXJ0aGVyIGluY2lkZW50IHN0YXRlcyBhcmUgbG93ZXIgdGhhbiBjdXJyZW50IG9uZSAtPiBzZXQgbmV3IHN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IFRNUElOQ0lERU5UU1RBVEUgaWYgJFRtcEluY2lkZW50U3RhdGUgZXEgJEluY2lkZW50U3RhdGU7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJFZlcnNpb24tPntJbmNpU3RhdGV9IGVxICRUbXBJbmNpZGVudFN0YXRlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNldCBuZXcgaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPl9TZXRDSVN0YXR1cygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gICAgICAgPT4gJFZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXRlID0+ICRJbmNpZGVudFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgaXMgc2FtZSBhcyBjYXVzZWQgYnkgbGluayAtPiByZS1jYWxjdWxhdGUKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvcnRjdXQ6IG5vdGhpbmcgdG8gZG8gaWYgQ0kgaXMgYWxyZWFkeSBpbiBsb3dlc3QgaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJFZlcnNpb24tPntJbmNpU3RhdGV9IGVxICRJbmNpZGVudFN0YXRlcy0+Wy0xXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvcnRjdXQ6IG5vdGhpbmcgdG8gZG8gaWYgQ0kgaXMgbm90IGluIHNhbWUgaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJFZlcnNpb24tPntJbmNpU3RhdGV9IG5lICRJbmNpZGVudFN0YXRlOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyByZWNhbGN1bGF0ZSBpbmNpZGVudCBzdGF0ZSBleGFjdGx5CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxmLT5fQ2hlY2tMb3dlckluY2lkZW50U3RhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uICAgICAgICAgICAgICAgICAgPT4gJFZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXRlcyAgICAgICAgICAgPT4gJEluY2lkZW50U3RhdGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlua1R5cGVzQnlJbmNpZGVudFN0YXRlID0+IFwlTGlua1R5cGVzQnlJbmNpZGVudFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyB1bmtub3duL2lycmVsZXZhbnQgZXZlbnQKICAgIGVsc2UgewogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHJldHVybiAxOwp9CgojIFJhdGlvbmFsZToKIyBTdGFydCBhdCBoaWdoZXN0ICh3b3JzdCkgaW5jaWRlbnQgc3RhdGUgYW5kIGxvb3AgZG93biB0byBjdXJyZW50IGluY2lkZW50IHN0YXRlLAojICAgY2hlY2tpbmcgZm9yIGxpbmtzIG9uIGFsbCB0eXBlcyBjb25maWd1cmVkIGZvciB0aGUgY29ycmVzcG9uZGluZyBpbmNpZGVudCBzdGF0ZS4KIyBJZiBhbnkgbGluayBmb3IgYSBoaWdoZXIgaW5jaWRlbnQgc3RhdGUgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgZm91bmQsCiMgICBzZXQgdGhpcyBzdGF0ZSBhbmQgZXhpdC4KIyBEdWUgdG8gdG9wLXRvLWJvdHRvbSBtZXRob2QsIG5vIGhpZ2hlciBpbmNpZGVudCBzdGF0ZSBjYW4gb2NjdXIgbGF0ZXIuCnN1YiBfQ2hlY2tSYWlzZUluY2lkZW50U3RhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFZlcnNpb24gSW5jaWRlbnRTdGF0ZXMgTGlua1R5cGVzQnlJbmNpZGVudFN0YXRlIFRpY2tldElEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbG9vcCB0aHJvdWdoIHRhcmdldCBzdGF0ZXMgYW5kIGNoZWNrIGlmIGl0IG5lZWRzIHRvIGJlIGNoYW5nZWQKICAgIElOQ0lERU5UU1RBVEU6CiAgICBmb3IgbXkgJEluY2lkZW50U3RhdGUgKCBAeyAkUGFyYW17SW5jaWRlbnRTdGF0ZXN9IH0gKSB7CgogICAgICAgICMgQ0kgYWxyZWFkeSBpbiB0YXJnZXQgc3RhdGUgLSBub3RoaW5nIHRvIGRvCiAgICAgICAgcmV0dXJuIDEgaWYgJFBhcmFte1ZlcnNpb259LT57SW5jaVN0YXRlfSBlcSAkSW5jaWRlbnRTdGF0ZTsKCiAgICAgICAgIyBjaGVjayBpZiB3ZSBoYXZlIGxpbmtlZCB0aWNrZXRzIHRoYXQgbGVhZCB0byBpbmNpZGVudCBzdGF0ZQogICAgICAgIExJTktUWVBFOgogICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBAeyAkUGFyYW17TGlua1R5cGVzQnlJbmNpZGVudFN0YXRlfS0+eyRJbmNpZGVudFN0YXRlfSB9ICkgewogICAgICAgICAgICBuZXh0IExJTktUWVBFIGlmICEkU2VsZi0+X0NoZWNrQ29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtWZXJzaW9ufS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBsaW5rZWQgdGlja2V0IC0gc2V0IGluY2lkZW50IHN0YXRlIGFuZCBleGl0CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X1NldENJU3RhdHVzKAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgICA9PiAkUGFyYW17VmVyc2lvbn0sCiAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXRlID0+ICRJbmNpZGVudFN0YXRlLAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKIyBSYXRpb25hbGU6CiMgU2hvcnRjdXQgaWYgQ0kgaXMgYWxyZWR5IGluIGxvd2VzdCAoYmVzdCkgaW5jaWRlbnQgc3RhdGUgPSBjYW4ndCBoYXZlIGNoYW5nZWQgYWZ0ZXIgbGluayBkZWxldGUuCiMgU3RhcnQgYXQgaGlnaGVzdCAod29yc3QpIGluY2lkZW50IHN0YXRlIGFuZCBsb29wIGRvd24gdG8gY3VycmVudCBpbmNpZGVudCBzdGF0ZSwKIyAgIGNoZWNraW5nIGZvciBsaW5rcyBvbiBhbGwgdHlwZXMgY29uZmlndXJlZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgaW5jaWRlbnQgc3RhdGVzLgojIElmIGEgbGluayBmb3IgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgaXMgZm91bmQsIGV4aXQgaW1tZWRpYXRlbHkgKG5vIGNoYW5nZSkuCiMgT3RoZXJ3aXNlIHNldCBpbmNpZGVudCBzdGF0ZSBmb3IgZmlyc3Qgb2NjdXJhbmNlIG9mIGEgbGluaywgdGhlbiBleGl0LgojIElmIG5vIGxpbmsgaXMgZm91bmQsIHNldCB0aGUgbG93ZXN0IHN0YXRlLgojIER1ZSB0byB0b3AtdG8tYm90dG9tIG1ldGhvZCwgZmlyc3QgcmVtZW1iZXJlZCBpbmNpZGVudCBzdGF0ZSBpcyB0aGUgaGlnaGVzdCBwb3NzaWJsZS4Kc3ViIF9DaGVja0xvd2VySW5jaWRlbnRTdGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVmVyc2lvbiBJbmNpZGVudFN0YXRlcyBMaW5rVHlwZXNCeUluY2lkZW50U3RhdGUgVGlja2V0SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzaG9ydGN1dCBmb3IgbG93ZXN0IGxldmVsCiAgICByZXR1cm4gMSBpZiAkUGFyYW17VmVyc2lvbn0tPntJbmNpU3RhdGV9IGVxICRQYXJhbXtJbmNpZGVudFN0YXRlc30tPlstMV07CgogICAgIyBsb29wIHRocm91Z2ggdGFyZ2V0IHN0YXRlcyBhbmQgY2hlY2sgaWYgaXQgbmVlZHMgdG8gYmUgY2hhbmdlZAogICAgbXkgJExvd2VySW5jaWRlbnRTdGF0ZTsKICAgIElOQ0lERU5UU1RBVEU6CiAgICBmb3IgbXkgJEluY2lkZW50U3RhdGUgKCBAeyAkUGFyYW17SW5jaWRlbnRTdGF0ZXN9IH0gKSB7CgogICAgICAgICMgc2tpcCBsZXZlbCBpZiBjdXJyZW50IENJIGluY2lkZW50IHN0YXRlIGlzIG5vdCBvbiB0aGlzIG9yIGFueSBoaWdoZXIgbGV2ZWwKICAgICAgICBuZXh0IElOQ0lERU5UU1RBVEUgaWYgJFBhcmFte1ZlcnNpb259LT57SW5jaVN0YXRlfSBuZSAkSW5jaWRlbnRTdGF0ZSAmJiAhJExvd2VySW5jaWRlbnRTdGF0ZTsKCiAgICAgICAgIyBjaGVjayBpZiB3ZSBoYXZlIGxpbmtlZCB0aWNrZXRzIHRoYXQga2VlcCBpbmNpZGVudCBzdGF0ZQogICAgICAgIExJTktUWVBFOgogICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBAeyAkUGFyYW17TGlua1R5cGVzQnlJbmNpZGVudFN0YXRlfS0+eyRJbmNpZGVudFN0YXRlfSB9ICkgewogICAgICAgICAgICBuZXh0IExJTktUWVBFIGlmICEkU2VsZi0+X0NoZWNrQ29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtWZXJzaW9ufS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBsaW5rZWQgdGlja2V0CgogICAgICAgICAgICAjIGtlZXAgaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgcmV0dXJuIDEgaWYgJFBhcmFte1ZlcnNpb259LT57SW5jaVN0YXRlfSBlcSAkSW5jaWRlbnRTdGF0ZTsKCiAgICAgICAgICAgICMgb3RoZXJ3aXNlIHNldCBuZXcgKGxvd2VyKSBpbmNpZGVudCBzdGF0ZSBhbmQgZXhpdAogICAgICAgICAgICByZXR1cm4gJFNlbGYtPl9TZXRDSVN0YXR1cygKICAgICAgICAgICAgICAgIFZlcnNpb24gICAgICAgPT4gJFBhcmFte1ZlcnNpb259LAogICAgICAgICAgICAgICAgSW5jaWRlbnRTdGF0ZSA9PiAkSW5jaWRlbnRTdGF0ZSwKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgdGhhdCBzdGF0ZSBuZWVkcyB0byBiZSBjaGFuZ2VkICg9IGN1cnJlbnQgbGV2ZWwgaXNuJ1QganVzdGlmaWVkIGJ5IGxpbmtzIGFueW1vcmUpCiAgICAgICAgJExvd2VySW5jaWRlbnRTdGF0ZSA9IDE7CiAgICB9CgogICAgIyBubyByZWxldmFudCBsaW5rcyBoYXZlIGJlZW4gZm91bmQsIGJ1dCBDSSB3YXNuJ3QgaW4gbG93ZXN0IGluY2lkZW50IHN0YXRlIGJlZm9yZSAtIHNldCBpdCBub3cgYW5kIGV4aXQKICAgIHJldHVybiAkU2VsZi0+X1NldENJU3RhdHVzKAogICAgICAgIFZlcnNpb24gICAgICAgPT4gJFBhcmFte1ZlcnNpb259LAogICAgICAgIEluY2lkZW50U3RhdGUgPT4gJFBhcmFte0luY2lkZW50U3RhdGVzfS0+Wy0xXSwKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICApOwp9CgojIHNldCBDSSB0byBhIHNwZWNpZmllZCBpbmNpZGVudCBzdGF0ZSBhbmQgbG9nIGNoYW5nZSBpbiBjb3JyZXNwb25kaW5nIHRpY2tldApzdWIgX1NldENJU3RhdHVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhWZXJzaW9uIEluY2lkZW50U3RhdGUgVGlja2V0SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKICAgIG15ICRJbmNpZGVudFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICApOwogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkSW5jaWRlbnRTdGF0ZUxpc3QpOwoKICAgICMgY2hlY2sgaWYgaW5jaWRlbnQgc3RhdGUgaXMgdmFsaWQKICAgIG15ICVSZXZlcnNlSW5jaWRlbnRTdGF0ZUxpc3QgPSByZXZlcnNlICV7JEluY2lkZW50U3RhdGVMaXN0fTsKICAgIGlmICggISRSZXZlcnNlSW5jaWRlbnRTdGF0ZUxpc3R7ICRQYXJhbXtJbmNpZGVudFN0YXRlfSB9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiSGF2ZSBpbnZhbGlkIGluY2lkZW50IHN0YXRlICckUGFyYW17SW5jaWRlbnRTdGF0ZX0nISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBhZGQgYSBuZXcgdmVyc2lvbiB3aXRoIHRoZSBuZXcgaW5jaWRlbnQgc3RhdGUKICAgIG15ICRWZXJzaW9uSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+VmVyc2lvbkFkZCgKICAgICAgICAleyAkUGFyYW17VmVyc2lvbn0gfSwKICAgICAgICBJbmNpU3RhdGVJRCA9PiAkUmV2ZXJzZUluY2lkZW50U3RhdGVMaXN0eyAkUGFyYW17SW5jaWRlbnRTdGF0ZX0gfSwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKICAgIHJldHVybiBpZiAhJFZlcnNpb25JRDsKCiAgICAjIGxvZyBjaGFuZ2UgaW4gdGlja2V0CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPkhpc3RvcnlBZGQoCiAgICAgICAgVGlja2V0SUQgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdNaXNjJywKICAgICAgICBOYW1lICAgICAgICAgPT4gIlVwZGF0ZWQgaW5jaWRlbnQgc3RhdGUgb2YgY29uZmlnIGl0ZW0gJyRQYXJhbXtWZXJzaW9ufS0+e051bWJlcn0nIHRvICckUGFyYW17SW5jaWRlbnRTdGF0ZX0nLiIsCiAgICAgICAgQ3JlYXRlVXNlcklEID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9CgojIGNoZWNrIGlmIHJlbGV2YW50IENJcyBhcmUgbGlua2VkIHRvIGEgdGlja2V0CnN1YiBfQ2hlY2tUaWNrZXRMaW5rcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVGlja2V0SUQgVHlwZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsaW5rIHR5cGUgbG9va3VwCiAgICBteSAkTGlua1R5cGVMb29rdXAgPSAkU2VsZi0+X0xpbmtUeXBlTG9va3VwR2V0KCk7CgogICAgbXkgJUxpbmtLZXlMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0tleUxpc3QoCiAgICAgICAgT2JqZWN0MSAgID0+ICdUaWNrZXQnLAogICAgICAgIEtleTEgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgIE9iamVjdDIgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgICAgIFR5cGUgICAgICA9PiAkTGlua1R5cGVMb29rdXAtPnsgJFBhcmFte1R5cGV9IH0tPntOYW1lfSwKICAgICAgICBEaXJlY3Rpb24gPT4gJExpbmtUeXBlTG9va3VwLT57ICRQYXJhbXtUeXBlfSB9LT57RGlyZWN0aW9ufS0+e1RpY2tldH0sCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rS2V5TGlzdCApOwogICAgcmV0dXJuICggc29ydCBrZXlzICVMaW5rS2V5TGlzdCApOwp9CgojIGNoZWNrIGlmIHJlbGV2YW50IG9wZW4gdGlja2V0cyBhcmUgbGlua2VkIHRvIGEgQ0kKc3ViIF9DaGVja0NvbmZpZ0l0ZW1MaW5rcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIFR5cGUpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbGluayB0eXBlIGxvb2t1cAogICAgbXkgJExpbmtUeXBlTG9va3VwID0gJFNlbGYtPl9MaW5rVHlwZUxvb2t1cEdldCgpOwoKICAgIG15ICVMaW5rS2V5TGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtLZXlMaXN0KAogICAgICAgIE9iamVjdDEgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleTEgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBPYmplY3QyICAgPT4gJ1RpY2tldCcsCiAgICAgICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVHlwZSAgICAgID0+ICRMaW5rVHlwZUxvb2t1cC0+eyAkUGFyYW17VHlwZX0gfS0+e05hbWV9LAogICAgICAgIERpcmVjdGlvbiA9PiAkTGlua1R5cGVMb29rdXAtPnsgJFBhcmFte1R5cGV9IH0tPntEaXJlY3Rpb259LT57SVRTTUNvbmZpZ0l0ZW19LAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoIFwlTGlua0tleUxpc3QgKTsKCiAgICAjIGxpc3Qgb2YgcmVsZXZhbnQgc3RhdGUgdHlwZXMKICAgIG15IEBPcGVuU3RhdGVUeXBlcyA9ICggJ25ldycsICdvcGVuJywgJ3BlbmRpbmcgcmVtaW5kZXInLCAncGVuZGluZyBhdXRvJyApOwoKICAgICMgdXNlIHRpY2tldCB0eXBlIGNoZWNrPwogICAgbXkgJFRpY2tldFR5cGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6VGlja2V0VHlwZXMnKTsKICAgIG15ICRDaGVja1RpY2tldFR5cGVzOwogICAgJENoZWNrVGlja2V0VHlwZXMgPSAxIGlmIElzQXJyYXlSZWZXaXRoRGF0YSgkVGlja2V0VHlwZXMpOwoKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBUSUNLRVRJRDoKICAgIGZvciBteSAkVGlja2V0SUQgKCBzb3J0IGtleXMgJUxpbmtLZXlMaXN0ICkgewogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwogICAgICAgIG5leHQgVElDS0VUSUQgaWYgIWdyZXAgeyAkXyBlcSAkVGlja2V0e1N0YXRlVHlwZX0gfSBAT3BlblN0YXRlVHlwZXM7CiAgICAgICAgaWYgKCRDaGVja1RpY2tldFR5cGVzKSB7CiAgICAgICAgICAgIG5leHQgVElDS0VUSUQgaWYgISRUaWNrZXR7VHlwZX07CiAgICAgICAgICAgIG5leHQgVElDS0VUSUQgaWYgIWdyZXAgeyAkXyBlcSAkVGlja2V0e1R5cGV9IH0gQHskVGlja2V0VHlwZXN9OwogICAgICAgIH0KICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICByZXR1cm47Cn0KCiMgY29tcGlsZSBsaXN0IG9mIGludGVybmFsIGxpbmsgdHlwZSBuYW1lcyBhbmQgZGlyZWN0aW9ucyB0byB1c2UgZm9yIExpbmtLZXlMaXN0CnN1YiBfTGlua1R5cGVMb29rdXBHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGlmIHdlIGhhdmUgZ2VuZXJhdGVkIGxvb2t1cCBiZWZvcmUKICAgIHJldHVybiAkU2VsZi0+e0xpbmtUeXBlTG9va3VwfSBpZiAkU2VsZi0+e0xpbmtUeXBlTG9va3VwfTsKCiAgICBteSAlTGlua1R5cGVMb29rdXA7CiAgICBteSAlVHlwZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5UeXBlTGlzdCgpOwogICAgZm9yIG15ICRUeXBlTmFtZUludGVybmFsICggc29ydCBrZXlzICVUeXBlTGlzdCApIHsKICAgICAgICBteSAkU291cmNlTmFtZSA9ICRUeXBlTGlzdHskVHlwZU5hbWVJbnRlcm5hbH0tPntTb3VyY2VOYW1lfTsKICAgICAgICBteSAkVGFyZ2V0TmFtZSA9ICRUeXBlTGlzdHskVHlwZU5hbWVJbnRlcm5hbH0tPntUYXJnZXROYW1lfTsKICAgICAgICAkTGlua1R5cGVMb29rdXB7JFNvdXJjZU5hbWV9ID0gewogICAgICAgICAgICBOYW1lICAgICAgPT4gJFR5cGVOYW1lSW50ZXJuYWwsCiAgICAgICAgICAgIERpcmVjdGlvbiA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiAkU291cmNlTmFtZSBlcSAkVGFyZ2V0TmFtZSA/ICdCb3RoJyA6ICdUYXJnZXQnLAogICAgICAgICAgICAgICAgVGlja2V0ICAgICAgICAgPT4gJFNvdXJjZU5hbWUgZXEgJFRhcmdldE5hbWUgPyAnQm90aCcgOiAnU291cmNlJywKICAgICAgICAgICAgfSwKICAgICAgICB9OwogICAgICAgICRMaW5rVHlwZUxvb2t1cHskVGFyZ2V0TmFtZX0gPSB7CiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkVHlwZU5hbWVJbnRlcm5hbCwKICAgICAgICAgICAgRGlyZWN0aW9uID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+ICRTb3VyY2VOYW1lIGVxICRUYXJnZXROYW1lID8gJ0JvdGgnIDogJ1NvdXJjZScsCiAgICAgICAgICAgICAgICBUaWNrZXQgICAgICAgICA9PiAkU291cmNlTmFtZSBlcSAkVGFyZ2V0TmFtZSA/ICdCb3RoJyA6ICdUYXJnZXQnLAogICAgICAgICAgICB9LAogICAgICAgIH07CiAgICB9CgogICAgIyByZW1lbWJlciByZXN1bHQKICAgICRTZWxmLT57TGlua1R5cGVMb29rdXB9ID0gXCVMaW5rVHlwZUxvb2t1cDsKCiAgICByZXR1cm4gXCVMaW5rVHlwZUxvb2t1cDsKfQoKMTsK</File>
        <File Location="Kernel/System/UnitTest/ITSMConfigItemHelper.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA0ZGFkZTgxZTdlMDQ0MzNjYjJhZWQzNmFmMGM4NzI3ZDgyMmExYzYxIC0gS2VybmVsL1N5c3RlbS9Vbml0VGVzdC9IZWxwZXIucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OklUU01Db25maWdJdGVtSGVscGVyOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKdXNlIFRlc3QyOjpBUEkgcXcvY29udGV4dCBydW5fc3VidGVzdC87CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OllBTUwnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXIgLSB1bml0IHRlc3QgaGVscGVyIGZ1bmN0aW9ucyByZWxhdGVkIHRvIENNREIKCj1oZWFkMiBERVNDUklQVElPTgoKVG8gYmUgdXNlZCBpbiB0ZXN0IHNjcmlwdHMuIENsZWFudXAgd2lsbCBiZSB0cmlnZ2VyZWQgaW4gdGhlIEVORCBibG9jay4KCj1oZWFkMSBNRVRIT0RTCgo9aGVhZDIgbmV3KCkKCmNvbnN0cnVjdCBhIGhlbHBlciBvYmplY3QuCgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KCiAgICAjIERvIG5vdCBjYWxsIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXItPm5ldygpLAogICAgIyBpbnN0ZWFkIHBhc3MgcGFyYW1zIHZpYSB0aGUgT2JqZWN0TWFuYWdlci4KICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicgPT4gewogICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwgICAgIyBydW5zIHRoZSB0ZXN0IGluIGEgdHJhbnNhY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFuZCByb2xsIGl0IGJhY2sgaW4gdGhlIGRlc3RydWN0b3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTk9URTogUm9sbGJhY2sgZG9lcyBub3Qgd29yayBmb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hhbmdlcyBpbiB0aGUgZGF0YWJhc2UgbGF5b3V0LiBJZiB5b3UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2FudCB0byBkbyB0aGlzIGluIHlvdXIgdGVzdHMsIHlvdSBjYW5ub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdXNlIHRoaXMgb3B0aW9uIGFuZCBtdXN0IGhhbmRsZSB0aGUgcm9sbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgeW91cnNlbGYuCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKClZhbGlkIHBhcmFtZXRlcnMgYXJlOgoKPW92ZXIgNAoKPWl0ZW0gU2tpcFNTTFZlcmlmeQoKVW5zZXQgQzwkRU5We1BFUkxfTFdQX1NTTF9WRVJJRllfSE9TVE5BTUV9PiB3aGlsZSB0aGlzIGluc3RhbmNlIGV4aXN0cy4KCj1pdGVtIFVzZVRtcEFydGljbGVEaXIKCj1pdGVtIFJlc3RvcmVEYXRhYmFzZQoKPWl0ZW0gRGlzYWJsZUFzeW5jQ2FsbHMKCj1iYWNrCgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIGZpbmQgb3V0IHdoZXRoZXIgbG9hZGVyIGZpbGVzIGFyZSBzdG9yZWQgaW4gUzMgb3IgaW4gdGhlIGZpbGUgc3lzdGVtCiAgICAkU2VsZi0+e1MzQWN0aXZlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU3RvcmFnZTo6UzM6OkFjdGl2ZScpID8gMSA6IDA7CgogICAgIyBSZW1vdmUgYW55IGxlZnRvdmVyIGN1c3RvbSBmaWxlcyBmcm9tIGFib3J0ZWQgcHJldmlvdXMgcnVucy4KICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyktPkN1c3RvbUZpbGVDbGVhbnVwKCk7CgogICAgIyBzZXQgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gc2tpcCBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGlmIG5lZWRlZAogICAgaWYgKCAkUGFyYW17U2tpcFNTTFZlcmlmeX0gKSB7CgogICAgICAgICMgcmVtZW1iZXIgb3JpZ2luYWwgdmFsdWUsIHNvIHRoYXQgaXQgY2FuIGJlIHJlc2V0IGluIERFU1RST1koKQogICAgICAgICRTZWxmLT57UEVSTF9MV1BfU1NMX1ZFUklGWV9IT1NUTkFNRX0gPSAkRU5We1BFUkxfTFdQX1NTTF9WRVJJRllfSE9TVE5BTUV9OwoKICAgICAgICAjIHNldCBlbnZpcm9ubWVudCB2YWx1ZSB0byAwCiAgICAgICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSA9IDA7ICAgICMjIG5vIGNyaXRpYyBxdyhWYXJpYWJsZXM6OlJlcXVpcmVMb2NhbGl6ZWRQdW5jdHVhdGlvblZhcnMpCgogICAgICAgICRTZWxmLT57UmVzdG9yZVNTTFZlcmlmeX0gPSAxOwogICAgfQoKICAgICMgc3dpdGNoIGFydGljbGUgZGlyIHRvIGEgdGVtcG9yYXJ5IG9uZSB0byBhdm9pZCBjb2xsaXNpb25zCiAgICBpZiAoICRQYXJhbXtVc2VUbXBBcnRpY2xlRGlyfSApIHsKICAgICAgICAkU2VsZi0+VXNlVG1wQXJ0aWNsZURpcigpOwogICAgfQoKICAgIGlmICggJFBhcmFte1Jlc3RvcmVEYXRhYmFzZX0gKSB7CiAgICAgICAgJFNlbGYtPntSZXN0b3JlRGF0YWJhc2V9ID0gMTsKICAgICAgICAkU2VsZi0+QmVnaW5Xb3JrKCk7CiAgICB9CgogICAgaWYgKCAkUGFyYW17RGlzYWJsZUFzeW5jQ2FsbHN9ICkgewogICAgICAgICRTZWxmLT5EaXNhYmxlQXN5bmNDYWxscygpOwogICAgfQoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIFRlc3RDb25maWdJdGVtQ2xhc3NDcmVhdGUoKQoKY3JlYXRlcyBhIHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MgdGhhdCBjYW4gYmUgdXNlZCBpbiB0ZXN0cy4gUmV0dXJucwp0aGUgY2xhc3MgaWQgb2YgdGhlIG5ldyBjb25maWcgaXRlbSBjbGFzcy4KCiAgICBteSAkVGVzdENJQ2xhc3NOYW1lID0gJEhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DbGFzc0NyZWF0ZSgKICAgICAgICBOYW1lICAgICAgICAgICAgICAgID0+ICdTb21lQ2xhc3NOYW1lJywgICAgICMgb3B0aW9uYWwsIHJhbmRvbWx5IGdlbmVyYXRlZCBpZiBub3QgZ2l2ZW4KICAgICAgICBWZXJzaW9uU3RyaW5nTW9kdWxlID0+ICwgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwsIGRlZmF1bHQgaXMgJ0luY3JlbWVudGFsJwogICAgICAgIFZlcnNpb25UcmlnZ2VyICAgICAgPT4gLCAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgZGVmYXVsdCBpcyAnJwogICAgICAgIER5bmFtaWNGaWVsZHMgICAgICAgPT4gLCAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgICAgIERlZmluaXRpb24gICAgICAgICAgPT4gLCAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKCj1jdXQKCnN1YiBUZXN0Q29uZmlnSXRlbUNsYXNzQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbnRleHQgPSBjb250ZXh0KCk7CgogICAgIyBjcmVhdGUgcmFuZG9tIHN1ZmZpeAogICAgbXkgJFRlc3RDbGFzc0lEOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBHZXQgY29uZmlnIGl0ZW0gZ3JvdXAgaWQKICAgIG15ICRDb25maWdJdGVtR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICBHcm91cCAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgYmFpbF9vdXQoIkdvdCBubyBncm91cCBpZCBmb3IgZ3JvdXAgbmFtZSAnaXRzbS1jb25maWdpdGVtJyIpIHVubGVzcyAkQ29uZmlnSXRlbUdyb3VwSUQ7CgogICAgbXkgJFZlcnNpb25TdHJpbmdNb2R1bGUgPSBbKCRQYXJhbXtWZXJzaW9uU3RyaW5nTW9kdWxlfSA/ICRQYXJhbXtWZXJzaW9uU3RyaW5nTW9kdWxlfSA6ICdJbmNyZW1lbnRhbCcpXTsKICAgIG15ICRDb2RlID0gc3ViIHsKCiAgICAgICAgQ09VTlQ6CiAgICAgICAgZm9yICggMSAuLiAxMCApIHsKCiAgICAgICAgICAgICMgZ2VuZXJhdGUgYSByYW5kb20gbmFtZQogICAgICAgICAgICBteSAkVGVzdENsYXNzTmFtZSA9ICRQYXJhbXtOYW1lfSB8fCAoJ1VuaXRUZXN0JyAuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyktPkdldFJhbmRvbUlEKCkpOwoKICAgICAgICAgICAgIyBhZGQgYm90aCB1bml0dGVzdCBjb25maWcgaXRlbSBjbGFzc2VzCiAgICAgICAgICAgICRUZXN0Q2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICAgICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJFRlc3RDbGFzc05hbWUsCiAgICAgICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRUZXN0Q2xhc3NJRCApIHsKCiAgICAgICAgICAgICAgICAjIFNldCBwZXJtaXNzaW9uLgogICAgICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkVGVzdENsYXNzSUQsCiAgICAgICAgICAgICAgICAgICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gWyRDb25maWdJdGVtR3JvdXBJRF0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbm90ZSgiU2V0IGNvbmZpZyBpdGVtIGNsYXNzIFBlcm1pc3Npb24gdG8gaXRzbS1jb25maWdpdGVtIik7CgogICAgICAgICAgICAgICAgIyBzZXQgdmVyc2lvbiBzdHJpbmcgbW9kdWxlCiAgICAgICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkVmVyc2lvblN0cmluZ01vZHVsZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBub3RlKCJTZXQgY29uZmlnIGl0ZW0gY2xhc3MgVmVyc2lvblN0cmluZ01vZHVsZSB0byBJbmNyZW1lbnRhbCIpOwoKICAgICAgICAgICAgICAgICMgc2V0IGNhdGVnb3J5CiAgICAgICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBLZXkgICAgPT4gJ0NhdGVnb3JpZXMnLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICA9PiBbJ0RlZmF1bHQnXSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBub3RlKCJTZXQgY29uZmlnIGl0ZW0gY2xhc3MgY2F0ZWdvcmllcyB0byBEZWZhdWx0Iik7CgogICAgICAgICAgICAgICAgIyBTZXQgdmVyc2lvbiB0cmlnZ2Vycy4KICAgICAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJFRlc3RDbGFzc0lELAogICAgICAgICAgICAgICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgICAgICAgICAgICAgIFZhbHVlICA9PiBbICdOYW1lJywgJ0RlcGxTdGF0ZUlEJywgJ0luY2lTdGF0ZUlEJyBdLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgICAgICAgICAgICAgbXkgJFlBTUxEZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiBldmFsICRQYXJhbXtEZWZpbml0aW9ufSwgICAgIyMgbm8gY3JpdGljIHF3KEJ1aWx0aW5GdW5jdGlvbnM6OlByb2hpYml0U3RyaW5neUV2YWwpCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGEgZGVmaW5pdGlvbiB0byB0aGUgY2xhc3MKICAgICAgICAgICAgICAgIG15ICRSZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICRZQU1MRGVmaW5pdGlvbiwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYmFpbF9vdXQoJ0NvdWxkIG5vdCBhZGQgZGVmaW5pdGlvbiBmb3IgdGVzdCBjb25maWcgaXRlbSBjbGFzcycpIHVubGVzcyAkUmVzdWx0LT57U3VjY2Vzc307CgogICAgICAgICAgICAgICAgbGFzdCBDT1VOVDsKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgICAgIGJhaWxfb3V0KCdDb3VsZCBub3QgY3JlYXRlIHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MnKSB1bmxlc3MgJFRlc3RDbGFzc0lEOwogICAgICAgIHBhc3MoIkNyZWF0ZWQgdGVzdCBjb25maWcgaXRlbSBjbGFzcyAkVGVzdENsYXNzSUQiKTsKCiAgICAgICAgIyBSZW1lbWJlciBVc2VySUQgb2YgdGhlIHRlc3QgdXNlciB0byBsYXRlciBzZXQgaXQgdG8gaW52YWxpZAogICAgICAgICMgICBpbiB0aGUgZGVzdHJ1Y3Rvci4KICAgICAgICAkU2VsZi0+e1Rlc3RDb25maWdJdGVtQ2xhc3Nlc30gfHw9IFtdOwogICAgICAgIHB1c2goIEB7ICRTZWxmLT57VGVzdENvbmZpZ0l0ZW1DbGFzc2VzfSB9LCAkVGVzdENsYXNzSUQgKTsKICAgIH07CgogICAgcnVuX3N1YnRlc3QoCiAgICAgICAgJ1Rlc3RDb25maWdJdGVtQ2xhc3MnLAogICAgICAgICRDb2RlLAogICAgICAgIHsKICAgICAgICAgICAgYnVmZmVyZWQgICAgICA9PiAxLAogICAgICAgICAgICBpbmhlcml0X3RyYWNlID0+IDEKICAgICAgICB9CiAgICApOwoKICAgICRDb250ZXh0LT5yZWxlYXNlKCk7CgogICAgcmV0dXJuICRUZXN0Q2xhc3NJRDsKfQoKc3ViIFRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17SGVscGVyT2JqZWN0fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSGVscGVyT2JqZWN0IScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDb250ZXh0ID0gY29udGV4dCgpOwoKICAgIG15ICRIb21lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJyk7CgogICAgbXkgJE1haW5PYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKICAgIG15ICRZQU1MT2JqZWN0ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgogICAgIyBwcmVsaW1pbmFyeSBjcmVhdGUgbmVlZGVkIG5hbWVzcGFjZXMgdG8gbm90IGludGVyZmVyZSB3aXRoIHN5c2NvbmZpZyBhZnRlcndhcmRzCiAgICAkUGFyYW17SGVscGVyT2JqZWN0fS0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgIEtleSAgID0+ICdEeW5hbWljRmllbGQ6Ok5hbWVzcGFjZXMnLAogICAgICAgIFZhbHVlID0+IFsKICAgICAgICAgICAgJ0NvbXB1dGVyJywKICAgICAgICAgICAgJ0hhcmR3YXJlJywKICAgICAgICAgICAgJ0xvY2F0aW9uJywKICAgICAgICAgICAgJ05ldHdvcmsnLAogICAgICAgICAgICAnU29mdHdhcmUnLAogICAgICAgIF0sCiAgICApOwoKICAgICMgVE9ETyBpbXBvcnQgY2xhc3NlcyBjb21iaW5lZCBmcm9tIG9uZSB5YW1sIGZpbGUgYXMgYXJyYXkgb2YgY2xhc3NlcwogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgTG9jYXRpb24gPT4gIiRIb21lL3NjcmlwdHMvdGVzdC9zYW1wbGUvSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50L0xlZ2FjeUNsYXNzZXMueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG15ICREZWZpbml0aW9uUmF3ID0gJFlBTUxPYmplY3QtPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkeyRDb250ZW50fSwKICAgICk7CgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNsYXNzSW1wb3J0KAogICAgICAgIENvbnRlbnQgPT4gJERlZmluaXRpb25SYXcsCiAgICApOwoKICAgICRDb250ZXh0LT5yZWxlYXNlKCk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="doc/itsm-configuration-management-database.dia" Permission="660" Encode="Base64">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</File>
        <File Location="doc/itsm-configuration-management-database.png" Permission="660" Encode="Base64">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b8uWLXFxcT179pS+NpmA3adPn0GDBm3dutWCbdBqtRasDR2OlUJLBoNBEARSlgAAkC1atEgUxZqamuTk5MDAQFs3B4ANcHMMwPJ+/PHHqVOnNmuTadOmbdu2zSJ7r6mp+cc//vH+++9bpDZ0UNKAOCcnC4/7JrQEAAAAmODmGLBzJoPR5K/79++Pjo52dXXt2rWr/DoPg8GwcOHCbt26+fr6PvfccxUVFfJWK1asCA8Pl3rU9W5r7OTJk8OGDau709ra2pkzZ3bp0iUoKGjZsmXGm9x33331jupvlpqams8++yw0NPS1116bPn16K2tDh2alrCUpBY/QEgAAACBjGm/AQT3zzDOrVq165JFHbt269fe///35558XBOGTTz756aefDhw44OPj89prr82fP/+jjz6S1v/555+PHTsWEhLS0LbG8vPzg4OD6+508eLFGRkZ586dE0Xx2WefNV4UEhKSm5vb4sOprq5evXp1YmJidXW1VqudNm1aVFRUi2uDHSBrqRF5eXlMbQYAxry9vbt06WLrVgBAR0VoCXBQTk5Oubm5BQUFERERcuZRUlLSDz/80K1bN0EQli9fPmTIEDm0tHLlSimu1NC2xhqaXOnrr7/etm1baGioIAiffvpp//79LXIsJ0+efOSRRzQajdzt37Fjh6+vr7S0qqqqurraIjsC7IOvr685r6AGAAdRXV39l7/85ZNPPrF1QwCgoyK0BDioH3744f3331+wYIGvr+/KlSvHjx8vCEJWVlafPn3kdYxTMyIiIhrf1lhwcHBubm6PHj1MynNycuRkIpOlubm59SY6mWPQoEE7dux45513fvnlF51Op1AoZsyY8corr0hLNRrN119/3cjmHh4ezs7OLds12idRFEtKSgRBkCOMllJSUiKKopeXl8XzodrM+++/37VrVzPfQg0AjmDRokUajcbWrQCADqyj3hkDMFPnzp0rKyvd3NwEQcjPz5fLo6Ojk5OTRVFMSUl57rnn8vLyBEGIiIjYtWtX165d69ZjPGdTvdsaGzRo0OHDh+uGlkJDQ69evdq3b19BEK5cuWK86PDhw7GxsS0+zJiYmF27dv3rX/965513du3alZSUtGDBAk9PT0EQoqKihgwZ0uKa0RHV1tZmZWUplcru3btbtubMzExRFLt27dpxw5HMcA8AkCUnJyckJHh4eNx7770H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Y8cmTZrEFv78889Go7GsrGzq1KncLtzWFwqFmzdvvnXrVkdHx1dffdVnXslT/FKp9ODBgwaD4ccff/zVr37ldGtXrlzxfrkln56zp/sCGDWcdqv0tPuk1WrNycmZMmXK5MmTX3/9dXZeKne0juux97suetpNklTr6OhYt25dWFhYdnY2N1ovRyw6def00u2ul5765dmdk6Kob775xul+fW2fVVhYuGjRoj5vzWw2k7wSRVFz587ljjydP3/+vn37+mwBxo6xnlpqaWlpampqa2vr6upis0gCgYBkkZRKJckiJSYmJiYmxsfHR0dHK5XKsLCw4OBgrLcNAAAAAADgJXb3yZs3b0qlUnb3yTfffDM2NraqqurGjRuxsbHsZCtuktf1mOy6SIb+kXLSoGvum+wmabFYamtr58+fz6ZaSJ0VK1akpKRotdrHHnuMG603CXRSbc6cORUVFeRlRUXFQw89xF6Yl5dXVVXV0dGRk5OzfPly/n49PR+ivLy8qqqKe7++ts86derUvffeyy0JCQkhCSlu6qqurs7TXU+dOtXvS93BiDaatzu1WCw6nY6iqNjYWE91dDqd2WwW/5JQKBzCMAEAAIaOSCR6+umn9+/fH+hA/E8ulxsMBrvdHuhAAuDZZ59NTk7OysoKdCAwAhw6dOjIkSPHjx8PdCDg3qRJk44cOTJt2rT+XR4dHX3hwoWAbBbEMIxAIDAYDFKplLtbJUF2q9RoNOzuk1zR0dHXr18fN24cRVHt7e333XcfO42OOzvV12NWREQEN00TFRXV0tLC1u/u7h7gSianTp3avXv36dOnKYpauHDh66+/vnDhQspl18vz589z43Tt19PzIfWtViuZNMPeo6/ts+RyuVardXv2zp07EydOJAPHnB4m92VXV9f48eM7Ojp8elCDbcmSJc8880xGRkagAxmLRvC4G5vN1tvby7N7K03TRqOxt7eXp5GoqKi4uDi1Ws2ORUJeCQAAAMB7arWadqFWqxEPwJil1WqdJoGS/St5dp/sc8RDP1brZyfWJScnc2eqsnklYuAr5C5atKi3t/f8+fPnz583mUwkr0RRVEZGxrx583766aeOjo7PPvvM6SrXfvl353RdjMXX9lk8T3v8+PE8b7G5n9+M4kEq0A8jILXkcDjY3dlaWlq0Wu3PP/9cU1Nz69at+vp6T4u0URQlEonUajXPkCUAAAAAGKDm5mbGhetiT2M2HgBgedp9cs2aNYWFheR/6759+55++mn2ErKLYmNj4yuvvOJNF37cTdKn3SHfeuutLVu2bNmy5a233mILeXa9dMvX3Tl9bZ81YcIE7rCylJSULVu2kA3QS0tLxWIxKQ8JCWEn+l2+fDk8PJx9gPX19VjDG7iGUWqJYRir1Wo0Gjs7O1tbWxsbG+vq6m7evFlbW8tdV9toNFqtVoZhyERQnqXyaZoODw8PCQkZyrsAAAAAAAAAymW3yvz8/I6ODpVKdf/99584cYLdffKdd97R6XTx8fHx8fFtbW3vvPMOe0lJScmqVauWLVv2/PPPU5z9Ft1+pe7uuqhQKIqKiri7Sep0upSUFKVSuXjx4h07dpBy9lqnZb8Ju93u/cCc+fPnOxwOhmEeffRRtpDseqlUKnNyctasWeMas1O/np6Pp/v1tX3WokWLrl+/zr4sLS29fft2cnIyTdOZmZnsbp6HDh16+OGHaZqOiop64oknPv/8czbrdP369cWLF3v5cGAsCPxaS0ajsbW11Waz8SyOIBQKxS6wOxsAAICvsNbSqIS1lsB7WGtpmBsday0Nfe/gkxs3brz//vt79+7tdwsvvvjiq6++OtwGLmGtpQAa9OxMb2+vxWIJDQ1lE5xOaJo2m83ssWsKSSwW8wxNAgAAAAAAAAAvTZ48mSya3m9KpXK45ZUgsPyQWiJz0zyd1ev1RqNRrVZ7Si0FBQVFR0djazYAABi5urq69Hp9aGio08h/AAAAgGFo27ZtA7n8z3/+s78igdHBh9SSw+GwWq02m81qtXIPBAJBQkKCp6tCQkJomuaZvCYQCMLCwnyLGgAAYDghWwKzO9EAwCBxu634kHVNYUckAAAAd9xkfKx3kfWP2GNPv0rJcmWeBi4plUp/xgsAADD8kJG5PJv1AgwxjUbT2Ng4wEaMRmNoaKiXlcPCwjzt2+uvdigfMzs+9dsn/nH6LH89BwAAgBHkX6ml1tZWNqPEsyOjQCAQiURkCW3uV6yFBAAAYxlJLdlsNofDIRAMo91XYcxqamrivjSZTJs2bfrLX/4iEAjy8vK2b99+48YN6u5InPb29ldfffWzzz7793//d7IhkU6nS0tL+/7771Uq1VNPPbVr1y42J/LSSy+dOnWqvr5+PB9PXgAAIABJREFU7ty5ubm5jzzyCEVRSqXSYDCwfxCyCSCedtzy1A5FUWVlZUuWLOEWkmrvvffeli1bvvrqq59++umVV1756KOP0tPT+fslu4lfunSpz8fY09Pz4osvHj16dNKkSR9//DH31KA+B4CR6/bt29ihGwLFaDTabLZARzFG/Su1ZDAYuJ+1CoVCkUhEMkfcFBLWQgIAAHAlFAqFQiEZ6hsUFBTocACc5ebmWiyWq1evymSykydP6vV6Uk5G4qxYsWLNmjV79uy5fPkyKc/Ozs7Pz587d67ZbD59+nR2dja7kVBeXl5BQYHVaj137tzy5cvJCB29Xu92qhpPO255aoeiqLS0NKdxQ+Sl3W7fv3//kiVL1q5du3///szMTIvFwt+v90OfNm3apNFo9Hp9V1dXYWEh99SgPgeAkYh8599///2BDgTGtGnTpv3ud78LdBRj0b9++XV2djIMwyaS8IkrAACAT+rq6kwmk0ajkclkgY6Fj0gkevrpp/fv3x/oQPxPLpcbDAa73R7oQALg2WefTU5OzsrKio2NbWho4J6KiYnRarUajebatWtulymgabq7u9vp+zYiIoJNP1EUFRUV1dLSQlFUdXX1xo0bKyoqzGbz9OnTz58/zx1D5JpS8dQOD/7VlJzOsi+dDvrRr1tKpbKmpoY8t7a2tsjISNLLEDyHwXPo0KEjR44cP348UAEAv0mTJh05cmTatGn9uzw6OvrChQtJSUn+jcobDMMIBAKDwSCVSoe+dwCKopYsWfLMM89kZGQEOpCx6F8pJLlcPm7cOKlUKpFIkFcCAADwFZkTh5W8IbC0Wi3DMCS1QQ60Wi1FUfwTBFzzocnJyQwHmwfJyMiYN2/eTz/91NHR8dlnn3lqkP2P4KkdL/X7P9QA++0zmCF+DgAAAMMcskgAAAB+IJFIKKzkDcPVypUr8/PzKYrS6XSlpaWrV6/mr5+amlpUVFRfX++0BKdWq50xY0Z4eHhlZeUHH3zAPSUWi0tLS61Wa3l5+YIFC/jb4eG2HV/x9ztr1iyy3FKfVq1a9e6771qt1oaGhp07d7LlQ/AcAAAARhA3O8QBAACAr7BJHAwrKpWK+zI/Pz87O5sUpqWlkbW6qbsrYbsuO/3yyy/v2rUrJSWlvb199uzZjzzySE5ODkVR+/btW7duXUtLy8MPP/zee+/l5eWx879KSkoyMzMlEsnixYuLi4v52+Hhth1ukOSAXXfJdU5cn/3a7XYvB+nv3r37hRdeUCgUSUlJH3/88fvvv096GYLnADBCPfDAA9jiCQKlqanpmWeeCXQUYxTfbHYAAADwkslkqqurEwqFiYmJgY6FD9ZaGpXYtZYCHQiMAFhraZgbuWstURR15cqVgPQLwEpMTFQoFIGOYizCqCUAAAA/IBvD2e12u92ODVUBAGAMSk5ODnQIABAYWGsJAADAD2iaFolEFFbyBgAAAIAxBqklAAAA/yAreSO1BMBPrVbTLtRqdaDjAgAAgH7ChDgAAAD/kEgkRqMRqSUAfs3NzYEOAQAAAPwJqSWvMAzDrnfucDjYjUjI3Ae3TCaTw+EICgrytOKG3W7v7e3td0hCoTAkJMTT2d7eXoZhgoODvdwABQAABg6jlgAAAABgDBp5qSWHw0FRFMMwDoeDP7ljMBisVmtoaChZWtWV1WptbGwkx2zyiLTsVOhWcHBwfHy8p7M6nc5kMmk0GplM5raC2Wxme+8HqVTKk1pqbm62Wq3x8fHBwcFuK3R3dzc1NbEvuRkogUDA3d+XpmlSwhIIBMHBweHh4Z56N5vNFEVJJBLsPAoAYwpSSwAAAAAwBgU4tcQwTFdXF8ng2O12ckCGBTkcDvaAfel0uUgkSkhI8NR4d3e3wWCIiorylFpiGIYkQfodPM9ZiUTCMAzPJkFCoTA0NLTfvXu6KbZ3kgbysjXus3V9zm7xpJbq6uoYhrnnnnvEYrHbCgaDobOzU3AXTdNCoZAkrbiF3GMvbwQAIIBIaslmszkcDgwaBQAAAIAxwofUkuMuNg1EXsrlck+XtLa2dnZ2KhQKpVLptgLDMC0tLT5Hzbmc5ywZ1OMpu0FRlEgk0mg05JhNxJCMhjeF/PpcjTIoKCg2NrbPdvonJiaGv4JMJktKSqJ+OUqLe8CO4WKzeyyHw8EzYIqiKIFAwDAMz9sqi8ViNBq9vx2SexIIBORreHi4p7FgAAABJBQKhUKh3W63Wq38HwAAAAAAAIwaIoqiurq6HC5I/ohnxBArPDycJ9XicDjsdrunswKBQCaTcadcscNV3BZSnOlafX4gPG7cuHHjxvFUIL3zNzJacRNkPEOr+icxMZG/QmhoqFAo5A5M4zmgKIphGJvNxl7Ok9iy2Wy3bt0SCoU8MZABBSKRCGMKAMDvJBJJb2+vxWJBagnAV+QvE/4PDv3Y19B0BAAAMBaIKIpqbW3lyf5wuZ2yxDCMp9SSUqmUy+X8b+DZcUMwdgQHB3taBMoVSTORRCc54LmWTUXxNNjW1tbV1UXdHQzVJ1/uDADGOja1FOhAYKzTaDQDWdKRMBqN3k/eDwsL6+7uHkg7PH9S+p33eSWe+wIAAABCQFFUWFhYeHi4XC5XKBSRkZFRUVFqtVqj0cTGxsbHx48fP/6ee+5JSkqaOHHixIkTExMT77nnnvHjx8fFxcXGxmo0Gp7MkUAgEIvFeHMOAyEQCEQiUVBQUEhIiFQqDQ8PJ6uZuCWRSBITEydMmMDTIDsCjgyGMpvNRqOxu7u7o6Ojra2tpaWlsbGxvr7+9u3bN2/erKmpuXXrVl1dXUNDQ0tLS1tbm9Vq9f9NAsBoERQUJBaLsUIcBBx3sw6Kokwm04YNG8gfeAcOHJg8eTIpJ6OYOzo61q1bFxYWlp2dTcp1Ot3MmTOlUqlarc7KyuJOY3/ppZemTJkilUoXLlx49uxZUqhUKg0GA7vjB1uZpx1P7ty5M2fOHIVC8dxzz/X09HDjLCsroyiqrKyMpmnuViqzZs2aNWuWl0+GXO70n5SUFBQUxMXFSSSS0tJS/vsCAAAALhFFUVFRUYEOA8Bv+kxlqlQqlUpFpnz2iaSfuNPxQkNDPS3gZbVae3p6JBLJQBZoB4ARTS6X8yxBOEw0NDScOXMm0FH4n81mYxhmVN5an5qbm/kr5ObmWiyWq1evymSykydP6vV6Uk4GCq1YsWLNmjV79uy5fPkyKc/Ozs7Pz587d67ZbD59+nR2dvbevXvJqby8vIKCAqvVeu7cueXLl5MRPXq93u0UM552PDlw4MDRo0dDQ0O3bt36+uuvk/oXL178wx/+kJaWRlFUamrqjBkziouL2Ut8mtqWlpbmOjyKlDQ0NFRWVn799deZmZlk7KGn+wIAAAAu/LIE8Iikn2w2G0kzkQOFQiESuV//vqurq7m5OTQ0lGeBdovFgnl2ABBAEolEpVJFR0cHOhD/++GHH+x2e3JycqADCYCmpqacnJysrKzY2NiGhgbuqZiYGK1Wq9Forl275nZbFZqmu7u7nVafjIiIYNNPFEVFRUWRfVeqq6s3btxYUVFhNpunT59+/vx59i9JtykYT+14QtN0fX09+TWq1+unTp3K1l+xYsXq1atXrFhx9OjRY8eOffrpp309FT6u0XJLPB2PDocOHTpy5Mjx48cDHQi4N2nSpCNHjkybNq1/l0dHR1+4cIFs1wMAMGR82CEOYKyhaVokEnlKJLkSiURhYWH8a/dqtVqbzUbTtFgsFolE5Cv3AOPtAWBQhYSEvPDCC7m5uYEOxP/kcrnBYPj+++8DHUgAPPvss+RAq9WSA6eECHf4rSvXXU2Sk5NPnTrlWjMjI2PVqlXFxcVKpbK1tdXTipkWi4XMXvfUjjccDgd31YXt27evXLlyyZIlb7/99rFjx/rX5gCx9wUAAABc2CELwG9CQ0Ojo6MVCoWnCtw97ywWi9Fo7OzsbGtra25urq+v//nnn2tqan7++WetVtvS0tLe3m4wGMxmM8/+jAAAAN5YuXJlfn4+RVE6na60tHT16tX89VNTU4uKiurr651+B2m12hkzZoSHh1dWVn7wwQfcU2KxuLS01Gq1lpeXL1iwgL8dHoWFhfX19e3t7du2bcvIyGDLp06d+tBDDy1btmz27NmTJk3iXuLTWku+cntfAAAAwIXUEsDQoWk6KSkpMTFx/PjxGo0mKipq3LhxMpksODiYHRtltVpJyqm1tbWxsfHOnTu1tbU3b96sq6vjn0QAAADAUqlU3Jf5+fkdHR0qler+++8/ceLE7t27STkZKuu6TPXLL7+s0+lSUlKUSuXixYt37NhByvft27du3TqlUpmTk7NmzRq2BYqiSkpKMjMzFQpFUVERuxCSp3bcIk2tXbt2xYoViYmJBoPBqf7mzZvPnTu3ZcsWpwvJ2ohePhn2Trm3zJY4ffV0XwAAAMA12maPA4xcDMNY77LZbOwx+0mvRCLh2fzOZrMJBAKeHRsBACiKksvlmzZtGsUT4ux2e6ADCYBnn302OTk5Kysr0IEMroKCgps3b+7ZsyfQgYxsWGtpmMNaSwAwEmGtJYDhgqZpiUTiuoiD3W4nOSb+ZZiampp6e3s1Go3rkhkAAAAjHftLEKklAACA4QapJYDhjuwoFxwczF/NarVSFCUWiz1VsNlsZP1R7xcmBwAAGCYw0B4AAGDYwjtMgFEiISHBbrcLhUJPFXp6eshqTWR4VBAHptEBAMCQUavVrqsHqlSq5ubmgMQDAAAAA4TUEsDowZNXIsRisc1mYxjGbDabzWa2XCQScTNNPEOfAMAbbW1tXV1dSqVSLpcHOhaAYQcpJAAAgFEGqSWAsUIul8vlcoZhbDabmcN2V09PD6kpEAi4w5okEgmGNQH4hP2PFuhAAAAAAAAGHVJLAGMLTdNisVgsFrOrfTscDm6myWKxOBwOk8lkMpnYq8RisVqtDgkJCVDUACOMXC6XyWSuq/IDAAAAAIw+SC0BjHUCgSAkJIRNGzEMY7VauckmskVdn7PtAIBFEriBjgIAAAAAYCggtQQAv0AW+ZZIJGFhYaTEbrebzWae8RcGg8FoNMpkstDQ0KEKEwAA/ICmaWpEbb5G03Sgoh1xzwoAAGDIYP0UAOiDUCjkzxkZDIbOzk7uBDoAAAgsjUbjTbWhSZQYjUbvK7MfbLjlU8A+9dsnL7vmid+/8QAAAAwfSC0BwECFhYUpFAqe9BPDMBaLZShDAgAY45qamrgvTSbThg0b1Gq1RqM5cODA5MmTuWe/+eabuLg4iURSWlrKFr700ktTpkyRSqULFy48e/YsKaRpmqbpgoICp/pGo/H3v/+9QqGYPn16VVUVqUZRlE6nmzlzplQqVavVWVlZfeZWlEqlwWCg7+KeKisrcyokL/fs2RMWFlZRUVFcXBwWFkZC4u931qxZs2bN8uYx9vT0rF27ViaTPfjgg1evXuWecvt8PMXv63MAAAAYWTAhDgAGSiqVSqVSngpGo7GhoUEgEAQHBwcHB5OlnZzeMwAAwODJzc21WCxXr16VyWQnT57U6/Xcs+Xl5VVVVadOncrMzGQ/CcjLyysoKLBarefOnVu+fHl3dzdFUQzD0DTd0NBQWVn59ddfs/U3bdqkVCqbmppsNltRURF1d4xPdnZ2fn7+3LlzzWbz6dOns7Oz9+7dyxOnXq/3NOUtLS2N9M6WkJd2u33//v1LlixZu3bt/v37SUj8/Xo/9GnTpk0ajUav13d1dRUWFnJPuX0+nuL39TkAjEQMw2zevDnQUQAMLw899NDjjz8e6CiGQsDmqwPA2NHZ2anT6bg/bUiaieSYgoODkWYCGDJyuXzTpk25ubmBDsT/5HK5wWCw2+2BDiQAnn322eTk5KysrNjY2IaGBu6pmJgYrVar0WiuXbumVCpdr6Vp2mq1ikQiirOSUXV19caNGysqKsxm8/Tp08+fP8/+DOemTthjlUp1/fp10r5Op1OpVKQ8IiKCm8aKiopqaWnhvxf+1ZSczrIvnQ760a9bSqWypqaG3FdbW1tkZKRPz4flr3j84tChQ0eOHDl+/HigAgB+kyZNOnLkyLRp0/p3eXR09IULF5KSkvwblTcYhhEIBBs3bsRGFgDEd99998ADDxQUFAQ6kKGAUUsAMOjkcnl4eLjJZOrt7SVfHQ6H0WgkMwJomiY5ptDQ0KCgIKSZAAD6TavVkgOnBIfNZuO5iuSVuDIyMlatWlVcXKxUKltbW/tcuclpMBF7nJycfOrUKS+Dd2WxWHg2keAxwH49BcMee/l82PgHIx6A4entt9/mH8wOMHbs2LGD/b086mGtJQAYCiR/pFQqY2JikpKSJkyYoFKpwsLCRCIRwzBGo7Gtra2uru7mzZsNDQ3t7e1msznQIQMAjB4rV67Mz8+nKEqn05WWlq5evZq/vlarnTFjRnh4eGVl5QcffNBn+5mZmXv27HE4HAaDgUyII1JTU4uKiurr6x0Oh5ehisXi0tJSq9VaXl6+YMECL69ywt+v92strVq16t1337VarQ0NDTt37mTLeZ6P2/j78RwAAABGEKSWACAAJBKJXC6Pjo5OSEggaSaZTCYUCh0OR09PT2tr6507d2praxsbGzs6OvCHOIxQvb29LS0tZAUWgCGmUqm4L/Pz8zs6OlQq1f3333/ixIndu3eTcjLayPXrvn371q1bp1Qqc3Jy1qxZw1OTfN2xY0dTU1NkZOS8efOWLVvG9vvyyy/rdLqUlBSlUrl48eIdO3b0GXlJSUlmZqZCoSgqKiouLmbL2YWxuQcUZ8AUd+QUf792u93LFSF2795dX1+vUChSU1Ofe+65Pp+Pp/j78RwAAABGEKy1BADDiNVqNd7FZpQSExOFQmFgAwPoh/b29tbWVplM5uU28EMDay2NSuxaS4EOhLJarSdPnnzzzTevXbsW6FjAPay1NMyN9LWWDAYDJsQBEGRC3BhZawmjlgBgGBGLxXK5XKPRJCYmxsXFKZXK8PBw5JVghAoKCqIoCrM7YYx44403aJqWyWQfffTRN998E+hwAAD8ZiArgY61VUQD9azG2nMehpBaAoDhiKzNFBERoVareap1dnb29PRg9CUMTyS1ZLVaMakTxoJt27YxDGM2m0tLS/l/dAMADCulpaUSiUQsFsfFxT322GOBDmeIsJOLfTI2nxV4A6klABipGIZpbW1taGjAqBAYnoRCIdl4C9+iAFxqtZp2gWwUAARKZmZmSUmJ1Wqtr6//8ssvXSsM5FNMT9fGxMT0u02/6N9NDdtnhU+aA855r1kAgJHC4XCEhYWZzebg4OBAxwLgXlBQkM1mM5lMISEhgY4FYLhobm4OdAgAAP+f1WpNT08f4k4bGxv5K5jNZjL8eYjx9zs8nxUMBxi1BAAjlVAoVKlU8fHxPHWsVis+xIAAInlPk8kU6EAAAABGqqqqqieffFKhUISEhKSkpHz99deTJ09mz/70009PPPFEbGxsbGzsihUrqqqq2FNkUKTBYHjiiSckEolEIiktLeW2PGHCBO7WkzRNP/LII9wK1dXVniaO/fWvf500aZJMJlu9erXRaHSt5unaiRMnOnXqVKekpCQ2NjY4OFgmky1evPjKlSvc2/nwww/DwsIqKiq2b98ulUqd7ojfiRMn7r333rCwsNWrVxsMBqeznvod4LPq819hIM+K51pqYN8b4CuklgBgNGtoaKitrW1oaOjq6sJ6NzD0kFoCAAAYiJ9++umxxx577LHHrl271tXV9emnn1ZXV+v1evbsM888s2fPHq1Wq9Vq33vvvbVr17IZBPL5YnZ29quvvmo2m0tKSjIzM7mN3759m9Rh7jp79iy3wqRJk9x+SPndd9/98Y9/PHLkSFtbW1ZW1tatWymXOVmerq2pqXHqlFvt7NmzH3300cmTJ41GY1NTU25u7osvvvj999+z7VdXVx84cODxxx9vbW396KOPnO6Ix9/+9rc//vGPn332WUtLy7PPPvvaa69xz/L0O8Bn1ee/Qr+fFf+1A/zeAJ8xAACjlM1mq62tvXFXTU1NY2OjwWBwOByBDg3GCrvdTr79yAC64SA8PJwstzz6hIeHCwSCQEcRGGvXri0oKAh0FDAyfPLJJ48//nigowCPJk6c+I9//KPfl6vVavJufOiRz/AMBoN/m12+fPnBgwc9nV22bFlZWRm3pKysjPsdTlHUZ599xn3p2kifb4pdKyxevPjLL79kXx47dsxTI76W/+Y3v7l16xa35J///OeCBQvYqzo7O8lBV1eXN8GzFi1adObMGfbliRMnuNfy99tn2PwVvPlX6Ec5fx2/fG8MUF5eXlZWlt+bHZ6w1hIAjFpCoTAhIaG3t9dgMBgMBrvd3t3d3d3dLRAIpFKpTCaTSqXYqRQGlUAgkEgkFovFbDaTJb0BAADAe2fPni0qKuI5e+DAAW7JrFmznIafPPXUU36P6vvvv589ezb78re//a2/Wr506VJCQoJTYWhoKHscHh5ODsLCwnxq+eLFi8nJyezLefPm+dTvAA3GvwK/QH1vjFn4MxcARjOapkNDQ0NDQ1UqFZtjstlsbI5JJpOFhYX58RcngJPg4GCLxWIymaRSaaBjAXBG0uvM8FiTbiiDoWl6mNw1APCz2+38HwS6/l8e0f+7Q0JCfvrpp3vuuWeM9DuoRtn3xjCHtZYAYKwICQmJiopKSEiIj49XKBQSicThcHR1dWm12lu3bul0OiyIA4OBbLOC7y4YYhqNxptqQ/NHttFo9KbaUP7F731fvo4LAAD/euihh/77v//b09lHHnnku+++45ZcvHhx/vz5gx3VjBkzLl++zL48c+bMABs0m83kYMmSJYcOHRpga27NmTOHu3bSt99+yz07eP36Hfus+AXqe2PMQmoJAMac4ODgyMjICRMmTJgwQalUisVim83W0dFRV1dHckxe/sYC8AZZyRvfVDDEmpqauC9NJtOGDRvUarVGozlw4AB3cyWKor755pu4uDin/XFeeumlKVOmSKXShQsXsmu1ki11CgoKnOobjcbf//73CoVi+vTpVVVV7GY9Op1u5syZUqlUrVZnZWV5k2O6c+fOnDlzFArFc88919PTw+23rKyMoqiysjKaprnbg86aNWvWrFlePhlyudMgCE/3pVQqDQaDp22JAGAIbN++/Y9//CNZJKi3t7eqqqqoqOi5554jZ3fu3Pnmm29WVFTYbDabzVZRUbFly5adO3cOdlRbt2597bXXyFqKFRUVf/vb33xtQSwWkx81jY2NBQUFc+fOJeV5eXmFhYXvvPPOzz//bLVa9Xr9V199tWTJkoHHnJubu3Hjxv/7v//r7e39+uuvy8vLuWcHr9+B8/Ss+AXqe2PMQmoJAMYuiUQSERExYcKEmJgYmUxG0zTJMd25c6eurs5mswU6QBgNgoKCaJq22+1WqzXQscDYlZuba7FYrl69evPmTalUym6uRJSXl1dVVTntj5OXl1dVVdXR0ZGTk7N8+XJSSAb7NDQ0VFZWcutv2rRJqVQ2NTWdP3/+yy+/pDib7+Tn51ssltra2vnz52dnZ/cZ6oEDB44ePVpbWyuTyV5//XVSePHixTlz5qSlpVEUlZqaOmPGjC+++IK9hCwg6uWjSEtL8zRFwvW+yINi1yj1sgsA8KNZs2aVlpbu3LlToVDExMQ8/fTTJpPpP//zP8nZe++99/Dhwzt27FAoFAqFYufOnZ9++umUKVPIWXbfercvKYr65z//6bS3Pfk5w9Zn08pOKeY5c+Zs2bIlLS1t3LhxBQUFrgkLnmsJ8qNGIBDMnj27pqbm5MmTpDwuLu7ChQs1NTUzZ86UyWRz585l1wxyeztOd8Tj4Ycf3rp168qVK6Oiov7rv/5r165d3Gt5+h3gs+rzX6Hfz4r/2gF+b4CvMM8cAOBfGIbp6enp6uoyGo1kCfBARwSjRF1dnclkio6OHg4za+RyOZkZGuhA/O9//ud/7Hb72BzrXltbu3HjxqysrNjY2IaGBu6pmJgYrVar0WiuXbumVCpdr6Vp2mq1kmXm6bsrEFVXV2/cuLGiosJsNk+fPv38+fPsX4w0Z5Ui9lilUl2/fp20r9PpVCoVKY+IiOCmsaKiolpaWnhuhKbp+vr62NhYiqL0ev3UqVPZ+itWrFi9evWKFSuOHj167NixTz/9tH/PyvUueO7Lbc2R7tChQ0eOHDl+/HigAwH3Jk2adOTIkWnTpvXv8ujo6AsXLiQlJfk3Km8wDCMQCAwGwxhcW1Cn0yUlJXV1dQU6EBheduzYodVqCwoKAh3IUMAy3gAA/0LTtEwmk8lkNpvNYrEEOhwYPYKDg00mk8lkGg6ppfHjxz/++OO//vWvAx2I/124cMFut69fvz7QgQTAvn37yIFWqyUHTgkR/mGYrtsXZmRkrFq1qri4WKlUtra29rlyE/eTXm6/ycnJp06d8uIO3HA4HALB/x9fv3379pUrVy5ZsuTtt98m+3wPPYvFIpFIAtI1AAxbDQ0Nb731ljejMgFGMaSWAACciUQi7BMPfkRW8h4myy3J5fKUlJTFixcHOhD/e/75581m89jcSJgsQsRj5cqV+fn527dv1+l033777bFjxz755BOe+lqtdsaMGeHh4ZWVlX/5y1/6DCAzM3PPnj1vvfWW0WjkbhOemppaVFT02GOPxcTEcPNEPAoLC59//nmpVLpt27aMjAy2fOrUqQ899NCyZctmz549adIk7iVkoaVLly55076vyBofS5cuPXPmTF5e3rlz5wajFwAYcXbt2rVp0yaKoqKiorZs2ZKVlRXoiAACCWstAQD4xmq1/vzzz04rlQDwICt5m0ymUTatBoYzlUrFfZmfn9/R0aFSqe6///4TJ07s3r2blHNXl+B+3bdv37p165RKZU5Ozpo1a3hqkq87duxoamqKjIycN2/esmXL2H5ffvllnU6XkpKiVCoXL168Y8dkGct+AAAgAElEQVQOnphJU2vXrl2xYkViYqLBYHCqv3nz5nPnzm3ZssXpQrvd7v1/LqdVOfifA3V3jQ+FQlFUVFRcXOxlLwAw6r3++utkFbaWlhbklQDwsTwAgG+6urqsVmtvb2+gA4ERQyKRCIVCu91uMplCQkICHQ6MCc3NzdyXUqn0ww8//PDDD52qcTMy3OP09PT09HTXU57qh4aGFhYWFhYWWq3WkydP3nfffaRcKBRu3rx58+bN3sTMNuhp/NEXX3zxH//xH9y94YgrV654075r2G4LnSqkp6djijQADH8TJky4c+eO21Pjx4+/ffv2EMcDYw1SSwAAvlEqlRKJBDPmwCchISEGgwGpJRjF3njjje3bt0skkrS0tG+++cbv7bPDiPbs2eP3xgEARjokjyCwMCEOAMA3NE2HhYUhQQA+CQ4Opmna4XAEOhCAwbJt2zaGYcxmc2lpqVqt9nv7zF1+bxkAAAAGCJ+6AwD4mdlsdjgcyD0Bl1wuHzduHHcXLYAxS61Wt7S0OBWqVCqnSXwAMBI9//zzGNkNQFy7di0xMTHQUQwR/LcHAPCztra2np6e4ODgcePGyWQyZBOAoigv98YCGAuQQgIYlcigwo6ODqFQGOhYAIaF3t7ezs7OQEcxRJBaAgDwM6FQSNO0yWRqamoSiURyuVwul+PPLAAYPB0dHWfOnDEajYEOBEaAH374Yey81YGhRD5LO3r0qFQqDXQsAMPCjh07tFptoKMYIkgtAQD4mVqtjoyM7Ozs7OzstNlsbW1t7e3t4eHhCoUCQ8QBYDA0NjY2Nzc3NTUFOhAYAdra2oKDgwMdBQAAjCp4kwMA4H9CoVCpVCoUip6envb2dpPJ1NHR0dnZSRJMYrE40AECwKhy7733rl69OisrK9CBwAhw6NChI0eOBDoKAAAYVZBaAgAYLDRNy2QymUxmMpn0en1PTw8ZyiSVSpVKJT40BgAAAACAUQCpJQCAQRccHBwTE2M2m9vb27u7u3t6enp6ekJCQpRKZWhoaKCjA4DRoLe3t729PdBRwAjQ09MT6BAAKJqmybLfbk9RdxcF97XNPi/k6dcv9QHGLKSWAACGSFBQUHR0tEKh0Ov1BoOht7dXq9WGhoYqlcqQkJBARwcAI1hoaGheXl5eXl6gA4GRITU1NdAhwFih0WgaGxtdy3nyNQzD9G93XW8u9DVP5H39sLCw7u5unxoHGE2QWgIAGFJBQUEajcZisZARTEaj0Wg0hoSEREZGYorcGNHvP5oBPNm7d+/evXsDHQUAgDPX7QXKysqWLFlC/TJr09PT8+KLLx49enTSpEkff/yx0yWzZs2iKOrSpUve9Hjnzp2MjIyqqqr09PSCggJ2uzq3/RqNxg0bNhw9ejQhIeHTTz+dOnUqW8FtffLr+4MPPti5c2dLS0tJSUl6ejpFUUql0mAwsL/cMdAJxiBBoAOAkWTr1q1bt24NdBR9GylxwlgmkUjUavU999wjl8tpmu7t7a2rq9Pr9YGOCwaXw+Goq6urra11OByBjgUAACAA0tLSXDMvmzZt0mg0er3+9OnTn3/+udNZhmG8T9YcOHDg6NGjtbW1Mpns9ddf77NfpVLZ1NR0/vz5L7/8kuJkhdzWJyUNDQ2VlZUlJSWZmZmknPwJx9zlZagAowlGLfmHyWS6cuVKTU2NTqfr7e0NCgqKioqaPHlycnLyWBiGYLPZfvzxxxs3bjQ2NhqNRrI31uTJk2fNmsV+UAAArkQikUqlUiqVer2+q6tLJpMFOiIYXAKBwG63MwxjMpmwzBYAALj129/+VigU9u/azs7O5ORkgSDAAwhiY2MbGhrIMRnLExMTo9VqPdU/fPhwTU2NRCKJjIxcv359bm4u9+zly5e973rdunWxsbEURW3dunXq1Kn8IzpLSkquX78eFBQUFBT0u9/97pVXXvGmCzL7OD093Wq1eh8YwOiG1JIfVFdX//Wvf+3t7WVLjEbj7du3b9++ff78+bS0tF/96lcBDG+w1dfXHzlypLOzky2x2WyNjY2NjY0XL15MS0ubNm2aTw2SAUcYdgRjB5tgEonwM3n0U6vVIpFILBYHOhAAABiOvv/++4GMbJ0yZcqXX36ZkJDgx5C8xDBMREQEOWazSP1YBttisfglHofD0WeKjTs/3Y+jjSwWi0Qi8VdrACMC3sYMVE1NzeHDhxmGSUhImDVrVlxcXGhoqMViaW1traqqunLlyl//+tdRnFqqr68/cOCAzWaLiYmZPXv2hAkTZDKZzWbT6/U3bty4fPny8ePHfU0tAYxNyCuNEViyHQAAeMjl8oFcLhAI5HK5QqHwVzzeG0hqZtWqVe++++7WrVt1Ot2uXbuczvq01lJhYeHzzz8vlUq3bduWkZHBXzkzM3PPnj1vvfWW0WgsKirqX/CEWCwuLS1dunTpmTNn8vLyzp07N5DWAEYcrLU0IFartbS0lGGY3/72t88888y9994bFhYmFApDQkLi4+MXLFiwYcOGUZxXstvtR48etdlsM2bMeP7553/961+PGzdOJBKRfdYffvjhDRs2IK8EAAAAADA2qVQqpxKapslYIfaAoqjdu3fX19crFIrU1NTnnnuO+uV4IjKXvM++yCVr165dsWJFYmKiwWDYsWMHf787duxoamqKjIycN2/esmXL+oyTLXH6SlEUWXpJoVAUFRUVFxd793gARg98SD4gP/zwQ09Pz/jx4x955BG3FYKDg1esWOFa3t7eXlFRUVtb29XVJRKJNBrN7NmzyZYELHZe2I8//vj3v/9dp9MJBILx48fPnz8/Ojq63w3+6U9/unLlyv/+7/+2trZardY//elPFEVptdoffvjh559/bm9vp2laLpdPmTJl3rx5/J+u//Of/+zo6IiOjk5LS3M73FQikTzxxBPsS296YefBcSfEscf9i5Ooq6urqKioq6vr7e0NCQkZP3783Llz4+LinKpVV1dfuHChsbGRYZjIyMjk5OTk5GTM0YPAMhqNOp0uKioKq/MAAADACNLc3OxU4jZJJJVKDx48ePDgQbd1rly54k1f7FVuxze57Tc0NLSwsLCwsNBqtZ48efK+++7jr88tdKqQnp7ur6l8ACMRUksDUl1dTVHUzJkzfbqqtra2pKSE/dFjs9lu3bp169at3/zmN48++qhT5a+++urixYvcHm/fvv1v//Zv7ExmXxv84osvvv/+e6fCwsJC7svW1tbW1tbKysrf//73PG9lq6qqKIqaM2eOlysF9q8Xv7Rw+fLlsrIy9heAwWCorKz86aefli5dmpyczFb77rvvyN4QRENDQ0NDg+ueqQBDTK/XWyyWnp4epJYAAAAA/OiNN97Yvn27RCJJS0v75ptvAh0OwEiF1NKAkKRDfHy895d0dXV99tlnFovlgQcemDt3bkRERG9v77Vr186ePXvu3LmkpKQJEyZw6//9739PSUl58MEHZTJZU1PTiRMn2trazp8/z44G8rXBK1euzJ07d/r06Uqlkk0J3XPPPcnJyePHj5fJZBaLpaGh4ZtvvtFqtefPn1+8eLGne2lsbKQoyql9Ht70snXrVp4hQv2Ls6mpqby8nGGYBx98cN68eePGjevo6Dh//vwPP/xQVlYWHx9PRuo2NTWdOnWKoqiZM2fOnTs3PDy8q6uroqLCpz0pAAaDRqNpb28PyLoJAAAAAKPYtm3btm3bFugoAEY8pJYGxGg0UhTlul+4a1qELfnuu+/MZvOvf/3r9PR0UiKRSObOnSsUCsvLyy9duuSUqUlJSWFn240fP37JkiUfffTRzz//zFbwtcGZM2cuWrTIKby1a9eyxyEhIUlJSZGRkXv27Llx4wZPyqanp4eiqLCwME8V/NLLwFv4+9//7nA4Jk+e/Pjjj5OSiIiIJ554wmAw1NTUfPfdd8uXL6co6tKlSw6H47777luyZAmpplAolixZ0tPTU1lZ6eU9AgwGoVAYGRkZ6CgAAAAAAADcQGppqNXU1FAUNXv2bKfy+++/v7y8vK6uzqn8/7F373FO1Xf+x78n15lkMplkJnMfEFRAsbYi4KVQragUXF1FFLyxCNtu64qsPAqioo+fXURcsLayu5YVqn10qw9a25Fa0WqrVipW6rVFFAVUmMx9ksxMkklOkpPfH2eJMTPJZK4nmXk9/5hH8j0n3+/nZGrJvPP9fk/KNtg1NTVCiO7u7kF3OHPmzN5VqdNzjh496vP5khcJd3Z2ZnFN2Rr6KIPr4fPPPxdCzJkzJ6V97ty5hw8fTuR06oPzzz8/5bTzzjuPaAkAAAAAgD4RLQ2JxWLp6urq7u5OWajS5xbUKq/XK4RQ723Zex84dR5QspKSkuSnZrNZCBGLxQbdYe81NW1tbT/96U97enp6X2A0Gu3dmGC1Wjs7O3tffp8GPcrQe+jq6hJCuFyulHZ1HVwip1NPS97ESsVsEeQ+RVGy3PIMAAAAAIYX0dKQVFVVdXV1ff7559nvgaImPoqi9Hk0OTNSJd93c1g6NBqNKS1/+MMfenp6ampq5s2bV1FRUVhYqNPpotHoxo0bMw9dVVXV2dmZ5eUPepRh7AEYkzo7Oz0eT3l5udVq1boWZCsajba3t0ej0d73qQQAAADyC9HSkEydOvXQoUNvvvnmmWeemeWUAbvd3tHRsWrVqt6zYwZn6B2qC8EWL16cnBB1dHT0+8KpU6d+9NFHf/nLX7K5/EGPMvQeiouLPR5PW1vbhAkTkttbW1tF0l5R6mkdHR0pf+m1t7dnXyQw+jo7O6PRaGNjo81mc7lcer1e64rQP51O5/f74/F4JBLpnfgDAAAAeYQFFENy5plnFhcXNzU17dmzJ928oRRTpkwRQrz++uvDVcPQO1RnNhkMX8oZ9+3b1+8LzzzzzJKSkubm5nSXL8vyM888M9BR1HPC4fBw1aluZN77Lfrzn/8shDjppJPUp+qD3h2+8cYb/Q4BaKiurs7pdEqS1N3d/dlnn/l8Pq0rQv90Op26wFm9HQQAAACQv4iWhsRgMFxzzTV6vf6tt976n//5n3feeaejoyMSiSiKEgwGjx49unv37pSXnH/++RaL5Z133nnqqaeOHDnS3d2tKEooFGpsbNy3b9/27dsHWsPQO6yoqBBC7N69u62tLRKJtLa27t69+/333+/3hXq9fvHixQaD4a233tqxY8ff/va3zs7OWCwWDoebmpr+9Kc//fjHP37vvfcGOordbhdCvPvuu8kbdQ+lznPOOUen0x06dOjZZ5/1eDyxWMzj8ezevfuTTz7R6/WJHdBnz56t0+kOHjy4Z88er9cbi8W8Xu+ePXvYwxs5TpKk0tLSurq6goICRVHa2toaGhpS/vNBDrJYLIJoCQCAEyRJ6nczkJEbOsOhoVel1XUBo4YFcUNVV1e3fPnyp59+urm5+be//W3vE2w228KFC5OfXn/99bt27Tp06NChQ4eGXsDQO7zwwguffPLJw4cPqzebU82ePXv//v39vra2tnb58uW/+tWvGhsbf/Ob36QcNZlMV1555UBHOf300/fu3fvCCy+88MILaou6Ffqg66ysrFywYMGePXvefvvtt99+O9EuSdLChQvVxEo97ZJLLvn973+/f//+5D5nzpz51ltvscgIOc5sNtfW1nq9Xo/H09PTc/z48dLS0pT7ACCnWK1Wj8dDtAQAGMOqqqqampqyPDkej2sVwSTfDan3oaFXlaH/FDabLflu4EC+YNbSMKirq1u1atUVV1wxderU4uJig8FgNBrtdvtpp5125ZVXrl69+rTTTks+v7a29pZbbpk3b15tbW1BQYFOpysoKKipqbnwwgtvueWWQRQwxA5PPfXU66+/vq6uzmAwmEymmpqaK664IjkO63f0VatWXX755VOmTFEv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iRMlSYpEIosWLUqZPLJnz57e00mCweC3v/1th8MxY8aMQ4cOJZ/Q5/lOp9Pv90snJNrb2tpmzZpltVorKipuvfVWNQNSz3n44YdtNtu+fft27txps9kSpfYpEAgsX768qKjorLPOOnDgQOb+B3G96d63gV5vuvMH+vtSzZ49e/bs2Rneln4NdNwMv/djx46de+65DodjxYoV/e4FkW7cgfYzthEtAQAAAABG3F133SXL8oEDB44ePWq1Wj0ej9q+YcOGmpqaQ4cOffzxxzU1NRs2bFDb1YkhjY2NBw8e3LVr15IlS9T2zz//XD0UPyExxMKFC3tPJ7njjjucTmdzc/PevXtfeOEFkTTlpM/z1cJ6d7527dqtW7fKsnzkyJF58+atXbs20VUsFnv88ccvu+yyAwcOPP7444lS+3THHXdUVVV5PJ6XXnrp2Wefzdz/IK433fs20OtNd/5Af1+Jo0Oc6TPQcTP83p944omnn376yJEjRUVF69atG9y4A+1nbJOYxwVgdEjSaP8fznCNuGnTpn379v3ud7/LZqyFCxd+4xvfWL9+/dDHBUbCnDlz7rnnnvnz52tdyPCz2+1+vz8Wi2ldCACMR/F4XKfT+f1+q9VaU1PT2NiYfLS6utrtdldVVX3wwQdOpzPltZWVlR999FFJSYkQwuv1nn766U1NTeqh5I9zKR/tMnzSSzlUXl7+0UcfqeO2tbWVl5envLB3V312XlpamojDhBAul6u1tTX55N4P+uR0Og8fPqzW09HRUVZWpp6crv+BXq/I+L5lf73pjg7u9zUIQxw33e9dkqSGhoaamhohhMfjmTZtWvL7nP24/fazefNmt9u9bdu2obwJ+YJZSwCQSSAQePjhhx9++GH1ab/b9f3whz/84Q9/2NPTM/KljSq+hwAAAFlyu92JKSrqA7fbLYSIRqPpXjKinzSSP78NYqDEAqizzz47niQlRxic5NVVI9H/EEtKR6tPhgMaN5vfu6Io2Wwz2u+4WfYzho3riweQp0bzdgy/+c1vzj///FNPPVV92u+/K9OmTZs5c+bu3btHrqT29vaurq6R6783RVEaGho6OjpGc1AAADDGLF68eOvWrUKItra2+vr6G2+8UW1ftmzZY489puYp27dvv+mmm4Z33CVLljz88MOKovj9/h07dmTzEqPRWF9fH4lEnn/++YsvvlhtXLBgwY4dOxoaGhRFGUo9S5cufeihhyKRSGNj44MPPphoH67+B6HP601ncL+voe+1NNBxM/zeH3vssYaGBq/Xe//991977bWDHndA/YxtREsAkMmzzz57zTXXDOgl11577W9/+9uRKMbj8dx5551XX3115rt4DLtAIBAKhTwej1bfngEAgHxUXl6e/HTr1q0+n6+8vHz69Om7d+/esmWL2r5x48a2tra6urq6urqOjo6NGzeq7eq3ib1/qntLixP7Nyd/6Zh4mty+efPm5ubmsrKyOXPmXH755ckl9Xm+EELdssfhcOzYsWPnzp1q42233dbW1jZ37lyn0zl//vzNmzenFCay+wZ0y5YtDQ0NDodjwYIFK1asSLyqz/4Hcb3p3reBXm+68wf6+1LFYrHs5xwNy7h9/t7VQ8uXL1+0aNHkyZP9fn/ifR7QuJn7GY/iAMa6UCj03e9+1+l0VlRUqF+MqO2xWOzf//3fTzrpJIfDcfPNN/v9frVdCPHoo49OnDixoKDg3HPP/fvf/97v+T/84Q9ra2vVZcmHDh26+uqrnU5ncXHxVVdd1dbWljgtQ5GRSOSee+6ZMGFCSUnJ1q1b1cY+u+r9/2D9jpi4HUlFRcXq1atDoVDmdybZpEmTDh8+nHiaOCccDt9yyy3qa//jP/4j+bUff/zxySefnPF3MmDt7e3f//73zWazEOKZZ54Z3s6z0dXV9cknn3z88cdut1tRlNEvAMPl61//+gsvvKB1FSOiuLhYp9NpXQUAjFPqRJvE58PcJMvyb37zm9NPP13rQjCqtPq9P/DAA7feeusoD6oVw+gGWQA0sHHjxs8///zvf/+7EOLmm29OtP/oRz969dVXX3755ZKSkttuu+3ee+996KGH1EO///3vX331VZfL9dBDD333u9/985//nPn8P/3pT2+++WZ1dbUQ4pprrvnRj37085//XJblDRs23HnnnY899li/RT744IN79+59+eWXnU7nD37wA7Wxz67i8XjK1nr9jnj//fd/8MEHb731lhBi2bJlmzZtuu+++zK8M8mam5urqqp6t2/atOnjjz/+29/+Fo/Hly1blnyouro6ZevKoWhvb9+0adN///d/CyHC4fDEiRNramrefvtt9eivfvWrzs7OdK+NRCI+n2+4KonFYmoqZzAYCgoKhqtbjLKPPvpo48aN2fxXmXfG3h5nAIDhcvfdd2/atMlkMi1cuPDll1/WuhyMEn7vo4Y7xAFj38knn/zcc89NmzZNCHHw4MHp06er/+GfdtppzzzzzNSpU4UQLS0t55xzzmeffSaEkCSpqampsrJSCBEMBsvKyoLBYObzP/vss4kTJ/Yeuqura/r06cePHxf93STi1FNPra+vP+OMM9KdkGVXfZ528sknP/vss6effroQ4sCBA1deeeXhw4czvDPJCgsLOzo6LBaL+jTR5w3v4zQAACAASURBVCmnnPLb3/420edXvvKVxGsDgYDL5VLftCHy+/2LFy/+/e9/rz41mUwWiyX5viqffvop/zcOJJhMpnA4rHUVADAexZPuEKd1LUBOGFd3iCNaAsa+wsJCn8+nrqUKhUKFhYXqf/gWiyX5S36dTqfetFtKc2PXDOcripJYjfzWW2/dcccd7777rtfrFULo9Xr1biCZo6XCwkKv15syFybLrvo9LbnzUCjkcDjUC0n3ziSbPHnyiy++eMopp6S8Gyl9Jr/2k08++da3vnXkyJFMv5WBePnll++8886DBw8Gg0Gr1drU1KThh7ZQKNTY2BiLxUwmU01NjcHA7Ndh1t3d3dzcbDQaTzrppJHof86cOffcc8/8+fNHonMAwLhFtJSioqKi9yaV5eXlLS0tmtSD0TeuoiW28QbGvurq6k8//VR9fPTo0UT7hAkT1DkvKjUnyiDD+clb9C1duvSf/umfDh8+HI1GOzo6+u1WVVdXp84kSpauq5T9Efsdsbq6OnHhhw8frqmpSbT3+c4kmzlz5uuvv967vaamJvGSlBTp9ddfH+L9L1JcdNFFb7755rPPPnv22Wd3d3c/+uijw9j5QBUUFNTW1hoMBlmW3W53lr9fZM9qtdrt9oqKCq0LAQAAg9fS0tJ7PxpyJYxVREvA2HfdddetWbOmsbGxsbFxzZo1ifbvfe973/72tz/88ENZlv/+978vXbo0cz9Znh8IBIqLi61W6+eff/6d73wnyyKXL1++atWqo0ePer3e22+/PXNXZWVlH374YfYjXnfddatXr25oaGhoaFi9evV1112XaO/znUl2+eWXP/30073br7/++ttvv93tdrvd7n/7t39LPvT000+n3HxkWFx44YX79+9/9dVX9+/fPyyr7QbNZDLV1dUZjUZZlo8fP67OEcNw0el05eXlhYWFWhcCAAAAZIVoCRj7NmzYUFdXd8YZZ5x11llf//rXjUaj2r5q1aorrrhi0aJFxcXFN9xwQyJwSSfL83fu3Ll+/XqbzfbNb37zggsuyLLItWvXnn/++RdccMHJJ588YcKEzF2tX7/+/PPPT8xd6nfEDRs2nHbaaTNnzpw5c+b06dPvvvvuzO9Msquvvvovf/nLxx9/nNJ+9913T548+Stf+cqMGTMuvfTSRPuhQ4f2799/1VVXZXnhA3XBBRf88pe/7LPU0WQwGGpra41GYyQSaWhoIF0CAAAAxi32WgLGl7/97W9XXnllusVf41mGd+aBBx7485///Nxzz2XTz2WXXTZ37tz169cPd4G5KBqNNjQ0RCIRo9GorpLTuiL0j72WAAAjgb2WgBTstQRgrLn99tubm5s///zzNWvWXHnllVqXk0OyeWfuvPPOLHMlIcRzzz03TnIlcWLuksFgYO4SAAAAMG4RLQHjwkknnTRr1qzZs2dPnjx548aNGlYi9UXDenLnnclTyemS2+0mXQIAAJrT6uOlth9rAQ2xeAEYF1avXr169WqtqxBCiFxbhJs770z+MhqN1dXVbrdbluWmpqaamhqdju8tAACAqKqqampqyvLkYDBosViGZVytPnBmP67NZuvu7h7RYoDRxKd/AMBQmc3mmpoavV4fCoWamppyLUAEAACaaG5uTjxOma6e/LStrW3WrFlWq7WiouLWW29N3AlXPcHn861cudJms61du1Ztr6+vN5lMkiQVFxfPmTNnypQpiVH27NnTe1J8JBJZv3791KlTp0yZsm7dOlmWk/vftm1bbW2tyWSqr69PftXs2bNnz56d5ZX2OW66/p1Op9/vz4X5+8BwIVoCAAwDs9lcXV2t0+mCwaDH49G6HAAAkFvi8fi55567b98+9em+ffvOO+889euotWvXbt26VZblI0eOzJs3LxEhqUcXLVo0d+5ct9v9rW99S21ftmzZP/zDP0Qikebm5u9///s+ny8xysKFC3t/xbVhw4aamppDhw59/PHHNTU1GzZsSO6/sbHx4MGDu3btWrJkSUrB2X9b1ue46fpXPynFT8hyCCCXcYc4AMCwCQQCPp+vqqqKNXHDoqury+v1lpSU2O324eqTO8QBAEZC8h3iampqGhsbk4+qa+dffPHFLVu2vPTSS0KISy65ZN26dZdccokQorS0NPl7KZfL1draqj6WJKm7u7uoqCi5t2efffbqq6+ORCJlZWUul+tnP/vZrFmzkk+QpC/9nVtZWfnRRx+VlJQIIbxe7+mnn55Yppd8ZsqrBqF3D+n6H/pYyH3cIQ4AgMFQP02SKw2XWCwmy3JXV5fWhQAAMAButzsxH0d94Ha7hRCXXnppT0/P3r179+7dGwqF1FxJCHH22WfHkyRyJVVKriSEuPzyy2VZ9vv977zzzk033XTppZf2W1Iu5ziJBXpA/uLTPwAAOaq4uFiSpFAoxIdOAMDYcN99991777333nvvfffdl2hcsGDBjh07GhoaFEXJphOXy7V//36dTldXVzdt2rRAIJD5/GXLlj322GNqbrV9+/abbropm1EGtNfSQBmNxvr6+kgk8vzzz1988cUjNAowaoiWAADIUXq9Xr1XDhOXAAD5qLy8PKVl3rx5iqLE4/GLLroo0Xjbbbe1tbXNnTvX6XTOnz9/8+bNaru6xXXv7a4nTZr03nvvTZkyRZKkJUuW7Nq1K3EocWbySzZu3NjW1lZXV1dXV9fR0bFx48aU/lN+qmKxWPZznfocN0P/6tZLDodjx44dO3fuzHIUIGexwhMAgNzl9/ubmpoMBsOkSZOGpUP2WgIAjITkvZa0rgXICey1BAAAcoLVatXr9dFoNHEnZgAAACCnEC0BAEYc99YdNEmSbDabYE0cAAAAchXREgBgZEWj0YaGhpS7vSB7arTk9/uz3NwUAAAAGE1ESwCAkSXLcigUCgQC0WhU61ryUkFBgclkisfjTFwCAABADiJaAgCMLIvFUllZWVdXZzAYtK4lX9ntdiFEZ2en1oUAAAAAqYiWAAAjzmazGY1GravIY8XFxTqdTpblnp4erWsBAAAAvoRoCQCAXKfT6YqKigQTlwAAAJB7iJYAAMgD6po4v98fi8W0rgUAAAD4AtESAAB5oKCgwGw2s5k3AACakyRJw6E1HB1Ih2gJAID8wGbeAID8UlVVNfROgsFg9ifbbLaR7kcIEY/Hs+9qQOP2K8uhh+t9ALJEtAQA0MyAPpnBZrPpdLpIJMKHQgBAXmhubk5+GgqFVq9eXVFRUVVV9cQTT0yZMkVtV2fi+Hy+lStX2my2tWvXqu1tbW2zZs2yWq0VFRW33npr8j9/q1atmjp1qtVqveSSS1555RW10el0+v1+6YTEyRn66VO6foQQe/bsSWlUnz788MM2m23fvn07d+602Wz19fX9jjt79uzZs2dn8zYGAoHly5cXFRWdddZZBw4cSD40ou8DkD2iJQCABhRFaW5uTvnEicx0Op36JSQTlwAA+eiuu+6SZfnAgQNHjx61Wq0ej0dtV79qWrRo0dy5c91u97e+9S21fe3atVu3bpVl+ciRI/PmzUtETkKIBx544NChQz6fb/369VdccYXaqHYYPyFxcoZ++pSuHyHEwoULU1rUp7FY7PHHH7/ssssOHDjw+OOPL1mypN9xe3eezh133FFVVeXxeF566aVnn302+dCIvg9A9iS+MQYAjL5QKNTQ0BCPx10uV0lJidbl5I1wOHzs2DFJkiZOnGg0GgfRw5w5c+6555758+cPe20AgPEsHo/rdDq/32+1WmtqahobG5OPVldXu93uqqqqDz74wOl09n65JEnd3d3q7VATSktLE/GTEMLlcrW2tgohPvnkkzVr1uzbty8cDs+YMWPv3r2Jv2olqY+/cNP1k0Gf/aQ7mnia8mAQ4/bJ6XQePnxYfd86OjrKysrUUUbhfcBQbN682e12b9u2TetCRgOzlgAAGigoKCgtLRVCtLe3h0IhrcvJG2az2WKxxONxn8+ndS0AAPTN7XYn5suoD9xutxAiGo1meFVKriSEOPvss+NJEjnItddeO2fOnA8//NDn8/3yl79M16Esy5n7yVKin4Ea4rj9FjPK7wOQAdESAEAbDofDarXG4/Hm5mam0GavpKREr9cPbsoSAAAaWrx48datW4UQbW1t9fX1N954Y+bzFyxYsGPHjoaGBkVRktvdbvfMmTOLi4sPHjz4yCOPJB8yGo319fWRSOT555+/+OKLM/eTQZ/9DFTmcbPfa2np0qUPPfRQJBJpbGx88MEHE+2j8D4AWSJaAgBoprKy0mAwRCKRtrY2rWvJG1arddKkSawiBADkvvLy8uSnW7du9fl85eXl06dP371795YtW9R2davp3ttO33bbbW1tbXPnznU6nfPnz9+8ebPavn379pUrVzqdzvXr1y9btizRgxBi165dS5YscTgcO3bs2LlzZ+Z+Muizn0SRKQ+SC8imflUsFsvyq7UtW7Y0NDQ4HI4FCxasWLEiMcoovA9AlthrCQCgpWAwqE6Sr66utlqtWpcz9rHXEgBgJCTvtaR1LUBOYK8lAABGicViUSfgtLa2xmIxrcsBAAAAMDBESwAAjZWVlZlMpmg0yrI4AAAAIO8QLQEANCZJUmVlpXrXYb/fr3U5AABg7KuoqJB6qaio0LouIC8ZtC4AAABhNpsdDofH42ltbS0sLNTr9VpXBAAAxrKWlhatSwDGDmYtAQBygtPpNJvNsVistbVV61oAAAAAZItoCQCQExKz0P1+fyAQ0LocAAAAAFkhWgIA5Ap1WZwQorW1VVEUrcvJA/F4vKOj49NPP+XmegAAANAK0RIAIIeUlpYajcZoNNrR0aF1LXlAkqRgMBiNRru6urSuBQAAAOMU0RIAIIdIkuRyuYQQPp8vHA5rXU4eKC0traqqUmd7AQCAIVJvFTdqY43OQMBII1oCAOQWq9VaVFQkuHVLdiwWi/p2AQCQa6qqqobeSTAYzP5km802xH7i8Xj2ww1R9mNluC4gFxAtAQByjsvl0ul04XDY5/NpXQsAABik5ubm5KehUGj16tUVFRVVVVVPPPHElClT1HZ1opDP51u5cqXNZlu7dq3a3tbWNmvWLKvVWlFRceuttyZnQ6tWrZo6darVar3kkkteeeUVtdHpdPr9fumExMkZ+knn2LFj5557rsPhWLFiReLuImq3e/bsEULs2bNHkqS6urrES2bPnj179uws3xn15SmzltSWbdu21dbWmkym+vr6zNcF5A6D1gUAAJDKYDA4nc729nZ2px4Jzc3NR48e1boKAMCYks0EnLvuukuW5QMHDhQVFf3ud7/zeDyJ10qStGjRomXLlj388MN//etf1fa1a9du3br1/PPPD4fDL7300tq1a//rv/5LPfTAAw9s27YtEom89tprV1xxRXd3txDC4/FIktS7kgz9pPPEE088/fTTFovl//2//7du3Tr1/DfeeOP2229fuHChEGLBggUzZ87cuXPngN6BhIULF6pXndyotjQ2Nh48ePCPf/zjkiVLZFnOcF1A7uB/oACAXBSPx2VZNpvNWhcy1ixYsODNN9/UugoAwBjk9Xr9fr/Vaq2pqWlsbEw+VF1d7Xa7q6qqPvjgA6fT2fu1kiR1d3enLPEuLS1NxE9CCJfL1draKoT45JNP1qxZs2/fvnA4PGPGjL179yb+qu0zgknXTzqSJDU0NNTU1AghPB7PtGnTEucvWrToxhtvXLRo0dNPP/3rX//6qaee6u9dyaR3tckt6R4jX2zevNntdm/btk3rQkYDs5YAALlIkiRypZHw/PPPa10CAGAMisfjOt3/bbfidrvVBymBSDQazdBD760Dzz777BdffLH3mddee+3SpUt37typznFOt6OTLMsmkylDP9lQFCVxXUKITZs2LV68+LLLLvvBD37w61//enB9DlHiuoDcwV5LAAAAAIARt3jx4q1btwoh2tra6uvrb7zxxsznL1iwYMeOHQ0NDYqiJLe73e6ZM2cWFxcfPHjwkUceST5kNBrr6+sjkcjzzz9/8cUXZ+4ng8cee6yhocHr9d5///3XXntton3atGnnnXfe5Zdffs4555x66qnJLxnQXksD1ed1AbmDaAkAAAAAMPzKy8uTn27dutXn85WXl0+fPn337t1btmxR29Uth3pvU33bbbe1tbXNnTvX6XTOnz9/8+bNavv27dtXrlzpdDrXr1+/bNmyRA9CiF27di1ZssThcOzYsSOxEVK6fvqkdrV8+fJFixZNnjzZ7/ennH/nnXe+9tpr9957b8oLY7FY9mvWEleafMmJlpSf6a4LyB2s2AQAYOyIRqNer7e0tDR59j4AACNNXRCn7rWkdS0ja9u2bUePHn344Ye1LgS5jr2WAABAXnK73bIs6/X6PjdJBQAAQ5GYRkS0BCTjK00AAMaO0tJSIYTX643FYlrXAgDAWBM/QetCgNxCtAQAyA/xeDwYDGpdRa4rKioym82Kovh8Pq1rAQAgd1VUVEi9VFRUaF0XkJeIlgAAeUBRlGPHjqmrvbSuJdepS+G8Xm/mezwDADCetbS0xHtpaWnRui4gL7HXEgAgD+h0OpPJFIvFIpGIyWTSupycVlRUZLFYgsFge3t7ZWWl1uUAAMaFeDxuNBqnTJmidSFArgiHw2eccYbWVYwSoiUAQH5wuVw6nY4bn2WjrKzs2LFj3d3dJSUlBQUFWpcDABj7JEmKRCIPPvig2WzWuhYgJzzzzDPjZ1suoiUAQH4wGPg3K1tms9lms3V3d7e3t9fW1mpdDgBgvLjqqqusVqvWVQA54ciRI263W+sqRgnf/QIAMAaVlZVJktTT0xMIBLSuBQAAAGMZ3wADADAGGQyGkpISr9fb3t5usVgkSdK6IgDA2HfvvfcajUatqwBywl/+8pevfOUrWlcxSpi1BADA2ORwOHQ6nSzL3d3dWtcCABj77rjjDnIlIOHcc8+9+OKLta5ilEjjZ1spAADGG3XWksFgmDhxIjugAwAAYCTwKRMAgDGrpKTEZDJFo9GOjg6tawEAAMDYRLQEAMhXTLztlyRJLpdLCOHz+cLhsNblAAAAYAwiWgIA5CWPx/Ppp58Sl/TLYrEUFRUJIdra2rSuBQAAAGMQ0RIAIC/JshyLxTwej9aF5AGXy6XT6Xp6etjPGwAAAMOOaAkAkJccDocQwu/3y7KsdS25zmAwqG9XW1uboihalwMAAIAxhWgJAJCXzGazxWIRQni9Xq1ryQMOh8NgMMRiMd4uAAAADC+iJQBAvnI6nUKI7u7uaDSqdS25LrGfN7tTAQAAYHhJ3F4HAJC/jh8/HgqFHA5HWVmZ1rXkgWAwqE71AgAAAIYLs5YAAHmspKRECNHZ2ckWQtkgVwIAAMCwI1oCAOQxm81mNBoVReHeZwAAAIAmiJYAAPlNnbjk8/m0LgQAAAAYj4iWAAD5rbi4WKfTybIcDAa1rgUAAAAYd4iWAAD5TafT2Ww2wcQlAAAAQAtESwCAvKeuiQsEApFIROtaAAAAgPGFaAkAkPdMJlNhYaEQorOzU+ta8kwgEPD7/VpXAQAAgDxGtAQAGAvUiUudnZ2KomhdS94IBAKNjY0tLS3RaFTrWgAAAJCviJYAAGOB1Wo1GAyKojAHJ3tWq7WwsLCkpESv12tdCwAAAPKVFI/Hta4BAIBh4PF4Ojo6CgsLa2trta4lb8TjcUmStK4CAAAAeYxZSwCAMcJut0uS1NPTI8uy1rXkDXIlAAAADBHREgBgjNDr9RaLRQjR1dWldS0AAADAeEG0BAAYO4qLi4UQXV1dLPcGAAAARodB6wIAABg2VqvVYrEUFRVpXQgAAAAwXrCNNwAAAAAAAAaJBXEAAOBLZFnmmycAAABkiWgJAAB8obOz89ixYx0dHVoXAgAAgPxAtAQAAL5gMBji8bjX6w0EAlrXAgAAgDxAtAQAAL5gtVrtdrsQoqWlJRqNal0OAAAAch3REgAA+BKXy2U2m2OxWFNTE5suAQAAIDOiJQAA8CWSJNXU1BgMhlAo1NzcrHU5AAAAyGlESwAAIJVer6+qqpIkye/3ezwercsBAABA7iJaAgCMTeFwuLm5mTudDVpBQYHL5RJCdHR0sKU3AAAA0iFaAgCMTZFIpLu7u6urS+tC8pjdble39G5ubpZlWetyAAAAkIuIlgAAY5PFYrHb7ZWVlVoXkt9cLldBQYGiKM3NzYqiaF0OAAAAco7EnV8AAEAG0Wj0+PHj0WjUYrFUV1dLkqR1RQAAAMghzFoCAACZGAyGmpoanU4XDAZbWlq0LgcAAAC5hWgJAAD0w2QyqfOVuru72RkdAAAAyYiWAABA/woLC8vLy4UQHo+ns7NT63IAAACQK4iWAABAVoqLi51OpxCitbU1EAhoXQ4AAAByAtESAADIVmlpaVFRkRCiubk5HA5rXQ4AAAC0R7QEAAAGoLKysrCwUFGUpqYm7jMLAAAAiQ+FAABgQBRFaWxsdDqdFotF61oAAACgMaIlAMDY5/F4/H5/TU2NXq/XuhYAAABgTGFBHABg7PP7/eFw2O/3a10IAAAAMNYQLQEAxj6r1SqECAaDWhcCAAAAjDVESwCAsU+9qVkwGGQZOAAAADC8iJYAAGOf2WzW6/WKooRCIa1rAQAAAMYUoiUAwLig3suMNXEjrbu7W1EUrasAAADA6CFaAgCMC+p2S4FAQOtCxjKfz9fc3Ox2u1l4CAAAMH4QLQEAxgV11lI4HI5Go1rXMmZZLBaDwVBUVCRJkta1AAAAYJQQLQEAxgW9Xm82mwVr4kaSyWSaMGGCw+HQuhAAAACMHqIlAMB4oa6JI1oaUXq9XusSAAAAMKqIlgAA40VhYaEgWgIAAACGFdESAGC8KCws1Ol0sVgsHA5rXQsAAAAwRhAtAQDGC0mS1IlLPT09WtcCAAAAjBFESwCAcYQ1cVrp6enxer1aVwEAAIDhZ9C6AAAARg+zljQRi8WamppisVgkEnG5XJIkaV0RAAAAhg2zlgAA40hBQYFOp1MUhe2WRpNery8tLZUkqbOzs6GhIRaLaV0RAAAAhg3REgBgfGFNnCbsdnt1dbVOpwuFQsePH5dlWeuKAAAAMDyIlgAA4wtr4rRisVhqa2sNBkMkEmloaOBXAAAAMDYQLQEAxpdEtBSPx7WuZdwxm811dXUFBQWxWKyhocHj8WhdEQAAAIaKaAkAML6w3ZK2DAZDbW2tzWYTQnR0dDQ2NiqKonVRAAAAGDyJ72wBAONNW1ubEMJut5tMJq1rGb+6u7tbWlri8bjBYKiqqiooKNC6IgAAAAwG0RIAANBGOBxuamqKRCKSJJWVlZWUlGhdEQAAAAaMaAkAAGgmFos1NzerN+yz2+0ul0uSJK2LAgAAwAAQLQEAAI11dHSoW3qbzebKykoWKgIAAOQRoiUAAKC9QCDQ0tISi8UkSXK5XHa7XeuKAAAAkBWiJQAAkBNisVhLS0sgEBBCWCyWiooKg8GgdVEAAADoh07rAgAAAIQQQq/XV1dXl5WVSZLU09MTi8W0rggAAAD9Y9YSAADILeFwWJZlm82mdSEAAADoH9ESAAAAAAAABoktDAAA41Q8Hg+Hw0KIgoICrWsBAAAA8hV7LQEAximfz3f8+HGv16t1IQAAAEAeI1oCAIxTBQUFer1ep+OfwnyiKEpLS0skEtG6EAAAAPwf9loCAAB5o7293ev1mkymiRMnal0LAAAAhGCvJQAAkEeKi4tDoZDD4dC6EAAAAPwfZi0BAAAAAABgkNhgAgAAAAAAAINEtAQAAAAAAIBBIloCAABjRCQSOXbsWCAQ0LoQAACAcYS9lgAAwBjR0tLS1dUlhLBYLKWlpQUFBVpXBAAAMPYRLQEAgDEiFot5PJ7Ozk71443Vai0tLTWbzVrXBQAAMJYRLQEAIOLxuCRJWleB4SHLssfj6e7uVp8SMAEAgBGiKErisU6XdsehUCikKIrZbNbr9X2eEI1Ge6/oj8fjvRObeDyePKjKbDbbbLZ0o7e3tyuK4nA4jEZjnyeEw+HEB6dBKCgoMAz6xQAAjAHhcLipqUmSpIkTJ2pdC4aHyWSqrKx0Op1qwBQIBAKBQFFRkdPpJGACAGDsSUQwGcIdv98fiUQsFku6DwORSKS1tVV9rChKItNJ5Dh9NiYUFBTU1dWlG72trS0UClVXV1ut1j5PkGU5MfogFBUVZYiWuru7o9FocXFxumhJlmWv1zvo0e12O9ESAGBc0+v1kUhECKEoSoaPI8g7KQGT3+/3+/1Wq9XhcBQWFmpdHQAA444aAEmSlG6quKIoHo9HnAhuEtNzEj/jJwghYrGY+HLEYzQaTzrppHSjd3V1BQKB8vLydNFSPB4PBoODvbh+mEymeDye4aOmXq8vKirK0INOp8swxT7zl2d2u11RFIMhbf5jNBrtdnuGHjIrLCxkQRwAYLw7evRoLBarq6tj1+exKmWJXGFhocPhSPe1IQAASFCjnFgspj5Q8x1FUfp8IISorKxM11Vra2tnZ6fT6SwtLe3zBEVRjhw5MuhS9Xr95MmT0x31er2hUMhut1sslnSjJz4qJOc4iTwo+8ZxiFlLAIDxzmw2B4PBcDhMtDRWqTOYSktLvV5vV1dXT09PT0+PyWRyOBw2m41ttgAA40QkEpFlWa/XZ/jM09DQoAZJiThpQENkiJbU5CVDh5IkqXNn1DPV1Cb5cUKfJ2QuzOFwZD5Bp9MNZebOOMesJQDAeNfe3u71eu12e3l5uda1YMRFo1Gfz9fZ2al+uWowGOx2u91uT7etJgAAuUDpJRaL9Tl7qLKyMt0/al6vt7293WazZQiA1NncKY2JECeR7KT8TDwoKSnhO5txiFlLAIDxzmQyCSFkWda6EIwGg8FQVlbmcDg6Ozt9Pl80Gu3o6Ojp6ampqdG6NADA2JdYU5Zh45v29nZZllMipOyHiMVi6aIlo9FoNpszDC2EVPF/5AAAIABJREFUqKqqEkLoTkhMCwIyIFoCAIx36saH4XBY60IwevR6vdPpdDgc3d3dnZ2dJSUlWlcEAMhLialD6gP1p81mSxffBAKBpqamzHcT6+npCYVCvdvVlEel1+uT0x+9Xp84miE5KioqyrxXtBCCm11gEIiWAADjnclkkiRJUZRoNJr5ezyMMZIkFRcXFxcXa10IACC3RCKRaDSavOiszwgp3WQik8mU7hOFOgMo8ywkp9Op3rg2BQvNkLP4AA0AGO8kSTIajbIsh8NhoiWkiEQi6jfDWhcCABgesViss7NTCOF0OtOd4/F4urq6su+z90yidGcWFhaefPLJmf9Z4R6myDt8gAYAQJhMJlmWZVnmwxxStLa29vT0VFRU2Gw2rWsBAPwfdcei5AlEsVgs+WlxcXG6lV/xeLyjo0OSpAzRkl6vNxgMyYFRcmyU0jKgG0GoO14P+IKB3Ea0BAAAO3mjb4lbL2e4STMAYCTIshwKhWInZLkSLcFsNqeLlvR6fVFRkV6vj8fj6VKesrKysrKyoV4DMG4QLQEAQLSEvkmSNGHChHA4bDQata4FAMaUjo6OWCxWWlqabspPMBhsa2vL0IO6a3XyBKLkn+o9OtK9UL0JGoDhQrQEAADREjLJ8PeJECIYDBoMBvV/QgAwrqhTO6PRaO9ZRbFYrLCw0OFwpHttZ2dnLBaz2+3poiWTyWS1WvVJeq9EG7ErAzAwREsAAHCTOAxec3NzLBYzmUxFRUVWq5WlcwDGDEVRwuGwmhOp+VEiNlKfxuPxzD1kiJbsdrsQIsMuRRaLxWKxDLp4AKOJT88AAHxxkzhZlomWkL1YLGY2m3t6emRZ9ng8Ho/HYDCoGVNhYSEbtQLIZT09PZFIpLCwMN2a33A43NDQ0G8/6jSi3tOLMk/nLC0tHWTdAHIPn54BABAi6SZxfEeK7On1+pqaGkVRAoGA3+8PBALRaNTn8/l8Pp1Op37lbrVaySsBjILEXdISRMZ5Q16vNxAIVFRUpIuW1NW+6ZKjhJG6HgD5gw86AAAIIYT6wZrtljAIOp3OZrPZbLZ4PB4MBtWMKRaL+f1+v98vTuwYYrFYmMoEYBDULY1SJBamJRKl3svT9Hp9hmjJbDbH4/EM2ZDRaJw4ceKwXQaAsYtoCQAAIdjJG8NBkiSr1Wq1WoUQ4XA4EAgEg8FQKKROiPN6vTqdrqCgQM2Y2JUJgBBCUZQM+U48Hj969KiiKFn2lrhpWjZTiliSBmC4EC0BACDEiWgpEoloXQjGCLPZbDabnU6noijBYFCNmaLRaDAYDAaDQgidTldZWanmUADGnsRUowx3mezo6PB4PHa7vby8vM8TEvMce2dGfa5N46ZpADRBtAQAgBAnoiV1ZQEfzTGMdDpdUVFRUVGREEKW5Z6enmAw2NPTE4vF0u1vAiDHZViVlnxIPXnSpEnpNlxTZxVlvs/axIkTdTod/zAByGVESwAACCGEulJJp9MRLWHkmEwmk8mk3nI7HA5nuH1Sv3duAjBqPB5POBxO2R47G5Ik6fX6DMvZ7Ha73W7PvAUb9wEAkPukzBk5AAAARl9LS0tXV5fT6WQzFGBEhcPhjo4OdYFqunMaGhp6enpSGlOWpBkMhj7vpDbC5QNATiACBwAAyDlms7mwsLCwsDDdCYqiRCIRk8nELecwzvW5Ei2lpaKiIt2+ZoqiBAKBzNMDS0pKbDZbSmw0MlcDAHmJWUsAAAD5JxgMut1uSZKMRqO6ZbjJZDKbzXq9nrAJY09PT08oFOozRcrmz5mKiori4uI+D8VisUAgYDAYLBbLcFcNAOMFs5YAAADyTywWU7cGk2VZluXu7u7EIaPRqG7qlHjADAvkMkVROjo6YrFYhiVpgUDA6/WmO6puaZRyu7TEY51Ol2FfM71eny51AgBkiVlLAAAA+SoajconhMNhWZb73DBY/dPamIS8CcMrHo8nVqIpipJ4oM4tikajRUVFJSUl6V57+PBhIcTkyZPT/c/S7/cHAoF0yRFbGgGAtoiWAAAAxoh4PB6JRCKRiCzLiZ/RaLT3mS6XK93f+UCfZFkOBoPJmVHyz37/prDb7eXl5emOdnR0SJJUUlJCSAQA+YgFcQAAAGOEJEnqCrjkHYvVDb/D4bCaOkWj0UgkkmHT4nA43NjYaDabq6urR6VqjIZ4PB6PxzMEN62trZFIxOVypVs7Fg6H29raMgwhSZI6k6jPnxmWpAkhuBMiAOQ1oiUAAICxTKfTqft8Z3l+NBqNRqOZl8u1tbVFIhF9L4k1SsNROFKp8ZC63ExdgKa2qA+UjOLxuMViqampSdd5T0+PLMvRaDRdBmQymdS7pKkL0HqHR0w4AoBxi2gJAAAAXygsLKyrq8u8vqmnpyccDmc4IRE3qDNZUhQXF4+f+Cl+gqIokiQZDGk/fnd1dcmybLPZ0uWAsiwfO3Zs0JX0uQ9XQmlpaTwezzC3yGw2Z9hmGwAwnhEtAQDwhc7OTo/HU1RU5HK5tK4F0IZOpysoKMh8TmlpaawXRVGi0aiaX6gzZdK93GazpTvk8/k6OjpsNluGfXna2tri8bgkSZIkqQUnHvR7dUIIu92e7lAwGAyHwwUFBYWFhX2eEI/H1UVhalQkTiRHQgh1ZlDi8hOJUvLLDQbDpEmT0o0eCAT8fr/RaEwXLakXmBzYJSd3faZ4KTK8LUVFRRmOAgCQAdESAABfou5Eo3UVQE5L3sspRfLKrMTNwpLFYrEMGUdi9VaG0bu6ujJPwMksQ7QUCAR8Pp/T6cwQLXV2dg5u3H7DHavVajAYMswbMhqNp5566uBGBwBg5BAtAQDwhaKiooKCggwrVgBkJknSULZbKi4utlqtmV/udDqFELFYTJxY5KU+Hjqz2VxUVJQh3JEkqaysLPE0OSpKzBtK/FQlHvc7enFx8RDrBwBAE1K/NwoFAAAAAAAA+sR9HAAAAAAAADBIREsAAAAAAAAYJKIlAAAAAAAADBLREgAAAAAAAAaJaAkAAAAAAACDRLQEAAAAAACAQSJaAgAAAAAAwCARLQEA8CXxeLyrq8vj8WhdCAAAAJAHDFoXAABAzmlpaRFCFBcXGwz8QwkAAABkwqwlAAC+RJIkNVGKRqNa1wIAAADkOqIlAABSGY1GIUQkEtG6EAAAACDXES0BAJCKaAkAAADIEtESAACpWBAHAAAAZIloCQCAVERLAAAAQJaIlgAASEW0BAAAAGSJaAkAgFRESwAAAECWiJYAAEilRkuxWCwej2tdCwAAAJDTiJYAAEil1+slSRJMXAIAAAD6Q7QEAEAfWBMHAAAAZINoCQCAPhAtAQAAANkgWgIAoA96vV4QLQEAAAD9IVoCAKAPzFoCAAAAskG0BABAH4iWAAAAgGwQLQEA0Ac1WorFYloXAgAAAOQ0oiUAAPrArCUAAAAgG0RLAAD0gWgJAAAAyAbREgAAfVCjpXg8zpo4AAAAIAOiJQAA+iBJkl6vF0xcAgAAADIyaF0AAAA5qqysTKfTGY1GrQsBAAAAcpcUj8e1rgEAAAAAAAB5iQVxAAAAAAAAGCSiJQAAAAAAAAwS0RIAAAAAAAAGiWgJAAAAAAAAg0S0BAAAAAAAgEEiWgIAAAAAAMAgES0BAAAAAABgkIiWAABIKxwOBwIBRVG0LgQAAADIUURLAACk1dzc3NjYGAqFtC4EAAAAyFEGrQsAACB3mc1mSZK0rgIAAADIXVI8Hte6BgAAAAAAAOQlFsQBAAAAAABgkIiWAAAAAAAAMEhESwAAAAAAABgkoiUAAAAAAAAMEtESAAAAAAAABoloCQAAAAAAAINEtAQAAAAAAIBBIloCAAAAAADAIBm0LgAAgJzW0tISCoXKy8sLCwu1rgUAAADIOcxaAgAgk0gkIstyNBrVuhAAAAAgFxEtAQCQicFgEELEYjGtCwEAAAByEdESAACZ6PV6IQSzlgAAAIA+ES0BAJCJGi0xawkAAADoE9ESAACZEC0BAAAAGRAtAQCQCdESAAAAkAHREgAAmbCNNwAAAJAB0RIAAJkwawkAAIyyDz/88JZbbpk2bVpRUZHVap06der3vve9Dz/8MOU0KQvpTrZardOnT1+zZk1zc3PvAnp6erZu3XreeeeVlJQYDIbS0tKvf/3rd9999/vvvz+4K0ouZkBlZ1lJ4oU33HBD79FvuOGG3j1n9vLLL1977bW1tbVms7mysnLp0qWvvfba4K59PJDi8bjWNQAAkLsURTly5IgQ4pRTTsn+4wgAAMDgPPjgg3fffXfvr7X0ev2mTZvWrVuXaMnmk0niT/50J1dUVLzxxhuTJk1KtLS2tl500UUffPBB5g4HRB1dfW32ZWdfidqnJElms7mpqamkpCRxyOfzVVVVhcNh9fx+61cU5dZbb3300Uczj4hkzFoCACATnU6nflhh4hIAABhpP/7xj9evX68oysqVK998883u7u5AILB///5//ud/VhTljjvueOSRRxInx78sQ2Pvl7S2tj7zzDOTJ09uaWnZsGFD8jnr1q374IMPampqHn/88ePHj4fDYZ/P98Ybb2zatOnMM88c+jVmX/ZAK7noootCodCTTz6Z3PiLX/wiFArNmzcvy/LuvvvuRx991GAwrFu37qOPPgqHwy0tLb/4xS/OOeecIVz0GMesJQAA+vHpp59Go9G6urqCggKtawEAAGPW8ePHTznlFFmWf/rTn958880pRx9//PEVK1aYTKYjR47U1tb2fnnyzKAsj77++utz5swpLy9vaWlJNJaWlno8njfeeOPcc88d4hVlU1uGQ9lXonby5JNPXn/99TNmzHj77bcTh2bMmPHuu+8+9dRT1113XbqBEj7++OPTTjtNUZQ+fwVIh1lLAAD0g+2WAADAKPjJT34iy/LixYv7DDVuvvnmq6++Wpbln/zkJ8M14le/+lUhRGdnZ3JjIBAQQpx66qn9vrzP3YsGtKVRZtlXolq0aJHT6XznnXfee+89teXdd9999913nU7nVVddlU0P27dvVxTl/PPPJ1caEKIlAAD6QbQEAABGwUsvvSSE+Pa3v53uBPXQH/7wh+Ea8Z133hFCpMyBOuuss4QQK1euPHz48HANNDgDrcRsNqvbeO/cuVNtUR/ceOONZrM5mx5effVVIcRNN900qHrHLxbEAQDQj+bm5u7u7rKyMofDoXUtAABgzHI6nV6vt6Ojw+l09nlCe3u7y+UqLS1tb2/vfXRAC+La29v37t27Zs2azz777N57773vvvsSZ+7du/fSSy8NhUJCiMmTJ3/ta18744wzvvGNb1x44YXq922ZR8y+sd9Dg6jk/fff/9rXvuZwOBobG4UQVVVVPp/v/fffP/PMMzO/PyqHw+Hz+d57771Dhw5t3br1wIEDBoPh9NNPX7p06b/+678a/397dxrU1PU+cPwELwGqKLIM1qLIOgpO3bWW6qh1GZeqVamFilq0Flu3jtVanKHTOv60tS9sa10Hp+rIWLVI3WVRpFJcwEGrlbrhigqyJhocQvJ7kf/v/jOBhEuwRvT7eeEk55z7nOcc3pgn5944O9u49mVGaQkAgAaUlJRUVFS0bdvW29vb0bkAAIAXlrOzs16vr6mp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</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ConfigItem/Delete.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKbXkgJENvbW1hbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ0l0ZW06OkRlbGV0ZScpOwoKIyBnZXQgaGVscGVyIG9iamVjdCwgZGF0YWJhc2UgY2hhbmdlcyBzaG91bGQgYmUgcmVzdG9yZWQKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiMgZGVmaW5lIG5lZWRlZCB2YXJpYWJsZQpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCm15ICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlOwppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiQWRtaW46OklUU006OkNvbmZpZ0l0ZW06OkRlbGV0ZSBleGl0IGNvZGUgd2l0aG91dCBvcHRpb25zIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIG9wdGlvbiAtLWFsbCBhbmQgYXJndW1lbnQgLS1hY2NlcHQgbiAoIGNhbmNlbCBkZWxldGluZyBhbGwgY29uZmlnIGl0ZW0pCiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1hbGwnLCAnbicgKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMCwKICAgICJPcHRpb24gJy0tYWxsJyBuIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIGNsYXNzIG9wdGlvbnMgKGludmFsaWQgY2xhc3MpCm15ICRSYW5kb21DbGFzcyA9ICdUZXN0Q2xhc3MnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLWNsYXNzJywgJFJhbmRvbUNsYXNzICk7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiT3B0aW9uICdjbGFzcycgKGJ1dCBjbGFzcyAkUmFuZG9tQ2xhc3MgZG9lc24ndCBleGlzdCkgIiwKKTsKCiMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgpteSAkQ29uZmlnSXRlbUdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICBHcm91cCAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICBVc2VySUQgPT4gMSwKKTsKb2soICRDb25maWdJdGVtR3JvdXBJRCwgJ2dvdCBncm91cCBpZCBmb3IgaXRzbS1jb25maWdpdGVtJyApOwoKIyBhZGQgdGVzdCBnZW5lcmFsIGNhdGFsb2cgaXRlbQpteSAkR2VuZXJhbENhdGFsb2dJdGVtSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1BZGQoCiAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICAgID0+ICRSYW5kb21DbGFzcywKICAgIFZhbGlkSUQgPT4gMSwKICAgIENvbW1lbnQgPT4gJ0NvbW1lbnQnLAogICAgVXNlcklEICA9PiAxLAopOwoKJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgSXRlbUlEID0+ICRHZW5lcmFsQ2F0YWxvZ0l0ZW1JRCwKICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICBWYWx1ZSAgPT4gWyRDb25maWdJdGVtR3JvdXBJRF0sCik7CiRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgIEl0ZW1JRCA9PiAkR2VuZXJhbENhdGFsb2dJdGVtSUQsCiAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgVmFsdWUgID0+IFsnSW5jcmVtZW50YWwnXSwKKTsKCm9rKAogICAgJEdlbmVyYWxDYXRhbG9nSXRlbUlELAogICAgIlRlc3QgZ2VuZXJhbCBjYXRhbG9nIGl0ZW0gaXMgY3JlYXRlZCAtICRHZW5lcmFsQ2F0YWxvZ0l0ZW1JRCAiLAopOwoKIyBBZGQgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMKbXkgJENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbiA9IHsKICAgIFBhZ2VzID0+IFsKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnRGVzY3JpcHRpb24nLCAgICAjIHdpbGwgYmUgcmV1c2VkIGluIGNsYXNzIG5hbWUKICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgIENvbHVtbnMgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyJwogICAgICAgICAgICB9LAogICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgIH0KICAgIF0sCiAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICBUeXBlID0+ICdEZXNjcmlwdGlvbicsCiAgICAgICAgfQogICAgfSwKfTsKCiMgZ2V0IENvbmZpZ0l0ZW0gb2JqZWN0Cm15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgojIGdldCBsaXN0IG9mIGFsbCBkZXBsb3ltZW50IHN0YXRlcwpteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJVJldmVyc2VEZXBsU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKCiMgZ2V0IGxpc3Qgb2YgYWxsIGluY2lkZW50IHN0YXRlcwpteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVSZXZlcnNlSW5jaVN0YXRlTGlzdCA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07CgpteSBAQ29uZmlnSXRlbU51bWJlcnM7Cm15ICRDb25maWdJdGVtSUQ7CgpteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgojIGFkZCBhIGRlZmluaXRpb24gdG8gdGhlIGNsYXNzCm15ICRZQU1MRGVmaW5pdGlvbiA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgRGF0YSA9PiAkQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uLAopOwpvayggJFlBTUxEZWZpbml0aW9uLCAnZ290IHNvbWUgWUFNTCcgKTsKCm15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgIENsYXNzSUQgICAgPT4gJEdlbmVyYWxDYXRhbG9nSXRlbUlELAogICAgRGVmaW5pdGlvbiA9PiAkWUFNTERlZmluaXRpb24sCiAgICBVc2VySUQgICAgID0+IDEsCik7Cm9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICAgICAgJ0RlZmluaXRpb25BZGQoKSBzdWNjZXNzZnVsJyApOwpvayggJFJlc3VsdC0+e0RlZmluaXRpb25JRH0sICdnb3QgRGVmaW5pdGlvbklEJyApOwoKZm9yICggMSAuLiAxMCApIHsKCiAgICAjIGNyZWF0ZSBDb25maWdJdGVtIG51bWJlcgogICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgQ2xhc3NJRCA9PiAkR2VuZXJhbENhdGFsb2dJdGVtSUQsCiAgICApOwoKICAgICMgYWRkIHRlc3QgQ29uZmlnSXRlbQogICAgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NJJyAuICRSYW5kb21JRCsrLAogICAgICAgIENsYXNzSUQgICAgICA9PiAkR2VuZXJhbENhdGFsb2dJdGVtSUQsCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRSZXN1bHQtPntEZWZpbml0aW9uSUR9LAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkUmV2ZXJzZURlcGxTdGF0ZUxpc3R7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRSZXZlcnNlSW5jaVN0YXRlTGlzdHtPcGVyYXRpb25hbH0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKICAgIHB1c2ggQENvbmZpZ0l0ZW1OdW1iZXJzLCAkQ29uZmlnSXRlbU51bWJlcjsKCiAgICAjIGFkZCBuZXcgdmVyc2lvbnMgZm9yIHRoZSBsYXN0IGFkZGVkIGluIHByZXZpb3VzIGxvb3AKICAgIG15ICRDb25maWdJdGVtTmFtZSA9ICdUZXN0Q29uZmlnSXRlbScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKICAgIENPVU5UOgogICAgZm9yIG15ICRDb3VudCAoIDEgLi4gNTAgKSB7CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSAuICctJyAuICRDb3VudCwKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+IDEsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkUmV2ZXJzZURlcGxTdGF0ZUxpc3R7UGxhbm5lZH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkUmV2ZXJzZUluY2lTdGF0ZUxpc3R7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgb2soCiAgICAgICAgICAgICRWZXJzaW9uSUQsCiAgICAgICAgICAgICJWZXJzaW9uICRDb3VudCBmb3IgY29uZmlnIGl0ZW0gJENvbmZpZ0l0ZW1JRCBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OYW1lIiwKICAgICAgICApOwoKICAgICAgICAjIGNoYW5nZSB0aGUgZGF0ZSBpbnRvIHBhc3QgZm9yIHRoZSBmaXJzdCAyMCB2ZXJzaW9ucwogICAgICAgIG5leHQgQ09VTlQgaWYgJENvdW50ID4gMTA7CgogICAgICAgIG15ICRWZXJzaW9uVGVzdENyZWF0ZVRpbWUgPSAnMjAxMC0wMS0wMSAwMDowMDowMCc7CgogICAgICAgICMgaW5zZXJ0IG5ldyB2ZXJzaW9uCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnVVBEQVRFIGNvbmZpZ2l0ZW1fdmVyc2lvbgogICAgICAgICAgICAgICAgU0VUIGNyZWF0ZV90aW1lID0gPwogICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgICAgICBcJFZlcnNpb25UZXN0Q3JlYXRlVGltZSwKICAgICAgICAgICAgICAgIFwkVmVyc2lvbklELAogICAgICAgICAgICBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBjb21tYW5kIHdpdGggYWxsLW9sZGVyLXRoYW4tZGF5cy12ZXJzaW9ucyBvcHRpb25zIChkZWxldGUgYWxsIHZlcnNpb25zIG9sZGVyIHRoYW4gb25lIGRheSkKICAgICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJywgMSApOwoKICAgIGlzKAogICAgICAgICRFeGl0Q29kZSwKICAgICAgICAwLAogICAgICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zIDEiLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGlzdCBvZiByZW1haW5pbmcgdmVyc2lvbnMgb2YgdGhpcyBjb25maWcgaXRlbQogICAgbXkgJFZlcnNpb25MaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIHJlc3VsdCBzaG91bGQgb25seSBiZSA0MCB2ZXJzaW9ucyBub3cKICAgIGlzKAogICAgICAgIHNjYWxhciBAeyRWZXJzaW9uTGlzdH0sCiAgICAgICAgNDEsCiAgICAgICAgIk51bWJlciBvZiByZW1haW5pbmcgdmVyc2lvbnMgYWZ0ZXIgcnVubmluZyBjb21tYW5kIHdpdGggT3B0aW9ucyAtLWFsbC1vbGRlci10aGFuLWRheXMtdmVyc2lvbnMgMSIsCiAgICApOwoKICAgICMgY2hlY2sgY29tbWFuZCB3aXRoIGFsbC1idXQta2VlcC1sYXN0LXZlcnNpb25zIG9wdGlvbnMgKGRlbGV0ZSBhbGwgdmVyc2lvbnMgYnV0IGtlZXAgdGhlIGxhc3QgMzAgdmVyc2lvbnMpCiAgICAkRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMnLCAzMCApOwoKICAgIGlzKAogICAgICAgICRFeGl0Q29kZSwKICAgICAgICAwLAogICAgICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucyAzMCIsCiAgICApOwoKICAgICMgZ2V0IHRoZSBsaXN0IG9mIHJlbWFpbmluZyB2ZXJzaW9ucyBvZiB0aGlzIGNvbmZpZyBpdGVtCiAgICAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgICMgcmVzdWx0IHNob3VsZCBvbmx5IGJlIDQwIHZlcnNpb25zIG5vdwogICAgaXMoCiAgICAgICAgc2NhbGFyIEB7JFZlcnNpb25MaXN0fSwKICAgICAgICAzMCwKICAgICAgICAiTnVtYmVyIG9mIHJlbWFpbmluZyB2ZXJzaW9ucyBhZnRlciBydW5uaW5nIGNvbW1hbmQgd2l0aCBPcHRpb25zIC0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMgMzAiLAogICAgKTsKCiAgICAjIGNoZWNrIGNvbW1hbmQgd2l0aCBhbGwtb2xkLXZlcnNpb25zIG9wdGlvbnMgKGRlbGV0ZSBhbGwgb2xkIHZlcnNpb25zIGV4Y2VwdCB0aGUgbGFzdCBvbmUpCiAgICAkRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSgnLS1hbGwtb2xkLXZlcnNpb25zJyk7CgogICAgaXMoCiAgICAgICAgJEV4aXRDb2RlLAogICAgICAgIDAsCiAgICAgICAgIkV4aXQgY29kZTogT3B0aW9ucyAtLWFsbC1vbGQtdmVyc2lvbnMiLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGlzdCBvZiByZW1haW5pbmcgdmVyc2lvbnMgb2YgdGhpcyBjb25maWcgaXRlbQogICAgJFZlcnNpb25MaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIHJlc3VsdCBzaG91bGQgb25seSBiZSA0MCB2ZXJzaW9ucyBub3cKICAgIGlzKAogICAgICAgIHNjYWxhciBAeyRWZXJzaW9uTGlzdH0sCiAgICAgICAgMSwKICAgICAgICAiTnVtYmVyIG9mIHJlbWFpbmluZyB2ZXJzaW9ucyBhZnRlciBydW5uaW5nIGNvbW1hbmQgd2l0aCBPcHRpb25zIC0tYWxsLW9sZC12ZXJzaW9ucyIsCiAgICApOwp9CgojIGNoZWNrIGNvbW1hbmQgd2l0aCBjbGFzcyBvcHRpb25zICgkUmFuZG9tQ2xhc3MgY2xhc3MpIGFuZCBkZXBsb3ltZW50LXN0YXRlICdQbGFubmVkJwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tY2xhc3MnLCAkUmFuZG9tQ2xhc3MsICctLWRlcGxveW1lbnQtc3RhdGUnLCAnUGxhbm5lZCcgKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMCwKICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1jbGFzcyAkUmFuZG9tQ2xhc3MgLS1kZXBsb3ltZW50LXN0YXRlJyBQbGFubmVkIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIGNvbmZpZ2l0ZW0tbnVtYmVyIG9wdGlvbnMKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoCiAgICAnLS1jb25maWdpdGVtLW51bWJlcicsICRDb25maWdJdGVtTnVtYmVyc1swXSwgJy0tY29uZmlnaXRlbS1udW1iZXInLAogICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzFdCik7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiRXhpdCBjb2RlOiBPcHRpb25zIC0tY29uZmlnaXRlbS1udW1iZXIiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggY2xhc3Mgb3B0aW9ucyAoJFJhbmRvbUNsYXNzIGNsYXNzKQojIHRocmVlIGNvbmZpZyBJdGVtcyBvZiB0ZW4gY3JlYXRlZCBpbiB0ZXN0IHdlcmUgZGVsZXRlZCB3aXRoIHRoZSBwcmV2aW91cyBjb21tYW5kcwojIHdpdGggdGhlIG5leHQgY29tbWFuZCBvdGhlciBzZXZlbiB3aWxsIGJlIGRlbGV0ZWQKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLWNsYXNzJywgJFJhbmRvbUNsYXNzICk7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiRXhpdCBjb2RlOiBPcHRpb24gLS1jbGFzcyAkUmFuZG9tQ2xhc3MiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggY29uZmlnaXRlbS1udW1iZXIgb3B0aW9ucyBhbmQgbm90IGFsbG93ZWQgYWRkaXRpb25hbCBjbGFzcyBvcHRpb24KJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLWNvbmZpZ2l0ZW0tbnVtYmVyJywgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLCAnLS1jbGFzcycsICRSYW5kb21DbGFzcyApOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAxLAogICAgIkV4aXQgY29kZTogT3B0aW9ucyAtLWNvbmZpZ2l0ZW0tbnVtYmVyIC0tY2xhc3MiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggY29uZmlnaXRlbS1udW1iZXIgb3B0aW9ucyBhbmQgbm90IGFsbG93ZWQgYWRkaXRpb25hbCBkZXBsb3ltZW50IHN0YXRlIG9wdGlvbgokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tY29uZmlnaXRlbS1udW1iZXInLCAkQ29uZmlnSXRlbU51bWJlcnNbMF0sICctLWRlcGxveW1lbnQtc3RhdGUnLCAnUGxhbm5lZCcgKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1jb25maWdpdGVtLW51bWJlciAtLWRlcGxveW1lbnQtc3RhdGUiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggLS1hbGwsIC0tYWxsLW9sZC12ZXJzaW9ucywgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucywgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zIG1peGVkIHRvZ2V0aGVyLgokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSgKICAgICctLWFsbCcsICctLWFsbC1vbGQtdmVyc2lvbnMnLCAgICAgICAgICAgICAnLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucycsCiAgICAyLCAgICAgICAnLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJywgJzEwJwopOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAxLAogICAgIkV4aXQgY29kZTogT3B0aW9ucyAtLWFsbCAtLWFsbC1vbGQtdmVyc2lvbnMgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucyAyIC0tYWxsLW9sZGVyLXRoYW4tZGF5cy12ZXJzaW9ucyAxMCIsCik7Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ConfigItem/ListDuplicates.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKCm91ciAkU2VsZjsKCiMgZ2V0IGNvbW1hbmQgb2JqZWN0Cm15ICRDb21tYW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcycpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBjaGVjayBjb21tYW5kIHdpdGhvdXQgYW55IG9wdGlvbnMKbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiTm8gb3B0aW9ucyAtIGxpc3QgYWxsIGNvbmZpZyBpdGVtcyBpbiBwcm9kdWN0aXZlIHN0YXRlcyIsCik7CgojIGNoZWNrIGNvbW1hbmQgd2l0aCAtLWNsYXNzIG9wdGlvbnMgKGludmFsaWQgY2xhc3MpCm15ICRSYW5kb21DbGFzcyA9ICdOb25FeGlzdGluZ0NsYXNzJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1jbGFzcycsICRSYW5kb21DbGFzcyApOwoKJFNlbGYtPklzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJPcHRpb24gJ2NsYXNzJyAoYnV0IGNsYXNzICRSYW5kb21DbGFzcyBkb2Vzbid0IGV4aXN0KSAiLAopOwoKIyBhZGQgdGVzdCBjb25maWcgaXRlbQpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCm15ICRDb25maWdJdGVtR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgIEdyb3VwICA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgIFVzZXJJRCA9PiAxLAopOwoKIyBhZGQgdGVzdCBnZW5lcmFsIGNhdGFsb2cgaXRlbQpteSAkR2VuZXJhbENhdGFsb2dIYXJkd2FyZUlEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgICA9PiAkUmFuZG9tQ2xhc3MgLiAnSGFyZHdhcmUnLAogICAgVmFsaWRJRCA9PiAxLAogICAgQ29tbWVudCA9PiAnQ29tbWVudCcsCiAgICBVc2VySUQgID0+IDEsCik7CgokR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICBJdGVtSUQgPT4gJEdlbmVyYWxDYXRhbG9nSGFyZHdhcmVJRCwKICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICBWYWx1ZSAgPT4gWyRDb25maWdJdGVtR3JvdXBJRF0sCik7CiRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgIEl0ZW1JRCA9PiAkR2VuZXJhbENhdGFsb2dIYXJkd2FyZUlELAogICAgS2V5ICAgID0+ICdWZXJzaW9uU3RyaW5nTW9kdWxlJywKICAgIFZhbHVlICA9PiBbJ0luY3JlbWVudGFsJ10sCik7CgojIGFkZCB0ZXN0IGdlbmVyYWwgY2F0YWxvZyBpdGVtCm15ICRHZW5lcmFsQ2F0YWxvZ1NvZnR3YXJlSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1BZGQoCiAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICAgID0+ICRSYW5kb21DbGFzcyAuICdTb2Z0d2FyZScsCiAgICBWYWxpZElEID0+IDEsCiAgICBDb21tZW50ID0+ICdDb21tZW50JywKICAgIFVzZXJJRCAgPT4gMSwKKTsKCiRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgIEl0ZW1JRCA9PiAkR2VuZXJhbENhdGFsb2dTb2Z0d2FyZUlELAogICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgIFZhbHVlICA9PiBbJENvbmZpZ0l0ZW1Hcm91cElEXSwKKTsKJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgSXRlbUlEID0+ICRHZW5lcmFsQ2F0YWxvZ1NvZnR3YXJlSUQsCiAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgVmFsdWUgID0+IFsnSW5jcmVtZW50YWwnXSwKKTsKCiMgZ2V0ICdQcm9kdWN0aW9uJyBkZXBsb3ltZW50IHN0YXRlIElEcwpteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKbXkgJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCA9ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZi0+e0l0ZW1JRH07CgojIGdldCBDb25maWdJdGVtIG9iamVjdApteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBudW1iZXIKbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgIENsYXNzSUQgPT4gJEdlbmVyYWxDYXRhbG9nSGFyZHdhcmVJRCwKKTsKCm15ICRDb25maWdJdGVtTmFtZSA9ICdUZXN0Q29uZmlnSXRlbScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgQENvbmZpZ0l0ZW1JRDsKCiMgYWRkIHRoZSBuZXcgQ29uZmlnSXRlbQpteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgIE5hbWUgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgIENsYXNzSUQgICAgID0+ICRHZW5lcmFsQ2F0YWxvZ0hhcmR3YXJlSUQsCiAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgIFVzZXJJRCAgICAgID0+IDEsCik7CnB1c2ggQENvbmZpZ0l0ZW1JRCwgJENvbmZpZ0l0ZW1JRDsKCiMgYWRkIHRoZSBuZXcgZHVwbGljYXRlIENvbmZpZ0l0ZW0KJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgTmFtZSAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgQ2xhc3NJRCAgICAgPT4gJEdlbmVyYWxDYXRhbG9nSGFyZHdhcmVJRCwKICAgIERlcGxTdGF0ZUlEID0+ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQsCiAgICBJbmNpU3RhdGVJRCA9PiAxLAogICAgVXNlcklEICAgICAgPT4gMSwKKTsKcHVzaCBAQ29uZmlnSXRlbUlELCAkQ29uZmlnSXRlbUlEOwoKIyBhZGQgdGhlIG5ldyBkdXBsaWNhdGUgQ29uZmlnSXRlbSBpbiBTb2Z0d2FyZSBjYXRhbG9nIGNsYXNzCiRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgIE5hbWUgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgIENsYXNzSUQgICAgID0+ICRHZW5lcmFsQ2F0YWxvZ1NvZnR3YXJlSUQsCiAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgIFVzZXJJRCAgICAgID0+IDEsCik7CnB1c2ggQENvbmZpZ0l0ZW1JRCwgJENvbmZpZ0l0ZW1JRDsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tY2xhc3MgSGFyZHdhcmUgb3B0aW9ucwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tY2xhc3MnLCAiJHtSYW5kb21DbGFzc31IYXJkd2FyZSIgKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiT3B0aW9uICdjbGFzcycgKCR7UmFuZG9tQ2xhc3N9SGFyZHdhcmUpICIsCik7CgojIGNoZWNrIGNvbW1hbmQgd2l0aCAtLXNjb3BlIG9wdGlvbnMgKGludmFsaWQgc2NvcGUpCm15ICRSYW5kb21TY29wZSA9ICdzY29wZScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tc2NvcGUnLCAkUmFuZG9tU2NvcGUgKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiT3B0aW9uICdzY29wZScgKGJ1dCBwcm92aWRlZCBpbnZhbGlkIHZhbHVlIGZvciBvcHRpb24gJy0tc2NvcGUnIC0gJFJhbmRvbVNjb3BlICkgIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tc2NvcGUgY2xhc3Mgb3B0aW9ucwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tc2NvcGUnLCAnY2xhc3MnICk7CgokU2VsZi0+SXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIk9wdGlvbiAnc2NvcGUnIChjbGFzcykgIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tc2NvcGUgZ2xvYmFsIG9wdGlvbnMKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLXNjb3BlJywgJ2dsb2JhbCcgKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiT3B0aW9uICdzY29wZScgKGdsb2JhbCkgIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tYWxsLXN0YXRlcyBvcHRpb25zCiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCctLWFsbC1zdGF0ZXMnKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiT3B0aW9uICdzY29wZScgKGFsbC1zdGF0ZXMpICIsCik7CgojIGNsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJzZQoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ConfigItem/UpgradeTo11.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0IHF3KGRlY29kZV9iYXNlNjQpOwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyBUT0RPOiB0ZXN0IHRoZSBjb21tYW5kCiNteSAkQ29tbWFuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6VXBncmFkZVRvMTEnKTsKCiMgZ2V0IGhlbHBlciBvYmplY3QsIGRhdGFiYXNlIGNoYW5nZXMgc2hvdWxkIGJlIHJlc3RvcmVkCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7ICAgICMjIG5vIGNyaXRpYyBxdyhWYXJpYWJsZXM6OlByb2hpYml0VW51c2VkVmFyc1N0cmljdGVyKQoKI215ICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlOwojaXMoCiMgICAgJEV4aXRDb2RlLAojICAgIDEsCiMgICAgIkFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpVcGdyYWRlVG8xMSBleGl0IGNvZGUgd2l0aG91dCBvcHRpb25zIiwKIyk7CgpteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiMgU2V0dXAgb2YgdGVzdCBkYXRhLCB3aGljaCBjb25mb3JtcyB0byB0aGUgT1RPQk8gMTAuMSBmb3JtYXQKCiMgdGFibGUgZ2VuZXJhbF9jYXRhbG9nCm15ICVDb25maWdJdGVtQ2xhc3NOYW1lMklEOwp7CiAgICAjIFRoZSBuYW1lcyBvZiB0aGUgY29uZmlnIGl0ZW0gY2xhc3NlcyBhcmUga2VwdCBpbiB0aGUgZ2VuZXJhbCBjYXRhbG9nLgogICAgIyBMZXQncyBhZGQgY2xhc3NlcyB3aXRoIG5hbWVzIHRoYXQgaGF2ZSB0aGUgcHJlZml4ICdUZXN0VXBncmFkZScsCiAgICAjIFRyeSB0byBub3cgbWVkZGxlIHdpdGggZXhpc3RpbmcgZGF0YS4KICAgIG15ICRHZW5lcmFsQ2F0YWxvZ0NsYXNzID0gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJzsKICAgIG15ICRWYWxpZElEICAgICAgICAgICAgID0gMTsKICAgIG15IEBOYW1lcyAgICAgICAgICAgICAgID0gbWFwIHsgam9pbiAnXycsICdUZXN0VXBncmFkZScsICRfIH0gcXcoQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayBTb2Z0d2FyZSk7CiAgICBteSAkTnVtUm93cyAgICAgICAgICAgICA9ICREQk9iamVjdC0+RG9BcnJheSgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsCklOU0VSVCBJTlRPIGdlbmVyYWxfY2F0YWxvZyAoCiAgICBnZW5lcmFsX2NhdGFsb2dfY2xhc3MsCiAgICBuYW1lLAogICAgdmFsaWRfaWQsCiAgICBjcmVhdGVfdGltZSwKICAgIGNyZWF0ZV9ieSwKICAgIGNoYW5nZV90aW1lLAogICAgY2hhbmdlX2J5CiAgKQogIFZBTFVFUyAoPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsIDEsIGN1cnJlbnRfdGltZXN0YW1wLCAxKQpFTkRfU1FMCiAgICAgICAgQmluZCA9PiBbICRHZW5lcmFsQ2F0YWxvZ0NsYXNzLCBcQE5hbWVzLCAkVmFsaWRJRCBdLAogICAgKTsKICAgIGlzKCAkTnVtUm93cywgc2NhbGFyIEBOYW1lcywgJ251bWJlciBvZiByb3dzIGluc2VydGVkIGludG8gZ2VuZXJhbF9jYXRhbG9nJyApOwoKICAgICVDb25maWdJdGVtQ2xhc3NOYW1lMklEID0gJERCT2JqZWN0LT5TZWxlY3RNYXBwaW5nKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIG5hbWUsIGlkIEZST00gZ2VuZXJhbF9jYXRhbG9nIFdIRVJFIG5hbWUgTElLRSAiVGVzdFVwZ3JhZGVfJSInLAogICAgKTsKICAgIG15ICVFeHBlY3RlZENvbmZpZ0l0ZW1DbGFzc05hbWUySUQgPSBtYXAgeyAkXyA9PiBtYXRjaChxci9bMC05XSsvKSB9IEBOYW1lczsKICAgIGlzKAogICAgICAgIFwlQ29uZmlnSXRlbUNsYXNzTmFtZTJJRCwKICAgICAgICBcJUV4cGVjdGVkQ29uZmlnSXRlbUNsYXNzTmFtZTJJRCwKICAgICAgICAnY29uZmlnIGl0ZW0gbmFtZXMgd2VyZSBpbnNlcnRlZCcKICAgICk7Cn0KCiMgdGFibGUgY29uZmlnaXRlbV9kZWZpbml0aW9uCnsKICAgICMgYWRkIHNhbXBsZSBkYXRhIGZvciB0aGUgdGFibGUgY29uZmlnaXRlbV9kZWZpbml0aW9uCiAgICBteSAkUm93cyA9IEdldENvbmZpZ0l0ZW1EZWZpbml0aW9uUm93cygpOwoKICAgICMgQWRkIHRoZSBjbGFzc19pZCBmb3IgdGhpcyBydW4gb2YgdGhlIHRlc3Qgc2NyaXB0CiAgICBteSBAQ2xhc3NJRHMgICAgPSBtYXAgeyAwICsgJENvbmZpZ0l0ZW1DbGFzc05hbWUySUR7ICRfLT57Y2xhc3NfbmFtZX0gfSB9ICRSb3dzLT5AKjsKICAgIG15IEBEZWZpbml0aW9ucyA9IG1hcCB7ICRfLT57Y29uZmlnaXRlbV9kZWZpbml0aW9ufSB9ICRSb3dzLT5AKjsKCiAgICBteSAkTnVtUm93cyA9ICREQk9iamVjdC0+RG9BcnJheSgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsCklOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiAoCiAgICBjbGFzc19pZCwKICAgIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiwKICAgIGR5bmFtaWNmaWVsZF9kZWZpbml0aW9uLAogICAgdmVyc2lvbiwKICAgIGNyZWF0ZV90aW1lLAogICAgY3JlYXRlX2J5CiAgKQogIFZBTFVFUyAoID8sID8sICctLS0ge30nLCAxLCBjdXJyZW50X3RpbWVzdGFtcCwgMSApCkVORF9TUUwKICAgICAgICBCaW5kID0+IFsgXEBDbGFzc0lEcywgXEBEZWZpbml0aW9ucyBdLAogICAgKTsKICAgIGlzKCAkTnVtUm93cywgc2NhbGFyIEBDbGFzc0lEcywgJ251bWJlciBvZiByb3dzIGluc2VydGVkIGludG8gY29uZmlnaXRlbV9kZWZpbml0aW9uJyApOwoKICAgICMgcmV0cmlldmUgdGhlIGRlZmluaXRpb25zIGFzIGEgc2FuaXR5IGNoZWNrCiAgICBteSAkUGxhY2Vob2xkZXJzICAgICAgICAgPSBqb2luICcsICcsIG1hcCB7Jz8nfSBAQ2xhc3NJRHM7CiAgICBteSBAQmluZHMgICAgICAgICAgICAgICAgPSBtYXAgeyBcJF8gfSBAQ2xhc3NJRHM7CiAgICBteSBAUmV0cmlldmVkRGVmaW5pdGlvbnMgPSAkREJPYmplY3QtPlNlbGVjdENvbEFycmF5KAogICAgICAgIFNRTCA9PiA8PCJFTkRfU1FMIiwKU0VMRUNUIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbgogIEZST00gY29uZmlnaXRlbV9kZWZpbml0aW9uCiAgV0hFUkUgY2xhc3NfaWQgSU4gKCAkUGxhY2Vob2xkZXJzICkKICBPUkRFUiBCWSBjb25maWdpdGVtX2RlZmluaXRpb24KRU5EX1NRTAogICAgICAgIEJpbmQgPT4gXEBCaW5kcywKICAgICk7CiAgICBpcygKICAgICAgICBcQFJldHJpZXZlZERlZmluaXRpb25zLAogICAgICAgIFsgc29ydCBARGVmaW5pdGlvbnMgXSwKICAgICAgICAnaW5zZXJ0IGludG8gY29uZmlnaXRlbV9kZWZpbml0aW9uJwogICAgKTsKfQoKc3ViIEdldENvbmZpZ0l0ZW1EZWZpbml0aW9uUm93cyB7CgogICAgIyBUaGlzIGlzIGJhc2VkIG9uIHRoZSBKU09OIGR1bXAgb2YgY29uZmlnaXRlbV9kZWZpbml0aW9uIGZyb20gREJlYXZlci4KICAgICMgVGhlIGNsYXNzIG5hbWUgd2FzIGFkZGVkIG1hbnVhbGx5LCBiZWNhdXNlIHRoZSBjbGFzc19pZCBjaGFuZ2VzIGZvciBldmVyeSBydW4uCiAgICAjIFJlbWVtYmVyIHRoYXQgSlNPTiBkb2VzIG5vdCBhbGxvdyB0cmFpbGluZyBjb21tYXMuCiAgICBteSAkSlNPTiA9IDw8J0VORF9KU09OJzsKewoiY29uZmlnaXRlbV9kZWZpbml0aW9uIjogWwogICAgewogICAgICAgICJjbGFzc19uYW1lIiA6ICJUZXN0VXBncmFkZV9Db21wdXRlciIsCiAgICAgICAgImNsYXNzX2lkIiA6IG51bGwsCiAgICAgICAgImNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiIgOiAiTFMwdENpMGdTMlY1T2lCV1pXNWtiM0lLSUNCT1lXMWxPaUJXWlc1a2IzSUtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQlVaWGgwQ2lBZ0lDQlRhWHBsT2lBMU1Bb2dJQ0FnVFdGNFRHVnVaM1JvT2lBMU1Bb2dJQ0FnSXlCRmVHRnRjR3hsSUdadmNpQkRTU0JoZEhSeWFXSjFkR1VnYzNsdWRHRjRJR05vWldOcklHWnZjaUIwWlhoMElHRnVaQ0IwWlhoMFlYSmxZU0JtYVdWc1pITUtJQ0FnSUNOU1pXZEZlRG9nWGtGQ1F5NHFDaUFnSUNBalVtVm5SWGhGY25KdmNrMWxjM05oWjJVNklGWmhiSFZsSUcxMWMzUWdjM1JoY25RZ2QybDBhQ0JCUWtNaENnb3RJRXRsZVRvZ1RXOWtaV3dLSUNCT1lXMWxPaUJOYjJSbGJBb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURVd0Nnb3RJRXRsZVRvZ1JHVnpZM0pwY0hScGIyNEtJQ0JPWVcxbE9pQkVaWE5qY21sd2RHbHZiZ29nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRlJsZUhSQmNtVmhDZ290SUV0bGVUb2dWSGx3WlFvZ0lFNWhiV1U2SUZSNWNHVUtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQkhaVzVsY21Gc1EyRjBZV3h2WndvZ0lDQWdRMnhoYzNNNklFbFVVMDA2T2tOdmJtWnBaMGwwWlcwNk9rTnZiWEIxZEdWeU9qcFVlWEJsQ2lBZ0lDQlVjbUZ1YzJ4aGRHbHZiam9nTVFvS0xTQkxaWGs2SUVOMWMzUnZiV1Z5U1VRS0lDQk9ZVzFsT2lCRGRYTjBiMjFsY2lCRGIyMXdZVzU1Q2lBZ1UyVmhjbU5vWVdKc1pUb2dNUW9nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nUTNWemRHOXRaWEpEYjIxd1lXNTVDZ290SUV0bGVUb2dUM2R1WlhJS0lDQk9ZVzFsT2lCUGQyNWxjZ29nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRU4xYzNSdmJXVnlDZ290SUV0bGVUb2dVMlZ5YVdGc1RuVnRZbVZ5Q2lBZ1RtRnRaVG9nVTJWeWFXRnNJRTUxYldKbGNnb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURFd01Bb0tMU0JMWlhrNklFOXdaWEpoZEdsdVoxTjVjM1JsYlFvZ0lFNWhiV1U2SUU5d1pYSmhkR2x1WnlCVGVYTjBaVzBLSUNCSmJuQjFkRG9LSUNBZ0lGUjVjR1U2SUZSbGVIUUtJQ0FnSUZOcGVtVTZJRFV3Q2lBZ0lDQk5ZWGhNWlc1bmRHZzZJREV3TUFvS0xTQkxaWGs2SUVOUVZRb2dJRTVoYldVNklFTlFWUW9nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRBb2dJQ0FnVTJsNlpUb2dOVEFLSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEF3Q2lBZ1EyOTFiblJOWVhnNklERTJDZ290SUV0bGVUb2dVbUZ0Q2lBZ1RtRnRaVG9nVW1GdENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQlVaWGgwQ2lBZ0lDQlRhWHBsT2lBMU1Bb2dJQ0FnVFdGNFRHVnVaM1JvT2lBeE1EQUtJQ0JEYjNWdWRFMWhlRG9nTVRBS0NpMGdTMlY1T2lCSVlYSmtSR2x6YXdvZ0lFNWhiV1U2SUVoaGNtUWdSR2x6YXdvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1ZHVjRkQW9nSUNBZ1UybDZaVG9nTlRBS0lDQWdJRTFoZUV4bGJtZDBhRG9nTVRBd0NpQWdRMjkxYm5STllYZzZJREV3Q2lBZ1UzVmlPZ29nSUMwZ1MyVjVPaUJEWVhCaFkybDBlUW9nSUNBZ1RtRnRaVG9nUTJGd1lXTnBkSGtLSUNBZ0lFbHVjSFYwT2dvZ0lDQWdJQ0JVZVhCbE9pQlVaWGgwQ2lBZ0lDQWdJRk5wZW1VNklESXdDaUFnSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEFLQ2kwZ1MyVjVPaUJHVVVST0NpQWdUbUZ0WlRvZ1JsRkVUZ29nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRlJsZUhRS0lDQWdJRk5wZW1VNklEVXdDaUFnSUNCTllYaE1aVzVuZEdnNklERXdNQW9LTFNCTFpYazZJRTVKUXdvZ0lFNWhiV1U2SUU1bGRIZHZjbXNnUVdSaGNIUmxjZ29nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRBb2dJQ0FnVTJsNlpUb2dOVEFLSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEF3Q2lBZ0lDQlNaWEYxYVhKbFpEb2dNUW9nSUVOdmRXNTBUV2x1T2lBd0NpQWdRMjkxYm5STllYZzZJREV3Q2lBZ1EyOTFiblJFWldaaGRXeDBPaUF4Q2lBZ1UzVmlPZ29nSUMwZ1MyVjVPaUJKVUc5MlpYSkVTRU5RQ2lBZ0lDQk9ZVzFsT2lCSlVDQnZkbVZ5SUVSSVExQUtJQ0FnSUVsdWNIVjBPZ29nSUNBZ0lDQlVlWEJsT2lCSFpXNWxjbUZzUTJGMFlXeHZad29nSUNBZ0lDQkRiR0Z6Y3pvZ1NWUlRUVG82UTI5dVptbG5TWFJsYlRvNldXVnpUbThLSUNBZ0lDQWdWSEpoYm5Oc1lYUnBiMjQ2SURFS0lDQWdJQ0FnVW1WeGRXbHlaV1E2SURFS0lDQXRJRXRsZVRvZ1NWQkJaR1J5WlhOekNpQWdJQ0JPWVcxbE9pQkpVQ0JCWkdSeVpYTnpDaUFnSUNCVFpXRnlZMmhoWW14bE9pQXhDaUFnSUNCSmJuQjFkRG9LSUNBZ0lDQWdWSGx3WlRvZ1ZHVjRkQW9nSUNBZ0lDQlRhWHBsT2lBME1Bb2dJQ0FnSUNCTllYaE1aVzVuZEdnNklEUXdDaUFnSUNBZ0lGSmxjWFZwY21Wa09pQXhDaUFnSUNCRGIzVnVkRTFwYmpvZ01Bb2dJQ0FnUTI5MWJuUk5ZWGc2SURJd0NpQWdJQ0JEYjNWdWRFUmxabUYxYkhRNklEQUtDaTBnUzJWNU9pQkhjbUZ3YUdsalFXUmhjSFJsY2dvZ0lFNWhiV1U2SUVkeVlYQm9hV01nUVdSaGNIUmxjZ29nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRBb2dJQ0FnVTJsNlpUb2dOVEFLSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEF3Q2dvdElFdGxlVG9nVDNSb1pYSkZjWFZwY0cxbGJuUUtJQ0JPWVcxbE9pQlBkR2hsY2lCRmNYVnBjRzFsYm5RS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFJCY21WaENpQWdJQ0JTWlhGMWFYSmxaRG9nTVFvZ0lFTnZkVzUwVFdsdU9pQXdDaUFnUTI5MWJuUkVaV1poZFd4ME9pQXdDZ290SUV0bGVUb2dWMkZ5Y21GdWRIbEZlSEJwY21GMGFXOXVSR0YwWlFvZ0lFNWhiV1U2SUZkaGNuSmhiblI1SUVWNGNHbHlZWFJwYjI0Z1JHRjBaUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRVJoZEdVS0lDQWdJRmxsWVhKUVpYSnBiMlJRWVhOME9pQXlNQW9nSUNBZ1dXVmhjbEJsY21sdlpFWjFkSFZ5WlRvZ01UQUtDaTBnUzJWNU9pQkpibk4wWVd4c1JHRjBaUW9nSUU1aGJXVTZJRWx1YzNSaGJHd2dSR0YwWlFvZ0lGTmxZWEpqYUdGaWJHVTZJREVLSUNCSmJuQjFkRG9LSUNBZ0lGUjVjR1U2SUVSaGRHVUtJQ0FnSUZKbGNYVnBjbVZrT2lBeENpQWdJQ0JaWldGeVVHVnlhVzlrVUdGemREb2dNakFLSUNBZ0lGbGxZWEpRWlhKcGIyUkdkWFIxY21VNklERXdDaUFnUTI5MWJuUk5hVzQ2SURBS0lDQkRiM1Z1ZEVSbFptRjFiSFE2SURBS0NpMGdTMlY1T2lCT2IzUmxDaUFnVG1GdFpUb2dUbTkwWlFvZ0lGTmxZWEpqYUdGaWJHVTZJREVLSUNCSmJuQjFkRG9LSUNBZ0lGUjVjR1U2SUZSbGVIUkJjbVZoQ2lBZ0lDQlNaWEYxYVhKbFpEb2dNUW9nSUVOdmRXNTBUV2x1T2lBd0NpQWdRMjkxYm5SRVpXWmhkV3gwT2lBd0NnPT0iLAogICAgICAgICJkeW5hbWljZmllbGRfZGVmaW5pdGlvbiIgOiAiTFMwdElIdDlDZz09IiwKICAgICAgICAidmVyc2lvbiIgOiAxLAogICAgICAgICJjcmVhdGVfdGltZSIgOiAiMjAyMy0wNy0xM1QxMDoyNTo1OS4wMDBaIiwKICAgICAgICAiY3JlYXRlX2J5IiA6IDEKICAgIH0sCiAgICB7CiAgICAgICAgImNsYXNzX25hbWUiIDogIlRlc3RVcGdyYWRlX0hhcmR3YXJlIiwKICAgICAgICAiY2xhc3NfaWQiIDogbnVsbCwKICAgICAgICAiY29uZmlnaXRlbV9kZWZpbml0aW9uIiA6ICJMUzB0Q2kwZ1MyVjVPaUJXWlc1a2IzSUtJQ0JPWVcxbE9pQldaVzVrYjNJS0lDQlRaV0Z5WTJoaFlteGxPaUF4Q2lBZ1NXNXdkWFE2Q2lBZ0lDQlVlWEJsT2lCVVpYaDBDaUFnSUNCVGFYcGxPaUExTUFvZ0lDQWdUV0Y0VEdWdVozUm9PaUExTUFvS0xTQkxaWGs2SUUxdlpHVnNDaUFnVG1GdFpUb2dUVzlrWld3S0lDQlRaV0Z5WTJoaFlteGxPaUF4Q2lBZ1NXNXdkWFE2Q2lBZ0lDQlVlWEJsT2lCVVpYaDBDaUFnSUNCVGFYcGxPaUExTUFvZ0lDQWdUV0Y0VEdWdVozUm9PaUExTUFvS0xTQkxaWGs2SUVSbGMyTnlhWEIwYVc5dUNpQWdUbUZ0WlRvZ1JHVnpZM0pwY0hScGIyNEtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQlVaWGgwUVhKbFlRb0tMU0JMWlhrNklGUjVjR1VLSUNCT1lXMWxPaUJVZVhCbENpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1IyVnVaWEpoYkVOaGRHRnNiMmNLSUNBZ0lFTnNZWE56T2lCSlZGTk5PanBEYjI1bWFXZEpkR1Z0T2pwSVlYSmtkMkZ5WlRvNlZIbHdaUW9nSUNBZ1ZISmhibk5zWVhScGIyNDZJREVLQ2kwZ1MyVjVPaUJEZFhOMGIyMWxja2xFQ2lBZ1RtRnRaVG9nUTNWemRHOXRaWElnUTI5dGNHRnVlUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRU4xYzNSdmJXVnlRMjl0Y0dGdWVRb0tMU0JMWlhrNklFOTNibVZ5Q2lBZ1RtRnRaVG9nVDNkdVpYSUtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQkRkWE4wYjIxbGNnb0tMU0JMWlhrNklGTmxjbWxoYkU1MWJXSmxjZ29nSUU1aGJXVTZJRk5sY21saGJDQk9kVzFpWlhJS0lDQlRaV0Z5WTJoaFlteGxPaUF4Q2lBZ1NXNXdkWFE2Q2lBZ0lDQlVlWEJsT2lCVVpYaDBDaUFnSUNCVGFYcGxPaUExTUFvZ0lDQWdUV0Y0VEdWdVozUm9PaUF4TURBS0NpMGdTMlY1T2lCWFlYSnlZVzUwZVVWNGNHbHlZWFJwYjI1RVlYUmxDaUFnVG1GdFpUb2dWMkZ5Y21GdWRIa2dSWGh3YVhKaGRHbHZiaUJFWVhSbENpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1JHRjBaUW9nSUNBZ1dXVmhjbEJsY21sdlpGQmhjM1E2SURJd0NpQWdJQ0JaWldGeVVHVnlhVzlrUm5WMGRYSmxPaUF4TUFvS0xTQkxaWGs2SUVsdWMzUmhiR3hFWVhSbENpQWdUbUZ0WlRvZ1NXNXpkR0ZzYkNCRVlYUmxDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dSR0YwWlFvZ0lDQWdVbVZ4ZFdseVpXUTZJREVLSUNBZ0lGbGxZWEpRWlhKcGIyUlFZWE4wT2lBeU1Bb2dJQ0FnV1dWaGNsQmxjbWx2WkVaMWRIVnlaVG9nTVRBS0lDQkRiM1Z1ZEUxcGJqb2dNQW9nSUVOdmRXNTBUV0Y0T2lBeENpQWdRMjkxYm5SRVpXWmhkV3gwT2lBd0Nnb3RJRXRsZVRvZ1RtOTBaUW9nSUU1aGJXVTZJRTV2ZEdVS0lDQlRaV0Z5WTJoaFlteGxPaUF4Q2lBZ1NXNXdkWFE2Q2lBZ0lDQlVlWEJsT2lCVVpYaDBRWEpsWVFvZ0lDQWdVbVZ4ZFdseVpXUTZJREVLSUNCRGIzVnVkRTFwYmpvZ01Bb2dJRU52ZFc1MFRXRjRPaUF4Q2lBZ1EyOTFiblJFWldaaGRXeDBPaUF3Q2c9PSIsCiAgICAgICAgImR5bmFtaWNmaWVsZF9kZWZpbml0aW9uIiA6ICJMUzB0SUh0OUNnPT0iLAogICAgICAgICJ2ZXJzaW9uIiA6IDEsCiAgICAgICAgImNyZWF0ZV90aW1lIiA6ICIyMDIzLTA3LTEzVDEwOjI1OjU5LjAwMFoiLAogICAgICAgICJjcmVhdGVfYnkiIDogMQogICAgfSwKICAgIHsKICAgICAgICAiY2xhc3NfbmFtZSIgOiAiVGVzdFVwZ3JhZGVfTG9jYXRpb24iLAogICAgICAgICJjbGFzc19pZCIgOiBudWxsLAogICAgICAgICJjb25maWdpdGVtX2RlZmluaXRpb24iIDogIkxTMHRDaTBnUzJWNU9pQlVlWEJsQ2lBZ1RtRnRaVG9nVkhsd1pRb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklFZGxibVZ5WVd4RFlYUmhiRzluQ2lBZ0lDQkRiR0Z6Y3pvZ1NWUlRUVG82UTI5dVptbG5TWFJsYlRvNlRHOWpZWFJwYjI0Nk9sUjVjR1VLSUNBZ0lGUnlZVzV6YkdGMGFXOXVPaUF4Q2dvdElFdGxlVG9nUTNWemRHOXRaWEpKUkFvZ0lFNWhiV1U2SUVOMWMzUnZiV1Z5SUVOdmJYQmhibmtLSUNCVFpXRnlZMmhoWW14bE9pQXhDaUFnU1c1d2RYUTZDaUFnSUNCVWVYQmxPaUJEZFhOMGIyMWxja052YlhCaGJua0tDaTBnUzJWNU9pQlBkMjVsY2dvZ0lFNWhiV1U2SUU5M2JtVnlDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dRM1Z6ZEc5dFpYSUtDaTBnUzJWNU9pQlFhRzl1WlRFS0lDQk9ZVzFsT2lCUWFHOXVaU0F4Q2lBZ1UyVmhjbU5vWVdKc1pUb2dNUW9nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRBb2dJQ0FnVTJsNlpUb2dOVEFLSUNBZ0lFMWhlRXhsYm1kMGFEb2dNVEF3Q2dvdElFdGxlVG9nVUdodmJtVXlDaUFnVG1GdFpUb2dVR2h2Ym1VZ01nb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURFd01Bb0tMU0JMWlhrNklFWmhlQW9nSUU1aGJXVTZJRVpoZUFvZ0lGTmxZWEpqYUdGaWJHVTZJREVLSUNCSmJuQjFkRG9LSUNBZ0lGUjVjR1U2SUZSbGVIUUtJQ0FnSUZOcGVtVTZJRFV3Q2lBZ0lDQk5ZWGhNWlc1bmRHZzZJREV3TUFvS0xTQkxaWGs2SUVVdFRXRnBiQW9nSUU1aGJXVTZJRVV0VFdGcGJBb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURFd01Bb0tMU0JMWlhrNklFRmtaSEpsYzNNS0lDQk9ZVzFsT2lCQlpHUnlaWE56Q2lBZ1UyVmhjbU5vWVdKc1pUb2dNUW9nSUVsdWNIVjBPZ29nSUNBZ1ZIbHdaVG9nVkdWNGRFRnlaV0VLQ2kwZ1MyVjVPaUJPYjNSbENpQWdUbUZ0WlRvZ1RtOTBaUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRlJsZUhSQmNtVmhDaUFnSUNCU1pYRjFhWEpsWkRvZ01Rb2dJRU52ZFc1MFRXbHVPaUF3Q2lBZ1EyOTFiblJFWldaaGRXeDBPaUF3Q2c9PSIsCiAgICAgICAgImR5bmFtaWNmaWVsZF9kZWZpbml0aW9uIiA6ICJMUzB0SUh0OUNnPT0iLAogICAgICAgICJ2ZXJzaW9uIiA6IDEsCiAgICAgICAgImNyZWF0ZV90aW1lIiA6ICIyMDIzLTA3LTEzVDEwOjI1OjU5LjAwMFoiLAogICAgICAgICJjcmVhdGVfYnkiIDogMQogICAgfSwKICAgIHsKICAgICAgICAiY2xhc3NfbmFtZSIgOiAiVGVzdFVwZ3JhZGVfTmV0d29yayIsCiAgICAgICAgImNsYXNzX2lkIiA6IG51bGwsCiAgICAgICAgImNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiIgOiAiTFMwdENpMGdTMlY1T2lCRVpYTmpjbWx3ZEdsdmJnb2dJRTVoYldVNklFUmxjMk55YVhCMGFXOXVDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dWR1Y0ZEVGeVpXRUtDaTBnUzJWNU9pQlVlWEJsQ2lBZ1RtRnRaVG9nVkhsd1pRb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklFZGxibVZ5WVd4RFlYUmhiRzluQ2lBZ0lDQkRiR0Z6Y3pvZ1NWUlRUVG82UTI5dVptbG5TWFJsYlRvNlRtVjBkMjl5YXpvNlZIbHdaUW9nSUNBZ1ZISmhibk5zWVhScGIyNDZJREVLQ2kwZ1MyVjVPaUJEZFhOMGIyMWxja2xFQ2lBZ1RtRnRaVG9nUTNWemRHOXRaWElnUTI5dGNHRnVlUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRU4xYzNSdmJXVnlRMjl0Y0dGdWVRb0tMU0JMWlhrNklFOTNibVZ5Q2lBZ1RtRnRaVG9nVDNkdVpYSUtJQ0JUWldGeVkyaGhZbXhsT2lBeENpQWdTVzV3ZFhRNkNpQWdJQ0JVZVhCbE9pQkRkWE4wYjIxbGNnb0tMU0JMWlhrNklFNWxkSGR2Y210QlpHUnlaWE56Q2lBZ1RtRnRaVG9nVG1WMGQyOXlheUJCWkdSeVpYTnpDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dWR1Y0ZEFvZ0lDQWdVMmw2WlRvZ016QUtJQ0FnSUUxaGVFeGxibWQwYURvZ01qQUtJQ0FnSUZKbGNYVnBjbVZrT2lBeENpQWdRMjkxYm5STmFXNDZJREFLSUNCRGIzVnVkRTFoZURvZ01UQXdDaUFnUTI5MWJuUkVaV1poZFd4ME9pQXhDaUFnVTNWaU9nb2dJQzBnUzJWNU9pQlRkV0p1WlhSTllYTnJDaUFnSUNCT1lXMWxPaUJUZFdKdVpYUWdUV0Z6YXdvZ0lDQWdTVzV3ZFhRNkNpQWdJQ0FnSUZSNWNHVTZJRlJsZUhRS0lDQWdJQ0FnVTJsNlpUb2dNekFLSUNBZ0lDQWdUV0Y0VEdWdVozUm9PaUF5TUFvZ0lDQWdJQ0JXWVd4MVpVUmxabUYxYkhRNklESTFOUzR5TlRVdU1qVTFMakFLSUNBZ0lDQWdVbVZ4ZFdseVpXUTZJREVLSUNBZ0lFTnZkVzUwVFdsdU9pQXdDaUFnSUNCRGIzVnVkRTFoZURvZ01Rb2dJQ0FnUTI5MWJuUkVaV1poZFd4ME9pQXdDaUFnTFNCTFpYazZJRWRoZEdWM1lYa0tJQ0FnSUU1aGJXVTZJRWRoZEdWM1lYa0tJQ0FnSUVsdWNIVjBPZ29nSUNBZ0lDQlVlWEJsT2lCVVpYaDBDaUFnSUNBZ0lGTnBlbVU2SURNd0NpQWdJQ0FnSUUxaGVFeGxibWQwYURvZ01qQUtJQ0FnSUNBZ1VtVnhkV2x5WldRNklERUtJQ0FnSUVOdmRXNTBUV2x1T2lBd0NpQWdJQ0JEYjNWdWRFMWhlRG9nTVRBS0lDQWdJRU52ZFc1MFJHVm1ZWFZzZERvZ01Bb0tMU0JMWlhrNklFNXZkR1VLSUNCT1lXMWxPaUJPYjNSbENpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdVbVZ4ZFdseVpXUTZJREVLSUNBZ0lGUjVjR1U2SUZSbGVIUkJjbVZoQ2lBZ1EyOTFiblJOYVc0NklEQUtJQ0JEYjNWdWRFMWhlRG9nTVFvZ0lFTnZkVzUwUkdWbVlYVnNkRG9nTUFvPSIsCiAgICAgICAgImR5bmFtaWNmaWVsZF9kZWZpbml0aW9uIiA6ICJMUzB0SUh0OUNnPT0iLAogICAgICAgICJ2ZXJzaW9uIiA6IDEsCiAgICAgICAgImNyZWF0ZV90aW1lIiA6ICIyMDIzLTA3LTEzVDEwOjI1OjU5LjAwMFoiLAogICAgICAgICJjcmVhdGVfYnkiIDogMQogICAgfSwKICAgIHsKICAgICAgICAiY2xhc3NfbmFtZSIgOiAiVGVzdFVwZ3JhZGVfU29mdHdhcmUiLAogICAgICAgICJjbGFzc19pZCIgOiBudWxsLAogICAgICAgICJjb25maWdpdGVtX2RlZmluaXRpb24iIDogIkxTMHRDaTBnUzJWNU9pQldaVzVrYjNJS0lDQk9ZVzFsT2lCV1pXNWtiM0lLSUNCVFpXRnlZMmhoWW14bE9pQXhDaUFnU1c1d2RYUTZDaUFnSUNCVWVYQmxPaUJVWlhoMENpQWdJQ0JUYVhwbE9pQTFNQW9nSUNBZ1RXRjRUR1Z1WjNSb09pQTFNQW9LTFNCTFpYazZJRlpsY25OcGIyNEtJQ0JPWVcxbE9pQldaWEp6YVc5dUNpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1ZHVjRkQW9nSUNBZ1UybDZaVG9nTlRBS0lDQWdJRTFoZUV4bGJtZDBhRG9nTlRBS0NpMGdTMlY1T2lCRVpYTmpjbWx3ZEdsdmJnb2dJRTVoYldVNklFUmxjMk55YVhCMGFXOXVDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dWR1Y0ZEVGeVpXRUtDaTBnUzJWNU9pQlVlWEJsQ2lBZ1RtRnRaVG9nVkhsd1pRb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklFZGxibVZ5WVd4RFlYUmhiRzluQ2lBZ0lDQkRiR0Z6Y3pvZ1NWUlRUVG82UTI5dVptbG5TWFJsYlRvNlUyOW1kSGRoY21VNk9sUjVjR1VLSUNBZ0lGUnlZVzV6YkdGMGFXOXVPaUF4Q2dvdElFdGxlVG9nUTNWemRHOXRaWEpKUkFvZ0lFNWhiV1U2SUVOMWMzUnZiV1Z5SUVOdmJYQmhibmtLSUNCVFpXRnlZMmhoWW14bE9pQXhDaUFnU1c1d2RYUTZDaUFnSUNCVWVYQmxPaUJEZFhOMGIyMWxja052YlhCaGJua0tDaTBnUzJWNU9pQlBkMjVsY2dvZ0lFNWhiV1U2SUU5M2JtVnlDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dRM1Z6ZEc5dFpYSUtDaTBnUzJWNU9pQlRaWEpwWVd4T2RXMWlaWElLSUNCT1lXMWxPaUJUWlhKcFlXd2dUblZ0WW1WeUNpQWdVMlZoY21Ob1lXSnNaVG9nTVFvZ0lFbHVjSFYwT2dvZ0lDQWdWSGx3WlRvZ1ZHVjRkQW9nSUNBZ1UybDZaVG9nTlRBS0lDQWdJRTFoZUV4bGJtZDBhRG9nTlRBS0NpMGdTMlY1T2lCTWFXTmxibU5sVkhsd1pRb2dJRTVoYldVNklFeHBZMlZ1WTJVZ1ZIbHdaUW9nSUZObFlYSmphR0ZpYkdVNklERUtJQ0JKYm5CMWREb0tJQ0FnSUZSNWNHVTZJRWRsYm1WeVlXeERZWFJoYkc5bkNpQWdJQ0JEYkdGemN6b2dTVlJUVFRvNlEyOXVabWxuU1hSbGJUbzZVMjltZEhkaGNtVTZPa3hwWTJWdVkyVlVlWEJsQ2lBZ0lDQlVjbUZ1YzJ4aGRHbHZiam9nTVFvS0xTQkxaWGs2SUV4cFkyVnVZMlZMWlhrS0lDQk9ZVzFsT2lCTWFXTmxibU5sSUV0bGVRb2dJRk5sWVhKamFHRmliR1U2SURFS0lDQkpibkIxZERvS0lDQWdJRlI1Y0dVNklGUmxlSFFLSUNBZ0lGTnBlbVU2SURVd0NpQWdJQ0JOWVhoTVpXNW5kR2c2SURVd0NpQWdJQ0JTWlhGMWFYSmxaRG9nTVFvZ0lFTnZkVzUwVFdsdU9pQXdDaUFnUTI5MWJuUk5ZWGc2SURFd01Bb2dJRU52ZFc1MFJHVm1ZWFZzZERvZ01Bb2dJRk4xWWpvS0lDQXRJRXRsZVRvZ1VYVmhiblJwZEhrS0lDQWdJRTVoYldVNklGRjFZVzUwYVhSNUNpQWdJQ0JKYm5CMWREb0tJQ0FnSUNBZ1ZIbHdaVG9nU1c1MFpXZGxjZ29nSUNBZ0lDQldZV3gxWlUxcGJqb2dNUW9nSUNBZ0lDQldZV3gxWlUxaGVEb2dNVEF3TUFvZ0lDQWdJQ0JXWVd4MVpVUmxabUYxYkhRNklERUtJQ0FnSUNBZ1VtVnhkV2x5WldRNklERUtJQ0FnSUVOdmRXNTBUV2x1T2lBd0NpQWdJQ0JEYjNWdWRFMWhlRG9nTVFvZ0lDQWdRMjkxYm5SRVpXWmhkV3gwT2lBd0NpQWdMU0JMWlhrNklFVjRjR2x5WVhScGIyNUVZWFJsQ2lBZ0lDQk9ZVzFsT2lCRmVIQnBjbUYwYVc5dUlFUmhkR1VLSUNBZ0lFbHVjSFYwT2dvZ0lDQWdJQ0JVZVhCbE9pQkVZWFJsQ2lBZ0lDQWdJRkpsY1hWcGNtVmtPaUF4Q2lBZ0lDQWdJRmxsWVhKUVpYSnBiMlJRWVhOME9pQXlNQW9nSUNBZ0lDQlpaV0Z5VUdWeWFXOWtSblYwZFhKbE9pQXhNQW9nSUNBZ1EyOTFiblJOYVc0NklEQUtJQ0FnSUVOdmRXNTBUV0Y0T2lBeENpQWdJQ0JEYjNWdWRFUmxabUYxYkhRNklEQUtDaTBnUzJWNU9pQk5aV1JwWVFvZ0lFNWhiV1U2SUUxbFpHbGhDaUFnU1c1d2RYUTZDaUFnSUNCVWVYQmxPaUJVWlhoMENpQWdJQ0JUYVhwbE9pQTBNQW9nSUNBZ1RXRjRUR1Z1WjNSb09pQXlNQW9LTFNCTFpYazZJRTV2ZEdVS0lDQk9ZVzFsT2lCT2IzUmxDaUFnVTJWaGNtTm9ZV0pzWlRvZ01Rb2dJRWx1Y0hWME9nb2dJQ0FnVkhsd1pUb2dWR1Y0ZEVGeVpXRUtJQ0FnSUZKbGNYVnBjbVZrT2lBeENpQWdRMjkxYm5STmFXNDZJREFLSUNCRGIzVnVkRTFoZURvZ01Rb2dJRU52ZFc1MFJHVm1ZWFZzZERvZ01Bbz0iLAogICAgICAgICJkeW5hbWljZmllbGRfZGVmaW5pdGlvbiIgOiAiTFMwdElIdDlDZz09IiwKICAgICAgICAidmVyc2lvbiIgOiAxLAogICAgICAgICJjcmVhdGVfdGltZSIgOiAiMjAyMy0wNy0xM1QxMDoyNTo1OS4wMDBaIiwKICAgICAgICAiY3JlYXRlX2J5IiA6IDEKICAgIH0KXX0KRU5EX0pTT04KCiAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CiAgICBteSAkVGhhd2VkICAgICA9ICRKU09OT2JqZWN0LT5EZWNvZGUoIERhdGEgPT4gJEpTT04gKTsKCiAgICAjIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBhbmQgZHluYW1pY2ZpZWxkX2RlZmluaXRpb24gYXJlIHN0b3JlZCBhcyBMT05HQkxPQgogICAgIyBpbiB0aGUgZGF0YWJhc2UuIER1bXBpbmcgdGhlIGJpbmFyeSBjb250ZW50IGJyZWFrcyB0aGUgSlNPTiBleHBvcnQsCiAgICAjIHRoZXJlZm9yZSB0aGVzZSBjb2x1bXMgYXJlIHNlcmlhbGl6ZWQgYXMgYmFzZTY0LgogICAgZm9yIG15ICRSb3cgKCAkVGhhd2VkLT57Y29uZmlnaXRlbV9kZWZpbml0aW9ufS0+QCogKSB7CiAgICAgICAgJFJvdy0+e2NvbmZpZ2l0ZW1fZGVmaW5pdGlvbn0gICA9IGRlY29kZV9iYXNlNjQoICRSb3ctPntjb25maWdpdGVtX2RlZmluaXRpb259ICk7CiAgICAgICAgJFJvdy0+e2R5bmFtaWNmaWVsZF9kZWZpbml0aW9ufSA9IGRlY29kZV9iYXNlNjQoICRSb3ctPntkeW5hbWljZmllbGRfZGVmaW5pdGlvbn0gKTsKICAgIH0KCiAgICAjIHJldHVybiB0aGUgYXJyYXlyZWYKICAgIHJldHVybiAkVGhhd2VkLT57Y29uZmlnaXRlbV9kZWZpbml0aW9ufTsKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ImportExport/Export.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgUGF0aDo6Q2xhc3MgcXcoZGlyIGZpbGUpOwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJENvbW1hbmRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpJbXBvcnRFeHBvcnQ6OkV4cG9ydCcpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgojIGdldCBoZWxwZXIgb2JqZWN0CiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKb2soICRSYW5kb21JRCwgJ2dvdCBhIHJhbmRvbSBJRCcgKTsKZGlhZygiUmFuZG9tSUQ6ICRSYW5kb21JRCIpOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aG91dCAtLXRlbXBsYXRlLW51bWJlciBvcHRpb24KbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGU7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiTm8gLS10ZW1wbGF0ZS1udW1iZXIgIC0gZXhpdCBjb2RlIiwKKTsKCiMgY3JlYXRlIGRlZmF1bHQgY29uZmlnIGl0ZW0gY2xhc3NlcwokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OklUU01Db25maWdJdGVtSGVscGVyJyktPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgIEhlbHBlck9iamVjdCA9PiAkSGVscGVyLAopOwoKIyBnZXQgJ0hhcmR3YXJlJyBjYXRhbG9nIGNsYXNzIElECm15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICA9PiAnSGFyZHdhcmUnLAopOwpyZWZfb2soICRDb25maWdJdGVtRGF0YVJlZiwgJ0hBU0gnLCAnQ29uZmlnSXRlbURhdGFSZWYnICk7Cm15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07Cm9rKCAkSGFyZHdhcmVDb25maWdJdGVtSUQsICdnb3QgYW4gSUQgZm9yIGNvbmZpZyBpdGVtIGNsYXNzIEhhcmR3YXJlJyApOwoKIyBnZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSURzCm15ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwpyZWZfb2soICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiwgJ0hBU0gnICk7Cm15ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQgPSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYtPntJdGVtSUR9OwpvayggJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCwgJ2dvdCBhbiBJRCBmb3IgZGVwbG95bWVudCBzdGF0ZSBQcm9kdWN0aW9uJyApOwoKIyBhZGQgdGVzdCBjb25maWcgaXRlbXMKbXkgQENvbmZpZ0l0ZW1JRHM7CnN1YnRlc3QgJ2NyZWF0ZSBzYW1wbGUgY29uZmlnIGl0ZW1zJyA9PiBzdWIgewogICAgZm9yIG15ICRDb3VudCAoIDEgLi4gMTAgKSB7CgogICAgICAgICMgY3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVyCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICAgICApOwogICAgICAgIGRpYWcoIkNvbmZpZ0l0ZW1OdW1iZXI6ICckQ29uZmlnSXRlbU51bWJlciciKTsKICAgICAgICBvayggJENvbmZpZ0l0ZW1OdW1iZXIsICdnb3QgYSBjb25maWcgaXRlbSBudW1iZXInICk7CgogICAgICAgICMgYWRkIHNhbXBsZSBDb25maWdJdGVtCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBOYW1lICAgICAgICA9PiBqb2luKCAnXycsICdUZXN0Q29uZmlnSXRlbfCfjJ4nLCAkUmFuZG9tSUQsICRDb3VudCApLAogICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgb2soICRDb25maWdJdGVtSUQsICJDb25maWcgaXRlbSBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1JRCIgKTsKCiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKICAgIH0KfTsKCiMgZ2V0IEltcG9ydEV4cG9ydCBvYmplY3QKbXkgJEltcG9ydEV4cG9ydE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnKTsKCiMgYWRkIHRlc3QgdGVtcGxhdGUKbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIEZvcm1hdCAgPT4gJ0NTVicsCiAgICBOYW1lICAgID0+ICdUZW1wbGF0ZScgLiAkUmFuZG9tSUQsCiAgICBWYWxpZElEID0+IDEsCiAgICBDb21tZW50ID0+ICdDb21tZW50JywKICAgIFVzZXJJRCAgPT4gMSwKKTsKb2soICRUZW1wbGF0ZUlELCAiSW1wb3J0L0V4cG9ydCB0ZW1wbGF0ZSBpcyBjcmVhdGVkIiApOwpkaWFnKCJUZW1wbGF0ZUlEOiAkVGVtcGxhdGVJRCIpOwoKIyBnZXQgb2JqZWN0IGRhdGEgZm9yIHRlc3QgdGVtcGxhdGUKbXkgJVRlbXBsYXRlUmVmID0gKAogICAgJ0NsYXNzSUQnICA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAnQ291bnRNYXgnID0+IDEwLAopOwpteSAkT2JqZWN0RGF0YVNhdmVTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0RGF0YVNhdmUoCiAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgT2JqZWN0RGF0YSA9PiBcJVRlbXBsYXRlUmVmLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKb2soICRPYmplY3REYXRhU2F2ZVN1Y2Nlc3MsICJPYmplY3REYXRhIGZvciB0ZXN0IHRlbXBsYXRlIGlzIGFkZGVkIiApOwoKIyBhZGQgdGhlIGZvcm1hdCBkYXRhIG9mIHRoZSB0ZXN0IHRlbXBsYXRlCm15ICVGb3JtYXREYXRhID0gKAogICAgQ2hhcnNldCAgICAgICAgICAgICAgPT4gJ1VURi04JywKICAgIENvbHVtblNlcGFyYXRvciAgICAgID0+ICdDb21tYScsCiAgICBJbmNsdWRlQ29sdW1uSGVhZGVycyA9PiAxLAopOwpteSAkRm9ybWF0RGF0YVNhdmVTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+Rm9ybWF0RGF0YVNhdmUoCiAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgRm9ybWF0RGF0YSA9PiBcJUZvcm1hdERhdGEsCiAgICBVc2VySUQgICAgID0+IDEsCik7Cm9rKCAkRm9ybWF0RGF0YVNhdmVTdWNjZXNzLCAiZm9ybWF0IGRhdGEgZm9yIHRlc3QgdGVtcGxhdGUgaXMgYWRkZWQiICk7CgojIHNhdmUgdGhlIHNlYXJjaCBkYXRhIG9mIGEgdGVtcGxhdGUKbXkgJVNlYXJjaERhdGEgPSAoCiAgICBOYW1lID0+ICdUZXN0Q29uZmlnSXRlbSonLAopOwpteSAkU2VhcmNoRGF0YVNhdmVTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+U2VhcmNoRGF0YVNhdmUoCiAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgU2VhcmNoRGF0YSA9PiBcJVNlYXJjaERhdGEsCiAgICBVc2VySUQgICAgID0+IDEsCik7Cm9rKCAkU2VhcmNoRGF0YVNhdmVTdWNjZXNzLCAic2VhcmNoIGRhdGEgZm9yIHRlc3QgdGVtcGxhdGUgaXMgYWRkZWQiICk7CgojIGFkZCBtYXBwaW5nIGRhdGEgZm9yIHRlc3QgdGVtcGxhdGUKZm9yIG15ICRPYmplY3REYXRhVmFsdWUgKHF3KCBOYW1lIERlcGxTdGF0ZSBJbmNpU3RhdGUgKSkgewoKICAgIG15ICRNYXBwaW5nSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5NYXBwaW5nQWRkKAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICBteSAkU3VjY2VzcyA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdPYmplY3REYXRhU2F2ZSgKICAgICAgICBNYXBwaW5nSUQgICAgICAgICA9PiAkTWFwcGluZ0lELAogICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IHsgS2V5ID0+ICRPYmplY3REYXRhVmFsdWUgfSwKICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICBvayggJFN1Y2Nlc3MsICJPYmplY3REYXRhIGZvciB0ZXN0IHRlbXBsYXRlIGlzIG1hcHBlZCAtICRPYmplY3REYXRhVmFsdWUiICk7Cn0KCiMgbWFrZSBkaXJlY3RvcnkgZm9yIGV4cG9ydCBmaWxlCm15ICRIb21lICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKbXkgJFRlbXBEaXIgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnVGVtcERpcicpOwpteSAkRGVzdGluYXRpb25QYXRoID0gam9pbiAnLycsICRUZW1wRGlyLCAnSW1wb3J0RXhwb3J0JzsKbXkgJEV4cG9ydEZpbGVuYW1lICA9ICIkRGVzdGluYXRpb25QYXRoL1RlbXBsYXRlRXhwb3J0XyRSYW5kb21JRC5jc3YiOwpvayggIS1mICRFeHBvcnRGaWxlbmFtZSwgJ25vIGxlZnRvdmVyIGV4cG9ydCBmaWxlJyApOwpkaXIoJERlc3RpbmF0aW9uUGF0aCktPm1rcGF0aDsKb2soIC1kICREZXN0aW5hdGlvblBhdGgsICdleHBvcnQgZGlyIHdhcyBjcmVhdGVkJyApOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aCB3cm9uZyB0ZW1wbGF0ZSBudW1iZXIKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoCiAgICAnLS10ZW1wbGF0ZS1udW1iZXInLCAkSGVscGVyLT5HZXRSYW5kb21OdW1iZXIsCiAgICAkRXhwb3J0RmlsZW5hbWUKKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJDb21tYW5kIHdpdGggd3JvbmcgdGVtcGxhdGUgbnVtYmVyIC0gZXhpdCBjb2RlIiwKKTsKb2soICEtZSAkRXhwb3J0RmlsZW5hbWUsICdubyBleHBvcnQgZmlsZSB3YXMgZ2VuZXJhdGVkJyApOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aG91dCBkZXN0aW5hdGlvbiBhcmd1bWVudAokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tdGVtcGxhdGUtbnVtYmVyJywgJFRlbXBsYXRlSUQgKTsKCmlzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJObyBkZXN0aW5hdGlvbiBhcmd1bWVudCAtIGV4aXQgY29kZSIsCik7Cm9rKCAhLWUgJEV4cG9ydEZpbGVuYW1lLCAnbm8gZXhwb3J0IGZpbGUgd2FzIGdlbmVyYXRlZCcgKTsKCiMgdGVzdCBjb21tYW5kIHdpdGggLS10ZW1wbGF0ZS1udW1iZXIgb3B0aW9uIGFuZCBkZXN0aW5hdGlvbiBhcmd1bWVudAokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tdGVtcGxhdGUtbnVtYmVyJywgJFRlbXBsYXRlSUQsICRFeHBvcnRGaWxlbmFtZSApOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIk9wdGlvbiAtIC0tdGVtcGxhdGUtbnVtYmVyIG9wdGlvbiBhbmQgZGVzdGluYXRpb24gYXJndW1lbnQiLAopOwpvayggLWUgJEV4cG9ydEZpbGVuYW1lLCAnZXhwb3J0IGZpbGUgd2FzIGZpbmFsbHkgZ2VuZXJhdGVkJyApOwoKIyBDb250ZW50IG9mIHRoZSBleHBvcnRlZCBmaWxlLCB3aXRoIGNvbnNpZGVyaW5nIHRoZSByYW5kb20gaWQgaW4gdGhlIGNvbmZpZyBpdGVtIG5hbWUKewogICAgbXkgJEV4cGVjdGVkUmVzdWx0RmlsZSA9IGRpcigkSG9tZSktPmZpbGUoJ3NjcmlwdHMvdGVzdC9zYW1wbGUvSW1wb3J0RXhwb3J0L1RlbXBsYXRlRXhwb3J0LmNzdicpOwogICAgbXkgQEV4cGVjdGVkTGluZXMgICAgICA9IG1hcCB7cy88PFJBTkRPTV9JRD4+LyRSYW5kb21JRC9yfSAkRXhwZWN0ZWRSZXN1bHRGaWxlLT5zbHVycDsKICAgIGlzKCBzY2FsYXIgQEV4cGVjdGVkTGluZXMsIDExLCAnZ290IHNvbWUgZXhwZWN0ZWQgY29udGVudCcgKTsKICAgIGlzKAogICAgICAgIFsgZmlsZSgkRXhwb3J0RmlsZW5hbWUpLT5zbHVycCBdLAogICAgICAgIFxARXhwZWN0ZWRMaW5lcywKICAgICAgICAiQ29udGVudCBvZiAkRXhwb3J0RmlsZW5hbWUiCiAgICApOwp9CgojIHJlbW92ZSB0ZXN0IGRlc3RpbmF0aW9uIHBhdGgKZGlhZygiZGVsZXRpbmcgJERlc3RpbmF0aW9uUGF0aCIpOwpkaXIoJERlc3RpbmF0aW9uUGF0aCktPnJtdHJlZTsKb2soICEtZCAkRGVzdGluYXRpb25QYXRoLCAndGVzdCBkaXJlY3RvcnkgZGVsZXRlZCcgKTsKCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/ImportExport/Import.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJENvbW1hbmRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpJbXBvcnRFeHBvcnQ6OkltcG9ydCcpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJEltcG9ydEV4cG9ydE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aG91dCAtLXRlbXBsYXRlLW51bWJlciBvcHRpb24KbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGU7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiTm8gLS10ZW1wbGF0ZS1udW1iZXIgIC0gZXhpdCBjb2RlIiwKKTsKCiMgYWRkIHRlc3QgdGVtcGxhdGUKbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIEZvcm1hdCAgPT4gJ0NTVicsCiAgICBOYW1lICAgID0+ICdUZW1wbGF0ZScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpLAogICAgVmFsaWRJRCA9PiAxLAogICAgQ29tbWVudCA9PiAnQ29tbWVudCcsCiAgICBVc2VySUQgID0+IDEsCik7Cm9rKCAkVGVtcGxhdGVJRCwgIkltcG9ydC9FeHBvcnQgdGVtcGxhdGUgaXMgY3JlYXRlZCAtICRUZW1wbGF0ZUlEIiApOwoKIyBjcmVhdGUgZGVmYXVsdCBjb25maWcgaXRlbSBjbGFzc2VzCiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKS0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIsCik7CgojIGdldCAnSGFyZHdhcmUnIGNhdGFsb2cgY2xhc3MgSUQKbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdIYXJkd2FyZScsCik7Cm15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgojIGdldCBvYmplY3QgZGF0YSBmb3IgdGVzdCB0ZW1wbGF0ZQpteSAlVGVtcGxhdGVSZWYgPSAoCiAgICAnQ2xhc3NJRCcgID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICdDb3VudE1heCcgPT4gMTAsCik7Cm15ICRTdWNjZXNzID0gJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0RGF0YVNhdmUoCiAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgT2JqZWN0RGF0YSA9PiBcJVRlbXBsYXRlUmVmLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKb2soICRTdWNjZXNzLCAiT2JqZWN0RGF0YSBmb3IgdGVzdCB0ZW1wbGF0ZSBpcyBhZGRlZCIgKTsKCiMgYWRkIHRoZSBmb3JtYXQgZGF0YSBvZiB0aGUgdGVzdCB0ZW1wbGF0ZQpteSAlRm9ybWF0RGF0YSA9ICgKICAgIENoYXJzZXQgICAgICAgICAgICAgID0+ICdVVEYtOCcsCiAgICBDb2x1bW5TZXBhcmF0b3IgICAgICA9PiAnQ29tbWEnLAogICAgSW5jbHVkZUNvbHVtbkhlYWRlcnMgPT4gMSwKKTsKJFN1Y2Nlc3MgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5Gb3JtYXREYXRhU2F2ZSgKICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICBGb3JtYXREYXRhID0+IFwlRm9ybWF0RGF0YSwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCm9rKCAkU3VjY2VzcywgIkZvcm1hdERhdGEgZm9yIHRlc3QgdGVtcGxhdGUgaXMgYWRkZWQiICk7CgojIHNhdmUgdGhlIHNlYXJjaCBkYXRhIG9mIGEgdGVtcGxhdGUKbXkgJVNlYXJjaERhdGEgPSAoCiAgICBOYW1lID0+ICdUZXN0Q29uZmlnSXRlbSonLAopOwokU3VjY2VzcyA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPlNlYXJjaERhdGFTYXZlKAogICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRCwKICAgIFNlYXJjaERhdGEgPT4gXCVTZWFyY2hEYXRhLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKIyBhZGQgbWFwcGluZyBkYXRhIGZvciB0ZXN0IHRlbXBsYXRlCmZvciBteSAkT2JqZWN0RGF0YVZhbHVlIChxdyggTmFtZSBEZXBsU3RhdGUgSW5jaVN0YXRlICkpIHsKCiAgICBteSAkTWFwcGluZ0lEID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ0FkZCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgbXkgJU1hcHBpbmdPYmplY3REYXRhID0gKCBLZXkgPT4gJE9iamVjdERhdGFWYWx1ZSApOwogICAgbXkgJFN1Y2Nlc3MgICAgICAgICAgID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdERhdGFTYXZlKAogICAgICAgIE1hcHBpbmdJRCAgICAgICAgID0+ICRNYXBwaW5nSUQsCiAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gXCVNYXBwaW5nT2JqZWN0RGF0YSwKICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICBvayggJFN1Y2Nlc3MsICJPYmplY3REYXRhIGZvciB0ZXN0IHRlbXBsYXRlIGlzIG1hcHBlZCAtICRPYmplY3REYXRhVmFsdWUiICk7Cn0KCiMgbWFrZSBkaXJlY3RvcnkgZm9yIGV4cG9ydCBmaWxlCm15ICRTb3VyY2VQYXRoID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJykgLiAiL3NjcmlwdHMvdGVzdC9zYW1wbGUvSW1wb3J0RXhwb3J0L1RlbXBsYXRlRXhwb3J0LmNzdiI7CgojIHRlc3QgY29tbWFuZCB3aXRoIHdyb25nIHRlbXBsYXRlIG51bWJlcgokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tdGVtcGxhdGUtbnVtYmVyJywgJEhlbHBlci0+R2V0UmFuZG9tSUQoKSwgJFNvdXJjZVBhdGggLiAnVGVtcGxhdGVFeHBvcnQuY3N2JyApOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAxLAogICAgIkNvbW1hbmQgd2l0aCB3cm9uZyB0ZW1wbGF0ZSBudW1iZXIgLSBleGl0IGNvZGUiLAopOwoKIyB0ZXN0IGNvbW1hbmQgd2l0aG91dCBTb3VyY2UgYXJndW1lbnQKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLXRlbXBsYXRlLW51bWJlcicsICRUZW1wbGF0ZUlEICk7CgppcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiTm8gU291cmNlIGFyZ3VtZW50IC0gZXhpdCBjb2RlIiwKKTsKCiMgdGVzdCBjb21tYW5kIHdpdGggLS10ZW1wbGF0ZS1udW1iZXIgb3B0aW9uIGFuZCBTb3VyY2UgYXJndW1lbnQKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLXRlbXBsYXRlLW51bWJlcicsICRUZW1wbGF0ZUlELCAkU291cmNlUGF0aCApOwoKaXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIk9wdGlvbiAtIC0tdGVtcGxhdGUtbnVtYmVyIG9wdGlvbiBhbmQgU291cmNlIGFyZ3VtZW50IiwKKTsKCiMgZ2V0IG51bWJlciBvZiBjb25maWcgaXRlbSBJRHMKbXkgJE51bUNvbmZpZ0l0ZW1zSW1wb3J0ZWQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCgKICAgIE5hbWUgICA9PiAnVGVzdENvbmZpZ0l0ZW0qJywKICAgIFJlc3VsdCA9PiAnQ09VTlQnLAopOwoKIyBjaGVjayBpZiB0aGUgY29uZmlnIGl0ZW1zIGFyZSBpbXBvcnRlZAojIDEwIGl0ZW1zIHNob3VsZCBiZSBleHBvcnRlZCwgYXMgdGhhdCBpcyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBzYW1wbGUgZmlsZQppcygKICAgICROdW1Db25maWdJdGVtc0ltcG9ydGVkLAogICAgMTAsCiAgICAiVGhlcmUgYXJlIHRlbiBpbXBvcnRlZCBjb25maWcgaXRlbXMiCik7Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Console/Command/Admin/ITSM/IncidentState/Recalculate.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKCm91ciAkU2VsZjsKCm15ICRDb21tYW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6OkFkbWluOjpJVFNNOjpJbmNpZGVudFN0YXRlOjpSZWNhbGN1bGF0ZScpOwoKbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiQWRtaW46OklUU006OkluY2lkZW50U3RhdGU6OlJlY2FsY3VsYXRlIGV4aXQgY29kZSIsCik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemCreate.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0IHF3KGVuY29kZV9iYXNlNjQpOwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCnNraXBfYWxsKCdTa2lwcGluZyBDTURCIEdlbmVyaWMgSW50ZXJmYWNlIHRlc3RzIHRlbXBvcmFyaWx5LicpOwpkb25lX3Rlc3Rpbmc7CmV4aXQ7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXI7CiN1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiMgU2tpcCBTU0wgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uLgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBTa2lwU1NMVmVyaWZ5ID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7Cm15ICRDb25maWdPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgojIENoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQuCmlzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKbXkgJFRlc3RDdXN0b21lclVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKCiMgQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0LgpteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CmlzKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJywKICAgIHJlZiAkV2Vic2VydmljZU9iamVjdCwKICAgICJDcmVhdGUgd2Vic2VydmljZSBvYmplY3QiLAopOwoKIyBTZXQgd2Vic2VydmljZSBuYW1lLgpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7Cm9rKCAkV2Vic2VydmljZUlELCAiYWRkZWQgd2ViIHNlcnZpY2UiICk7CgojIEdldCByZW1vdGUgaG9zdCB3aXRoIHNvbWUgcHJlY2F1dGlvbnMgZm9yIGNlcnRhaW4gdW5pdCB0ZXN0IHN5c3RlbXMuCm15ICRIb3N0ID0gJEhlbHBlci0+R2V0VGVzdEhUVFBIb3N0bmFtZTsKCiMgcHJlcGFyZSB3ZWJzZXJ2aWNlIGNvbmZpZwpteSAkUmVtb3RlU3lzdGVtID0KICAgICRDb25maWdPYmplY3QtPkdldCgnSHR0cFR5cGUnKQogICAgLiAnOi8vJwogICAgLiAkSG9zdAogICAgLiAnLycKICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpCiAgICAuICcvbnBoLWdlbmVyaWNpbnRlcmZhY2UucGwvV2Vic2VydmljZUlELycKICAgIC4gJFdlYnNlcnZpY2VJRDsKCm15ICRXZWJzZXJ2aWNlQ29uZmlnID0gewogICAgRGVzY3JpcHRpb24gPT4KICAgICAgICAnVGVzdCBmb3IgQ29uZmlnSXRlbSBDb25uZWN0b3IgdXNpbmcgU09BUCB0cmFuc3BvcnQgYmFja2VuZC4nLAogICAgRGVidWdnZXIgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBQcm92aWRlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiAxMF8wMDBfMDAwLAogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3RvYm8ub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlc3Npb25DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnU2Vzc2lvbjo6U2Vzc2lvbkNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBSZXF1ZXN0ZXIgPT4gewogICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgIFR5cGUgICA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdG9iby5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuY29kaW5nICA9PiAnVVRGLTgnLAogICAgICAgICAgICAgICAgRW5kcG9pbnQgID0+ICRSZW1vdGVTeXN0ZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBJbnZva2VyID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKfTsKCiMgVXBkYXRlIHdlYnNlcnZpY2Ugd2l0aCByZWFsIGNvbmZpZy4KbXkgJFdlYnNlcnZpY2VVcGRhdGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZVVwZGF0ZSgKICAgIElEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIE5hbWUgICAgPT4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29uZmlnICA9PiAkV2Vic2VydmljZUNvbmZpZywKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKb2soICRXZWJzZXJ2aWNlVXBkYXRlLCAidXBkYXRlZCB3ZWIgc2VydmljZSAkV2Vic2VydmljZUlEIC0gJFdlYnNlcnZpY2VOYW1lIiApOwoKIyBEZWJ1Z2dlciBvYmplY3QuCm15ICREZWJ1Z2dlck9iamVjdCA9IEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXItPm5ldygKICAgIERlYnVnZ2VyQ29uZmlnID0+IHsKICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIFRlc3RNb2RlICAgICAgID0+IDEsCiAgICB9LAogICAgV2Vic2VydmljZUlEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIENvbW11bmljYXRpb25UeXBlID0+ICdQcm92aWRlcicsCik7CmlzYV9vaygKICAgICREZWJ1Z2dlck9iamVjdCwKICAgIFsnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlciddLAogICAgJ0RlYnVnZ2VyT2JqZWN0IGluc3RhbmNpYXRlZCBjb3JyZWN0bHknLAopOwoKIyBHZXQgU2Vzc2lvbklELgojIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0LgpteSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CmlzYV9vaygKICAgICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LAogICAgWydLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlciddLAogICAgIlNlc3Npb25JRCAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKKTsKCiMgQ3JlYXRlIGEgbmV3IHVzZXIgZm9yIGN1cnJlbnQgdGVzdC4KbXkgJFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJywgJ2l0c20tY29uZmlnaXRlbScgXSwKKTsKbXkgJFBhc3N3b3JkID0gJFVzZXJMb2dpbjsKCiMgU3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UuCm15ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0ID0gJFJlcXVlc3RlclNlc3Npb25PYmplY3QtPlJ1bigKICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgSW52b2tlciAgICAgID0+ICdTZXNzaW9uQ3JlYXRlJywKICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgIH0sCik7CnJlZl9vayggJFJlcXVlc3RlclNlc3Npb25SZXN1bHQsICdIQVNIJywgJ2dvdCByZXN1bHQgZnJvbSBTZXNzaW9uSUQnICk7CgpteSAkTmV3U2Vzc2lvbklEID0gJFJlcXVlc3RlclNlc3Npb25SZXN1bHQtPntEYXRhfS0+e1Nlc3Npb25JRH07Cmxpa2UoICROZXdTZXNzaW9uSUQsIHFyL1xBW1s6YWxudW06XV17MzJ9XHovLCAnc2FuZSBzZXNzaW9uIElEJyApOwoKIyBBY3R1YWwgdGVzdHMuCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnRW1wdHkgUmVxdWVzdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHt9LAogICAgICAgIEV4cGVjdGVkRGF0YSAgID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbSBwYXJhbWV0ZXIgaXMgbWlzc2luZyBvciBub3QgdmFsaWQhJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0nLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gMSwgICAgIyBzaG91bGQgYmUgYSBoYXNocmVmCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtIHBhcmFtZXRlciBpcyBtaXNzaW5nIG9yIG5vdCB2YWxpZCEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgVG9kbyAgICAgICAgICAgPT4gJ21hbmRhdG9yeSBjaGVja3MgYXJlIG5vdCBpbXBsZW1lbnRlZCB5ZXQnLAogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIENJWE1MRGF0YScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdCcgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5EeW5hbWljRmllbGQtPk5JQy0+SVBvdmVyREhDUCBwYXJhbWV0ZXIgaXMgbWlzc2luZyEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ0lYTUxEYXRhJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0JyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhIGlzIG1pc3Npbmcgb3IgaW52YWxpZCEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQ2xhc3MnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q2xhc3MgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5hbWUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5OYW1lIHBhcmFtZXRlciBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBEZXBsU3RhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5EZXBsU3RhdGUgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIEluY2lTdGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5JbmNpU3RhdGUgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ05vdEV4aXNpdG5nJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNsYXNzIHBhcmFtZXRlciBpcyBpbnZhbGlkIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgRGVwbFN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+RGVwbFN0YXRlIHBhcmFtZXRlciBpcyBpbnZhbGlkIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgSW5jaVN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+SW5jaVN0YXRlIHBhcmFtZXRlciBpcyBpbnZhbGlkIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBOSUMtPk5JQycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5DSVhNTERhdGEtPk5JQyBwYXJhbWV0ZXIgdmFsdWUgaXMgcmVxdWlyZWQgYW5kIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5JQy0+SXBPdmVyREhDUCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTklDID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5OSUMtPklQb3ZlckRIQ1AgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5JQy0+TklDIGluIGFycmF5JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5OSUMgcGFyYW1ldGVyIHZhbHVlIGlzIHJlcXVpcmVkIGFuZCBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgTklDLT5JcE92ZXJESENQIGluIGFycmF5JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+TklDWzFdLT5JUG92ZXJESENQIHBhcmFtZXRlciBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIE5JQy0+SXBPdmVyREhDUCBHZW5lcmFsIENhdGFsb2cgaW4gSGFzaCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+TklDLT5JUG92ZXJESENQIHBhcmFtZXRlciB2YWx1ZSBpcyBub3QgYSB2YWxpZCBmb3IgR2VuZXJhbCBDYXRhbG9nIFwnSVRTTTo6Q29uZmlnSXRlbTo6WWVzTm9cJyEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBOSUMtPklwT3ZlckRIQ1AgR2VuZXJhbCBDYXRhbG9nIGluIEFycmF5IEhhc2gnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5JQyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+TklDWzFdLT5JUG92ZXJESENQIHBhcmFtZXRlciB2YWx1ZSBpcyBub3QgYSB2YWxpZCBmb3IgR2VuZXJhbCBDYXRhbG9nIFwnSVRTTTo6Q29uZmlnSXRlbTo6WWVzTm9cJyEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBWZW5kb3IgTG9uZyBUZXh0ICcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdhJyB4IDUxLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5DSVhNTERhdGEtPlZlbmRvciBwYXJhbWV0ZXIgdmFsdWUgZXhjZWRlcyB0aGUgbWF4aXVtIGxlbmd0aCEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBXYXJyYW50eUV4cGlyYXRpb25EYXRlIERhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTkzMC0zMC0zMCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5XYXJyYW50eUV4cGlyYXRpb25EYXRlIHBhcmFtZXRlciB2YWx1ZSBpcyBub3QgYSB2YWxpZCBEYXRlIGZvcm1hdCEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBPd25lciBDdXN0b21lcicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5Pd25lciBwYXJhbWV0ZXIgdmFsdWUgaXMgbm90IGEgdmFsaWQgY3VzdG9tZXIhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgUmFtIFRvbyBNYW55JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICAgICAgICAgICAgMywKICAgICAgICAgICAgICAgICAgICAgICAgNCwKICAgICAgICAgICAgICAgICAgICAgICAgNSwKICAgICAgICAgICAgICAgICAgICAgICAgNiwKICAgICAgICAgICAgICAgICAgICAgICAgNywKICAgICAgICAgICAgICAgICAgICAgICAgOCwKICAgICAgICAgICAgICAgICAgICAgICAgOSwKICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIDExLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5SYW0gcGFyYW1ldGVyIHJlcGV0aXRpb25zIGlzIGhpZ2hlciB0aGFuIHRoZSBtYXhpdW0gdmFsdWUhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQXR0YWNobWVudCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5BdHRhY2htZW50IHBhcmFtZXRlciBpcyBpbnZhbGlkIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQXR0YWNobWVudC0+Q29udGVudCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IEF0dGFjaG1lbnQtPkNvbnRlbnQgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBBdHRhY2htZW50LT5Db250ZW50VHlwZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IEF0dGFjaG1lbnQtPkNvbnRlbnRUeXBlIHBhcmFtZXRlciBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQXR0YWNobWVudC0+RmlsZW5hbWUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFJhbSAgICAgICAgICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBBdHRhY2htZW50LT5GaWxlbmFtZSBwYXJhbWV0ZXIgaXMgbWlzc2luZyEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW0nLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3QnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgICAgICAgICAgPT4gJ0xlbm92bycsCiAgICAgICAgICAgICAgICAgICAgTW9kZWwgICAgICAgICAgID0+ICdUaGlua3BhZCcsCiAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgID0+ICdUaGlua3BhZCBYMzAwJywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJ0Rlc2t0b3AnLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFNlcmlhbE51bWJlciAgICA9PiAnYWJjMTIzNDVhYmMnLAogICAgICAgICAgICAgICAgICAgIE9wZXJhdGluZ1N5c3RlbSA9PiAnQ2VudE9TIDYuMCcsCiAgICAgICAgICAgICAgICAgICAgQ1BVICAgICAgICAgICAgID0+ICdJbnRlbCBDb3JlIGkzJywKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAnNDAwMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICcyMDAwJywKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIEhhcmREaXNrID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgSGFyZERpc2sgPT4gJy9kZXYnLAogICAgICAgICAgICAgICAgICAgICAgICBDYXBhY2l0eSA9PiAnNTAwMDAnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgRlFETiA9PiAnaG90cy5leGFtcGxlLmNvbScsCiAgICAgICAgICAgICAgICAgICAgTklDICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBBZGRyZXNzICA9PiAnMTkyLjE2OC4zMC4xJywKCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzIwMC4zNC41Ni43OCcsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBHcmFwaGljQWRhcHRlciAgICAgICAgID0+ICdBVEkgUmFkZW9uIDMwMCcsCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgSW5zdGFsbERhdGUgICAgICAgICAgICA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgTm90ZSAgICAgICAgICAgICAgICAgICA9PiAnVGhpcyBpcyBhIERlbW8gQ0knLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dC50eHQnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1pc28tODg1OS0xJywKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ015IFRleHQyLnR4dCcsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtIHdpdGhvdXQgWFNMRGF0YScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0xvY2F0aW9uJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdCcgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKKTsKCiMgU3RhcnQgdGVzdGluZy4KZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKICAgIHN1YnRlc3QgJFRlc3QtPntOYW1lfSA9PiBzdWIgewoKICAgICAgICBteSAkVG9kbyA9IGRlZmluZWQgJFRlc3QtPntUb2RvfSA/IHRvZG8oICRUZXN0LT57VG9kb30gKSA6IHVuZGVmOyAgICAjIyBubyBjcml0aWMgcXcoVmFyaWFibGVzOjpQcm9oaWJpdFVudXNlZFZhcnNTdHJpY3RlcikKCiAgICAgICAgIyBDcmVhdGUgbG9jYWwgb2JqZWN0LgogICAgICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgKTsKICAgICAgICBpc2Ffb2soCiAgICAgICAgICAgICRMb2NhbE9iamVjdCwKICAgICAgICAgICAgWyJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Il0sCiAgICAgICAgICAgICJDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICAgICApOwoKICAgICAgICAjIE1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24uCiAgICAgICAgbXkgJENsb25lZFJlcXVlc3REYXRhID0gU3RvcmFibGU6OmRjbG9uZSggJFRlc3QtPntSZXF1ZXN0RGF0YX0gKTsKCiAgICAgICAgIyBTdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZSBsb2NhbGx5CiAgICAgICAgbXkgJExvY2FsUmVzdWx0ID0gJExvY2FsT2JqZWN0LT5SdW4oCiAgICAgICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgICAgICAgICBJbnZva2VyICAgICAgPT4gJFRlc3QtPntPcGVyYXRpb259LAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgICAgICAgICBQYXNzd29yZCAgPT4gJFBhc3N3b3JkLAogICAgICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIFJlc3RvcmUgY2xvbmVkIGRhdGEuCiAgICAgICAgJFRlc3QtPntSZXF1ZXN0RGF0YX0gPSAkQ2xvbmVkUmVxdWVzdERhdGE7CgogICAgICAgICMgQ2hlY2sgcmVzdWx0LgogICAgICAgIHJlZl9vaygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAnSEFTSCcsCiAgICAgICAgICAgICJMb2NhbCByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0LgogICAgICAgIG15ICRSZXF1ZXN0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwogICAgICAgIGlzYV9vaygKICAgICAgICAgICAgJFJlcXVlc3Rlck9iamVjdCwKICAgICAgICAgICAgWydLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlciddLAogICAgICAgICAgICAiQ3JlYXRlIHJlcXVlc3RlciBvYmplY3QiLAogICAgICAgICk7CgogICAgICAgICMgU3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UuCiAgICAgICAgbXkgJFJlcXVlc3RlclJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgICAgIEludm9rZXIgICAgICA9PiAkVGVzdC0+e09wZXJhdGlvbn0sCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgICAgICV7ICRUZXN0LT57UmVxdWVzdERhdGF9IH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayByZXN1bHQuCiAgICAgICAgcmVmX29rKAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICAgICAnSEFTSCcsCiAgICAgICAgICAgICJSZXF1ZXN0ZXIgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICAgICAgKTsKCiAgICAgICAgaXMoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAgICAgJFRlc3QtPntTdWNjZXNzUmVxdWVzdH0sCiAgICAgICAgICAgICJSZXF1ZXN0ZXIgc3VjY2Vzc2Z1bCByZXN1bHQiLAogICAgICAgICk7CgogICAgICAgICMgVGVzdHMgc3VwcG9zZWQgdG8gc3VjY2VlZC4KICAgICAgICBpZiAoICRUZXN0LT57U3VjY2Vzc0NyZWF0ZX0gKSB7CgogICAgICAgICAgICAjIExvY2FsIHJlc3VsdHMuCiAgICAgICAgICAgIG9rKCAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sICJMb2NhbCByZXN1bHQgZ290IENvbmZpZ0l0ZW1JRCIgKTsKICAgICAgICAgICAgb2soICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57TnVtYmVyfSwgICAgICAgIkxvY2FsIHJlc3VsdCBOdW1iZXIgd2l0aCBUcnVlLiIgKTsKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfSwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgIkxvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgUmVxdWVzdGVyIHJlc3VsdHMuCiAgICAgICAgICAgIG9rKCAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LCAiUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBUcnVlLiIgKTsKICAgICAgICAgICAgb2soICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e051bWJlcn0sICAgICAgICJSZXF1ZXN0ZXIgcmVzdWx0IE51bWJlciB3aXRoIFRydWUuIiApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfSwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgIlJlcXVlc3RlciByZXN1bHQgRXJyb3IgaXMgdW5kZWZpbmVkLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEdldCB0aGUgQ29uZmlnSXRlbSBlbnRyeSAoZnJvbSBsb2NhbCByZXN1bHQpLgogICAgICAgICAgICBteSAkTG9jYWxWZXJzaW9uRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgkTG9jYWxWZXJzaW9uRGF0YSksCiAgICAgICAgICAgICAgICAiY3JlYXRlZCBsb2NhbCB2ZXJzaW9uIHN0cmN0dXJlIHdpdGggVHJ1ZS4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBHZXQgdGhlIGNvbmZpZyBpdGVtIGVudHJ5IChmcm9tIHJlcXVlc3RlciByZXN1bHQpLgogICAgICAgICAgICBteSAkUmVxdWVzdGVyVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIElzSGFzaFJlZldpdGhEYXRhKCRSZXF1ZXN0ZXJWZXJzaW9uRGF0YSksCiAgICAgICAgICAgICAgICAiY3JlYXRlZCByZXF1ZXN0ZXIgY29uZmlnIGl0ZW0gc3RyY3R1cmUgd2l0aCBUcnVlLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENoZWNrIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgdGVzdC4KICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KE51bWJlciBDbGFzcyBOYW1lIEluY2lTdGF0ZSBEZXBsU3RhdGUgRGVwbFN0YXRlVHlwZSkpIHsKICAgICAgICAgICAgICAgIGlmICggJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtfS0+eyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgICAgICAgICAkTG9jYWxWZXJzaW9uRGF0YS0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAgICAgICAgICAgICAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICJsb2NhbCBDb25maWdJdGVtLT4kQXR0cmlidXRlIiAuICIgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57Q0lYTUxEYXRhfSApIHsKCiAgICAgICAgICAgICAgICAjIFRyYW5zZm9ybSBYTUwgZGF0YSB0byBhIGNvbXBhcmFibGUgZm9ybWF0LgogICAgICAgICAgICAgICAgbXkgJERlZmluaXRpb24gPSAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERlZmluaXRpb259OwoKICAgICAgICAgICAgICAgICMgTWFrZSBhIGRlZXAgY29weSB0byBhdm9pZCBjaGFuZ2luZyB0aGUgcmVzdWx0LgogICAgICAgICAgICAgICAgbXkgJENsb25lZFhNTERhdGEgPSBTdG9yYWJsZTo6ZGNsb25lKCAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERhdGF9ICk7CgogICAgICAgICAgICAgICAgbXkgJEZvcm1hdGVkWE1MRGF0YSA9ICRMb2NhbE9iamVjdC0+SW52ZXJ0Rm9ybWF0WE1MRGF0YSgKICAgICAgICAgICAgICAgICAgICBYTUxEYXRhID0+ICRDbG9uZWRYTUxEYXRhLT5bMV0tPntWZXJzaW9ufSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJFJlcGxhY2VkWE1MRGF0YSA9ICRMb2NhbE9iamVjdC0+SW52ZXJ0UmVwbGFjZVhNTERhdGEoCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICA9PiAkRm9ybWF0ZWRYTUxEYXRhLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgQ29tcGFyZSBYTUwgZGF0YS4KICAgICAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgICAgICRSZXBsYWNlZFhNTERhdGEsCiAgICAgICAgICAgICAgICAgICAgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtfS0+e0NJWE1MRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgImxvY2FsIENvbmZpZ0l0ZW0tPkNJWE1MRGF0YSBtYXRjaCB0ZXN0IGRlZmluaXRpb24uIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtfS0+e0F0dGFjaG1lbnR9ICkgewoKICAgICAgICAgICAgICAgICMgQ2hlY2sgYXR0YWNobWVudHMuCiAgICAgICAgICAgICAgICBteSBAQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSBAQXR0YWNobWVudHM7CiAgICAgICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICAgICAgZm9yIG15ICRGaWxlTmFtZSAoQEF0dGFjaG1lbnRMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkRmlsZU5hbWU7CgogICAgICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlTmFtZSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIE5leHQgaWYgbm90IGF0dGFjaG1lbnQuCiAgICAgICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkQXR0YWNobWVudCk7CgogICAgICAgICAgICAgICAgICAgICMgQ29udmVydCBjb250ZW50IHRvIGJhc2U2NC4KICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudC0+e0NvbnRlbnR9ID0gZW5jb2RlX2Jhc2U2NCggJEF0dGFjaG1lbnQtPntDb250ZW50fSwgJycgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBEZWxldGUgbm90IG5lZWRlZCBhdHRpYnV0ZXMuCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KFByZWZlcmVuY2VzIEZpbGVzaXplIFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkQXR0YWNobWVudC0+eyRBdHRyaWJ1dGV9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBwdXNoIEBBdHRhY2htZW50cywgJEF0dGFjaG1lbnQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgQFJlcXVlc3RlZEF0dGFjaG1lbnRzOwogICAgICAgICAgICAgICAgaWYgKCByZWYgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntBdHRhY2htZW50fSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUmVxdWVzdGVkQXR0YWNobWVudHMsICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbX0tPntBdHRhY2htZW50fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIEBSZXF1ZXN0ZWRBdHRhY2htZW50cyA9IEB7ICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbX0tPntBdHRhY2htZW50fSB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgICAgIFxAQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAgXEBSZXF1ZXN0ZWRBdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICAibG9jYWwgQ29uZmlnSXRlbS0+QXR0YWNobWVudCBtYXRjaCB0ZXN0IGRlZmluaXRpb24uIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgUmVtb3ZlIGF0dHJpYnV0ZXMgdGhhdCBtaWdodCBiZSBkaWZmZXJlbnQgZnJvbSBsb2NhbCBhbmQgcmVxdWVzdGVyIHJlc3BvbnNlcy4KICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKAogICAgICAgICAgICAgICAgcXcoQ29uZmlnSXRlbUlEIE51bWJlciBDcmVhdGVUaW1lIFZlcnNpb25JRCBMYXN0VmVyc2lvbklEKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkZWxldGUgJExvY2FsVmVyc2lvbkRhdGEtPnskQXR0cmlidXRlfTsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkUmVxdWVzdGVyVmVyc2lvbkRhdGEtPnskQXR0cmlidXRlfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkTG9jYWxWZXJzaW9uRGF0YSwKICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJWZXJzaW9uRGF0YSwKICAgICAgICAgICAgICAgICJMb2NhbCBjb25maWcgaXRlbSByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgRGVsZXRlIHRoZSBjb25maWcgaXRlbXMuCiAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICgKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIG15ICRDb25maWdJdGVtRGVsZXRlID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgU2FuaXR5IGNoZWNrLgogICAgICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1EZWxldGUsCiAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1EZWxldGUoKSBzdWNjZXNzZnVsIGZvciBDb25maWdJdGVtIElEICRDb25maWdJdGVtSUQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBUZXN0cyBzdXBwb3NlZCB0byBmYWlsLgogICAgICAgIGVsc2UgewogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICEkTG9jYWxSZXN1bHQtPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgIkxvY2FsIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBmYWxzZS4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICEkTG9jYWxSZXN1bHQtPntOdW1iZXJ9LAogICAgICAgICAgICAgICAgIkxvY2FsIHJlc3VsdCBOdW1iZXIgd2l0aCBmYWxzZS4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWREYXRhfS0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgICAgICJMb2NhbCByZXN1bHQgRXJyb3JDb2RlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBsb2NhbCBjYWxsIHJlc3VsdC4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWREYXRhfS0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgICAgICJMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBsb2NhbCBjYWxsIHJlc3VsdC4iLAogICAgICAgICAgICApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0KICAgICAgICAgICAgICAgICAgICAuICc6ICcKICAgICAgICAgICAgICAgICAgICAuICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgICAgICJMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIChvdXRzaWRlIERhdGEgaGFzaCkgbWF0Y2hlZCB3aXRoIGNvbmNhdGVuYXRpb24iCiAgICAgICAgICAgICAgICAgICAgLiAiIG9mIEVycm9yQ29kZSBhbmQgRXJyb3JNZXNzYWdlIHdpdGhpbiBEYXRhIGhhc2guIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgUmVtb3ZlIEVycm9yTWVzc2FnZSBwYXJhbWV0ZXIgZnJvbSBkaXJlY3QgY2FsbC4KICAgICAgICAgICAgIyBSZXN1bHQgdG8gYmUgY29uc2lzdGVudCB3aXRoIFNPQVAgY2FsbCByZXN1bHQuCiAgICAgICAgICAgIGlmICggJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFNhbml0eSBjaGVjay4KICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAhJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgICAgICJMb2NhbCByZXN1bHQgRXJyb01lc3NhZ2UgKG91dHNpc2UgRGF0YSBoYXNoKSBnb3QgcmVtb3ZlZCB0byBjb21wYXJlIgogICAgICAgICAgICAgICAgICAgIC4gIiBsb2NhbCBhbmQgcmVtb3RlIHRlc3RzLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQsCiAgICAgICAgICAgICAgICAiTG9jYWwgcmVzdWx0IG1hdGNoZWQgd2l0aCByZW1vdGUgcmVzdWx0LiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfTsKfQoKIyBDbGVhbiB1cCB3ZWJzZXJ2aWNlLgpteSAkV2Vic2VydmljZURlbGV0ZSA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlRGVsZXRlKAogICAgSUQgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBVc2VySUQgPT4gMSwKKTsKb2soICRXZWJzZXJ2aWNlRGVsZXRlLCAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiICk7Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemDelete.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCnNraXBfYWxsKCdTa2lwcGluZyBDTURCIEdlbmVyaWMgSW50ZXJmYWNlIHRlc3RzIHRlbXBvcmFyaWx5LicpOwpkb25lX3Rlc3Rpbmc7CmV4aXQ7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXI7CiN1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGU7CiN1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1HZXQ7CiN1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1EZWxldGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkU2VsZjsKCiMgc2V0IFVzZXJJRCB0byByb290Cm15ICRVc2VySUQgPSAxOwoKIyBoZWxwZXIgb2JqZWN0CiMgc2tpcCBTU0wgY2VydGljaWF0ZSB2ZXJpZmljYXRpb24KJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgU2tpcFNTTFZlcmlmeSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGNoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQKJFNlbGYtPklzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBvYmplY3QKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CgojIGNyZWF0ZSB3ZWJzZXJ2aWNlIG9iamVjdApteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScsCiAgICByZWYgJFdlYnNlcnZpY2VPYmplY3QsCiAgICAiQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0IiwKKTsKCiMgc2V0IHdlYnNlcnZpY2UgbmFtZQpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VJRCwKICAgICJBZGRlZCBXZWJzZXJ2aWNlIiwKKTsKCiMgR2V0IHJlbW90ZSBob3N0IHdpdGggc29tZSBwcmVjYXV0aW9ucyBmb3IgY2VydGFpbiB1bml0IHRlc3Qgc3lzdGVtcy4KbXkgJEhvc3QgPSAkSGVscGVyLT5HZXRUZXN0SFRUUEhvc3RuYW1lOwoKIyBwcmVwYXJlIHdlYnNlcnZpY2UgY29uZmlnCm15ICRSZW1vdGVTeXN0ZW0gPQogICAgJENvbmZpZ09iamVjdC0+R2V0KCdIdHRwVHlwZScpCiAgICAuICc6Ly8nCiAgICAuICRIb3N0CiAgICAuICcvJwogICAgLiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJykKICAgIC4gJy9ucGgtZ2VuZXJpY2ludGVyZmFjZS5wbC9XZWJzZXJ2aWNlSUQvJwogICAgLiAkV2Vic2VydmljZUlEOwoKbXkgJFdlYnNlcnZpY2VDb25maWcgPSB7CiAgICBEZXNjcmlwdGlvbiA9PgogICAgICAgICdUZXN0IGZvciBDb25maWdJdGVtIENvbm5lY3RvciB1c2luZyBTT0FQIHRyYW5zcG9ydCBiYWNrZW5kLicsCiAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFByb3ZpZGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwXzAwMF8wMDAsCiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdG9iby5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbURlbGV0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtRGVsZXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdTZXNzaW9uOjpTZXNzaW9uQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFJlcXVlc3RlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290b2JvLm9yZy9Tb2FwVGVzdEludGVyZmFjZS8nLAogICAgICAgICAgICAgICAgRW5jb2RpbmcgID0+ICdVVEYtOCcsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEludm9rZXIgPT4gewogICAgICAgICAgICBDb25maWdJdGVtRGVsZXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXNzaW9uQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAp9OwoKIyB1cGRhdGUgd2Vic2VydmljZSB3aXRoIHJlYWwgY29uZmlnCm15ICRXZWJzZXJ2aWNlVXBkYXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VVcGRhdGUoCiAgICBJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBOYW1lICAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbmZpZyAgPT4gJFdlYnNlcnZpY2VDb25maWcsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VVcGRhdGUsCiAgICAiVXBkYXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQgLSAkV2Vic2VydmljZU5hbWUiLAopOwoKIyBkZWJ1Z2dlciBvYmplY3QKbXkgJERlYnVnZ2VyT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlci0+bmV3KAogICAgRGVidWdnZXJDb25maWcgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBXZWJzZXJ2aWNlSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgQ29tbXVuaWNhdGlvblR5cGUgPT4gJ1Byb3ZpZGVyJywKKTsKJFNlbGYtPklzKAogICAgcmVmICREZWJ1Z2dlck9iamVjdCwKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyJywKICAgICdEZWJ1Z2dlck9iamVjdCBpbnN0YW5jaWF0ZSBjb3JyZWN0bHknLAopOwoKIyBHZXQgU2Vzc2lvbklECiMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKbXkgJFJlcXVlc3RlclNlc3Npb25PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwokU2VsZi0+SXMoCiAgICAnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInLAogICAgcmVmICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LAogICAgIlNlc3Npb25JRCAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKKTsKCiMgY3JlYXRlIGEgbmV3IHVzZXIgZm9yIGN1cnJlbnQgdGVzdApteSAkVXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJyBdLAopOwoKbXkgJFBhc3N3b3JkID0gJFVzZXJMb2dpbjsKCiMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKbXkgJFJlcXVlc3RlclNlc3Npb25SZXN1bHQgPSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdC0+UnVuKAogICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBJbnZva2VyICAgICAgPT4gJ1Nlc3Npb25DcmVhdGUnLAogICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICBQYXNzd29yZCAgPT4gJFBhc3N3b3JkLAogICAgfSwKKTsKCm15ICROZXdTZXNzaW9uSUQgPSAkUmVxdWVzdGVyU2Vzc2lvblJlc3VsdC0+e0RhdGF9LT57U2Vzc2lvbklEfTsKCiNDb25maWdJdGVtdHMgY29udGFpbmVyICh1c2VmdWxsIGZvciBsb29rdXAgY29tcGFyZSkKbXkgJUFkZGVkQ29uZmlnSXRlbXM7Cm15IEBBZGRlZENvbmZpZ0l0ZW1JRHM7CgojIENvbmZpZ0l0ZW0gc2V0dGluZ3MKbXkgQENvbmZpZ0l0ZW1zID0gKAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTEtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIE5JQyA9PiB7CiAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdMbzAnLAogICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTItJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1JlcGFpcicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdXYXJuaW5nJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgICAgPT4gJ0xlbm92bycsCiAgICAgICAgICAgIE1vZGVsICAgICAgICAgICA9PiAnVGhpbmtwYWQnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgPT4gJ1RoaW5rcGFkIFgzMDAnLAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJ0Rlc2t0b3AnLAogICAgICAgICAgICBPd25lciAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyICAgID0+ICdhYmMxMjM0NWFiYycsCiAgICAgICAgICAgIE9wZXJhdGluZ1N5c3RlbSA9PiAnQ2VudE9TIDYuMCcsCiAgICAgICAgICAgIENQVSAgICAgICAgICAgICA9PiAnSW50ZWwgQ29yZSBpMycsCiAgICAgICAgICAgIFJhbSAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgMjAwMCwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSGFyZERpc2sgPT4gewogICAgICAgICAgICAgICAgSGFyZERpc2sgPT4gJy9kZXYnLAogICAgICAgICAgICAgICAgQ2FwYWNpdHkgPT4gNTAwMDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEZRRE4gPT4gJ2hvdHMuZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOSUMgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgSVBBZGRyZXNzICA9PiAnMTkyLjE2OC4zMC4xJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcyMDAuMzQuNTYuNzgnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgR3JhcGhpY0FkYXB0ZXIgPT4gJ0FUSSBSYWRlb24gMzAwJywKICAgICAgICAgICAgSW5zdGFsbERhdGUgICAgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICBOb3RlICAgICAgICAgICA9PiAnVGhpcyBpcyBhIERlbW8gQ0knLAogICAgICAgIH0sCiAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dC50eHQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMScsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dDIudHh0JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ0hhcmR3YXJlJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS0zLScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgPT4gJ0hhcmR3YXJlIFZlbmRvcicsCiAgICAgICAgICAgIE1vZGVsICAgICAgICA9PiAnSGFyZHdhcmUgTW9kZWwnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJ1Rlc2l0bmcgSGFucmR3YXJlJywKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdDYW1lcmEnLAogICAgICAgICAgICBPd25lciAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyID0+ICcxMjNhbWM0NTYnLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnTG9jYXRpb24nLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTQtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgID0+ICdCdWlsZGluZycsCiAgICAgICAgICAgIFBob25lMSAgID0+ICcxMjMnLAogICAgICAgICAgICBQaG9uZTIgICA9PiAnNDU2JywKICAgICAgICAgICAgRmF4ICAgICAgPT4gJzc4OScsCiAgICAgICAgICAgICdFLU1haWwnID0+ICdzb2Vtb25lQGV4YW1wbGUuY29tJywKICAgICAgICAgICAgQWRkcmVzcyAgPT4gJ1NvbWUgYWRkcmVzcycsCiAgICAgICAgICAgIE5vdGUgICAgID0+ICdUaGlzIGlzIGEgdGVzdCBsb2NhdGlvbicsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdOZXR3b3JrJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS01LScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICA9PiAnTmV0d29yayBDSSBmb3IgdGVzdGluZycsCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgID0+ICdMQU4nLAogICAgICAgICAgICBOZXR3b3JrQWRkcmVzcyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmV0d29ya0FkZHJlc3MgPT4gJzE5Mi4xLjEuMScsCiAgICAgICAgICAgICAgICAgICAgU3VibmV0TWFzayAgICAgPT4gJzI1NS4yNTUuMjU1LjAnLAogICAgICAgICAgICAgICAgICAgIEdhdGV3YXkgICAgICAgID0+ICcxOTIuMS4xLjI1NCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5ldHdvcmtBZGRyZXNzID0+ICcxOTIuMS41MC4xJywKICAgICAgICAgICAgICAgICAgICBTdWJuZXRNYXNrICAgICA9PiAnMjU1LjI1NS4yNTUuMCcsCiAgICAgICAgICAgICAgICAgICAgR2F0ZXdheSAgICAgICAgPT4gJzE5Mi4xLjUwLjI1NCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBOb3RlID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktNi0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgVmVuZG9yICAgICAgID0+ICdTb21lIHNvZnR3YXJlIHZlbmRvcicsCiAgICAgICAgICAgIFZlcnNpb24gICAgICA9PiAnMS4xLjEnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJ1NvbWUgc29mdHdhcmUgZGVzY3JpcHRpb24nLAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0FkbWluIFRvb2wnLAogICAgICAgICAgICBPd25lciAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyID0+ICcxMjNBQkM0NTYnLAogICAgICAgICAgICBMaWNlbmNlVHlwZSAgPT4gJ09wZW4gU291cmNlJywKICAgICAgICAgICAgTGljZW5jZUtleSAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnMTIzNCcsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzEnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzQ1NjcnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0yNScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBNZWRpYSA9PiAnRG93bmxvYWQnLAogICAgICAgICAgICBOb3RlICA9PiAnVGhpcyBpcyBhIHRlc3QgQ0knLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnU29mdHdhcmUnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTctJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICA9PiAnU29tZSBzb2Z0d2FyZSB2ZW5kb3InLAogICAgICAgICAgICBWZXJzaW9uICAgICAgPT4gJzEuMS4xJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gID0+ICdTb21lIHNvZnR3YXJlIGRlc2NyaXB0aW9uJywKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdBZG1pbiBUb29sJywKICAgICAgICAgICAgT3duZXIgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgIFNlcmlhbE51bWJlciA9PiAnMTIzQUJDNDU2JywKICAgICAgICAgICAgTGljZW5jZVR5cGUgID0+ICdPcGVuIFNvdXJjZScsCiAgICAgICAgICAgIExpY2VuY2VLZXkgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzEyMzQnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICcxJywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICc0NTY3JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMycsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMjUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgTWVkaWEgPT4gJ0Rvd25sb2FkJywKICAgICAgICAgICAgTm90ZSAgPT4gJ1RoaXMgaXMgYSB0ZXN0IENJJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ1NvZnR3YXJlJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS04LScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgPT4gJ1NvbWUgc29mdHdhcmUgdmVuZG9yJywKICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+ICcxLjEuMScsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICA9PiAnU29tZSBzb2Z0d2FyZSBkZXNjcmlwdGlvbicsCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnQWRtaW4gVG9vbCcsCiAgICAgICAgICAgIE93bmVyICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgPT4gJzEyM0FCQzQ1NicsCiAgICAgICAgICAgIExpY2VuY2VUeXBlICA9PiAnT3BlbiBTb3VyY2UnLAogICAgICAgICAgICBMaWNlbmNlS2V5ICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICcxMjM0JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnNDU2NycsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzMnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTI1JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIE1lZGlhID0+ICdEb3dubG9hZCcsCiAgICAgICAgICAgIE5vdGUgID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCik7CgpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJENsYXNzTGlzdCAgICAgICAgICAgID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCik7Cm15ICVSZXZlcnNlQ2xhc3NMaXN0ID0gcmV2ZXJzZSAleyRDbGFzc0xpc3R9OwpteSAkSW5jaVN0YXRlTGlzdCAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVSZXZlcnNlSW5jaVN0YXRlTGlzdCA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07Cm15ICREZXBsU3RhdGVMaXN0ICAgICAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJVJldmVyc2VEZXBsU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKZm9yIG15ICRDb25maWdJdGVtIChAQ29uZmlnSXRlbXMpIHsKCiAgICAjIG1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24KICAgIG15ICRDbG9uZWRDb25maWdJdGVtID0gU3RvcmFibGU6OmRjbG9uZSgkQ29uZmlnSXRlbSk7CgogICAgIyBjcmVhdGUgbmV3IGNvbmZpZyBpdGVtCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUmV2ZXJzZUNsYXNzTGlzdHsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICAgICBVc2VySUQgID0+ICRVc2VySUQsCiAgICApOwoKICAgICMgc2FuaXR5IGNoZWNrcwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAiQWRkZWQgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUlEIiwKICAgICk7CgogICAgbXkgJERlZmluaXRpb25EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUmV2ZXJzZUNsYXNzTGlzdHsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICk7CgogICAgbXkgJExvY2FsT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGUtPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgbXkgJFJlcGxhY2VkWE1MRGF0YSA9ICRMb2NhbE9iamVjdC0+UmVwbGFjZVhNTERhdGEoCiAgICAgICAgWE1MRGF0YSAgICA9PiAkQ29uZmlnSXRlbS0+e0NJWE1MRGF0YX0sCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbkRhdGEtPntEZWZpbml0aW9uUmVmfSwKICAgICk7CgogICAgbXkgJFhNTERhdGEgPSAkTG9jYWxPYmplY3QtPkZvcm1hdFhNTERhdGEoCiAgICAgICAgWE1MRGF0YSA9PiAkUmVwbGFjZWRYTUxEYXRhLAogICAgKTsKCiAgICAjIFRPRE86IHN3aXRjaCB0byBDb25maWdJdGVtVXBkYXRlKCkgPz8/CiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtLT57TmFtZX0sCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uRGF0YS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICRSZXZlcnNlRGVwbFN0YXRlTGlzdHsgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGV9IH0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRSZXZlcnNlSW5jaVN0YXRlTGlzdHsgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGV9IH0sCiAgICAgICAgWE1MRGF0YSAgICAgID0+ICRYTUxEYXRhLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICAjIHNhbml0eSBjaGVja3MKICAgIG9rKCAkVmVyc2lvbklELCAiQWRkZWQgdmVyc2lvbiAkVmVyc2lvbklEIiApOwoKICAgIG15ICRWZXJzaW9uSW5mbyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3REZWVwbHkoCiAgICAgICAgJFZlcnNpb25JbmZvLAogICAgICAgIHt9LAogICAgICAgICJBZGRlZCBDb25maWdJdGVtICRDb25maWdJdGVtSUQgLSBWZXJzaW9uIGlzIG5vdCBhbiBlbXB0eSBoYXNoIiwKICAgICk7CgogICAgIyByZW1lbWJlciB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CiAgICAgICAgJEFkZGVkQ29uZmlnSXRlbXN7JENvbmZpZ0l0ZW1JRH0gPSAkQ2xvbmVkQ29uZmlnSXRlbTsKICAgICAgICBwdXNoIEBBZGRlZENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICB9Cn0KCiMgYWN0dWFsIHRlc3RzIGZvciBDb25maWdJdGVtRGVsZXRlIG9wZXJhdGlvbgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0VtcHR5IFJlcXVlc3QnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0RlbGV0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7fSwKICAgICAgICBFeHBlY3RlZERhdGEgICA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbURlbGV0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbURlbGV0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDb25maWdJdGVtSUQgZm9ybWF0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gewogICAgICAgICAgICAgICAgVGVzdDEgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbURlbGV0ZS5Xcm9uZ1N0cnVjdHVyZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQ29uZmlnSXRlbUlEJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbURlbGV0ZS5BY2Nlc3NEZW5pZWQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIENvbmZpZ0l0ZW1JRCBBcnJheScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFsgJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtRGVsZXRlLkFjY2Vzc0RlbmllZCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgMScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbMF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzBdIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQ29uZmlnSXRlbUlEIDEgKHdhcyBhbHJlYWR5IGRlbGV0ZWQgYmVmb3JlKScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbMF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUuQWNjZXNzRGVuaWVkJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbURlbGV0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCAyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1sxXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBbICRBZGRlZENvbmZpZ0l0ZW1JRHNbMV0gXSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbURlbGV0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCAzJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1syXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7fSwKICAgICAgICBPcGVyYXRpb24gICAgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbM10sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzRdIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbNF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzRdIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbNV0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzVdIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNy04JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWwogICAgICAgICAgICAgICAgJEFkZGVkQ29uZmlnSXRlbUlEc1s2XSwKICAgICAgICAgICAgICAgICRBZGRlZENvbmZpZ0l0ZW1JRHNbN10sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWwogICAgICAgICAgICAgICAgJEFkZGVkQ29uZmlnSXRlbUlEc1s2XSwKICAgICAgICAgICAgICAgICRBZGRlZENvbmZpZ0l0ZW1JRHNbN10sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKKTsKCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgIyBjcmVhdGUgbG9jYWwgb2JqZWN0CiAgICBteSAkTG9jYWxPYmplY3QgPSAiS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OiRUZXN0LT57T3BlcmF0aW9ufSItPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259IiwKICAgICAgICByZWYgJExvY2FsT2JqZWN0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gQ3JlYXRlIGxvY2FsIG9iamVjdCIsCiAgICApOwoKICAgICMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKICAgIG15ICRSZXF1ZXN0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwogICAgJFNlbGYtPklzKAogICAgICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgcmVxdWVzdGVyIG9iamVjdCIsCiAgICApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRSZXF1ZXN0ZXJSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAkVGVzdC0+e1N1Y2Nlc3NSZXF1ZXN0fSwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciBzdWNjZXNzZnVsIHJlc3VsdCIsCiAgICApOwoKICAgIGlmICggJFRlc3QtPntTdWNjZXNzRGVsZXRlfSApIHsKCiAgICAgICAgIyByZXF1ZXN0ZXIgcmVzdWx0cwogICAgICAgICRTZWxmLT5Jc05vdCgKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSUQgaXMgbm90IHVuZGVmaW5lZC4iLAogICAgICAgICk7CgogICAgICAgIG15ICRFeHBlY3RlZFJlc3VsdFR5cGUgPSByZWYgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtSUR9OwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIHJlZiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAkRXhwZWN0ZWRSZXN1bHRUeXBlLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbUlEIHJlZmVyZW5jZS4iLAogICAgICAgICk7CgogICAgICAgIGlmICggJEV4cGVjdGVkUmVzdWx0VHlwZSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSApLAogICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IENvbmZpZ0l0ZW1JRCByZWZlcmVuY2UgaXMgbm90IGVtcHR5LiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgdGVzdHMgc3VwcG9zZWQgdG8gZmFpbAogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbUlEIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgJFRlc3QtPntFeHBlY3RlZERhdGF9LT57RGF0YX0tPntFcnJvcn0tPntFcnJvckNvZGV9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgRXJyb3JDb2RlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBjYWxsIHJlc3VsdC4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBFcnJvck1lc3NhZ2Ugd2l0aCB0cnVlLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICcnLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgRXJyb3JNZXNzYWdlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICk7CiAgICB9Cn0gICAgI2VuZCBsb29wCgojIGNsZWFuIHVwCgojIGNsZWFuIHVwIHdlYnNlcnZpY2UKbXkgJFdlYnNlcnZpY2VEZWxldGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZURlbGV0ZSgKICAgIElEICAgICA9PiAkV2Vic2VydmljZUlELAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiLAopOwoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemGet.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCnNraXBfYWxsKCdTa2lwcGluZyBDTURCIEdlbmVyaWMgSW50ZXJmYWNlIHRlc3RzIHRlbXBvcmFyaWx5LicpOwpkb25lX3Rlc3Rpbmc7CmV4aXQ7Cgp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlcjsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRTZWxmOwoKIyBzZXQgVXNlcklEIHRvIHJvb3QKbXkgJFVzZXJJRCA9IDE7CgojIGhlbHBlciBvYmplY3QKIyBza2lwIFNTTCBjZXJ0aWNpYXRlIHZlcmlmaWNhdGlvbgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBTa2lwU1NMVmVyaWZ5ID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgpteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiMgY2hlY2sgaWYgU1NMIENlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBpcyBkaXNhYmxlZAokU2VsZi0+SXMoCiAgICAkRU5We1BFUkxfTFdQX1NTTF9WRVJJRllfSE9TVE5BTUV9LAogICAgMCwKICAgICdEaXNhYmxlZCBTU0wgY2VydGl0aWNhdGVzIHZlcmlmaWNhdGlvbiBpbiBlbnZpcm9ubWVudCcsCik7CgojIGNyZWF0ZSBDb25maWdJdGVtIG9iamVjdApteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKbXkgJFRlc3RDdXN0b21lclVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKCiMgY3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0Cm15ICRXZWJzZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKTsKJFNlbGYtPklzKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJywKICAgIHJlZiAkV2Vic2VydmljZU9iamVjdCwKICAgICJDcmVhdGUgd2Vic2VydmljZSBvYmplY3QiLAopOwoKIyBzZXQgd2Vic2VydmljZSBuYW1lCm15ICRXZWJzZXJ2aWNlTmFtZSA9ICctVGVzdC0nIC4gJFJhbmRvbUlEOwoKbXkgJFdlYnNlcnZpY2VJRCA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlQWRkKAogICAgTmFtZSAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbmZpZyA9PiB7CiAgICAgICAgRGVidWdnZXIgPT4gewogICAgICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIH0sCiAgICAgICAgUHJvdmlkZXIgPT4gewogICAgICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZUlELAogICAgIkFkZGVkIFdlYnNlcnZpY2UiLAopOwoKIyBnZXQgcmVtb3RlIGhvc3Qgd2l0aCBzb21lIHByZWNhdXRpb25zIGZvciBjZXJ0YWluIHVuaXQgdGVzdCBzeXN0ZW1zCm15ICRIb3N0OwpteSAkRlFETiA9ICRDb25maWdPYmplY3QtPkdldCgnRlFETicpOwoKIyB0cnkgdG8gcmVzb2x2ZSBmcWRuIGhvc3QKaWYgKCAkRlFETiBuZSAneW91cmhvc3QuZXhhbXBsZS5jb20nICYmIGdldGhvc3RieW5hbWUoJEZRRE4pICkgewogICAgJEhvc3QgPSAkRlFETjsKfQoKIyB0cnkgdG8gcmVzb2x2ZSBsb2NhbGhvc3QgaW5zdGVhZAppZiAoICEkSG9zdCAmJiBnZXRob3N0YnluYW1lKCdsb2NhbGhvc3QnKSApIHsKICAgICRIb3N0ID0gJ2xvY2FsaG9zdCc7Cn0KCiMgdXNlIGhhcmRjb2RlZCBsb2NhbGhvc3QgaXAgYWRkcmVzcwppZiAoICEkSG9zdCApIHsKICAgICRIb3N0ID0gJzEyNy4wLjAuMSc7Cn0KCiMgcHJlcGFyZSB3ZWJzZXJ2aWNlIGNvbmZpZwpteSAkUmVtb3RlU3lzdGVtID0KICAgICRDb25maWdPYmplY3QtPkdldCgnSHR0cFR5cGUnKQogICAgLiAnOi8vJwogICAgLiAkSG9zdAogICAgLiAnLycKICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpCiAgICAuICcvbnBoLWdlbmVyaWNpbnRlcmZhY2UucGwvV2Vic2VydmljZUlELycKICAgIC4gJFdlYnNlcnZpY2VJRDsKCm15ICRXZWJzZXJ2aWNlQ29uZmlnID0gewoKICAgICMgICAgTmFtZSA9PiAnJywKICAgIERlc2NyaXB0aW9uID0+CiAgICAgICAgJ1Rlc3QgZm9yIENvbmZpZ0l0ZW0gQ29ubmVjdG9yIHVzaW5nIFNPQVAgdHJhbnNwb3J0IGJhY2tlbmQuJywKICAgIERlYnVnZ2VyID0+IHsKICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIFRlc3RNb2RlICAgICAgID0+IDEsCiAgICB9LAogICAgUHJvdmlkZXIgPT4gewogICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgIFR5cGUgICA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTBfMDAwXzAwMCwKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290b2JvLm9yZy9Tb2FwVGVzdEludGVyZmFjZS8nLAogICAgICAgICAgICAgICAgRW5kcG9pbnQgID0+ICRSZW1vdGVTeXN0ZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXNzaW9uQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Nlc3Npb246OlNlc3Npb25DcmVhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgUmVxdWVzdGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3RvYm8ub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmNvZGluZyAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgSW52b2tlciA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlc3Npb25DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCn07CgojIHVwZGF0ZSB3ZWJzZXJ2aWNlIHdpdGggcmVhbCBjb25maWcKbXkgJFdlYnNlcnZpY2VVcGRhdGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZVVwZGF0ZSgKICAgIElEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIE5hbWUgICAgPT4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29uZmlnICA9PiAkV2Vic2VydmljZUNvbmZpZywKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZVVwZGF0ZSwKICAgICJVcGRhdGVkIFdlYnNlcnZpY2UgJFdlYnNlcnZpY2VJRCAtICRXZWJzZXJ2aWNlTmFtZSIsCik7CgojIGRlYnVnZ2VyIG9iamVjdApteSAkRGVidWdnZXJPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyLT5uZXcoCiAgICBEZWJ1Z2dlckNvbmZpZyA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFdlYnNlcnZpY2VJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBDb21tdW5pY2F0aW9uVHlwZSA9PiAnUHJvdmlkZXInLAopOwokU2VsZi0+SXMoCiAgICByZWYgJERlYnVnZ2VyT2JqZWN0LAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXInLAogICAgJ0RlYnVnZ2VyT2JqZWN0IGluc3RhbmNpYXRlIGNvcnJlY3RseScsCik7CgojIEdldCBTZXNzaW9uSUQKIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdApteSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICByZWYgJFJlcXVlc3RlclNlc3Npb25PYmplY3QsCiAgICAiU2Vzc2lvbklEIC0gQ3JlYXRlIHJlcXVlc3RlciBvYmplY3QiLAopOwoKIyBjcmVhdGUgYSBuZXcgdXNlciBmb3IgY3VycmVudCB0ZXN0Cm15ICRVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCik7CgpteSAkUGFzc3dvcmQgPSAkVXNlckxvZ2luOwoKIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQpteSAkUmVxdWVzdGVyU2Vzc2lvblJlc3VsdCA9ICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LT5SdW4oCiAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgIEludm9rZXIgICAgICA9PiAnU2Vzc2lvbkNyZWF0ZScsCiAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgIFVzZXJMb2dpbiA9PiAkVXNlckxvZ2luLAogICAgICAgIFBhc3N3b3JkICA9PiAkUGFzc3dvcmQsCiAgICB9LAopOwoKbXkgJE5ld1Nlc3Npb25JRCA9ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0LT57RGF0YX0tPntTZXNzaW9uSUR9OwoKI0NvbmZpZ0l0ZW10cyBjb250YWluZXIgKHVzZWZ1bGwgZm9yIGxvb2t1cCBjb21wYXJlKQpteSAlQWRkZWRDb25maWdJdGVtczsKbXkgQEFkZGVkQ29uZmlnSXRlbUlEczsKCiMgQ29uZmlnSXRlbSBzZXR0aW5ncwpteSBAQ29uZmlnSXRlbXMgPSAoCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktMS0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgTklDID0+IHsKICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0xvMCcsCiAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktMi0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUmVwYWlyJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ1dhcm5pbmcnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICAgICA9PiAnTGVub3ZvJywKICAgICAgICAgICAgTW9kZWwgICAgICAgICAgID0+ICdUaGlua3BhZCcsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICA9PiAnVGhpbmtwYWQgWDMwMCcsCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgICA9PiAnRGVza3RvcCcsCiAgICAgICAgICAgIE93bmVyICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgICAgPT4gJ2FiYzEyMzQ1YWJjJywKICAgICAgICAgICAgT3BlcmF0aW5nU3lzdGVtID0+ICdDZW50T1MgNi4wJywKICAgICAgICAgICAgQ1BVICAgICAgICAgICAgID0+ICdJbnRlbCBDb3JlIGkzJywKICAgICAgICAgICAgUmFtICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAyMDAwLAogICAgICAgICAgICBdLAogICAgICAgICAgICBIYXJkRGlzayA9PiB7CiAgICAgICAgICAgICAgICBIYXJkRGlzayA9PiAnL2RldicsCiAgICAgICAgICAgICAgICBDYXBhY2l0eSA9PiA1MDAwMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRlFETiA9PiAnaG90cy5leGFtcGxlLmNvbScsCiAgICAgICAgICAgIE5JQyAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcxOTIuMTY4LjMwLjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzIwMC4zNC41Ni43OCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBHcmFwaGljQWRhcHRlciA9PiAnQVRJIFJhZGVvbiAzMDAnLAogICAgICAgICAgICBJbnN0YWxsRGF0ZSAgICA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgIE5vdGUgICAgICAgICAgID0+ICdUaGlzIGlzIGEgRGVtbyBDSScsCiAgICAgICAgfSwKICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdNeSBUZXh0LnR4dCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xJywKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdNeSBUZXh0Mi50eHQnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnSGFyZHdhcmUnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTMtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICA9PiAnSGFyZHdhcmUgVmVuZG9yJywKICAgICAgICAgICAgTW9kZWwgICAgICAgID0+ICdIYXJkd2FyZSBNb2RlbCcsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICA9PiAnVGVzaXRuZyBIYW5yZHdhcmUnLAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0NhbWVyYScsCiAgICAgICAgICAgIE93bmVyICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgPT4gJzEyM2FtYzQ1NicsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdMb2NhdGlvbicsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktNC0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0J1aWxkaW5nJywKICAgICAgICAgICAgUGhvbmUxICAgPT4gJzEyMycsCiAgICAgICAgICAgIFBob25lMiAgID0+ICc0NTYnLAogICAgICAgICAgICBGYXggICAgICA9PiAnNzg5JywKICAgICAgICAgICAgJ0UtTWFpbCcgPT4gJ3NvZW1vbmVAZXhhbXBsZS5jb20nLAogICAgICAgICAgICBBZGRyZXNzICA9PiAnU29tZSBhZGRyZXNzJywKICAgICAgICAgICAgTm90ZSAgICAgPT4gJ1RoaXMgaXMgYSB0ZXN0IGxvY2F0aW9uJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ05ldHdvcmsnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTUtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgID0+ICdOZXR3b3JrIENJIGZvciB0ZXN0aW5nJywKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgPT4gJ0xBTicsCiAgICAgICAgICAgIE5ldHdvcmtBZGRyZXNzID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOZXR3b3JrQWRkcmVzcyA9PiAnMTkyLjEuMS4xJywKICAgICAgICAgICAgICAgICAgICBTdWJuZXRNYXNrICAgICA9PiAnMjU1LjI1NS4yNTUuMCcsCiAgICAgICAgICAgICAgICAgICAgR2F0ZXdheSAgICAgICAgPT4gJzE5Mi4xLjEuMjU0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmV0d29ya0FkZHJlc3MgPT4gJzE5Mi4xLjUwLjEnLAogICAgICAgICAgICAgICAgICAgIFN1Ym5ldE1hc2sgICAgID0+ICcyNTUuMjU1LjI1NS4wJywKICAgICAgICAgICAgICAgICAgICBHYXRld2F5ICAgICAgICA9PiAnMTkyLjEuNTAuMjU0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIE5vdGUgPT4gJ1RoaXMgaXMgYSB0ZXN0IENJJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ1NvZnR3YXJlJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS02LScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgPT4gJ1NvbWUgc29mdHdhcmUgdmVuZG9yJywKICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+ICcxLjEuMScsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICA9PiAnU29tZSBzb2Z0d2FyZSBkZXNjcmlwdGlvbicsCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnQWRtaW4gVG9vbCcsCiAgICAgICAgICAgIE93bmVyICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgPT4gJzEyM0FCQzQ1NicsCiAgICAgICAgICAgIExpY2VuY2VUeXBlICA9PiAnT3BlbiBTb3VyY2UnLAogICAgICAgICAgICBMaWNlbmNlS2V5ICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICcxMjM0JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnNDU2NycsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzMnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTI1JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIE1lZGlhID0+ICdEb3dubG9hZCcsCiAgICAgICAgICAgIE5vdGUgID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCik7CgpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJENsYXNzTGlzdCAgICAgICAgICAgID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCik7Cm15ICVSZXZlcnNlQ2xhc3NMaXN0ID0gcmV2ZXJzZSAleyRDbGFzc0xpc3R9OwpteSAkSW5jaVN0YXRlTGlzdCAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVSZXZlcnNlSW5jaVN0YXRlTGlzdCA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07Cm15ICREZXBsU3RhdGVMaXN0ICAgICAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJVJldmVyc2VEZXBsU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKZm9yIG15ICRDb25maWdJdGVtIChAQ29uZmlnSXRlbXMpIHsKCiAgICAjIG1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24KICAgIG15ICRDbG9uZWRDb25maWdJdGVtID0gU3RvcmFibGU6OmRjbG9uZSgkQ29uZmlnSXRlbSk7CgogICAgIyBjcmVhdGUgbmV3IGNvbmZpZyBpdGVtCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUmV2ZXJzZUNsYXNzTGlzdHsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICAgICBVc2VySUQgID0+ICRVc2VySUQsCiAgICApOwoKICAgICMgc2FuaXR5IGNoZWNrcwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAiQWRkZWQgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUlEIiwKICAgICk7CgogICAgbXkgJERlZmluaXRpb25EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUmV2ZXJzZUNsYXNzTGlzdHsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICk7CgogICAgbXkgJExvY2FsT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGUtPm5ldygKICAgICAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICAgICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICk7CgogICAgbXkgJFJlcGxhY2VkWE1MRGF0YSA9ICRMb2NhbE9iamVjdC0+UmVwbGFjZVhNTERhdGEoCiAgICAgICAgWE1MRGF0YSAgICA9PiAkQ29uZmlnSXRlbS0+e0NJWE1MRGF0YX0sCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbkRhdGEtPntEZWZpbml0aW9uUmVmfSwKICAgICk7CgogICAgbXkgJFhNTERhdGEgPSAkTG9jYWxPYmplY3QtPkZvcm1hdFhNTERhdGEoCiAgICAgICAgWE1MRGF0YSA9PiAkUmVwbGFjZWRYTUxEYXRhLAogICAgKTsKCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtLT57TmFtZX0sCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uRGF0YS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICRSZXZlcnNlRGVwbFN0YXRlTGlzdHsgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGV9IH0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRSZXZlcnNlSW5jaVN0YXRlTGlzdHsgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGV9IH0sCiAgICAgICAgWE1MRGF0YSAgICAgID0+ICRYTUxEYXRhLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICAjIHNhbml0eSBjaGVja3MKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgIkFkZGVkIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1JRCIsCiAgICApOwoKICAgIG15ICRWZXJzaW9uSW5mbyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3REZWVwbHkoCiAgICAgICAgJFZlcnNpb25JbmZvLAogICAgICAgIHt9LAogICAgICAgICJBZGRlZCBDb25maWdJdGVtICRDb25maWdJdGVtSUQgLSBWZXJzaW9uIGlzIG5vdCBhbiBlbXB0eSBoYXNoIiwKICAgICk7CgogICAgIyByZW1lbWJlciB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CiAgICAgICAgJEFkZGVkQ29uZmlnSXRlbXN7JENvbmZpZ0l0ZW1JRH0gPSAkQ2xvbmVkQ29uZmlnSXRlbTsKICAgICAgICBwdXNoIEBBZGRlZENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICB9Cn0KCiMgYWN0dWFsIHRlc3RzIGZvciBDb25maWdJdGVtR2V0IG9wZXJhdGlvbgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0VtcHR5IFJlcXVlc3QnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0dldCAgICAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7fSwKICAgICAgICBFeHBlY3RlZERhdGEgICA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDb25maWdJdGVtSUQgZm9ybWF0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gewogICAgICAgICAgICAgICAgVGVzdDEgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5Xcm9uZ1N0cnVjdHVyZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1HZXQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQ29uZmlnSXRlbUlEJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5BY2Nlc3NEZW5pZWQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIENvbmZpZ0l0ZW1JRCBBcnJheScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFsgJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCwgXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5BY2Nlc3NEZW5pZWQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDEnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0dldCAgICAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQWRkZWRDb25maWdJdGVtSURzWzBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHt9LAogICAgICAgIE9wZXJhdGlvbiAgICA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCAyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1sxXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7fSwKICAgICAgICBPcGVyYXRpb24gICAgPT4gJ0NvbmZpZ0l0ZW1HZXQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgMycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbMl0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4ge30sCiAgICAgICAgT3BlcmF0aW9uICAgID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0dldCAgICAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQWRkZWRDb25maWdJdGVtSURzWzNdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHt9LAogICAgICAgIE9wZXJhdGlvbiAgICA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCA1JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1s0XSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7fSwKICAgICAgICBPcGVyYXRpb24gICAgPT4gJ0NvbmZpZ0l0ZW1HZXQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbNV0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4ge30sCiAgICAgICAgT3BlcmF0aW9uICAgID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDEtNicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFxAQWRkZWRDb25maWdJdGVtSURzLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHt9LAogICAgICAgIE9wZXJhdGlvbiAgICA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAopOwoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNyZWF0ZSBsb2NhbCBvYmplY3QKICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgIERlYnVnZ2VyT2JqZWN0ID0+ICREZWJ1Z2dlck9iamVjdCwKICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjokVGVzdC0+e09wZXJhdGlvbn0iLAogICAgICAgIHJlZiAkTG9jYWxPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJExvY2FsUmVzdWx0ID0gJExvY2FsT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJExvY2FsUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKICAgIG15ICRSZXF1ZXN0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwogICAgJFNlbGYtPklzKAogICAgICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgcmVxdWVzdGVyIG9iamVjdCIsCiAgICApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRSZXF1ZXN0ZXJSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAkVGVzdC0+e1N1Y2Nlc3NSZXF1ZXN0fSwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciBzdWNjZXNzZnVsIHJlc3VsdCIsCiAgICApOwoKICAgIGlmICggJFRlc3QtPntTdWNjZXNzR2V0fSApIHsKCiAgICAgICAgIyBsb2NhbCByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbSBpcyBub3QgdW5kZWZpbmVkLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIHJlZiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAnQVJSQVknLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtIHJlZmVyZW5jZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfSApLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtIHJlZmVyZW5jZSBpcyBub3QgZW1wdHkuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0sCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICAjIHJlcXVlc3RlciByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtIGlzIG5vdCB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICBteSAkRXhwZWN0ZWRSZXN1bHRUeXBlID0gcmVmICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbUlEfSB8fCAnSEFTSCc7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgcmVmICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAkRXhwZWN0ZWRSZXN1bHRUeXBlLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbSByZWZlcmVuY2UuIiwKICAgICAgICApOwoKICAgICAgICBpZiAoICRFeHBlY3RlZFJlc3VsdFR5cGUgZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBJc0FycmF5UmVmV2l0aERhdGEoICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19ICksCiAgICAgICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbSByZWZlcmVuY2UgaXMgbm90IGVtcHR5LiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIElzSGFzaFJlZldpdGhEYXRhKCAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfSApLAogICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IENvbmZpZ0l0ZW0gcmVmZXJlbmNlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICBpZiAoICRFeHBlY3RlZFJlc3VsdFR5cGUgZXEgJ0FSUkFZJyApIHsKCiAgICAgICAgICAgICMgbG9vcCBhbGwgQ29uZmlnSXRlbUlEcyBpbiB0aGUgcmVzcG9uc2UKICAgICAgICAgICAgZm9yIG15ICRDb3VudGVyICggMCAuLiBzY2FsYXIgQHsgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtSUR9IH0gLSAxICkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgc3BlY2lmaWMgYXR0cmlidXRlcwogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KENJWE1MRGF0YSBDbGFzcyBEZXBsU3RhdGUgSW5jaVN0YXRlIE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LT5bJENvdW50ZXJdLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICRBZGRlZENvbmZpZ0l0ZW1zeyAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW1JRH0tPlskQ291bnRlcl0gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IG1hdGNoIENvbmZpZ0l0ZW0tPlskQ291bnRlcl0gJEF0dHJpYnV0ZSBjcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICIgZGF0YS4iCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgY2hlY2sgc3BlY2lmaWMgYXR0cmlidXRlcyBmb3IgdGhlIG9ubHkgMSByZXN1bHQKICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KENJWE1MRGF0YSBDbGFzcyBEZXBsU3RhdGUgSW5jaVN0YXRlIE5hbWUpKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfS0+WzBdLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgJEFkZGVkQ29uZmlnSXRlbXN7ICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbUlEfSB9LT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2ggQ29uZmlnSXRlbSAkQXR0cmlidXRlIGNyZWF0ZSBkYXRhLiIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgbWFrZSBSZXF1ZXN0ZXIgcmVzdWx0IGFuIGFycmF5IGZvciBlYXN5IGNvbXBhcmUKICAgICAgICAgICAgbXkgJFJlcXVlc3RlckNvbmZpZ0l0ZW0gPSBkZWxldGUgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbX07CiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19ID0gWyRSZXF1ZXN0ZXJDb25maWdJdGVtXTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIGNvbmZpZyBpdGVtIHJlc3VsdCBtYXRjaGVkIHdpdGggcmVtb3RlIHJlc3VsdC4iLAogICAgICAgICk7CiAgICB9CgogICAgIyB0ZXN0cyBzdXBwb3NlZCB0byBmYWlsCiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBmYWxzZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntOdW1iZXJ9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBOdW1iZXIgd2l0aCBmYWxzZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0sCiAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWREYXRhfS0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JDb2RlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBsb2NhbCBjYWxsIHJlc3VsdC4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIHdpdGggdHJ1ZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICcnLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvck1lc3NhZ2UgaXMgbm90IGVtcHR5LiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfQogICAgICAgICAgICAgICAgLiAnOiAnCiAgICAgICAgICAgICAgICAuICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIChvdXRzaWRlIERhdGEgaGFzaCkgbWF0Y2hlZCB3aXRoIGNvbmNhdGVuYXRpb24iCiAgICAgICAgICAgICAgICAuICIgb2YgRXJyb3JDb2RlIGFuZCBFcnJvck1lc3NhZ2Ugd2l0aGluIERhdGEgaGFzaC4iLAogICAgICAgICk7CgogICAgICAgICMgcmVtb3ZlIEVycm9yTWVzc2FnZSBwYXJhbWV0ZXIgZnJvbSBkaXJlY3QgY2FsbAogICAgICAgICMgcmVzdWx0IHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBTT0FQIGNhbGwgcmVzdWx0CiAgICAgICAgaWYgKCAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9ICkgewogICAgICAgICAgICBkZWxldGUgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfTsKICAgICAgICB9CgogICAgICAgICMgc2FuaXR5IGNoZWNrCiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvTWVzc2FnZSAob3V0c2lzZSBEYXRhIGhhc2gpIGdvdCByZW1vdmVkIHRvIGNvbXBhcmUiCiAgICAgICAgICAgICAgICAuICIgbG9jYWwgYW5kIHJlbW90ZSB0ZXN0cy4iLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBtYXRjaGVkIHdpdGggcmVtb3RlIHJlc3VsdC4iLAogICAgICAgICk7CiAgICB9Cn0gICAgI2VuZCBsb29wCgojIGNsZWFuIHVwCgojIGNsZWFuIHVwIHdlYnNlcnZpY2UKbXkgJFdlYnNlcnZpY2VEZWxldGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZURlbGV0ZSgKICAgIElEICAgICA9PiAkV2Vic2VydmljZUlELAogICAgVXNlcklEID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiLAopOwoKZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IGtleXMgJUFkZGVkQ29uZmlnSXRlbXMgKSB7CgogICAgIyBkZWxldGUgdGhlIENvbmZpZ0l0ZW1zCiAgICBteSAkU3VjY2Vzc0RlbGV0ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICAjIHNhbml0eSBjaGVjawogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFN1Y2Nlc3NEZWxldGUsCiAgICAgICAgIlN1Y2Nlc3NEZWxldGUoKSBzdWNjZXNzZnVsIGZvciBDb25maWdJdGVtIElEICRDb25maWdJdGVtSUQiLAogICAgKTsKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemSearch.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgU3RvcmFibGU7CgojIENQQU4gbW9kdWxlcwp1c2UgVGVzdDI6OlYwOwoKc2tpcF9hbGwoJ1NraXBwaW5nIENNREIgR2VuZXJpYyBJbnRlcmZhY2UgdGVzdHMgdGVtcG9yYXJpbHkuJyk7CmRvbmVfdGVzdGluZzsKZXhpdDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlcjsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVNlYXJjaDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRTZWxmOwoKIyBzZXQgVXNlcklEIHRvIHJvb3QKIyBUT0RPOiB3aHkgaXMgJFNlbGYtPntVc2VySUR9IHVzZWQgYXMgd2VsbD8KbXkgJFRlc3RVc2VySUQgPSAxOwoKIyBoZWxwZXIgb2JqZWN0CiMgc2tpcCBTU0wgY2VydGljaWF0ZSB2ZXJpZmljYXRpb24KJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgU2tpcFNTTFZlcmlmeSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGNoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQKJFNlbGYtPklzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBvYmplY3QKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CgojIGNyZWF0ZSB3ZWJzZXJ2aWNlIG9iamVjdApteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScsCiAgICByZWYgJFdlYnNlcnZpY2VPYmplY3QsCiAgICAiQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0IiwKKTsKCiMgc2V0IHdlYnNlcnZpY2UgbmFtZQpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlSUQsCiAgICAiQWRkZWQgV2Vic2VydmljZSIsCik7CgojIGdldCByZW1vdGUgaG9zdCB3aXRoIHNvbWUgcHJlY2F1dGlvbnMgZm9yIGNlcnRhaW4gdW5pdCB0ZXN0IHN5c3RlbXMKbXkgJEhvc3Q7Cm15ICRGUUROID0gJENvbmZpZ09iamVjdC0+R2V0KCdGUUROJyk7CgojIHRyeSB0byByZXNvbHZlIGZxZG4gaG9zdAppZiAoICRGUUROIG5lICd5b3VyaG9zdC5leGFtcGxlLmNvbScgJiYgZ2V0aG9zdGJ5bmFtZSgkRlFETikgKSB7CiAgICAkSG9zdCA9ICRGUUROOwp9CgojIHRyeSB0byByZXNvbHZlIGxvY2FsaG9zdCBpbnN0ZWFkCmlmICggISRIb3N0ICYmIGdldGhvc3RieW5hbWUoJ2xvY2FsaG9zdCcpICkgewogICAgJEhvc3QgPSAnbG9jYWxob3N0JzsKfQoKIyB1c2UgaGFyZGNvZGVkIGxvY2FsaG9zdCBpcCBhZGRyZXNzCmlmICggISRIb3N0ICkgewogICAgJEhvc3QgPSAnMTI3LjAuMC4xJzsKfQoKIyBwcmVwYXJlIHdlYnNlcnZpY2UgY29uZmlnCm15ICRSZW1vdGVTeXN0ZW0gPQogICAgJENvbmZpZ09iamVjdC0+R2V0KCdIdHRwVHlwZScpCiAgICAuICc6Ly8nCiAgICAuICRIb3N0CiAgICAuICcvJwogICAgLiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJykKICAgIC4gJy9ucGgtZ2VuZXJpY2ludGVyZmFjZS5wbC9XZWJzZXJ2aWNlSUQvJwogICAgLiAkV2Vic2VydmljZUlEOwoKbXkgJFdlYnNlcnZpY2VDb25maWcgPSB7CgogICAgIyAgICBOYW1lID0+ICcnLAogICAgRGVzY3JpcHRpb24gPT4KICAgICAgICAnVGVzdCBmb3IgQ29uZmlnSXRlbSBDb25uZWN0b3IgdXNpbmcgU09BUCB0cmFuc3BvcnQgYmFja2VuZC4nLAogICAgRGVidWdnZXIgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBQcm92aWRlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiAxMF8wMDBfMDAwLAogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3RvYm8ub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1TZWFyY2ggPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbTo6Q29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlc3Npb25DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnU2Vzc2lvbjo6U2Vzc2lvbkNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBSZXF1ZXN0ZXIgPT4gewogICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgIFR5cGUgICA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdG9iby5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuY29kaW5nICA9PiAnVVRGLTgnLAogICAgICAgICAgICAgICAgRW5kcG9pbnQgID0+ICRSZW1vdGVTeXN0ZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBJbnZva2VyID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbVNlYXJjaCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKfTsKCiMgdXBkYXRlIHdlYnNlcnZpY2Ugd2l0aCByZWFsIGNvbmZpZwpteSAkV2Vic2VydmljZVVwZGF0ZSA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgTmFtZSAgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgID0+ICRXZWJzZXJ2aWNlQ29uZmlnLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZVVwZGF0ZSwKICAgICJVcGRhdGVkIFdlYnNlcnZpY2UgJFdlYnNlcnZpY2VJRCAtICRXZWJzZXJ2aWNlTmFtZSIsCik7CgojIGRlYnVnZ2VyIG9iamVjdApteSAkRGVidWdnZXJPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyLT5uZXcoCiAgICBEZWJ1Z2dlckNvbmZpZyA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFdlYnNlcnZpY2VJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBDb21tdW5pY2F0aW9uVHlwZSA9PiAnUHJvdmlkZXInLAopOwokU2VsZi0+SXMoCiAgICByZWYgJERlYnVnZ2VyT2JqZWN0LAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXInLAogICAgJ0RlYnVnZ2VyT2JqZWN0IGluc3RhbmNpYXRlIGNvcnJlY3RseScsCik7CgojIEdldCBTZXNzaW9uSUQKIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdApteSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICByZWYgJFJlcXVlc3RlclNlc3Npb25PYmplY3QsCiAgICAiU2Vzc2lvbklEIC0gQ3JlYXRlIHJlcXVlc3RlciBvYmplY3QiLAopOwoKIyBjcmVhdGUgYSBuZXcgdXNlciBmb3IgY3VycmVudCB0ZXN0Cm15ICRVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCik7Cm15ICRQYXNzd29yZCA9ICRVc2VyTG9naW47CgojIHN0YXJ0IHJlcXVlc3RlciB3aXRoIG91ciB3ZWJzZXJ2aWNlCm15ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0ID0gJFJlcXVlc3RlclNlc3Npb25PYmplY3QtPlJ1bigKICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgSW52b2tlciAgICAgID0+ICdTZXNzaW9uQ3JlYXRlJywKICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgIH0sCik7CgpteSAkTmV3U2Vzc2lvbklEID0gJFJlcXVlc3RlclNlc3Npb25SZXN1bHQtPntEYXRhfS0+e1Nlc3Npb25JRH07CgojQ29uZmlnSXRlbXRzIGNvbnRhaW5lciAodXNlZnVsbCBmb3IgbG9va3VwIGNvbXBhcmUpCm15IEBBZGRlZENvbmZpZ0l0ZW1JRHM7CgojIENvbmZpZ0l0ZW0gc2V0dGluZ3MKbXkgQENvbmZpZ0l0ZW1zID0gKAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTEtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1JlcGFpcicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdXYXJuaW5nJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgICAgPT4gJ0xlbm92bycsCiAgICAgICAgICAgIE1vZGVsICAgICAgICAgICA9PiAnVGhpbmtwYWQnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgPT4gJ1RoaW5rcGFkIFgzMDAnLAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJ0Rlc2t0b3AnLAogICAgICAgICAgICBPd25lciAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyICAgID0+ICdhYmMxMjM0NWFiYycsCiAgICAgICAgICAgIE9wZXJhdGluZ1N5c3RlbSA9PiAnQ2VudE9TIDYuMCcsCiAgICAgICAgICAgIENQVSAgICAgICAgICAgICA9PiAnSW50ZWwgQ29yZSBpMycgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIFJhbSAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgMjAwMCwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSGFyZERpc2sgPT4gewogICAgICAgICAgICAgICAgSGFyZERpc2sgPT4gJy9kZXYnLAogICAgICAgICAgICAgICAgQ2FwYWNpdHkgPT4gNTAwMDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEZRRE4gPT4gJ2hvdHMuZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOSUMgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgSVBBZGRyZXNzICA9PiAnMTkyLjE2OC4zMC4xJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcyMDAuMzQuNTYuNzgnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgR3JhcGhpY0FkYXB0ZXIgPT4gJ0FUSSBSYWRlb24gMzAwJywKICAgICAgICAgICAgSW5zdGFsbERhdGUgICAgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICBOb3RlICAgICAgICAgICA9PiAnVGhpcyBpcyBhIERlbW8gQ0knLAogICAgICAgIH0sCiAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dC50eHQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMScsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dDIudHh0JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS0yLScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdSZXBhaXInLAogICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICAgICA9PiAnQXBwbGUnLAogICAgICAgICAgICBNb2RlbCAgICAgICAgICAgPT4gJ2lNYWMnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgPT4gJ0FwcGxlIENvbXB1dGVyJywKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICdEZXNrdG9wJywKICAgICAgICAgICAgT3duZXIgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgIFNlcmlhbE51bWJlciAgICA9PiAnYWJjMTIzNDVhYmMnLAogICAgICAgICAgICBPcGVyYXRpbmdTeXN0ZW0gPT4gJ09TWCAxMC44LjMnLAogICAgICAgICAgICBDUFUgICAgICAgICAgICAgPT4gJ0ludGVsIENvcmUgaTMnIC4gJFJhbmRvbUlELAogICAgICAgICAgICBSYW0gICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgIDIwMDAsCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEhhcmREaXNrID0+IHsKICAgICAgICAgICAgICAgIEhhcmREaXNrID0+ICcvZGV2JywKICAgICAgICAgICAgICAgIENhcGFjaXR5ID0+IDgwMDAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBGUUROID0+ICdob3RzLmV4YW1wbGUuY29tJywKICAgICAgICAgICAgTklDICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRW4wJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzE5Mi4xNjguMzAuMScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0VuMScsCiAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcyMDAuMzQuNTYuNzgnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgR3JhcGhpY0FkYXB0ZXIgPT4gJ252aWRpYScsCiAgICAgICAgICAgIEluc3RhbGxEYXRlICAgID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgTm90ZSAgICAgICAgICAgPT4gJ1RoaXMgaXMgYSBEZW1vIENJJywKICAgICAgICB9LAogICAgICAgIEF0dGFjaG1lbnQgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ015IFRleHQudHh0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTEnLAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ015IFRleHQyLnR4dCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktMy0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgVmVuZG9yICAgICAgID0+ICdTb21lIHNvZnR3YXJlIHZlbmRvcicsCiAgICAgICAgICAgIFZlcnNpb24gICAgICA9PiAnMS4xLjEnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJ1NvbWUgc29mdHdhcmUgZGVzY3JpcHRpb24nLAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0FkbWluIFRvb2wnLAogICAgICAgICAgICBPd25lciAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyID0+ICcxMjNBQkM0NTYnLAogICAgICAgICAgICBMaWNlbmNlVHlwZSAgPT4gJ09wZW4gU291cmNlJywKICAgICAgICAgICAgTGljZW5jZUtleSAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnMTIzNCcsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzEnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzQ1NjcnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0yNScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBNZWRpYSA9PiAnRG93bmxvYWQnLAogICAgICAgICAgICBOb3RlICA9PiAnVGhpcyBpcyBhIHRlc3QgQ0knLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnU29mdHdhcmUnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTQtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICA9PiAnU29tZSBzb2Z0d2FyZSB2ZW5kb3InLAogICAgICAgICAgICBWZXJzaW9uICAgICAgPT4gJzEuMS4xJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gID0+ICdTb21lIHNvZnR3YXJlIGRlc2NyaXB0aW9uJywKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdBZG1pbiBUb29sJywKICAgICAgICAgICAgT3duZXIgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgIFNlcmlhbE51bWJlciA9PiAnMTIzQUJDNDU2JywKICAgICAgICAgICAgTGljZW5jZVR5cGUgID0+ICdPcGVuIFNvdXJjZScsCiAgICAgICAgICAgIExpY2VuY2VLZXkgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzEyMzQnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICc0JywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICc0NTY3JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMycsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMjUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgTWVkaWEgPT4gJ0NELVJPTScsCiAgICAgICAgICAgIE5vdGUgID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCik7CgojIGNyZWF0ZSBsb2NhbCBvYmplY3QKbXkgJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZS0+bmV3KAogICAgRGVidWdnZXJPYmplY3QgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKKTsKCmZvciBteSAkQ29uZmlnSXRlbSAoQENvbmZpZ0l0ZW1zKSB7CgogICAgIyBtYWtlIGEgZGVlcCBjb3B5IHRvIGF2b2lkIGNoYW5naW5nIHRoZSBkZWZpbml0aW9uCiAgICBteSAkQ2xvbmVkQ29uZmlnSXRlbSA9IFN0b3JhYmxlOjpkY2xvbmUoJENvbmZpZ0l0ZW0pOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgICMgYWRkIG5ldyBDb25maWdJdGVtcwogICAgbXkgJENyZWF0ZVJlc3VsdCA9ICRDb25maWdJdGVtQ3JlYXRlT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gID0+ICRVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkICAgPT4gJFBhc3N3b3JkLAogICAgICAgICAgICBDb25maWdJdGVtID0+ICRDbG9uZWRDb25maWdJdGVtLAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ3JlYXRlUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9IHx8ICcnOwoKICAgICMgc2FuaXR5IGNoZWNrcwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAiQWRkZWQgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUlEIC0gJENyZWF0ZVJlc3VsdC0+e0RhdGF9LT57TnVtYmVyfSIsCiAgICApOwoKICAgIG15ICRWZXJzaW9uSW5mbyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3REZWVwbHkoCiAgICAgICAgJFZlcnNpb25JbmZvLAogICAgICAgIHt9LAogICAgICAgICJBZGRlZCBDb25maWdJdGVtICRDb25maWdJdGVtSUQgLSBWZXJzaW9uIGlzIG5vdCBhbiBlbXB0eSBoYXNoIiwKICAgICk7CgogICAgIyByZW1lbWJlciB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CiAgICAgICAgcHVzaCBAQWRkZWRDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgfQp9CgojIGFjdHVhbCB0ZXN0cyBmb3IgQ29uZmlnSXRlbVNlYXJjaCBvcGVyYXRpb24KbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdFbXB0eSBSZXF1ZXN0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4ge30sCiAgICAgICAgRXhwZWN0ZWREYXRhICAgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBDb25maWdJdGVtJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBUZXN0ID0+IDEKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDb25maWdJdGVtIGZvcm1hdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiAxCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBDb25maWdJdGVtLT5DbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5DbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnTm9uRXhpc3RpbmcnIC4gJFJhbmRvbUlELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q0lYTUxEYXRhJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5JbmNpU3RhdGVzJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZXMgPT4gJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5JbmNpU3RhdGVzIEhBU0gnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guV3JvbmdTdHJ1Y3R1cmUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+SW5jaVN0YXRlcyBBUlJBWScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzID0+IFsgJ0luY2lkZW50JywgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEIF0sCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgID0+IHsKICAgICAgICAgICAgICAgICAgICAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQgPT4gMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0tPkRlcGxTdGF0ZXMnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyA9PiBbICdJbmNpZGVudCcsICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyA9PiAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgID0+IHsKICAgICAgICAgICAgICAgICAgICAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5EZXBsU3RhdGVzIEhBU0gnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyA9PiBbICdJbmNpZGVudCcsICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guV3JvbmdTdHJ1Y3R1cmUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+RGVwbFN0YXRlcyBBUlJBWScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgPT4gWyAnUHJvZHVjdGlvbicsICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCBdLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5PcmRlckJ5IEhBU0gnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzID0+IFsgJ1Byb2R1Y3Rpb24nLCAnUmV0aXJlZCcgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLldyb25nU3RydWN0dXJlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0tPk9yZGVyQnlEaXJlY3Rpb24gSEFTSCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guV3JvbmdTdHJ1Y3R1cmUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q3JlYXRlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q3JlYXRlVGltZU9sZGVyRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q2hhbmdlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+Q2hhbmdlVGltZU9sZGVyRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+TGltaXQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZXMgICAgICAgICAgICAgICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgICAgICAgICAgICAgID0+IFsgJ1Byb2R1Y3Rpb24nLCAnUmV0aXJlZCcgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICAgICAgICAgID0+IFsnTnVtYmVyJ10sCiAgICAgICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uICAgICAgICAgICAgICA9PiBbJ0Rvd24nXSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbmxpbWl0ZWQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ0lYTUxEYXRhIEdlbmVyYWwgQ2F0YWxvZycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+IDEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDSVhNTERhdGEgRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgSW5zdGFsbERhdGUgPT4gJzIwMTItMDItMzAnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENJWE1MRGF0YSBUZXh0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdQcm9kdWN0aW9uJywgJ1JldGlyZWQnIF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICAgICAgICAgICAgPT4gWydEb3duJ10sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnYScgeCA1MSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDSVhNTERhdGEgTnVtYmVyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdQcm9kdWN0aW9uJywgJ1JldGlyZWQnIF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICAgICAgICAgICAgPT4gWydEb3duJ10sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciAgICAgPT4gJ2EnIHggNTAsCiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ID0+ICdOb3RFeGlzdGluZycgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb21wdXRlciBObyBMaW1pdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJywgJ1JlcGFpcicgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydVcCddLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ1BVID0+ICdJbnRlbCBDb3JlIGkzJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzID0+IFsgJEFkZGVkQ29uZmlnSXRlbUlEc1swXSwgJEFkZGVkQ29uZmlnSXRlbUlEc1sxXSBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb21wdXRlciBMaW1pdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJywgJ1JlcGFpcicgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydVcCddLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ1BVID0+ICdJbnRlbCBDb3JlIGkzJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzID0+IFsgJEFkZGVkQ29uZmlnSXRlbUlEc1swXSBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBTb2Z0d2FyZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydVcCddLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSA9PiBbICczJywgJzQnIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzJdLCAkQWRkZWRDb25maWdJdGVtSURzWzNdIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAopOwoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNyZWF0ZSBsb2NhbCBvYmplY3QKICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgIERlYnVnZ2VyT2JqZWN0ID0+ICREZWJ1Z2dlck9iamVjdCwKICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjokVGVzdC0+e09wZXJhdGlvbn0iLAogICAgICAgIHJlZiAkTG9jYWxPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICk7CgogICAgIyBtYWtlIGEgZGVlcCBjb3B5IHRvIGF2b2lkIGNoYW5naW5nIHRoZSBkZWZpbml0aW9uCiAgICBteSAkQ2xvbmVkUmVxdWVzdERhdGEgPSBTdG9yYWJsZTo6ZGNsb25lKCAkVGVzdC0+e1JlcXVlc3REYXRhfSApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRMb2NhbFJlc3VsdCA9ICRMb2NhbE9iamVjdC0+UnVuKAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgICAgIEludm9rZXIgICAgICA9PiAkVGVzdC0+e09wZXJhdGlvbn0sCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkICA9PiAkUGFzc3dvcmQsCiAgICAgICAgICAgICV7ICRUZXN0LT57UmVxdWVzdERhdGF9IH0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyByZXN0b3JlIGNsb25lZCBkYXRhCiAgICAkVGVzdC0+e1JlcXVlc3REYXRhfSA9ICRDbG9uZWRSZXF1ZXN0RGF0YTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJExvY2FsUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKICAgIG15ICRSZXF1ZXN0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwogICAgJFNlbGYtPklzKAogICAgICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgcmVxdWVzdGVyIG9iamVjdCIsCiAgICApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRSZXF1ZXN0ZXJSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAkVGVzdC0+e1N1Y2Nlc3NSZXF1ZXN0fSwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciBzdWNjZXNzZnVsIHJlc3VsdCIsCiAgICApOwoKICAgIGlmICggJFRlc3QtPntTdWNjZXNzU2VhcmNofSApIHsKCiAgICAgICAgIyBsb2NhbCByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9LAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbUlEcyBpcyBub3QgdW5kZWZpbmVkLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIHJlZiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9LAogICAgICAgICAgICAnQVJSQVknLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtSURzIHJlZmVyZW5jZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSURzfSApLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtIGlzIGEgbm9uIGVtcHRyeSBhcnJheSB3aXRoIHRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0sCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICAjIHJlcXVlc3RlciByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSURzfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSURzIGlzIG5vdCB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICBpZiAoIHJlZiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSURzfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEc30gKSwKICAgICAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSURzIGlzIGEgbm9uIGVtcHRyeSBhcnJheSB3aXRoIHRydWUuIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgSXNOdW1iZXIoICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9ICksCiAgICAgICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbUlEcyBpcyBudW1iZXIgd2l0aCB0cnVlLiIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG1ha2UgUmVxdWVzdGVyIHJlc3VsdCBhbiBhcnJheSBmb3IgZWFzeSBjb21wYXJlCiAgICAgICAgICAgIG15ICRSZXF1ZXN0ZXJDb25maWdJdGVtSURzID0gZGVsZXRlICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9OwogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSURzfSA9IFskUmVxdWVzdGVyQ29uZmlnSXRlbUlEc107CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgJFRlc3QtPntFeHBlY3RlZERhdGF9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBtYXRjaCBleHBlY3RlZCBkYXRhLiIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQsCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgY29uZmlnIGl0ZW0gcmVzdWx0IG1hdGNoZWQgd2l0aCByZW1vdGUgcmVzdWx0LiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHRlc3RzIHN1cHBvc2VkIHRvIGZhaWwKICAgIGVsc2UgewogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbUlEIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57TnVtYmVyfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgTnVtYmVyIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvckNvZGV9LAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkRGF0YX0tPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yQ29kZSBtYXRjaGVkIHdpdGggZXhwZWN0ZWQgbG9jYWwgY2FsbCByZXN1bHQuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSB3aXRoIHRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5Jc05vdCgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAnJywKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0KICAgICAgICAgICAgICAgIC4gJzogJwogICAgICAgICAgICAgICAgLiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSAob3V0c2lkZSBEYXRhIGhhc2gpIG1hdGNoZWQgd2l0aCBjb25jYXRlbmF0aW9uIgogICAgICAgICAgICAgICAgLiAiIG9mIEVycm9yQ29kZSBhbmQgRXJyb3JNZXNzYWdlIHdpdGhpbiBEYXRhIGhhc2guIiwKICAgICAgICApOwoKICAgICAgICAjIHJlbW92ZSBFcnJvck1lc3NhZ2UgcGFyYW1ldGVyIGZyb20gZGlyZWN0IGNhbGwKICAgICAgICAjIHJlc3VsdCB0byBiZSBjb25zaXN0ZW50IHdpdGggU09BUCBjYWxsIHJlc3VsdAogICAgICAgIGlmICggJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSApIHsKICAgICAgICAgICAgZGVsZXRlICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX07CiAgICAgICAgfQoKICAgICAgICAjIHNhbml0eSBjaGVjawogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb01lc3NhZ2UgKG91dHNpc2UgRGF0YSBoYXNoKSBnb3QgcmVtb3ZlZCB0byBjb21wYXJlIgogICAgICAgICAgICAgICAgLiAiIGxvY2FsIGFuZCByZW1vdGUgdGVzdHMuIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQp9ICAgICNlbmQgbG9vcAoKIyBjbGVhbiB1cAoKIyBjbGVhbiB1cCB3ZWJzZXJ2aWNlCm15ICRXZWJzZXJ2aWNlRGVsZXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VEZWxldGUoCiAgICBJRCAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiLAopOwoKZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IEBBZGRlZENvbmZpZ0l0ZW1JRHMgKSB7CgogICAgIyBkZWxldGUgdGhlIENvbmZpZ0l0ZW1zCiAgICBteSAkU3VjY2Vzc0RlbGV0ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgc2FuaXR5IGNoZWNrCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkU3VjY2Vzc0RlbGV0ZSwKICAgICAgICAiU3VjY2Vzc0RlbGV0ZSgpIHN1Y2Nlc3NmdWwgZm9yIENvbmZpZ0l0ZW0gSUQgJENvbmZpZ0l0ZW1JRCIsCiAgICApOwp9CgojZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemUpdate.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTUlNRTo6QmFzZTY0IHF3KGVuY29kZV9iYXNlNjQpOwp1c2UgU3RvcmFibGUgICAgIHF3KGRjbG9uZSk7CgojIENQQU4gbW9kdWxlcwp1c2UgVGVzdDI6OlYwOwoKc2tpcF9hbGwoJ1NraXBwaW5nIENNREIgR2VuZXJpYyBJbnRlcmZhY2UgdGVzdHMgdGVtcG9yYXJpbHkuJyk7CmRvbmVfdGVzdGluZzsKZXhpdDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlcjsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKI3VzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRTZWxmOwoKIyBoZWxwZXIgb2JqZWN0CiMgc2tpcCBTU0wgY2VydGljaWF0ZSB2ZXJpZmljYXRpb24KJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgU2tpcFNTTFZlcmlmeSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGNoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQKJFNlbGYtPklzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBvYmplY3QKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CgojIGNyZWF0ZSB3ZWJzZXJ2aWNlIG9iamVjdApteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScsCiAgICByZWYgJFdlYnNlcnZpY2VPYmplY3QsCiAgICAiQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0IiwKKTsKCiMgc2V0IHdlYnNlcnZpY2UgbmFtZQpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VJRCwKICAgICJBZGRlZCBXZWJzZXJ2aWNlIiwKKTsKCiMgZ2V0IHJlbW90ZSBob3N0IHdpdGggc29tZSBwcmVjYXV0aW9ucyBmb3IgY2VydGFpbiB1bml0IHRlc3Qgc3lzdGVtcwpteSAkSG9zdDsKbXkgJEZRRE4gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZRRE4nKTsKCiMgdHJ5IHRvIHJlc29sdmUgZnFkbiBob3N0CmlmICggJEZRRE4gbmUgJ3lvdXJob3N0LmV4YW1wbGUuY29tJyAmJiBnZXRob3N0YnluYW1lKCRGUUROKSApIHsKICAgICRIb3N0ID0gJEZRRE47Cn0KCiMgdHJ5IHRvIHJlc29sdmUgbG9jYWxob3N0IGluc3RlYWQKaWYgKCAhJEhvc3QgJiYgZ2V0aG9zdGJ5bmFtZSgnbG9jYWxob3N0JykgKSB7CiAgICAkSG9zdCA9ICdsb2NhbGhvc3QnOwp9CgojIHVzZSBoYXJkY29kZWQgbG9jYWxob3N0IGlwIGFkZHJlc3MKaWYgKCAhJEhvc3QgKSB7CiAgICAkSG9zdCA9ICcxMjcuMC4wLjEnOwp9CgojIHByZXBhcmUgd2Vic2VydmljZSBjb25maWcKbXkgJFJlbW90ZVN5c3RlbSA9CiAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ0h0dHBUeXBlJykKICAgIC4gJzovLycKICAgIC4gJEhvc3QKICAgIC4gJy8nCiAgICAuICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKQogICAgLiAnL25waC1nZW5lcmljaW50ZXJmYWNlLnBsL1dlYnNlcnZpY2VJRC8nCiAgICAuICRXZWJzZXJ2aWNlSUQ7CgpteSAkV2Vic2VydmljZUNvbmZpZyA9IHsKCiAgICAjICAgIE5hbWUgPT4gJycsCiAgICBEZXNjcmlwdGlvbiA9PgogICAgICAgICdUZXN0IGZvciBDb25maWdJdGVtIENvbm5lY3RvciB1c2luZyBTT0FQIHRyYW5zcG9ydCBiYWNrZW5kLicsCiAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFByb3ZpZGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwXzAwMF8wMDAsCiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdG9iby5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtVXBkYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdTZXNzaW9uOjpTZXNzaW9uQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFJlcXVlc3RlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290b2JvLm9yZy9Tb2FwVGVzdEludGVyZmFjZS8nLAogICAgICAgICAgICAgICAgRW5jb2RpbmcgID0+ICdVVEYtOCcsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEludm9rZXIgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtVXBkYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXNzaW9uQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAp9OwoKIyB1cGRhdGUgd2Vic2VydmljZSB3aXRoIHJlYWwgY29uZmlnCm15ICRXZWJzZXJ2aWNlVXBkYXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VVcGRhdGUoCiAgICBJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBOYW1lICAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbmZpZyAgPT4gJFdlYnNlcnZpY2VDb25maWcsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VVcGRhdGUsCiAgICAiVXBkYXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQgLSAkV2Vic2VydmljZU5hbWUiLAopOwoKIyBkZWJ1Z2dlciBvYmplY3QKbXkgJERlYnVnZ2VyT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlci0+bmV3KAogICAgRGVidWdnZXJDb25maWcgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBXZWJzZXJ2aWNlSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgQ29tbXVuaWNhdGlvblR5cGUgPT4gJ1Byb3ZpZGVyJywKKTsKJFNlbGYtPklzKAogICAgcmVmICREZWJ1Z2dlck9iamVjdCwKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyJywKICAgICdEZWJ1Z2dlck9iamVjdCBpbnN0YW5jaWF0ZSBjb3JyZWN0bHknLAopOwoKIyBHZXQgU2Vzc2lvbklECiMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKbXkgJFJlcXVlc3RlclNlc3Npb25PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwokU2VsZi0+SXMoCiAgICAnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInLAogICAgcmVmICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LAogICAgIlNlc3Npb25JRCAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKKTsKCiMgY3JlYXRlIGEgbmV3IHVzZXIgZm9yIGN1cnJlbnQgdGVzdApteSAkVXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJyBdLAopOwpteSAkUGFzc3dvcmQgPSAkVXNlckxvZ2luOwoKIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQpteSAkUmVxdWVzdGVyU2Vzc2lvblJlc3VsdCA9ICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LT5SdW4oCiAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgIEludm9rZXIgICAgICA9PiAnU2Vzc2lvbkNyZWF0ZScsCiAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgIFVzZXJMb2dpbiA9PiAkVXNlckxvZ2luLAogICAgICAgIFBhc3N3b3JkICA9PiAkUGFzc3dvcmQsCiAgICB9LAopOwoKbXkgJE5ld1Nlc3Npb25JRCA9ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0LT57RGF0YX0tPntTZXNzaW9uSUR9OwoKIyBjcmVhdGUgYSBuZXcgY29uZmlnIGl0ZW0gd2l0aCB0aGUgYmFzaWMgb3B0aW9ucwpteSAkQ29uZmlnSXRlbSA9IHsKICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICBOSUMgPT4gewogICAgICAgICAgICBOSUMgICAgICAgID0+ICdMbzAnLAogICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgfSwKICAgIH0sCn07CgojIGNyZWF0ZSBsb2NhbCBvYmplY3QKbXkgJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZS0+bmV3KAogICAgRGVidWdnZXJPYmplY3QgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgV2Vic2VydmljZUlEICAgPT4gJFdlYnNlcnZpY2VJRCwKKTsKCiMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKbXkgJENyZWF0ZVJlc3VsdCA9ICRDb25maWdJdGVtQ3JlYXRlT2JqZWN0LT5SdW4oCiAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgIEludm9rZXIgICAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgIFVzZXJMb2dpbiAgPT4gJFVzZXJMb2dpbiwKICAgICAgICBQYXNzd29yZCAgID0+ICRQYXNzd29yZCwKICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgfSwKKTsKCm15ICRDb25maWdJdGVtSUQgPSAkQ3JlYXRlUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9IHx8ICcnOwoKJFNlbGYtPlRydWUoCiAgICAkQ29uZmlnSXRlbUlELAogICAgIkFkZGVkIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1JRCAtICRDcmVhdGVSZXN1bHQtPntEYXRhfS0+e051bWJlcn0iLAopOwoKIyBhY3R1YWwgdGVzdHMKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdFbXB0eSBSZXF1ZXN0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4ge30sCiAgICAgICAgRXhwZWN0ZWREYXRhICAgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IDEsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBDb25maWdJdGVtSUQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbUlEJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJ05vdEV4aXNpdG5nJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIENJWE1MRGF0YScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDSVhNTERhdGEnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBDbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBOYW1lJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgRGVwbFN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgSW5jaVN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ05vdEV4aXNpdG5nJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBEZXBsU3RhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgSW5jaVN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgTklDLT5OSUMnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5JQyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgTklDLT5JcE92ZXJESENQJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOSUMgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBOSUMtPk5JQyBpbiBhcnJheScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5JQy0+SXBPdmVyREhDUCBpbiBhcnJheScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgTklDLT5JcE92ZXJESENQIEdlbmVyYWwgQ2F0YWxvZyBpbiBIYXNoJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIE5JQy0+SXBPdmVyREhDUCBHZW5lcmFsIENhdGFsb2cgaW4gQXJyYXkgSGFzaCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIFZlbmRvciBMb25nIFRleHQgJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ2EnIHggNTEsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBXYXJyYW50eUV4cGlyYXRpb25EYXRlIERhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTkzMC0zMC0zMCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIE93bmVyIEN1c3RvbWVyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgUmFtIFRvbyBNYW55JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgMSwKICAgICAgICAgICAgICAgICAgICAgICAgMiwKICAgICAgICAgICAgICAgICAgICAgICAgMywKICAgICAgICAgICAgICAgICAgICAgICAgNCwKICAgICAgICAgICAgICAgICAgICAgICAgNSwKICAgICAgICAgICAgICAgICAgICAgICAgNiwKICAgICAgICAgICAgICAgICAgICAgICAgNywKICAgICAgICAgICAgICAgICAgICAgICAgOCwKICAgICAgICAgICAgICAgICAgICAgICAgOSwKICAgICAgICAgICAgICAgICAgICAgICAgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIDExLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIEF0dGFjaG1lbnQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFJhbSAgICAgICAgICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQXR0YWNobWVudC0+Q29udGVudCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIEF0dGFjaG1lbnQtPkNvbnRlbnRUeXBlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQXR0YWNobWVudC0+RmlsZW5hbWUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFJhbSAgICAgICAgICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0JyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yICAgICAgICAgID0+ICdMZW5vdm8nLAogICAgICAgICAgICAgICAgICAgIE1vZGVsICAgICAgICAgICA9PiAnVGhpbmtwYWQnLAogICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICA9PiAnVGhpbmtwYWQgWDMwMCcsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICdEZXNrdG9wJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBTZXJpYWxOdW1iZXIgICAgPT4gJ2FiYzEyMzQ1YWJjJywKICAgICAgICAgICAgICAgICAgICBPcGVyYXRpbmdTeXN0ZW0gPT4gJ0NlbnRPUyA2LjAnLAogICAgICAgICAgICAgICAgICAgIENQVSAgICAgICAgICAgICA9PiAnSW50ZWwgQ29yZSBpMycsCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJzQwMDAnLAogICAgICAgICAgICAgICAgICAgICAgICAnMjAwMCcsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBIYXJkRGlzayA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEhhcmREaXNrID0+ICcvZGV2JywKICAgICAgICAgICAgICAgICAgICAgICAgQ2FwYWNpdHkgPT4gJzUwMDAwJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIEZRRE4gPT4gJ2hvdHMuZXhhbXBsZS5jb20nLAogICAgICAgICAgICAgICAgICAgIE5JQyAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzE5Mi4xNjguMzAuMScsCgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcyMDAuMzQuNTYuNzgnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgR3JhcGhpY0FkYXB0ZXIgICAgICAgICA9PiAnQVRJIFJhZGVvbiAzMDAnLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIEluc3RhbGxEYXRlICAgICAgICAgICAgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE5vdGUgICAgICAgICAgICAgICAgICAgPT4gJ1RoaXMgaXMgYSBEZW1vIENJJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4ge30sCiAgICAgICAgT3BlcmF0aW9uICAgID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCik7CgojIHN0YXJ0IHRlc3RpbmcKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNyZWF0ZSBsb2NhbCBvYmplY3QKICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgIERlYnVnZ2VyT2JqZWN0ID0+ICREZWJ1Z2dlck9iamVjdCwKICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjokVGVzdC0+e09wZXJhdGlvbn0iLAogICAgICAgIHJlZiAkTG9jYWxPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICk7CgogICAgIyBtYWtlIGEgZGVlcCBjb3B5IHRvIGF2b2lkIGNoYW5naW5nIHRoZSBkZWZpbml0aW9uCiAgICBteSAkQ2xvbmVkUmVxdWVzdERhdGEgPSBkY2xvbmUoICRUZXN0LT57UmVxdWVzdERhdGF9ICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJExvY2FsUmVzdWx0ID0gJExvY2FsT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHJlc3RvcmUgY2xvbmVkIGRhdGEKICAgICRUZXN0LT57UmVxdWVzdERhdGF9ID0gJENsb25lZFJlcXVlc3REYXRhOwoKICAgICMgY2hlY2sgcmVzdWx0CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0hBU0gnLAogICAgICAgIHJlZiAkTG9jYWxSZXN1bHQsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdAogICAgbXkgJFJlcXVlc3Rlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJywKICAgICAgICByZWYgJFJlcXVlc3Rlck9iamVjdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFVwZGF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKICAgICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJFJlcXVlc3RlclJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICBJbnZva2VyICAgICAgPT4gJFRlc3QtPntPcGVyYXRpb259LAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkTmV3U2Vzc2lvbklELAogICAgICAgICAgICAleyAkVGVzdC0+e1JlcXVlc3REYXRhfSB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgY2hlY2sgcmVzdWx0CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0hBU0gnLAogICAgICAgIHJlZiAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBzdHJ1Y3R1cmUgaXMgdmFsaWQiLAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e1N1Y2Nlc3N9LAogICAgICAgICRUZXN0LT57U3VjY2Vzc1JlcXVlc3R9LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHN1Y2Nlc3NmdWwgcmVzdWx0IiwKICAgICk7CgogICAgIyB0ZXN0cyBzdXBwb3NlZCB0byBzdWNjZWVkCiAgICBpZiAoICRUZXN0LT57U3VjY2Vzc1VwZGF0ZX0gKSB7CgogICAgICAgICMgbG9jYWwgcmVzdWx0cwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IENvbmZpZ0l0ZW1JRCB3aXRoIFRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e051bWJlcn0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IE51bWJlciB3aXRoIFRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0sCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICAjIHJlcXVlc3RlciByZXN1bHRzCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBUcnVlLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57TnVtYmVyfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IE51bWJlciB3aXRoIFRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IEVycm9yIGlzIHVuZGVmaW5lZC4iLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRoZSBDb25maWdJdGVtIGVudHJ5IChmcm9tIGxvY2FsIHJlc3VsdCkKICAgICAgICBteSAkTG9jYWxWZXJzaW9uRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgSXNIYXNoUmVmV2l0aERhdGEoJExvY2FsVmVyc2lvbkRhdGEpLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIGNyZWF0ZWQgbG9jYWwgdmVyc2lvbiBzdHJjdHVyZSB3aXRoIFRydWUuIiwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0aGUgY29uZmlnIGl0ZW0gZW50cnkgKGZyb20gcmVxdWVzdGVyIHJlc3VsdCkKICAgICAgICBteSAkUmVxdWVzdGVyVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgkUmVxdWVzdGVyVmVyc2lvbkRhdGEpLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIGNyZWF0ZWQgcmVxdWVzdGVyIGNvbmZpZyBpdGVtIHN0cmN0dXJlIHdpdGggVHJ1ZS4iLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgY29uZmlnIGl0ZW0gYXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSB0ZXN0CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KE51bWJlciBDbGFzcyBOYW1lIEluY2lTdGF0ZSBEZXBsU3RhdGUgRGVwbFN0YXRlVHlwZSkpIHsKICAgICAgICAgICAgaWYgKCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAgICAgJExvY2FsVmVyc2lvbkRhdGEtPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgICAgICAgICAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBsb2NhbCBDb25maWdJdGVtLT4kQXR0cmlidXRlIiAuICIgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHRyYW5zZm9ybSBYTUwgZGF0YSB0byBhIGNvbXBhcmFibGUgZm9ybWF0CiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERlZmluaXRpb259OwoKICAgICAgICAjIG1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIHJlc3VsdAogICAgICAgIG15ICRDbG9uZWRYTUxEYXRhID0gZGNsb25lKCAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERhdGF9ICk7CgogICAgICAgIG15ICRGb3JtYXRlZFhNTERhdGEgPSAkTG9jYWxPYmplY3QtPkludmVydEZvcm1hdFhNTERhdGEoCiAgICAgICAgICAgIFhNTERhdGEgPT4gJENsb25lZFhNTERhdGEtPlsxXS0+e1ZlcnNpb259LAogICAgICAgICk7CgogICAgICAgIG15ICRSZXBsYWNlZFhNTERhdGEgPSAkTG9jYWxPYmplY3QtPkludmVydFJlcGxhY2VYTUxEYXRhKAogICAgICAgICAgICBYTUxEYXRhICAgID0+ICRGb3JtYXRlZFhNTERhdGEsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgKTsKCiAgICAgICAgIyBjb21wYXJlIFhNTCBkYXRhCiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAkUmVwbGFjZWRYTUxEYXRhLAogICAgICAgICAgICAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57Q0lYTUxEYXRhfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBsb2NhbCBDb25maWdJdGVtLT5DSVhNTERhdGEgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBhdHRhY2htZW50cwogICAgICAgIGlmICggZGVmaW5lZCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0F0dGFjaG1lbnR9ICkgewogICAgICAgICAgICBteSBAQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAQXR0YWNobWVudHM7CiAgICAgICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgICAgIGZvciBteSAkRmlsZU5hbWUgKEBBdHRhY2htZW50TGlzdCkgewogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkRmlsZU5hbWU7CgogICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlTmFtZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBuZXh0IGlmIG5vdCBhdHRhY2htZW50CiAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRBdHRhY2htZW50KTsKCiAgICAgICAgICAgICAgICAjIGNvbnZlcnQgY29udGVudCB0byBiYXNlNjQKICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT57Q29udGVudH0gPSBlbmNvZGVfYmFzZTY0KCAkQXR0YWNobWVudC0+e0NvbnRlbnR9LCAnJyApOwoKICAgICAgICAgICAgICAgICMgZGVsZXRlIG5vdCBuZWVkZWQgYXR0aWJ1dGVzCiAgICAgICAgICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcoUHJlZmVyZW5jZXMgRmlsZXNpemUgVHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJEF0dGFjaG1lbnQtPnskQXR0cmlidXRlfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2ggQEF0dGFjaG1lbnRzLCAkQXR0YWNobWVudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgQFJlcXVlc3RlZEF0dGFjaG1lbnRzOwogICAgICAgICAgICBpZiAoIHJlZiAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0F0dGFjaG1lbnR9IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFJlcXVlc3RlZEF0dGFjaG1lbnRzLCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57QXR0YWNobWVudH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBAUmVxdWVzdGVkQXR0YWNobWVudHMgPSBAeyAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57QXR0YWNobWVudH0gfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgXEBBdHRhY2htZW50cywKICAgICAgICAgICAgICAgIFxAUmVxdWVzdGVkQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIGxvY2FsIENvbmZpZ0l0ZW0tPkF0dGFjaG1lbnQgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFZlcnNpb25EYXRhLAogICAgICAgICAgICAkUmVxdWVzdGVyVmVyc2lvbkRhdGEsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgY29uZmlnIGl0ZW0gcmVzdWx0IG1hdGNoZWQgd2l0aCByZW1vdGUgcmVzdWx0LiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHRlc3RzIHN1cHBvc2VkIHRvIGZhaWwKICAgIGVsc2UgewogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbUlEIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57TnVtYmVyfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgTnVtYmVyIHdpdGggZmFsc2UuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvckNvZGV9LAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkRGF0YX0tPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yQ29kZSBtYXRjaGVkIHdpdGggZXhwZWN0ZWQgbG9jYWwgY2FsbCByZXN1bHQuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSB3aXRoIHRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5Jc05vdCgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAnJywKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0KICAgICAgICAgICAgICAgIC4gJzogJwogICAgICAgICAgICAgICAgLiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSAob3V0c2lkZSBEYXRhIGhhc2gpIG1hdGNoZWQgd2l0aCBjb25jYXRlbmF0aW9uIgogICAgICAgICAgICAgICAgLiAiIG9mIEVycm9yQ29kZSBhbmQgRXJyb3JNZXNzYWdlIHdpdGhpbiBEYXRhIGhhc2guIiwKICAgICAgICApOwoKICAgICAgICAjIHJlbW92ZSBFcnJvck1lc3NhZ2UgcGFyYW1ldGVyIGZyb20gZGlyZWN0IGNhbGwKICAgICAgICAjIHJlc3VsdCB0byBiZSBjb25zaXN0ZW50IHdpdGggU09BUCBjYWxsIHJlc3VsdAogICAgICAgIGlmICggJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSApIHsKICAgICAgICAgICAgZGVsZXRlICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX07CiAgICAgICAgfQoKICAgICAgICAjIHNhbml0eSBjaGVjawogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb01lc3NhZ2UgKG91dHNpc2UgRGF0YSBoYXNoKSBnb3QgcmVtb3ZlZCB0byBjb21wYXJlIgogICAgICAgICAgICAgICAgLiAiIGxvY2FsIGFuZCByZW1vdGUgdGVzdHMuIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQp9CgojIGNsZWFuIHVwIGNvbmZpZyBpdGVtcwpteSAkQ29uZmlnSXRlbURlbGV0ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCiMgc2FuaXR5IGNoZWNrCiRTZWxmLT5UcnVlKAogICAgJENvbmZpZ0l0ZW1EZWxldGUsCiAgICAiQ29uZmlnSXRlbURlbGV0ZSgpIHN1Y2Nlc3NmdWwgZm9yIENvbmZpZ0l0ZW0gSUQgJENvbmZpZ0l0ZW1JRCIsCik7CgojIGNsZWFuIHVwIHdlYnNlcnZpY2UKbXkgJFdlYnNlcnZpY2VEZWxldGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZURlbGV0ZSgKICAgIElEICAgICA9PiAkV2Vic2VydmljZUlELAogICAgVXNlcklEID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiLAopOwoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgoKb3VyICRTZWxmOwoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJERCT2JqZWN0ICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwpteSAkVXNlck9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIG1ha2UgcHJlcGFyYXRpb25zCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgY3JlYXRlIG5lZWRlZCB1c2VycwpteSBAVXNlcklEczsKewoKICAgICMgZGlzYWJsZSBlbWFpbCBjaGVja3MgdG8gY3JlYXRlIG5ldyB1c2VyCiAgICBteSAkQ2hlY2tFbWFpbEFkZHJlc3Nlc09yZyA9ICRDb25maWdPYmplY3QtPkdldCgnQ2hlY2tFbWFpbEFkZHJlc3NlcycpIHx8IDE7CiAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgS2V5ICAgPT4gJ0NoZWNrRW1haWxBZGRyZXNzZXMnLAogICAgICAgIFZhbHVlID0+IDAsCiAgICApOwoKICAgIGZvciBteSAkQ291bnRlciAoIDEgLi4gMyApIHsKCiAgICAgICAgIyBjcmVhdGUgbmV3IHVzZXJzIGZvciB0aGUgdGVzdHMKICAgICAgICBteSAkVXNlcklEID0gJFVzZXJPYmplY3QtPlVzZXJBZGQoCiAgICAgICAgICAgIFVzZXJGaXJzdG5hbWUgPT4gJ0lUU01Db25maWdJdGVtJyAuICRDb3VudGVyLAogICAgICAgICAgICBVc2VyTGFzdG5hbWUgID0+ICdVbml0VGVzdCcsCiAgICAgICAgICAgIFVzZXJMb2dpbiAgICAgPT4gJ1VuaXRUZXN0LUlUU01Db25maWdJdGVtLScgLiAkQ291bnRlciAuICRSYW5kb21JRCwKICAgICAgICAgICAgVXNlckVtYWlsICAgICA9PiAnVW5pdFRlc3QtSVRTTUNvbmZpZ0l0ZW0tJyAuICRDb3VudGVyIC4gJ0Bsb2NhbGhvc3QnLAogICAgICAgICAgICBWYWxpZElEICAgICAgID0+IDEsCiAgICAgICAgICAgIENoYW5nZVVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBVc2VySURzLCAkVXNlcklEOwogICAgfQoKICAgICMgcmVzdG9yZSBvcmlnaW5hbCBlbWFpbCBjaGVjayBwYXJhbQogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdDaGVja0VtYWlsQWRkcmVzc2VzJywKICAgICAgICBWYWx1ZSA9PiAkQ2hlY2tFbWFpbEFkZHJlc3Nlc09yZywKICAgICk7Cn0KCm15ICRUZXN0SURTdWZmaXggPSAnVW5pdFRlc3QnIC4gJFJhbmRvbUlEOwpteSAkT3JkZXIgICAgICAgID0gMTAwMDA7CgpteSAlRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnMgPSAoCiAgICBUZXN0MSA9PiB7CiAgICAgICAgJ0RlZmF1bHRWYWx1ZScgPT4gJycsCiAgICAgICAgJ1JlZ0V4TGlzdCcgICAgPT4gW10sCiAgICAgICAgJ011bHRpVmFsdWUnICAgPT4gJzAnLAogICAgICAgICdMaW5rJyAgICAgICAgID0+ICcnLAogICAgICAgICdUb29sdGlwJyAgICAgID0+ICcnLAogICAgICAgICdMaW5rUHJldmlldycgID0+ICcnLAogICAgICAgICdGaWVsZFR5cGUnICAgID0+ICdUZXh0JwogICAgfSwKICAgIFRlc3QyID0+IHsKICAgICAgICAnTGluaycgICAgICAgICAgICAgICA9PiAnJywKICAgICAgICAnVG9vbHRpcCcgICAgICAgICAgICA9PiAnJywKICAgICAgICAnUG9zc2libGVOb25lJyAgICAgICA9PiAnMScsCiAgICAgICAgJ011bHRpVmFsdWUnICAgICAgICAgPT4gJzEnLAogICAgICAgICdEZWZhdWx0VmFsdWUnICAgICAgID0+ICcnLAogICAgICAgICdUcmFuc2xhdGFibGVWYWx1ZXMnID0+ICcwJywKICAgICAgICAnUG9zc2libGVWYWx1ZXMnICAgICA9PiB7CiAgICAgICAgICAgICdWQUxVRSAxJyA9PiAnVkFMVUUgMScsCiAgICAgICAgICAgICdWQUxVRSAyJyA9PiAnVkFMVUUgMicKICAgICAgICB9LAogICAgICAgICdUcmVlVmlldycgICAgPT4gJzEnLAogICAgICAgICdMaW5rUHJldmlldycgPT4gJycsCiAgICAgICAgJ0ZpZWxkVHlwZScgICA9PiAnRHJvcGRvd24nCiAgICB9LAogICAgVGVzdDMgPT4gewogICAgICAgICdZZWFyc0luRnV0dXJlJyAgID0+ICc1JywKICAgICAgICAnRGF0ZVJlc3RyaWN0aW9uJyA9PiAnJywKICAgICAgICAnWWVhcnNQZXJpb2QnICAgICA9PiAnMCcsCiAgICAgICAgJ0xpbmtQcmV2aWV3JyAgICAgPT4gJycsCiAgICAgICAgJ1llYXJzSW5QYXN0JyAgICAgPT4gJzUnLAogICAgICAgICdNdWx0aVZhbHVlJyAgICAgID0+ICcwJywKICAgICAgICAnRGVmYXVsdFZhbHVlJyAgICA9PiAwLAogICAgICAgICdMaW5rJyAgICAgICAgICAgID0+ICcnLAogICAgICAgICdUb29sdGlwJyAgICAgICAgID0+ICcnLAogICAgICAgICdGaWVsZFR5cGUnICAgICAgID0+ICdEYXRlJwogICAgfSwKICAgIFRlc3Q0ID0+IHsKICAgICAgICAnQ29scycgICAgICAgICA9PiAnJywKICAgICAgICAnUm93cycgICAgICAgICA9PiAnJywKICAgICAgICAnRGVmYXVsdFZhbHVlJyA9PiAnJywKICAgICAgICAnUmVnRXhMaXN0JyAgICA9PiBbXSwKICAgICAgICAnTXVsdGlWYWx1ZScgICA9PiAnMCcsCiAgICAgICAgJ1Rvb2x0aXAnICAgICAgPT4gJycsCiAgICAgICAgJ0ZpZWxkVHlwZScgICAgPT4gJ1RleHRBcmVhJwogICAgfSwKICAgIFRlc3Q1ID0+IHsKICAgICAgICAnWWVhcnNJbkZ1dHVyZScgICA9PiAnNScsCiAgICAgICAgJ0RhdGVSZXN0cmljdGlvbicgPT4gJycsCiAgICAgICAgJ1llYXJzUGVyaW9kJyAgICAgPT4gJzAnLAogICAgICAgICdMaW5rUHJldmlldycgICAgID0+ICcnLAogICAgICAgICdZZWFyc0luUGFzdCcgICAgID0+ICc1JywKICAgICAgICAnTXVsdGlWYWx1ZScgICAgICA9PiAnMCcsCiAgICAgICAgJ0RlZmF1bHRWYWx1ZScgICAgPT4gMCwKICAgICAgICAnTGluaycgICAgICAgICAgICA9PiAnJywKICAgICAgICAnVG9vbHRpcCcgICAgICAgICA9PiAnJywKICAgICAgICAnRmllbGRUeXBlJyAgICAgICA9PiAnRGF0ZVRpbWUnCiAgICB9LAopOwoKIyBBZGQgZHluYW1pYyBmaWVsZHMgZm9yIHRlc3RpbmcuIFRoZXNlIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgcmVmZXJlbmNlZAojIGJ5IG5hbWUgaW4gZHluYW1pYyBmaWVsZCBkZWZpbml0aW9ucy4KZm9yIG15ICROYW1lICggc29ydCBrZXlzICVEeW5hbWljRmllbGREZWZpbml0aW9ucyApIHsKICAgIG15ICRERk5hbWUgPSAkTmFtZSAuICRUZXN0SURTdWZmaXg7CiAgICBteSAkSXRlbUlEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBOYW1lICAgICAgICAgID0+ICRERk5hbWUsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAkREZOYW1lLAogICAgICAgIEZpZWxkT3JkZXIgICAgPT4gJE9yZGVyKyssCiAgICAgICAgRmllbGRUeXBlICAgICA9PiAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnN7JE5hbWV9LT57RmllbGRUeXBlfSwKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgQ29uZmlnICAgICAgICA9PiAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnN7JE5hbWV9LAogICAgICAgIFJlb3JkZXIgICAgICAgPT4gMSwKICAgICAgICBWYWxpZElEICAgICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgKTsKICAgIG9rKCAkSXRlbUlELCAiY3JlYXRlZCBkeW5hbWljIGZpZWxkICRERk5hbWUiICk7Cn0KCm15IEBDb25maWdJdGVtUGVybERlZmluaXRpb25zOwoKIyBkZWZpbmUgdGhlIGZpcnN0IHRlc3QgZGVmaW5pdGlvbiAoYmFzaWMgZGVmaW5pdGlvbiB3aXRob3V0IER5bmFtaWNGaWVsZHMpCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzBdID0gIgp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMiwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyIDFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uID0+ICdTZWN0aW9uMicsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgICAgIFNlY3Rpb24xID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QxJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QyJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlY3Rpb24yID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QzJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3Q0JFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICB9LAp9CiI7CgojIGRlZmluZSB0aGUgc2Vjb25kIHRlc3QgZGVmaW5pdGlvbiAoZGVmaW5pdGlvbiB3aXRoIER5bmFtaWNGaWVsZHMpCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzFdID0gIgp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCA9PiAxCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgU2VjdGlvbnMgPT4gewogICAgICAgICAgICBTZWN0aW9uMSA9PiB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdUZXN0MSRUZXN0SURTdWZmaXgnCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdUZXN0MiRUZXN0SURTdWZmaXgnCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgfSwKfQoiOwoKIyBkZWZpbmUgdGhlIHRoaXJkIHRlc3QgZGVmaW5pdGlvbiAoZXNwZWNpYWxseSBmb3Igc2VhcmNoIHRlc3RzIHdpdGggWE1MRGF0YSkKJENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnNbMl0gPSAiCnsKICAgICAgICBQYWdlcyAgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50JywKICAgICAgICAgICAgICAgIExheW91dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyA9PiAyLAogICAgICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICcxZnIgMWZyJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCA9PiAxCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24yJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMiwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDEkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDIkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VjdGlvbjIgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDMkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDQkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIH0sCn0KIjsKCiMgZGVmaW5lIHRoZSBmb3VydGggdGVzdCBkZWZpbml0aW9uIChvbmx5IGZvciBzZWFyY2ggdGVzdHMpCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzNdID0gIgp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMiwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyIDFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uID0+ICdTZWN0aW9uMicsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgICAgIFNlY3Rpb24xID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QxJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QyJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlY3Rpb24yID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3QzJFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3Q0JFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICB9LAp9CiI7CgojIGRlZmluZSB0aGUgZmlmdGggdGVzdCBkZWZpbml0aW9uIChvbmx5IGZvciBzZWFyY2ggdGVzdHMpCgokQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uc1s0XSA9ICIKewogICAgICAgIFBhZ2VzICA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnQnLAogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gJzFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgICAgIFNlY3Rpb24xID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ1Rlc3Q1JFRlc3RJRFN1ZmZpeCcKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgIH0sCn0KIjsKCiMgZGVmaW5lIHRoZSBzaXh0aCB0ZXN0IGRlZmluaXRpb24gKG9ubHkgZm9yIHNlYXJjaCB0ZXN0cykKCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzVdID0gIgp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCA9PiAxCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDEkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnVGVzdDQkVGVzdElEU3VmZml4JwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICB9LAp9CiI7CgpteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CgpteSBAQ29uZmlnSXRlbURlZmluaXRpb25zOwpmb3IgbXkgJFBlcmxEZWZpbml0aW9uIChAQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9ucykgewogICAgbXkgJFlBTUxEZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgRGF0YSA9PiBldmFsICRQZXJsRGVmaW5pdGlvbiwgICAgIyMgbm8gY3JpdGljIHF3KEJ1aWx0aW5GdW5jdGlvbnM6OlByb2hpYml0U3RyaW5neUV2YWwpCiAgICApOwogICAgcHVzaCBAQ29uZmlnSXRlbURlZmluaXRpb25zLCAkWUFNTERlZmluaXRpb247Cn0KCiMgYWRkIGEgZ2VuZXJhbCBjYXRhbG9nIHRlc3QgbGlzdApteSAkQ29uZmlnSXRlbUdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICBHcm91cCAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICBVc2VySUQgPT4gMSwKKTsKb2soICRDb25maWdJdGVtR3JvdXBJRCwgJ2dvdCBncm91cCBpZCBmb3IgaXRzbS1jb25maWdpdGVtJyApOwoKIyBhZGQgdGhlIHRlc3QgY2xhc3NlcwpteSBAQ29uZmlnSXRlbUNsYXNzSURzOwpteSBAQ29uZmlnSXRlbUNsYXNzZXM7Cm15IEBDb25maWdJdGVtRGVmaW5pdGlvbklEczsKZm9yIG15ICREZWZpbml0aW9uIChAQ29uZmlnSXRlbURlZmluaXRpb25zKSB7CgogICAgIyBnZW5lcmF0ZSBhIHJhbmRvbSBuYW1lCiAgICBteSAkQ2xhc3NOYW1lID0gJ1VuaXRUZXN0JyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgogICAgIyBhZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICRDbGFzc0lEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICAgID0+ICRDbGFzc05hbWUsCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgIyBjaGVjayBjbGFzcyBpZAogICAgaWYgKCAhJENsYXNzSUQgKSB7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAwLAogICAgICAgICAgICAiQ2FuJ3QgYWRkIG5ldyBjb25maWcgaXRlbSBjbGFzcy4iLAogICAgICAgICk7CiAgICB9CgogICAgIyBTZXQgcGVybWlzc2lvbi4KICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICAgICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgICAgICBWYWx1ZSAgPT4gWyRDb25maWdJdGVtR3JvdXBJRF0sCiAgICApOwoKICAgICMgU2V0IHZlcnNpb24gc3RyaW5nIG1vZHVsZS4KICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uU3RyaW5nTW9kdWxlJywKICAgICAgICBWYWx1ZSAgPT4gWydJbmNyZW1lbnRhbCddLAogICAgKTsKCiAgICAjIFNldCB2ZXJzaW9uIHRyaWdnZXJzLgogICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25UcmlnZ2VyJywKICAgICAgICBWYWx1ZSAgPT4gWyAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcgXSwKICAgICk7CgogICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAkQ2xhc3NJRDsKICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc2VzLCAgJENsYXNzTmFtZTsKCiAgICAjIGFkZCBhIGRlZmluaXRpb24gdG8gdGhlIGNsYXNzCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CiAgICBvayggJFJlc3VsdC0+e1N1Y2Nlc3N9LCAgICAgICdhZGRlZCBuZXcgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbicgKTsKICAgIG9rKCAkUmVzdWx0LT57RGVmaW5pdGlvbklEfSwgJ2dvdCBhIGRlZmluaXRpb24gSUQnICk7CgogICAgcHVzaCBAQ29uZmlnSXRlbURlZmluaXRpb25JRHMsICRSZXN1bHQtPntEZWZpbml0aW9uSUR9Owp9CgojIHRlc3QgRGVmaW5pdGlvbkxpc3QgZm9yIHRob3NlIHNpbXBsZSBjYXNlcwpteSAkQ291bnRlciA9IDA7CmZvciBteSAkQ2xhc3NJRCAoQENvbmZpZ0l0ZW1DbGFzc0lEcykgewogICAgbXkgJERlZmluaXRpb25MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25MaXN0KAogICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICApOwoKICAgICMgZXhwZWN0IGEgc2luZ2xlIGRlZmluaXRpb24gcGVyIGNvbmZpZyBpdGVtIGNsYXNzCiAgICAkU2VsZi0+SXMoCiAgICAgICAgc2NhbGFyIEB7JERlZmluaXRpb25MaXN0UmVmfSwKICAgICAgICAxLAogICAgICAgICJEZWZpbml0aW9uTGlzdCgpIGZvciBjbGFzcyBpZCAkQ2xhc3NJRDogZ290IGEgc2luZ2xlIHJlc3VsdCIsCiAgICApOwoKICAgICMgZXhwZWN0IHRoZSByZW1lbWJlcmVkIGRlZmluaXRpb24gaWQgaW4gdGhlIGZpcnN0IGRlZmluaXRpb24KICAgICRTZWxmLT5JcygKICAgICAgICAkRGVmaW5pdGlvbkxpc3RSZWYtPlswXS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWyRDb3VudGVyXSwKICAgICAgICAiRGVmaW5pdGlvbkxpc3QoKSBmb3IgY2xhc3MgaWQgJENsYXNzSUQ6IGdvdCBleHBlY3RlZCBkZWZpbml0aW9uIGlkIiwKICAgICk7CgogICAgJENvdW50ZXIrKzsKfQoKIyBjcmVhdGUgc29tZSByYW5kb20gbnVtYmVycwpteSBAQ29uZmlnSXRlbU51bWJlcnM7CmZvciAoIDEgLi4gMTAwICkgewogICAgcHVzaCBAQ29uZmlnSXRlbU51bWJlcnMsICRIZWxwZXItPkdldFJhbmRvbU51bWJlcigpOwp9CgojIGdldCBjbGFzcyBsaXN0Cm15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKKTsKCiMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdApteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJURlcGxTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKCiMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKbXkgJEluY2lTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAopOwpteSAlSW5jaVN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JEluY2lTdGF0ZUxpc3R9OwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIGRlZmluZSBnZW5lcmFsIGNvbmZpZyBpdGVtIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15ICRDb25maWdJdGVtVGVzdHMgPSBbCgogICAgI0NvbmZpZ0l0ZW1BZGQgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcykKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIENvbmZpZ0l0ZW1BZGQgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcykKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBpbnZhbGlkIGNsYXNzIGlkIGlzIGdpdmVuIChjaGVjayByZXR1cm4gZmFsc2UpCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWy0xXSArIDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhbGwgcmVxdWlyZWQgY29uZmlnIGl0ZW0gdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgcmV0dXJuZWQgY29uZmlnIGl0ZW0gdmFsdWVzKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSAxIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhbGwgcmVxdWlyZWQgY29uZmlnIGl0ZW0gdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgbnVtYmVyIGF0dHJpYnV0ZSkKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gMiIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGNvbmZpZyBpdGVtIHdpdGggdGhpcyBudW1iZXIgYWxyZWFkeSBleGlzdHMgKGNoZWNrIHJldHVybiBmYWxzZSkKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gMyIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIGNvbmZpZyBpdGVtIHZhbHVlcyBhcmUgZ2l2ZW4gcGx1cyBub3QgZGVmaW5lZCBEeW5hbWljRmllbGRzCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzM1XSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSAzNSIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1szNV0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBDb25maWdJdGVtVXBkYXRlIGRvZXNuJ3QgY29udGFpbnMgYWxsIGRhdGEgKGNoZWNrIHJlcXVpcmVkIGF0dHJpYnV0ZXMpIChNaXNzaW5nIFVzZXJJRCkKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMV0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gNCIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sxXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgSW52YWxpZCBkZXBsb3ltZW50IHN0YXRlIGlkIGlzIGdpdmVuIChjaGVjayByZXF1aXJlZCBhdHRyaWJ1dGVzKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSA1IiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtVXBkYXRlID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSAtIDUiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgSW52YWxpZCBpbmNpZGVudCBzdGF0ZSBpZCBpcyBnaXZlbiAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcykKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbM10sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gNiIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbM10sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChnZW5lcmFsIGNoZWNrIHdpdGggdHdvIHZlcnNpb25zKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s5XSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSA3IiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gQ29uZmlnSXRlbSA5IFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSBDb25maWdJdGVtIDkgVmVyc2lvbiAyIiwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s5XSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s5XSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gQ29uZmlnSXRlbSA5IFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s5XSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gQ29uZmlnSXRlbSA5IFZlcnNpb24gMiIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgdGhlIGNhbGN1bGF0aW9uIG9mIGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHN0YXRlKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sxMF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSAtIDgiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSBDb25maWdJdGVtIDEwIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1BsYW5uZWR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSBDb25maWdJdGVtIDEwIFZlcnNpb24gMiIsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMTBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sxMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIENvbmZpZ0l0ZW0gMTAgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQbGFubmVkfSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQbGFubmVkJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcmVwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMTBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSBDb25maWdJdGVtIDEwIFZlcnNpb24gMiIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGQgY29uZmlnIGl0ZW0gb25seSBmb3IgbGF0ZXIgc2VhcmNoIHRlc3RzCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIH0gLSA1MCIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSBDb25maWdJdGVtIDUwIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTAgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1syXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZVR5cGUgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFkZCBjb25maWcgaXRlbSBvbmx5IGZvciBsYXRlciBzZWFyY2ggdGVzdHMKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gfSAtIDUxIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MSBWZXJzaW9uIDEiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MSBWZXJzaW9uIDIiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTEgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1syXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSBDb25maWdJdGVtIDUxIFZlcnNpb24gMiIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gJFVzZXJJRHNbMV0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWRkIGNvbmZpZyBpdGVtIG9ubHkgZm9yIGxhdGVyIHNlYXJjaCB0ZXN0cywgaW5jbHVkaW5nIER5bmFtaWNGaWVsZERhdGEKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTNdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbNV0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbNV0gfSAtIDUzIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzVdIENvbmZpZ0l0ZW0gNTMgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDEkVGVzdElEU3VmZml4IiA9PiAnVGVzdCB2YWx1ZSBmb3IgdGV4dCBmaWVsZCBUZXN0MScsCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NCRUZXN0SURTdWZmaXgiID0+ICdUZXN0IHZhbHVlIGZvciB0ZXh0IGFyZWEgZmllbGQgVGVzdDQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUzXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1s1XSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzVdIH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25HZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTNdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzVdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbNV0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1s1XSBDb25maWdJdGVtIDUzIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1s1XSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICAgICAgICAgICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSAgICAgICAgICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgZmllbGQgVGVzdDEnLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDQkVGVzdElEU3VmZml4IiA9PiAnVGVzdCB2YWx1ZSBmb3IgdGV4dCBhcmVhIGZpZWxkIFRlc3Q0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGQgY29uZmlnIGl0ZW0gb25seSBmb3IgbGF0ZXIgc2VhcmNoIHRlc3RzLCBpbmNsdWRpbmcgRHluYW1pY0ZpZWxkRGF0YQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9IC0gNTIiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTIgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgZmllbGQgVGVzdDEnLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDIkVGVzdElEU3VmZml4IiA9PiBbICdWQUxVRTEnLCAnVkFMVUUyJyBdLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDMkVGVzdElEU3VmZml4IiA9PiAnMjAyMy0wOS0wMSAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NCRUZXN0SURTdWZmaXgiID0+ICdUZXN0IHZhbHVlIGZvciB0ZXh0IGFyZWEgZmllbGQgVGVzdDQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTIgVmVyc2lvbiAxIiwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzJdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZVR5cGUgICAgICAgICAgICAgICAgICAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgICAgICAgICAgICAgICAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgZmllbGQgVGVzdDEnLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDIkVGVzdElEU3VmZml4IiA9PiBbICdWQUxVRTEnLCAnVkFMVUUyJyBdLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDMkVGVzdElEU3VmZml4IiA9PiAnMjAyMy0wOS0wMSAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NCRUZXN0SURTdWZmaXgiID0+ICdUZXN0IHZhbHVlIGZvciB0ZXh0IGFyZWEgZmllbGQgVGVzdDQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFkZCBjb25maWcgaXRlbSBvbmx5IGZvciBsYXRlciBzZWFyY2ggdGVzdHMsIGluY2x1ZGluZyBEeW5hbWljRmllbGREYXRhCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzgwXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzRdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzRdIH0gLSA4MCIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbNF0gQ29uZmlnSXRlbSA4MCBWZXJzaW9uIDEiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDUkVGVzdElEU3VmZml4IiA9PiAnMjAyMy0wMS0wMSAxMjowMDowMCcKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s4MF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbNF0sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1s0XSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25HZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbODBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzRdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbNF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1s0XSBDb25maWdJdGVtIDgwIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1s0XSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICAgICAgICAgICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSAgICAgICAgICAgICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlICAgICAgICAgICAgICAgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NSRUZXN0SURTdWZmaXgiID0+ICcyMDIzLTAxLTAxIDEyOjAwOjAwJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjYWRkIGNvbmZpZyBpdGVtIG9ubHkgZm9yIGxhdGVyIHNlYXJjaCB0ZXN0cwogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSB9IC0gNjAiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRHNbMV0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbM10gQ29uZmlnSXRlbSA2MCBWZXJzaW9uIDEiLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBDb25maWdJdGVtIDYwIFZlcnNpb24gMSIsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbM10sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCB0byBjaGVjayBoaXN0b3J5IGZ1bmN0aW9ucwogICAgIyBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgdGhlIGNhbGN1bGF0aW9uIG9mIGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHN0YXRlKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICJVbml0VGVzdCAtICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9IC0gNzAiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSGlzdG9yeVRlc3QnLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQbGFubmVkfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdVbml0VGVzdCAtIEhpc3RvcnlUZXN0IFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBIaXN0b3J5VGVzdCcsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UGxhbm5lZH0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUGxhbm5lZCcsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJlcHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZVR5cGUgICAgPT4gJ29wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzcwXSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEhpc3RvcnlUZXN0IFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEhpc3RvcnlHZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ1ZlcnNpb25DcmVhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNiwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ1ZlcnNpb25DcmVhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNiwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ05hbWVVcGRhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ0RlcGxveW1lbnRTdGF0ZVVwZGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiAxMSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICA9PiAnVmVyc2lvbkNyZWF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiA2LAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICA9PiAnSW5jaWRlbnRTdGF0ZVVwZGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiAxMCwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ05hbWVVcGRhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ0RlcGxveW1lbnRTdGF0ZVVwZGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiAxMSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCBmb3IgQnVnNDE5NgogICAgIyBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgdGhlIGNhbGN1bGF0aW9uIG9mIGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHN0YXRlKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MV0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAiVW5pdFRlc3QgLSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSAtIEJ1Z2ZpeDQxOTYiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDE5NicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1BsYW5uZWR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDE5NiBWMicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzFdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MV0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXg0MTk2JywKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQbGFubmVkfSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQbGFubmVkJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcmVwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzFdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDE5NiBWMicsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCBmb3IgQnVnIDQzNzcgLSBDSS1BCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzcyXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSBCdWcgNDM3NyAtIENJLUEiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUEnLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzJdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ29wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzJdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUEnLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZVR5cGUgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCBmb3IgQnVnIDQzNzcgLSBDSS1CCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzczXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gIlVuaXRUZXN0IC0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0gLSBCdWcgNDM3NyAtIENJLUIiLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUInLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzNdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ29wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzNdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUInLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZVR5cGUgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgpdOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHJ1biBnZW5lcmFsIGNvbmZpZyBpdGVtIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15ICRUZXN0Q291bnQgPSAxOwpteSBAQ29uZmlnSXRlbUlEczsKClRFU1Q6CmZvciBteSAkVGVzdCAoIEB7JENvbmZpZ0l0ZW1UZXN0c30gKSB7CgogICAgIyBjaGVjayBTb3VyY2VEYXRhIGF0dHJpYnV0ZQogICAgaWYgKCAhJFRlc3QtPntTb3VyY2VEYXRhfSB8fCByZWYgJFRlc3QtPntTb3VyY2VEYXRhfSBuZSAnSEFTSCcgKSB7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAwLAogICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBObyBTb3VyY2VEYXRhIGZvdW5kIGZvciB0aGlzIHRlc3QuIiwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgIyBleHRyYWN0IHNvdXJjZSBkYXRhCiAgICBteSAkU291cmNlRGF0YSA9ICRUZXN0LT57U291cmNlRGF0YX07CgogICAgIyBhZGQgYSBuZXcgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICBpZiAoICRTb3VyY2VEYXRhLT57Q29uZmlnSXRlbUFkZH0gKSB7CgogICAgICAgICMgYWRkIHRoZSBuZXcgY29uZmlnIGl0ZW0KICAgICAgICAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICV7ICRTb3VyY2VEYXRhLT57Q29uZmlnSXRlbUFkZH0gfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHRoZSBjb25maWcgaXRlbQogICAgaWYgKCAkVGVzdC0+e1JlZmVyZW5jZURhdGF9ICYmICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntDb25maWdJdGVtR2V0fSApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IENvbmZpZ0l0ZW1BZGQoKSAtIEFkZCBuZXcgY29uZmlnIGl0ZW0uIEluc2VydCBzdWNjZXNzLiIsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBURVNUIGlmICEkQ29uZmlnSXRlbUlEOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUFkZCgpIC0gQWRkIG5ldyBjb25maWcgaXRlbS4gUmV0dXJuIGZhbHNlLiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGFkZCBhbGwgZGVmaW5lZCB2ZXJzaW9ucwogICAgbXkgQFZlcnNpb25JRHM7CiAgICBteSAlVmVyc2lvbklEc1NlZW47CiAgICBpZiAoICRTb3VyY2VEYXRhLT57Q29uZmlnSXRlbVVwZGF0ZX0gKSB7CgogICAgICAgIGZvciBteSAkVmVyc2lvbiAoICRTb3VyY2VEYXRhLT57Q29uZmlnSXRlbVVwZGF0ZX0tPkAqICkgewoKICAgICAgICAgICAgaWYgKCRDb25maWdJdGVtSUQpIHsKICAgICAgICAgICAgICAgICRWZXJzaW9uLT57Q29uZmlnSXRlbUlEfSA9ICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHRoZSBsYXN0IHZlcnNpb24gaWQgYmVmb3JlIENvbmZpZ0l0ZW1VcGRhdGUKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRMYXN0VmVyc2lvbklEID0gJENvbmZpZ0l0ZW1EYXRhLT57TGFzdFZlcnNpb25JRH07CgogICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICV7JFZlcnNpb259LAogICAgICAgICAgICAgICAgRm9yY2VBZGQgPT4gMQogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgdGhlIGxhc3QgdmVyc2lvbiBpZCBhZnRlciBDb25maWdJdGVtVXBkYXRlCiAgICAgICAgICAgICRDb25maWdJdGVtRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1EYXRhLT57TGFzdFZlcnNpb25JRH07CgogICAgICAgICAgICBpZiAoICRWZXJzaW9uSUQgbmUgJExhc3RWZXJzaW9uSUQgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBWZXJzaW9uSURzLCAkVmVyc2lvbklEIGlmICEkVmVyc2lvbklEc1NlZW57JFZlcnNpb25JRH0rKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHRoZSBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW1EYXRhOwogICAgaWYgKCAkVGVzdC0+e1JlZmVyZW5jZURhdGF9ICYmICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntDb25maWdJdGVtR2V0fSApIHsKCiAgICAgICAgIyBnZXQgdGhlIGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICAkQ29uZmlnSXRlbURhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW1EYXRhICkgewoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUdldCgpIC0gZ2V0IGNvbmZpZyBpdGVtIGRhdGEuIgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBhbGwgY29uZmlnIGl0ZW0gYXR0cmlidXRlcwogICAgICAgIG15ICRDb3VudGVyID0gMDsKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAleyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57Q29uZmlnSXRlbUdldH0gfSApIHsKCiAgICAgICAgICAgICMgc2V0IGNvbnRlbnQgaWYgdmFsdWVzIGFyZSB1bmRlZgogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRDb25maWdJdGVtRGF0YS0+eyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1EYXRhLT57JEF0dHJpYnV0ZX0gPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJFRlc3QtPntSZWZlcmVuY2VEYXRhfS0+e0NvbmZpZ0l0ZW1HZXR9LT57JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57Q29uZmlnSXRlbUdldH0tPnskQXR0cmlidXRlfSA9ICdVTkRFRi11bml0dGVzdCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgYXR0cmlidXRlcwogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbURhdGEtPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntDb25maWdJdGVtR2V0fS0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUdldCgpIC0gJEF0dHJpYnV0ZSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIHRoZSB2ZXJzaW9ucwogICAgaWYgKAogICAgICAgICRUZXN0LT57UmVmZXJlbmNlRGF0YX0KICAgICAgICAmJiAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH0KICAgICAgICAmJiBAeyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH0gfQogICAgICAgICkKICAgIHsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBzY2FsYXIgQFZlcnNpb25JRHMsCiAgICAgICAgICAgIHNjYWxhciBAeyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH0gfSwKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbVVwZGF0ZSgpIC0gY29ycmVjdCBudW1iZXIgb2YgdmVyc2lvbnMiLAogICAgICAgICk7CgogICAgICAgIG5leHQgVEVTVCBpZiAhJENvbmZpZ0l0ZW1JRDsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgIHNjYWxhciBAVmVyc2lvbklEcywKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogVmVyc2lvbkFkZCgpIC0gbm8gdmVyc2lvbnMgZXhpdHMiLAogICAgICAgICk7CiAgICB9CgogICAgbmV4dCBURVNUIHVubGVzcyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9OwogICAgbmV4dCBURVNUIHVubGVzcyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH07CgogICAgbXkgJENvdW50ZXIgICAgICAgICAgID0gMDsKICAgIG15ICRMYXN0VmVyc2lvbklETXVzdCA9ICdVTkRFRi11bml0dGVzdCc7CgogICAgIyBSZWZyZXNoIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCBjYWNoZSB0byBhdm9pZCBpc3N1ZXMgd2l0aCBwcmV2aW91c2x5IGNhY2hlZCB2YWx1ZXMuCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+Q2xlYW5VcCgKICAgICAgICBUeXBlID0+ICdJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQnLAogICAgKTsKCiAgICBWRVJTSU9OSUQ6CiAgICBmb3IgbXkgJFZlcnNpb25JRCAoQFZlcnNpb25JRHMpIHsKCiAgICAgICAgIyBnZXQgdGhpcyB2ZXJzaW9uCiAgICAgICAgbXkgJFZlcnNpb25EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFZlcnNpb25EYXRhICkgewoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUdldChWZXJzaW9uIEdldCkgLSBnZXQgdmVyc2lvbiBkYXRhLiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgVkVSU0lPTklEOwogICAgICAgIH0KCiAgICAgICAgIyBzYXZlIGxhc3QgdmVyc2lvbiBpZAogICAgICAgICRMYXN0VmVyc2lvbklETXVzdCA9ICRWZXJzaW9uRGF0YS0+e1ZlcnNpb25JRH07CgogICAgICAgICMgY2hlY2sgYWxsIHZlcnNpb24gYXR0cmlidXRlcwogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggc29ydCBrZXlzICV7ICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntWZXJzaW9uR2V0fS0+WyRDb3VudGVyXSB9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBuZWVkZWQgYXR0cmlidXRlcwogICAgICAgICAgICBteSAkVmVyc2lvbkF0dHJpYnV0ZSAgID0gJFZlcnNpb25EYXRhLT57JEF0dHJpYnV0ZX07CiAgICAgICAgICAgIG15ICRSZWZlcmVuY2VBdHRyaWJ1dGUgPSAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH0tPlskQ291bnRlcl0tPnskQXR0cmlidXRlfTsKCiAgICAgICAgICAgICMgc2V0IGNvbnRlbnQgaWYgdmFsdWVzIGFyZSB1bmRlZgogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRWZXJzaW9uQXR0cmlidXRlICkgewogICAgICAgICAgICAgICAgJFZlcnNpb25BdHRyaWJ1dGUgPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJFJlZmVyZW5jZUF0dHJpYnV0ZSApIHsKICAgICAgICAgICAgICAgICRSZWZlcmVuY2VBdHRyaWJ1dGUgPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGF0dHJpYnV0ZXMKICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgJFZlcnNpb25BdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAkUmVmZXJlbmNlQXR0cmlidXRlLAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUdldChWZXJzaW9uIEdldCkgLSAkQXR0cmlidXRlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRDb3VudGVyKys7CiAgICB9CgogICAgIyBwcmVwYXJlIGxhc3QgdmVyc2lvbiBpZAogICAgbXkgJExhc3RWZXJzaW9uSURBY3R1YWwgPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgaWYgKCAkQ29uZmlnSXRlbURhdGEtPntMYXN0VmVyc2lvbklEfSApIHsKICAgICAgICAkTGFzdFZlcnNpb25JREFjdHVhbCA9ICRDb25maWdJdGVtRGF0YS0+e0xhc3RWZXJzaW9uSUR9OwogICAgfQoKICAgICMgY2hlY2sgbGFzdCB2ZXJzaW9uIGlkCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJENvbmZpZ0l0ZW1EYXRhLT57TGFzdFZlcnNpb25JRH0sCiAgICAgICAgJExhc3RWZXJzaW9uSURNdXN0LAogICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IGxhc3QgdmVyc2lvbiBpZCBpZGVudGljYWwiLAogICAgKTsKCiAgICAjIGNoZWNrIGhpc3RvcnkgZW50cmllcwogICAgaWYgKAogICAgICAgICRUZXN0LT57UmVmZXJlbmNlRGF0YX0KICAgICAgICAmJiAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57SGlzdG9yeUdldH0KICAgICAgICAmJiBAeyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57SGlzdG9yeUdldH0gfQogICAgICAgICkKICAgIHsKICAgICAgICBteSAkQ29tcGxldGVIaXN0b3J5ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlHZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgbnIgb2YgaGlzdG9yeSBlbnRyaWVzCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBzY2FsYXIgQHsgJFRlc3QtPntSZWZlcmVuY2VEYXRhfS0+e0hpc3RvcnlHZXR9IH0sCiAgICAgICAgICAgIHNjYWxhciBAeyRDb21wbGV0ZUhpc3Rvcnl9LAogICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBuciBvZiBoaXN0b3J5IGVudHJpZXMiLAogICAgICAgICk7CgogICAgICAgICMgQ0hFQ0tOUjogZm9yIG15ICRDaGVja05yICggMCAuLiAkI3skQ29tcGxldGVIaXN0b3J5fSApIHsKICAgICAgICAjICAgICBteSAkQ2hlY2sgPSAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57SGlzdG9yeUdldH0tPlskQ2hlY2tOcl07CiAgICAgICAgIyAgICAgbXkgJERhdGEgID0gJENvbXBsZXRlSGlzdG9yeS0+WyRDaGVja05yXTsKCiAgICAgICAgIyAgICAgbmV4dCBDSEVDS05SIGlmICEoICRDaGVjayAmJiAkRGF0YSApOwoKICAgICAgICAjICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRDaGVja30gKSB7CgogICAgICAgICMgICAgICAgICAjIGNoZWNrIGhpc3RvcnkgZGF0YQogICAgICAgICMgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgIyAgICAgICAgICAgICAkQ2hlY2stPnskS2V5fSwKICAgICAgICAjICAgICAgICAgICAgICREYXRhLT57JEtleX0sCiAgICAgICAgIyAgICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiAkS2V5IiwKICAgICAgICAjICAgICAgICAgKTsKICAgICAgICAjICAgICB9CiAgICAgICAgIyB9CiAgICB9Cn0KY29udGludWUgewogICAgJFRlc3RDb3VudCsrOwp9CgojIEZvbGxvd2luZyBzZWN0aW9uIGlzIHBlbmRpbmcgZm9yIGNoZWNrIGFmdGVyIG5vcm1hbGl6ZSBkZQojIEluY2lkZW50IHJlY2FsY3VsYXRpb24gZnVuY2lvbgoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHRlc3QgZm9yIGJ1Z2ZpeCA0Mzc3CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgewoKIyAgICAgbXkgJENJMSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAojICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzJdLAojICAgICApOwoKIyAgICAgbXkgJENJMiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAojICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzNdLAojICAgICApOwoKIyAgICAgIyBsaW5rIHRoZSBDSSB3aXRoIGEgQ0kKIyAgICAgbXkgJExpbmtSZXN1bHQgPSAkTGlua09iamVjdC0+TGlua0FkZCgKIyAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAojICAgICAgICAgU291cmNlS2V5ICAgID0+ICRDSTEsCiMgICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKIyAgICAgICAgIFRhcmdldEtleSAgICA9PiAkQ0kyLAojICAgICAgICAgVHlwZSAgICAgICAgID0+ICdEZXBlbmRzT24nLAojICAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiMgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgdXBkYXRlIGluY2lkZW50IHN0YXRlIG9mIENJMQojICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiMgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMSwKIyAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXg0Mzc3IC0gQ0ktQScsCiMgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAojICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiMgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBhZGRlZAojICAgICAkU2VsZi0+VHJ1ZSgKIyAgICAgICAgICRWZXJzaW9uSUQsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBWZXJzaW9uQWRkKCkgZm9yICRDSTEgLSBTZXQgdG8gJ0luY2lkZW50JyIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMQojICAgICBteSAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMSBpcyAnSW5jaWRlbnQnCiMgICAgICRTZWxmLT5JcygKIyAgICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKIyAgICAgICAgICdJbmNpZGVudCcsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBDdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIENJICRDSTEiLAojICAgICApOwoKIyAgICAgIyBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZvciBDSTIKIyAgICAgJFZlcnNpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKIyAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ0kyLAojICAgICApOwoKIyAgICAgIyBjaGVjayBpZiBpbmNpZGVudCBzdGF0ZSBvZiBDSTIgaXMgJ1dhcm5pbmcnCiMgICAgICRTZWxmLT5JcygKIyAgICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKIyAgICAgICAgICdXYXJuaW5nJywKIyAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IEN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgQ0kgJENJMiIsCiMgICAgICk7CgojICAgICAjIHVwZGF0ZSBpbmNpZGVudCBzdGF0ZSBvZiBDSTIgdG8gJ0luY2lkZW50JwojICAgICAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiMgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMiwKIyAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXg0Mzc3IC0gQ0ktQicsCiMgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAojICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiMgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBhZGRlZAojICAgICAkU2VsZi0+VHJ1ZSgKIyAgICAgICAgICRWZXJzaW9uSUQsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBWZXJzaW9uQWRkKCkgZm9yIENJICRDSTIgLSBTZXQgdG8gJ0luY2lkZW50JyIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMgojICAgICAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTIsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMiBpcyAnSW5jaWRlbnQnCiMgICAgICRTZWxmLT5JcygKIyAgICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKIyAgICAgICAgICdJbmNpZGVudCcsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBDdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIENJICRDSTIiLAojICAgICApOwoKIyAgICAgIyB1cGRhdGUgaW5jaWRlbnQgc3RhdGUgb2YgQ0kxIHRvICdPcGVyYXRpb25hbCcKIyAgICAgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiMgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUEnLAojICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKIyAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAojICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIHZlcnNpb24gY291bGQgYmUgYWRkZWQKIyAgICAgJFNlbGYtPlRydWUoCiMgICAgICAgICAkVmVyc2lvbklELAojICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogVmVyc2lvbkFkZCgpIGZvciBDSSAkQ0kxIC0gU2V0IHRvICdPcGVyYXRpb25hbCciLAojICAgICApOwoKIyAgICAgIyBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZvciBDSTEKIyAgICAgJFZlcnNpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKIyAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ0kxLAojICAgICApOwoKIyAgICAgIyBjaGVjayBpZiBpbmNpZGVudCBzdGF0ZSBvZiBDSTEgaXMgJ1dhcm5pbmcnIChiZWNhdXNlIG9mIGxpbmtlZCBDSTIgaW4gc3RhdGUgJ2luY2lkZW50JykKIyAgICAgJFNlbGYtPklzKAojICAgICAgICAgJFZlcnNpb25SZWYtPntDdXJJbmNpU3RhdGV9LAojICAgICAgICAgJ1dhcm5pbmcnLAojICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ3VycmVudCBpbmNpZGVudCBzdGF0ZSBvZiBDSSAkQ0kxIiwKIyAgICAgKTsKCiMgICAgICMgdXBkYXRlIGluY2lkZW50IHN0YXRlIG9mIENJMiB0byAnT3BlcmF0aW9uYWwnCiMgICAgICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKIyAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ0kyLAojICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIEJ1Z2ZpeDQzNzcgLSBDSS1CJywKIyAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiMgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKIyAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAojICAgICApOwoKIyAgICAgIyBjaGVjayBpZiB2ZXJzaW9uIGNvdWxkIGJlIGFkZGVkCiMgICAgICRTZWxmLT5UcnVlKAojICAgICAgICAgJFZlcnNpb25JRCwKIyAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IFZlcnNpb25BZGQoKSBmb3IgQ0kgJENJMiAtIFNldCB0byAnT3BlcmF0aW9uYWwnIiwKIyAgICAgKTsKCiMgICAgICMgZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBmb3IgQ0kxCiMgICAgICRWZXJzaW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiMgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgaW5jaWRlbnQgc3RhdGUgb2YgQ0kxIGlzICdPcGVyYXRpb25hbCcKIyAgICAgJFNlbGYtPklzKAojICAgICAgICAgJFZlcnNpb25SZWYtPntDdXJJbmNpU3RhdGV9LAojICAgICAgICAgJ09wZXJhdGlvbmFsJywKIyAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IEN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgQ0kgJENJMSIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMgojICAgICAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTIsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMiBpcyAnV2FybmluZycKIyAgICAgJFNlbGYtPklzKAojICAgICAgICAgJFZlcnNpb25SZWYtPntDdXJJbmNpU3RhdGV9LAojICAgICAgICAgJ09wZXJhdGlvbmFsJywKIyAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IEN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgQ0kgJENJMiIsCiMgICAgICk7CgojICAgICAjIGluY3JlYXNlIHRoZSB0ZXN0IGNvdW50ZXIKIyAgICAgJFRlc3RDb3VudCsrOwojIH0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0IGZvciBidWdmaXggMTAzNTYKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyB7CgojICAgICBteSAkQ0kxID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiMgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyc1s3Ml0sCiMgICAgICk7CgojICAgICAjIGFkZCBhIHZlcnNpb24sIHNldCBpbmNpZGVudCBzdGF0ZSB0byBpbmNpZGVudAojICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiMgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMSwKIyAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXgxMDM1NicsCiMgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAojICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiMgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBhZGRlZAojICAgICAkU2VsZi0+VHJ1ZSgKIyAgICAgICAgICRWZXJzaW9uSUQsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBWZXJzaW9uQWRkKCkgZm9yICRDSTEgLSBTZXQgdG8gJ0luY2lkZW50JyIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMQojICAgICBteSAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiMgICAgICk7CgojICAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMSBpcyAnSW5jaWRlbnQnCiMgICAgICRTZWxmLT5JcygKIyAgICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKIyAgICAgICAgICdJbmNpZGVudCcsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBDdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIENJICRDSTEiLAojICAgICApOwoKIyAgICAgIyBkZWxldGUgdGhlIGxhc3QgdmVyc2lvbgojICAgICBteSAkVmVyc2lvbkRlbGV0ZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRlbGV0ZSgKIyAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvblJlZi0+e1ZlcnNpb25JRH0sCiMgICAgICAgICBVc2VySUQgICAgPT4gMSwKIyAgICAgKTsKCiMgICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBkZWxldGVkCiMgICAgICRTZWxmLT5UcnVlKAojICAgICAgICAgJFZlcnNpb25EZWxldGVTdWNjZXNzLAojICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogVmVyc2lvbkRlbGV0ZSgpIGZvciAkQ0kxJyIsCiMgICAgICk7CgojICAgICAjIGdldCB0aGUgaGlzdG9yeQojICAgICBteSAkSGlzdG9yeVJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5R2V0KAojICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiMgICAgICk7CgojICAgICBteSAkTGFzdEhpc3RvcnlFbnRyeSA9IHBvcCBAeyRIaXN0b3J5UmVmfTsKCiMgICAgICMgY2hlY2sgaWYgbGFzdCBoaXN0b3J5IGVudHJ5IGhhcyB0aGUgY29ycmVjdCBoaXN0b3J5IHR5cGUKIyAgICAgJFNlbGYtPklzKAojICAgICAgICAgJExhc3RIaXN0b3J5RW50cnktPntIaXN0b3J5VHlwZX0sCiMgICAgICAgICAnVmVyc2lvbkRlbGV0ZScsCiMgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBIaXN0b3J5VHlwZSBvZiBsYXN0IHZlcnNpb24gb2YgQ0kgJENJMSIsCiMgICAgICk7CgojICAgICAjIGluY3JlYXNlIHRoZSB0ZXN0IGNvdW50ZXIKIyAgICAgJFRlc3RDb3VudCsrOwojIH0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBkZWZpbmUgZ2VuZXJhbCBjb25maWcgaXRlbSBzZWFyY2ggdGVzdHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKbXkgQFNlYXJjaFRlc3RzID0gKAoKICAgICMgc2VhcmNoIEFMTCBjb25maWcgaXRlbXMgaW4gdGhlIHR3byB0ZXN0IGNsYXNzZXMKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgUmVzdWx0ICAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgT3JkZXJCeSAgPT4gJ1VwJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBudW1iZXIgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIG51bWJlciBwYXJhbSB3aXRoIHdpbGRjYXJkcwogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE51bWJlciA9PiAnJScgLiAkQ29uZmlnSXRlbU51bWJlcnNbNTBdIC4gJyUnLAogICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbnVtYmVyIHBhcmFtIHdpdGggd2lsZGNhcmRzIGJ1dCB3aXRoIGludmFsaWQgQ29uZmlnSXRlbSBudW1iZXIKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBOdW1iZXIgPT4gJyVkdW1teW5hbWUlJywKICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGRlcGxveW1lbnQgc3RhdGUgcGFyYW0gaW4gY29tYmluYXRpb24gb2YgdGhlIGNsYXNzIGlkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWyAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0gXSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIE9yZGVyQnkgICAgICA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbSBpbiBjb21iaW5hdGlvbiBvZiB0aGUgY2xhc3MgaWQKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0gXSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbSBpbiBjb21iaW5hdGlvbiBvZiB0aGUgY2xhc3MgaWQKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBSZXN1bHQgID0+ICdBUlJBWScsCiAgICAgICAgICAgIE9yZGVyQnkgPT4gJ1VwJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgI3Rlc3QgdGhlIGluY2lkZW50IHN0YXRlIHBhcmFtIGluIGNvbWJpbmF0aW9uIG9mIHRoZSBjbGFzcyBpZAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgSW5jaVN0YXRlSURzID0+IFsgJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSBdLAogICAgICAgICAgICBSZXN1bHQgICAgICAgPT4gJ0FSUkFZJywKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICN0ZXN0IHRoZSBpbmNpZGVudCBzdGF0ZSBwYXJhbSBpbiBjb21iaW5hdGlvbiBvZiB0aGUgY2xhc3MgaWQKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0gXSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIE9yZGVyQnkgICAgICA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0gaW4gY29tYmluYXRpb24gb2YgdGhlIGNsYXNzIGlkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBJbmNpU3RhdGVJRHMgPT4gWwogICAgICAgICAgICAgICAgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFJlc3VsdCAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgT3JkZXJCeSA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDEwMCwKICAgICAgICAgICAgUmVzdWx0ICAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgT3JkZXJCeSAgPT4gJ1VwJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBsaW1pdCBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBMaW1pdCAgICA9PiAzLAogICAgICAgICAgICBSZXN1bHQgICA9PiAnQVJSQVknLAogICAgICAgICAgICBPcmRlckJ5ICA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDIsCiAgICAgICAgICAgIFJlc3VsdCAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIE9yZGVyQnkgID0+ICdVcCcKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbGltaXQgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgTGltaXQgICAgPT4gMSwKICAgICAgICAgICAgUmVzdWx0ICAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgT3JkZXJCeSAgPT4gJ1VwJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBsaW1pdCBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBMaW1pdCAgICA9PiAwLAogICAgICAgICAgICBSZXN1bHQgICA9PiAnQVJSQVknLAogICAgICAgICAgICBPcmRlckJ5ICA9PiAnVXAnCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjc2VhcmNoIEFMTCBjb25maWcgaXRlbXMgaW4gdGhlIHR3byB0ZXN0IGNsYXNzZXMgdXNpbmcgdGhlIHZlcnNpb24gc2VhcmNoCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIG5hbWUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBOYW1lICAgICA9PiAiVW5pdFRlc3QgLSBDbGFzcyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIENvbmZpZ0l0ZW0gNTAgVmVyc2lvbiAxIiwKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjdGVzdCB0aGUgbmFtZSBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MiBWZXJzaW9uIDEiLAogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbmFtZSBwYXJhbSB3aXRoIGFuIHdpbGRjYXJkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ1VuaXRUZXN0IC0gKiAxJywKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIG5hbWUgcGFyYW0gd2l0aCBhbiB3aWxkY2FyZCBhbmQgYSBwcmV2aW91cyB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSAqIDEnLAogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBuYW1lIHBhcmFtIHdpdGggd2lsZGNhcmRzCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSoiLAogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbmFtZSBwYXJhbSB3aXRoIHdpbGRjYXJkcyBidXQgd2l0aCBkZWFjdGl2YXRlZCB3aWxkY2FyZCBmZWF0dXJlCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ2xhc3MgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSoiLAogICAgICAgICAgICBDbGFzc0lEcyAgICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgVXNpbmdXaWxkY2FyZHMgPT4gMCwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gW10sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbGFzdCB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MSBWZXJzaW9uIDEiLAogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gW10sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgUHJldmlvdXNWZXJzaW9uU2VhcmNoIHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENsYXNzICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gQ29uZmlnSXRlbSA1MSBWZXJzaW9uIDEiLAogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBsaW1pdCBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBMaW1pdCAgICA9PiAxMDAsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDMsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDIsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGRlcGxveW1lbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBkZXBsb3ltZW50IHN0YXRlIHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWyAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+IFsgJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBkZXBsb3ltZW50IHN0YXRlIHBhcmFtIHdpdGggYWN0aXZhdGVkIHByZXZpb3VzIHZlcnNpb24gc2VhcmNoCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWwogICAgICAgICAgICAgICAgJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGRlcGxveW1lbnQgc3RhdGUgcGFyYW0gd2l0aCBhY3RpdmF0ZWQgcHJldmlvdXMgdmVyc2lvbiBzZWFyY2gKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyAgICAgICAgICA9PiBbICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbSB3aXRoIGFjdGl2YXRlZCBwcmV2aW91cyB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzICAgICAgICAgID0+IFsgJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0gd2l0aCBhY3RpdmF0ZWQgcHJldmlvdXMgdmVyc2lvbiBzZWFyY2gKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGluY2lkZW50IHN0YXRlIHBhcmFtIHdpdGggYWN0aXZhdGVkIHByZXZpb3VzIHZlcnNpb24gc2VhcmNoCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBJbmNpU3RhdGVJRHMgICAgICAgICAgPT4gWyAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9IF0sCiAgICAgICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBpbmNpZGVudCBzdGF0ZSBwYXJhbSB3aXRoIGFjdGl2YXRlZCBwcmV2aW91cyB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgSW5jaVN0YXRlSURzICAgICAgICAgID0+IFsgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCBDb25maWdJdGVtU2VhcmNoKCkgd2l0aCBUZXh0IHR5cGUgRHluYW1pY0ZpZWxkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4geyBFcXVhbHMgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgZmllbGQgVGVzdDEnIH0sCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUzXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaCgpIHdpdGggVGV4dCB0eXBlIER5bmFtaWNGaWVsZCB1c2luZyBMaWtlCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4geyBMaWtlID0+ICdUZXN0IHZhbHVlIGZvcionIH0sCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUzXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaCgpIHdpdGggVGV4dCB0eXBlIER5bmFtaWNGaWVsZCB1c2luZyBMaWtlIChub3QgZXhpc3RpbmcpCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3QxJFRlc3RJRFN1ZmZpeCIgPT4geyBMaWtlID0+ICdVbmtub3duIGRhdGEqJyB9LAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIFRleHRBcmVhIHR5cGUgRHluYW1pY0ZpZWxkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3Q0JFRlc3RJRFN1ZmZpeCIgPT4geyBFcXVhbHMgPT4gJ1Rlc3QgdmFsdWUgZm9yIHRleHQgYXJlYSBmaWVsZCBUZXN0NCcgfSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBUlJBWScKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTNdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCBDb25maWdJdGVtU2VhcmNoKCkgd2l0aCBUZXh0QXJlYSB0eXBlIER5bmFtaWNGaWVsZCB1c2luZyBsaWtlCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3Q0JFRlc3RJRFN1ZmZpeCIgPT4geyBMaWtlID0+ICdUZXN0IHZhbHVlIGZvciB0ZXh0IGFyZWEqJyB9LAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1M10sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIFRleHRBcmVhIHR5cGUgRHluYW1pY0ZpZWxkIHVzaW5nIGxpa2UgKG5vdCBleGlzdGluZykKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDQkVGVzdElEU3VmZml4IiA9PiB7IExpa2UgPT4gJ1Vua25vd24gZGF0YSonIH0sCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaCgpIHdpdGggRGF0ZSB0eXBlIER5bmFtaWNGaWVsZAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBcQENvbmZpZ0l0ZW1DbGFzc0lEcywKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0MyRUZXN0SURTdWZmaXgiID0+IHsgRXF1YWxzID0+ICcyMDIzLTA5LTAxIDAwOjAwOjAwJyB9LAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIERhdGUgdHlwZSBEeW5hbWljRmllbGQgKG5vdCBtYXRjaGluZykKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDMkVGVzdElEU3VmZml4IiA9PiB7IEVxdWFscyA9PiAnMjAyMy0wOS0xMiAwMDowMDowMCcgfSwKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBUlJBWScKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gW10sCiAgICB9LAoKICAgICMgdGVzdCBDb25maWdJdGVtU2VhcmNoKCkgd2l0aCBEYXRlVGltZSB0eXBlIER5bmFtaWNGaWVsZAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBcQENvbmZpZ0l0ZW1DbGFzc0lEcywKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UZXN0NSRUZXN0SURTdWZmaXgiID0+IHsgRXF1YWxzID0+ICcyMDIzLTAxLTAxIDEyOjAwOjAwJyB9LAogICAgICAgICAgICBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s4MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIERhdGVUaW1lIHR5cGUgRHluYW1pY0ZpZWxkIChub3QgbWF0Y2hpbmcpCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3Q1JFRlc3RJRFN1ZmZpeCIgPT4geyBFcXVhbHMgPT4gJzIwMjMtMDktMDEgMTI6MDA6MDAnIH0sCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaCgpIHdpdGggRGF0ZVRpbWUgdHlwZSBEeW5hbWljRmllbGQgLSBCZXR3ZWVuCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgICAgICAgICAgICAgID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1Rlc3Q1JFRlc3RJRFN1ZmZpeCIgPT4gewogICAgICAgICAgICAgICAgR3JlYXRlclRoYW5FcXVhbHMgPT4gJzIwMjMtMDEtMDEgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgU21hbGxlclRoYW5FcXVhbHMgPT4gJzIwMjMtMDEtMDIgMDA6MDA6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJwogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s4MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2goKSB3aXRoIERhdGVUaW1lIHR5cGUgRHluYW1pY0ZpZWxkIC0gQmV0d2VlbiBub3QgbWF0Y2hpbmcKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGVzdDUkVGVzdElEU3VmZml4IiA9PiB7CiAgICAgICAgICAgICAgICBHcmVhdGVyVGhhbkVxdWFscyA9PiAnMjAyMi0wMS0wMSAwMDowMDowMCcsCiAgICAgICAgICAgICAgICBTbWFsbGVyVGhhbkVxdWFscyA9PiAnMjAyMi0wMS0wMiAwMDowMDowMCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgcnVuIGdlbmVyYWwgY29uZmlnIGl0ZW0gc2VhcmNoIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgJFNlYXJjaFRlc3RDb3VudCBwcm92aWRlcyBncm91cGluZyBvZiB0ZXN0IGNhc2VzCm15ICRTZWFyY2hUZXN0Q291bnQgPSAxOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAU2VhcmNoVGVzdHMpIHsKCiAgICAjIGNoZWNrIFNlYXJjaERhdGEgYXR0cmlidXRlCiAgICBpZiAoICEkVGVzdC0+e1NlYXJjaERhdGF9IHx8IHJlZiAkVGVzdC0+e1NlYXJjaERhdGF9IG5lICdIQVNIJyApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICJTZWFyY2hUZXN0ICRTZWFyY2hUZXN0Q291bnQ6IE5vIFNlYXJjaERhdGEgZm91bmQgZm9yIHRoaXMgdGVzdC4iLAogICAgICAgICk7CgogICAgICAgIG5leHQgVEVTVDsKICAgIH0KCiAgICBpZiAoICEkVGVzdC0+e0Z1bmN0aW9ufSB8fCByZWYgJFRlc3QtPntGdW5jdGlvbn0gbmUgJ0FSUkFZJyB8fCAhQHsgJFRlc3QtPntGdW5jdGlvbn0gfSApIHsKICAgICAgICAkVGVzdC0+e0Z1bmN0aW9ufSA9IFsnQ29uZmlnSXRlbVNlYXJjaCddOwogICAgfQoKICAgIGZvciBteSAkRnVuY3Rpb24gKCBAeyAkVGVzdC0+e0Z1bmN0aW9ufSB9ICkgewoKICAgICAgICAjIHN0YXJ0IHNlYXJjaAogICAgICAgIG15ICRDb25maWdJdGVtTGlzdDsKCiAgICAgICAgaWYgKCAkRnVuY3Rpb24gZXEgJ0NvbmZpZ0l0ZW1TZWFyY2gnICkgewogICAgICAgICAgICAkQ29uZmlnSXRlbUxpc3QgPSBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+JEZ1bmN0aW9uKAogICAgICAgICAgICAgICAgICAgICV7ICRUZXN0LT57U2VhcmNoRGF0YX0gfSwKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgXTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRDb25maWdJdGVtTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT4kRnVuY3Rpb24oCiAgICAgICAgICAgICAgICAleyAkVGVzdC0+e1NlYXJjaERhdGF9IH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHRoZSBjb25maWcgaXRlbSBsaXN0CiAgICAgICAgaWYgKCAkVGVzdC0+e1JlZmVyZW5jZURhdGF9ICkgewoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUxpc3QgJiYgcmVmICRDb25maWdJdGVtTGlzdCBlcSAnQVJSQVknLAogICAgICAgICAgICAgICAgIlNlYXJjaFRlc3QgJFNlYXJjaFRlc3RDb3VudDogJEZ1bmN0aW9uKCkgLSBMaXN0IGlzIGFuIGFycmF5IHJlZmVyZW5jZS4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBURVNUIGlmICEkQ29uZmlnSXRlbUxpc3Q7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1MaXN0LAogICAgICAgICAgICAgICAgIlNlYXJjaFRlc3QgJFNlYXJjaFRlc3RDb3VudDogJEZ1bmN0aW9uKCkgLSBSZXR1cm4gZmFsc2UuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgVEVTVCBpZiAhJENvbmZpZ0l0ZW1MaXN0OwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBudW1iZXIgb2YgZm91bmQgY29uZmlnIGl0ZW1zCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBzY2FsYXIgQHskQ29uZmlnSXRlbUxpc3R9LAogICAgICAgICAgICBzY2FsYXIgQHsgJFRlc3QtPntSZWZlcmVuY2VEYXRhfSB9LAogICAgICAgICAgICAiU2VhcmNoVGVzdCAkU2VhcmNoVGVzdENvdW50OiAkRnVuY3Rpb24oKSAtIGNvcnJlY3QgbnVtYmVyIG9mIGZvdW5kIGNvbmZpZyBpdGVtcyIsCiAgICAgICAgKTsKCiAgICAgICAgbXkgQFJlZmVyZW5jZUxpc3Q7CiAgICAgICAgZm9yIG15ICROdW1iZXIgKCBAeyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9IH0gKSB7CgogICAgICAgICAgICAjIGZpbmQgaWQgb2YgdGhlIGl0ZW0KICAgICAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgU1FMID0+ICJTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtIFdIRVJFICIKICAgICAgICAgICAgICAgICAgICAuICJjb25maWdpdGVtX251bWJlciA9ICckTnVtYmVyJyAiCiAgICAgICAgICAgICAgICAgICAgLiAiT1JERVIgQlkgaWQgREVTQyIsCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRSb3dbMF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQFJlZmVyZW5jZUxpc3QsICRDb25maWdJdGVtSUQ7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGFycmF5cwogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1MaXN0LAogICAgICAgICAgICBcQFJlZmVyZW5jZUxpc3QsCiAgICAgICAgICAgICJTZWFyY2hUZXN0ICRTZWFyY2hUZXN0Q291bnQ6ICRGdW5jdGlvbigpIC0gTGlzdCIsCiAgICAgICAgKTsKICAgIH0KfQpjb250aW51ZSB7CiAgICAkU2VhcmNoVGVzdENvdW50Kys7Cn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0aW5nIGFkZGluZyBvZiBpbnZhbGlkIGRlZmluaXRpb25zCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCnsKICAgICMgZGVmaW5lIHNvbWUgaW52YWxpZCBkZWZpbml0aW9ucwogICAgbXkgQEludmFsaWRDb25maWdJdGVtRGVmaW5pdGlvbnM7CgogICAgIyBEYXRhIHNjdHJ1Y3R1cmUgaGFzaCBlbGVtZW50cyBjb250YWluIG5vIGRhdGEuCiAgICBwdXNoIEBJbnZhbGlkQ29uZmlnSXRlbURlZmluaXRpb25zLCAiIjsKCiAgICAjIERhdGEgd2l0aCBTeW50YXggZXJyb3JzCiAgICBwdXNoIEBJbnZhbGlkQ29uZmlnSXRlbURlZmluaXRpb25zLCAiIFsKICAgIHsKICAgICAgICBQYWdlcyBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnQnLAogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zID0+IDIsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gJzFmciAxZnInCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uID0+ICdTZWN0aW9uMicsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXQogICAgfQogICAgXSI7CgogICAgIyBnZW5lcmF0ZSBhIHJhbmRvbSBuYW1lCiAgICBteSAkQ2xhc3NOYW1lID0gJ1VuaXRUZXN0JyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgogICAgIyBhZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICRDbGFzc0lEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICAgID0+ICRDbGFzc05hbWUsCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgIyBjaGVjayBjbGFzcyBpZAogICAgaWYgKCAhJENsYXNzSUQgKSB7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICJDYW4ndCBhZGQgbmV3IGNvbmZpZyBpdGVtIGNsYXNzLiIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBAVGVzdENvbmZpZ0l0ZW1EZWZpbml0aW9uczsKICAgIGZvciBteSAkUGVybERlZmluaXRpb24gKEBJbnZhbGlkQ29uZmlnSXRlbURlZmluaXRpb25zKSB7CiAgICAgICAgbXkgJFlBTUxEZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgICAgIERhdGEgPT4gZXZhbCAkUGVybERlZmluaXRpb24sICAgICMjIG5vIGNyaXRpYyBxdyhCdWlsdGluRnVuY3Rpb25zOjpQcm9oaWJpdFN0cmluZ3lFdmFsKQogICAgICAgICk7CgogICAgICAgIHB1c2ggQFRlc3RDb25maWdJdGVtRGVmaW5pdGlvbnMsICRZQU1MRGVmaW5pdGlvbjsKICAgIH0KCiAgICBmb3IgbXkgJERlZmluaXRpb24gKEBUZXN0Q29uZmlnSXRlbURlZmluaXRpb25zKSB7CgogICAgICAgICMgYWRkIGEgZGVmaW5pdGlvbiB0byB0aGUgY2xhc3MKICAgICAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGRlZmluaXRpb24gaWQsIG11c3QgYmUgZmFsc2UsIGJlY2F1c2UgYWxsIGRlZmluaXRpb25zIGhhdmUgZXJyb3JzCiAgICAgICAgb2soICEkUmVzdWx0LT57U3VjY2Vzc30sICJBcyBleHBlY3RlZCwgY291bGQgbm90IGFkZCBuZXcgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbi4iICk7CiAgICB9Cn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0aW5nIHN1cHBvcnQgZm9yIGF0dGFjaG1lbnRzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15ICRBdHRhY2htZW50VGVzdENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtSURzWzBdOwoKIyB2ZXJpZnkgdGhhdCBpbml0aWFsbHkgbm8gYXR0YWNobWVudCBleGlzdHMKbXkgQEF0dGFjaG1lbnRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkQXR0YWNobWVudFRlc3RDb25maWdJdGVtSUQsCik7CgokU2VsZi0+SXMoCiAgICBzY2FsYXIgQEF0dGFjaG1lbnRMaXN0LAogICAgMCwKICAgICdObyBhdHRhY2htZW50cyBpbml0aWFsbHknLAopOwoKbXkgQFRlc3RGaWxlTGlzdCA9ICgKICAgIHsKICAgICAgICBGaWxlbmFtZSAgICA9PiAnZmlyc3QgYXR0YWNobWVudCcsCiAgICAgICAgQ29udGVudCAgICAgPT4gJ0ZpcnN0IGF0dGFjaG1lbnQgZnJvbSBJVFNNQ29uZmlnSXRlbS50JywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICB9LAogICAgewogICAgICAgIEZpbGVuYW1lICAgID0+ICdzZWNvbmQgYXR0YWNobWVudCcsCiAgICAgICAgQ29udGVudCAgICAgPT4gJ1NlY29uZCBhdHRhY2htZW50IGZyb20gSVRTTUNvbmZpZ0l0ZW0udCcsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgfSwKKTsKCm15ICRGaWxlQ291bnQ7CmZvciBteSAkVGVzdEZpbGUgKEBUZXN0RmlsZUxpc3QpIHsKCiAgICAkRmlsZUNvdW50Kys7CgogICAgbXkgJEFkZE9rID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50QWRkKAogICAgICAgICV7JFRlc3RGaWxlfSwKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRBZGRPaywKICAgICAgICAiQXR0YWNobWVudCAkRmlsZUNvdW50OiBhdHRhY2htZW50IGFkZGVkIiwKICAgICk7CgogICAgbXkgQEF0dGFjaG1lbnRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5JcygKICAgICAgICBzY2FsYXIgQEF0dGFjaG1lbnRMaXN0LAogICAgICAgICRGaWxlQ291bnQsCiAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogbnVtYmVyIG9mIGF0dGFjaG1lbnRzIGFmdGVyIGFkZGluZyIsCiAgICApOwoKICAgICMgY2hlY2sgd2hldGhlciB0aGUgbGFzdCBhZGRlZCBhdHRhY2htZW50IGlzIGluIHRoZSBsaXN0CiAgICBteSAlQXR0YWNobWVudExvb2t1cCA9IG1hcCB7ICRfID0+IDEgfSBAQXR0YWNobWVudExpc3Q7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQXR0YWNobWVudExvb2t1cHsgJFRlc3RGaWxlLT57RmlsZW5hbWV9IH0sCiAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogZmlsZW5hbWUgZnJvbSBDb25maWdJdGVtQXR0YWNobWVudExpc3QoKSIsCiAgICApOwoKICAgICMgZ2V0IHRoZSBhdHRhY2htZW50CiAgICBteSAkQXR0YWNobWVudCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIEZpbGVuYW1lICAgICA9PiAkVGVzdEZpbGUtPntGaWxlbmFtZX0sCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEF0dGFjaG1lbnQsCiAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogQ29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoKSByZXR1cm5lZCB0cnVlIiwKICAgICk7CgogICAgIyBjaGVjayBhdHRhY2htZW50IGZpbGUgYXR0cmlidXRlcwogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KEZpbGVuYW1lIENvbnRlbnQgQ29udGVudFR5cGUpKSB7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkQXR0YWNobWVudC0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAkVGVzdEZpbGUtPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogJEF0dHJpYnV0ZSBmcm9tIENvbmZpZ0l0ZW1BdHRhY2htZW50R2V0IiwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgZXhpc3RlbmNlIG9mIGF0dGFjaG1lbnQKICAgIG15ICRBdHRhY2htZW50RXhpc3RzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50RXhpc3RzKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQXR0YWNobWVudFRlc3RDb25maWdJdGVtSUQsCiAgICAgICAgRmlsZW5hbWUgICAgID0+ICRUZXN0RmlsZS0+e0ZpbGVuYW1lfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQXR0YWNobWVudEV4aXN0cywKICAgICAgICAiQXR0YWNobWVudCAkRmlsZUNvdW50OiBhdHRhY2htZW50IGV4aXN0cyIsCiAgICApOwoKfQoKIyBub3cgZGVsZXRlIHRoZSBhdHRhY2htZW50cwokRmlsZUNvdW50ID0gMDsKbXkgJE1heFRlc3RGaWxlcyA9IHNjYWxhciBAVGVzdEZpbGVMaXN0Owpmb3IgbXkgJFRlc3RGaWxlIChAVGVzdEZpbGVMaXN0KSB7CgogICAgJEZpbGVDb3VudCsrOwoKICAgIG15ICREZWxldGVPayA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudERlbGV0ZSgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIEZpbGVuYW1lICAgICA9PiAkVGVzdEZpbGUtPntGaWxlbmFtZX0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJERlbGV0ZU9rLAogICAgICAgICJBdHRhY2htZW50ICRGaWxlQ291bnQ6IGF0dGFjaG1lbnQgZGVsZXRlZCIsCiAgICApOwoKICAgIG15IEBBdHRhY2htZW50TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBdHRhY2htZW50VGVzdENvbmZpZ0l0ZW1JRCwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgIHNjYWxhciBAQXR0YWNobWVudExpc3QsCiAgICAgICAgJE1heFRlc3RGaWxlcyAtICRGaWxlQ291bnQsCiAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogbnVtYmVyIG9mIGF0dGFjaG1lbnRzIGFmdGVyIGRlbGV0aW9uIiwKICAgICk7CgogICAgbXkgJEF0dGFjaG1lbnRFeGlzdHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRFeGlzdHMoCiAgICAgICAgRmlsZW5hbWUgICAgID0+ICRUZXN0RmlsZS0+e0ZpbGVuYW1lfSwKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAkQXR0YWNobWVudEV4aXN0cywKICAgICAgICAiQXR0YWNobWVudCAkRmlsZUNvdW50OiBhdHRhY2htZW50IGlzIGdvbmUiLAogICAgKTsKfQoKIyBjaGVjayBjb25maWcgaXRlbSBkZWxldGUKbXkgJERlbGV0ZVRlc3RDb3VudCA9IDE7CmZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewogICAgbXkgJERlbGV0ZU9rID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJERlbGV0ZU9rLAogICAgICAgICJEZWxldGVUZXN0ICREZWxldGVUZXN0Q291bnQgLSBDb25maWdJdGVtRGVsZXRlKCkgKENvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEKSIKICAgICk7CgogICAgIyBkb3VibGUgY2hlY2sgaWYgY29uZmlnIGl0ZW0gaXMgcmVhbGx5IGRlbGV0ZWQKICAgIG15ICRDb25maWdJdGVtRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgIENhY2hlICAgICAgICA9PiAwLAogICAgKTsKICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAkQ29uZmlnSXRlbURhdGEtPntDb25maWdJdGVtSUR9LAogICAgICAgICJEZWxldGVUZXN0ICREZWxldGVUZXN0Q291bnQgLSBkb3VibGUgY2hlY2sgKENvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEKSIsCiAgICApOwoKICAgICREZWxldGVUZXN0Q291bnQrKzsKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem/CIAutoLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IGF1dG8gaW5rcwojIGJldHdlZW4gQ0kgaXRlbXMgYW5kIFRpY2tldHMKIyBleGFtcGxlIGlzCiMgIFN1YnNpZGlhcnkgLT4gVGlja2V0UmVmCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGJvaWxlcnBsYXRlCgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7CgpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7CgpteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbgopOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQ7CgojIGFzc3VyZSBzdGQgY2xhc3NlcyBoYXZlIGJlZW4gaW1wb3J0ZWQKX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcygpOwoKIyBnbG9iYWwgT00gb2JqZWN0cwpteSAkREJPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJExpbmtPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7Cm15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgojIGNhdGNoIHN0YXRlIGJlZm9yZSB0ZXN0IHJ1bgpteSAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7Cm15ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwpteSAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCAgID0gX0ZldGNoTGlua1JlbGF0aW9uc0NvdW50KCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJlcGFyZSBlbnZpcm9ubWVudAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBzdGF0ZSBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBzdWJzaWRpYXJ5IGNsYXNzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRTdWJzaWRpYXJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdTdWJzaWRpYXJ5JywKKTsKb2soICRTdWJzaWRpYXJ5Q2xhc3NJRCwgIlN1YnNpZGlhcnkgY2xhc3MgZm91bmQuIiApOwoKIyBwb3NzaWJsZSBsaW5rIHR5cGVzIGNvbmZpZ3VyZWQKbXkgJVBvc3NpYmxlVHlwZXNMaXN0ID0gJExpbmtPYmplY3QtPlBvc3NpYmxlVHlwZXNMaXN0KAogICAgT2JqZWN0MSA9PiAnVGlja2V0JywKICAgIE9iamVjdDIgPT4gJ0lUU01Db25maWdJdGVtJywKKTsKCm15IEBMaW5rVHlwZXMgPSBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBpdGVyYXRlIG92ZXIgYXZhaWwgTGlua1R5cGVzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICBzdWJ0ZXN0ICJUZXN0aW5nIExpbmtUeXBlPSRMaW5rVHlwZSIgPT4gc3ViIHsKCiAgICAgICAgbXkgJFR5cGVJRCA9ICRMaW5rT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICBOYW1lICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICApOwoKICAgICAgICBteSAlVHlwZURhdGEgPSAkTGlua09iamVjdC0+VHlwZUdldCgKICAgICAgICAgICAgVHlwZUlEID0+ICRUeXBlSUQsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJElzUG9pbnRlZCA9ICRUeXBlRGF0YXtQb2ludGVkfTsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9IF9DcmVhdGVERlJlZmVyZW5jZVRvVGlja2V0KCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKTsKICAgICAgICBvayggJER5bmFtaWNGaWVsZENvbmZpZywgIlJlZmVyZW5jZVRvVGlja2V0IERGICRMaW5rVHlwZSBjcmVhdGVkLiIgKTsKCiAgICAgICAgb2soCiAgICAgICAgICAgIF9DaGFuZ2VTdWJzaWRpYXJ5RGVmaW5pdGlvbkFkZFRpY2tldFJlZkRGKCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKSwKICAgICAgICAgICAgJ1VwZGF0ZWQgU3Vic2lkaWFyeSBEZWZpbml0aW9uIHRvIGluY2x1ZGUgUmVmZXJlbmNlVG9UaWNrZXQgREYgc3VjY2Vzc2Z1bGx5LicKICAgICAgICApOwogICAgICAgIF9TeW5jQ29uZmlnSXRlbURGcyggTGlua1R5cGUgPT4gJExpbmtUeXBlICk7CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGNyZWF0ZSB0ZXN0IGNvbmZpZyBpdGVtcwogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKCiAgICAgICAgbXkgJFRlc3RUaWNrZXQxSUQgPSBfQ3JlYXRlVGVzdFRpY2tldCgKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgID0+ICJUZXN0VGlja2V0MV8kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBhIHRlc3Qgc3Vic2lkaWFyeSB3aXRoIGEgREYgcmVmZXJlbmNlIHRvIFRpY2tldAogICAgICAgIG15ICRUZXN0U3Vic2lkaWFyeUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0RlckJhdWVybmhvZicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBQkNEJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UaWNrZXRSZWYiIC4gJExpbmtUeXBlIC4gIiRSYW5kb21JRCIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RUaWNrZXQxSUQKICAgICAgICAgICAgXSwKICAgICAgICApOwoKICAgICAgICBzdWJ0ZXN0ICJTaW5nbGUgTGluayBoYXMgYmVlbiBjcmVhdGVkIGZvciBMaW5rVHlwZT0kTGlua1R5cGUiID0+IHN1YiB7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgIlRlc3RTdWJzaWRpYXJ5ICdEZXJCYXVlcm5ob2YkTGlua1R5cGUkUmFuZG9tSUQnICgkVGVzdFN1YnNpZGlhcnlJRCkgd2l0aCBsaW5rIHRvIFRpY2tldCAkVGVzdFRpY2tldDFJRCBjcmVhdGVkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICBfQXNzZXJ0SGFzTGlua09iamVjdExpbmtzKAogICAgICAgICAgICAgICAgICAgIFN1YnNpZGlhcnlJRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgICAgIExpbmtzICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICRJc1BvaW50ZWQKICAgICAgICAgICAgICAgICAgICAgICAgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBUYXJnZXQgPT4gJFRlc3RUaWNrZXQxSUQgXQogICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFNvdXJjZSA9PiAkVGVzdFRpY2tldDFJRCBdLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiSGFzIE9uZSBMaW5rIFNvdXJjZSA9PiBUaWNrZXRJRDokVGVzdFRpY2tldDFJRC4iCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgc3VidGVzdCAiQ2hhbmdlIGxpbmsgZGlyZWN0aW9uIGRvZXMgbm90IGNoYW5nZSBleGlzdGluZyBsaW5rcyIgPT4gc3ViIHsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSBfVXBkYXRlUmVmZXJlbmNlVG9UaWNrZXRERkxpbmtEaXJlY3Rpb24oCiAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNUYXJnZXQnCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgU3Vic2lkaWFyeUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICAgICAgTGlua3MgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJElzUG9pbnRlZAogICAgICAgICAgICAgICAgICAgICAgICA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFRhcmdldCA9PiAkVGVzdFRpY2tldDFJRCBdCiAgICAgICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MUlEIF0sCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJIYXMgT25lIExpbmsgU291cmNlID0+IFRpY2tldElEOiRUZXN0VGlja2V0MUlELiIKICAgICAgICAgICAgKTsKICAgICAgICB9OwoKICAgICAgICBteSAkVGVzdFRpY2tldDJJRDsKICAgICAgICBzdWJ0ZXN0ICJBZGQgYW5vdGhlciBsaW5rIiA9PiBzdWIgewoKICAgICAgICAgICAgJFRlc3RUaWNrZXQySUQgPSBfQ3JlYXRlVGVzdFRpY2tldCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICA9PiAiVGVzdFRpY2tldDJfJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfVGlja2V0UmVmIiAuICRMaW5rVHlwZSAuICIkUmFuZG9tSUQiID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJFRlc3RUaWNrZXQySUQKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJVcGRhdGVkIENvbmZpZ0l0ZW0gdG8gcG9pbnQgdG8gVGVzdFRpY2t0IDIiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgU3Vic2lkaWFyeUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICAgICAgTGlua3MgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJElzUG9pbnRlZAogICAgICAgICAgICAgICAgICAgICAgICA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFRhcmdldCA9PiAkVGVzdFRpY2tldDFJRCBdCiAgICAgICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MUlEIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MklEIF0sCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJIYXMgVHdvIExpbmtzICgkVGVzdFRpY2tldDFJRCwgJFRlc3RUaWNrZXQySUQpLiIKICAgICAgICAgICAgKTsKICAgICAgICB9OwoKICAgICAgICAjIGFkZCBsaW5rcyB0d2ljZQogICAgICAgICMgc3dpdGNoIGJhY2sgdG8gZmlyc3QgbGlua2VkIG9iamVjdCwKICAgICAgICAjIGFuZCBhZ2FpbiB0byBzZWNvbmQgb25lLiBubyBuZXcKICAgICAgICAjIGxpbmtzIGV4cGVjdGVkIHRvIGJlIGNyZWF0ZWQKCiAgICAgICAgc3VidGVzdCAiQWRkIGxpbmtzIHR3aWNlIC0gbm8gZHVwbGljYXRpb24gb2YgZXhpc3RpbmcgbGlua3MiID0+IHN1YiB7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9UaWNrZXRSZWYiIC4gJExpbmtUeXBlIC4gIiRSYW5kb21JRCIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAkVGVzdFRpY2tldDFJRAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlVwZGF0ZWQgQ29uZmlnSXRlbSB0byBwb2ludCB0byBUZXN0VGlja2V0IDEiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgU3Vic2lkaWFyeUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICAgICAgTGlua3MgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJElzUG9pbnRlZAogICAgICAgICAgICAgICAgICAgICAgICA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFRhcmdldCA9PiAkVGVzdFRpY2tldDFJRCBdCiAgICAgICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MUlEIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsgU291cmNlID0+ICRUZXN0VGlja2V0MklEIF0sCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJIYXMgVHdvIExpbmtzICgkVGVzdFRpY2tldDFJRCwgJFRlc3RUaWNrZXQySUQpLiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1RpY2tldFJlZiIgLiAkTGlua1R5cGUgLiAiJFJhbmRvbUlEIiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICRUZXN0VGlja2V0MklECiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVXBkYXRlZCBDb25maWdJdGVtIHRvIHBvaW50IHRvIFRlc3RUaWNrZXQgMSIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgX0Fzc2VydEhhc0xpbmtPYmplY3RMaW5rcygKICAgICAgICAgICAgICAgICAgICBTdWJzaWRpYXJ5SUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICAgICAgTGlua1R5cGUgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICAgICBMaW5rcyAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAkSXNQb2ludGVkCiAgICAgICAgICAgICAgICAgICAgICAgID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgVGFyZ2V0ID0+ICRUZXN0VGlja2V0MUlEIF0KICAgICAgICAgICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBTb3VyY2UgPT4gJFRlc3RUaWNrZXQxSUQgXSwKICAgICAgICAgICAgICAgICAgICAgICAgWyBTb3VyY2UgPT4gJFRlc3RUaWNrZXQySUQgXSwKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIkhhcyBUd28gTGlua3MgKCRUZXN0VGlja2V0MUlELCAkVGVzdFRpY2tldDJJRCkuIgogICAgICAgICAgICApOwoKICAgICAgICB9OwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBjbGVhbnVwCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAgICAgIyBjbGVhbnVwCiAgICAgICAgb2soCiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIlRlc3RTdWJzaWRpYXJ5IGRlbGV0ZWQiCiAgICAgICAgKTsKCiAgICAgICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcyBhbmQgbGlua19yZWxhdGlvbnMKICAgICAgICBteSAkRmluYWxDb25maWdJdGVtc0NvdW50ICAgICA9IF9GZXRjaENvbmZpZ0l0ZW1Db3VudCgpOwogICAgICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKICAgICAgICBteSAkRmluYWxMaW5rUmVsYXRpb25zQ291bnQgICA9IF9GZXRjaExpbmtSZWxhdGlvbnNDb3VudCgpOwoKICAgICAgICBpcygKICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAkRmluYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAiTm8gQ0kgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICAgICApOwoKICAgICAgICBpcygKICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAgICAgJEZpbmFsQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgICAgICJObyBDSSBsaW5rcyBoYXZlIGJlZW4gbGVha2VkIgogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgJEZpbmFsTGlua1JlbGF0aW9uc0NvdW50LAogICAgICAgICAgICAiTm8gTGlua09iamVjdHMgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICAgICApOwogICAgfTsKfQoKZG9uZV90ZXN0aW5nOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2NlZHVyYWwgaGVscGVyIG1ldGhvZHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBQcmVwYXJlIHRoZSBHZW5lcmFsIENhdGFsb2cgY2xhc3NlcyBieSByZWxvYWRpbmcKIyAoYW5kIHVwZGF0aW5nKSB0aGUgd2hvbGUgcmVhZHkybG9hZCBidW5kbGUKCnN1YiBfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzIHsKCiAgICBteSAkSG9tZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpOwoKICAgIG15ICRNYWluT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiAgICBteSAkQ29udGVudCA9ICRNYWluT2JqZWN0LT5GaWxlUmVhZCgKCiAgICAgICAgIyAgICAgICAgTG9jYXRpb24gPT4gIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzL0lULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMi55bWwiLAogICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS9zY3JpcHRzL3Rlc3Qvc2FtcGxlL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC9MaW5rcy91bml0dGVzdC55bWwiLAogICAgICAgIE1vZGUgICAgID0+ICd1dGY4JywKICAgICk7CgogICAgb2soICRDb250ZW50LCAiQ2xhc3NlcyBoYXZlIGJlZW4gbG9hZGVkLiIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkLiIgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtQ291bnQgewogICAgbXkgKCRDb3VudCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENPVU5UKGlkKSBGUk9NIGNvbmZpZ2l0ZW0nLAogICAgKTsKCiAgICByZXR1cm4gJENvdW50IC8vIDA7Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCB7CgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ291bnQoaWQpIEZST00gY29uZmlnaXRlbV9saW5rJywKICAgICk7CgogICAgaWYgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5ICkgewogICAgICAgIHJldHVybiAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAwOwp9CgpzdWIgX0ZldGNoTGlua1JlbGF0aW9uc0NvdW50IHsKCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCAqIEZST00gbGlua19yZWxhdGlvbicsCiAgICApOwoKICAgIG15ICRDb3VudCA9IDA7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgJENvdW50Kys7CiAgICB9CgogICAgcmV0dXJuICRDb3VudDsKfQoKc3ViIF9HZXRWZXJzaW9uSURGcm9tVmVyc2lvblN0cmluZyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJFZlcnNpb25zICAgICAgPSAkUGFyYW17VmVyc2lvbnN9OwogICAgbXkgJFZlcnNpb25TdHJpbmcgPSAkUGFyYW17VmVyc2lvblN0cmluZ307CgogICAgZm9yIG15ICRWZXJzaW9uIChAJFZlcnNpb25zKSB7CgogICAgICAgIGlmICggJFZlcnNpb24tPntWZXJzaW9uU3RyaW5nfSBlcSAkVmVyc2lvblN0cmluZyApIHsKICAgICAgICAgICAgcmV0dXJuICRWZXJzaW9uLT57VmVyc2lvbklEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX0dlbmVyYWxDYXRhbG9nSUQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICRDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtOYW1lfSwKICAgICk7CgogICAgcmV0dXJuICRDYXRhbG9nSXRlbS0+e0l0ZW1JRH07Cn0KCnN1YiBfQ3JlYXRlREZSZWZlcmVuY2VUb1RpY2tldCB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJENvbmZpZ0hhc2hSZWYgPSB7CiAgICAgICAgRGlzcGxheVR5cGUgICAgICAgICAgICAgICAgPT4gJ1RpY2tldE51bWJlclRpdGxlJywKICAgICAgICBFZGl0RmllbGRNb2RlICAgICAgICAgICAgICA9PiAnRHJvcGRvd24nLAogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZSAgICAgID0+ICcnLAogICAgICAgIExpbmtEaXJlY3Rpb24gICAgICAgICAgICAgID0+ICdSZWZlcmVuY2luZ0lzU291cmNlJywKICAgICAgICBMaW5rT2JqZWN0Rm9yUmVmZXJlbmNlVHlwZSA9PiAkUGFyYW17TGlua1R5cGV9LCAgICAgICAgIydSZWxldmFudFRvJywKICAgICAgICBNdWx0aVZhbHVlICAgICAgICAgICAgICAgICA9PiAnMCcsCiAgICAgICAgTXVsdGlzZWxlY3QgICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgICAgICAgICAgICAgICA9PiAnMScsCiAgICAgICAgUXVldWUgICAgICAgICAgICAgICAgICAgICAgPT4gWyAxLCAyLCAzLCA0IF0sCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdCAgICAgICAgPT4gW10sCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGUgICAgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgU2VhcmNoQXR0cmlidXRlICAgICAgICAgICAgPT4gJ1RpdGxlJywKICAgICAgICBUb29sdGlwICAgICAgICAgICAgICAgICAgICA9PiAnJywKICAgIH07CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRJRCAgICAgICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgTmFtZSAgICAgICA9PiAnVGlja2V0UmVmJyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQsCiAgICAgICAgTGFiZWwgICAgICA9PiAnVGlja2V0IFJlZmVyZW5jZScgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlELAogICAgICAgIEZpZWxkT3JkZXIgPT4gNDcxMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1hbmRhdG9yeSwgZGlzcGxheSBvcmRlcgogICAgICAgIEZpZWxkVHlwZSAgPT4gJ1RpY2tldCcsCiAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsCiAgICAgICAgUmVvcmRlciAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMCwgdG8gdHJpZ2dlciByZW9yZGVyIGZ1bmN0aW9uLCBkZWZhdWx0IDEKICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KCBJRCA9PiAkSUQgKTsKICAgIHJldHVybiAkRHluYW1pY0ZpZWxkQ29uZmlnOwp9CgpzdWIgX0NoYW5nZVN1YnNpZGlhcnlEZWZpbml0aW9uQWRkVGlja2V0UmVmREYgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkU3Vic2lkaWFyeUNsYXNzSUQsCiAgICApOwoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfTsKCiAgICAjIGFkZCB0aGUgVGlja2V0UmVmIERGCgogICAgJERlZmluaXRpb25SZWYtPntTZWN0aW9uc30tPntBZGRyZXNzfS0+e0NvbnRlbnR9ID0gWwogICAgICAgIHsKICAgICAgICAgICAgJ0hlYWRlcicgPT4gJ0FkZHJlc3MnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLVN0cmVldCcKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tQ2l0eScKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5JwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnREYnID0+ICdMb2NhdGlvbi1MYXRpdHVkZScKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tTG9uZ2l0dWRlJwogICAgICAgIH0sCgogICAgICAgICMgYWRkIHRoaXMgb25lOgogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnVGlja2V0UmVmJyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQKICAgICAgICB9LAogICAgXTsKCiAgICBteSAkWUFNTE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyk7CiAgICBteSAkWUFNTFN0cmluZyA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgICAgIERhdGEgPT4gJERlZmluaXRpb25SZWYsCiAgICApOwoKICAgIHJldHVybiAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICAgICBDbGFzc0lEICAgID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICAgICBEZWZpbml0aW9uID0+ICRZQU1MU3RyaW5nLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKCiAgICAgICAgIyAgICBGb3JjZSAgICAgID0+IDEsICAgICAgICAjIGhtCiAgICApLT57U3VjY2Vzc307Cn0KCnN1YiBfQ3JlYXRlVGVzdFRpY2tldCB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJFRpY2tldElEID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgICAgIFRpdGxlICAgICAgICA9PiAkUGFyYW17VGl0bGV9LAogICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdjbG9zZWQgc3VjY2Vzc2Z1bCcsCiAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAndW5pdHRlc3RAb3RvYm8ub3JnJywKICAgICAgICBPd25lcklEICAgICAgPT4gJFVzZXJJRCwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgb2soICRUaWNrZXRJRCwgIlRpY2tldCAnJFBhcmFte1RpdGxlfScgKCRUaWNrZXRJRCkgY3JlYXRlZCIgKTsKCiAgICByZXR1cm4gJFRpY2tldElEOwp9CgojIGNhbGwgYXMKIyBfQXNzZXJ0SGFzTGlua09iamVjdExpbmtzKAojICAgU3Vic2lkaWFyeUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAojICAgTGlua1R5cGUgPT4gJExpbmtUeXBlLAojICAgTGlua3MgPT4gWwojICAgICAgIFsgU291cmNlID0+ICRTb21lSUQgXSwKIyAgICAgICBbIFNvdXJjZSA9PiAkU29tZUlEIF0sCiMgICAgICAgWyBUYXJnZXQgPT4gJFNvbWVJRCBdLAojIC4uLi4KIyAgIF0KIyApCgpzdWIgX0Fzc2VydEhhc0xpbmtPYmplY3RMaW5rcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtUeXBlICAgICA9ICRQYXJhbXtMaW5rVHlwZX07CiAgICBteSAkU3Vic2lkaWFyeUlEID0gJFBhcmFte1N1YnNpZGlhcnlJRH07CgogICAgbXkgQExpbmtzICAgICAgICAgICAgID0gJFBhcmFte0xpbmtzfS0+QCo7CiAgICBteSAkRXhwZWN0ZWRMaW5rQ291bnQgPSBzY2FsYXIgQExpbmtzOwoKICAgIG15ICRMaW5rUmVsYXRpb25zQ291bnQgPSBfRmV0Y2hMaW5rUmVsYXRpb25zQ291bnQoKSAtICRJbml0aWFsTGlua1JlbGF0aW9uc0NvdW50OwogICAgaXMoICRMaW5rUmVsYXRpb25zQ291bnQsICRFeHBlY3RlZExpbmtDb3VudCwgIlRoZXJlIGFyZSAgJExpbmtSZWxhdGlvbnNDb3VudCBMaW5rT2JqZWN0LUxpbmtzIG9mIFR5cGUgJExpbmtUeXBlLiIgKTsKCiAgICBteSAkTGlua0xpc3QgPSAkTGlua09iamVjdC0+TGlua0xpc3QoCiAgICAgICAgT2JqZWN0ICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5ICAgICAgID0+ICRTdWJzaWRpYXJ5SUQsCiAgICAgICAgT2JqZWN0MiAgID0+ICdUaWNrZXQnLAogICAgICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgICAgIFR5cGUgICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgRGlyZWN0aW9uID0+ICdCb3RoJywKICAgICAgICBVc2VySUQgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgZm9yIG15ICRMaW5rIChATGlua3MpIHsKCiAgICAgICAgbXkgJExpbmtEZXN0ID0gJExpbmstPlswXTsKICAgICAgICBteSAkTGlua2VkSUQgPSAkTGluay0+WzFdOwogICAgICAgIGlmICggZXhpc3RzICRMaW5rTGlzdC0+eydUaWNrZXQnfS0+eyRMaW5rVHlwZX0tPnskTGlua0Rlc3R9ICkgewoKICAgICAgICAgICAgbXkgJElEcyA9ICRMaW5rTGlzdC0+eydUaWNrZXQnfS0+eyRMaW5rVHlwZX0tPnskTGlua0Rlc3R9OwoKICAgICAgICAgICAgcmV0dXJuIDAgaWYgIWV4aXN0cyAkSURzLT57JExpbmtlZElEfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9VcGRhdGVSZWZlcmVuY2VUb1RpY2tldERGTGlua0RpcmVjdGlvbiB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtUeXBlICAgICAgPSAkUGFyYW17TGlua1R5cGV9OwogICAgbXkgJExpbmtEaXJlY3Rpb24gPSAkUGFyYW17TGlua0RpcmVjdGlvbn0gfHwgJ1JlZmVyZW5jaW5nSXNTb3VyY2UnOwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJ1RpY2tldFJlZicgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlEICk7CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKCiAgICBzdWJ0ZXN0ICJUaWNrZXRSZWYgREYgZGVmaW5pdGlvbiB1cGRhdGVkLCBsaW5rIGRpcmVjdGlvbiBjaGFuZ2VkIHRvICRMaW5rRGlyZWN0aW9uLiIgPT4gc3ViIHsKCiAgICAgICAgb2soICREeW5hbWljRmllbGQsICdUaWNrZXRSZWYgREYgZm91bmQuJyApOwoKICAgICAgICBteSAkQ29uZmlnSGFzaFJlZiA9ICREeW5hbWljRmllbGQtPntDb25maWd9OwoKICAgICAgICAkQ29uZmlnSGFzaFJlZi0+e0xpbmtEaXJlY3Rpb259ID0gJExpbmtEaXJlY3Rpb247CgogICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkVXBkYXRlKAogICAgICAgICAgICBJRCAgICAgICAgID0+ICREeW5hbWljRmllbGQtPntJRH0sICAgICAgIyBtYW5kYXRvcnkKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sICAgICMnTmFtZUZvckZpZWxkJywgICMgbWFuZGF0b3J5CiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJ2EgZGVzY3JpcHRpb24nLCAgICAgICAgICAjIG1hbmRhdG9yeSwgbGFiZWwgdG8gc2hvdwogICAgICAgICAgICBGaWVsZE9yZGVyID0+IDQ3MTEsICAgICAgICAgICAgICAgICAgICAgIyBtYW5kYXRvcnksIGRpc3BsYXkgb3JkZXIKICAgICAgICAgICAgRmllbGRUeXBlICA9PiAnVGlja2V0JywgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBzZWxlY3RzIHRoZSBERiBiYWNrZW5kIHRvIHVzZSBmb3IgdGhpcyBmaWVsZAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICdJVFNNQ29uZmlnSXRlbScsICAgICAgICAgIyB0aGlzIGNvbnRyb2xzIHdoaWNoIG9iamVjdCB0aGUgZHluYW1pYyBmaWVsZCBsaW5rcyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGxvdyBvbmx5IGxvd2VyY2FzZSBsZXR0ZXJzCiAgICAgICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsICAgICAgICAgICAjIGl0IGlzIHN0b3JlZCBvbiBZQU1MIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0byBpbmRpdmlkdWFsIGFydGljbGVzLCBvdGhlcndpc2UgdG8gdGlja2V0cwogICAgICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgICAgIFJlb3JkZXIgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAsIHRvIHRyaWdnZXIgcmVvcmRlciBmdW5jdGlvbiwgZGVmYXVsdCAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDAgaXMgb25seSB1c2VkIGludGVybmFsbHkgdG8gcHJldmVudCByZWR1bmRhbnQgZXhlY3V0aW9uIG9uIG9yZGVyIGNoYW5nZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBubyB1cGRhdGUgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQgZm9yIDAKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgICAgICk7CgogICAgICAgIG9rKCAkU3VjY2VzcywgIlRpY2tldFJlZiBERiBkZWZpbml0aW9uIHVwZGF0ZWQsIGxpbmsgZGlyZWN0aW9uIGNoYW5nZWQgdG8gJExpbmtEaXJlY3Rpb24uIiApOwoKICAgICAgICBfU3luY0NvbmZpZ0l0ZW1ERnMoIExpbmtUeXBlID0+ICRMaW5rVHlwZSApOwoKICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KCBJRCA9PiAkRHluYW1pY0ZpZWxkLT57SUR9ICk7CiAgICB9OwoKICAgIHJldHVybiAkRHluYW1pY0ZpZWxkQ29uZmlnOwp9CgpzdWIgX1N5bmNDb25maWdJdGVtREZzIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkTGlua1R5cGUgPSAkUGFyYW17TGlua1R5cGV9OwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgTmFtZSA9PiAnVGlja2V0UmVmJyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQsCiAgICApOwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uU2V0T3V0T2ZTeW5jKAogICAgICAgIENsYXNzZXMgPT4gewogICAgICAgICAgICAkU3Vic2lkaWFyeUNsYXNzSUQgPT4gWyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SUR9IF0sCiAgICAgICAgfSwKICAgICk7CiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblN5bmMoKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICByZXR1cm47Cn0K</File>
        <File Location="scripts/test/ITSMConfigItem/ConfigItemLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGJvaWxlcnBsYXRlCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKKTsKCm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luCik7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCiMgYXNzdXJlIHN0ZCBjbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZApfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzKCk7CgojIGdsb2JhbCBPTSBvYmplY3RzCm15ICREQk9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpteSAkTGlua09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgY2F0Y2ggc3RhdGUgYmVmb3JlIHRlc3QgcnVuCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCm15ICRJbml0aWFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKbXkgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCA9IF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50KCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJlcGFyZSBlbnZpcm9ubWVudAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBzdGF0ZSBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBjb3VudHJ5IGNsYXNzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRDb3VudHJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdDb3VudHJ5JywKKTsKb2soICRDb3VudHJ5Q2xhc3NJRCwgIkNvdW50cnkgY2xhc3MgZm91bmQiICk7CgojIGFkZCBhIHZlcnNpb24gdHJpZ2dlciB0byBDb3VudHJ5IG9uIE5hbWUgYXR0cmlidXRlCm9rKAogICAgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MoKSwKICAgICdVcGRhdGVkIFZlcnNpb25UcmlnZ2VyJwopOwoKbXkgJVBvc3NpYmxlVHlwZXNMaXN0ID0gJExpbmtPYmplY3QtPlBvc3NpYmxlVHlwZXNMaXN0KAogICAgT2JqZWN0MSA9PiAnVGlja2V0JywKICAgIE9iamVjdDIgPT4gJ0lUU01Db25maWdJdGVtJywKKTsKCm15IEBMaW5rVHlwZXMgPSBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBpdGVyYXRlIG92ZXIgYXZhaWwgTGlua1R5cGVzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAjIGNyZWF0ZSB0ZXN0IGNvbmZpZyBpdGVtcwogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICMgY3JlYXRlIFRlc3RMb2NhdGlvbjEKICAgIG15ICRUZXN0TG9jYXRpb24xSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICBDbGFzc0lEICAgICA9PiAkQ291bnRyeUNsYXNzSUQsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ1dlbGxibGVjaHNIYXVzZW4nIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCwKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQUJDRCcsCiAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRCwKICAgICk7CiAgICBvayggJFRlc3RMb2NhdGlvbjFJRCwgIlRlc3RMb2NhdGlvbjEgY3JlYXRlZCIgKTsKCiAgICAjIGFzc2VydCB0aGVyZSBpcyAxIHZlcnNpb24gd2l0aCBnaXZlbiBuYW1lCiAgICBfQXNzZXJ0TG9jYXRpb25WZXJzaW9uKAogICAgICAgIExvY2F0aW9uID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgXQogICAgKTsKCiAgICAjIGNyZWF0ZSB0ZXN0IHRpY2tldAoKICAgIG15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICBUaXRsZSAgICAgICAgPT4gIlRlc3RUaWNrZXQxXyRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICd1bml0dGVzdEBvdG9iby5vcmcnLAogICAgICAgIE93bmVySUQgICAgICA9PiAkVXNlcklELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBvayggJFRpY2tldElELCAnVGlja2V0IGNyZWF0ZWQnICk7CgogICAgIyBjcmVhdGUgbGluayB0byBUaWNrZXQKICAgIG9rKAogICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgU291cmNlS2V5ICAgID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgVGFyZ2V0S2V5ICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRMaW5rVHlwZSwgICAgICAgICAgIydSZWxldmFudFRvJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgICAgICksCiAgICAgICAgJ0NJIFRlc3RMb2NhdGlvbjEgTGlua2VkIHRvIFRpY2tldCcKICAgICk7CgogICAgIyBpbnNwZWN0IGxpbmsgZGF0YQoKICAgIG15ICRMaW5rTGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgKTsKCiAgICBteSAkU291cmNlID0gJExpbmtMaXN0LT57VGlja2V0fS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9CiAgICAgICAgPwogICAgICAgICRMaW5rTGlzdC0+e1RpY2tldH0tPnskTGlua1R5cGV9LT57U291cmNlfS0+eyRUaWNrZXRJRH0KICAgICAgICA6CiAgICAgICAgJExpbmtMaXN0LT57VGlja2V0fS0+eyRMaW5rVHlwZX0tPntUYXJnZXR9LT57JFRpY2tldElEfTsKCiAgICBvayggJFNvdXJjZSwgJ0ZvdW5kIExpbmsnICk7CgogICAgb2soCiAgICAgICAgJFNvdXJjZS0+e1RpY2tldE51bWJlcn0sCiAgICAgICAgJ0xpbmtlZCBpdGVtIGxvb2tzIGxpa2UgdGlja2V0JwogICAgKTsKCiAgICBpcygKICAgICAgICAkU291cmNlLT57VGl0bGV9LAogICAgICAgICJUZXN0VGlja2V0MV8kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgICdDb25maWdJdGVtIGlzIGxpbmtlZCB0byBjb3JyZWN0IFRpY2tldCcKICAgICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBjbGVhbnVwCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgb2soCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRAogICAgICAgICksCiAgICAgICAgIlRlc3RMb2NhdGlvbjEgZGVsZXRlZCIKICAgICk7CgogICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcwogICAgbXkgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKCiAgICBpcygKICAgICAgICAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAiTm8gQ0kgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICk7CgogICAgaXMoCiAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAkRmluYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAiTm8gQ0kgbGlua3MgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICk7Cn0KCmRvbmVfdGVzdGluZzsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgUHJlcGFyZSB0aGUgR2VuZXJhbCBDYXRhbG9nIGNsYXNzZXMgYnkgcmVsb2FkaW5nCiMgKGFuZCB1cGRhdGluZykgdGhlIHdob2xlIHJlYWR5MmxvYWQgYnVuZGxlCgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCgogICAgICAgICMgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZCIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkIiApOwoKICAgIHJldHVybjsKfQoKc3ViIF9GZXRjaENvbmZpZ0l0ZW1Db3VudCB7CiAgICBteSAoJENvdW50KSA9ICREQk9iamVjdC0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ09VTlQoaWQpIEZST00gY29uZmlnaXRlbScsCiAgICApOwoKICAgIHJldHVybiAkQ291bnQgLy8gMDsKfQoKc3ViIF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50IHsKCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBDb3VudChpZCkgRlJPTSBjb25maWdpdGVtX2xpbmsnLAogICAgKTsKCiAgICBpZiAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgcmV0dXJuICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCnN1YiBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRWZXJzaW9ucyAgICAgID0gJFBhcmFte1ZlcnNpb25zfTsKICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFBhcmFte1ZlcnNpb25TdHJpbmd9OwoKICAgIGZvciBteSAkVmVyc2lvbiAoQCRWZXJzaW9ucykgewoKICAgICAgICBpZiAoICRWZXJzaW9uLT57VmVyc2lvblN0cmluZ30gZXEgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgICAgIHJldHVybiAkVmVyc2lvbi0+e1ZlcnNpb25JRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0lEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICBteSAkQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBOYW1lICA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9Owp9CgpzdWIgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXSwKICAgICk7Cn0KCiMgY2FsbCBsaWtlCiMgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKIyAgIExvY2F0aW9uID0+ICRUZXN0TG9jYXRpb24xSUQsCiMgICAgVmVyc2lvbnMgPT4gWwojICAgICBbIldlbGxibGVjaHNIYXVzZW4kUmFuZG9tSUQiICAgID0+IDEgXSwKIyAgICAgWyJOaWVkZXJrYWx0ZW5raXJjaGVuJFJhbmRvbUlEIiA9PiAyIF0sCiMgXSk7CgpzdWIgX0Fzc2VydExvY2F0aW9uVmVyc2lvbiB7CgogICAgbXkgJVBhcmFtICAgICAgPSBAXzsKICAgIG15ICRMb2NhdGlvbklEID0gJFBhcmFte0xvY2F0aW9ufTsKICAgIG15ICRWZXJzaW9ucyAgID0gJFBhcmFte1ZlcnNpb25zfTsKCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICk7CgogICAgbXkgJFZlcnNpb25Db3VudCA9IEAkVmVyc2lvbnM7CgogICAgaXMoCiAgICAgICAgc2NhbGFyIEAkVmVyc2lvbkxpc3RSZWYsCiAgICAgICAgJFZlcnNpb25Db3VudCwKICAgICAgICAiQ291bnQgb2YgVmVyc2lvbnMgaXMgJFZlcnNpb25Db3VudCBmb3IgTG9jYXRpb24gSUQgJExvY2F0aW9uSUQiCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkVGVzdExvY2F0aW9uQ0lWZXJzaW9uZWQtPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICIkTmFtZSBpcyBjb3JyZWN0IgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9Cg==</File>
        <File Location="scripts/test/ITSMConfigItem/Definition/DefinitionAdd.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7Cm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKCBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4gKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgJENsYXNzSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUFkZCgKICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgICAgPT4gJFJhbmRvbUlELAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAkVXNlcklELAopOwpvayggJENsYXNzSUQsICJDbGFzcyBhZGRlZCB0byBHZW5lcmFsQ2F0YWxvZyIgKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgID0+ICdFbXB0eScsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnTWlzc2luZyBDbGFzc3NJRCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiA8PCdFT0YnLAotLS0KLSBQYWdlczoKICAtIENvbnRlbnQ6CiAgICAtIENvbHVtblN0YXJ0OiAxCiAgICAgIFJvd1N0YXJ0OiAxCiAgICAgIFNlY3Rpb246IFNlY3Rpb24xCiAgICAtIENvbHVtblN0YXJ0OiAyCiAgICAgIFJvd1N0YXJ0OiAxCiAgICAgIFNlY3Rpb246IFNlY3Rpb24yCiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyCiAgICAgIENvbHVtbnM6IDIKICAgIE5hbWU6IENvbnRlbnQKRU9GCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ01pc3NpbmcgRGVmaW5pdGlvbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ01pc3NpbmcgVXNlcklEJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsCi0tLQotIFBhZ2VzOgogIC0gQ29udGVudDoKICAgIC0gQ29sdW1uU3RhcnQ6IDEKICAgICAgUm93U3RhcnQ6IDEKICAgICAgU2VjdGlvbjogU2VjdGlvbjEKICAgIC0gQ29sdW1uU3RhcnQ6IDIKICAgICAgUm93U3RhcnQ6IDEKICAgICAgU2VjdGlvbjogU2VjdGlvbjIKICAgIExheW91dDoKICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIKICAgICAgQ29sdW1uczogMgogICAgTmFtZTogQ29udGVudApFT0YKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdXcm9uZyBEZWZpbml0aW9uIChMZWdhY3kgUGVybCknLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gPDwnRU9GJywKWwp7CiAgICAgICAgUGFnZXMgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudCcsCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMiwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyIDFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uID0+ICdTZWN0aW9uMicsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDIsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXQp9Cl07CkVPRgogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdXcm9uZyBEZWZpbml0aW9uIChJbnZhbGlkIFlBTUwpJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsCi0tLQotIFBhZ2VzOgogIC0gQ29udGVudDoKICAgIENvbHVtblN0YXJ0OiAxCiAgICAgIFJvd1N0YXJ0IDEKICAgICAgU2VjdGlvbjogU2VjdGlvbjEKICAgIENvbHVtblN0YXJ0IDIKICAgICAgUm93U3RhcnQ6IDEKICAgICAgU2VjdGlvbjogU2VjdGlvbjIKICAgIExheW91dDoKICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIKICAgICAgQ29sdW1uczogMgogICAgTmFtZTogQ29udGVudApFT0YKICAgICAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQ29ycmVjdCBZQU1MJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsCi0tLQpQYWdlczoKICAtIE5hbWU6IFBhZ2UxCiAgICBJbnRlcmZhY2VzOiBbXQogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogU2VjdGlvbjEKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCiAgLSBOYW1lOiBQYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogU2VjdGlvbjIKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAyCgpTZWN0aW9uczoKICBTZWN0aW9uMToKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIlRoaXMgaXMgc2VjdGlvbiAxIgogIFNlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiVGhpcyBpcyBzZWN0aW9uIDIiCkVPRgogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCgopOwoKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKClRFU1Q6CmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgICRUZXN0LT57Q29uZmlnfS0+JSoKICAgICk7CiAgICBteSAkRGVmaW5pdGlvbklEID0gJFJlc3VsdC0+e0RlZmluaXRpb25JRH07CgogICAgaWYgKCAhJFRlc3QtPntTdWNjZXNzfSApIHsKICAgICAgICBvaygKICAgICAgICAgICAgISREZWZpbml0aW9uSUQsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25BZGQoKSAtIGZhaWx1cmUgZXhwZWN0ZWQiLAogICAgICAgICk7CgogICAgICAgIG5leHQgVEVTVDsKICAgIH0KCiAgICBvaygKICAgICAgICAoICREZWZpbml0aW9uSUQgLy8gMCApID4gMCwKICAgICAgICAiJFRlc3QtPntOYW1lfSBEZWZpbml0aW9uQWRkKCkgLSBEZWZpbml0aW9uSUQiCiAgICApOwoKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem/Definition/DefinitionGet.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7Cm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKCBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4gKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgpteSAkQ2xhc3NJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtQWRkKAogICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgICA9PiAkUmFuZG9tSUQsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRVc2VySUQsCik7Cm9rKCAkQ2xhc3NJRCwgIkNsYXNzIGFkZGVkIHRvIEdlbmVyYWxDYXRhbG9nIiApOwoKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAlRGVmaW5pdGlvblRlbXBsYXRlID0gKAogICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgIENsYXNzICAgICAgPT4gJFJhbmRvbUlELAogICAgQ3JlYXRlQnkgICA9PiAkVXNlcklELAogICAgVmVyc2lvbiAgICA9PiAxLAogICAgRGVmaW5pdGlvbiA9PiA8PCdFTkRfWUFNTCcsCi0tLQpQYWdlczoKICAtIE5hbWU6IFBhZ2UxCiAgICBJbnRlcmZhY2VzOiBbXQogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogU2VjdGlvbjEKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCiAgLSBOYW1lOiBQYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogU2VjdGlvbjIKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAyCgpTZWN0aW9uczoKICBTZWN0aW9uMToKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIlRoaXMgaXMgc2VjdGlvbiAxIgogIFNlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiVGhpcyBpcyBzZWN0aW9uIDIiCkVORF9ZQU1MCik7CgpteSAkRGVmaW5pdGlvblJlZiA9IHsKICAgIFBhZ2VzID0+IFsKICAgICAgICB7CiAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAiU2VjdGlvbjEiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEludGVyZmFjZXMgPT4gW10sCiAgICAgICAgICAgIExheW91dCAgICAgPT4gewogICAgICAgICAgICAgICAgQ29sdW1ucyAgICAgPT4gMywKICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICIxZnIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE5hbWUgPT4gIlBhZ2UxIiwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAyLAogICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICJTZWN0aW9uMiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgIENvbHVtbnMgICAgID0+IDMsCiAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAiMWZyIgogICAgICAgICAgICB9LAogICAgICAgICAgICBOYW1lID0+ICJQYWdlMiIsCiAgICAgICAgfSwKICAgIF0sCiAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgU2VjdGlvbjEgPT4geyBDb250ZW50ID0+IFsgeyBIZWFkZXIgPT4gIlRoaXMgaXMgc2VjdGlvbiAxIiB9IF0gfSwKICAgICAgICBTZWN0aW9uMiA9PiB7IENvbnRlbnQgPT4gWyB7IEhlYWRlciA9PiAiVGhpcyBpcyBzZWN0aW9uIDIiIH0gXSB9LAogICAgfSwKfTsKCm15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICVEZWZpbml0aW9uVGVtcGxhdGUsCiAgICBVc2VySUQgPT4gJFVzZXJJRCwKKTsKb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkRlZmluaXRpb25BZGQoKSB3YXMgc3VjY2Vzc2Z1bCIgKTsKbXkgJERlZmluaXRpb25JRCA9ICRSZXN1bHQtPntEZWZpbml0aW9uSUR9OwpvayggJERlZmluaXRpb25JRCwgIkRlZmluaXRpb25BZGQoKSIgKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgID0+ICdFbXB0eScsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQnkgRGVmaW5pdGlvbklEJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiB7CiAgICAgICAgICAgICVEZWZpbml0aW9uVGVtcGxhdGUsCiAgICAgICAgICAgIERlZmluaXRpb25SZWYgICA9PiAkRGVmaW5pdGlvblJlZiwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZFJlZiA9PiB7fSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0J5IENsYXNzSUQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gewogICAgICAgICAgICAlRGVmaW5pdGlvblRlbXBsYXRlLAogICAgICAgICAgICBEZWZpbml0aW9uUmVmICAgPT4gJERlZmluaXRpb25SZWYsCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICAgICBEeW5hbWljRmllbGRSZWYgPT4ge30sCiAgICAgICAgfSwKICAgIH0sCik7CgpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgJFRlc3QtPntDb25maWd9LT4lKgogICAgKTsKCiAgICBpZiAoICEkVGVzdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgIG9rKCAhJERlZmluaXRpb24sICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25HZXQoKSAtIGZhaWx1cmUgZXhwZWN0ZWQiICk7CgogICAgICAgIG5leHQgVEVTVDsKICAgIH0KCiAgICBkZWxldGUgJERlZmluaXRpb24tPntDcmVhdGVUaW1lfTsKCiAgICBpcygKICAgICAgICAkRGVmaW5pdGlvbiwKICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmVzdWx0c30sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gRGVmaW5pdGlvbkdldCgpIC0gRGVmaW5pdGlvbiIKICAgICk7Cn0KCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/ITSMConfigItem/Definition/DefinitionList.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7Cm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKCBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4gKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgQENvbmZpZ0l0ZW1ZQU1MRGVmaW5pdGlvbnMgPSA8PCdFTkRfWUFNTCc7Ci0tLQpQYWdlczoKICAtIE5hbWU6IENJXzFfUGFnZTEKICAgIEludGVyZmFjZXM6IFtdCiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbnM6IDMKICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgQ29udGVudDoKICAgICAgLSBTZWN0aW9uOiBDSV8xX1NlY3Rpb24xCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMQogIC0gTmFtZTogQ0lfMV9QYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogQ0lfMV9TZWN0aW9uMgogICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgUm93U3RhcnQ6IDIKClNlY3Rpb25zOgogIENJXzFfU2VjdGlvbjE6CiAgICBDb250ZW50OgogICAgICAgLSBIZWFkZXI6ICJUaGlzIGlzIHNlY3Rpb24gMSIKICBDSV8xX1NlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiVGhpcyBpcyBzZWN0aW9uIDIiCkVORF9ZQU1MCgojIHNlY29uZCBpdGVtIGlzIGEgdmFyaWFudCBvZiB0aGUgZmlyc3QgaXRlbQpwdXNoIEBDb25maWdJdGVtWUFNTERlZmluaXRpb25zLCAoICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzBdID1+IHMvQ0lfMV8vQ0lfMl8vcmcgKTsKCm15ICRDbGFzc0lEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1BZGQoCiAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICAgID0+ICRSYW5kb21JRCwKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gJFVzZXJJRCwKKTsKb2soICRDbGFzc0lELCAiQ2xhc3MgYWRkZWQgdG8gR2VuZXJhbENhdGFsb2ciICk7CgpteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKbXkgJFJlc3VsdDEgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICBDcmVhdGVCeSAgID0+ICRVc2VySUQsCiAgICBEZWZpbml0aW9uID0+ICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzBdCik7Cm9rKCAkUmVzdWx0MS0+e1N1Y2Nlc3N9LCAiRGVmaW5pdGlvbkFkZCgpIDEgc3VjY2Vzc2Z1bCIgKTsKbXkgJERlZmluaXRpb25JRDEgPSAkUmVzdWx0MS0+e0RlZmluaXRpb25JRH07Cm9rKCAkRGVmaW5pdGlvbklEMSwgIkRlZmluaXRpb25BZGQoKSAxIGdvdCBkZWZpbml0aW9uIElEIiApOwoKbXkgJFJlc3VsdDIgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICBDcmVhdGVCeSAgID0+ICRVc2VySUQsCiAgICBEZWZpbml0aW9uID0+ICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzFdCik7Cm9rKCAkUmVzdWx0MS0+e1N1Y2Nlc3N9LCAiRGVmaW5pdGlvbkFkZCgpIDIgc3VjY2Vzc2Z1bCIgKTsKbXkgJERlZmluaXRpb25JRDIgPSAkUmVzdWx0Mi0+e0RlZmluaXRpb25JRH07Cm9rKCAkRGVmaW5pdGlvbklEMSwgIkRlZmluaXRpb25BZGQoKSAyIGdvdCBkZWZpbml0aW9uIElEICIgKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgID0+ICdFbXB0eScsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQnkgQ2xhc3NJRCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbiAgID0+ICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzBdLAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbiAgID0+ICRDb25maWdJdGVtWUFNTERlZmluaXRpb25zWzFdLAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+IDIsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRDIsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCik7CgpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICMgRGVmaW5pdGlvblJlZiBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGxpc3QKICAgIG15ICREZWZpbml0aW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uTGlzdCgKICAgICAgICAkVGVzdC0+e0NvbmZpZ30tPiUqCiAgICApOwoKICAgIGlmICggISRUZXN0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgb2soCiAgICAgICAgICAgICEkRGVmaW5pdGlvbkxpc3QsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25MaXN0KCkgLSBmYWlsdXJlIGV4cGVjdGVkIiwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgZm9yIG15ICREZWZpbml0aW9uICggJERlZmluaXRpb25MaXN0LT5AKiApIHsKICAgICAgICBkZWxldGUgJERlZmluaXRpb24tPntDcmVhdGVUaW1lfTsKICAgIH0KCiAgICBpcygKICAgICAgICAkRGVmaW5pdGlvbkxpc3QsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25MaXN0KCkgLSBEZWZpbml0aW9uIgogICAgKTsKfQoKZG9uZV90ZXN0aW5nOwo=</File>
        <File Location="scripts/test/ITSMConfigItem/Definition/Role.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAopOwpteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCggVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luICk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCm15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiMgYWRkIGR5bmFtaWMgZmllbGRzIGZvciB0ZXN0aW5nCm15ICRGaWVsZE9yZGVyID0gMTsKbXkgJUR5bmFtaWNGaWVsZFNob3J0TmFtZTJJRDsKZm9yIG15ICRTaG9ydE5hbWUgKHF3KERGMSBERjIgREYzIERGNCkpIHsKCiAgICAjIGFkZCBhIG5ldyBpdGVtCiAgICBteSAkREZOYW1lICAgICAgICAgPSBqb2luICctJywgJFNob3J0TmFtZSwgJFJhbmRvbUlEOwogICAgbXkgJER5bmFtaWNGaWVsZElEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBOYW1lICAgICAgICAgID0+ICRERk5hbWUsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAiJERGTmFtZSDimJQiLAogICAgICAgIEZpZWxkT3JkZXIgICAgPT4gJEZpZWxkT3JkZXIrKywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdUZXh0JywKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgQ29uZmlnICAgICAgICA9PiB7CiAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PiAiZGVmYXVsdCB2YWx1ZSBmb3IgJERGTmFtZSDimJQiLAogICAgICAgIH0sCiAgICAgICAgUmVvcmRlciA9PiAxLAogICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwogICAgb2soICREeW5hbWljRmllbGRJRCwgImNyZWF0ZWQgZHluYW1pYyBmaWVsZCAkREZOYW1lIiApOwogICAgJER5bmFtaWNGaWVsZFNob3J0TmFtZTJJRHskU2hvcnROYW1lfSA9ICREeW5hbWljRmllbGRJRDsKfQoKIyBhZGQgUm9sZQp7CiAgICAjIGRlY2xhcmUgdGhlIHJvbGUgaW4gdGhlIGdlbmVyYWwgY2F0YWxvZwogICAgbXkgJFJvbGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OlJvbGUnLAogICAgICAgIE5hbWUgICAgPT4gIlJvbGVfJFJhbmRvbUlEIiwKICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAkVXNlcklELAogICAgKTsKICAgIG9rKCAkUm9sZUlELCAiUm9sZSBhZGRlZCB0byBHZW5lcmFsQ2F0YWxvZyIgKTsKCiAgICBteSAkWUFNTERlZmluaXRpb24gPSA8PCJFTkRfWUFNTCI7Ci0tLQpTZWN0aW9uczoKICBOb0R5bmFtaWNGaWVsZDoKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIk5vIGR5bmFtaWMgZmllbGQiCiAgT25lRHluYW1pY0ZpZWxkOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiTm8gZHluYW1pYyBmaWVsZCIKICAgICAgIC0gREY6IERGMS0kUmFuZG9tSUQKICBUd29EeW5hbWljRmllbGRzOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiTm8gZHluYW1pYyBmaWVsZCIKICAgICAgIC0gREY6IERGMS0kUmFuZG9tSUQKICAgICAgIC0gREY6IERGMi0kUmFuZG9tSUQKICBUaHJlZUR5bmFtaWNGaWVsZHM6CiAgICBDb250ZW50OgogICAgICAgLSBIZWFkZXI6ICJObyBkeW5hbWljIGZpZWxkIgogICAgICAgLSBERjogREYxLSRSYW5kb21JRAogICAgICAgLSBERjogREYyLSRSYW5kb21JRAogICAgICAgLSBERjogREYzLSRSYW5kb21JRAogIE9ubHlERjQ6CiAgICBDb250ZW50OgogICAgICAgLSBIZWFkZXI6ICJvbmx5IHRoZSBkeW5hbWljIGZpZWxkIERGNCwgbm90IHJlZmVyZW5jZWQgaW4gYW55IHBhZ2UiCiAgICAgICAtIERGOiBERjQtJFJhbmRvbUlECkVORF9ZQU1MCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uQWRkKAogICAgICAgIFJvbGVJRCAgICAgPT4gJFJvbGVJRCwKICAgICAgICBEZWZpbml0aW9uID0+ICRZQU1MRGVmaW5pdGlvbiwKICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICApOwogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIlJvbGVfJFJhbmRvbUlEIHN1Y2Nlc3NmdWxseSBhZGRlZCIgKTsKfQoKIyBUT0RPOiByZWZlciB0byBSb2xlIGluIERlZmluaXRpb24KCm15ICRDbGFzc0lEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1BZGQoCiAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICAgID0+ICJDbGFzc18kUmFuZG9tSUQiLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAkVXNlcklELAopOwpvayggJENsYXNzSUQsICJDbGFzcyBhZGRlZCB0byBHZW5lcmFsQ2F0YWxvZyIgKTsKCm15ICVEZWZpbml0aW9uVGVtcGxhdGUgPSAoCiAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgQ2xhc3MgICAgICA9PiAiQ2xhc3NfJFJhbmRvbUlEIiwKICAgIENyZWF0ZUJ5ICAgPT4gJFVzZXJJRCwKICAgIFZlcnNpb24gICAgPT4gMSwKICAgIERlZmluaXRpb24gPT4gPDwiRU5EX1lBTUwiLAotLS0KUGFnZXM6CiAgLSBOYW1lOiBQYWdlMQogICAgSW50ZXJmYWNlczogW10KICAgIExheW91dDoKICAgICAgQ29sdW1uczogMwogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IEVtcHR5U2VjdGlvbjEKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCiAgLSBOYW1lOiBQYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogRW1wdHlTZWN0aW9uMgogICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgUm93U3RhcnQ6IDIKICAtIE5hbWU6IFBhZ2UzCiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbnM6IDMKICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgQ29udGVudDoKICAgICAgLSBTZWN0aW9uOiBUZXN0Um9sZTo6Tm9EeW5hbWljRmllbGQKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAyCiAgICAgIC0gU2VjdGlvbjogVGVzdFJvbGU6Ok9uZUR5bmFtaWNGaWVsZAogICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgUm93U3RhcnQ6IDIKICAgICAgLSBTZWN0aW9uOiBUZXN0Um9sZTo6VGhyZWVEeW5hbWljRmllbGRzCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMgoKU2VjdGlvbnM6CiAgRW1wdHlTZWN0aW9uMToKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIlRoaXMgaXMgdGhlIGVtcHR5IHNlY3Rpb24gMSIKICBFbXB0eVNlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgIC0gSGVhZGVyOiAiVGhpcyBpcyB0aGUgZW1wdHkgc2VjdGlvbiAyIgpSb2xlczoKICBUZXN0Um9sZToKICAgIE5hbWU6ICJSb2xlXyRSYW5kb21JRCIKICAgIFZlcnNpb246IDEKRU5EX1lBTUwKKTsKCm15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICVEZWZpbml0aW9uVGVtcGxhdGUsCiAgICBVc2VySUQgPT4gJFVzZXJJRCwKKTsKb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkRlZmluaXRpb25BZGQoKSB3YXMgc3VjY2Vzc2Z1bCIgKTsKbXkgJERlZmluaXRpb25JRCA9ICRSZXN1bHQtPntEZWZpbml0aW9uSUR9OwpvayggJERlZmluaXRpb25JRCwgIkRlZmluaXRpb25BZGQoKSByZXR1cm5lZCBhIGRlZmluaXRpb24gSUQiICk7CgpteSAkRXhwZWN0ZWREZWZpbml0aW9uUmVmID0gewogICAgUGFnZXMgPT4gWwogICAgICAgIHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICJFbXB0eVNlY3Rpb24xIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW50ZXJmYWNlcyA9PiBbXSwKICAgICAgICAgICAgTGF5b3V0ICAgICA9PiB7CiAgICAgICAgICAgICAgICBDb2x1bW5zICAgICA9PiAzLAogICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gIjFmciIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTmFtZSA9PiAiUGFnZTEiLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ICAgID0+IDIsCiAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiAgICAgPT4gIkVtcHR5U2VjdGlvbjIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgQ29sdW1ucyAgICAgPT4gMywKICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICIxZnIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE5hbWUgPT4gIlBhZ2UyIiwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAyLAogICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICJUZXN0Um9sZTo6Tm9EeW5hbWljRmllbGQiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMiwKICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAiVGVzdFJvbGU6Ok9uZUR5bmFtaWNGaWVsZCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAyLAogICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICJUZXN0Um9sZTo6VGhyZWVEeW5hbWljRmllbGRzIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIExheW91dCA9PiB7CiAgICAgICAgICAgICAgICBDb2x1bW5zICAgICA9PiAzLAogICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gIjFmciIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTmFtZSA9PiAiUGFnZTMiLAogICAgICAgIH0sCiAgICBdLAogICAgUm9sZXMgPT4gewogICAgICAgIFRlc3RSb2xlID0+IHsKICAgICAgICAgICAgTmFtZSAgICA9PiAiUm9sZV8kUmFuZG9tSUQiLAogICAgICAgICAgICBWZXJzaW9uID0+IDEKICAgICAgICB9LAogICAgfSwKICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAiRW1wdHlTZWN0aW9uMSIgICAgICAgICAgICAgPT4geyBDb250ZW50ID0+IFsgeyBIZWFkZXIgPT4gIlRoaXMgaXMgdGhlIGVtcHR5IHNlY3Rpb24gMSIgfSBdIH0sCiAgICAgICAgIkVtcHR5U2VjdGlvbjIiICAgICAgICAgICAgID0+IHsgQ29udGVudCA9PiBbIHsgSGVhZGVyID0+ICJUaGlzIGlzIHRoZSBlbXB0eSBzZWN0aW9uIDIiIH0gXSB9LAogICAgICAgICJUZXN0Um9sZTo6Tm9EeW5hbWljRmllbGQiICA9PiB7IENvbnRlbnQgPT4gWyB7IEhlYWRlciA9PiAiTm8gZHluYW1pYyBmaWVsZCIgfSBdIH0sCiAgICAgICAgIlRlc3RSb2xlOjpPbmVEeW5hbWljRmllbGQiID0+IHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7IEhlYWRlciA9PiAiTm8gZHluYW1pYyBmaWVsZCIgfSwKICAgICAgICAgICAgICAgIHsgREYgICAgID0+ICJERjEtJFJhbmRvbUlEIiB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgIlRlc3RSb2xlOjpPbmx5REY0IiA9PiB7CiAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgeyBIZWFkZXIgPT4gIm9ubHkgdGhlIGR5bmFtaWMgZmllbGQgREY0LCBub3QgcmVmZXJlbmNlZCBpbiBhbnkgcGFnZSIgfSwKICAgICAgICAgICAgICAgIHsgREYgICAgID0+ICJERjQtJFJhbmRvbUlEIiB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgIlRlc3RSb2xlOjpUaHJlZUR5bmFtaWNGaWVsZHMiID0+IHsKICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICB7IEhlYWRlciA9PiAiTm8gZHluYW1pYyBmaWVsZCIgfSwKICAgICAgICAgICAgICAgIHsgREYgICAgID0+ICJERjEtJFJhbmRvbUlEIiB9LAogICAgICAgICAgICAgICAgeyBERiAgICAgPT4gIkRGMi0kUmFuZG9tSUQiIH0sCiAgICAgICAgICAgICAgICB7IERGICAgICA9PiAiREYzLSRSYW5kb21JRCIgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgICJUZXN0Um9sZTo6VHdvRHluYW1pY0ZpZWxkcyIgPT4gewogICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgIHsgSGVhZGVyID0+ICJObyBkeW5hbWljIGZpZWxkIiB9LAogICAgICAgICAgICAgICAgeyBERiAgICAgPT4gIkRGMS0kUmFuZG9tSUQiIH0sCiAgICAgICAgICAgICAgICB7IERGICAgICA9PiAiREYyLSRSYW5kb21JRCIgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKfTsKbXkgJEV4cGVjdGVkRHluYW1pY0ZpZWxkUmVmID0gewogICAgIkRGMS0kUmFuZG9tSUQiID0+IHsKICAgICAgICBDSUNsYXNzID0+ICJDbGFzc18kUmFuZG9tSUQiLAogICAgICAgIENvbmZpZyAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgPT4gImRlZmF1bHQgdmFsdWUgZm9yIERGMS0kUmFuZG9tSUQgXHh7MjYxNH0iLAogICAgICAgIH0sCiAgICAgICAgRmllbGRUeXBlICA9PiAiVGV4dCIsCiAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkU2hvcnROYW1lMklEe0RGMX0sCiAgICAgICAgTGFiZWwgICAgICA9PiAiREYxLSRSYW5kb21JRCBceHsyNjE0fSIsCiAgICAgICAgTmFtZSAgICAgICA9PiAiREYxLSRSYW5kb21JRCIsCiAgICAgICAgT2JqZWN0VHlwZSA9PiAiSVRTTUNvbmZpZ0l0ZW0iLAogICAgfSwKICAgICJERjItJFJhbmRvbUlEIiA9PiB7CiAgICAgICAgQ0lDbGFzcyA9PiAiQ2xhc3NfJFJhbmRvbUlEIiwKICAgICAgICBDb25maWcgID0+IHsKICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+ICJkZWZhdWx0IHZhbHVlIGZvciBERjItJFJhbmRvbUlEIFx4ezI2MTR9IiwKICAgICAgICB9LAogICAgICAgIEZpZWxkVHlwZSAgPT4gIlRleHQiLAogICAgICAgIElEICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFNob3J0TmFtZTJJRHtERjJ9LAogICAgICAgIExhYmVsICAgICAgPT4gIkRGMi0kUmFuZG9tSUQgXHh7MjYxNH0iLAogICAgICAgIE5hbWUgICAgICAgPT4gIkRGMi0kUmFuZG9tSUQiLAogICAgICAgIE9iamVjdFR5cGUgPT4gIklUU01Db25maWdJdGVtIiwKICAgIH0sCiAgICAiREYzLSRSYW5kb21JRCIgPT4gewogICAgICAgIENJQ2xhc3MgPT4gIkNsYXNzXyRSYW5kb21JRCIsCiAgICAgICAgQ29uZmlnICA9PiB7CiAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PiAiZGVmYXVsdCB2YWx1ZSBmb3IgREYzLSRSYW5kb21JRCBceHsyNjE0fSIsCiAgICAgICAgfSwKICAgICAgICBGaWVsZFR5cGUgID0+ICJUZXh0IiwKICAgICAgICBJRCAgICAgICAgID0+ICREeW5hbWljRmllbGRTaG9ydE5hbWUySUR7REYzfSwKICAgICAgICBMYWJlbCAgICAgID0+ICJERjMtJFJhbmRvbUlEIFx4ezI2MTR9IiwKICAgICAgICBOYW1lICAgICAgID0+ICJERjMtJFJhbmRvbUlEIiwKICAgICAgICBPYmplY3RUeXBlID0+ICJJVFNNQ29uZmlnSXRlbSIsCiAgICB9LAogICAgIkRGNC0kUmFuZG9tSUQiID0+IHsKICAgICAgICBDSUNsYXNzID0+ICJDbGFzc18kUmFuZG9tSUQiLAogICAgICAgIENvbmZpZyAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgPT4gImRlZmF1bHQgdmFsdWUgZm9yIERGNC0kUmFuZG9tSUQgXHh7MjYxNH0iLAogICAgICAgIH0sCiAgICAgICAgRmllbGRUeXBlICA9PiAiVGV4dCIsCiAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkU2hvcnROYW1lMklEe0RGNH0sCiAgICAgICAgTGFiZWwgICAgICA9PiAiREY0LSRSYW5kb21JRCBceHsyNjE0fSIsCiAgICAgICAgTmFtZSAgICAgICA9PiAiREY0LSRSYW5kb21JRCIsCiAgICAgICAgT2JqZWN0VHlwZSA9PiAiSVRTTUNvbmZpZ0l0ZW0iLAogICAgfSwKfTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0J5IERlZmluaXRpb25JRCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gewogICAgICAgICAgICAlRGVmaW5pdGlvblRlbXBsYXRlLAogICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgPT4gJERlZmluaXRpb25JRCwKICAgICAgICAgICAgRGVmaW5pdGlvblJlZiAgID0+ICRFeHBlY3RlZERlZmluaXRpb25SZWYsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZFJlZiA9PiAkRXhwZWN0ZWREeW5hbWljRmllbGRSZWYsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdCeSBDbGFzc0lEJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+IHsKICAgICAgICAgICAgJURlZmluaXRpb25UZW1wbGF0ZSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgICAgIERlZmluaXRpb25SZWYgICA9PiAkRXhwZWN0ZWREZWZpbml0aW9uUmVmLAogICAgICAgICAgICBEeW5hbWljRmllbGRSZWYgPT4gJEV4cGVjdGVkRHluYW1pY0ZpZWxkUmVmLAogICAgICAgIH0sCiAgICB9LAopOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICRUZXN0LT57Q29uZmlnfS0+JSoKICAgICk7CgogICAgaWYgKCAhJFRlc3QtPntTdWNjZXNzfSApIHsKICAgICAgICBvayggISREZWZpbml0aW9uLCAiJFRlc3QtPntOYW1lfSBEZWZpbml0aW9uR2V0KCkgLSBmYWlsdXJlIGV4cGVjdGVkIiApOwoKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgZGVsZXRlICREZWZpbml0aW9uLT57Q3JlYXRlVGltZX07CgogICAgaXMoCiAgICAgICAgJERlZmluaXRpb24sCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25HZXQoKSAtIERlZmluaXRpb24iCiAgICApOwp9Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/ITSMConfigItem/StaticLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IHN0YXRpYyB2ZXJzaW9uZWQgbGlua3MKIyBiZXR3ZWVuIENJIGl0ZW1zCiMgZXhhbXBsZSBpcwojICBTdWJzaWRpYXJ5IC0+IHN0YXRpYwojICAgICAgICAgICAgICAgICAodmVyc2lvbmVkKQojICAgICAgICAgICAgICAgICBMb2NhdGlvbgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBib2lsZXJwbGF0ZQoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwoKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAopOwoKbXkgJFVzZXJJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMb29rdXAoCiAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4KKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgJUNvdW50cnlMb29rdXA7Cm15ICVTdWJzaWRpYXJ5TG9va3VwOwoKIyBhc3N1cmUgc3RkIGNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkCl9Mb2FkUmVhZHlUb0ltcG9ydENsYXNzZXMoKTsKCiMgZ2xvYmFsIE9NIG9iamVjdHMKbXkgJERCT2JqZWN0ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwpteSAkQ29uZmlnSXRlbU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7Cm15ICRMaW5rT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwpteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKIyBjYXRjaCBzdGF0ZSBiZWZvcmUgdGVzdCBydW4KbXkgJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICAgICA9IF9GZXRjaENvbmZpZ0l0ZW1Db3VudCgpOwpteSAkSW5pdGlhbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKbXkgJEluaXRpYWxMaW5rUmVsYXRpb25zQ291bnQgICA9IF9GZXRjaExpbmtSZWxhdGlvbnNDb3VudCgpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByZXBhcmUgZW52aXJvbm1lbnQKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBmZXRjaCBjb25maWcgc3RhdGUgaWRzCm15ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgIE5hbWUgID0+ICdPcGVyYXRpb25hbCcsCik7CgpteSAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKCiMgZmV0Y2ggY291bnRyeSBhbmQgc3Vic2lkaWFyeSBjbGFzc2VzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRDb3VudHJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdDb3VudHJ5JywKKTsKb2soICRDb3VudHJ5Q2xhc3NJRCwgIkNvdW50cnkgY2xhc3MgZm91bmQuIiApOwoKbXkgJFN1YnNpZGlhcnlDbGFzc0lEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgPT4gJ1N1YnNpZGlhcnknLAopOwpvayggJFN1YnNpZGlhcnlDbGFzc0lELCAiU3Vic2lkaWFyeSBjbGFzcyBmb3VuZC4iICk7CgojIGFkZCBhIHZlcnNpb24gdHJpZ2dlciB0byBDb3VudHJ5IG9uIE5hbWUgYXR0cmlidXRlCm9rKAogICAgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MoKSwKICAgICJVcGRhdGVkIFZlcnNpb25UcmlnZ2VyIG9uIENvdW50cnkgQ2xhc3MgdG8gJ09uTmFtZUNoYW5nZS4nICIKKTsKCm15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgIE9iamVjdDEgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIE9iamVjdDIgPT4gJ0lUU01Db25maWdJdGVtJywKKTsKCm15IEBMaW5rVHlwZXMgPSBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBpdGVyYXRlIG92ZXIgYXZhaWwgTGlua1R5cGVzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICBzdWJ0ZXN0ICJUZXN0IFN0YXRpYyBERiBSZWZlcmVuY2VzIGZvciBMaW5rVHlwZT0nJExpbmtUeXBlJyIgPT4gc3ViIHsKCiAgICAgICAgIyBjcmVhdGUgREYgc2ltaWxhciB0byBMb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnkKICAgICAgICAjIGJ1dCB3aXRoIExpbmtSZWZlcmVuY2luZ1R5cGUgPT4gU3RhdGljIGFuZAogICAgICAgICMgUmVmZXJlbmNlZE9iamVjdFR5cGUgPT4gSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uCiAgICAgICAgb2soCiAgICAgICAgICAgIF9DcmVhdGVERlN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeSggTGlua1R5cGUgPT4gJExpbmtUeXBlICksCiAgICAgICAgICAgICJERiAnU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyBDcmVhdGVkLiIKICAgICAgICApOwoKICAgICAgICAjIGNoYW5nZSBTdWJzaWRpYXJ5IENsYXNzIERlZiB0byB1c2UgTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5CiAgICAgICAgb2soCiAgICAgICAgICAgIF9DaGFuZ2VTdWJzaWRpYXJ5RGVmaW5pdGlvblRvVXNlU3RhdGljQ291bnRyeSggTGlua1R5cGUgPT4gJExpbmtUeXBlICksCiAgICAgICAgICAgICdVcGRhdGVkIFN1YnNpZGlhcnkgQ2xhc3MgRGVmaW5pdGlvbiB0byB1c2UgU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5IERGLicKICAgICAgICApOwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBjcmVhdGUgdGVzdCBjb25maWcgaXRlbXMKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgICMgY3JlYXRlIFRlc3RMb2NhdGlvbjEKICAgICAgICBteSAkVGVzdExvY2F0aW9uMUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1dlbGxibGVjaHNIYXVzZW4nIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklELAogICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaWRpZW50U3RhdGVPcGVyYXRpb25hbElELAogICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQUJDRCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKTsKICAgICAgICAkQ291bnRyeUxvb2t1cHskVGVzdExvY2F0aW9uMUlEfSA9ICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRDsKICAgICAgICBvayggJFRlc3RMb2NhdGlvbjFJRCwgIlRlc3RMb2NhdGlvbjEgJyIgLiAkQ291bnRyeUxvb2t1cHskVGVzdExvY2F0aW9uMUlEfSAuICInICgkVGVzdExvY2F0aW9uMUlEKSBjcmVhdGVkLiIgKTsKCiAgICAgICAgc3VidGVzdCAiQXNzZXJ0IHRoZXJlIGlzIDEgdmVyc2lvbiBvZiBUZXN0TG9jYXRpb24xIElEICRUZXN0TG9jYXRpb24xSUQiID0+IHN1YiB7CiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyBnZXQgY3VycmVudCBWZXJzaW9uSUQgZm9yIFRlc3RMb2NhdGlvbgogICAgICAgIG15ICRUZXN0TG9jYXRpb25GaXJzdFZlcnNpb25JRCA9IF9HZXRDb25maWdJdGVtQ3VycmVudFZlcnNpb24oCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlECiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgYSB0ZXN0IHN1YnNpZGlhcnkgd2l0aCBhIGxpbmsgdG8gdGVzdGxvY2F0aW9uMSB2MQogICAgICAgIG15ICRUZXN0U3Vic2lkaWFyeUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0RlckJhdWVybmhvZicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBQkNEJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9Mb2NhdGlvbi1TdGF0aWNSZWZlcmVuY2VUb0NvdW50cnkiIC4gJExpbmtUeXBlIC4gIiRSYW5kb21JRCIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RMb2NhdGlvbkZpcnN0VmVyc2lvbklECiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgICAgICAkU3Vic2lkaWFyeUxvb2t1cHskVGVzdFN1YnNpZGlhcnlJRH0gPSAnRGVyQmF1ZXJuaG9mJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRDsKICAgICAgICBvaygKICAgICAgICAgICAgJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICJUZXN0U3Vic2lkaWFyeSIgLiAkU3Vic2lkaWFyeUxvb2t1cHskVGVzdFN1YnNpZGlhcnlJRH0gLiAiICgkVGVzdFN1YnNpZGlhcnlJRCkgd2l0aCBzdGF0aWMgbGluayB0byAiIC4gJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjFJRH0gLiAiIGNyZWF0ZWQuIgogICAgICAgICk7CgogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJBc3NlcnQgU3Vic2lkaWFyeSBoYXMgMSB2ZXJzaW9uIHRoYXQgcG9pbnRzIHRvICciIC4gJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjFJRH0gLiAiJyIgPT4gc3ViIHsKICAgICAgICAgICAgX0Fzc2VydFN1YnNpZGlhcnlWZXJzaW9uc0FuZExvY2F0aW9uKAogICAgICAgICAgICAgICAgTGlua1R5cGUgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICA9PiAnU291cmNlJywKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgICA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIExvY2F0aW9uTmFtZSA9PiAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY2hhbmdlIFRlc3RMb2NhdGlvbiBOYW1lCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICBteSAkQ291bnRyeURlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ291bnRyeUNsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgb2soCiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvdW50cnlEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIlRlc3RMb2NhdGlvbjEgTmFtZSB1cGRhdGVkIHN1Y2Nlc3NmdWxseSB0byBOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlELiIKICAgICAgICApOwogICAgICAgICRDb3VudHJ5TG9va3VweyRUZXN0TG9jYXRpb24xSUR9ID0gIk5pZWRlcmthbHRlbmtpcmNoZW4kTGlua1R5cGUkUmFuZG9tSUQiOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICAjIGFzc2VydCB0aGVyZSBhcmUgbm93IHR3byB2ZXJzaW9ucwoKICAgICAgICBzdWJ0ZXN0ICJBc3NlcnQgdGhlcmUgYXJlIHR3byB2ZXJzaW9ucyBvZiBUZXN0TG9jYXRpb24xICRUZXN0TG9jYXRpb24xSUQgYWZ0ZXIgbmFtZSBjaGFuZ2UiID0+IHN1YiB7CiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiAgICA9PiAxIF0sCiAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMiBdLAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICApOwogICAgICAgIH07CiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgbm93IGxvb2sgYXQgdGhlIFN1YnNpZGlhcnkKICAgICAgICAjIGFnYWluIGFuZCBhc3NlcnQgaXQgKnN0aWxsKgogICAgICAgICMgaGFzIDEgdmVyc2lvbiBhbmQgKnN0aWxsKgogICAgICAgICMgcG9pbnRzIHRvIHN0YXRpYyBMb2NhdGlvbiB2MQogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgc3VidGVzdCAiQXNzZXJ0IFN1YnNpZGlhcnkgKnN0aWxsKiBoYXMgMSB2ZXJzaW9uIGFuZCAqc3RpbGwqIHBvaW50cyB0byAnIiAuICRDb3VudHJ5TG9va3VweyRUZXN0TG9jYXRpb24xSUR9IC4gIiciID0+IHN1YiB7CiAgICAgICAgICAgIF9Bc3NlcnRTdWJzaWRpYXJ5VmVyc2lvbnNBbmRMb2NhdGlvbigKICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1NvdXJjZScsCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBMb2NhdGlvbk5hbWUgPT4gIldlbGxibGVjaHNIYXVzZW4kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMgY3JlYXRlIFRlc3RMb2NhdGlvbjIKICAgICAgICBteSAkVGVzdExvY2F0aW9uMklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1R1bnRlbmhhdXNlbicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICdBQkNEJywKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gJFVzZXJJRCwKICAgICAgICApOwogICAgICAgICRDb3VudHJ5TG9va3VweyRUZXN0TG9jYXRpb24ySUR9ID0gJ1R1bnRlbmhhdXNlbicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQ7CiAgICAgICAgb2soICRUZXN0TG9jYXRpb24ySUQsICJUZXN0TG9jYXRpb24yICciIC4gJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjJJRH0gLiAiJ2NyZWF0ZWQuIiApOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJBc3NlcnQgdGhlcmUgaXMgb25lIHZlcnNpb24gb2YgVGVzdExvY2F0aW9uMiAkVGVzdExvY2F0aW9uMklEIGFmdGVyIGNyZWF0aW9uIiA9PiBzdWIgewoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RMb2NhdGlvbjJJRCwKICAgICAgICAgICAgICAgIFZlcnNpb25zICAgPT4gWwogICAgICAgICAgICAgICAgICAgIFsgIlR1bnRlbmhhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMgY2hhbmdlIExpbmsgRGlyZWN0aW9uIGluIFN0YXRpY1JlZnJlbmNlVG9DT3VudHJ5IERGCiAgICAgICAgX1VwZGF0ZVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeURGTGlua0RpcmVjdGlvbiggTGlua1R5cGUgPT4gJExpbmtUeXBlICk7CgogICAgICAgICMgZ2V0IGN1cnJlbnQgVmVyc2lvbklEIGZvciBUZXN0TG9jYXRpb24KICAgICAgICBteSAkVGVzdExvY2F0aW9uMkZpcnN0VmVyc2lvbklEID0gX0dldENvbmZpZ0l0ZW1DdXJyZW50VmVyc2lvbigKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0TG9jYXRpb24ySUQKICAgICAgICApOwoKICAgICAgICAjIG5vdyB1cGRhdGUgdGhlIHN1YnNpZGlhcnkgbGluayB0byBwb2ludCB0byB0ZXN0bG9jYXRpb24yIGluc3RlYWQKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeSRMaW5rVHlwZSRSYW5kb21JRCIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RMb2NhdGlvbjJGaXJzdFZlcnNpb25JRAogICAgICAgICAgICBdLAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICApOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJBc3NlcnQgU3Vic2lkaWFyeSBoYXMgMSB2ZXJzaW9uIGFuZCBub3cgcG9pbnRzIHRvICciIC4gJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjJJRH0gLiAiJyIgPT4gc3ViIHsKCiAgICAgICAgICAgIF9Bc3NlcnRTdWJzaWRpYXJ5VmVyc2lvbnNBbmRMb2NhdGlvbigKICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1RhcmdldCcsCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBMb2NhdGlvbk5hbWUgPT4gIlR1bnRlbmhhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY2xlYW51cAogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgICAgIHN1YnRlc3QgIkNsZWFudXAgYW5kIGRlbGV0ZSBhbGwgVGVzdCBDb25maWdJdGVtcyIgPT4gc3ViIHsKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGVzdFN1YnNpZGlhcnkgZGVsZXRlZC4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklECiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3RMb2NhdGlvbjEgZGVsZXRlZC4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMklELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklECiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3RMb2NhdGlvbjIgZGVsZXRlZC4iCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgc3VidGVzdCAiYXNzZXJ0IHdlIGRpZG4ndCBsZWFrIGNvbmZpZyBpdGVtcyBhbmQgY29uZmlnIGl0ZW0gbGlua3MiID0+IHN1YiB7CiAgICAgICAgICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7CiAgICAgICAgICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKICAgICAgICAgICAgbXkgJEZpbmFsTGlua1JlbGF0aW9uc0NvdW50ICAgPSBfRmV0Y2hMaW5rUmVsYXRpb25zQ291bnQoKTsKCiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAgICAgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAgICAgICAgICJObyBDSSBoYXZlIGJlZW4gbGVha2VkLiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAgICAgICAgICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50LAogICAgICAgICAgICAgICAgIk5vIENJIGxpbmtzIGhhdmUgYmVlbiBsZWFrZWQuIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgICAgICRGaW5hbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgICAgICJObyBMaW5rT2JqZWN0cyBoYXZlIGJlZW4gbGVha2VkLiIKICAgICAgICAgICAgKTsKICAgICAgICB9OwogICAgfTsKfQoKZG9uZV90ZXN0aW5nOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByb2NlZHVyYWwgaGVscGVyIG1ldGhvZHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBQcmVwYXJlIHRoZSBHZW5lcmFsIENhdGFsb2cgY2xhc3NlcyBieSByZWxvYWRpbmcKIyAoYW5kIHVwZGF0aW5nKSB0aGUgd2hvbGUgcmVhZHkybG9hZCBidW5kbGUKCnN1YiBfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzIHsKCiAgICBteSAkSG9tZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpOwoKICAgIG15ICRNYWluT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKTsKCiAgICBteSAkQ29udGVudCA9ICRNYWluT2JqZWN0LT5GaWxlUmVhZCgKCiAgICAgICAgIyAgICAgICAgTG9jYXRpb24gPT4gIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzL0lULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMi55bWwiLAogICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS9zY3JpcHRzL3Rlc3Qvc2FtcGxlL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC9MaW5rcy91bml0dGVzdC55bWwiLAogICAgICAgIE1vZGUgICAgID0+ICd1dGY4JywKICAgICk7CgogICAgb2soICRDb250ZW50LCAiQ2xhc3NlcyBoYXZlIGJlZW4gbG9hZGVkLiIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkLiIgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtQ291bnQgewogICAgbXkgKCRDb3VudCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENPVU5UKGlkKSBGUk9NIGNvbmZpZ2l0ZW0nLAogICAgKTsKCiAgICByZXR1cm4gJENvdW50IC8vIDA7Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCB7CgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ291bnQoaWQpIEZST00gY29uZmlnaXRlbV9saW5rJywKICAgICk7CgogICAgaWYgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5ICkgewogICAgICAgIHJldHVybiAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAwOwp9CgpzdWIgX0ZldGNoTGlua1JlbGF0aW9uc0NvdW50IHsKCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCAqIEZST00gbGlua19yZWxhdGlvbicsCiAgICApOwoKICAgIG15ICRDb3VudCA9IDA7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgJENvdW50Kys7CiAgICB9CgogICAgcmV0dXJuICRDb3VudDsKfQoKc3ViIF9HZXRWZXJzaW9uSURGcm9tVmVyc2lvblN0cmluZyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJFZlcnNpb25zICAgICAgPSAkUGFyYW17VmVyc2lvbnN9OwogICAgbXkgJFZlcnNpb25TdHJpbmcgPSAkUGFyYW17VmVyc2lvblN0cmluZ307CgogICAgZm9yIG15ICRWZXJzaW9uIChAJFZlcnNpb25zKSB7CgogICAgICAgIGlmICggJFZlcnNpb24tPntWZXJzaW9uU3RyaW5nfSBlcSAkVmVyc2lvblN0cmluZyApIHsKICAgICAgICAgICAgcmV0dXJuICRWZXJzaW9uLT57VmVyc2lvbklEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX0dlbmVyYWxDYXRhbG9nSUQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICRDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtOYW1lfSwKICAgICk7CgogICAgcmV0dXJuICRDYXRhbG9nSXRlbS0+e0l0ZW1JRH07Cn0KCnN1YiBfQ3JlYXRlREZTdGF0aWNSZWZlcmVuY2VUb0NvdW50cnkgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRDb25maWdIYXNoUmVmID0gewogICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbIiRDb3VudHJ5Q2xhc3NJRCJdLAogICAgICAgIERpc3BsYXlUeXBlICAgICAgICAgICA9PiAnQ29uZmlnSXRlbU5hbWUnLAogICAgICAgIEVkaXRGaWVsZE1vZGUgICAgICAgICA9PiAnRHJvcGRvd24nLAogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZSA9PiAnJywKICAgICAgICBMaW5rRGlyZWN0aW9uICAgICAgICAgPT4gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnLAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGUgICA9PiAnU3RhdGljJywKICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgICAgPT4gJFBhcmFte0xpbmtUeXBlfSwKICAgICAgICBNdWx0aVZhbHVlICAgICAgICAgICAgPT4gJzAnLAogICAgICAgIE11bHRpc2VsZWN0ICAgICAgICAgICA9PiAwLAogICAgICAgIFBvc3NpYmxlTm9uZSAgICAgICAgICA9PiAnMScsCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdCAgID0+IFtdLAogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlICA9PiAnSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uJywKICAgICAgICBTZWFyY2hBdHRyaWJ1dGUgICAgICAgPT4gJ05hbWUnLAogICAgICAgIFRvb2x0aXAgICAgICAgICAgICAgICA9PiAnJywKICAgIH07CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIHJldHVybiAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgTmFtZSAgICAgICA9PiAnTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQsCiAgICAgICAgTGFiZWwgICAgICA9PiAnTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQsCiAgICAgICAgRmllbGRPcmRlciA9PiA0NzExLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtYW5kYXRvcnksIGRpc3BsYXkgb3JkZXIKICAgICAgICBOYW1lc3BhY2UgID0+ICdMb2NhdGlvbicsCiAgICAgICAgRmllbGRUeXBlICA9PiAnQ29uZmlnSXRlbVZlcnNpb24nLAogICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBDb25maWcgICAgID0+ICRDb25maWdIYXNoUmVmLAogICAgICAgIFJlb3JkZXIgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMCwgdG8gdHJpZ2dlciByZW9yZGVyIGZ1bmN0aW9uLCBkZWZhdWx0IDEKICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKTsKfQoKc3ViIF9DaGFuZ2VTdWJzaWRpYXJ5RGVmaW5pdGlvblRvVXNlU3RhdGljQ291bnRyeSB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICk7CgogICAgbXkgJERlZmluaXRpb25SZWYgPSAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9OwoKICAgICREZWZpbml0aW9uUmVmLT57U2VjdGlvbnN9LT57QWRkcmVzc30tPntDb250ZW50fSA9IFsKICAgICAgICB7CiAgICAgICAgICAgICdIZWFkZXInID0+ICdBZGRyZXNzJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnREYnID0+ICdMb2NhdGlvbi1TdHJlZXQnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLUNpdHknCiAgICAgICAgfSwKCiAgICAgICAgIyBoZXJlIGl0IGlzLCB0aGUgY2hhbmdlOgogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyAuICRQYXJhbXtMaW5rVHlwZX0gLiAkUmFuZG9tSUQKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tTGF0aXR1ZGUnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLUxvbmdpdHVkZScKICAgICAgICB9CiAgICBdOwoKICAgIG15ICRZQU1MT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKICAgIG15ICRZQU1MU3RyaW5nID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgRGF0YSA9PiAkRGVmaW5pdGlvblJlZiwKICAgICk7CgogICAgcmV0dXJuICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgIENsYXNzSUQgICAgPT4gJFN1YnNpZGlhcnlDbGFzc0lELAogICAgICAgIERlZmluaXRpb24gPT4gJFlBTUxTdHJpbmcsCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKS0+e1N1Y2Nlc3N9Owp9CgpzdWIgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXSwKICAgICk7Cn0KCiMgY2FsbCBsaWtlCiMgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKIyAgICBMb2NhdGlvbklEID0+ICRUZXN0TG9jYXRpb24xSUQsCiMgICAgVmVyc2lvbnMgPT4gWwojICAgICAgIFsiV2VsbGJsZWNoc0hhdXNlbiRSYW5kb21JRCIgICAgPT4gMSBdLAojICAgICAgIFsiTmllZGVya2FsdGVua2lyY2hlbiRSYW5kb21JRCIgPT4gMiBdLAojICAgXQojICk7CgpzdWIgX0Fzc2VydExvY2F0aW9uVmVyc2lvbiB7CgogICAgbXkgJVBhcmFtICAgICAgPSBAXzsKICAgIG15ICRWZXJzaW9ucyAgID0gJFBhcmFte1ZlcnNpb25zfTsKICAgIG15ICRMb2NhdGlvbklEID0gJFBhcmFte0xvY2F0aW9uSUR9OwoKICAgIG15ICRWZXJzaW9uTGlzdFJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uWm9vbUxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRMb2NhdGlvbklELAogICAgKTsKCiAgICBteSAkVmVyc2lvbkNvdW50ID0gQCRWZXJzaW9uczsKCiAgICBpcygKICAgICAgICBzY2FsYXIgQCRWZXJzaW9uTGlzdFJlZiwKICAgICAgICAkVmVyc2lvbkNvdW50LAogICAgICAgICJDb3VudCBvZiBWZXJzaW9ucyBpcyAkVmVyc2lvbkNvdW50IGZvciBDSSAkTG9jYXRpb25JRC4iCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkVGVzdExvY2F0aW9uQ0lWZXJzaW9uZWQtPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICIkTmFtZSBmb3IgdmVyc2lvbiAkXyBpcyBjb3JyZWN0IgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9CgojIGFzc2VydHMgdGhhdCB2ZXJzaW9uIGNvdW50IG9mIFRlc3RMb2NhdGlvbgojIGlzIG9uZSBhbmQgcG9pbnRzIHRvIGZpcnN0IHZlcnNpb24gb2YgQ291bnRyeQoKc3ViIF9Bc3NlcnRTdWJzaWRpYXJ5VmVyc2lvbnNBbmRMb2NhdGlvbiB7CgogICAgbXkgJVBhcmFtICAgICAgICA9IEBfOwogICAgbXkgJExvY2F0aW9uSUQgICA9ICRQYXJhbXtMb2NhdGlvbklEfTsKICAgIG15ICRMb2NhdGlvbk5hbWUgPSAkUGFyYW17TG9jYXRpb25OYW1lfTsKICAgIG15ICRMaW5rVHlwZSAgICAgPSAkUGFyYW17TGlua1R5cGV9OwogICAgbXkgJERpcmVjdGlvbiAgICA9ICRQYXJhbXtEaXJlY3Rpb259IHx8ICdUYXJnZXQnOwoKICAgIG15ICRTdWJzaWRpYXJ5VmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICk7CgogICAgbXkgJFN1YnNpZGlhcnlWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgVmVyc2lvbnMgICAgICA9PiAkU3Vic2lkaWFyeVZlcnNpb25MaXN0UmVmLAogICAgICAgIFZlcnNpb25TdHJpbmcgPT4gJzEnCiAgICApOwoKICAgIGlzKAogICAgICAgIHNjYWxhciBAJFN1YnNpZGlhcnlWZXJzaW9uTGlzdFJlZiwKICAgICAgICAxLAogICAgICAgICJUaGVyZSBpcyBvbmUgVmVyc2lvbiBvZiBUZXN0U3Vic2lkaWFyeSAkTG9jYXRpb25JRCBWZXJzaW9uICRTdWJzaWRpYXJ5VmVyc2lvbklELiIKICAgICk7CgogICAgbXkgJFRlc3RTdWJzaWRpYXJ5Q0lWZXJzaW9uZW5kID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkTG9jYXRpb25JRCwKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRTdWJzaWRpYXJ5VmVyc2lvbklELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgbXkgJExvY2F0aW9uUmVmSUQgPSAkVGVzdFN1YnNpZGlhcnlDSVZlcnNpb25lbmQtPnsgIkR5bmFtaWNGaWVsZF9Mb2NhdGlvbi1TdGF0aWNSZWZlcmVuY2VUb0NvdW50cnkiIC4gJFBhcmFte0xpbmtUeXBlfSAuICIkUmFuZG9tSUQiIH0tPlswXTsKCiAgICAjIG5vdGUgbG9va3VwIGJ5ICpWZXJzaW9uSUQqCiAgICBteSAkU3RhdGljTG9jYXRpb25DSSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJExvY2F0aW9uUmVmSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKICAgIGlzKAogICAgICAgICRTdGF0aWNMb2NhdGlvbkNJLT57TmFtZX0sCiAgICAgICAgJExvY2F0aW9uTmFtZSwKICAgICAgICAibmFtZSAnJExvY2F0aW9uTmFtZScgaXMgY29ycmVjdCBmb3IgQ0kgVmVyc2lvbklEOiAkTG9jYXRpb25SZWZJRC4iCiAgICApOwoKICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKCiAgICAgICAgI0NvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICAgICBWZXJzaW9uSUQgPT4gJFN1YnNpZGlhcnlWZXJzaW9uSUQsCgogICAgICAgICMgVHlwZXMgICAgICAgID0+IFsgJExpbmtUeXBlIF0sICMgb3B0aW9uYWwKICAgICAgICBEaXJlY3Rpb24gPT4gJ0JvdGgnLCAgICAjIG9uZSBvZiBTb3VyY2UsIFRhcmdldCwgQm90aAogICAgICAgIFVzZXJJRCAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBpcyggc2NhbGFyICRMaW5rZWRDb25maWdJdGVtcy0+QCosICAgICAgICAxLCAgICAgICAgICAgICAgJ1RoZXJlIGlzIG9uZSBDSSBsaW5rJyApOwogICAgaXMoICRMaW5rZWRDb25maWdJdGVtcy0+WzBdLT57RGlyZWN0aW9ufSwgJERpcmVjdGlvbiwgICAgICJDSSBMaW5rIERpcmVjdGlvbiBpcyAnJERpcmVjdGlvbicuIiApOwogICAgaXMoICRMaW5rZWRDb25maWdJdGVtcy0+WzBdLT57VmVyc2lvbklEfSwgJExvY2F0aW9uUmVmSUQsICJDSSBMaW5rIHBvaW50cyB0byAqVmVyc2lvbklEKiAkTG9jYXRpb25SZWZJRC4iICk7CgogICAgcmV0dXJuOwp9CgpzdWIgX0dldENvbmZpZ0l0ZW1DdXJyZW50VmVyc2lvbiB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJENJID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICApOwogICAgcmV0dXJuICRDSS0+e1ZlcnNpb25JRH07Cn0KCnN1YiBfVXBkYXRlU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5REZMaW5rRGlyZWN0aW9uIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkTGlua1R5cGUgPSAkUGFyYW17TGlua1R5cGV9OwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJ0xvY2F0aW9uLVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeScgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQgKTsKCiAgICBvayggJER5bmFtaWNGaWVsZCwgJ0dvdCBSZWZyZW5jZVRvQ291bnRyeSBERicgKTsKCiAgICBteSAkQ29uZmlnSGFzaFJlZiA9ICREeW5hbWljRmllbGQtPntDb25maWd9OwoKICAgICRDb25maWdIYXNoUmVmLT57TGlua0RpcmVjdGlvbn0gPSAnUmVmZXJlbmNpbmdJc1RhcmdldCc7CgogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57SUR9LCAgICAgICMgbWFuZGF0b3J5CiAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sICAgICMnTmFtZUZvckZpZWxkJywgICMgbWFuZGF0b3J5CiAgICAgICAgTGFiZWwgICAgICA9PiAnYSBkZXNjcmlwdGlvbicsICAgICAgICAgICMgbWFuZGF0b3J5LCBsYWJlbCB0byBzaG93CiAgICAgICAgRmllbGRPcmRlciA9PiA0NzExLCAgICAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBkaXNwbGF5IG9yZGVyCiAgICAgICAgRmllbGRUeXBlICA9PiAnQ29uZmlnSXRlbVZlcnNpb24nLCAgICAgICMgbWFuZGF0b3J5LCBzZWxlY3RzIHRoZSBERiBiYWNrZW5kIHRvIHVzZSBmb3IgdGhpcyBmaWVsZAogICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywgICAgICAgICAjIHRoaXMgY29udHJvbHMgd2hpY2ggb2JqZWN0IHRoZSBkeW5hbWljIGZpZWxkIGxpbmtzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsb3cgb25seSBsb3dlcmNhc2UgbGV0dGVycwogICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsICAgICAgICAgICAjIGl0IGlzIHN0b3JlZCBvbiBZQU1MIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIGluZGl2aWR1YWwgYXJ0aWNsZXMsIG90aGVyd2lzZSB0byB0aWNrZXRzCiAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgIFJlb3JkZXIgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAsIHRvIHRyaWdnZXIgcmVvcmRlciBmdW5jdGlvbiwgZGVmYXVsdCAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSB0byBwcmV2ZW50IHJlZHVuZGFudCBleGVjdXRpb24gb24gb3JkZXIgY2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gdXBkYXRlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGZvciAwCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBvayggJFN1Y2Nlc3MsICJERiBkZWZpbml0aW9uIHVwZGF0ZWQsIGxpbmsgZGlyZWN0aW9uIGNoYW5nZWQgdG8gJ1JlZmVyZW5jaW5nSXNUYXJnZXQnIC4iICk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgX1N5bmNDb25maWdJdGVtREZzKCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfU3luY0NvbmZpZ0l0ZW1ERnMgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRMaW5rVHlwZSA9ICRQYXJhbXtMaW5rVHlwZX07CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggTmFtZSA9PiAnTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5JyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCApOwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uU2V0T3V0T2ZTeW5jKAogICAgICAgIENsYXNzZXMgPT4gewogICAgICAgICAgICAkU3Vic2lkaWFyeUNsYXNzSUQgPT4gWyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SUR9IF0sCiAgICAgICAgfSwKICAgICk7CiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblN5bmMoKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICByZXR1cm47Cn0K</File>
        <File Location="scripts/test/ITSMConfigItem/TicketAutoLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHRlc3QgYXV0byBpbmtzCiMgYmV0d2VlbiBUaWNrZXQgaXRlbXMgYW5kIENJcwojIGV4YW1wbGUgaXMKIyAgVGlja2V0REYgLT4gQ29uZmlnSXRlbVJlZmVyZW5jZQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGJvaWxlcnBsYXRlCgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7CgpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7CgpteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbgopOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQ7CgojIGFzc3VyZSBzdGQgY2xhc3NlcyBoYXZlIGJlZW4gaW1wb3J0ZWQKX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcygpOwoKIyBnbG9iYWwgT00gb2JqZWN0cwpteSAkREJPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJExpbmtPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7Cm15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRCYWNrZW5kT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgojIGNhdGNoIHN0YXRlIGJlZm9yZSB0ZXN0IHJ1bgpteSAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7Cm15ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwpteSAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCAgID0gX0ZldGNoTGlua1JlbGF0aW9uc0NvdW50KCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJlcGFyZSBlbnZpcm9ubWVudAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBzdGF0ZSBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBzdWJzaWRpYXJ5IGNsYXNzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRTdWJzaWRpYXJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdTdWJzaWRpYXJ5JywKKTsKb2soICRTdWJzaWRpYXJ5Q2xhc3NJRCwgIlN1YnNpZGlhcnkgY2xhc3MgZm91bmQiICk7CgojIHBvc3NpYmxlIGxpbmsgdHlwZXMgY29uZmlndXJlZApteSAlUG9zc2libGVUeXBlc0xpc3QgPSAkTGlua09iamVjdC0+UG9zc2libGVUeXBlc0xpc3QoCiAgICBPYmplY3QxID0+ICdUaWNrZXQnLAogICAgT2JqZWN0MiA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAopOwoKbXkgQExpbmtUeXBlcyA9IGtleXMgJVBvc3NpYmxlVHlwZXNMaXN0OwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIGl0ZXJhdGUgb3ZlciBhdmFpbCBMaW5rVHlwZXMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKbXkgJFRlc3RTdWJzaWRpYXJ5SUQ7Cm15ICRUaWNrZXRJRDsKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICBzdWJ0ZXN0ICJUZXN0aW5nIHdpdGggTGlua1R5cGUgJExpbmtUeXBlIiA9PiBzdWIgewoKICAgICAgICBteSAkVHlwZUlEID0gJExpbmtPYmplY3QtPlR5cGVMb29rdXAoCiAgICAgICAgICAgIE5hbWUgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICk7CgogICAgICAgIG15ICVUeXBlRGF0YSA9ICRMaW5rT2JqZWN0LT5UeXBlR2V0KAogICAgICAgICAgICBUeXBlSUQgPT4gJFR5cGVJRCwKICAgICAgICApOwoKICAgICAgICBteSAkSXNQb2ludGVkID0gJFR5cGVEYXRhe1BvaW50ZWR9OwoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gX0NyZWF0ZURGUmVmZXJlbmNlVG9DSSggTGlua1R5cGUgPT4gJExpbmtUeXBlICk7CiAgICAgICAgb2soICREeW5hbWljRmllbGRDb25maWcsICJERiAkTGlua1R5cGUgQ3JlYXRlZC4iICk7CgogICAgICAgIHN1YnRlc3QgImEpIEF1dG9MaW5rIGdldHMgY3JlYXRlZCIgPT4gc3ViIHsKCiAgICAgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAgICAgIyBjcmVhdGUgdGVzdCBjb25maWcgaXRlbXMKICAgICAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAgICAgIyBjcmVhdGUgYSB0ZXN0IHN1YnNpZGlhcnkKICAgICAgICAgICAgJFRlc3RTdWJzaWRpYXJ5SUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRTdWJzaWRpYXJ5Q2xhc3NJRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdEZXJCYXVlcm5ob2YnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxveW1lbnRTdGF0ZVByb2R1Y3Rpb25JRCwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQUJDRCcsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICJUZXN0U3Vic2lkaWFyeSAkVGVzdFN1YnNpZGlhcnlJRCBjcmVhdGVkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKCiAgICAgICAgICAgICRUaWNrZXRJRCA9IF9DcmVhdGVUZXN0VGlja2V0KAogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgID0+ICJUZXN0VGlja2V0MV8kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICAgICBMaW5rcyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICRJc1BvaW50ZWQKICAgICAgICAgICAgICAgICAgICAgICAgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBUYXJnZXQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQgXQogICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFNvdXJjZSA9PiAkVGVzdFN1YnNpZGlhcnlJRCBdLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGhlcmUgaXMgb25lIExpbmsgb2YgdHlwZSAkTGlua1R5cGUgdG8gQ0kgJFRlc3RTdWJzaWRpYXJ5SUQuIgogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgIHN1YnRlc3QgImIpIGNoYW5nZSBMaW5rIERpcmVjdGlvbiIgPT4gc3ViIHsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSBfVXBkYXRlUmVmZXJlbmNlVG9DSURGTGlua0RpcmVjdGlvbigKICAgICAgICAgICAgICAgIExpbmtUeXBlICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbiA9PiAnUmVmZXJlbmNpbmdJc1RhcmdldCcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIExpbmtUeXBlID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICAgICBMaW5rcyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICRJc1BvaW50ZWQKICAgICAgICAgICAgICAgICAgICAgICAgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBUYXJnZXQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQgXQogICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFNvdXJjZSA9PiAkVGVzdFN1YnNpZGlhcnlJRCBdLAogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGhlcmUgaXMgb25lIExpbmsgb2YgdHlwZSAkTGlua1R5cGUgdG8gQ0kgJFRlc3RTdWJzaWRpYXJ5SUQuIgogICAgICAgICAgICApOwoKICAgICAgICB9OwoKICAgICAgICBzdWJ0ZXN0ICJjKSBuZXcgVGlja2V0IHdpdGggbmV3IExpbmtEaXJlY3Rpb24iID0+IHN1YiB7CgogICAgICAgICAgICAkVGlja2V0SUQgPSBfQ3JlYXRlVGVzdFRpY2tldCgKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICA9PiAiVGVzdFRpY2tldDJfJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgb2soCiAgICAgICAgICAgICAgICBfQXNzZXJ0SGFzTGlua09iamVjdExpbmtzKAogICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICBMaW5rVHlwZSA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICAgICAgTGlua3MgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICBbIFNvdXJjZSA9PiAkVGVzdFN1YnNpZGlhcnlJRCBdCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUaGVyZSBpcyBvbmUgTGluayBvZiB0eXBlICRMaW5rVHlwZSB0byBDSSAkVGVzdFN1YnNpZGlhcnlJRC4iCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY2xlYW51cAogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgc3VidGVzdCAiZCkgQ2xlYW51cCAkTGlua1R5cGUiID0+IHN1YiB7CgogICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAgICAgICAgICMgY2xlYW51cAogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0U3Vic2lkaWFyeSBkZWxldGVkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcyBhbmQgbGlua19yZWxhdGlvbnMKICAgICAgICAgICAgbXkgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKICAgICAgICAgICAgbXkgJEZpbmFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwogICAgICAgICAgICBteSAkRmluYWxMaW5rUmVsYXRpb25zQ291bnQgICA9IF9GZXRjaExpbmtSZWxhdGlvbnNDb3VudCgpOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgICAgICAgICAkRmluYWxDb25maWdJdGVtc0NvdW50LAogICAgICAgICAgICAgICAgIk5vIENJIGhhdmUgYmVlbiBsZWFrZWQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgICAgICAgICAkRmluYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAgICAgICAgICJObyBDSSBsaW5rcyBoYXZlIGJlZW4gbGVha2VkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkSW5pdGlhbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgICAgICRGaW5hbExpbmtSZWxhdGlvbnNDb3VudCwKICAgICAgICAgICAgICAgICJObyBMaW5rT2JqZWN0cyBoYXZlIGJlZW4gbGVha2VkIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH07Cn0KCmRvbmVfdGVzdGluZzsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgUHJlcGFyZSB0aGUgR2VuZXJhbCBDYXRhbG9nIGNsYXNzZXMgYnkgcmVsb2FkaW5nCiMgKGFuZCB1cGRhdGluZykgdGhlIHdob2xlIHJlYWR5MmxvYWQgYnVuZGxlCgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCgogICAgICAgICMgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZC4iICk7CgogICAgJENvbnRlbnQgPSAkeyAkQ29udGVudCB8fCBcJycgfTsKCiAgICAkQ29udGVudCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkQ29udGVudCwKICAgICk7CgogICAgaWYgKCByZWYgJENvbnRlbnQgZXEgJ0hBU0gnICkgewogICAgICAgICRDb250ZW50ID0gWyRDb250ZW50XTsKICAgIH0KCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgaW1wb3J0IHRoZSBjbGFzcyBZQU1MIGZpbGUKICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q2xhc3NJbXBvcnQoCiAgICAgICAgQ29udGVudCAgICAgPT4gJENvbnRlbnQsCiAgICAgICAgQ2xhc3NFeGlzdHMgPT4gJ1VQREFURScsCiAgICApOwoKICAgIG9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICJDbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZC4iICk7CgogICAgcmV0dXJuOwp9CgpzdWIgX0ZldGNoQ29uZmlnSXRlbUNvdW50IHsKICAgIG15ICgkQ291bnQpID0gJERCT2JqZWN0LT5TZWxlY3RSb3dBcnJheSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBDT1VOVChpZCkgRlJPTSBjb25maWdpdGVtJywKICAgICk7CgogICAgcmV0dXJuICRDb3VudCAvLyAwOwp9CgpzdWIgX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQgewoKICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENvdW50KGlkKSBGUk9NIGNvbmZpZ2l0ZW1fbGluaycsCiAgICApOwoKICAgIGlmICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSApIHsKICAgICAgICByZXR1cm4gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQoKc3ViIF9GZXRjaExpbmtSZWxhdGlvbnNDb3VudCB7CgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgKiBGUk9NIGxpbmtfcmVsYXRpb24nLAogICAgKTsKCiAgICBteSAkQ291bnQgPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5ICkgewogICAgICAgICRDb3VudCsrOwogICAgfQoKICAgIHJldHVybiAkQ291bnQ7Cn0KCnN1YiBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRWZXJzaW9ucyAgICAgID0gJFBhcmFte1ZlcnNpb25zfTsKICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFBhcmFte1ZlcnNpb25TdHJpbmd9OwoKICAgIGZvciBteSAkVmVyc2lvbiAoQCRWZXJzaW9ucykgewoKICAgICAgICBpZiAoICRWZXJzaW9uLT57VmVyc2lvblN0cmluZ30gZXEgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgICAgIHJldHVybiAkVmVyc2lvbi0+e1ZlcnNpb25JRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0lEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICBteSAkQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBOYW1lICA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9Owp9CgpzdWIgX0NyZWF0ZURGUmVmZXJlbmNlVG9DSSB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJENvbmZpZ0hhc2hSZWYgPSB7CiAgICAgICAgRGlzcGxheVR5cGUgICAgICAgICAgID0+ICdDb25maWdJdGVtTmFtZScsCiAgICAgICAgRWRpdEZpZWxkTW9kZSAgICAgICAgID0+ICdEcm9wZG93bicsCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlID0+ICcnLAogICAgICAgIExpbmtEaXJlY3Rpb24gICAgICAgICA9PiAnUmVmZXJlbmNpbmdJc1NvdXJjZScsCiAgICAgICAgTGlua1R5cGUgICAgICAgICAgICAgID0+ICRQYXJhbXtMaW5rVHlwZX0sICAgICAgICAjJ1JlbGV2YW50VG8nLAogICAgICAgIE11bHRpVmFsdWUgICAgICAgICAgICA9PiAnMCcsCiAgICAgICAgTXVsdGlzZWxlY3QgICAgICAgICAgID0+IDAsCiAgICAgICAgUG9zc2libGVOb25lICAgICAgICAgID0+ICcxJywKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0ICAgPT4gW10sCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGUgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU2VhcmNoQXR0cmlidXRlICAgICAgID0+ICdOYW1lJywKICAgICAgICBUb29sdGlwICAgICAgICAgICAgICAgPT4gJycsCiAgICB9OwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkSUQgICAgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgIE5hbWUgICAgICAgPT4gJ0NvbmZpZ0l0ZW1SZWYnIC4gJFBhcmFte0xpbmtUeXBlfSAuICRSYW5kb21JRCwKICAgICAgICBMYWJlbCAgICAgID0+ICdDb25maWcgSXRlbSBSZWZlcmVuY2UnIC4gJFBhcmFte0xpbmtUeXBlfSAuICRSYW5kb21JRCwKICAgICAgICBGaWVsZE9yZGVyID0+IDQ3MTEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1hbmRhdG9yeSwgZGlzcGxheSBvcmRlcgogICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgICAgIE9iamVjdFR5cGUgPT4gJ1RpY2tldCcsCiAgICAgICAgQ29uZmlnICAgICA9PiAkQ29uZmlnSGFzaFJlZiwKICAgICAgICBSZW9yZGVyICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAsIHRvIHRyaWdnZXIgcmVvcmRlciBmdW5jdGlvbiwgZGVmYXVsdCAxCiAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggSUQgPT4gJElEICk7CiAgICByZXR1cm4gJER5bmFtaWNGaWVsZENvbmZpZzsKfQoKc3ViIF9DaGFuZ2VUaWNrZXREZWZpbml0aW9uQWRkQ29uZmlnSXRlbVJlZkRGIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFN1YnNpZGlhcnlDbGFzc0lELAogICAgKTsKCiAgICBteSAkRGVmaW5pdGlvblJlZiA9ICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn07CgogICAgIyBhZGQgdGhlIFRpY2tldFJlZiBERgoKICAgICREZWZpbml0aW9uUmVmLT57U2VjdGlvbnN9LT57QWRkcmVzc30tPntDb250ZW50fSA9IFsKICAgICAgICB7CiAgICAgICAgICAgICdIZWFkZXInID0+ICdBZGRyZXNzJwogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnREYnID0+ICdMb2NhdGlvbi1TdHJlZXQnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLUNpdHknCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeScKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0RGJyA9PiAnTG9jYXRpb24tTGF0aXR1ZGUnCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ0xvY2F0aW9uLUxvbmdpdHVkZScKICAgICAgICB9LAoKICAgICAgICAjIGFkZCB0aGlzIG9uZToKICAgICAgICB7CiAgICAgICAgICAgICdERicgPT4gJ1RpY2tldFJlZicgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlECiAgICAgICAgfSwKICAgIF07CgogICAgbXkgJFlBTUxPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwogICAgbXkgJFlBTUxTdHJpbmcgPSAkWUFNTE9iamVjdC0+RHVtcCgKICAgICAgICBEYXRhID0+ICREZWZpbml0aW9uUmVmLAogICAgKTsKCiAgICByZXR1cm4gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgQ2xhc3NJRCAgICA9PiAkU3Vic2lkaWFyeUNsYXNzSUQsCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkWUFNTFN0cmluZywKICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCgogICAgICAgICMgICAgRm9yY2UgICAgICA9PiAxLCAgICAgICAgIyBobQogICAgKS0+e1N1Y2Nlc3N9Owp9CgpzdWIgX0NyZWF0ZVRlc3RUaWNrZXQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICBUaXRsZSAgICAgICAgPT4gJFBhcmFte1RpdGxlfSwKICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnY2xvc2VkIHN1Y2Nlc3NmdWwnLAogICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICBDdXN0b21lclVzZXIgPT4gJ3VuaXR0ZXN0QG90b2JvLm9yZycsCiAgICAgICAgT3duZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICApOwoKICAgIG9rKCAkVGlja2V0SUQsICJUaWNrZXQgJyRQYXJhbXtUaXRsZX0nICgkVGlja2V0SUQpIGNyZWF0ZWQiICk7CgogICAgb2soCiAgICAgICAgJEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiBbICRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICksCiAgICAgICAgIkRGIFZhbHVlIHNldCB0byAkUGFyYW17Q29uZmlnSXRlbUlEfS4iCiAgICApOwoKICAgIHJldHVybiAkVGlja2V0SUQ7Cn0KCiMgY2FsbCBhcwojIF9Bc3NlcnRIYXNMaW5rT2JqZWN0TGlua3MoCiMgICBUaWNrZXRJRCA9PiAkVGlja2V0LAojICAgTGlua1R5cGUgPT4gJExpbmtUeXBlLAojICAgTGlua3MgPT4gWwojICAgICAgIFsgU291cmNlID0+ICRTb21lSUQgXSwKIyAgICAgICBbIFNvdXJjZSA9PiAkU29tZUlEIF0sCiMgICAgICAgWyBUYXJnZXQgPT4gJFNvbWVJRCBdLAojIC4uLi4KIyAgIF0KIyApCgpzdWIgX0Fzc2VydEhhc0xpbmtPYmplY3RMaW5rcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtUeXBlID0gJFBhcmFte0xpbmtUeXBlfTsKICAgIG15ICRUaWNrZXRJRCA9ICRQYXJhbXtUaWNrZXRJRH07CgogICAgbXkgQExpbmtzICAgICAgICAgICAgID0gJFBhcmFte0xpbmtzfS0+QCo7CiAgICBteSAkRXhwZWN0ZWRMaW5rQ291bnQgPSBzY2FsYXIgQExpbmtzOwoKICAgIG15ICRMaW5rTGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rTGlzdCgKICAgICAgICBPYmplY3QgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgS2V5ICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICBPYmplY3QyICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBTdGF0ZSAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBUeXBlICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgIERpcmVjdGlvbiA9PiAnQm90aCcsCiAgICAgICAgVXNlcklEICAgID0+ICRVc2VySUQsCiAgICApOwoKICAgIGZvciBteSAkTGluayAoQExpbmtzKSB7CgogICAgICAgIG15ICRMaW5rRGVzdCA9ICRMaW5rLT5bMF07CiAgICAgICAgbXkgJExpbmtlZElEID0gJExpbmstPlsxXTsKICAgICAgICBpZiAoIGV4aXN0cyAkTGlua0xpc3QtPnsnSVRTTUNvbmZpZ0l0ZW0nfS0+eyRMaW5rVHlwZX0tPnskTGlua0Rlc3R9ICkgewoKICAgICAgICAgICAgbXkgJElEcyA9ICRMaW5rTGlzdC0+eydJVFNNQ29uZmlnSXRlbSd9LT57JExpbmtUeXBlfS0+eyRMaW5rRGVzdH07CgogICAgICAgICAgICByZXR1cm4gMCBpZiAhZXhpc3RzICRJRHMtPnskTGlua2VkSUR9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1VwZGF0ZVJlZmVyZW5jZVRvQ0lERkxpbmtEaXJlY3Rpb24gewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRMaW5rVHlwZSAgICAgID0gJFBhcmFte0xpbmtUeXBlfTsKICAgIG15ICRMaW5rRGlyZWN0aW9uID0gJFBhcmFte0xpbmtEaXJlY3Rpb259IHx8ICdSZWZlcmVuY2luZ0lzU291cmNlJzsKCiAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIE5hbWUgPT4gJ0NvbmZpZ0l0ZW1SZWYnIC4gJFBhcmFte0xpbmtUeXBlfSAuICRSYW5kb21JRCwKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKCiAgICBzdWJ0ZXN0ICJUaWNrZXRSZWYgREYgZGVmaW5pdGlvbiB1cGRhdGVkLCBsaW5rIGRpcmVjdGlvbiBjaGFuZ2VkIHRvICRMaW5rRGlyZWN0aW9uLiIgPT4gc3ViIHsKCiAgICAgICAgb2soICREeW5hbWljRmllbGQsICdUaWNrZXRSZWYgREYgZm91bmQuJyApOwoKICAgICAgICBteSAkQ29uZmlnSGFzaFJlZiA9ICREeW5hbWljRmllbGQtPntDb25maWd9OwoKICAgICAgICAkQ29uZmlnSGFzaFJlZi0+e0xpbmtEaXJlY3Rpb259ID0gJExpbmtEaXJlY3Rpb247CgogICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkVXBkYXRlKAogICAgICAgICAgICBJRCAgICAgICAgID0+ICREeW5hbWljRmllbGQtPntJRH0sICAgICAgIyBtYW5kYXRvcnkKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sICAgICMnTmFtZUZvckZpZWxkJywgICMgbWFuZGF0b3J5CiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJER5bmFtaWNGaWVsZC0+e0xhYmVsfSwKICAgICAgICAgICAgRmllbGRPcmRlciA9PiA0NzExLCAgICAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBkaXNwbGF5IG9yZGVyCiAgICAgICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW0nLCAgICAgICAgICAgICAjIG1hbmRhdG9yeSwgc2VsZWN0cyB0aGUgREYgYmFja2VuZCB0byB1c2UgZm9yIHRoaXMgZmllbGQKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnVGlja2V0JywgICAgICAgICAgICAgICAgICMgdGhpcyBjb250cm9scyB3aGljaCBvYmplY3QgdGhlIGR5bmFtaWMgZmllbGQgbGlua3MgdG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsb3cgb25seSBsb3dlcmNhc2UgbGV0dGVycwogICAgICAgICAgICBDb25maWcgICAgID0+ICRDb25maWdIYXNoUmVmLCAgICAgICAgICAgIyBpdCBpcyBzdG9yZWQgb24gWUFNTCBmb3JtYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG8gaW5kaXZpZHVhbCBhcnRpY2xlcywgb3RoZXJ3aXNlIHRvIHRpY2tldHMKICAgICAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgICAgICBSZW9yZGVyICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwLCB0byB0cmlnZ2VyIHJlb3JkZXIgZnVuY3Rpb24sIGRlZmF1bHQgMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAwIGlzIG9ubHkgdXNlZCBpbnRlcm5hbGx5IHRvIHByZXZlbnQgcmVkdW5kYW50IGV4ZWN1dGlvbiBvbiBvcmRlciBjaGFuZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gdXBkYXRlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGZvciAwCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICAgICApOwoKICAgICAgICBvayggJFN1Y2Nlc3MsICJUaWNrZXRSZWYgREYgZGVmaW5pdGlvbiB1cGRhdGVkLiIgKTsKCiAgICAgICAgX1N5bmNDb25maWdJdGVtREZzKCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKTsKCiAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCggSUQgPT4gJER5bmFtaWNGaWVsZC0+e0lEfSApOwogICAgfTsKCiAgICByZXR1cm4gJER5bmFtaWNGaWVsZENvbmZpZzsKfQoKc3ViIF9TeW5jQ29uZmlnSXRlbURGcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtUeXBlID0gJFBhcmFte0xpbmtUeXBlfTsKCiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIE5hbWUgPT4gJ0NvbmZpZ0l0ZW1SZWYnIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblNldE91dE9mU3luYygKICAgICAgICBDbGFzc2VzID0+IHsKICAgICAgICAgICAgJFN1YnNpZGlhcnlDbGFzc0lEID0+IFsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0lEfSBdLAogICAgICAgIH0sCiAgICApOwogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25TeW5jKCk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgcmV0dXJuOwp9Cg==</File>
        <File Location="scripts/test/ITSMConfigItem/TicketLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IFRpY2tldCB0byBDSSBpdGVtIGxpbmtpbmUKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgYm9pbGVycGxhdGUKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKKTsKCm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luCik7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCiMgYXNzdXJlIHN0ZCBjbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZApfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzKCk7CgojIGdsb2JhbCBPTSBvYmplY3RzCm15ICREQk9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpteSAkTGlua09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgojIGNhdGNoIHN0YXRlIGJlZm9yZSB0ZXN0IHJ1bgpteSAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7Cm15ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHByZXBhcmUgZW52aXJvbm1lbnQKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBmZXRjaCBjb25maWcgc3RhdGUgaWRzCm15ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgIE5hbWUgID0+ICdPcGVyYXRpb25hbCcsCik7CgpteSAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKCiMgZmV0Y2ggY291bnRyeSBjbGFzcyBmcm9tIGdlbmVyYWwgY2F0YWxvZwpteSAkQ291bnRyeUNsYXNzSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICA9PiAnQ291bnRyeScsCik7Cm9rKCAkQ291bnRyeUNsYXNzSUQsICJDb3VudHJ5IGNsYXNzIGZvdW5kIiApOwoKIyBhZGQgYSB2ZXJzaW9uIHRyaWdnZXIgdG8gQ291bnRyeSBvbiBOYW1lIGF0dHJpYnV0ZQpvaygKICAgIF9BZGRWZXJzaW9uVHJpZ2dlck9uTmFtZUNoYW5nZVRvQ291bnRyeUNsYXNzKCksCiAgICAnVXBkYXRlZCBWZXJzaW9uVHJpZ2dlcicKKTsKCm15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgIE9iamVjdDEgPT4gJ1RpY2tldCcsCiAgICBPYmplY3QyID0+ICdJVFNNQ29uZmlnSXRlbScsCik7CgpteSBATGlua1R5cGVzID0ga2V5cyAlUG9zc2libGVUeXBlc0xpc3Q7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgaXRlcmF0ZSBvdmVyIGF2YWlsIExpbmtUeXBlcwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgpmb3IgbXkgJExpbmtUeXBlIChATGlua1R5cGVzKSB7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBjcmVhdGUgdGVzdCBjb25maWcgaXRlbXMKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAjIGNyZWF0ZSBUZXN0TG9jYXRpb24xCiAgICBteSAkVGVzdExvY2F0aW9uMUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIE5hbWUgICAgICAgID0+ICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklELAogICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpZGllbnRTdGF0ZU9wZXJhdGlvbmFsSUQsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0FCQ0QnLAogICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICApOwogICAgb2soICRUZXN0TG9jYXRpb24xSUQsICJUZXN0TG9jYXRpb24xIGNyZWF0ZWQiICk7CgogICAgIyBhc3NlcnQgdGhlcmUgaXMgMSB2ZXJzaW9uIHdpdGggZ2l2ZW4gbmFtZQogICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICBMb2NhdGlvbiA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgIFZlcnNpb25zID0+IFsKICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgIF0KICAgICk7CgogICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKCiAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgVGl0bGUgICAgICAgID0+ICJUZXN0VGlja2V0MV8kTGlua1R5cGUkUmFuZG9tSUQiLAogICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdjbG9zZWQgc3VjY2Vzc2Z1bCcsCiAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAndW5pdHRlc3RAb3RvYm8ub3JnJywKICAgICAgICBPd25lcklEICAgICAgPT4gJFVzZXJJRCwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgb2soICRUaWNrZXRJRCwgJ1RpY2tldCBjcmVhdGVkJyApOwoKICAgICMgY3JlYXRlIGxpbmsgdG8gQ29uZmlnSXRlbQogICAgb2soCiAgICAgICAgJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgU291cmNlS2V5ICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJExpbmtUeXBlLCAgICAgICAgICAjJ1JlbGV2YW50VG8nLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKSwKICAgICAgICAnVGlja2V0IExpbmtlZCB0byBDSSBUZXN0TG9jYXRpb24xICgkTGlua1R5cGUpJwogICAgKTsKCiAgICAjIGluc3BlY3QgbGluayBkYXRhCgogICAgbXkgJExpbmtMaXN0ID0gJExpbmtPYmplY3QtPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgT2JqZWN0ID0+ICdUaWNrZXQnLAogICAgICAgIEtleSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgU3RhdGUgID0+ICdWYWxpZCcsCiAgICApOwoKICAgIG15ICRTb3VyY2UgPSBleGlzdHMgJExpbmtMaXN0LT57SVRTTUNvbmZpZ0l0ZW19LT57JExpbmtUeXBlfS0+e1NvdXJjZX0KICAgICAgICA/CiAgICAgICAgJExpbmtMaXN0LT57SVRTTUNvbmZpZ0l0ZW19LT57JExpbmtUeXBlfS0+e1NvdXJjZX0tPnskVGVzdExvY2F0aW9uMUlEfQogICAgICAgIDoKICAgICAgICAkTGlua0xpc3QtPntJVFNNQ29uZmlnSXRlbX0tPnskTGlua1R5cGV9LT57VGFyZ2V0fS0+eyRUZXN0TG9jYXRpb24xSUR9OwogICAgb2soICRTb3VyY2UsICdGb3VuZCBMaW5rJyApOwoKICAgIGlzKAogICAgICAgICRTb3VyY2UtPntDbGFzc30sCiAgICAgICAgJ0NvdW50cnknLAogICAgICAgICdUaWNrZXQgbGluayBoYXMgY2xhc3MgQ291bnRyeScKICAgICk7CgogICAgaXMoCiAgICAgICAgJFNvdXJjZS0+e05hbWV9LAogICAgICAgICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICAnVGlja2V0IGxpbmsgaGFzIGNvcnJlY3QgTG9jYXRpb24gTmFtZScKICAgICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBjaGFuZ2UgVGVzdExvY2F0aW9uIE5hbWUKICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICBteSAkQ291bnRyeURlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICk7CgogICAgb2soCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvdW50cnlEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKSwKICAgICAgICAnVGVzdExvY2F0aW9uMSBOYW1lIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5LicKICAgICk7CgogICAgIyBjaGVjayBsaW5rIGRhdGEKICAgICRMaW5rTGlzdCA9ICRMaW5rT2JqZWN0LT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIE9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICBLZXkgICAgPT4gJFRpY2tldElELAogICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgKTsKCiAgICAkU291cmNlID0gZXhpc3RzICRMaW5rTGlzdC0+e0lUU01Db25maWdJdGVtfS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9CiAgICAgICAgPwogICAgICAgICRMaW5rTGlzdC0+e0lUU01Db25maWdJdGVtfS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9LT57JFRlc3RMb2NhdGlvbjFJRH0KICAgICAgICA6CiAgICAgICAgJExpbmtMaXN0LT57SVRTTUNvbmZpZ0l0ZW19LT57JExpbmtUeXBlfS0+e1RhcmdldH0tPnskVGVzdExvY2F0aW9uMUlEfTsKCiAgICBvayggJFNvdXJjZSwgJ0ZvdW5kIExpbmsnICk7CgogICAgaXMoCiAgICAgICAgJFNvdXJjZS0+e0NsYXNzfSwKICAgICAgICAnQ291bnRyeScsCiAgICAgICAgJ1RpY2tldCBsaW5rIHN0aWxsIGhhcyBjbGFzcyBDb3VudHJ5JwogICAgKTsKCiAgICBpcygKICAgICAgICAkU291cmNlLT57TmFtZX0sCiAgICAgICAgJ05pZWRlcmthbHRlbmtpcmNoZW4nIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgICAgICdUaWNrZXQgbGluayBoYXMgY29ycmVjdCBuZXcgTG9jYXRpb24gTmFtZScKICAgICk7CgogICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIyBjbGVhbnVwCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgb2soCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRAogICAgICAgICksCiAgICAgICAgIlRlc3RMb2NhdGlvbjEgZGVsZXRlZCIKICAgICk7CgogICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcwogICAgbXkgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKICAgIG15ICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0gX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQoKTsKCiAgICBpcygKICAgICAgICAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgJEZpbmFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAiTm8gQ0kgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICk7CgogICAgaXMoCiAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAkRmluYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAiTm8gQ0kgbGlua3MgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICk7Cn0KCmRvbmVfdGVzdGluZzsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgUHJlcGFyZSB0aGUgR2VuZXJhbCBDYXRhbG9nIGNsYXNzZXMgYnkgcmVsb2FkaW5nCiMgKGFuZCB1cGRhdGluZykgdGhlIHdob2xlIHJlYWR5MmxvYWQgYnVuZGxlCgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCgogICAgICAgICMgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZCIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgIkNsYXNzZXMgaGF2ZSBiZWVuIGltcG9ydGVkIiApOwoKICAgIHJldHVybjsKfQoKc3ViIF9GZXRjaENvbmZpZ0l0ZW1Db3VudCB7CiAgICBteSAoJENvdW50KSA9ICREQk9iamVjdC0+U2VsZWN0Um93QXJyYXkoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ09VTlQoaWQpIEZST00gY29uZmlnaXRlbScsCiAgICApOwoKICAgIHJldHVybiAkQ291bnQgLy8gMDsKfQoKc3ViIF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50IHsKCiAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBDb3VudChpZCkgRlJPTSBjb25maWdpdGVtX2xpbmsnLAogICAgKTsKCiAgICBpZiAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkgKSB7CiAgICAgICAgcmV0dXJuICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIDA7Cn0KCnN1YiBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRWZXJzaW9ucyAgICAgID0gJFBhcmFte1ZlcnNpb25zfTsKICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFBhcmFte1ZlcnNpb25TdHJpbmd9OwoKICAgIGZvciBteSAkVmVyc2lvbiAoQCRWZXJzaW9ucykgewoKICAgICAgICBpZiAoICRWZXJzaW9uLT57VmVyc2lvblN0cmluZ30gZXEgJFZlcnNpb25TdHJpbmcgKSB7CiAgICAgICAgICAgIHJldHVybiAkVmVyc2lvbi0+e1ZlcnNpb25JRH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0lEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICBteSAkQ2F0YWxvZ0l0ZW0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0NsYXNzfSwKICAgICAgICBOYW1lICA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiAkQ2F0YWxvZ0l0ZW0tPntJdGVtSUR9Owp9CgpzdWIgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJENvdW50cnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXSwKICAgICk7Cn0KCiMgY2FsbCBsaWtlCiMgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKIyAgIExvY2F0aW9uID0+ICRUZXN0TG9jYXRpb24xSUQsCiMgICAgVmVyc2lvbnMgPT4gWwojICAgICBbIldlbGxibGVjaHNIYXVzZW4kUmFuZG9tSUQiICAgID0+IDEgXSwKIyAgICAgWyJOaWVkZXJrYWx0ZW5raXJjaGVuJFJhbmRvbUlEIiA9PiAyIF0sCiMgXSk7CgpzdWIgX0Fzc2VydExvY2F0aW9uVmVyc2lvbiB7CgogICAgbXkgJVBhcmFtICAgICAgPSBAXzsKICAgIG15ICRMb2NhdGlvbklEID0gJFBhcmFte0xvY2F0aW9ufTsKICAgIG15ICRWZXJzaW9ucyAgID0gJFBhcmFte1ZlcnNpb25zfTsKCiAgICBteSAkVmVyc2lvbkxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblpvb21MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTG9jYXRpb25JRCwKICAgICk7CgogICAgbXkgJFZlcnNpb25Db3VudCA9IEAkVmVyc2lvbnM7CgogICAgaXMoCiAgICAgICAgc2NhbGFyIEAkVmVyc2lvbkxpc3RSZWYsCiAgICAgICAgJFZlcnNpb25Db3VudCwKICAgICAgICAiQ291bnQgb2YgVmVyc2lvbnMgaXMgJFZlcnNpb25Db3VudCBmb3IgTG9jYXRpb24gSUQgJExvY2F0aW9uSUQiCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkVGVzdExvY2F0aW9uQ0lWZXJzaW9uZWQtPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICIkTmFtZSBpcyBjb3JyZWN0IgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9Cg==</File>
        <File Location="scripts/test/ITSMConfigItem/TicketRef.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IFRpY2tldCBERiBSZWZlcmVuY2UKIyB0byBzdGF0aWMgQ29uZmlnSXRlbVZlcnNpb24KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgYm9pbGVycGxhdGUKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKKTsKCm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luCik7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRDsKCiMgYXNzdXJlIHN0ZCBjbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZApfTG9hZFJlYWR5VG9JbXBvcnRDbGFzc2VzKCk7CgojIGdsb2JhbCBPTSBvYmplY3RzCm15ICREQk9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkVGlja2V0T2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwpteSAkQmFja2VuZE9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwpteSAkTGF5b3V0T2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwpteSAkTGlua09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKCiMgY2F0Y2ggc3RhdGUgYmVmb3JlIHRlc3QgcnVuCm15ICRJbml0aWFsQ29uZmlnSXRlbXNDb3VudCAgICAgPSBfRmV0Y2hDb25maWdJdGVtQ291bnQoKTsKbXkgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCA9IF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50KCk7CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgcHJlcGFyZSBlbnZpcm9ubWVudAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBzdGF0ZSBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBjb3VudHJ5IGNsYXNzIGZyb20gZ2VuZXJhbCBjYXRhbG9nCm15ICRDb3VudHJ5Q2xhc3NJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdDb3VudHJ5JywKKTsKb2soICRDb3VudHJ5Q2xhc3NJRCwgIkNvdW50cnkgY2xhc3MgZm91bmQiICk7CgojIGFkZCBhIHZlcnNpb24gdHJpZ2dlciB0byBDb3VudHJ5IG9uIE5hbWUgYXR0cmlidXRlCm9rKAogICAgX0FkZFZlcnNpb25UcmlnZ2VyT25OYW1lQ2hhbmdlVG9Db3VudHJ5Q2xhc3MoKSwKICAgICdVcGRhdGVkIFZlcnNpb25UcmlnZ2VyJwopOwoKbXkgJVBvc3NpYmxlVHlwZXNMaXN0ID0gJExpbmtPYmplY3QtPlBvc3NpYmxlVHlwZXNMaXN0KAogICAgT2JqZWN0MSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgT2JqZWN0MiA9PiAnVGlja2V0JywKKTsKCm15IEBMaW5rVHlwZXMgPSBrZXlzICVQb3NzaWJsZVR5cGVzTGlzdDsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBpdGVyYXRlIG92ZXIgYXZhaWwgTGlua1R5cGVzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmZvciBteSAkTGlua1R5cGUgKEBMaW5rVHlwZXMpIHsKCiAgICBzdWJ0ZXN0ICJUZXN0IExpbmtUeXBlPSRMaW5rVHlwZSIgPT4gc3ViIHsKCiAgICAgICAgIyBjcmVhdGUgYSB2ZXJzaW9uZWQgY29uZmlnIGl0ZW0gcmVmZXJlbmNlIERGIG9uIFRpY2tldAogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSBfQ3JlYXRlVGlja2V0REZDb25maWdJdGVtKCBMaW5rVHlwZSA9PiAkTGlua1R5cGUgKTsKICAgICAgICBvaygKICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgJ0RGIGNyZWF0ZWQnCiAgICAgICAgKTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY3JlYXRlIHRlc3QgY29uZmlnIGl0ZW1zCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAjIGNyZWF0ZSBUZXN0TG9jYXRpb24xCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbjFJRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ291bnRyeUNsYXNzSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxveW1lbnRTdGF0ZVByb2R1Y3Rpb25JRCwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCwKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0FCQ0QnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklELAogICAgICAgICk7CiAgICAgICAgb2soICRUZXN0TG9jYXRpb24xSUQsICJUZXN0TG9jYXRpb24xIGNyZWF0ZWQiICk7CgogICAgICAgICMgYXNzZXJ0IHRoZXJlIGlzIDEgdmVyc2lvbiB3aXRoIGdpdmVuIG5hbWUKICAgICAgICBfQXNzZXJ0TG9jYXRpb25WZXJzaW9uKAogICAgICAgICAgICBMb2NhdGlvbiA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICBWZXJzaW9ucyA9PiBbCiAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgIF0KICAgICAgICApOwoKICAgICAgICAjIGdldCBjdXJyZW50IFZlcnNpb25JRCBmb3IgVGVzdExvY2F0aW9uCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbjFGaXJzdFZlcnNpb25JRCA9IF9HZXRDb25maWdJdGVtQ3VycmVudFZlcnNpb24oCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlECiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKCiAgICAgICAgbXkgJFRpY2tldElEID0gX0NyZWF0ZVRlc3RUaWNrZXQoCiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICA9PiAiVGVzdFRpY2tldDFfJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgTG9jYXRpb25WZXJzaW9uSUQgID0+ICRUZXN0TG9jYXRpb24xRmlyc3RWZXJzaW9uSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICBfR2V0VGlja2V0TG9jYXRpb25UaXRsZSgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgIlRpY2tldCBERiBMb2NhdGlvbiBOYW1lIGlzOiBXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICApOwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBjaGFuZ2UgVGVzdExvY2F0aW9uIE5hbWUKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIG15ICRDb3VudHJ5RGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICBvaygKICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RMb2NhdGlvbjFJRCwKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ291bnRyeURlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgICAgICAgICAgICAgIk5hbWUiICAgICAgID0+ICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICApLAogICAgICAgICAgICAnTG9jYXRpb24gTmFtZSB1cGRhdGVkIHN1Y2Nlc3NmdWxseS4nCiAgICAgICAgKTsKCiAgICAgICAgIyBhc3NlcnQgdGhlcmUgYXJlIG5vdyB0d28gdmVyc2lvbnMKCiAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgTG9jYXRpb24gPT4gJFRlc3RMb2NhdGlvbjFJRCwKICAgICAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgICAgPT4gMSBdLAogICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMiBdLAogICAgICAgICAgICBdCiAgICAgICAgKTsKCiAgICAgICAgIyAuLi4gYnV0IHRpY2tldCBzdGlsbCByZWZlcmVuY2VzIHZlcnNpb24gdjEKICAgICAgICBpcygKICAgICAgICAgICAgX0dldFRpY2tldExvY2F0aW9uVGl0bGUoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgTGlua1R5cGUgICAgICAgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApLAogICAgICAgICAgICAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIsCiAgICAgICAgICAgICJERiBUaXRsZSBpcyBXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIgogICAgICAgICk7CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGNsZWFudXAKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIHN1YnRlc3QgIkNsZWFudXAgJExpbmtUeXBlIiA9PiBzdWIgewogICAgICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGVzdExvY2F0aW9uMSBkZWxldGVkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcwogICAgICAgICAgICBteSAkRmluYWxDb25maWdJdGVtc0NvdW50ICAgICA9IF9GZXRjaENvbmZpZ0l0ZW1Db3VudCgpOwogICAgICAgICAgICBteSAkRmluYWxDb25maWdJdGVtTGlua3NDb3VudCA9IF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50KCk7CgogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRJbml0aWFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAgICAgICAgICRGaW5hbENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgICAgICAgICAiTm8gQ0kgaGF2ZSBiZWVuIGxlYWtlZCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCwKICAgICAgICAgICAgICAgICRGaW5hbENvbmZpZ0l0ZW1MaW5rc0NvdW50LAogICAgICAgICAgICAgICAgIk5vIENJIGxpbmtzIGhhdmUgYmVlbiBsZWFrZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKICAgIH07Cn0KCmRvbmVfdGVzdGluZzsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgUHJlcGFyZSB0aGUgR2VuZXJhbCBDYXRhbG9nIGNsYXNzZXMgYnkgcmVsb2FkaW5nCiMgKGFuZCB1cGRhdGluZykgdGhlIHdob2xlIHJlYWR5MmxvYWQgYnVuZGxlCgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCgogICAgICAgICMgICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZCIgKTsKCiAgICAkQ29udGVudCA9ICR7ICRDb250ZW50IHx8IFwnJyB9OwoKICAgICRDb250ZW50ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICBEYXRhID0+ICRDb250ZW50LAogICAgKTsKCiAgICBpZiAoIHJlZiAkQ29udGVudCBlcSAnSEFTSCcgKSB7CiAgICAgICAgJENvbnRlbnQgPSBbJENvbnRlbnRdOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBpbXBvcnQgdGhlIGNsYXNzIFlBTUwgZmlsZQogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0ltcG9ydCgKICAgICAgICBDb250ZW50ICAgICA9PiAkQ29udGVudCwKICAgICAgICBDbGFzc0V4aXN0cyA9PiAnVVBEQVRFJywKICAgICk7CgogICAgb2soICRSZXN1bHQsICJDbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZCIgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtQ291bnQgewogICAgbXkgKCRDb3VudCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENPVU5UKGlkKSBGUk9NIGNvbmZpZ2l0ZW0nLAogICAgKTsKCiAgICByZXR1cm4gJENvdW50IC8vIDA7Cn0KCnN1YiBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCB7CgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgQ291bnQoaWQpIEZST00gY29uZmlnaXRlbV9saW5rJywKICAgICk7CgogICAgaWYgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5ICkgewogICAgICAgIHJldHVybiAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAwOwp9CgpzdWIgX0dldFZlcnNpb25JREZyb21WZXJzaW9uU3RyaW5nIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkVmVyc2lvbnMgICAgICA9ICRQYXJhbXtWZXJzaW9uc307CiAgICBteSAkVmVyc2lvblN0cmluZyA9ICRQYXJhbXtWZXJzaW9uU3RyaW5nfTsKCiAgICBmb3IgbXkgJFZlcnNpb24gKEAkVmVyc2lvbnMpIHsKCiAgICAgICAgaWYgKCAkVmVyc2lvbi0+e1ZlcnNpb25TdHJpbmd9IGVxICRWZXJzaW9uU3RyaW5nICkgewogICAgICAgICAgICByZXR1cm4gJFZlcnNpb24tPntWZXJzaW9uSUR9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm47Cn0KCnN1YiBfR2VuZXJhbENhdGFsb2dJRCB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgbXkgJENhdGFsb2dJdGVtID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgIENsYXNzID0+ICRQYXJhbXtDbGFzc30sCiAgICAgICAgTmFtZSAgPT4gJFBhcmFte05hbWV9LAogICAgKTsKCiAgICByZXR1cm4gJENhdGFsb2dJdGVtLT57SXRlbUlEfTsKfQoKc3ViIF9BZGRWZXJzaW9uVHJpZ2dlck9uTmFtZUNoYW5nZVRvQ291bnRyeUNsYXNzIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgSXRlbUlEID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25UcmlnZ2VyJywKICAgICAgICBWYWx1ZSAgPT4gWydOYW1lJ10sCiAgICApOwp9CgojIGNhbGwgbGlrZQojIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiMgICBMb2NhdGlvbiA9PiAkVGVzdExvY2F0aW9uMUlELAojICAgIFZlcnNpb25zID0+IFsKIyAgICAgWyJXZWxsYmxlY2hzSGF1c2VuJFJhbmRvbUlEIiAgICA9PiAxIF0sCiMgICAgIFsiTmllZGVya2FsdGVua2lyY2hlbiRSYW5kb21JRCIgPT4gMiBdLAojIF0pOwoKc3ViIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24gewoKICAgIG15ICVQYXJhbSAgICAgID0gQF87CiAgICBteSAkTG9jYXRpb25JRCA9ICRQYXJhbXtMb2NhdGlvbn07CiAgICBteSAkVmVyc2lvbnMgICA9ICRQYXJhbXtWZXJzaW9uc307CgogICAgbXkgJFZlcnNpb25MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25ab29tTGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJExvY2F0aW9uSUQsCiAgICApOwoKICAgIG15ICRWZXJzaW9uQ291bnQgPSBAJFZlcnNpb25zOwoKICAgIGlzKAogICAgICAgIHNjYWxhciBAJFZlcnNpb25MaXN0UmVmLAogICAgICAgICRWZXJzaW9uQ291bnQsCiAgICAgICAgIkNvdW50IG9mIFZlcnNpb25zIGlzICRWZXJzaW9uQ291bnQgZm9yIExvY2F0aW9uIElEICRMb2NhdGlvbklEIgogICAgKTsKCiAgICBmb3IgKCAwIC4uICRWZXJzaW9uQ291bnQgLSAxICkgewoKICAgICAgICBteSBAVmVyc2lvbiAgICAgICA9ICRWZXJzaW9ucy0+WyRfXS0+QCo7CiAgICAgICAgbXkgJE5hbWUgICAgICAgICAgPSAkVmVyc2lvblswXTsKICAgICAgICBteSAkVmVyc2lvblN0cmluZyA9ICRWZXJzaW9uWzFdOwoKICAgICAgICBteSAkVmVyc2lvbklEID0gX0dldFZlcnNpb25JREZyb21WZXJzaW9uU3RyaW5nKAogICAgICAgICAgICBWZXJzaW9ucyAgICAgID0+ICRWZXJzaW9uTGlzdFJlZiwKICAgICAgICAgICAgVmVyc2lvblN0cmluZyA9PiAkVmVyc2lvblN0cmluZwogICAgICAgICk7CgogICAgICAgIG15ICRUZXN0TG9jYXRpb25DSVZlcnNpb25lZCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRMb2NhdGlvbklELAogICAgICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpcygKICAgICAgICAgICAgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkLT57TmFtZX0sCiAgICAgICAgICAgICROYW1lLAogICAgICAgICAgICAiVmVyc2lvbiAkVmVyc2lvblN0cmluZyBOYW1lICckTmFtZScgaXMgY29ycmVjdCIKICAgICAgICApOwogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9DcmVhdGVUaWNrZXRERkNvbmZpZ0l0ZW0gewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRDb25maWdIYXNoUmVmID0gewogICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbIiRDb3VudHJ5Q2xhc3NJRCJdLAogICAgICAgIERpc3BsYXlUeXBlICAgICAgICAgICA9PiAnQ29uZmlnSXRlbU5hbWUnLAogICAgICAgIEVkaXRGaWVsZE1vZGUgICAgICAgICA9PiAnRHJvcGRvd24nLAogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZSA9PiAnJywKICAgICAgICBMaW5rRGlyZWN0aW9uICAgICAgICAgPT4gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnLAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGUgICA9PiAnU3RhdGljJywKICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgICAgPT4gJFBhcmFte0xpbmtUeXBlfSwgICAgICAgICAgIyAnUmVsZXZhbnRUbycsCiAgICAgICAgTXVsdGlWYWx1ZSAgICAgICAgICAgID0+ICcwJywKICAgICAgICBNdWx0aXNlbGVjdCAgICAgICAgICAgPT4gMCwKICAgICAgICBQb3NzaWJsZU5vbmUgICAgICAgICAgPT4gJzEnLAogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3QgICA9PiBbXSwKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZSAgPT4gJ0lUU01Db25maWdJdGVtVmVyc2lvbicsCiAgICAgICAgU2VhcmNoQXR0cmlidXRlICAgICAgID0+ICdOYW1lJywKICAgICAgICBUb29sdGlwICAgICAgICAgICAgICAgPT4gJycsCiAgICB9OwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkSUQgICAgICAgICAgICAgICAgID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xvY2F0aW9uLVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeScgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlELAogICAgICAgIExhYmVsICAgICAgPT4gJ0xvY2F0aW9uLVN0YXRpY1JlZmVyZW5jZVRvQ291bnRyeScgLiAkUGFyYW17TGlua1R5cGV9IC4gJFJhbmRvbUlELAogICAgICAgIEZpZWxkT3JkZXIgPT4gNDcxMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBkaXNwbGF5IG9yZGVyCiAgICAgICAgTmFtZXNwYWNlICA9PiAnTG9jYXRpb24nLAogICAgICAgIEZpZWxkVHlwZSAgPT4gJ0NvbmZpZ0l0ZW1WZXJzaW9uJywKICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsCiAgICAgICAgUmVvcmRlciAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvciAwLCB0byB0cmlnZ2VyIHJlb3JkZXIgZnVuY3Rpb24sIGRlZmF1bHQgMQogICAgICAgIFZhbGlkSUQgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICApOwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIElEID0+ICRJRCApOwogICAgcmV0dXJuICREeW5hbWljRmllbGRDb25maWc7Cn0KCnN1YiBfR2V0Q29uZmlnSXRlbUN1cnJlbnRWZXJzaW9uIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkQ0kgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICk7CiAgICByZXR1cm4gJENJLT57VmVyc2lvbklEfTsKfQoKc3ViIF9DcmVhdGVUZXN0VGlja2V0IHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgVGl0bGUgICAgICAgID0+ICRQYXJhbXtUaXRsZX0sCiAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICd1bml0dGVzdEBvdG9iby5vcmcnLAogICAgICAgIE93bmVySUQgICAgICA9PiAkVXNlcklELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBzdWJ0ZXN0ICJUaWNrZXQgY3JlYXRpb24iID0+IHN1YiB7CgogICAgICAgIG9rKCAkVGlja2V0SUQsICdUaWNrZXQgY3JlYXRlZCcgKTsKCiAgICAgICAgb2soCiAgICAgICAgICAgICRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFBhcmFte0xvY2F0aW9uVmVyc2lvbklEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICApLAogICAgICAgICAgICAnREYgVmFsdWUgc2V0JwogICAgICAgICk7CiAgICB9OwoKICAgIHJldHVybiAkVGlja2V0SUQ7Cn0KCnN1YiBfR2V0VGlja2V0TG9jYXRpb25UaXRsZSB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgVXNlcklEICAgICAgICA9PiAkVXNlcklELAogICAgICAgIEV4dGVuZGVkICAgICAgPT4gMSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIG15ICRWYWx1ZSA9ICRUaWNrZXR7ICJEeW5hbWljRmllbGRfTG9jYXRpb24tU3RhdGljUmVmZXJlbmNlVG9Db3VudHJ5IiAuICRQYXJhbXtMaW5rVHlwZX0gLiAiJFJhbmRvbUlEIiB9OwoKICAgIG15ICRSZXN1bHQgPSAkQmFja2VuZE9iamVjdC0+RGlzcGxheVZhbHVlUmVuZGVyKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgKTsKCiAgICByZXR1cm4gJFJlc3VsdC0+e1RpdGxlfTsKfQo=</File>
        <File Location="scripts/test/ITSMConfigItem/DynamicLink.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyB0ZXN0IHNpbXBsZSBkeW5hbWljIGxpbmtzCiMgYmV0d2VlbiBDSSBpdGVtcwojIGV4YW1wbGUgaXMKIyAgU3Vic2lkaWFyeSAtPiBMb2NhdGlvbgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyB0ZXN0IGJvaWxlcnBsYXRlCgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7CgpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7CgpteSAkVXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbgopOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQ7CgojIGFzc3VyZSBzdGQgY2xhc3NlcyBoYXZlIGJlZW4gaW1wb3J0ZWQKX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcygpOwoKIyBnbG9iYWwgT00gb2JqZWN0cwpteSAkREJPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKbXkgJExpbmtPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgojIGNhdGNoIERCIHN0YXRlIGJlZm9yZSB0ZXN0IHJ1bgpteSAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgICAgID0gX0ZldGNoQ29uZmlnSXRlbUNvdW50KCk7Cm15ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgPSBfRmV0Y2hDb25maWdJdGVtTGlua3NDb3VudCgpOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcmVwYXJlIGVudmlyb25tZW50CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGZldGNoIGNvbmZpZyBpZHMKbXkgJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCA9IF9HZW5lcmFsQ2F0YWxvZ0lEKAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKIyBmZXRjaCBjb3VudHJ5IGFuZCBzdWJzaWRpYXJ5IGNsYXNzZXMgZnJvbSBnZW5lcmFsIGNhdGFsb2cKbXkgJENvdW50cnlDbGFzc0lEID0gX0dlbmVyYWxDYXRhbG9nSUQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgPT4gJ0NvdW50cnknLAopOwpvayggJENvdW50cnlDbGFzc0lELCAiQ291bnRyeSBjbGFzcyBmb3VuZC4iICk7CgpteSAkU3Vic2lkaWFyeUNsYXNzSUQgPSBfR2VuZXJhbENhdGFsb2dJRCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICA9PiAnU3Vic2lkaWFyeScsCik7Cm9rKCAkU3Vic2lkaWFyeUNsYXNzSUQsICJTdWJzaWRpYXJ5IGNsYXNzIGZvdW5kLiIgKTsKCiMgcG9zc2libGUgbGluayB0eXBlcyBmb3IgQ29uZmlnSXRlbSA8LT4gQ29uZmlnSXRlbQpteSAlUG9zc2libGVUeXBlc0xpc3QgPSAkTGlua09iamVjdC0+UG9zc2libGVUeXBlc0xpc3QoCiAgICBPYmplY3QxID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICBPYmplY3QyID0+ICdJVFNNQ29uZmlnSXRlbScsCik7CgpteSAlQ291bnRyeUxvb2t1cDsKbXkgJVN1YnNpZGlhcnlMb29rdXA7CgpteSBATGlua1R5cGVzID0ga2V5cyAlUG9zc2libGVUeXBlc0xpc3Q7Cgpmb3IgbXkgJExpbmtUeXBlIChATGlua1R5cGVzKSB7CgogICAgc3VidGVzdCAiRHluYW1pYyBMaW5rcyB3aXRoIExpbmtUeXBlPSckTGlua1R5cGUnIiA9PiBzdWIgewoKICAgICAgICBfU2V0VmVyc2lvblRyaWdnZXJPblN1YnNpZGlhcnlDbGFzcygKICAgICAgICAgICAgVmFsdWUgPT4gW10KICAgICAgICApOwoKICAgICAgICBfVXBkYXRlUmVmZXJlbmNlVG9Db3VudHJ5REZMaW5rRGlyZWN0aW9uKCBMaW5rRGlyZWN0aW9uID0+ICdSZWZlcmVuY2luZ0lzVGFyZ2V0JyApOwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY3JlYXRlIFRlc3QgQ29uZmlnIEl0ZW1zCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBjcmVhdGUgZmlyc3QgdGVzdGxvY2F0aW9uCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbjFJRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ291bnRyeUNsYXNzSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdXZWxsYmxlY2hzSGF1c2VuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxveW1lbnRTdGF0ZVByb2R1Y3Rpb25JRCwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lkaWVudFN0YXRlT3BlcmF0aW9uYWxJRCwKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0FCQ0QnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAkVXNlcklELAogICAgICAgICk7CiAgICAgICAgb2soICRUZXN0TG9jYXRpb24xSUQsICJUZXN0TG9jYXRpb24xICRUZXN0TG9jYXRpb24xSUQgY3JlYXRlZC4iICk7CiAgICAgICAgJENvdW50cnlMb29rdXB7JFRlc3RMb2NhdGlvbjFJRH0gPSAnV2VsbGJsZWNoc0hhdXNlbicgLiAkTGlua1R5cGUgLiAkUmFuZG9tSUQ7CgogICAgICAgICMgY3JlYXRlIHNlY29uZCB0ZXN0bG9jYXRpb24KICAgICAgICBteSAkVGVzdExvY2F0aW9uMklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb3VudHJ5Q2xhc3NJRCwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ05pZWRlcmthbHRlbmtpcmNoZW4nIC4gJExpbmtUeXBlIC4gJFJhbmRvbUlELAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbG95bWVudFN0YXRlUHJvZHVjdGlvbklELAogICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaWRpZW50U3RhdGVPcGVyYXRpb25hbElELAogICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAnQUJDRCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKTsKICAgICAgICBvayggJFRlc3RMb2NhdGlvbjJJRCwgIlRlc3RMb2NhdGlvbjIgJFRlc3RMb2NhdGlvbjJJRCBjcmVhdGVkLiIgKTsKICAgICAgICAkQ291bnRyeUxvb2t1cHskVGVzdExvY2F0aW9uMklEfSA9ICdOaWVkZXJrYWx0ZW5raXJjaGVuJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRDsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGEpIG1ha2UgdXBkYXRlcyB3aXRoIG5vCiAgICAgICAgIyB2ZXJzaW9uIHRyaWdnZXJzCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBjcmVhdGUgYSB0ZXN0IHN1YnNpZGlhcnkgd2l0aCBhIGxpbmsgdG8gdGVzdGxvY2F0aW9uMQogICAgICAgIG15ICRUZXN0U3Vic2lkaWFyeUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkU3Vic2lkaWFyeUNsYXNzSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnRGVyQmF1ZXJuaG9mJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRCwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICREZXBsb3ltZW50U3RhdGVQcm9kdWN0aW9uSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaWRpZW50U3RhdGVPcGVyYXRpb25hbElELAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FCQ0QnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9Mb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnkiID0+IFsKICAgICAgICAgICAgICAgICRUZXN0TG9jYXRpb24xSUQKICAgICAgICAgICAgXSwKICAgICAgICApOwoKICAgICAgICBvaygKICAgICAgICAgICAgJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICJUZXN0U3Vic2lkaWFyeSAkVGVzdFN1YnNpZGlhcnlJRCB3aXRoIGxpbmsgdG8gVGVzdExvY2F0aW9uMSBjcmVhdGVkLiIKICAgICAgICApOwoKICAgICAgICAkU3Vic2lkaWFyeUxvb2t1cHskVGVzdFN1YnNpZGlhcnlJRH0gPSAnRGVyQmF1ZXJuaG9mJyAuICRMaW5rVHlwZSAuICRSYW5kb21JRDsKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCiAgICAgICAgc3VidGVzdCAiYSkgQXNzZXJ0IG9uIENJcyB3aXRoIExpbmtUeXBlICckTGlua1R5cGUnIChubyB2ZXJzaW9uIHRyaWdnZXJzKSIgPT4gc3ViIHsKICAgICAgICAgICAgX0Fzc2VydENvbmZpZ0l0ZW1MaW5rcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICA9PiAnVGFyZ2V0JywKICAgICAgICAgICAgICAgIFRhcmdldElEICAgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uSUQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RMb2NhdGlvbjFJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgVmVyc2lvbnMgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnROb0xlYWtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbXNDb3VudCAgICAgPT4gJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICsgMywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0+ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgKyAxLAogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBub3cgdXBkYXRlIHRoZSBzdWJzaWRpYXJ5IGxpbmsKICAgICAgICAjIHRvIHBvaW50IHRvIHRlc3Rsb2NhdGlvbjIKICAgICAgICAjIGluc3RlYWQKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeSIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RMb2NhdGlvbjJJRAogICAgICAgICAgICBdLAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICApOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJhKSBBc3NlcnQgb24gQ0lzIHdpdGggTGlua1R5cGUgJyRMaW5rVHlwZScgKG5vIHZlcnNpb24gdHJpZ2dlcnMpIGFmdGVyIENJIFJlZmVyZW5jZVRvQ291bnRyeSBjaGFuZ2UiID0+IHN1YiB7CgogICAgICAgICAgICBfQXNzZXJ0Q29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdUYXJnZXQnLAogICAgICAgICAgICAgICAgVGFyZ2V0SUQgICAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBfQXNzZXJ0TG9jYXRpb25JRCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgICA9PiAkVGVzdExvY2F0aW9uMklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtc0NvdW50ICAgICA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgKyAzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtzQ291bnQgPT4gJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCArIDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgY2hhbmdlIExpbmtEaXJlY3Rpb24KICAgICAgICAjIG9uIFJlZmVyZW5jZVRvQ291bnRyeSBERgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIF9VcGRhdGVSZWZlcmVuY2VUb0NvdW50cnlERkxpbmtEaXJlY3Rpb24oIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnICk7CgogICAgICAgIHN1YnRlc3QgImEpIEFzc2VydCBvbiBDSXMgd2l0aCBMaW5rVHlwZSAnJExpbmtUeXBlJyAobm8gdmVyc2lvbiB0cmlnZ2VycykgYWZ0ZXIgTGlua0RpcmVjdGlvbiBjaGFuZ2VkIHRvICdSZWZlcmVuY2luZ0lzU291cmNlJyIgPT4gc3ViIHsKCiAgICAgICAgICAgICMgdGhpcyBtdXN0IGhhdmUgdXBkYXRlZCB0aGUgRGlyZWN0aW9uIG9mIHRoZSBMaW5rIQogICAgICAgICAgICBfQXNzZXJ0Q29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdTb3VyY2UnLAogICAgICAgICAgICAgICAgVGFyZ2V0SUQgICAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBfQXNzZXJ0TG9jYXRpb25JRCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgICA9PiAkVGVzdExvY2F0aW9uMklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtc0NvdW50ICAgICA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgKyAzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtzQ291bnQgPT4gJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCArIDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGIpIG5vdyBzZXQgYSB2ZXJzaW9uIHRyaWdnZXIKICAgICAgICAjIG9uIHN1YnNpZGlhcnkgZm9yIGNoYW5nZXMgb2YKICAgICAgICAjIHRoZSBDb3VudHJ5IFJlZmVyZW5jZSBhbmQKICAgICAgICAjIHVwZGF0ZSBhZ2FpbgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIG9rKAogICAgICAgICAgICBfU2V0VmVyc2lvblRyaWdnZXJPblN1YnNpZGlhcnlDbGFzcygKICAgICAgICAgICAgICAgIFZhbHVlID0+IFsiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeSJdCiAgICAgICAgICAgICksCiAgICAgICAgICAgICJTZXQgU3Vic2lkaWFyeSBWZXJzaW9uIFRyaWdnZXIgb24gJ1JlZmVyZW5jZVRvQ291bnRyeScgREYuIgogICAgICAgICk7CiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgICAgICMgc3dpdGNoIGJhY2sgdG8gcmVmZXJlbmNlIGlzIHRhcmdldAogICAgICAgIF9VcGRhdGVSZWZlcmVuY2VUb0NvdW50cnlERkxpbmtEaXJlY3Rpb24oIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNUYXJnZXQnICk7CgogICAgICAgICMgdXBkYXRlIHRoZSBzdWJzaWRpYXJ5IGxpbmsgdG8gcG9pbnQgdG8gdGVzdGxvY2F0aW9uMSBhZ2FpbgogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5IiA9PiBbCiAgICAgICAgICAgICAgICAkVGVzdExvY2F0aW9uMUlECiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgICk7CiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgICAgIHN1YnRlc3QgImIpIEFzc2VydCBvbiBDSXMgd2l0aCBMaW5rVHlwZSAnJExpbmtUeXBlJyAod2l0aCB2ZXJzaW9uIHRyaWdnZXJzKSBhZnRlciBMaW5rRGlyZWN0aW9uIGNoYW5nZWQgYmFjayB0byAnUmVmZXJlbmNpbmdJc1RhcmdldCciID0+IHN1YiB7CgogICAgICAgICAgICBfQXNzZXJ0Q29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdUYXJnZXQnLAogICAgICAgICAgICAgICAgVGFyZ2V0SUQgICAgID0+ICRUZXN0TG9jYXRpb24xSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBfQXNzZXJ0TG9jYXRpb25JRCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhc3NlcnQgdGhlcmUgYXJlIG5vdyB0d28gdmVyc2lvbiBzbmFwc2hvdHMKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgICAgPT4gMiBdLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnROb0xlYWtzKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbXNDb3VudCAgICAgPT4gJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICsgMywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0+ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQgKyAxLAogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBERiB1cGRhdGUgY2hhbmdlIGxpbmsgZGlyIG9uCiAgICAgICAgIyBSZWZlcmVuY2VUb0NvdW50cnlERgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgogICAgICAgIF9VcGRhdGVSZWZlcmVuY2VUb0NvdW50cnlERkxpbmtEaXJlY3Rpb24oIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnICk7CgogICAgICAgIHN1YnRlc3QgImIpIEFzc2VydCBvbiBDSXMgd2l0aCBMaW5rVHlwZSAnJExpbmtUeXBlJyAod2l0aCB2ZXJzaW9uIHRyaWdnZXJzKSBhZnRlciBMaW5rRGlyZWN0aW9uIGNoYW5nZWQgdG8gJ1JlZmVyZW5jaW5nSXNTb3VyY2UnIiA9PiBzdWIgewoKICAgICAgICAgICAgX0Fzc2VydENvbmZpZ0l0ZW1MaW5rcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiAgICA9PiAnU291cmNlJywKICAgICAgICAgICAgICAgIFRhcmdldElEICAgICA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uSUQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RMb2NhdGlvbjFJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYXNzZXJ0IHRoZXJlIGFyZSBub3cgdHdvIHZlcnNpb24gc25hcHNob3RzCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgVmVyc2lvbnMgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgICAgIFsgIldlbGxibGVjaHNIYXVzZW4kTGlua1R5cGUkUmFuZG9tSUQiICAgID0+IDIgXSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBfQXNzZXJ0Tm9MZWFrcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1zQ291bnQgICAgID0+ICRJbml0aWFsQ29uZmlnSXRlbXNDb3VudCArIDMsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTGlua3NDb3VudCA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1MaW5rc0NvdW50ICsgMSwKICAgICAgICAgICAgKTsKICAgICAgICB9OwoKICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgdXBkYXRlIHRoZSBzdWJzaWRpYXJ5IGxpbmsgdG8KICAgICAgICAjIHBvaW50IHRvIHRlc3Rsb2NhdGlvbjEgYWdhaW4KICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeSIgPT4gWwogICAgICAgICAgICAgICAgJFRlc3RMb2NhdGlvbjJJRAogICAgICAgICAgICBdLAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICApOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICAgICBzdWJ0ZXN0ICJiKSBBc3NlcnQgb24gQ0lzIHdpdGggTGlua1R5cGUgJyRMaW5rVHlwZScgKHdpdGggdmVyc2lvbiB0cmlnZ2VycykgYWZ0ZXIgUmVmZXJlbmNlVG9Db3VudHJ5IGNoYW5nZSIgPT4gc3ViIHsKCiAgICAgICAgICAgIF9Bc3NlcnRDb25maWdJdGVtTGlua3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1NvdXJjZScsCiAgICAgICAgICAgICAgICBUYXJnZXRJRCAgICAgPT4gJFRlc3RMb2NhdGlvbjJJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvbklEKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgTG9jYXRpb25JRCAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFzc2VydCB0aGVyZSBhcmUgbm93IHRocmVlIHZlcnNpb24gc25hcHNob3RzCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICBMb2NhdGlvbklEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgVmVyc2lvbnMgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgICAgIFsgIldlbGxibGVjaHNIYXVzZW4kTGlua1R5cGUkUmFuZG9tSUQiICAgID0+IDIgXSwKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAzIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtc0NvdW50ICAgICA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgKyAzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtzQ291bnQgPT4gJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCArIDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIGMpIG5vdyBzZXQgYSB2ZXJzaW9uIHRyaWdnZXIKICAgICAgICAjIG9uIHN1YnNpZGlhcnkgZm9yIGNoYW5nZXMgb2YKICAgICAgICAjIHRoZSBEZWZpbml0aW9uCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgb2soCiAgICAgICAgICAgIF9TZXRWZXJzaW9uVHJpZ2dlck9uU3Vic2lkaWFyeUNsYXNzKAogICAgICAgICAgICAgICAgVmFsdWUgPT4gWyJEZWZpbml0aW9uVXBkYXRlIl0KICAgICAgICAgICAgKSwKICAgICAgICAgICAgIlNldCBTdWJzaWRpYXJ5IFZlcnNpb24gVHJpZ2dlciB0byAnRGVmaW5pdGlvblVwZGF0ZScuIgogICAgICAgICk7CiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgICAgICMgc3dpdGNoIGJhY2sgdG8gcmVmZXJlbmNlIGlzIHRhcmdldAogICAgICAgICMgdGhpcyBub3cgdHJpZ2dlcnMgYSBuZXcgdmVyc2lvbgogICAgICAgIF9VcGRhdGVSZWZlcmVuY2VUb0NvdW50cnlERkxpbmtEaXJlY3Rpb24oIExpbmtEaXJlY3Rpb24gPT4gJ1JlZmVyZW5jaW5nSXNUYXJnZXQnICk7CgogICAgICAgIHN1YnRlc3QgImMpIEFzc2VydCBvbiBDSXMgd2l0aCBMaW5rVHlwZSAnJExpbmtUeXBlJyAod2l0aCB2ZXJzaW9uIHRyaWdnZXJzIG9uIENvdW50cnkgYW5kIERlZmluaXRpb25VcGRhdGUgdHJpZ2dlciBvbiBTdWJzaWRpYXJ5KSIgPT4gc3ViIHsKCiAgICAgICAgICAgIF9Bc3NlcnRDb25maWdJdGVtTGlua3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1RhcmdldCcsCiAgICAgICAgICAgICAgICBUYXJnZXRJRCAgICAgPT4gJFRlc3RMb2NhdGlvbjJJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvbklEKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgTG9jYXRpb25JRCAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFzc2VydCB0aGVyZSBhcmUgbm93IGZvdXIgdmVyc2lvbiBzbmFwc2hvdHMKICAgICAgICAgICAgX0Fzc2VydExvY2F0aW9uVmVyc2lvbigKICAgICAgICAgICAgICAgIExvY2F0aW9uSUQgPT4gJFRlc3RTdWJzaWRpYXJ5SUQsCiAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiAxIF0sCiAgICAgICAgICAgICAgICAgICAgWyAiV2VsbGJsZWNoc0hhdXNlbiRMaW5rVHlwZSRSYW5kb21JRCIgICAgPT4gMiBdLAogICAgICAgICAgICAgICAgICAgIFsgIk5pZWRlcmthbHRlbmtpcmNoZW4kTGlua1R5cGUkUmFuZG9tSUQiID0+IDMgXSwKICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiA0IF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtc0NvdW50ICAgICA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1zQ291bnQgKyAzLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtzQ291bnQgPT4gJEluaXRpYWxDb25maWdJdGVtTGlua3NDb3VudCArIDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIERGIHVwZGF0ZSBjaGFuZ2UgbGluayBkaXIgb24KICAgICAgICAjIFJlZmVyZW5jZVRvQ291bnRyeURGCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgIyBhbHNvIHRyaWdnZXJzIG5ldyB2ZXJzaW9uCiAgICAgICAgX1VwZGF0ZVJlZmVyZW5jZVRvQ291bnRyeURGTGlua0RpcmVjdGlvbiggTGlua0RpcmVjdGlvbiA9PiAnUmVmZXJlbmNpbmdJc1NvdXJjZScgKTsKCiAgICAgICAgc3VidGVzdAogICAgICAgICAgICAiYykgQXNzZXJ0IG9uIENJcyB3aXRoIExpbmtUeXBlICckTGlua1R5cGUnICh3aXRoIHZlcnNpb24gdHJpZ2dlcnMgb24gQ291bnRyeSBhbmQgU3Vic2lkaWFyeSkgYWZ0ZXIgTGlua0RpcmVjdGlvbiBjaGFuZ2VkIHRvICdSZWZlcmVuY2luZ0lzU291cmNlJyIgPT4gc3ViIHsKCiAgICAgICAgICAgICAgICBfQXNzZXJ0Q29uZmlnSXRlbUxpbmtzKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJ1NvdXJjZScsCiAgICAgICAgICAgICAgICAgICAgVGFyZ2V0SUQgICAgID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvbklEKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBMb2NhdGlvbklEICAgPT4gJFRlc3RMb2NhdGlvbjJJRCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhc3NlcnQgdGhlcmUgYXJlIG5vdyB0d28gdmVyc2lvbiBzbmFwc2hvdHMKICAgICAgICAgICAgICAgIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiAgICAgICAgICAgICAgICAgICAgTG9jYXRpb25JRCA9PiAkVGVzdFN1YnNpZGlhcnlJRCwKICAgICAgICAgICAgICAgICAgICBWZXJzaW9ucyAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gMSBdLAogICAgICAgICAgICAgICAgICAgICAgICBbICJXZWxsYmxlY2hzSGF1c2VuJExpbmtUeXBlJFJhbmRvbUlEIiAgICA9PiAyIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsgIk5pZWRlcmthbHRlbmtpcmNoZW4kTGlua1R5cGUkUmFuZG9tSUQiID0+IDMgXSwKICAgICAgICAgICAgICAgICAgICAgICAgWyAiTmllZGVya2FsdGVua2lyY2hlbiRMaW5rVHlwZSRSYW5kb21JRCIgPT4gNCBdLAogICAgICAgICAgICAgICAgICAgICAgICBbICJOaWVkZXJrYWx0ZW5raXJjaGVuJExpbmtUeXBlJFJhbmRvbUlEIiA9PiA1IF0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgX0Fzc2VydE5vTGVha3MoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbXNDb3VudCAgICAgPT4gJEluaXRpYWxDb25maWdJdGVtc0NvdW50ICsgMywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtTGlua3NDb3VudCA9PiAkSW5pdGlhbENvbmZpZ0l0ZW1MaW5rc0NvdW50ICsgMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH07CgogICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAgICAgICAgIyBjbGVhbnVwCiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgc3VidGVzdCAiQ2xlYW51cCBMaW5rVHlwZT0nJExpbmtUeXBlJzogZGVsZXRlIGFsbCB0ZXN0IENJIG9iamVjdHMiID0+IHN1YiB7CiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklECiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3RTdWJzaWRpYXJ5IGRlbGV0ZWQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBvaygKICAgICAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkVGVzdExvY2F0aW9uMUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklECiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3RMb2NhdGlvbjEgZGVsZXRlZCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG9rKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0TG9jYXRpb24ySUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGVzdExvY2F0aW9uMiBkZWxldGVkIgogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgIHN1YnRlc3QgIkFzc2VydCBubyBDSSBpdGVtcyBhbmQgbGlua3MgaGF2ZSBiZWVuIGxlYWtlZCIgPT4gc3ViIHsKICAgICAgICAgICAgbXkgJExpbmtlZENvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkxpbmtlZENvbmZpZ0l0ZW1zKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRUZXN0U3Vic2lkaWFyeUlELAoKICAgICAgICAgICAgICAgICMgVHlwZXMgICAgICAgID0+IFsgJExpbmtUeXBlIF0sICMgb3B0aW9uYWwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiA9PiAnQm90aCcsICAgICMgb25lIG9mIFNvdXJjZSwgVGFyZ2V0LCBCb3RoCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlzKCBzY2FsYXIgJExpbmtlZENvbmZpZ0l0ZW1zLT5AKiwgMCwgJ1RoZXJlIGFyZSBubyBDSSBsaW5rcyBsZWZ0JyApOwoKICAgICAgICAgICAgIyBhc3NlcnQgd2UgZGlkbid0IGxlYWsgY29uZmlnIGl0ZW1zIGFuZCBjb25maWcgaXRlbSBsaW5rcyBhZ2FpbiwgYWZ0ZXIgY2xlYW51cAogICAgICAgICAgICBfQXNzZXJ0Tm9MZWFrcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1zQ291bnQgICAgID0+ICRJbml0aWFsQ29uZmlnSXRlbXNDb3VudCwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rc0NvdW50ID0+ICRJbml0aWFsQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgICAgICk7CiAgICAgICAgfTsKICAgIH07Cn0KZG9uZV90ZXN0aW5nOwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBwcm9jZWR1cmFsIGhlbHBlciBtZXRob2RzCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIFByZXBhcmUgdGhlIEdlbmVyYWwgQ2F0YWxvZyBjbGFzc2VzIGJ5IHJlbG9hZGluZyAoYW5kIHVwZGF0aW5nKSB0aGUgd2hvbGUgcmVhZHkybG9hZCBidW5kbAoKc3ViIF9Mb2FkUmVhZHlUb0ltcG9ydENsYXNzZXMgewoKICAgIG15ICRIb21lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdIb21lJyk7CgogICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwoKICAgIG15ICRDb250ZW50ID0gJE1haW5PYmplY3QtPkZpbGVSZWFkKAoKICAgICAgICAjICAgICAgIExvY2F0aW9uID0+ICIkSG9tZS92YXIvaXRzbS9jb25maWdpdGVtY2xhc3Nlcy9JVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzIueW1sIiwKICAgICAgICBMb2NhdGlvbiA9PiAiJEhvbWUvc2NyaXB0cy90ZXN0L3NhbXBsZS9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvTGlua3MvdW5pdHRlc3QueW1sIiwKICAgICAgICBNb2RlICAgICA9PiAndXRmOCcsCiAgICApOwoKICAgIG9rKCAkQ29udGVudCwgIkNsYXNzZXMgaGF2ZSBiZWVuIGxvYWRlZC4iICk7CgogICAgJENvbnRlbnQgPSAkeyAkQ29udGVudCB8fCBcJycgfTsKCiAgICAkQ29udGVudCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkQ29udGVudCwKICAgICk7CgogICAgaWYgKCByZWYgJENvbnRlbnQgZXEgJ0hBU0gnICkgewogICAgICAgICRDb250ZW50ID0gWyRDb250ZW50XTsKICAgIH0KCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgaW1wb3J0IHRoZSBjbGFzcyBZQU1MIGZpbGUKICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q2xhc3NJbXBvcnQoCiAgICAgICAgQ29udGVudCAgICAgPT4gJENvbnRlbnQsCiAgICAgICAgQ2xhc3NFeGlzdHMgPT4gJ1VQREFURScsCiAgICApOwoKICAgIG9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICJDbGFzc2VzIGhhdmUgYmVlbiBpbXBvcnRlZC4iICk7CgogICAgcmV0dXJuOwp9CgpzdWIgX0ZldGNoQ29uZmlnSXRlbUNvdW50IHsKICAgIG15ICgkQ291bnQpID0gJERCT2JqZWN0LT5TZWxlY3RSb3dBcnJheSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBDT1VOVChpZCkgRlJPTSBjb25maWdpdGVtJywKICAgICk7CgogICAgcmV0dXJuICRDb3VudCAvLyAwOwp9CgpzdWIgX0ZldGNoQ29uZmlnSXRlbUxpbmtzQ291bnQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIENvdW50KGlkKSBGUk9NIGNvbmZpZ2l0ZW1fbGluaycsCiAgICApOwoKICAgIGlmICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSApIHsKICAgICAgICByZXR1cm4gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQoKc3ViIF9HZXRWZXJzaW9uSURGcm9tVmVyc2lvblN0cmluZyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJFZlcnNpb25zICAgICAgPSAkUGFyYW17VmVyc2lvbnN9OwogICAgbXkgJFZlcnNpb25TdHJpbmcgPSAkUGFyYW17VmVyc2lvblN0cmluZ307CgogICAgZm9yIG15ICRWZXJzaW9uIChAJFZlcnNpb25zKSB7CgogICAgICAgIGlmICggJFZlcnNpb24tPntWZXJzaW9uU3RyaW5nfSBlcSAkVmVyc2lvblN0cmluZyApIHsKICAgICAgICAgICAgcmV0dXJuICRWZXJzaW9uLT57VmVyc2lvbklEfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX0dlbmVyYWxDYXRhbG9nSUQgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICRDYXRhbG9nSXRlbSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtOYW1lfSwKICAgICk7CgogICAgcmV0dXJuICRDYXRhbG9nSXRlbS0+e0l0ZW1JRH07Cn0KCnN1YiBfU2V0VmVyc2lvblRyaWdnZXJPblN1YnNpZGlhcnlDbGFzcyB7CgogICAgbXkgJVBhcmFtID0gQF87CiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgIG15ICRSZXN1bHQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJFN1YnNpZGlhcnlDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgIFZhbHVlICA9PiAkVmFsdWUsCiAgICApOwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgIHJldHVybiAkUmVzdWx0Owp9CgojIGNhbGwgbGlrZQojIF9Bc3NlcnRMb2NhdGlvblZlcnNpb24oCiMgICAgTG9jYXRpb25JRCA9PiAkVGVzdExvY2FpdG9uMUlELAojICAgIFZlcnNpb25zID0+IFsKIyAgICAgICBbIldlbGxibGVjaHNIYXVzZW4kUmFuZG9tSUQiICAgID0+IDEgXSwKIyAgICAgICBbIk5pZWRlcmthbHRlbmtpcmNoZW4kUmFuZG9tSUQiID0+IDIgXSwKIyAgICAgXQojKTsKCnN1YiBfQXNzZXJ0TG9jYXRpb25WZXJzaW9uIHsKCiAgICBteSAlUGFyYW0gICAgICA9IEBfOwogICAgbXkgJFZlcnNpb25zICAgPSAkUGFyYW17VmVyc2lvbnN9OwogICAgbXkgJExvY2F0aW9uSUQgPSAkUGFyYW17TG9jYXRpb25JRH07CgogICAgbXkgJFZlcnNpb25MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25ab29tTGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJExvY2F0aW9uSUQsCiAgICApOwoKICAgIG15ICRWZXJzaW9uQ291bnQgPSBAJFZlcnNpb25zOwoKICAgIGlzKAogICAgICAgIHNjYWxhciBAJFZlcnNpb25MaXN0UmVmLAogICAgICAgICRWZXJzaW9uQ291bnQsCiAgICAgICAgIkNvdW50IG9mIFZlcnNpb25zIGlzICRWZXJzaW9uQ291bnQgZm9yICIgLiAkU3Vic2lkaWFyeUxvb2t1cHskTG9jYXRpb25JRH0gLiAiICgkTG9jYXRpb25JRCkiCiAgICApOwoKICAgIGZvciAoIDAgLi4gJFZlcnNpb25Db3VudCAtIDEgKSB7CgogICAgICAgIG15IEBWZXJzaW9uICAgICAgID0gJFZlcnNpb25zLT5bJF9dLT5AKjsKICAgICAgICBteSAkTmFtZSAgICAgICAgICA9ICRWZXJzaW9uWzBdOwogICAgICAgIG15ICRWZXJzaW9uU3RyaW5nID0gJFZlcnNpb25bMV07CgogICAgICAgIG15ICRWZXJzaW9uSUQgPSBfR2V0VmVyc2lvbklERnJvbVZlcnNpb25TdHJpbmcoCiAgICAgICAgICAgIFZlcnNpb25zICAgICAgPT4gJFZlcnNpb25MaXN0UmVmLAogICAgICAgICAgICBWZXJzaW9uU3RyaW5nID0+ICRWZXJzaW9uU3RyaW5nCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJExvY2F0aW9uSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIG15ICRSZWZlcmVuY2VkQ29uZmlnSXRlbUlEID0gJFRlc3RMb2NhdGlvbkNJVmVyc2lvbmVkLT57IkR5bmFtaWNGaWVsZF9Mb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnkifS0+WzBdOwoKICAgICAgICBteSAkUmVmZXJlbmNlZENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUmVmZXJlbmNlZENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlzKAogICAgICAgICAgICAkUmVmZXJlbmNlZENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgJE5hbWUsCiAgICAgICAgICAgICJWZXJzaW9uICIgLiAoICRfICsgMSApIC4gIiBSZWZlcmVuY2VUb0NvdW50cnkgREYgUG9pbnRzIHRvICckTmFtZScuIgogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgX1VwZGF0ZVJlZmVyZW5jZVRvQ291bnRyeURGTGlua0RpcmVjdGlvbiB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJExpbmtEaXJlY3Rpb24gPSAkUGFyYW17TGlua0RpcmVjdGlvbn0gfHwgJ1JlZmVyZW5jaW5nSXNTb3VyY2UnOwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJ0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeScgKTsKCiAgICBvayggJER5bmFtaWNGaWVsZCwgJ1JlZmVyZW5jZVRvQ291bnRyeSBERiBmb3VuZC4nICk7CgogICAgbXkgJENvbmZpZ0hhc2hSZWYgPSAkRHluYW1pY0ZpZWxkLT57Q29uZmlnfTsKCiAgICAkQ29uZmlnSGFzaFJlZi0+e0xpbmtEaXJlY3Rpb259ID0gJExpbmtEaXJlY3Rpb247CgogICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57SUR9LCAgICAgICMgbWFuZGF0b3J5CiAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sICAgICMnTmFtZUZvckZpZWxkJywgICMgbWFuZGF0b3J5CiAgICAgICAgTGFiZWwgICAgICA9PiAnYSBkZXNjcmlwdGlvbicsICAgICAgICAgICMgbWFuZGF0b3J5LCBsYWJlbCB0byBzaG93CiAgICAgICAgRmllbGRPcmRlciA9PiA0NzExLCAgICAgICAgICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBkaXNwbGF5IG9yZGVyCiAgICAgICAgRmllbGRUeXBlICA9PiAnQ29uZmlnSXRlbScsICAgICAgICAgICAgICMgbWFuZGF0b3J5LCBzZWxlY3RzIHRoZSBERiBiYWNrZW5kIHRvIHVzZSBmb3IgdGhpcyBmaWVsZAogICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywgICAgICAgICAjIHRoaXMgY29udHJvbHMgd2hpY2ggb2JqZWN0IHRoZSBkeW5hbWljIGZpZWxkIGxpbmtzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsb3cgb25seSBsb3dlcmNhc2UgbGV0dGVycwogICAgICAgIENvbmZpZyAgICAgPT4gJENvbmZpZ0hhc2hSZWYsICAgICAgICAgICAjIGl0IGlzIHN0b3JlZCBvbiBZQU1MIGZvcm1hdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvIGluZGl2aWR1YWwgYXJ0aWNsZXMsIG90aGVyd2lzZSB0byB0aWNrZXRzCiAgICAgICAgVmFsaWRJRCAgICA9PiAxLAogICAgICAgIFJlb3JkZXIgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAjIG9yIDAsIHRvIHRyaWdnZXIgcmVvcmRlciBmdW5jdGlvbiwgZGVmYXVsdCAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgMCBpcyBvbmx5IHVzZWQgaW50ZXJuYWxseSB0byBwcmV2ZW50IHJlZHVuZGFudCBleGVjdXRpb24gb24gb3JkZXIgY2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gdXBkYXRlIGV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGZvciAwCiAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgKTsKCiAgICBvayggJFN1Y2Nlc3MsICJSZWZlcmVuY2VUb0NvdW50cnkgREYgZGVmaW5pdGlvbiB1cGRhdGVkLCBsaW5rIGRpcmVjdGlvbiBjaGFuZ2VkIHRvICRMaW5rRGlyZWN0aW9uLiIgKTsKCiAgICBfU3luY0NvbmZpZ0l0ZW1ERnMoKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfU3luY0NvbmZpZ0l0ZW1ERnMgewoKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJ0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeScgKTsKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvblNldE91dE9mU3luYygKICAgICAgICBDbGFzc2VzID0+IHsKICAgICAgICAgICAgJFN1YnNpZGlhcnlDbGFzc0lEID0+IFsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0lEfSBdLAogICAgICAgIH0sCiAgICApOwogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25TeW5jKCk7CgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkV2ZW50SGFuZGxlclRyYW5zYWN0aW9uKCk7CgogICAgcmV0dXJuOwp9CgpzdWIgX0Fzc2VydENvbmZpZ0l0ZW1MaW5rcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJERpcmVjdGlvbiAgICA9ICRQYXJhbXtEaXJlY3Rpb259OwogICAgbXkgJFRhcmdldElEICAgICA9ICRQYXJhbXtUYXJnZXRJRH07CiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CgogICAgbXkgJExpbmtlZENvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkxpbmtlZENvbmZpZ0l0ZW1zKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAoKICAgICAgICAjIFR5cGVzICAgICAgICA9PiBbICRMaW5rVHlwZSBdLCAjIG9wdGlvbmFsCiAgICAgICAgRGlyZWN0aW9uID0+ICdCb3RoJywgICAgIyBvbmUgb2YgU291cmNlLCBUYXJnZXQsIEJvdGgKICAgICAgICBVc2VySUQgICAgPT4gJFVzZXJJRCwKICAgICk7CgogICAgaXMoIHNjYWxhciAkTGlua2VkQ29uZmlnSXRlbXMtPkAqLCAgICAgICAgICAgMSwgICAgICAgICAgJ1RoZXJlIGlzIG9uZSBDSSBsaW5rIGZvciAnIC4gJFN1YnNpZGlhcnlMb29rdXB7JENvbmZpZ0l0ZW1JRH0gKTsKICAgIGlzKCAkTGlua2VkQ29uZmlnSXRlbXMtPlswXS0+e0RpcmVjdGlvbn0sICAgICREaXJlY3Rpb24sICJDSSBMaW5rIERpcmVjdGlvbiBpcyAnJERpcmVjdGlvbicuIiApOwogICAgaXMoICRMaW5rZWRDb25maWdJdGVtcy0+WzBdLT57Q29uZmlnSXRlbUlEfSwgJFRhcmdldElELCAgIkNJIExpbmsgcG9pbnRzIHRvIiAuICRDb3VudHJ5TG9va3VweyRUYXJnZXRJRH0gLiAiICgkVGFyZ2V0SUQpLiIgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBfQXNzZXJ0Tm9MZWFrcyB7CgogICAgbXkgJVBhcmFtID0gQF87CgogICAgbXkgJEV4cGVjdGVkQ29uZmlnSXRlbXNDb3VudCAgICAgPSAkUGFyYW17Q29uZmlnSXRlbXNDb3VudH07CiAgICBteSAkRXhwZWN0ZWRDb25maWdJdGVtTGlua3NDb3VudCA9ICRQYXJhbXtDb25maWdJdGVtTGlua3NDb3VudH07CgogICAgbXkgJEN1cnJlbnRDb25maWdJdGVtc0NvdW50ICAgICA9IF9GZXRjaENvbmZpZ0l0ZW1Db3VudCgpOwogICAgbXkgJEN1cnJlbnRDb25maWdJdGVtTGlua3NDb3VudCA9IF9GZXRjaENvbmZpZ0l0ZW1MaW5rc0NvdW50KCk7CgogICAgaXMoCiAgICAgICAgJEN1cnJlbnRDb25maWdJdGVtc0NvdW50LAogICAgICAgICRFeHBlY3RlZENvbmZpZ0l0ZW1zQ291bnQsCiAgICAgICAgIk5vIENJIGhhdmUgYmVlbiBsZWFrZWQiCiAgICApOwoKICAgIGlzKAogICAgICAgICRDdXJyZW50Q29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgJEV4cGVjdGVkQ29uZmlnSXRlbUxpbmtzQ291bnQsCiAgICAgICAgIk5vIENJIGxpbmtzIGhhdmUgYmVlbiBsZWFrZWQiCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIF9Bc3NlcnRMb2NhdGlvbklEIHsKCiAgICBteSAlUGFyYW0gPSBAXzsKCiAgICBteSAkTG9jYXRpb25JRCAgID0gJFBhcmFte0xvY2F0aW9uSUR9OwogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRQYXJhbXtDb25maWdJdGVtSUR9OwoKICAgIG15ICRVcGRhdGVkID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgbXkgJFRlc3RMb2NhdGlvbklkID0gJFVwZGF0ZWQtPnsiRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeSJ9LT5bMF07CiAgICBpcygKICAgICAgICAkVGVzdExvY2F0aW9uSWQsCiAgICAgICAgJExvY2F0aW9uSUQsCiAgICAgICAgIkNJIFJlZmVyZW5jZVRvQ291bnR5IERGIGdvdCB1cGRhdGVkIHRvICIgLiAkQ291bnRyeUxvb2t1cHskTG9jYXRpb25JRH0gLiAiICgkTG9jYXRpb25JRCkiCiAgICApOwoKICAgIHJldHVybjsKfQo=</File>
        <File Location="scripts/test/ITSMConfigItemLinkTest.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKbXkgJFNlcnZpY2VPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKTsKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkTGlua09iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgJENvbmZpZ0l0ZW1OYW1lID0gIlVuaXRUZXN0Q29uZmlnSXRlbV8kUmFuZG9tSUQiOwpteSAkU2VydmljZU5hbWUgICAgPSAiVW5pdFRlc3RTZXJ2aWNlXyRSYW5kb21JRCI7CgpzdWIgQ2hlY2tFeHBlY3RlZFJlc3VsdHMgewogICAgbXkgKCVQYXJhbSkgPSBAXzsKCiAgICBteSAlRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyA9ICV7ICRQYXJhbXtFeHBlY3RlZEluY2lkZW50U3RhdGVzfSB9OwogICAgbXkgJU9iamVjdE5hbWVTdWZmaXgySUQgICAgPSAleyAkUGFyYW17T2JqZWN0TmFtZVN1ZmZpeDJJRH0gfTsKCiAgICAjIGNoZWNrIHRoZSByZXN1bHRzCiAgICBmb3IgbXkgJE9iamVjdCAoIHNvcnQga2V5cyAlRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyApIHsKCiAgICAgICAgaWYgKCAkT2JqZWN0IGVxICdJVFNNQ29uZmlnSXRlbScgKSB7CgogICAgICAgICAgICBmb3IgbXkgJE5hbWVTdWZmaXggKCBzb3J0IGtleXMgJXsgJEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXN7JE9iamVjdH0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBjb25maWcgaXRlbSBkYXRhCiAgICAgICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHskT2JqZWN0fS0+eyROYW1lU3VmZml4fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayB0aGUgcmVzdWx0CiAgICAgICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZX0sCiAgICAgICAgICAgICAgICAgICAgJEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXN7JE9iamVjdH0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgICAgICAgICAgICAgIkNoZWNrIGluY2lkZW50IHN0YXRlIG9mIGNvbmZpZyBpdGVtICROYW1lU3VmZml4LiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJE9iamVjdCBlcSAnU2VydmljZScgKSB7CgogICAgICAgICAgICBmb3IgbXkgJE5hbWVTdWZmaXggKCBzb3J0IGtleXMgJXsgJEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXN7JE9iamVjdH0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBzZXJ2aWNlIGRhdGEgKGluY2x1ZGluZyB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSkKICAgICAgICAgICAgICAgIG15ICVTZXJ2aWNlRGF0YSA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlR2V0KAogICAgICAgICAgICAgICAgICAgIFNlcnZpY2VJRCAgICAgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7JE9iamVjdH0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgICAgICAgICAgICAgSW5jaWRlbnRTdGF0ZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayB0aGUgcmVzdWx0CiAgICAgICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICAgICAkU2VydmljZURhdGF7Q3VySW5jaVN0YXRlfSwKICAgICAgICAgICAgICAgICAgICAkRXhwZWN0ZWRJbmNpZGVudFN0YXRlc3skT2JqZWN0fS0+eyROYW1lU3VmZml4fSwKICAgICAgICAgICAgICAgICAgICAiQ2hlY2sgaW5jaWRlbnQgc3RhdGUgb2Ygc2VydmljZSAkTmFtZVN1ZmZpeC4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIERvbmUgZm9yIHNlY29uZCBydW4gKGFmdGVyIHJlY2FsY3VsYXRpb24pLgogICAgcmV0dXJuIDEgaWYgJFBhcmFte1JlY2FsY3VsYXRlfTsKCiAgICAjIFRyaWdnZXIgcmVjYWxjdWxhdGlvbiBvZiBpbmNpZGVudCBzdGF0ZXMgZm9yIGVhY2ggY29uZmlnIGl0ZW0uCiAgICBteSAkRXhpdENvZGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkluY2lkZW50U3RhdGU6OlJlY2FsY3VsYXRlJyktPkV4ZWN1dGUoKTsKICAgIGlzKAogICAgICAgICRFeGl0Q29kZSwKICAgICAgICAwLAogICAgICAgICJBZG1pbjo6SVRTTTo6SW5jaWRlbnRTdGF0ZTo6UmVjYWxjdWxhdGUgZXhpdCBjb2RlIgogICAgKTsKCiAgICAjIENoZWNrIHJlc3VsdHMgYWdhaW4gYWZ0ZXIgcmVjYWxjdWxhdGlvbiAoY2FsbCBteXNlbGYgcmVjdXJzaXZlbHkpLgogICAgIyBUaGVyZSBpcyBubyBjaGFuZ2UgaW4gdGhlIGV4cGVjdGVkIHJlc3VsdC4KICAgIENoZWNrRXhwZWN0ZWRSZXN1bHRzKAogICAgICAgICVQYXJhbSwKICAgICAgICBSZWNhbGN1bGF0ZSA9PiAxLAogICAgKTsKCiAgICAjIERvbmUsIHR3byBydW5zIHdlcmUgZXhlY3V0ZWQKICAgIHJldHVybiAxOwp9CgojIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKbXkgJERlcGxTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCik7Cm15ICVEZXBsU3RhdGVMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskRGVwbFN0YXRlTGlzdH07CgojIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0Cm15ICRJbmNpU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKKTsKbXkgJUluY2lTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAleyRJbmNpU3RhdGVMaXN0fTsKCiMgRGVmaW5pdGlvbnMgYXJlIGFkZGVkIGFzIFlBTUwgc3RyaW5ncwojIGRlZmluZSB0aGUgZmlyc3QgdGVzdCBkZWZpbml0aW9uIChiYXNpYyBkZWZpbml0aW9uIHdpdGhvdXQgRHluYW1pY0ZpZWxkcykKbXkgQENvbmZpZ0l0ZW1EZWZpbml0aW9ucyA9ICg8PCdFTkRfWUFNTCcpOwotLS0KUGFnZXM6CiAgLSBOYW1lOiBQYWdlMQogICAgSW50ZXJmYWNlczogW10KICAgIExheW91dDoKICAgICAgQ29sdW1uczogMwogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IFNlY3Rpb24xCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMQogIC0gTmFtZTogUGFnZTIKICAgIExheW91dDoKICAgICAgQ29sdW1uczogMwogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IFNlY3Rpb24yCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMgoKU2VjdGlvbnM6CiAgU2VjdGlvbjE6CiAgICBDb250ZW50OgogICAgICAgLSBIZWFkZXI6ICJUaGlzIGlzIHNlY3Rpb24gMSIKICBTZWN0aW9uMjoKICAgIENvbnRlbnQ6CiAgICAgICAtIEhlYWRlcjogIlRoaXMgaXMgc2VjdGlvbiAyIgpFTkRfWUFNTAoKIyBhZGQgYSBnZW5lcmFsIGNhdGFsb2cgdGVzdCBsaXN0Cm15ICRDb25maWdJdGVtR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgIEdyb3VwICA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgIFVzZXJJRCA9PiAxLAopOwpvayggJENvbmZpZ0l0ZW1Hcm91cElELCAnZ290IGdyb3VwIGlkIGZvciBpdHNtLWNvbmZpZ2l0ZW0nICk7CgojIGFkZCB0aGUgdGVzdCBjbGFzc2VzLCBhY3R1YWxseSBvbmx5IG9uZSB0ZXN0IGNsYXNzCm15ICggQENvbmZpZ0l0ZW1DbGFzc0lEcywgQENvbmZpZ0l0ZW1DbGFzc2VzLCBAQ29uZmlnSXRlbURlZmluaXRpb25JRHMgKTsKZm9yIG15ICREZWZpbml0aW9uIChAQ29uZmlnSXRlbURlZmluaXRpb25zKSB7CgogICAgIyBnZW5lcmF0ZSBhIHJhbmRvbSBuYW1lCiAgICBteSAkQ2xhc3NOYW1lID0gJ1VuaXRUZXN0JyAuICRIZWxwZXItPkdldFJhbmRvbUlEOwogICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzZXMsICRDbGFzc05hbWU7CgogICAgIyBhZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MKICAgIG15ICRDbGFzc0lEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICAgID0+ICRDbGFzc05hbWUsCiAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CiAgICBvayggJENsYXNzSUQsICJBZGRlZCBjbGFzcyAkQ2xhc3NOYW1lIHRvIHRoZSBnZW5lcmFsIGNhdGFsb2ciICk7CgogICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1Blcm1pc3Npb24nLAogICAgICAgIFZhbHVlICA9PiBbJENvbmZpZ0l0ZW1Hcm91cElEXSwKICAgICk7CgogICAgIyBTZXQgdmVyc2lvbiBzdHJpbmcgbW9kdWxlLgogICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgICAgIFZhbHVlICA9PiBbJ0luY3JlbWVudGFsJ10sCiAgICApOwoKICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc0lEcywgJENsYXNzSUQ7CgogICAgIyBhZGQgYSBkZWZpbml0aW9uIHRvIHRoZSBjbGFzcwogICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbiwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwogICAgb2soICRSZXN1bHQtPntTdWNjZXNzfSwgICAgICAiQWRkZWQgYSBkZWZpbml0aW9uLCBzdWNjZXNzIHdhcyByZXBvcnRlZCIgKTsKICAgIG9rKCAkUmVzdWx0LT57RGVmaW5pdGlvbklEfSwgIkFkZGVkIGEgZGVmaW5pdGlvbiwgZ290IGEgZGVmaW5pdGlvbiBJRCIgKTsKICAgIHB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzLCAkUmVzdWx0LT57RGVmaW5pdGlvbklEfTsKfQoKIyBnZXQgZGVmaW5pdGlvbiBmb3IgJ1Rlc3QnIGNsYXNzCm15ICREZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCik7CnJlZl9vayggJERlZmluaXRpb25SZWYsICdIQVNIJywgJ2FkZGVkIGRlZmluaXRpb24gY291bGQgYmUgcmV0cmlldmVkJyApOwoKbXkgJU9iamVjdE5hbWVTdWZmaXgySUQ7CgojIGNyZWF0ZSBzb21lIHRlc3QgY29uZmlnIGl0ZW1zLCBhbGwgdGhlIGNvbmZpZyBpdGVtcyBhcmUgb3BlcmF0aW9uYWwgaW5pdGlhbGx5CmZvciBteSAkTmFtZVN1ZmZpeCAoIDEgLi4gNywgcXcoQSBCIEMgRCBFIEYgRykgKSB7CgogICAgIyBhZGQgYSBjb25maWdpdGVtCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gam9pbiggJ18nLCAkQ29uZmlnSXRlbU5hbWUsICdUZXN0SXRlbScsICROYW1lU3VmZml4ICksCiAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgKTsKICAgIG9rKCAkQ29uZmlnSXRlbUlELCAiQWRkZWQgY29uZmlnaXRlbSBpZCAkQ29uZmlnSXRlbUlELiIgKTsKCiAgICAjIHJlbWVtYmVyIHRoZSBjb25maWcgaXRlbSBpZAogICAgJE9iamVjdE5hbWVTdWZmaXgySUR7SVRTTUNvbmZpZ0l0ZW19LT57JE5hbWVTdWZmaXh9ID0gJENvbmZpZ0l0ZW1JRDsKfQoKIyBjcmVhdGUgc2VydmljZXMKbXkgQFNlcnZpY2VJRHM7CmZvciBteSAkTmFtZVN1ZmZpeCAoIDEgLi4gMiApIHsKCiAgICBteSAkU2VydmljZUlEID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFNlcnZpY2VOYW1lIC4gJ18nIC4gJE5hbWVTdWZmaXgsCiAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgIFR5cGVJRCAgICAgID0+IDEsCiAgICAgICAgQ3JpdGljYWxpdHkgPT4gJzMgbm9ybWFsJywKICAgICk7CiAgICBvayggJFNlcnZpY2VJRCwgIkFkZGVkIHNlcnZpY2UgaWQgJFNlcnZpY2VJRC4iICk7CgogICAgIyByZW1lbWJlciB0aGUgc2VydmljZSBpZAogICAgJE9iamVjdE5hbWVTdWZmaXgySUR7U2VydmljZX0tPnskTmFtZVN1ZmZpeH0gPSAkU2VydmljZUlEOwoKICAgIHB1c2ggQFNlcnZpY2VJRHMsICRTZXJ2aWNlSUQ7Cn0KCiMgcmVhZCB0aGUgb3JpZ2luYWwgc2V0dGluZyBmb3IgSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbgpteSAkT3JpZ0luY2lkZW50TGlua1R5cGVEaXJlY3Rpb25TZXR0aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNOjpDb3JlOjpJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uJyk7CgojIHNldCBuZXcgY29uZmlnIGZvciBJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uJywKICAgIFZhbHVlID0+IHsKICAgICAgICBEZXBlbmRzT24gPT4gJ1RhcmdldCcsCiAgICAgICAgSW5jbHVkZXMgID0+ICdUYXJnZXQnLAogICAgfSwKKTsKCiMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rIERpYWdyYW0KIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIwojCiMgICAgICAgICAgICAgICAgICAgICA2ICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2UgMQojICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgojICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAojICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAojICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAojICAgICAgICAgQyA8KioqKioqKiogNSAtLS0tLS0+IDQgLS0tLS0tPiAzIC0tLS0tLT4gMSAqKioqKioqKio+IEEgKioqKioqKj4gRiAqKioqKioqKioqPiBHCiMgICAgICAgICAqICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICBeCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBCICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAqICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAqICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAqICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICB2ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB2ICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICBEICoqKioqKioqPiA3ICAgICAgICAgICAgICAgICAgICstLS0tLS0tPiAyICoqKioqKioqKioqKiAgICAgICAgICBFCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlIDIKIwojCiMKIwojICBFeHBsYW5hdGlvbjoKIyAgICAgICAgICAgICAgIDEgLi4gNyBhbmQgQSAuLiBHIGFyZSBJVFNNQ29uZmlnSXRlbXMuIFRoZSBhcnJvdyBpbmRpY2F0ZXMgaG93IGluY2lkZW50cyBhbmQgd2FybmluZ3MKIyAgICAgICAgICAgICAgIGFyZSBwcm9wYWdhdGVkIGluIHRoZSBncmFwaC4KIwojICAgICAgICAgICAgICAgRGVwZW5kc09uIHJlbGF0aW9uc2hpcHMgYXJlIHNob3duIGFzIC0tLS0tPgojICAgICAgICAgICAgICAgSW5jbHVkZXMgIHJlbGF0aW9uc2hpcHMgYXJlIHNob3duIGFzICoqKioqPgojCiMgICAgICAgICAgICAgICBUaGUgY29uZmlnIGl0ZW0gNSAoU291cmNlKSBoYXMgYSBEZXBlbmRzT24gcmVsYXRpb25zaGlwIHdpdGggY29uZmlnIGl0ZW0gNiAoVGFyZ2V0KS4KIyAgICAgICAgICAgICAgIFdoZW4gNiBoYXMgYW4gaW5jaWRlbnQgdGhlbiB0aGUgd2FybmluZyBmbGFnIG11c3QgYmUgcmFpc2VkIG9uIDUuIFRoZXJlZm9yZSB0aGUgZGlyZWN0aW9uCiMgICAgICAgICAgICAgICBvZiBwcm9wYWdhdGlvbiBmb3IgRGVwZW5kc09uIG11c3QgYmUgZnJvbSBUYXJnZXQgdG8gU291cmNlLiBJbiB0aGUgY29kZSB0aGlzIGlzIGluZGljYXRlZAojICAgICAgICAgICAgICAgYnkgIkRpcmVjdGlvbiA9PiAnU291cmNlJy4KIwojICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgZGVmaW5lIHRoZSBsaW5rcyBiZXR3ZWVuIENJcyBhbmQgU2VydmljZXMKbXkgJUxpbmtzID0gKAogICAgRGVwZW5kc09uID0+IHsKICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICc3JyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJzUnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzYnID0+IHsgICAgIyA2IGlzIHRoZSB0YXJnZXQgZm9yIERlcGVuZHNPbgogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWyc1J10sICAgICMgNSBpcyB0aGUgc291cmNlIG9mIERlcGVuZHNPbgogICAgICAgICAgICB9LAogICAgICAgICAgICAnNScgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWyc0J10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICc0JyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJzMnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzMnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsgJzEnLCAnMicgXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzInID0+IHsKICAgICAgICAgICAgICAgIFNlcnZpY2UgPT4gWycyJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBTZXJ2aWNlID0+IHsKICAgICAgICAgICAgJzEnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnMSddLAogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgIH0sCiAgICBJbmNsdWRlcyA9PiB7CiAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAnNScgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWydDJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdDJyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJ0QnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ0QnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnNyddLAogICAgICAgICAgICB9LAogICAgICAgICAgICAnQicgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWycyJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICcyJyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJ0EnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzEnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnQSddLAogICAgICAgICAgICB9LAogICAgICAgICAgICAnQScgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWydGJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdGJyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJ0cnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ0UnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnRiddLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAopOwoKIyBsaW5rIHRoZSBjb25maWcgaXRlbXMgYW5kIHNlcnZpY2VzIGFzIHNob3duIGluIHRoZSBkaWFncmFtCmZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJUxpbmtzICkgewogICAgZm9yIG15ICRUYXJnZXRPYmplY3QgKCBzb3J0IGtleXMgJExpbmtzeyRMaW5rVHlwZX0tPiUqICkgewogICAgICAgIGZvciBteSAkVGFyZ2V0S2V5ICggc29ydCBrZXlzICRMaW5rc3skTGlua1R5cGV9LT57JFRhcmdldE9iamVjdH0tPiUqICkgewogICAgICAgICAgICBmb3IgbXkgJFNvdXJjZU9iamVjdCAoIHNvcnQga2V5cyAkTGlua3N7JExpbmtUeXBlfS0+eyRUYXJnZXRPYmplY3R9LT57JFRhcmdldEtleX0tPiUqICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRTb3VyY2VLZXkgKCAkTGlua3N7JExpbmtUeXBlfS0+eyRUYXJnZXRPYmplY3R9LT57JFRhcmdldEtleX0tPnskU291cmNlT2JqZWN0fS0+QCogKSB7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBsaW5rcwogICAgICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAkU291cmNlT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VLZXkgICAgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7JFNvdXJjZU9iamVjdH0tPnskU291cmNlS2V5fSwKICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICRUYXJnZXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHskVGFyZ2V0T2JqZWN0fS0+eyRUYXJnZXRLZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBvayggJFN1Y2Nlc3MsICJMaW5rQWRkKCkgLSAkU291cmNlT2JqZWN0OiRTb3VyY2VLZXkgbGlua2VkIHdpdGggJFRhcmdldE9iamVjdDokVGFyZ2V0S2V5IHdpdGggTGlua1R5cGUgJyRMaW5rVHlwZScuIiApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgojIHNldCBDSTYgdG8gIkluY2lkZW50IiBhbmQgY2hlY2sgdGhlIHJlc3VsdHMKc3VidGVzdCAnQ0k2IHNldCB0byBJbmNpZGVudCB3aXRoIENvbmZpZ0l0ZW1VcGRhdGUoKScgPT4gc3ViIHsKICAgIG15ICROYW1lU3VmZml4ICAgID0gNjsKICAgIG15ICRJbmNpZGVudFN0YXRlID0gJ0luY2lkZW50JzsKCiAgICAjIGNoYW5nZSBpbmNpZGVudCBzdGF0ZQogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHtJVFNNQ29uZmlnSXRlbX0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7JEluY2lkZW50U3RhdGV9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgIG9rKCAkVmVyc2lvbklELCAiU2V0IGNvbmZpZyBpdGVtIGlkICROYW1lU3VmZml4IHRvIHN0YXRlICckSW5jaWRlbnRTdGF0ZScuIiApOwoKICAgIENoZWNrRXhwZWN0ZWRSZXN1bHRzKAogICAgICAgIEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXMgPT4gewogICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ1dhcm5pbmcnLCAgICAgICAjIGJlY2F1c2UgMSBkZXBlbmRzIG9uIDMKICAgICAgICAgICAgICAgICcyJyA9PiAnV2FybmluZycsICAgICAgICMgYmVjYXVzZSAyIGRlcGVuZHMgb24gMwogICAgICAgICAgICAgICAgJzMnID0+ICdXYXJuaW5nJywgICAgICAgIyBiZWNhdXNlIDMgZGVwZW5kcyBvbiA0CiAgICAgICAgICAgICAgICAnNCcgPT4gJ1dhcm5pbmcnLCAgICAgICAjIGJlY2F1c2UgNCBkZXBlbmRzIG9uIDUKICAgICAgICAgICAgICAgICc1JyA9PiAnV2FybmluZycsICAgICAgICMgYmVjYXVzZSA1IGRlcGVuZHMgb24gNgogICAgICAgICAgICAgICAgJzYnID0+ICdJbmNpZGVudCcsICAgICAgIyBiZWNhdXNlIGl0IHdhcyBleHBsaWNpdGx5IHNldAogICAgICAgICAgICAgICAgJzcnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdCJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0MnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VydmljZSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ1dhcm5pbmcnLCAgICAgICAjIGJlY2F1c2Ugb2YgY29ubmVjdGlvbiB3aXRoIENJIDEKICAgICAgICAgICAgICAgICcyJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT2JqZWN0TmFtZVN1ZmZpeDJJRCA9PiBcJU9iamVjdE5hbWVTdWZmaXgySUQsCiAgICApOwp9OwoKIyBzZXQgQ0k2IGJhY2sgdG8gIk9wZXJhdGlvbmFsIiBhbmQgY2hlY2sgdGhlIHJlc3VsdHMKc3VidGVzdCAnQ0k2IHNldCB0byBiYWNrIHRvIE9wZXJhdGlvbmFsIHdpdGggVmVyc2lvbkFkZCgpJyA9PiBzdWIgewogICAgbXkgJE5hbWVTdWZmaXggICAgPSA2OwogICAgbXkgJEluY2lkZW50U3RhdGUgPSAnT3BlcmF0aW9uYWwnOwoKICAgICMgY2hhbmdlIGluY2lkZW50IHN0YXRlCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRPYmplY3ROYW1lU3VmZml4MklEe0lUU01Db25maWdJdGVtfS0+eyROYW1lU3VmZml4fSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lIC4gJ19UZXN0SXRlbV8nIC4gJE5hbWVTdWZmaXgsCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7JEluY2lkZW50U3RhdGV9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgIG9rKCAkVmVyc2lvbklELCAiU2V0IGNvbmZpZyBpdGVtIGlkICROYW1lU3VmZml4IHRvIHN0YXRlICckSW5jaWRlbnRTdGF0ZScuIiApOwoKICAgIENoZWNrRXhwZWN0ZWRSZXN1bHRzKAogICAgICAgIEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXMgPT4gewogICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICcyJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzMnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc1JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzYnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdBJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0InID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdEJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0UnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdHJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXJ2aWNlID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzInID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPYmplY3ROYW1lU3VmZml4MklEID0+IFwlT2JqZWN0TmFtZVN1ZmZpeDJJRCwKICAgICk7Cgp9OwoKIyBzZXQgQ0kxIHRvICJJbmNpZGVudCIgYW5kIGNoZWNrIHRoZSByZXN1bHRzCnN1YnRlc3QgJ0NJMSBzZXQgdG8gSW5jaWRlbnQgd2l0aCBWZXJzaW9uQWRkKCknID0+IHN1YiB7CiAgICBteSAkTmFtZVN1ZmZpeCAgICA9IDE7CiAgICBteSAkSW5jaWRlbnRTdGF0ZSA9ICdJbmNpZGVudCc7CgogICAgIyBjaGFuZ2UgaW5jaWRlbnQgc3RhdGUKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7SVRTTUNvbmZpZ0l0ZW19LT57JE5hbWVTdWZmaXh9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUgLiAnX1Rlc3RJdGVtXycgLiAkTmFtZVN1ZmZpeCwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXskSW5jaWRlbnRTdGF0ZX0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgb2soICRWZXJzaW9uSUQsICJTZXQgY29uZmlnIGl0ZW0gaWQgJE5hbWVTdWZmaXggdG8gc3RhdGUgJyRJbmNpZGVudFN0YXRlJy4iICk7CgogICAgQ2hlY2tFeHBlY3RlZFJlc3VsdHMoCiAgICAgICAgRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyA9PiB7CiAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgJzInID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnMycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc0JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzUnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc3JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0EnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdCJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0MnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdHJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlcnZpY2UgPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9iamVjdE5hbWVTdWZmaXgySUQgPT4gXCVPYmplY3ROYW1lU3VmZml4MklELAogICAgKTsKfTsKCiMgc2V0IENJNSB0byAiSW5jaWRlbnQiIGFuZCBjaGVjayB0aGUgcmVzdWx0cyAoQ0kxIGlzIHN0aWxsIGluICJJbmNpZGVudCIpCnN1YnRlc3QgJ0NJNiBzZXQgdG8gSW5jaWRlbnQgd2l0aCBWZXJzaW9uQWRkKCknID0+IHN1YiB7CiAgICBteSAkTmFtZVN1ZmZpeCAgICA9IDU7CiAgICBteSAkSW5jaWRlbnRTdGF0ZSA9ICdJbmNpZGVudCc7CgogICAgIyBjaGFuZ2UgaW5jaWRlbnQgc3RhdGUKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7SVRTTUNvbmZpZ0l0ZW19LT57JE5hbWVTdWZmaXh9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUgLiAnX1Rlc3RJdGVtXycgLiAkTmFtZVN1ZmZpeCwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXskSW5jaWRlbnRTdGF0ZX0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgb2soICRWZXJzaW9uSUQsICJTZXQgY29uZmlnIGl0ZW0gaWQgJE5hbWVTdWZmaXggdG8gc3RhdGUgJyRJbmNpZGVudFN0YXRlJy4iICk7CgogICAgQ2hlY2tFeHBlY3RlZFJlc3VsdHMoCiAgICAgICAgRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyA9PiB7CiAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgJzInID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICczJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnNCcgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJzUnID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAnNicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc3JyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnQScgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0InID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQycgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0QnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdHJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlcnZpY2UgPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9iamVjdE5hbWVTdWZmaXgySUQgPT4gXCVPYmplY3ROYW1lU3VmZml4MklELAogICAgKTsKCn07CgojIHNldCBDSTEgdG8gIk9wZXJhdGlvbmFsIiBhbmQgY2hlY2sgdGhlIHJlc3VsdHMgKENJNSBpcyBzdGlsbCBpbiAiSW5jaWRlbnQiKQpzdWJ0ZXN0ICdDSTEgc2V0IHRvIE9wZXJhdGlvbmFsIHdpdGggVmVyc2lvbkFkZCcgPT4gc3ViIHsKICAgIG15ICROYW1lU3VmZml4ICAgID0gMTsKICAgIG15ICRJbmNpZGVudFN0YXRlID0gJ09wZXJhdGlvbmFsJzsKCiAgICAjIGNoYW5nZSBpbmNpZGVudCBzdGF0ZQogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHtJVFNNQ29uZmlnSXRlbX0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSAuICdfVGVzdEl0ZW1fJyAuICROYW1lU3VmZml4LAogICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNleyRJbmNpZGVudFN0YXRlfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICBvayggJFZlcnNpb25JRCwgIlNldCBjb25maWcgaXRlbSBpZCAkTmFtZVN1ZmZpeCB0byBzdGF0ZSAnJEluY2lkZW50U3RhdGUnLiIgKTsKCiAgICBDaGVja0V4cGVjdGVkUmVzdWx0cygKICAgICAgICBFeHBlY3RlZEluY2lkZW50U3RhdGVzID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICcyJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnMycgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJzQnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICc1JyA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgJzYnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNycgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0EnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdDJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0UnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdHJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXJ2aWNlID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9iamVjdE5hbWVTdWZmaXgySUQgPT4gXCVPYmplY3ROYW1lU3VmZml4MklELAogICAgKTsKfTsKCiMgc2V0IENJNSB0byAiT3BlcmF0aW9uYWwiIGFuZCBjaGVjayB0aGUgcmVzdWx0cwpzdWJ0ZXN0ICdDSTUgc2V0IHRvIE9wZXJhdGlvbmFsIHdpdGggVmVyc2lvbkFkZCcgPT4gc3ViIHsKICAgIG15ICROYW1lU3VmZml4ICAgID0gNTsKICAgIG15ICRJbmNpZGVudFN0YXRlID0gJ09wZXJhdGlvbmFsJzsKCiAgICAjIGNoYW5nZSBpbmNpZGVudCBzdGF0ZQogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHtJVFNNQ29uZmlnSXRlbX0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSAuICdfVGVzdEl0ZW1fJyAuICROYW1lU3VmZml4LAogICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNleyRJbmNpZGVudFN0YXRlfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICBvayggJFZlcnNpb25JRCwgIlNldCBjb25maWcgaXRlbSBpZCAkTmFtZVN1ZmZpeCB0byBzdGF0ZSAnJEluY2lkZW50U3RhdGUnLiIgKTsKCiAgICBDaGVja0V4cGVjdGVkUmVzdWx0cygKICAgICAgICBFeHBlY3RlZEluY2lkZW50U3RhdGVzID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICczJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzQnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc2JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzcnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdCJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0MnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VydmljZSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICcyJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT2JqZWN0TmFtZVN1ZmZpeDJJRCA9PiBcJU9iamVjdE5hbWVTdWZmaXgySUQsCiAgICApOwp9OwoKIyByZXNldCB0aGUgZW5hYmxlZCBzZXR0aW5nIGZvciBJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uIHRvIGl0cyBvcmlnaW5hbCB2YWx1ZQokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbicsCiAgICBWYWx1ZSA9PiAkT3JpZ0luY2lkZW50TGlua1R5cGVEaXJlY3Rpb25TZXR0aW5nLAopOwoKIyBDaGVjayBDSSdzIGluY2lkZW50IHN0YXRlIHVwZGF0ZSBhZnRlciAnTGlua0FkZCcgYWN0aW9uIChzZWUgYnVnIzE0MzgyKS4KZGlhZyAiVGVzdHMgZm9yIFNldEluY2lkZW50U3RhdGVPbkxpbmsiOwoKIyBTZXQgc29tZSBjb25maWdzIGZvciBsaW5rIHN0YXR1cy4KJENvbmZpZ09iamVjdC0+U2V0KAogICAgVmFsaWQgPT4gMSwKICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbTo6U2V0SW5jaWRlbnRTdGF0ZU9uTGluaycsCiAgICBWYWx1ZSA9PiAxLAopOwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBWYWxpZCA9PiAxLAogICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpEZXBsb3ltZW50U3RhdGVzJywKICAgIFZhbHVlID0+IFsnUHJvZHVjdGlvbiddLAopOwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBWYWxpZCA9PiAxLAogICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpJbmNpZGVudFN0YXRlcycsCiAgICBWYWx1ZSA9PiBbICdJbmNpZGVudCcsICdXYXJuaW5nJywgJ09wZXJhdGlvbmFsJyBdLAopOwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBWYWxpZCA9PiAxLAogICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpMaW5rVHlwZXMnLAogICAgVmFsdWUgPT4gewogICAgICAgIFJlbGV2YW50VG8gPT4gJ0luY2lkZW50JywKICAgIH0sCik7CiRDb25maWdPYmplY3QtPlNldCgKICAgIFZhbGlkID0+IDEsCiAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OlRpY2tldFR5cGVzJywKICAgIFZhbHVlID0+IFsnSW5jaWRlbnQnXSwKKTsKCiRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiMgVGhlIHRpY2tldCB0eXBlICdJbmNpZGVudCcgaXMgdXNlZCBmb3IgdGVzdGluZy4KIyBUaGUgdHlwZSBuZWVkcyB0byBiZSBjcmVhdGVkIHdoZW4gaXQgZG9lcyBub3QgZXhpc3QuCm15ICRJbmNpZGVudFR5cGVJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJyktPlR5cGVBZGQoCiAgICBOYW1lICAgID0+ICdJbmNpZGVudCcsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7Cm9rKCAoICFkZWZpbmVkICRJbmNpZGVudFR5cGVJRCB8fCAkSW5jaWRlbnRUeXBlSUQgKSwgInRpY2tldCB0eXBlIEluY2lkZW50IGNyZWF0ZWQsIG9yIGl0IGFscmVhZHkgZXhpc3RlZCIgKTsKCiMgQ3JlYXRlIHRlc3QgdGlja2V0LgpteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICBUaXRsZSAgICAgICAgPT4gIlROLSRSYW5kb21JRCIsCiAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICBUeXBlICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAZXhhbXBsZS5jb20nLAogICAgT3duZXJJRCAgICAgID0+IDEsCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKb2soICRUaWNrZXRJRCwgIlRpY2tldElEICRUaWNrZXRJRCBpcyBjcmVhdGVkIiApOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgID0+ICJDSS0wMS0kUmFuZG9tSUQiLAogICAgICAgIERlcGxTdGF0ZUlEICAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICBJbmNpU3RhdGVJRCAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgIExpbmtUeXBlICAgICAgICAgID0+ICdSZWxldmFudFRvJywKICAgICAgICBFeHBlY3RlZEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAiQ0ktMDItJFJhbmRvbUlEIiwKICAgICAgICBEZXBsU3RhdGVJRCAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICBMaW5rVHlwZSAgICAgICAgICA9PiAnRGVwZW5kc09uJywKICAgICAgICBFeHBlY3RlZEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAiQ0ktMDMtJFJhbmRvbUlEIiwKICAgICAgICBEZXBsU3RhdGVJRCAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICBMaW5rVHlwZSAgICAgICAgICA9PiAnUmVsZXZhbnRUbycsCiAgICAgICAgRXhwZWN0ZWRJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gIkNJLTA0LSRSYW5kb21JRCIsCiAgICAgICAgRGVwbFN0YXRlSUQgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICBJbmNpU3RhdGVJRCAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgIExpbmtUeXBlICAgICAgICAgID0+ICdSZWxldmFudFRvJywKICAgICAgICBFeHBlY3RlZEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgfSwKKTsKCm15IEBDSUlEczsKCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgc3VidGVzdCAkVGVzdC0+e05hbWV9ID0+IHN1YiB7CgogICAgICAgICMgQ3JlYXRlIENJLgogICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJFRlc3QtPntOYW1lfSwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJFRlc3QtPntEZXBsU3RhdGVJRH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRUZXN0LT57SW5jaVN0YXRlSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgb2soICRDb25maWdJdGVtSUQsICJDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRCBpcyBjcmVhdGVkIiApOwoKICAgICAgICBwdXNoIEBDSUlEcywgJENvbmZpZ0l0ZW1JRDsKCiAgICAgICAgIyBBZGQgYSB2ZXJzaW9uLgogICAgICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkVGVzdC0+e05hbWV9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJFRlc3QtPntEZXBsU3RhdGVJRH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkVGVzdC0+e0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBvayggJFZlcnNpb25JRCwgIlZlcnNpb25JRCAkVmVyc2lvbklEIGlzIGNyZWF0ZWQiICk7CgogICAgICAgICMgQWRkIGEgbGluay4KICAgICAgICBteSAkU3VjY2VzcyA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBUYXJnZXRLZXkgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRUZXN0LT57TGlua1R5cGV9LAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBvayggJFN1Y2Nlc3MsICJUaWNrZXRJRCAkVGlja2V0SUQgbGlua2VkIHdpdGggQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSUQgd2l0aCBMaW5rVHlwZSAnJFRlc3QtPntMaW5rVHlwZX0nIiApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIENJJ3MgaW5jaWRlbnQgc3RhdGUuCiAgICAgICAgaXMoCiAgICAgICAgICAgICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlfSwKICAgICAgICAgICAgJFRlc3QtPntFeHBlY3RlZEluY2lTdGF0ZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gQ3VySW5jaVN0YXRlOiAkVGVzdC0+e0V4cGVjdGVkSW5jaVN0YXRlfSIsCiAgICAgICAgKTsKICAgIH07Cn0KCiMgU2V0IHRpY2tldCB0eXBlIHRvIHNvbWV0aGluZyBkaWZmZXJlbnQgdGhhbiAnSW5jaWRlbnQnIHRvIHZlcmlmeSBDSSdzIGluY2lkZW50IHN0YXRlIHVwZGF0ZS4KbXkgJFN1Y2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRUeXBlU2V0KAogICAgVHlwZSAgICAgPT4gJ1VuY2xhc3NpZmllZCcsCiAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICBVc2VySUQgICA9PiAxLAopOwpvayggJFN1Y2Nlc3MsICJUeXBlIGZvciBUaWNrZXRJRCAkVGlja2V0SUQgaXMgY2hhbmdlZCB0byAnVW5jbGFzc2lmaWVkJyIgKTsKCmZvciBteSAkQ0lJRCAoQENJSURzKSB7CiAgICBteSAkQ0kgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJSUQsCiAgICApOwogICAgaXMoCiAgICAgICAgJENJLT57Q3VySW5jaVN0YXRlfSwKICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICJDSUlEICRDSUlEIGlzIGluICdPcGVyYXRpb25hbCcgc3RhdGUgYWZ0ZXIgdGlja2V0IHR5cGUgdXBkYXRlIiwKICAgICk7Cn0KCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/ITSMConfigItemUniqueCIName.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgoKb3VyICRTZWxmOwoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgbWFrZSBwcmVwYXJhdGlvbnMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBhZGQgdGhlIHRlc3QgY2xhc3NlcwpteSBAQ29uZmlnSXRlbUNsYXNzSURzOwpteSBAQ29uZmlnSXRlbUNsYXNzZXM7Cm15IEBDb25maWdJdGVtRGVmaW5pdGlvbklEczsKCiMgZ2VuZXJhdGUgYSByYW5kb20gbmFtZQpteSAkRmlyc3RDbGFzc05hbWUgID0gJ1VuaXRUZXN0Q2xhc3MxJyAuICRSYW5kb21JRDsKbXkgJFNlY29uZENsYXNzTmFtZSA9ICdVbml0VGVzdENsYXNzMicgLiAkUmFuZG9tSUQ7CgojIHNldCBhIG5hbWUgcHJlZml4Cm15ICROYW1lUHJlZml4ID0gJ1VuaXRUZXN0TmFtZScgLiAkUmFuZG9tSUQ7CgojIGFkZCBib3RoIHVuaXR0ZXN0IGNvbmZpZyBpdGVtIGNsYXNzZXMKbXkgJEZpcnN0Q2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgICAgPT4gJEZpcnN0Q2xhc3NOYW1lLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAxLAopOwoKIyBjaGVjayBmaXJzdCBjbGFzcyBpZAppZiAoICEkRmlyc3RDbGFzc0lEICkgewoKICAgICRTZWxmLT5UcnVlKAogICAgICAgIDAsCiAgICAgICAgIkNhbid0IGFkZCBmaXJzdCBjb25maWcgaXRlbSBjbGFzcy4iLAogICAgKTsKfQoKIyBzZXQgdmVyc2lvbiBzdHJpbmcgbW9kdWxlCiRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgSXRlbUlEID0+ICRGaXJzdENsYXNzSUQsCiAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgVmFsdWUgID0+IFsnSW5jcmVtZW50YWwnXSwKKTsKCnB1c2ggQENvbmZpZ0l0ZW1DbGFzc0lEcywgJEZpcnN0Q2xhc3NJRDsKcHVzaCBAQ29uZmlnSXRlbUNsYXNzZXMsICAkRmlyc3RDbGFzc05hbWU7CgpteSAkU2Vjb25kQ2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgICAgPT4gJFNlY29uZENsYXNzTmFtZSwKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKCiMgc2V0IHZlcnNpb24gc3RyaW5nIG1vZHVsZQokS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgIEl0ZW1JRCA9PiAkU2Vjb25kQ2xhc3NJRCwKICAgIEtleSAgICA9PiAnVmVyc2lvblN0cmluZ01vZHVsZScsCiAgICBWYWx1ZSAgPT4gWydJbmNyZW1lbnRhbCddLAopOwoKIyBjaGVjayBzZWNvbmQgY2xhc3MgaWQKaWYgKCAhJFNlY29uZENsYXNzSUQgKSB7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMCwKICAgICAgICAiQ2FuJ3QgYWRkIHNlY29uZCBjb25maWcgaXRlbSBjbGFzcy4iLAogICAgKTsKfQoKcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAkU2Vjb25kQ2xhc3NJRDsKcHVzaCBAQ29uZmlnSXRlbUNsYXNzZXMsICAkU2Vjb25kQ2xhc3NOYW1lOwoKbXkgQENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnM7CgokQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uc1swXSA9ICIKewogICAgICAgIFBhZ2VzICA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnQnLAogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gJzFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgPT4gMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnRGVzY3JpcHRpb24nLAogICAgICAgICAgICB9LAogICAgICAgIH0sCn0iOwoKbXkgJFlBTUxPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKbXkgQENvbmZpZ0l0ZW1EZWZpbml0aW9uczsKZm9yIG15ICRQZXJsRGVmaW5pdGlvbiAoQENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnMpIHsKICAgIG15ICRZQU1MRGVmaW5pdGlvbiA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgICAgIERhdGEgPT4gZXZhbCAkUGVybERlZmluaXRpb24sICAgICMjIG5vIGNyaXRpYyBxdyhCdWlsdGluRnVuY3Rpb25zOjpQcm9oaWJpdFN0cmluZ3lFdmFsKQogICAgKTsKICAgIHB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9ucywgJFlBTUxEZWZpbml0aW9uOwp9CgojIGFkZCBhbiBlbXB0eSBkZWZpbml0aW9uIHRvIHRoZSBjbGFzcy4gdGhlIGRlZmluaXRpb24gZG9lc24ndCBuZWVkIGFueSBlbGVtZW50cywgYXMgd2UncmUgb25seQojIHRlc3RpbmcgdGhlIG5hbWUgd2hpY2ggaXNuJ3QgcGFydCBvZiB0aGUgZGVmaW5pdGlvbiwgYnV0IG9mIHRoZSBjb25maWcgaXRlbSBpdHNlbGYKbXkgJEZpcnN0UmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICBDbGFzc0lEICAgID0+ICRGaXJzdENsYXNzSUQsCiAgICBEZWZpbml0aW9uID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbnNbMF0sCiAgICBVc2VySUQgICAgID0+IDEsCik7Cm9rKCAkRmlyc3RSZXN1bHQtPntEZWZpbml0aW9uSUR9LCAnZmlyc3QgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbiBhZGRlZCcgKTsKCm15ICRGaXJzdERlZmluaXRpb25JRCA9ICRGaXJzdFJlc3VsdC0+e0RlZmluaXRpb25JRH07CnB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzLCAkRmlyc3RSZXN1bHQtPntEZWZpbml0aW9uSUR9OwoKbXkgJFNlY29uZFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgQ2xhc3NJRCAgICA9PiAkU2Vjb25kQ2xhc3NJRCwKICAgIERlZmluaXRpb24gPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uc1swXSwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKb2soICRTZWNvbmRSZXN1bHQtPntEZWZpbml0aW9uSUR9LCAnc2Vjb25kIGNvbmZpZyBpdGVtIGRlZmluaXRpb24gYWRkZWQnICk7CgpteSAkU2Vjb25kRGVmaW5pdGlvbklEID0gJFNlY29uZFJlc3VsdC0+e0RlZmluaXRpb25JRH07CnB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzLCAkU2Vjb25kRGVmaW5pdGlvbklEOwoKIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0Cm15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAopOwpteSAlRGVwbFN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JERlcGxTdGF0ZUxpc3R9OwoKIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdApteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVJbmNpU3RhdGVMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07CgpteSBAQ29uZmlnSXRlbUlEczsKCm15ICRGaXJzdENsYXNzUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICBDbGFzc0lEICAgID0+ICRGaXJzdENsYXNzSUQsCiAgICBEZWZpbml0aW9uID0+IDw8J0RFRklOSVRJT04nLAotLS0KUGFnZXM6CiAgLSBOYW1lOiBDb250ZW50CiAgICBMYXlvdXQ6CiAgICAgIENvbHVtbnM6IDEKICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgQ29udGVudDoKICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICBSb3dTdGFydDogMQoKU2VjdGlvbnM6CiAgQXR0cmlidXRlczoKICAgIFR5cGU6IERlc2NyaXB0aW9uCkRFRklOSVRJT04KICAgIFVzZXJJRCA9PiAxLAopOwoKIyBmZXRjaCB0aGUgZGVmaW5pdGlvbiBpZApteSAkRmlyc3RDbGFzc0RlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgIENsYXNzSUQgPT4gJEZpcnN0Q2xhc3NJRCwKKTsKCiMgYWRkIGEgY29uZmlnaXRlbSB0byBlYWNoIGNsYXNzCm15ICRGaXJzdENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgQ2xhc3NJRCAgICAgID0+ICRGaXJzdENsYXNzSUQsCiAgICBOYW1lICAgICAgICAgPT4gJE5hbWVQcmVmaXggLiAnRmlyc3QjMDAxJywKICAgIERlZmluaXRpb25JRCA9PiAkRmlyc3RDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgppZiAoICEkRmlyc3RDb25maWdJdGVtSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSBmaXJzdCBjb25maWdpdGVtIiwKICAgICk7Cn0KCnB1c2ggQENvbmZpZ0l0ZW1JRHMsICRGaXJzdENvbmZpZ0l0ZW1JRDsKCm15ICRTZWNvbmRDbGFzc1Jlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgQ2xhc3NJRCAgICA9PiAkU2Vjb25kQ2xhc3NJRCwKICAgIERlZmluaXRpb24gPT4gPDwnREVGSU5JVElPTicsCi0tLQpQYWdlczoKICAtIE5hbWU6IENvbnRlbnQKICAgIExheW91dDoKICAgICAgQ29sdW1uczogMQogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IEF0dHJpYnV0ZXMKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCgpTZWN0aW9uczoKICBBdHRyaWJ1dGVzOgogICAgVHlwZTogRGVzY3JpcHRpb24KREVGSU5JVElPTgogICAgVXNlcklEID0+IDEsCik7CgojIGZldGNoIHRoZSBkZWZpbml0aW9uIGlkCm15ICRTZWNvbmRDbGFzc0RlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgIENsYXNzSUQgPT4gJFNlY29uZENsYXNzSUQsCik7CgpteSAkU2Vjb25kQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICBDbGFzc0lEICAgICAgPT4gJFNlY29uZENsYXNzSUQsCiAgICBOYW1lICAgICAgICAgPT4gJE5hbWVQcmVmaXggLiAnU2Vjb25kIzAwMScsCiAgICBEZWZpbml0aW9uSUQgPT4gJFNlY29uZENsYXNzRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCmlmICggISRTZWNvbmRDb25maWdJdGVtSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSBzZWNvbmQgY29uZmlnaXRlbSIsCiAgICApOwp9CgpwdXNoIEBDb25maWdJdGVtSURzLCAkU2Vjb25kQ29uZmlnSXRlbUlEOwoKIyBjcmVhdGUgYSAzcmQgY29uZmlnaXRlbSBpbiB0aGUgMm5kIGNsYXNzCm15ICRUaGlyZENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgQ2xhc3NJRCAgICAgID0+ICRTZWNvbmRDbGFzc0lELAogICAgTmFtZSAgICAgICAgID0+ICROYW1lUHJlZml4IC4gJ1NlY29uZCMwMDInLAogICAgRGVmaW5pdGlvbklEID0+ICRTZWNvbmREZWZpbml0aW9uSUQsCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCmlmICggISRUaGlyZENvbmZpZ0l0ZW1JRCApIHsKICAgICRTZWxmLT5UcnVlKAogICAgICAgIDAsCiAgICAgICAgIkZhaWxlZCB0byBhZGQgdGhlIHRoaXJkIGNvbmZpZ2l0ZW0iLAogICAgKTsKfQoKcHVzaCBAQ29uZmlnSXRlbUlEcywgJFRoaXJkQ29uZmlnSXRlbUlEOwoKIyBzZXQgYSBuYW1lIGZvciBlYWNoIGNvbmZpZ2l0ZW0KbXkgJEZpcnN0SW5pdGlhbFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgQ29uZmlnSXRlbUlEID0+ICRGaXJzdENvbmZpZ0l0ZW1JRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdGaXJzdCMwMDEnLAogICAgRGVmaW5pdGlvbklEID0+ICRGaXJzdENsYXNzRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCmlmICggISRGaXJzdEluaXRpYWxWZXJzaW9uSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSBpbml0aWFsIHZlcnNpb24gZm9yIHRoZSBmaXJzdCBjb25maWdpdGVtIiwKICAgICk7Cn0KCm15ICRTZWNvbmRJbml0aWFsVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICBDb25maWdJdGVtSUQgPT4gJFNlY29uZENvbmZpZ0l0ZW1JRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdTZWNvbmQjMDAxJywKICAgIERlZmluaXRpb25JRCA9PiAkU2Vjb25kQ2xhc3NEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgIFVzZXJJRCAgICAgICA9PiAxLAopOwoKaWYgKCAhJFNlY29uZEluaXRpYWxWZXJzaW9uSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSBpbml0aWFsIHZlcnNpb24gZm9yIHRoZSBzZWNvbmQgY29uZmlnaXRlbSIsCiAgICApOwp9CgpteSAkVGhpcmRJbml0aWFsVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICBDb25maWdJdGVtSUQgPT4gJFRoaXJkQ29uZmlnSXRlbUlELAogICAgTmFtZSAgICAgICAgID0+ICROYW1lUHJlZml4IC4gJ1NlY29uZCMwMDInLAogICAgRGVmaW5pdGlvbklEID0+ICRTZWNvbmRDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgppZiAoICEkVGhpcmRJbml0aWFsVmVyc2lvbklEICkgewogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMCwKICAgICAgICAiRmFpbGVkIHRvIGFkZCB0aGUgaW5pdGlhbCB2ZXJzaW9uIGZvciB0aGUgdGhpcmQgY29uZmlnaXRlbSIsCiAgICApOwp9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgcnVuIHRoZSBhY3R1YWwgdGVzdHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyByZWFkIHRoZSBvcmlnaW5hbCBzZXR0aW5nIGZvciB0aGUgc2V0dGluZyBFbmFibGVVbmlxdWVuZXNzQ2hlY2sKbXkgJE9yaWdFbmFibGVTZXR0aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdVbmlxdWVDSU5hbWU6OkVuYWJsZVVuaXF1ZW5lc3NDaGVjaycpOwoKIyBlbmFibGUgdGhlIHVuaXF1ZW5lc3MgY2hlY2sKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJywKICAgIFZhbHVlID0+IDEsCik7CgojIHJlYWQgdGhlIG9yaWdpbmFsIHNldHRpbmcgZm9yIHRoZSBzY29wZSBvZiB0aGUgdW5pcXVlbmVzcyBjaGVjawpteSAkT3JpZ1Njb3BlID0gJENvbmZpZ09iamVjdC0+R2V0KCdVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlJyk7CgojIG1ha2Ugc3VyZSwgdGhlIHNjb3BlIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayBpcyBzZXQgdG8gJ2dsb2JhbCcKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6VW5pcXVlbmVzc0NoZWNrU2NvcGUnLAogICAgVmFsdWUgPT4gJ2dsb2JhbCcsCik7CgpteSAkUmVuYW1lU3VjY2VzczsKCiMgdHJ5IHRvIGdpdmUgdGhlIDFzdCBjb25maWdpdGVtIHRoZSBzYW1lIG5hbWUgYXMgdGhlIDJuZCBvbmUKJFJlbmFtZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkRmlyc3RDb25maWdJdGVtSUQsCiAgICBDbGFzc0lEICAgICAgPT4gJEZpcnN0Q2xhc3NJRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdTZWNvbmQjMDAxJywKICAgIERlZmluaXRpb25JRCA9PiAkRmlyc3RDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgokU2VsZi0+RmFsc2UoCiAgICAkUmVuYW1lU3VjY2VzcywKICAgICJTY29wZSA9PiBnbG9iYWw6IFJlbmFtaW5nIEZpcnN0IzAwMSB0byBhbHJlYWR5IGV4aXN0aW5nIFNlY29uZCMwMDEgc3VjY2Vzc2Z1bGx5IHByZXZlbnRlZCIKKTsKCiMgdHJ5IHRvIGdpdmUgdGhlIDJuZCBjb25maWdpdGVtIHRoZSBzYW1lIG5hbWUgYXMgdGhlIDNyZCBvbmUKJFJlbmFtZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkU2Vjb25kQ29uZmlnSXRlbUlELAogICAgQ2xhc3NJRCAgICAgID0+ICRTZWNvbmRDbGFzc0lELAogICAgTmFtZSAgICAgICAgID0+ICROYW1lUHJlZml4IC4gJ1NlY29uZCMwMDInLAogICAgRGVmaW5pdGlvbklEID0+ICRGaXJzdENsYXNzRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCiRTZWxmLT5GYWxzZSgKICAgICRSZW5hbWVTdWNjZXNzLAogICAgIlNjb3BlID0+IGdsb2JhbDogUmVuYW1pbmcgU2Vjb25kIzAwMSB0byBhbHJlYWR5IGV4aXN0aW5nIFNlY29uZCMwMDIgc3VjY2Vzc2Z1bGx5IHByZXZlbnRlZCIKKTsKCiMgc2V0IHRoZSBzY29wZSBmb3IgdGhlIHVuaXF1ZW5lc3MgY2hlY2sgdG8gJ2NsYXNzJwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZScsCiAgICBWYWx1ZSA9PiAnY2xhc3MnLAopOwoKIyB0cnkgdG8gcmVuYW1lIEZpcnN0IzAwMSBhZ2FpbiB0byBTZWNvbmQjMDAxIHdoaWNoIHNob3VsZCB3b3JrIG5vdywgZHVlIHRvIHRoZSBkaWZmZXJlbnQgY2xhc3MKJFJlbmFtZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkRmlyc3RDb25maWdJdGVtSUQsCiAgICBDbGFzc0lEICAgICAgPT4gJEZpcnN0Q2xhc3NJRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdTZWNvbmQjMDAxJywKICAgIERlZmluaXRpb25JRCA9PiAkRmlyc3RDbGFzc0RlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRSZW5hbWVTdWNjZXNzLAogICAgIlNjb3BlID0+IGNsYXNzOiBSZW5hbWluZyBGaXJzdCMwMDEgdG8gYWxyZWFkeSBleGlzdGluZyBTZWNvbmQjMDAxIHN1Y2NlZWRlZCIKKTsKCiMgdHJ5aW5nIG5vdyB0byBjcmVhdGUgYSBkdXBsaWNhdGUgbmFtZSB3aXRoaW4gYSBjbGFzcwokUmVuYW1lU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgQ29uZmlnSXRlbUlEID0+ICRTZWNvbmRDb25maWdJdGVtSUQsCiAgICBDbGFzc0lEICAgICAgPT4gJFNlY29uZENsYXNzSUQsCiAgICBOYW1lICAgICAgICAgPT4gJE5hbWVQcmVmaXggLiAnU2Vjb25kIzAwMicsCiAgICBEZWZpbml0aW9uSUQgPT4gJFNlY29uZENsYXNzRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCiRTZWxmLT5GYWxzZSgKICAgICRSZW5hbWVTdWNjZXNzLAogICAgIlNjb3BlID0+IGNsYXNzOiBSZW5hbWluZyBTZWNvbmQjMDAxIHRvIGFscmVhZHkgZXhpc3RpbmcgU2Vjb25kIzAwMiBzdWNjZXNzZnVsbHkgcHJldmVudGVkIgopOwoKIyByZXNldCB0aGUgZW5hYmxlZCBzZXR0aW5nIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJywKICAgIFZhbHVlID0+ICRPcmlnRW5hYmxlU2V0dGluZywKKTsKCiMgcmVzZXQgdGhlIHNjb3BlIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayB0byBpdHMgb3JpZ2luYWwgdmFsdWUKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6VW5pcXVlbmVzc0NoZWNrU2NvcGUnLAogICAgVmFsdWUgPT4gJE9yaWdTY29wZSwKKTsKCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/ImportExport/ObjectBackend/ITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKdXNlIExpc3Q6OkFsbFV0aWxzIHF3KG1heCBtaW4gdHJ1ZSk7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KCiMgU2FuaXR5IGNoZWNrIHdoZXRoZXIgSW1wb3J0RXhwb3J0IGlzIGF2YWlsYWJsZS4KIyBUaGlzIHNob3VsZCBzdWNjZWVkIHNpbmNlIEltcG9ydEV4cG9ydCBoYXMgYmVlbiBpbnRlZ3JhdGVkIGludG8gT1RPQk8gY29yZQp7CiAgICAjIGdldCBJbXBvcnRFeHBvcnQgbW9kdWxlIGRpcmVjdG9yeQogICAgbXkgJEltcG9ydEV4cG9ydE1vZHVsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpIC4gJy9LZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC5wbSc7CiAgICBvayggLWYgJEltcG9ydEV4cG9ydE1vZHVsZSwgJ0ltcG9ydEV4cG9ydC5wbSBleGlzdHMnICk7Cn0KCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICRDdXN0b21lclVzZXJPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJEltcG9ydEV4cG9ydE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwpteSAlRm9ybWF0QmFja2VuZE9iamVjdCAgPSAoCiAgICBDU1YgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6OkZvcm1hdEJhY2tlbmQ6OkNTVicpLAogICAgSlNPTiA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpGb3JtYXRCYWNrZW5kOjpKU09OJyksCik7Cm15ICRPYmplY3RCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydDo6T2JqZWN0QmFja2VuZDo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJFVzZXJPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwpteSAkQ29uZmlnT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGdldCBoZWxwZXIgb2JqZWN0CiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgbWFrZSBwcmVwYXJhdGlvbnMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKIyBjcmVhdGUgdGVzdCB1c2VyCm15ICggdW5kZWYsICRUZXN0VXNlcklEICkgPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICd1c2VycycsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCik7CgojIGFkZCBzb21lIElUU01Db25maWdJdGVtIHRlc3QgdGVtcGxhdGVzIGZvciBsYXRlciBjaGVja3MKIyBtb3N0bHkgd2l0aCBkdW1teSBmb3JtYXRzLCBidXQgdXNlIDUgYW5kIDYgZm9yIENTViBhbmQgSlNPTiB0ZXN0cy4KbXkgQFRlbXBsYXRlSURzOwp7CiAgICBteSAlRm9ybWF0ID0gKAogICAgICAgIDUgPT4gJ0NTVicsCiAgICAgICAgNiA9PiAnSlNPTicsCiAgICApOwoKICAgIGZvciBteSAkaSAoIDAgLi4gMjkgKSB7CiAgICAgICAgbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgICAgICAgICAgT2JqZWN0ICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBGb3JtYXQgID0+ICggJEZvcm1hdHskaX0gfHwgJ1VuaXRUZXN0JyAuICRpIC4gJFJhbmRvbUlEICksCiAgICAgICAgICAgIE5hbWUgICAgPT4gJ1VuaXRUZXN0JyAuICRpIC4gJFJhbmRvbUlELAogICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAVGVtcGxhdGVJRHMsICRUZW1wbGF0ZUlEOwogICAgfQp9CgojIE9iamVjdExpc3QgdGVzdCAxIChjaGVjayBDU1YgaXRlbSkKewogICAgbXkgJE9iamVjdExpc3QgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3RMaXN0OwogICAgb2soCiAgICAgICAgJE9iamVjdExpc3QgJiYgcmVmICRPYmplY3RMaXN0IGVxICdIQVNIJyAmJiAkT2JqZWN0TGlzdC0+e0lUU01Db25maWdJdGVtfSwKICAgICAgICAiT2JqZWN0TGlzdCgpIC0gSVRTTUNvbmZpZ0l0ZW0gZXhpc3RzIiwKICAgICk7Cn0KCiMgT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDEgKGNoZWNrIGF0dHJpYnV0ZSBoYXNoKQp7CiAgICBteSAkT2JqZWN0QXR0cmlidXRlc0dldDEgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzBdLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICApOwoKICAgICMgY2hlY2sgb2JqZWN0IGF0dHJpYnV0ZSByZWZlcmVuY2UKICAgIG9rKAogICAgICAgICRPYmplY3RBdHRyaWJ1dGVzR2V0MSAmJiByZWYgJE9iamVjdEF0dHJpYnV0ZXNHZXQxIGVxICdBUlJBWScsCiAgICAgICAgIk9iamVjdEF0dHJpYnV0ZXNHZXQoKSAtIGNoZWNrIGFycmF5IHJlZmVyZW5jZSIsCiAgICApOwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgICMgZGVmaW5lIHRoZSByZWZlcmVuY2UgaGFzaAogICAgbXkgJE9iamVjdEF0dHJpYnV0ZXNHZXQxUmVmZXJlbmNlID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NsYXNzSUQnLAogICAgICAgICAgICBOYW1lICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NvdW50TWF4JywKICAgICAgICAgICAgTmFtZSAgPT4gJ01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50JywKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgIFZhbHVlRGVmYXVsdCA9PiAnMycsCiAgICAgICAgICAgICAgICBSZXF1aXJlZCAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFJlZ2V4ICAgICAgICA9PiBxcnsgXEEgXGQqIFx6IH14bXMsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA1LAogICAgICAgICAgICAgICAgTWF4TGVuZ3RoICAgID0+IDUsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDb3VudE1heFNldE91dGVyJywKICAgICAgICAgICAgTmFtZSAgPT4gJ01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50JywKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgIFZhbHVlRGVmYXVsdCA9PiAnMCcsCiAgICAgICAgICAgICAgICBSZXF1aXJlZCAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFJlZ2V4ICAgICAgICA9PiBxcnsgXEEgXGQqIFx6IH14bXMsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA1LAogICAgICAgICAgICAgICAgTWF4TGVuZ3RoICAgID0+IDUsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDb3VudE1heFNldElubmVyJywKICAgICAgICAgICAgTmFtZSAgPT4gJ01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgVmFsdWVEZWZhdWx0ID0+ICcwJywKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAwLAogICAgICAgICAgICAgICAgUmVnZXggICAgICAgID0+IHFyeyBcQSBcZCogXHogfXhtcywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDUsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggICAgPT4gNSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgJ0lucHV0JyA9PiB7CiAgICAgICAgICAgICAgICAnVHlwZScgPT4gJ0NoZWNrYm94JwogICAgICAgICAgICB9LAogICAgICAgICAgICAnTmFtZScgPT4gJ0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCcsCiAgICAgICAgICAgICdLZXknICA9PiAnRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcycsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIElucHV0ID0+IHsgVHlwZSA9PiAiQ2hlY2tib3giIH0sCiAgICAgICAgICAgIEtleSAgID0+ICJJbmNsdWRlQXR0YWNobWVudHMiLAogICAgICAgICAgICBOYW1lICA9PiAiSW1wb3J0L0V4cG9ydCBhdHRhY2htZW50cyAoYXMgdGhlIGxhc3QgZW50cmllcyBwZXIgbGluZSkiLAogICAgICAgIH0sCiAgICBdOwoKICAgIGlzKAogICAgICAgICRPYmplY3RBdHRyaWJ1dGVzR2V0MSwKICAgICAgICAkT2JqZWN0QXR0cmlidXRlc0dldDFSZWZlcmVuY2UsCiAgICAgICAgIk9iamVjdEF0dHJpYnV0ZXNHZXQoKSAtIGF0dHJpYnV0ZXMgb2YgdGhlIHJvdyBhcmUgaWRlbnRpY2FsIiwKICAgICk7Cn0KCiMgT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDIgKGNoZWNrIHdpdGggbm9uIGV4aXN0aW5nIHRlbXBsYXRlKQp7CiAgICBteSAkT2JqZWN0QXR0cmlidXRlc0dldDIgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWy0xXSArIDEsCiAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICk7CiAgICBpcygKICAgICAgICAkT2JqZWN0QXR0cmlidXRlc0dldDIsCiAgICAgICAgdW5kZWYsCiAgICAgICAgIk9iamVjdEF0dHJpYnV0ZXNHZXQoKSAtIGV4cGVjdGVkIHRvIGZhaWwiLAogICAgKTsKfQoKIyBNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDEgKGNoZWNrIGF0dHJpYnV0ZSBoYXNoKQp7CiAgICBteSAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQxID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbMF0sCiAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICk7CgogICAgIyBjaGVjayBtYXBwaW5nIG9iamVjdCBhdHRyaWJ1dGUgcmVmZXJlbmNlCiAgICBvaygKICAgICAgICAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQxICYmIHJlZiAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQxIGVxICdBUlJBWScsCiAgICAgICAgIk1hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KCkgLSBjaGVjayBhcnJheSByZWZlcmVuY2UiLAogICAgKTsKfQoKIyBNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDIgKGNoZWNrIHdpdGggbm9uIGV4aXN0aW5nIHRlbXBsYXRlKQp7CiAgICBteSAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQyID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbLTFdICsgMSwKICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgKTsKCiAgICBpcygKICAgICAgICAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQyLAogICAgICAgIHVuZGVmLAogICAgICAgICJNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCgpIC0gZXhwZWN0ZWQgdG8gZmFpbCIsCiAgICApOwp9CgojIGFkZCBhIGdlbmVyYWwgY2F0YWxvZyB0ZXN0IGxpc3QKbXkgJENvbmZpZ0l0ZW1Hcm91cElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTG9va3VwKAogICAgR3JvdXAgID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgVXNlcklEID0+ICRUZXN0VXNlcklELAopOwpvayggJENvbmZpZ0l0ZW1Hcm91cElELCAnZ290IGdyb3VwIGlkIGZvciBpdHNtLWNvbmZpZ2l0ZW0nICk7CgojIGRvbid0IGNhcmUgYWJvdXQgdmFsaWQgZW1haWxzCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdDaGVja0VtYWlsQWRkcmVzc2VzJywKICAgIFZhbHVlID0+IDAsCik7CgojIENyZWF0ZSBjdXN0b21lciB1c2VycyB3aGljaCB3aWxsIGJlIHJlZmVyZW5jZWQgaW4gQ3VzdG9tZXJVc2VyIGR5bmFtaWMgZmllbGRzOgojIHdpdGggZG91YmxlIHF1b3RlcyBmb3IgdGVzdGluZyBDU1YKIyB3aXRoIGhpZ2ggb3JkZXIgbGV0dGVycwojIHdpdGggcmFuZG9tIGlkLCB1c2VmdWwgZHVyaW5nIGRldmVsb3BtZW50IHdoZW4gUmVzdG9yZURhdGFiYXNlIGlzIGRlYWN0aXZhdGVkCiMKIyBUaGUgY3VzdG9tZXIgaXMgYSBjb21wYW55IHRoYXQgc2VsbHMgZnJ1aXRzLCB2ZWdldGFibGVzLCBhbmQgdHJlZXMuIFRoZSBwcm9kdWNlCiMgaXMgc29sZCBieSBtb25nZXJzIHdoaWNoIGFyZSBtZW1iZXJzIG9mIGEgc2FsZXMgdGVhbS4gVGhlIGNvbXBhbnkgaGFzCiMgY2hpZWYgZmluYW5jaWFsIG9mZmljZXJzIG9mIHZhcmlvdXMgZ2VuZGVycy4KbXkgJUN1c3RvbWVyVXNlcnMgPSAoCgogICAgIyBmb3IgQ3VzdG9tZXJDSU8KICAgIG1hbGVfQ0lPICAgID0+ICdtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIvCfl4QiJyAuICRSYW5kb21JRCwKICAgIGZlbWFsZV9DSU8gID0+ICdmZW1hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAi8J+SgSInIC4gJFJhbmRvbUlELAogICAgZGl2ZXJzZV9DSU8gPT4gJ2RpdmVyc2UgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAi4oqVIicgLiAkUmFuZG9tSUQsCgogICAgIyBmb3IgQ3VzdG9tZXJTYWxlc1RlYW0sIHRoZSBtZW1iZXJzIG9mIGEgc2FsZXMgdGVhbSBhcmUgbW9uZ2VycwoKICAgICMgZnJ1aXQgYW5kIHZlZ2V0YWJsZSBtb25nZXJzIGZvciBDdXN0b21lclNhbGVzVGVhbQogICAgYXBwbGVfbW9uZ2VyICA9PiAnYXBwbGUgbW9uZ2VyICLwn42OIicgLiAkUmFuZG9tSUQsCiAgICBvbmlvbl9tb25nZXIgID0+ICdvbmlvbiBtb25nZXIgIvCfp4UiJyAuICRSYW5kb21JRCwKICAgIGdhcmxpY19tb25nZXIgPT4gJ2dhcmxpYyBtb25nZXIgIvCfp4QiJyAuICRSYW5kb21JRCwKCiAgICAjIHRyZWUgbW9uZ2VycyBmb3IgQ3VzdG9tZXJTYWxlc1RlYW0KICAgIHRhbmFiYXRlX21vbmdlciA9PiAndGFuYWJhdGUgdHJlZSBtb25nZXIgIvCfjosiJyAuICRSYW5kb21JRCwKICAgIHBhbG1fbW9uZ2VyICAgICA9PiAncGFsbSB0cmVlIG1vbmdlciAi8J+MtCInIC4gJFJhbmRvbUlELAopOwpmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlQ3VzdG9tZXJVc2VycyApIHsKICAgIG15ICRMb2dpbiAgICAgICAgICAgPSAkQ3VzdG9tZXJVc2Vyc3skS2V5fTsKICAgIG15ICRDdXN0b21lclVzZXJBZGQgPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lclVzZXJBZGQoCiAgICAgICAgU291cmNlICAgICAgICAgPT4gJ0N1c3RvbWVyVXNlcicsCiAgICAgICAgVXNlckZpcnN0bmFtZSAgPT4gIiRLZXkgZmlyc3QgbmFtZSAkUmFuZG9tSUQiLAogICAgICAgIFVzZXJMYXN0bmFtZSAgID0+ICIkS2V5IGxhc3QgbmFtZSAkUmFuZG9tSUQiLAogICAgICAgIFVzZXJDdXN0b21lcklEID0+ICdUZXN0Q3VzdG9tZXJDb21wYW55MScgLiAkUmFuZG9tSUQsCiAgICAgICAgVXNlckxvZ2luICAgICAgPT4gJExvZ2luLAogICAgICAgIFVzZXJFbWFpbCAgICAgID0+ICRLZXkgLiAkUmFuZG9tSUQgLiAnQGV4YW1wbGUuY29tJywKICAgICAgICBWYWxpZElEICAgICAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgKTsKICAgIGlzKCAkQ3VzdG9tZXJVc2VyQWRkLCAkTG9naW4sICJjdXN0b21lciB1c2VyICckTG9naW4nIGFkZGVkIiApOwp9CgojIGNyZWF0ZSBhZ2VudHMgdGhhdCB3aWxsIGJlIHJlZmVyZW5jZWQgaW4gQWdlbnQgZHluYW1pYyBmaWVsZHMKbXkgJUFnZW50MlVzZXJJRDsKewogICAgbXkgJUxhc3ROYW1lID0gKAoKICAgICAgICAjIGZvciB0aGUgbXVsdGkgdmFsdWUgZHluYW1pYyBmaWVsZCBaWlpTZXRPZkFnZW50cwogICAgICAgIERlc2tBZ2VudCAgICAgPT4gJ0lORk9STUFUSU9OIERFU0sgUEVSU09OIPCfkoEnLAogICAgICAgIExvdHVzQWdlbnQgICAgPT4gJ1BFUlNPTiBJTiBMT1RVUyBQT1NJVElPTiDwn6eYJywKICAgICAgICBDbGltYmluZ0FnZW50ID0+ICdQRVJTT04gQ0xJTUJJTkcg8J+nlycsCiAgICAgICAgRnJvd25pbmdBZ2VudCA9PiAnUEVSU09OIEZST1dOSU5HIPCfmY0nLAoKICAgICAgICAjIGZvciB0aGUgc2luZ2xlIHZhbHVlIGR5bmFtaWMgZmllbGQgWlpaU2V0Q29udGluZW50YWxTdXBwb3J0CiAgICAgICAgRmlyc3RMZXZlbFN1cHBvcnRlckFmcmljYSAgPT4gJ0ZpcnN0IExldmVsIFN1cHBvcnRlciBBZnJpY2EnLAogICAgICAgIFNlY29uZExldmVsU3VwcG9ydGVyQWZyaWNhID0+ICdTZWNvbmQgTGV2ZWwgU3VwcG9ydGVyIEFmcmljYScsCiAgICAgICAgRmlyc3RMZXZlbFN1cHBvcnRlckV1cm9wZSAgPT4gJ0ZpcnN0IExldmVsIFN1cHBvcnRlciBFdXJvcGUnLAogICAgICAgIFNlY29uZExldmVsU3VwcG9ydGVyRXVyb3BlID0+ICdTZWNvbmQgTGV2ZWwgU3VwcG9ydGVyIEV1cm9wZScsCiAgICApOwoKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVMYXN0TmFtZSApIHsKICAgICAgICBteSAkVXNlcklEID0gJFVzZXJPYmplY3QtPlVzZXJBZGQoCiAgICAgICAgICAgIFVzZXJGaXJzdG5hbWUgPT4gJEtleSwKICAgICAgICAgICAgVXNlckxhc3RuYW1lICA9PiAkTGFzdE5hbWV7JEtleX0sCiAgICAgICAgICAgIFVzZXJMb2dpbiAgICAgPT4gJEtleSAuICRSYW5kb21JRCwKICAgICAgICAgICAgVXNlclB3ICAgICAgICA9PiAnc29tZS1wYXNzJywKICAgICAgICAgICAgVXNlckVtYWlsICAgICA9PiAkS2V5IC4gJFJhbmRvbUlEIC4gJ2VtYWlsQGV4YW1wbGUuY29tJywKICAgICAgICAgICAgVmFsaWRJRCAgICAgICA9PiAxLAogICAgICAgICAgICBDaGFuZ2VVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBvayggJFVzZXJJRCwgInVzZXIgJEtleSBhZGRlZCIgKTsKICAgICAgICAkQWdlbnQyVXNlcklEeyRLZXl9ID0gJFVzZXJJRDsKICAgIH0KfQoKIyBBZGQgZ2VuZXJpYyBjYXRhbG9nIGl0ZW1zIGZvciB0ZXN0aW5nIHRoZSBHZW5lcmFsQ2F0YWxvZyBkeW5hbWljIGZpZWxkIGNsYXNzLgojIFRPRE86IGFjdHVhbGx5IHRlc3QgR2VuZXJhbENhdGFsb2cgZHluYW1pYyBmaWVsZHMKbXkgJEdlbmVyYWxDYXRhbG9nQ2xhc3MgPSAnVW5pdFRlc3QnIC4gJFJhbmRvbUlEOwpkaWFnICJHZW5lcmFsQ2F0YWxvZ0NsYXNzOiAnJEdlbmVyYWxDYXRhbG9nQ2xhc3MnIjsKCm15ICRUZXN0SURTdWZmaXggPSAiVW5pdFRlc3QkUmFuZG9tSUQiOwpkaWFnICJUZXN0SURTdWZmaXg6ICckVGVzdElEU3VmZml4JyI7CmZvciBteSAkTmFtZSAocXcoVGVzdDEgVGVzdDIgVGVzdDMgVGVzdDQpKSB7CgogICAgIyBhZGQgYSBuZXcgaXRlbQogICAgbXkgJEl0ZW1JRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICBDbGFzcyAgID0+ICRHZW5lcmFsQ2F0YWxvZ0NsYXNzLAogICAgICAgIE5hbWUgICAgPT4gJE5hbWUsCiAgICAgICAgQ29tbWVudCA9PiAiYWRkZWQgYnkgIiAuIF9fRklMRV9fLAogICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgKTsKICAgIG9rKCAkSXRlbUlELCAiJE5hbWUgYWRkZWQgdG8gdGhlIGdlbmVyYWwgY2F0YWxvZyIgKTsKCiAgICAjIFNldCBwZXJtaXNzaW9uLgogICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgIEl0ZW1JRCA9PiAkSXRlbUlELAogICAgICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICAgICAgVmFsdWUgID0+IFskQ29uZmlnSXRlbUdyb3VwSURdLAogICAgKTsKCiAgICAjIFNldCB2ZXJzaW9uIHN0cmluZyBtb2R1bGUuCiAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uU3RyaW5nTW9kdWxlJywKICAgICAgICBWYWx1ZSAgPT4gWydJbmNyZW1lbnRhbCddLAogICAgKTsKCiAgICAjIFNldCB2ZXJzaW9uIHRyaWdnZXIuCiAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uVHJpZ2dlcicsCiAgICAgICAgVmFsdWUgID0+IFsiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCJdLAogICAgKTsKfQoKIyBBZGQgZHluYW1pYyBmaWVsZHMgZm9yIHRlc3RpbmcuIFRoZXNlIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgcmVmZXJlbmNlZAojIGJ5IG5hbWUgaW4gZHluYW1pYyBmaWVsZCBkZWZpbml0aW9ucy4KewogICAgbXkgJE9yZGVyID0gMjAwMDA7CgogICAgIyBubyB1bmRlcnNjb3JlcyBhcmUgYWxsb3dlZCBpbiBkeW5hbWljIGZpZWxkIG5hbWVzCiAgICBteSAlRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnMgPSAoCgogICAgICAgICMgRHluYW1pYyBmaWVsZHMgdGhhdCBhcmUgbm90IHBhcnQgb2YgYSBzZXQuCiAgICAgICAgQ3VzdG9tZXJDSU8gPT4gewogICAgICAgICAgICBGaWVsZFR5cGUgPT4gJ0N1c3RvbWVyVXNlcicsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlID0+IDAsCiAgICAgICAgICAgICAgICBUb29sdGlwICAgID0+ICdUb29sdGlwIGZvciBjdXN0b21lciBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEN1c3RvbWVyU2FsZXNUZWFtID0+IHsKICAgICAgICAgICAgRmllbGRUeXBlID0+ICdDdXN0b21lclVzZXInLAogICAgICAgICAgICBDb25maWcgICAgPT4gewogICAgICAgICAgICAgICAgTXVsdGlWYWx1ZSA9PiAxLAogICAgICAgICAgICAgICAgVG9vbHRpcCAgICA9PiAnVG9vbHRpcCBmb3IgY3VzdG9tZXIgc2FsZXMgdGVhbScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBGaXJzdE1vbmRheSA9PiB7CiAgICAgICAgICAgIEZpZWxkVHlwZSA9PiAnRGF0ZScsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlID0+IDAsCiAgICAgICAgICAgICAgICBUb29sdGlwICAgID0+ICdmaXJzdCBtb25kYXkgb2YgYSB5ZWFyJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEZpcnN0V2Vla2VuZCA9PiB7CiAgICAgICAgICAgIEZpZWxkVHlwZSA9PiAnRGF0ZScsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlID0+IDEsCiAgICAgICAgICAgICAgICBUb29sdGlwICAgID0+ICdmaXJzdCB3ZWVrZW5kIG9mIGEgeWVhciwgdHdvIHZhbHVlcycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBBZ2VudDEgYW5kIEFnZW50MiB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBtdWx0aSB2YWx1ZSBTZXQgWlpaU2V0T2ZBZ2VudHMKICAgICAgICBBZ2VudDEgPT4gewogICAgICAgICAgICBGaWVsZFR5cGUgPT4gJ0FnZW50JywKICAgICAgICAgICAgQ29uZmlnICAgID0+IHsKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlzZWxlY3QgID0+IDAsCiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlICAgPT4gMCwKICAgICAgICAgICAgICAgIEdyb3VwRmlsdGVyICA9PiBbXSwKICAgICAgICAgICAgICAgIFRvb2x0aXAgICAgICA9PiAnVG9vbHRpcCBmb3IgQWdlbnQxJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEFnZW50MiA9PiB7CiAgICAgICAgICAgIEZpZWxkVHlwZSA9PiAnQWdlbnQnLAogICAgICAgICAgICBDb25maWcgICAgPT4gewogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBNdWx0aXNlbGVjdCAgPT4gMCwKICAgICAgICAgICAgICAgIE11bHRpVmFsdWUgICA9PiAwLAogICAgICAgICAgICAgICAgR3JvdXBGaWx0ZXIgID0+IFtdLAogICAgICAgICAgICAgICAgVG9vbHRpcCAgICAgID0+ICdUb29sdGlwIGZvciBBZ2VudDInLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgWlpaU2V0T2ZBZ2VudHMgPT4gewogICAgICAgICAgICBGaWVsZFR5cGUgPT4gJ1NldCcsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlID0+IDEsCiAgICAgICAgICAgICAgICBJbmNsdWRlICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB7IERGID0+ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCB9LAogICAgICAgICAgICAgICAgICAgIHsgREYgPT4gJ0FnZW50MicgLiAkVGVzdElEU3VmZml4IH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVG9vbHRpcCA9PiAnVG9vbHRpcCBmb3IgWlpaU2V0T2ZBZ2VudHMnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCgogICAgICAgICMgTGV2ZWxGaXJzdCBhbmQgTGV2ZWxTZWNvbmQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgc2luZ2xlIHZhbHVlIFNldCBaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQKICAgICAgICBMZXZlbEZpcnN0ID0+IHsKICAgICAgICAgICAgRmllbGRUeXBlID0+ICdBZ2VudCcsCiAgICAgICAgICAgIENvbmZpZyAgICA9PiB7CiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIE11bHRpc2VsZWN0ICA9PiAwLAogICAgICAgICAgICAgICAgTXVsdGlWYWx1ZSAgID0+IDAsCiAgICAgICAgICAgICAgICBHcm91cEZpbHRlciAgPT4gW10sCiAgICAgICAgICAgICAgICBUb29sdGlwICAgICAgPT4gJ1Rvb2x0aXAgZm9yIGZpcnN0IGxldmVsIHN1cHBvcnQnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgTGV2ZWxTZWNvbmQgPT4gewogICAgICAgICAgICBGaWVsZFR5cGUgPT4gJ0FnZW50JywKICAgICAgICAgICAgQ29uZmlnICAgID0+IHsKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlzZWxlY3QgID0+IDAsCiAgICAgICAgICAgICAgICBNdWx0aVZhbHVlICAgPT4gMCwKICAgICAgICAgICAgICAgIEdyb3VwRmlsdGVyICA9PiBbXSwKICAgICAgICAgICAgICAgIFRvb2x0aXAgICAgICA9PiAnVG9vbHRpcCBmb3Igc2Vjb25kIGxldmVsIHN1cHBvcnQnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgWlpaU2V0Q29udGluZW50YWxTdXBwb3J0ID0+IHsKICAgICAgICAgICAgRmllbGRUeXBlID0+ICdTZXQnLAogICAgICAgICAgICBDb25maWcgICAgPT4gewogICAgICAgICAgICAgICAgTXVsdGlWYWx1ZSA9PiAwLAogICAgICAgICAgICAgICAgSW5jbHVkZSAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgeyBERiA9PiAiTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiIH0sCiAgICAgICAgICAgICAgICAgICAgeyBERiA9PiAiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IiB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFRvb2x0aXAgPT4gJ1Rvb2x0aXAgZm9yIFpaWlNldENvbnRpbmVudGFsU3VwcG9ydCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICk7CgogICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVEeW5hbWljRmllbGREZWZpbml0aW9ucyApIHsKICAgICAgICBteSAkREZOYW1lICAgICAgICAgPSAkTmFtZSAuICRUZXN0SURTdWZmaXg7ICAgICAgICAgICAgICAgICAgIyBhZGQgc3VmZml4IHRvIGhhdmUgdW5pcXVlIG5hbWVzCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZElEID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkQWRkKAogICAgICAgICAgICBOYW1lICAgICAgID0+ICRERk5hbWUsCiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJERGTmFtZSwKICAgICAgICAgICAgRmllbGRPcmRlciA9PiAkT3JkZXIrKywKICAgICAgICAgICAgRmllbGRUeXBlICA9PiAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbnN7JE5hbWV9LT57RmllbGRUeXBlfSwKICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBDb25maWcgICAgID0+ICREeW5hbWljRmllbGREZWZpbml0aW9uc3skTmFtZX0tPntDb25maWd9LAogICAgICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgKTsKICAgICAgICBvayggJER5bmFtaWNGaWVsZElELCAiY3JlYXRlZCBkeW5hbWljIGZpZWxkICRERk5hbWUiICk7CiAgICB9Cn0KCiMgQWRkIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zCm15ICggJUNvbmZpZ0l0ZW1DbGFzc0lEcywgJUNvbmZpZ0l0ZW1EZWZpbml0aW9uSURzICk7CnsKICAgIG15IEBDb25maWdJdGVtUGVybERlZmluaXRpb25zOwoKICAgICMgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbiB3aXRoIHR3byBDdXN0b21lclVzZXIgZmllbGRzCiAgICBwdXNoIEBDb25maWdJdGVtUGVybERlZmluaXRpb25zLCB7CiAgICAgICAgUGFnZXMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJ1R3b0N1c3RvbWVyVXNlcnMnLCAgICAjIHdpbGwgYmUgcmV1c2VkIGluIGNsYXNzIG5hbWUKICAgICAgICAgICAgICAgIExheW91dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDb2x1bW5XaWR0aCA9PiAnMWZyJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VjdGlvbiAgICAgPT4gJ1NlY3Rpb24xJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgU2VjdGlvbjEgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBERiA9PiAnQ3VzdG9tZXJDSU8nIC4gJFRlc3RJRFN1ZmZpeCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ0N1c3RvbWVyU2FsZXNUZWFtJyAuICRUZXN0SURTdWZmaXgsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICB9OwoKICAgICMgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbiB3aXRoIHR3byBEYXRlIGZpZWxkcwogICAgcHVzaCBAQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9ucywgewogICAgICAgIFBhZ2VzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdUd29EYXRlcycsICAgICMgd2lsbCBiZSByZXVzZWQgaW4gY2xhc3MgbmFtZQogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICcxZnInCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAnVHdvRGF0ZXNTZWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uU3RhcnQgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93U3RhcnQgICAgPT4gMQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgIFNlY3Rpb25zID0+IHsKICAgICAgICAgICAgVHdvRGF0ZXNTZWN0aW9uID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ0ZpcnN0TW9uZGF5JyAuICRUZXN0SURTdWZmaXgsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdGaXJzdFdlZWtlbmQnIC4gJFRlc3RJRFN1ZmZpeCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgIH07CgogICAgIyBkZWZpbml0aW9uIHdpdGggYSBtdWx0aSB2YWx1ZSBTZXQgZHluYW1pYyBmaWVsZAogICAgcHVzaCBAQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9ucywgewogICAgICAgIFBhZ2VzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0JywgICAgIyB3aWxsIGJlIHJldXNlZCBpbiBjbGFzcyBuYW1lCiAgICAgICAgICAgICAgICBMYXlvdXQgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uV2lkdGggPT4gJzFmcicKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb24gICAgID0+ICdTZWN0aW9uMScsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0YXJ0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIFJvd1N0YXJ0ICAgID0+IDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBTZWN0aW9ucyA9PiB7CiAgICAgICAgICAgIFNlY3Rpb24xID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgREYgPT4gJ0N1c3RvbWVyQ0lPJyAuICRUZXN0SURTdWZmaXgsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdaWlpTZXRPZkFnZW50cycgLiAkVGVzdElEU3VmZml4LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgfTsKCiAgICAjIGRlZmluaXRpb24gd2l0aCBhIHNpbmdsZSB2YWx1ZSBTZXQgZHluYW1pYyBmaWVsZAogICAgcHVzaCBAQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9ucywgewogICAgICAgIFBhZ2VzID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdTaW5nbGVWYWx1ZVNldCcsICAgICMgd2lsbCBiZSByZXVzZWQgaW4gY2xhc3MgbmFtZQogICAgICAgICAgICAgICAgTGF5b3V0ID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5zICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIENvbHVtbldpZHRoID0+ICcxZnInCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ29udGVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBTZWN0aW9uICAgICA9PiAnU2VjdGlvbjEnLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdGFydCA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBSb3dTdGFydCAgICA9PiAxCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgU2VjdGlvbnMgPT4gewogICAgICAgICAgICBTZWN0aW9uMSA9PiB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIERGID0+ICdaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQnIC4gJFRlc3RJRFN1ZmZpeCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgIH07Cgo9Zm9yIG5ldmVyCgokQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uc1swXSA9ICIgWwogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ0N1c3RvbWVyMScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnQ3VzdG9tZXIgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdDdXN0b21lcicsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnRGF0ZTEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0RhdGUgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdEYXRlJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdEYXRlVGltZTEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0RhdGUgVGltZSAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJ0RhdGVUaW1lJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICA9PiAnRHVtbXkxJywKICAgICAgICBOYW1lICA9PiAnRHVtbXkgMScsCiAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICBUeXBlID0+ICdEdW1teScsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnR2VuZXJhbENhdGFsb2cxJywKICAgICAgICBOYW1lICAgICAgID0+ICdHZW5lcmFsQ2F0YWxvZyAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgID0+ICdHZW5lcmFsQ2F0YWxvZycsCiAgICAgICAgICAgIENsYXNzID0+ICckR2VuZXJhbENhdGFsb2dDbGFzcycsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnSW50ZWdlcjEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0ludGVnZXIgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdJbnRlZ2VyJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdUZXh0MScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVGV4dCAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ1RleHRBcmVhMScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVGV4dEFyZWEgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdUZXh0QXJlYScsCiAgICAgICAgfSwKICAgIH0sCl0gIjsKCiMgZGVmaW5lIHRoZSBzZWNvbmQgdGVzdCBkZWZpbml0aW9uIChzdWIgZGF0YSB0eXBlcykKJENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnNbMV0gPSAiIFsKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgIH0sCiAgICAgICAgQ291bnRNYXggPT4gMTAsCiAgICAgICAgU3ViID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTWFpbjFTdWIxJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ01haW4gMSBTdWIgMScsCiAgICAgICAgICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ291bnRNYXggPT4gMTAsCiAgICAgICAgICAgICAgICBTdWIgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTWFpbjFTdWIxU3ViU3ViMScsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ01haW4gMSBTdWIgMSBTdWJTdWIgMScsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSAgICAgID0+IDUwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTWFpbjFTdWIxU3ViU3ViMicsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ01haW4gMSBTdWIgMSBTdWJTdWIgMicsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXh0QXJlYScsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMVN1YjInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAxIFN1YiAyJywKICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRBcmVhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMicsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAyJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRBcmVhJywKICAgICAgICB9LAogICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgIFN1YiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ01haW4yU3ViMScsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICdNYWluIDIgU3ViIDEnLAogICAgICAgICAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgICAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICBTaXplICAgICAgPT4gNTAsCiAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMlN1YjInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAyIFN1YiAyJywKICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRBcmVhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKXSAiOwoKIyBEZWZpbmUgdGhlIHRoaXJkIHRlc3QgZGVmaW5pdGlvbiB3aXRoIHJlcXVpcmVkIGF0dHJpYnV0ZSAnVHlwZScuCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzJdID0gIiBbCiAgICB7CiAgICAgICAgJ0tleScgPT4gJ1R5cGUnLAogICAgICAgICdJbnB1dCcgPT4gewogICAgICAgICAgICAnQ2xhc3MnID0+ICckR2VuZXJhbENhdGFsb2dDbGFzcycsCiAgICAgICAgICAgICdSZXF1aXJlZCcgPT4gMSwKICAgICAgICAgICAgJ1RyYW5zbGF0aW9uJyA9PiAxLAogICAgICAgICAgICAnVHlwZScgPT4gJ0dlbmVyYWxDYXRhbG9nJwogICAgICAgIH0sCiAgICAgICAgJ1NlYXJjaGFibGUnID0+IDEsCiAgICAgICAgJ0NvdW50TWluJyA9PiAxLAogICAgICAgICdDb3VudERlZmF1bHQnID0+IDEsCiAgICAgICAgJ0NvdW50TWF4JyA9PiAzLAogICAgICAgICdOYW1lJyA9PiAnVHlwZScsCiAgICB9LApdICI7Cgo9Y3V0CgogICAgbXkgJFlBTUxPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKICAgICMgYWRkIHRoZSB0ZXN0IGNvbmZpZyBpdGVtIGNsYXNzZXMKICAgIG15ICRpID0gMDsKICAgIGZvciBteSAkUGVybERlZmluaXRpb24gKEBDb25maWdJdGVtUGVybERlZmluaXRpb25zKSB7CgogICAgICAgICMgZ2VuZXJhdGUgYW4gaW5mb3JtYXRpdmUgcmFuZG9tIG5hbWUKICAgICAgICBteSAkU2hvcnROYW1lID0gJFBlcmxEZWZpbml0aW9uLT57UGFnZXN9LT5bMF0tPntOYW1lfTsKICAgICAgICBteSAkQ2xhc3NOYW1lID0gam9pbiAnXycsICdVbml0VGVzdCcsICRTaG9ydE5hbWUsICsrJGksICRSYW5kb21JRDsKCiAgICAgICAgIyBhZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MKICAgICAgICBteSAkQ2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICAgICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICAgID0+ICRDbGFzc05hbWUsCiAgICAgICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICAgICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICApOwogICAgICAgIG9rKCAkQ2xhc3NJRCwgImFkZGVkIGdlbmVyYWwgY2F0YWxvZyBpdGVtIGZvciBjb25maWcgaXRlbSBjbGFzcyAkQ2xhc3NOYW1lIiApOwogICAgICAgICRDb25maWdJdGVtQ2xhc3NJRHN7JFNob3J0TmFtZX0gPSAkQ2xhc3NJRDsKCiAgICAgICAgIyBTZXQgcGVybWlzc2lvbi4KICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgICAgICAgICAgVmFsdWUgID0+IFskQ29uZmlnSXRlbUdyb3VwSURdLAogICAgICAgICk7CgogICAgICAgICMgU2V0IHZlcnNpb24gc3RyaW5nIG1vZHVsZS4KICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uU3RyaW5nTW9kdWxlJywKICAgICAgICAgICAgVmFsdWUgID0+IFsnSW5jcmVtZW50YWwnXSwKICAgICAgICApOwoKICAgICAgICAjIFNldCB2ZXJzaW9uIHRyaWdnZXIuCiAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgICAgICBWYWx1ZSAgPT4gWwogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9GaXJzdE1vbmRheSRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9GaXJzdFdlZWtlbmQkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgXSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCBhIGRlZmluaXRpb24gdG8gdGhlIGNsYXNzCiAgICAgICAgbXkgJFlBTUxEZWZpbml0aW9uID0gJFlBTUxPYmplY3QtPkR1bXAoCiAgICAgICAgICAgIERhdGEgPT4gJFBlcmxEZWZpbml0aW9uLAogICAgICAgICk7CiAgICAgICAgb2soICRZQU1MRGVmaW5pdGlvbiwgJ2dvdCBzb21lIFlBTUwnICk7CiAgICAgICAgbXkgJFJlc3VsdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+ICRZQU1MRGVmaW5pdGlvbiwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICApOwogICAgICAgIG9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICAgICAgJ0RlZmluaXRpb25BZGQoKSBzdWNjZXNzZnVsJyApOwogICAgICAgIG9rKCAkUmVzdWx0LT57RGVmaW5pdGlvbklEfSwgJ2dvdCBEZWZpbml0aW9uSUQnICk7CiAgICAgICAgJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzeyRTaG9ydE5hbWV9ID0gJFJlc3VsdC0+e0RlZmluaXRpb25JRH07CiAgICB9Cn0KCiMgZm9yIHRlc3RzIHdlIG5lZWQgdmFsaWQgYW5kIGludmFsaWQgY2xhc3MgSURzCm15ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lEICAgPSBtaW4oIHZhbHVlcyAlQ29uZmlnSXRlbUNsYXNzSURzICk7Cm15ICRJbnZhbGRpQ29uZmlnSXRlbUNsYXNzSUQgPSBtYXgoIHZhbHVlcyAlQ29uZmlnSXRlbUNsYXNzSURzICkgKyAxOwoKIyBDcmVhdGUgc29tZSByYW5kb20gbnVtYmVycy4gVGhlIG51bWJlcnMgbXVzdCBiZSBzb3J0ZWQgYmVjYXVzZQojIEV4cG9ydERhdGFHZXQoKSBzb3J0cyBwZXIgZGVmYXVsdCBieSB0aGUgY29uZmlnIGl0ZW0gbnVtYmVyIGluIGRlc2NlbmRpbmcgb3JkZXIuCm15IEBDb25maWdJdGVtTnVtYmVycyA9CiAgICBzb3J0CiAgICBtYXAKICAgIHsgJEhlbHBlci0+R2V0UmFuZG9tTnVtYmVyIH0KICAgICggMSAuLiAxMCApOwoKIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0Cm15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAopOwpyZWZfb2soICREZXBsU3RhdGVMaXN0LCAnSEFTSCcsICdkZXBsb3ltZW50IHN0YXRlIGxpc3QgaXMgYSBoYXNocmVmJyApOwpteSAlRGVwbFN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JERlcGxTdGF0ZUxpc3R9OwoKIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdApteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7CnJlZl9vayggJERlcGxTdGF0ZUxpc3QsICdIQVNIJywgJ2luY2lkZW50IHN0YXRlIGxpc3QgaXMgYSBoYXNocmVmJyApOwpteSAlSW5jaVN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JEluY2lTdGF0ZUxpc3R9OwoKIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIHRlc3QgbGlzdApteSAkR2VuZXJhbENhdGFsb2dMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICRHZW5lcmFsQ2F0YWxvZ0NsYXNzLAopOwpyZWZfb2soICRHZW5lcmFsQ2F0YWxvZ0xpc3QsICdIQVNIJywgJ2dlbmVyYWwgY2F0YWxvZyBsaXN0IGlzIGEgaGFzaHJlZicgKTsKCiMgVE9ETzogcmVhY3RpdmF0ZSB0ZXN0IGNhc2VzCiNteSAlR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskR2VuZXJhbENhdGFsb2dMaXN0fTsKCiMgZGVmaW5lIHRoZSB0ZXN0IGNvbmZpZyBpdGVtcwpteSBAQ29uZmlnSXRlbVNldHVwczsKbXkgJENvbmZpZ0l0ZW1DbnQgPSAwOwoKIyB0d28gY29uZmlnIGl0ZW1zIGZvciBUd29DdXN0b21lclVzZXJzCnB1c2ggQENvbmZpZ0l0ZW1TZXR1cHMsCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMSBmb3IgVHdvQ3VzdG9tZXJVc2VycycsCiAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbICRDb25maWdJdGVtQ250KysgXSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1DbnQgVmVyc2lvbiAxIiwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiAgICAgICA9PiAkQ3VzdG9tZXJVc2Vyc3ttYWxlX0NJT30sCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0kVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJVc2Vyc3twYWxtX21vbmdlcn0sCiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJVc2Vyc3t0YW5hYmF0ZV9tb25nZXJ9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIERlc2NyaXB0aW9uICAgPT4gJ2NvbmZpZyBpdGVtIDIgZm9yIFR3b0N1c3RvbWVyVXNlcnMnLAogICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWyAkQ29uZmlnSXRlbUNudCsrIF0sCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDb25maWdJdGVtICRDb25maWdJdGVtQ250IFZlcnNpb24gMSIsCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgICAgICAgPT4gJEN1c3RvbWVyVXNlcnN7bWFsZV9DSU99LAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgJEN1c3RvbWVyVXNlcnN7b25pb25fbW9uZ2VyfSwKICAgICAgICAgICAgICAgICRDdXN0b21lclVzZXJze2FwcGxlX21vbmdlcn0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07CgojIHR3byBjb25maWcgaXRlbXMgd2l0aCBDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0CnB1c2ggQENvbmZpZ0l0ZW1TZXR1cHMsCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMSBmb3IgQ3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldCcsCiAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbICRDb25maWdJdGVtQ250KysgXSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFpaWlNldE9mQWdlbnRzIEEgJFJhbmRvbUlEIiwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiAgICA9PiAkQ3VzdG9tZXJVc2Vyc3ttYWxlX0NJT30sCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgICAgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdLCAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9IF0sICJBZ2VudDIkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7RGVza0FnZW50fSBdIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMiBmb3IgQ3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldCcsCiAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbICRDb25maWdJdGVtQ250KysgXSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFpaWlNldE9mQWdlbnRzIEIgJFJhbmRvbUlEIiwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiAgICA9PiAkQ3VzdG9tZXJVc2Vyc3ttYWxlX0NJT30sCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7RGVza0FnZW50fSBdLCAgICAgJ0FnZW50MicuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9IF0gfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfTsKCiMgdHdvIGNvbmZpZyBpdGVtcyB3aXRoIFNpbmdsZVZhbHVlU2V0CnB1c2ggQENvbmZpZ0l0ZW1TZXR1cHMsCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMSBmb3IgU2luZ2xlVmFsdWVTZXQ6IEFmcmljYScsCiAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWyAkQ29uZmlnSXRlbUNudCsrIF0sCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gIlVuaXRUZXN0IC0gQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUNudCBWZXJzaW9uIDEiLAogICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7U2luZ2xlVmFsdWVTZXR9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tTaW5nbGVWYWx1ZVNldH0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0Q29udGluZW50YWxTdXBwb3J0JFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgeyAiTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyQWZyaWNhfSBdLCAiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7U2Vjb25kTGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0gfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBEZXNjcmlwdGlvbiAgID0+ICdjb25maWcgaXRlbSAyIGZvciBTaW5nbGVWYWx1ZVNldDogRXVyb3BlJywKICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbICRDb25maWdJdGVtQ250KysgXSwKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAiVW5pdFRlc3QgLSBDb25maWdJdGVtICRDb25maWdJdGVtQ250IFZlcnNpb24gMSIsCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tTaW5nbGVWYWx1ZVNldH0sCiAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze1NpbmdsZVZhbHVlU2V0fSwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9aWlpTZXRDb250aW5lbnRhbFN1cHBvcnQkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICB7ICJMZXZlbEZpcnN0JFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJFdXJvcGV9IF0sICJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX0gXSB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKIyBjb25maWcgaXRlbXMgZm9yIFR3b0RhdGVzCnB1c2ggQENvbmZpZ0l0ZW1TZXR1cHMsCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMSBmb3IgVHdvRGF0ZXMnLAogICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sgJENvbmZpZ0l0ZW1DbnQrKyBdLAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjQgJFJhbmRvbUlEIiwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7VHdvRGF0ZXN9LAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCIgID0+ICcyMDI0LTAxLTAxJywKICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9GaXJzdFdlZWtlbmQkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAnMjAyNC0wMS0wNicsCiAgICAgICAgICAgICAgICAnMjAyNC0wMS0wNycsCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgRGVzY3JpcHRpb24gICA9PiAnY29uZmlnIGl0ZW0gMiBmb3IgVHdvRGF0ZXMnLAogICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sgJENvbmZpZ0l0ZW1DbnQrKyBdLAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjUgJFJhbmRvbUlEIiwgICAgICMgd2lsbCBiZSBvdmVyd3JpdHRlbiBsYXRlcgogICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvRGF0ZXN9LAogICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tUd29EYXRlc30sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RNb25kYXkkVGVzdElEU3VmZml4IiAgPT4gJzIwMjUtMDEtMDcnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhY3R1YWxseSB0dWVzZGF5LCB3aWxsIGJlIGZpeGVkIGxhdGVyCiAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgJzIwMjUtMDEtMDQnLAogICAgICAgICAgICAgICAgJzIwMjUtMDEtMDUnLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9OwoKPWZvciBuZXZlcgoKIDEwLjEgdGVzdCBjYXNlcwoKICgKCiAgICAjIGNvbmZpZyBpdGVtIGZvciBhbGwgcHJvdmlkZWQgZGF0YSB0eXBlcwogICAgewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGUxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIwMDgtMDItMDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZVRpbWUxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIwMDgtMDItMDEgMDM6NTknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhbENhdGFsb2cxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlcjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0MSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdUZXN0IFRleHQgVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXJlYTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAiVGVzdFxuVGV4dCBBcnJheVxuVGVzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBhIHNlY29uZCBjb25maWcgaXRlbSBmb3IgYWxsIHByb3ZpZGVkIGRhdGEgdHlwZXMKICAgICMgKGR1cGxpY2F0ZSBuYW1lIG9mIGZpcnN0IHZlcnNpb24gZm9yIHNlYXJjaCBjaGVja3MpCiAgICB7CiAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzFdLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBWZXJzaW9ucyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAxJywgICAgIyBkdXBsaWNhdGUgbmFtZSBmb3IgdGVzdHMKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lcjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmFsQ2F0YWxvZzEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1Rlc3QgVGV4dCBUZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBcmVhMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMiBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdVbml0VGVzdDInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMiAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmFsQ2F0YWxvZzEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0Mn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1Rlc3QgVGV4dCBUZXN0MicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXJlYTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAiVGVzdDJcblRleHQgQXJyYXlcblRlc3QgMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBjb25maWcgaXRlbSBmb3Igc3ViIGVsZW1lbnQgdGVzdHMKICAgIHsKICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1sxXSwKICAgICAgICAgICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFZlcnNpb25zID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0fSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnTWFpbjEgKDEpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICdNYWluMSAoMSkgU3ViMSAoMSknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgyKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICdNYWluMSAoMSkgU3ViMSAoMiknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIyICgyKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIyICgyKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ01haW4yICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnTWFpbjIgKDEpIFN1YjEgKDEpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yU3ViMiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudCcgPT4gJ01haW4yICgxKSBTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50JyA9PiAnTWFpbjIgKDEpIFN1YjIgKDIpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIGNvbmZpZyBpdGVtIGZvciBzdWIgZWxlbWVudCB0ZXN0cwogICAgewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1szXSwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzFdLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSA0IFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMVN1YlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMVN1YlN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yU3ViMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBjb25maWcgaXRlbSBmb3Igc3BlY2lhbCBjaGFyYWN0ZXIgdGVzdHMKICAgIHsKICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNF0sCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1sxXSwKICAgICAgICAgICAgVXNlcklEICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICB9LAogICAgICAgIFZlcnNpb25zID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gNSBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc3tDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0fSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnIiI7Ozo6Li4tLV9fIyMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgICAgPT4gJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVGVzdCBUZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yU3ViMiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICJUZXN0XG5UZXN0XHRUZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIGNvbmZpZyBpdGVtIGZvciBVVEYtOCB0ZXN0cwogICAgewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1XSwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzFdLAogICAgICAgICAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAogICAgICAgIH0sCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSA2IFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICfihoIg4oW7IOKFmycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICAgICA9PiAn4piEIOKGriDihrkg4oaSJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIxU3ViU3ViMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICfigqQg4oKhIOKCqSDigq8g4oK1JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMVN1YlN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAn4pmKIOKZiCDimYkg4pmKIOKZiyDimY0g4pmRJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAn4pyIIOKdpCDimK4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICfViiDVhCDVgCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnwq4gwqknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ+OBiyDjgZIg44KSJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKCj1jdXQKCiMgYWRkIHRoZSB0ZXN0IGNvbmZpZyBpdGVtcwpteSBAQ29uZmlnSXRlbUlEczsKZm9yIG15ICRTZXR1cCAoQENvbmZpZ0l0ZW1TZXR1cHMpIHsKCiAgICAjIGFkZCBhIGNvbmZpZyBpdGVtCiAgICBkaWFnICJhZGQgY29uZmlnIGl0ZW06ICRTZXR1cC0+e0Rlc2NyaXB0aW9ufSI7CiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgJFNldHVwLT57Q29uZmlnSXRlbUFkZH0tPiUqLAogICAgKTsKICAgIG9rKCAkQ29uZmlnSXRlbUlELCAnY29uZmlnIGl0ZW0gYWRkZWQnICk7CgogICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKCiAgICAjIGFkZCB0aGUgdmVyc2lvbnMKICAgIGZvciBteSAkQ29uZmlnSXRlbVVwZGF0ZSAoICggJFNldHVwLT57Q29uZmlnSXRlbVVwZGF0ZX0gLy8gW10gKS0+QCogKSB7CgogICAgICAgICMgYWRkIHVwZGF0ZXMKICAgICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgICRDb25maWdJdGVtVXBkYXRlLT4lKiwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICBvayggJFZlcnNpb25JRCwgJ2NvbmZpZyBpdGVtIHZlcnNpb24gYWRkZWQnICk7CiAgICB9Cn0KCiMgZGVjbGFyZSBFeHBvcnREYXRhIHRlc3RzCm15IEBFeHBvcnREYXRhVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0ltcG9ydERhdGFHZXQgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcyl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0ltcG9ydERhdGFHZXQgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcyl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7bm8gZXhpc3RpbmcgdGVtcGxhdGUgaWQgaXMgZ2l2ZW4gKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbLTFdICsgMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtubyBjbGFzcyBpZCBpcyBnaXZlbiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1syXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbnZhbGlkIGNsYXNzIGlkIGlzIGdpdmVuIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJEludmFsZGlDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1syXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXttYXBwaW5nIGxpc3QgaXMgZW1wdHkgKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1szXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAobnVtYmVyIHNlYXJjaCBjaGVjayl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAobmFtZSBzZWFyY2ggY2hlY2spfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGNhc2UgaW5zZW5zaXRpdmUgbmFtZSBzZWFyY2ggY2hlY2spfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICd1bml0dGVzdCAtIGNvbmZpZ2l0ZW0gMSB2ZXJzaW9uIDEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKG5hbWUgYW5kIG51bWJlciBzZWFyY2ggY2hlY2spfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgQ1NWIGV4cG9ydHMKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0V4cG9ydCBOYW1lLCBOdW1iZXIsIEN1c3RvbWVyQ0lPLCBhbmQgQ3VzdG9tZXJTYWxlc1RlYW0gYXMgQ1NWfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICMgQ3VzdG9tZXJDSU8gaXMgYSBzaW5nbGV2YWx1ZSBmaWVsZC4gVGh1cyBubyBpbmRleCBpcyBwYXNzZWQuCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8ke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyU2FsZXNUZWFtIGlzIGEgbXVsdGl2YWx1ZSBmaWVsZC4KICAgICAgICAgICAgICAgICMgVHdvIGNhc2VzIGFyZSBjb3ZlcmVkIGhlcmU6CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSB2YWx1ZSBhdCBhIHNwZWNpZmljIGluZGV4LCB0aGF0IGlzIHRoZSBmaXJzdCBhbmQgdGhlIHNlY29uZCBlbGVtZW50CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSBjb21wbGV0ZSBsaXN0CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0ke1Rlc3RJRFN1ZmZpeH06OjEiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9DdXN0b21lclNhbGVzVGVhbSR7VGVzdElEU3VmZml4fTo6MiIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewoKICAgICAgICAgICAgICAgICMgRW1wdHkgaGFzaCBtdXN0IGJlIHNwZWNpZmllZCwgYXMgb3RoZXJ3aXNlIHRoZSBwcmV2aW91c2x5IHNldCB1cCBTZWFyY2hEYXRhIHByZXZhaWxzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwgICAgIyB1c3VhbGx5IHNhbWUgYXMgZm9yIEV4cG9ydERhdGFHZXQKICAgICAgICAgICAgICAgIEZvcm1hdCAgICAgPT4gJ0NTVicsCiAgICAgICAgICAgICAgICBGb3JtYXREYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5TZXBhcmF0b3IgPT4gJ1NlbWljb2xvbicsCiAgICAgICAgICAgICAgICAgICAgQ2hhcnNldCAgICAgICAgID0+ICdVVEYtOCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCgogICAgICAgICMgVGhlIGV4cGVjdGVkIHJvd3MgbmVlZCB0byBiZSBzb3J0ZWQgYnkgY29uZmlnIGl0ZW0gbnVtYmVyIGluIGRlc2NlbmRpbmcgb3JkZXIuCiAgICAgICAgIyBUaGVyZSBpcyBubyB3YXkgdG8gc3BlY2lmeSB0aGUgc29ydCBvcmRlciBpbiBFeHBvcnREYXRhR2V0KCkuCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMiBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzFdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBxcXtvbmlvbiBtb25nZXIgIvCfp4UiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe2FwcGxlIG1vbmdlciAi8J+NjiIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgcXF7WyJvbmlvbiBtb25nZXIgXFwi8J+nhVxcIiRSYW5kb21JRCIsImFwcGxlIG1vbmdlciBcXCLwn42OXFwiJFJhbmRvbUlEIl19LAogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgICAgIHFxe21hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAi8J+XhCIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgcXF7cGFsbSB0cmVlIG1vbmdlciAi8J+MtCIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgcXF7dGFuYWJhdGUgdHJlZSBtb25nZXIgIvCfjosiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe1sicGFsbSB0cmVlIG1vbmdlciBcXCLwn4y0XFwiJFJhbmRvbUlEIiwidGFuYWJhdGUgdHJlZSBtb25nZXIgXFwi8J+Oi1xcIiRSYW5kb21JRCJdfSwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgICAgIFJlZmVyZW5jZUV4cG9ydENvbnRlbnQgPT4gWwogICAgICAgICAgICBqb2luKAogICAgICAgICAgICAgICAgJzsnLAogICAgICAgICAgICAgICAgcXF7IlVuaXRUZXN0IC0gQ29uZmlnSXRlbSAyIFZlcnNpb24gMSJ9LAogICAgICAgICAgICAgICAgcXF7IiRDb25maWdJdGVtTnVtYmVyc1sxXSJ9LAogICAgICAgICAgICAgICAgcXF7Im1hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAiIvCfl4QiIiRSYW5kb21JRCJ9LCAgICAjIG5vdCBKU09OIGJlY2F1c2Ugc2luZ2xlIHZhbHVlCiAgICAgICAgICAgICAgICBxcXsib25pb24gbW9uZ2VyICIi8J+nhSIiJFJhbmRvbUlEIn0sICAgICAgICAgICAgICAgICAgICAgICMgbm90IEpTT04gYmVjYXVzZSBleHBsaWNpdCBpbmRleAogICAgICAgICAgICAgICAgcXF7ImFwcGxlIG1vbmdlciAiIvCfjY4iIiRSYW5kb21JRCJ9LCAgICAgICAgICAgICAgICAgICAgICAjIG5vdCBKU09OIGJlY2F1c2UgZXhwbGljaXQgaW5kZXgKICAgICAgICAgICAgICAgIHFxeyJbIiJvbmlvbiBtb25nZXIgXFwiIvCfp4VcXCIiJFJhbmRvbUlEIiIsIiJhcHBsZSBtb25nZXIgXFwiIvCfjY5cXCIiJFJhbmRvbUlEIiJdIn0KICAgICAgICAgICAgKSwKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICc7JywKICAgICAgICAgICAgICAgIHFxeyJVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEifSwKICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlcnNbMF0ifSwKICAgICAgICAgICAgICAgIHFxeyJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIiLwn5eEIiIkUmFuZG9tSUQifSwKICAgICAgICAgICAgICAgIHFxeyJwYWxtIHRyZWUgbW9uZ2VyICIi8J+MtCIiJFJhbmRvbUlEIn0sCiAgICAgICAgICAgICAgICBxcXsidGFuYWJhdGUgdHJlZSBtb25nZXIgIiLwn46LIiIkUmFuZG9tSUQifSwKICAgICAgICAgICAgICAgIHFxeyJbIiJwYWxtIHRyZWUgbW9uZ2VyIFxcIiLwn4y0XFwiIiRSYW5kb21JRCIiLCIidGFuYWJhdGUgdHJlZSBtb25nZXIgXFwiIvCfjotcXCIiJFJhbmRvbUlEIiJdIn0KICAgICAgICAgICAgKSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0V4cG9ydCBOYW1lLCBOdW1iZXIsIEZpcnN0TW9uZGF5LCBhbmQgRmlyc3RXZWVrZW5kIGFzIENTVn0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgIyBDdXN0b21lckNJTyBpcyBhIHNpbmdsZXZhbHVlIGZpZWxkLiBUaHVzIG5vIGluZGV4IGlzIHBhc3NlZC4KICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9GaXJzdE1vbmRheSR7VGVzdElEU3VmZml4fSIsCiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICMgRmlyc3RXZWVrZW5kIGlzIGEgbXVsdGl2YWx1ZSBmaWVsZC4KICAgICAgICAgICAgICAgICMgVHdvIGNhc2VzIGFyZSBjb3ZlcmVkIGhlcmU6CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSB2YWx1ZSBhdCBhIHNwZWNpZmljIGluZGV4LCB0aGF0IGlzIHRoZSBmaXJzdCBhbmQgdGhlIHNlY29uZCBlbGVtZW50CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSBjb21wbGV0ZSBsaXN0CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9OjoxIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9OjoyIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewoKICAgICAgICAgICAgICAgICMgRW1wdHkgaGFzaCBtdXN0IGJlIHNwZWNpZmllZCwgYXMgb3RoZXJ3aXNlIHRoZSBwcmV2aW91c2x5IHNldCB1cCBTZWFyY2hEYXRhIHByZXZhaWxzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwgICAgIyB1c3VhbGx5IHNhbWUgYXMgZm9yIEV4cG9ydERhdGFHZXQKICAgICAgICAgICAgICAgIEZvcm1hdCAgICAgPT4gJ0NTVicsCiAgICAgICAgICAgICAgICBGb3JtYXREYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDb2x1bW5TZXBhcmF0b3IgPT4gJ0NvbW1hJywKICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgIlVuaXRUZXN0IC0gVHdvRGF0ZXMgMjAyNSAkUmFuZG9tSUQiLAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzddLAogICAgICAgICAgICAgICAgcXF7MjAyNS0wMS0wNyAwMDowMDowMH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG91bGQgYmUgbW9uZGF5LCBpcyB0dWVzZGF5CiAgICAgICAgICAgICAgICBxcXtbIjIwMjUtMDEtMDQgMDA6MDA6MDAiLCIyMDI1LTAxLTA1IDAwOjAwOjAwIl19LCAgICAjIHNhdHVyZGF5IGFuZCBzdW5kYXkKICAgICAgICAgICAgICAgIHFxezIwMjUtMDEtMDQgMDA6MDA6MDB9LAogICAgICAgICAgICAgICAgcXF7MjAyNS0wMS0wNSAwMDowMDowMH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjQgJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2XSwKICAgICAgICAgICAgICAgIHFxezIwMjQtMDEtMDEgMDA6MDA6MDB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbW9uZGF5CiAgICAgICAgICAgICAgICBxcXtbIjIwMjQtMDEtMDYgMDA6MDA6MDAiLCIyMDI0LTAxLTA3IDAwOjAwOjAwIl19LCAgICAjIHNhdHVyZGF5IGFuZCBzdW5kYXkKICAgICAgICAgICAgICAgIHFxezIwMjQtMDEtMDYgMDA6MDA6MDB9LAogICAgICAgICAgICAgICAgcXF7MjAyNC0wMS0wNyAwMDowMDowMH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICcsJywKICAgICAgICAgICAgICAgIHFxeyJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjUgJFJhbmRvbUlEIn0sCiAgICAgICAgICAgICAgICBxcXsiJENvbmZpZ0l0ZW1OdW1iZXJzWzddIn0sCiAgICAgICAgICAgICAgICBxcXsiMjAyNS0wMS0wNyAwMDowMDowMCJ9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNob3VsZCBiZSBtb25kYXksIGlzIHR1ZXNkYXkKICAgICAgICAgICAgICAgIHFxeyJbIiIyMDI1LTAxLTA0IDAwOjAwOjAwIiIsIiIyMDI1LTAxLTA1IDAwOjAwOjAwIiJdIn0sICAgICMgc2F0dXJkYXkgYW5kIHN1bmRheQogICAgICAgICAgICAgICAgcXF7IjIwMjUtMDEtMDQgMDA6MDA6MDAifSwKICAgICAgICAgICAgICAgIHFxeyIyMDI1LTAxLTA1IDAwOjAwOjAwIn0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgIGpvaW4oCiAgICAgICAgICAgICAgICAnLCcsCiAgICAgICAgICAgICAgICBxcXsiVW5pdFRlc3QgLSBUd29EYXRlcyAyMDI0ICRSYW5kb21JRCJ9LAogICAgICAgICAgICAgICAgcXF7IiRDb25maWdJdGVtTnVtYmVyc1s2XSJ9LAogICAgICAgICAgICAgICAgcXF7IjIwMjQtMDEtMDEgMDA6MDA6MDAifSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtb25kYXkKICAgICAgICAgICAgICAgIHFxeyJbIiIyMDI0LTAxLTA2IDAwOjAwOjAwIiIsIiIyMDI0LTAxLTA3IDAwOjAwOjAwIiJdIn0sICAgICMgc2F0dXJkYXkgYW5kIHN1bmRheQogICAgICAgICAgICAgICAgcXF7IjIwMjQtMDEtMDYgMDA6MDA6MDAifSwKICAgICAgICAgICAgICAgIHFxeyIyMDI0LTAxLTA3IDAwOjAwOjAwIn0sCiAgICAgICAgICAgICksCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtFeHBvcnQgTnVtYmVyLCBDdXN0b21lckNJTywgYW5kIFpaWlNldE9mQWdlbnRzIGFzIENTVn0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyQ0lPIGlzIGEgc2luZ2xldmFsdWUgZmllbGQuIFRodXMgbm8gaW5kZXggaXMgcGFzc2VkLgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgIyBaWlpTZXRPZkFnZW50cyBpcyBhIG11bHRpdmFsdWUgZmllbGQuCiAgICAgICAgICAgICAgICAjIFR3byBjYXNlcyBhcmUgY292ZXJlZCBoZXJlOgogICAgICAgICAgICAgICAgIyAtIGdldCB0aGUgdmFsdWUgYXQgYSBzcGVjaWZpYyBpbmRleCwgdGhhdCBpcyBzZWNvbmQgZWxlbWVudAogICAgICAgICAgICAgICAgIyAtIGdldCB0aGUgY29tcGxldGUgbGlzdAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJHtUZXN0SURTdWZmaXh9OjoyIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CgogICAgICAgICAgICAgICAgIyBFbXB0eSBoYXNoIG11c3QgYmUgc3BlY2lmaWVkLCBhcyBvdGhlcndpc2UgdGhlIHByZXZpb3VzbHkgc2V0IHVwIFNlYXJjaERhdGEgcHJldmFpbHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLCAgICAjIHVzdWFsbHkgc2FtZSBhcyBmb3IgRXhwb3J0RGF0YUdldAogICAgICAgICAgICAgICAgRm9ybWF0ICAgICA9PiAnQ1NWJywKICAgICAgICAgICAgICAgIEZvcm1hdERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtblNlcGFyYXRvciA9PiAnU2VtaWNvbG9uJywKICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBxcXt7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfX0sCiAgICAgICAgICAgICAgICBxcXtbeyJBZ2VudDEkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH1dfSx7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfV19LAogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgICAgICBxcXttYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIvCfl4QiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe3siQWdlbnQxJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH1dLCJBZ2VudDIkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX19LAogICAgICAgICAgICAgICAgcXF7W3siQWdlbnQxJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH1dLCJBZ2VudDIkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0seyJBZ2VudDEkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fV0sIkFnZW50MiRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH1dfSx7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RGVza0FnZW50fV19XX0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICc7JywKICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlcnNbM10ifSwKICAgICAgICAgICAgICAgIHFxeyJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIiLwn5eEIiIkUmFuZG9tSUQifSwgICAgIyBub3QgSlNPTiBiZWNhdXNlIHNpbmdsZSB2YWx1ZQogICAgICAgICAgICAgICAgcXF7InsiIkFnZW50MSRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fV0sIiJBZ2VudDIkVGVzdElEU3VmZml4IiI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfSJ9LAogICAgICAgICAgICAgICAgcXF7Ilt7IiJBZ2VudDEkVGVzdElEU3VmZml4IiI6WyRBZ2VudDJVc2VySUR7RGVza0FnZW50fV0sIiJBZ2VudDIkVGVzdElEU3VmZml4IiI6WyRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH1dfSx7IiJBZ2VudDEkVGVzdElEU3VmZml4IiI6WyRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH1dLCIiQWdlbnQyJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9XX1dIn0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgIGpvaW4oCiAgICAgICAgICAgICAgICAnOycsCiAgICAgICAgICAgICAgICBxcXsiJENvbmZpZ0l0ZW1OdW1iZXJzWzJdIn0sCiAgICAgICAgICAgICAgICBxcXsibWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICIi8J+XhCIiJFJhbmRvbUlEIn0sCiAgICAgICAgICAgICAgICBxcXsieyIiQWdlbnQxJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiIkFnZW50MiRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0ifSwKICAgICAgICAgICAgICAgIHFxeyJbeyIiQWdlbnQxJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9XSwiIkFnZW50MiRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0seyIiQWdlbnQxJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiIkFnZW50MiRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0seyIiQWdlbnQxJFRlc3RJRFN1ZmZpeCIiOlskQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9XSwiIkFnZW50MiRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX1dIn0sCiAgICAgICAgICAgICksCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQgYXMgQ1NWfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7U2luZ2xlVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9aWlpTZXRDb250aW5lbnRhbFN1cHBvcnQke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CgogICAgICAgICAgICAgICAgIyBFbXB0eSBoYXNoIG11c3QgYmUgc3BlY2lmaWVkLCBhcyBvdGhlcndpc2UgdGhlIHByZXZpb3VzbHkgc2V0IHVwIFNlYXJjaERhdGEgcHJldmFpbHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLCAgICAjIHVzdWFsbHkgc2FtZSBhcyBmb3IgRXhwb3J0RGF0YUdldAogICAgICAgICAgICAgICAgRm9ybWF0ICAgICA9PiAnQ1NWJywKICAgICAgICAgICAgICAgIEZvcm1hdERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtblNlcGFyYXRvciA9PiAnU2VtaWNvbG9uJywKICAgICAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzVdLAogICAgICAgICAgICAgICAgcXF7W3siTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJFdXJvcGV9XSwiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX1dfV19LAogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNF0sCiAgICAgICAgICAgICAgICBxcXtbeyJMZXZlbEZpcnN0JFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7Rmlyc3RMZXZlbFN1cHBvcnRlckFmcmljYX1dLCJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe1NlY29uZExldmVsU3VwcG9ydGVyQWZyaWNhfV19XX0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICc7JywKICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlcnNbNV0ifSwKICAgICAgICAgICAgICAgIHFxeyJbeyIiTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyRXVyb3BlfV0sIiJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX1dfV0ifSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgam9pbigKICAgICAgICAgICAgICAgICc7JywKICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlcnNbNF0ifSwKICAgICAgICAgICAgICAgIHFxeyJbeyIiTGV2ZWxGaXJzdCRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyQWZyaWNhfV0sIiJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiIjpbJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckFmcmljYX1dfV0ifSwKICAgICAgICAgICAgKSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIEpTT04gZXhwb3J0cwoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7RXhwb3J0IE5hbWUsIE51bWJlciwgQ3VzdG9tZXJDSU8sIGFuZCBDdXN0b21lclNhbGVzVGVhbSBhcyB1Z2x5IGNvbmNhdGVuYXRlZCBKU09OfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICMgQ3VzdG9tZXJDSU8gaXMgYSBzaW5nbGV2YWx1ZSBmaWVsZC4gVGh1cyBubyBpbmRleCBpcyBwYXNzZWQuCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8ke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyU2FsZXNUZWFtIGlzIGEgbXVsdGl2YWx1ZSBmaWVsZC4KICAgICAgICAgICAgICAgICMgVHdvIGNhc2VzIGFyZSBjb3ZlcmVkIGhlcmU6CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSB2YWx1ZSBhdCBhIHNwZWNpZmljIGluZGV4LCB0aGF0IGlzIHRoZSBmaXJzdCBhbmQgdGhlIHNlY29uZCBlbGVtZW50CiAgICAgICAgICAgICAgICAjIC0gZ2V0IHRoZSBjb21wbGV0ZSBsaXN0CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0ke1Rlc3RJRFN1ZmZpeH06OjEiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9DdXN0b21lclNhbGVzVGVhbSR7VGVzdElEU3VmZml4fTo6MiIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewoKICAgICAgICAgICAgICAgICMgRW1wdHkgaGFzaCBtdXN0IGJlIHNwZWNpZmllZCwgYXMgb3RoZXJ3aXNlIHRoZSBwcmV2aW91c2x5IHNldCB1cCBTZWFyY2hEYXRhIHByZXZhaWxzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sICAgICMgd2l0aCBKU09OIGZvcm1hdAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sICAgICMgdXN1YWxseSBzYW1lIGFzIGZvciBFeHBvcnREYXRhR2V0CiAgICAgICAgICAgICAgICBGb3JtYXQgICAgID0+ICdKU09OJywKICAgICAgICAgICAgICAgIEZvcm1hdERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFByZXR0eSA9PiAwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICAjIFRoZSBleHBlY3RlZCByb3dzIG5lZWQgdG8gYmUgc29ydGVkIGJ5IGNvbmZpZyBpdGVtIG51bWJlciBpbiBkZXNjZW5kaW5nIG9yZGVyLgogICAgICAgICMgVGhlcmUgaXMgbm8gd2F5IHRvIHNwZWNpZnkgdGhlIHNvcnQgb3JkZXIgaW4gRXhwb3J0RGF0YUdldCgpLgogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDIgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1sxXSwKICAgICAgICAgICAgICAgIHFxe21hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciAi8J+XhCIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgcXF7b25pb24gbW9uZ2VyICLwn6eFIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBxcXthcHBsZSBtb25nZXIgIvCfjY4iJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICBxcXtvbmlvbiBtb25nZXIgIvCfp4UiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgICAgICBxcXthcHBsZSBtb25nZXIgIvCfjY4iJFJhbmRvbUlEfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBxcXttYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIvCfl4QiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe3BhbG0gdHJlZSBtb25nZXIgIvCfjLQiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIHFxe3RhbmFiYXRlIHRyZWUgbW9uZ2VyICLwn46LIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgcXF7cGFsbSB0cmVlIG1vbmdlciAi8J+MtCIkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgICAgIHFxe3RhbmFiYXRlIHRyZWUgbW9uZ2VyICLwn46LIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICBdLAogICAgICAgIF0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0Q29udGVudCA9PiBbCiAgICAgICAgICAgIHFxe1siVW5pdFRlc3QgLSBDb25maWdJdGVtIDIgVmVyc2lvbiAxIiwiJENvbmZpZ0l0ZW1OdW1iZXJzWzFdIiwibWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyIFxcIlx4ezFGNUM0fVxcIiRSYW5kb21JRCIsIm9uaW9uIG1vbmdlciBcXCJceHsxRjlDNX1cXCIkUmFuZG9tSUQiLCJhcHBsZSBtb25nZXIgXFwiXHh7MUYzNEV9XFwiJFJhbmRvbUlEIixbIm9uaW9uIG1vbmdlciBcXCJceHsxRjlDNX1cXCIkUmFuZG9tSUQiLCJhcHBsZSBtb25nZXIgXFwiXHh7MUYzNEV9XFwiJFJhbmRvbUlEIl1dfSwKICAgICAgICAgICAgcXF7WyJVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEiLCIkQ29uZmlnSXRlbU51bWJlcnNbMF0iLCJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgXFwiXHh7MUY1QzR9XFwiJFJhbmRvbUlEIiwicGFsbSB0cmVlIG1vbmdlciBcXCJceHsxRjMzNH1cXCIkUmFuZG9tSUQiLCJ0YW5hYmF0ZSB0cmVlIG1vbmdlciBcXCJceHsxRjM4Qn1cXCIkUmFuZG9tSUQiLFsicGFsbSB0cmVlIG1vbmdlciBcXCJceHsxRjMzNH1cXCIkUmFuZG9tSUQiLCJ0YW5hYmF0ZSB0cmVlIG1vbmdlciBcXCJceHsxRjM4Qn1cXCIkUmFuZG9tSUQiXV19LAoKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0V4cG9ydCBOdW1iZXIsIEN1c3RvbWVyQ0lPLCBhbmQgWlpaU2V0T2ZBZ2VudHMgYXMgdWdseSBjb25jYXRlbmF0ZWQgSlNPTn0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyQ0lPIGlzIGEgc2luZ2xldmFsdWUgZmllbGQuIFRodXMgbm8gaW5kZXggaXMgcGFzc2VkLgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCgogICAgICAgICAgICAgICAgIyBaWlpTZXRPZkFnZW50cyBpcyBhIG11bHRpdmFsdWUgZmllbGQuCiAgICAgICAgICAgICAgICAjIFR3byBjYXNlcyBhcmUgY292ZXJlZCBoZXJlOgogICAgICAgICAgICAgICAgIyAtIGdldCB0aGUgdmFsdWUgYXQgYSBzcGVjaWZpYyBpbmRleCwgdGhhdCBpcyBzZWNvbmQgZWxlbWVudAogICAgICAgICAgICAgICAgIyAtIGdldCB0aGUgY29tcGxldGUgbGlzdAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJHtUZXN0SURTdWZmaXh9OjoyIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CgogICAgICAgICAgICAgICAgIyBFbXB0eSBoYXNoIG11c3QgYmUgc3BlY2lmaWVkLCBhcyBvdGhlcndpc2UgdGhlIHByZXZpb3VzbHkgc2V0IHVwIFNlYXJjaERhdGEgcHJldmFpbHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s2XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzZdLCAgICAjIHVzdWFsbHkgc2FtZSBhcyBmb3IgRXhwb3J0RGF0YUdldAogICAgICAgICAgICAgICAgRm9ybWF0ICAgICA9PiAnSlNPTicsCiAgICAgICAgICAgICAgICBGb3JtYXREYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBQcmV0dHkgPT4gMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9IF0sICJBZ2VudDIkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzJdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgICAgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0gXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsKICAgICAgICAgICAgcXF7WyIkQ29uZmlnSXRlbU51bWJlcnNbM10iLCJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgXFwiXHh7MUY1QzR9XFwiJFJhbmRvbUlEIix7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfSxbeyJBZ2VudDEkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH1dfSx7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH1dfV1dfSwKICAgICAgICAgICAgcXF7WyIkQ29uZmlnSXRlbU51bWJlcnNbMl0iLCJtYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgXFwiXHh7MUY1QzR9XFwiJFJhbmRvbUlEIix7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RGVza0FnZW50fV19LFt7IkFnZW50MSRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9XSwiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7RGVza0FnZW50fV19LHsiQWdlbnQxJFRlc3RJRFN1ZmZpeCI6WyRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH1dLCJBZ2VudDIkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9XX0seyJBZ2VudDEkVGVzdElEU3VmZml4IjpbJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fV0sIkFnZW50MiRUZXN0SURTdWZmaXgiOlskQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH1dfV1dfSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0V4cG9ydCBOdW1iZXIsIEN1c3RvbWVyQ0lPLCBhbmQgWlpaU2V0T2ZBZ2VudHMgYXMgcHJldHR5IGNvbmNhdGVuYXRlZCBKU09OfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMke1Rlc3RJRFN1ZmZpeH0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CgogICAgICAgICAgICAgICAgIyBFbXB0eSBoYXNoIG11c3QgYmUgc3BlY2lmaWVkLCBhcyBvdGhlcndpc2UgdGhlIHByZXZpb3VzbHkgc2V0IHVwIFNlYXJjaERhdGEgcHJldmFpbHMKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s2XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzZdLCAgICAjIHVzdWFsbHkgc2FtZSBhcyBmb3IgRXhwb3J0RGF0YUdldAogICAgICAgICAgICAgICAgRm9ybWF0ICAgICA9PiAnSlNPTicsCiAgICAgICAgICAgICAgICBGb3JtYXREYXRhID0+IHsKCiAgICAgICAgICAgICAgICAgICAgIyBQcmV0dHkgaXMgdGhlIGRlZmF1bHQKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKCiAgICAgICAgIyBUaGUgZXhwZWN0ZWQgcm93cyBuZWVkIHRvIGJlIHNvcnRlZCBieSBjb25maWcgaXRlbSBudW1iZXIgaW4gZGVzY2VuZGluZyBvcmRlci4KICAgICAgICAjIFRoZXJlIGlzIG5vIHdheSB0byBzcGVjaWZ5IHRoZSBzb3J0IG9yZGVyIGluIEV4cG9ydERhdGFHZXQoKS4KICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICAgICAgcXF7bWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyICLwn5eEIiRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAiJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IiBdLCAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgPT4gWyAiJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSIgXSB9LAogICAgICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiID0+IFsgIiRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IiA9PiBbICIkQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9IiBdIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICBdLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgICAgICBxcXttYWxlIGNoaWVmIGluZm9ybWF0aW9uIG9mZmljZXIgIvCfl4QiJFJhbmRvbUlEfSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IiA9PiBbICIkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9IiBdLCAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgPT4gWyAiJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IiBdIH0sCiAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgPT4gWyAiJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSIgXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiID0+IFsgIiRBZ2VudDJVc2VySUR7RGVza0FnZW50fSIgXSB9LAogICAgICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiID0+IFsgIiRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IiA9PiBbICIkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0iIF0gfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsgPDwiSVRFTV8xIiwgPDwiSVRFTV8yIiBdLApbCiAgICIkQ29uZmlnSXRlbU51bWJlcnNbM10iLAogICAibWFsZSBjaGllZiBpbmZvcm1hdGlvbiBvZmZpY2VyIFxcIlx4ezFGNUM0fVxcIiRSYW5kb21JRCIsCiAgIFsKICAgICAgewogICAgICAgICAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7RGVza0FnZW50fQogICAgICAgICBdLAogICAgICAgICAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0KICAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgICJBZ2VudDEkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fQogICAgICAgICBdLAogICAgICAgICAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0KICAgICAgICAgXQogICAgICB9CiAgIF0KXQpJVEVNXzEKWwogICAiJENvbmZpZ0l0ZW1OdW1iZXJzWzJdIiwKICAgIm1hbGUgY2hpZWYgaW5mb3JtYXRpb24gb2ZmaWNlciBcXCJceHsxRjVDNH1cXCIkUmFuZG9tSUQiLAogICBbCiAgICAgIHsKICAgICAgICAgIkFnZW50MSRUZXN0SURTdWZmaXgiIDogWwogICAgICAgICAgICAkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9CiAgICAgICAgIF0sCiAgICAgICAgICJBZ2VudDIkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9CiAgICAgICAgIF0KICAgICAgfSwKICAgICAgewogICAgICAgICAiQWdlbnQxJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0KICAgICAgICAgXSwKICAgICAgICAgIkFnZW50MiRUZXN0SURTdWZmaXgiIDogWwogICAgICAgICAgICAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0KICAgICAgICAgXQogICAgICB9LAogICAgICB7CiAgICAgICAgICJBZ2VudDEkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fQogICAgICAgICBdLAogICAgICAgICAiQWdlbnQyJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7RGVza0FnZW50fQogICAgICAgICBdCiAgICAgIH0KICAgXQpdCklURU1fMgogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe1paWlNldENvbnRpbmVudGFsU3VwcG9ydCBhcyBwcmV0dHkgSlNPTn0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1NpbmdsZVZhbHVlU2V0fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0Q29udGluZW50YWxTdXBwb3J0JHtUZXN0SURTdWZmaXh9IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewoKICAgICAgICAgICAgICAgICMgRW1wdHkgaGFzaCBtdXN0IGJlIHNwZWNpZmllZCwgYXMgb3RoZXJ3aXNlIHRoZSBwcmV2aW91c2x5IHNldCB1cCBTZWFyY2hEYXRhIHByZXZhaWxzCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sICAgICMgd2l0aCBKU09OIGZvcm1hdAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sICAgICMgdXN1YWxseSBzYW1lIGFzIGZvciBFeHBvcnREYXRhR2V0CiAgICAgICAgICAgICAgICBGb3JtYXQgICAgID0+ICdKU09OJywKICAgICAgICAgICAgICAgIEZvcm1hdERhdGEgPT4gewoKICAgICAgICAgICAgICAgICAgICAjIHJlZHVuZGFudCBzZXR0aW5nIGFzIFByZXR0eSBpcyB0aGUgZGVmYXVsdAogICAgICAgICAgICAgICAgICAgIFByZXR0eSA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAoKICAgICAgICAjIFRoZSBleHBlY3RlZCByb3dzIG5lZWQgdG8gYmUgc29ydGVkIGJ5IGNvbmZpZyBpdGVtIG51bWJlciBpbiBkZXNjZW5kaW5nIG9yZGVyLgogICAgICAgICMgVGhlcmUgaXMgbm8gd2F5IHRvIHNwZWNpZnkgdGhlIHNvcnQgb3JkZXIgaW4gRXhwb3J0RGF0YUdldCgpLgogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNV0sCiAgICAgICAgICAgICAgICBbIHsgIkxldmVsRmlyc3QkVGVzdElEU3VmZml4IiA9PiBbICRBZ2VudDJVc2VySUR7Rmlyc3RMZXZlbFN1cHBvcnRlckV1cm9wZX0gXSwgIkxldmVsU2Vjb25kJFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe1NlY29uZExldmVsU3VwcG9ydGVyRXVyb3BlfSBdIH0gXSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzRdLAogICAgICAgICAgICAgICAgWyB7ICJMZXZlbEZpcnN0JFRlc3RJRFN1ZmZpeCIgPT4gWyAkQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0sICJMZXZlbFNlY29uZCRUZXN0SURTdWZmaXgiID0+IFsgJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckFmcmljYX0gXSB9IF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnRDb250ZW50ID0+IFsgPDwiSVRFTV8zIiwgPDwiSVRFTV80IiBdLApbCiAgICIkQ29uZmlnSXRlbU51bWJlcnNbNV0iLAogICBbCiAgICAgIHsKICAgICAgICAgIkxldmVsRmlyc3QkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyRXVyb3BlfQogICAgICAgICBdLAogICAgICAgICAiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IiA6IFsKICAgICAgICAgICAgJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX0KICAgICAgICAgXQogICAgICB9CiAgIF0KXQpJVEVNXzMKWwogICAiJENvbmZpZ0l0ZW1OdW1iZXJzWzRdIiwKICAgWwogICAgICB7CiAgICAgICAgICJMZXZlbEZpcnN0JFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7Rmlyc3RMZXZlbFN1cHBvcnRlckFmcmljYX0KICAgICAgICAgXSwKICAgICAgICAgIkxldmVsU2Vjb25kJFRlc3RJRFN1ZmZpeCIgOiBbCiAgICAgICAgICAgICRBZ2VudDJVc2VySUR7U2Vjb25kTGV2ZWxTdXBwb3J0ZXJBZnJpY2F9CiAgICAgICAgIF0KICAgICAgfQogICBdCl0KSVRFTV80CiAgICB9LAoKKTsKCj1mb3IgbmV2ZXIKCjEwLjEgdGVzdHMKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGRlcGxveW1lbnQgc3RhdGUgc2VhcmNoIGNoZWNrKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1sxXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGluY2lkZW50IHN0YXRlIHNlYXJjaCBjaGVjayl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgSW5jaVN0YXRlSURzID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdIF0sCiAgICAgICAgICAgIFsgJENvbmZpZ0l0ZW1OdW1iZXJzWzFdIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY29tYmluZWQgc2VhcmNoIGNoZWNrKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKFhNTCBkYXRhIHNlYXJjaCBjaGVjayl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgRGF0ZTEgICAgICAgICAgID0+ICcyMDA4LTAyLTAxJywKICAgICAgICAgICAgICAgIFRleHRBcmVhMSAgICAgICA9PiAiVGVzdFxuVGV4dCBBcnJheVxuVGVzdCIsCiAgICAgICAgICAgICAgICBDdXN0b21lcjEgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgIFRleHQxICAgICAgICAgICA9PiAnVGVzdCBUZXh0IFRlc3QnLAogICAgICAgICAgICAgICAgRGF0ZVRpbWUxICAgICAgID0+ICcyMDA4LTAyLTAxIDAzOjU5JywKICAgICAgICAgICAgICAgIEludGVnZXIxICAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICBHZW5lcmFsQ2F0YWxvZzEgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGNvbWJpbmVkIGFsbCBzZWFyY2ggY2hlY2spfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSURzICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBEYXRlMSAgICAgICAgICAgPT4gJzIwMDgtMDItMDEnLAogICAgICAgICAgICAgICAgVGV4dEFyZWExICAgICAgID0+ICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgICAgIEN1c3RvbWVyMSAgICAgICA9PiAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgVGV4dDEgICAgICAgICAgID0+ICdUZXN0IFRleHQgVGVzdCcsCiAgICAgICAgICAgICAgICBEYXRlVGltZTEgICAgICAgPT4gJzIwMDgtMDItMDEgMDM6NTknLAogICAgICAgICAgICAgICAgSW50ZWdlcjEgICAgICAgID0+ICcxJywKICAgICAgICAgICAgICAgIEdlbmVyYWxDYXRhbG9nMSA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgdGhlIHJldHVybmVkIGFycmF5KX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdDdXN0b21lcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlVGltZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0R1bW15MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbnRlZ2VyMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHRBcmVhMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNl0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdVbml0VGVzdCcsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICdUZXN0MScsCiAgICAgICAgICAgICAgICAnMScsCiAgICAgICAgICAgICAgICAnVGVzdCBUZXh0IFRlc3QnLAogICAgICAgICAgICAgICAgIlRlc3RcblRleHQgQXJyYXlcblRlc3QiLAogICAgICAgICAgICBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGRvdWJsZSBlbGVtZW50IGNoZWNrcyl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnQ3VzdG9tZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdDdXN0b21lcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZVRpbWUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlVGltZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0R1bW15MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRHVtbXkxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW50ZWdlcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0ludGVnZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHRBcmVhMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dEFyZWExOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s2XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdVbml0VGVzdCcsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgICdUZXN0MScsCiAgICAgICAgICAgICAgICAnMScsCiAgICAgICAgICAgICAgICAnMScsCiAgICAgICAgICAgICAgICAnVGVzdCBUZXh0IFRlc3QnLAogICAgICAgICAgICAgICAgJ1Rlc3QgVGV4dCBUZXN0JywKICAgICAgICAgICAgICAgICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgICAgICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChzdWIgZWxlbWVudCBjaGVja3MpfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbN10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDEpIFN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMSkgU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDEpIFN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDIpIFN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMikgU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIyICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjIgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMiAoMSknLAogICAgICAgICAgICAgICAgJ01haW4yICgxKSBTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjIgKDEpIFN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMiAoMSkgU3ViMiAoMiknLAogICAgICAgICAgICBdLAogICAgICAgIF0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKHN1YiBlbGVtZW50IGNoZWNrcyB3aXRoIHVuZGVmIHZhbHVlcyl9LAogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbN10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDEpIFN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMSkgU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMSkgU3ViU3ViMiAoMSknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMikgU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDIpIFN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMikgU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMiAoMiknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMiAoMSkgU3ViMSAoMSknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjIgKDEpIFN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMiAoMSkgU3ViMiAoMiknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChzdWIgZWxlbWVudCBjaGVja3Mgd2l0aCB1bmRlZiB2YWx1ZXMgYW5kIGVtcHR5IHN0cmluZ3MpfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjo0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzddLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbM10sCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDQgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoc3BlY2lhbCBjaGFyYWN0ZXIgY2hlY2tzKX0sCiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzRdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzhdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNF0sCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDUgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnIiI7Ozo6Li4tLV9fIyMnLAogICAgICAgICAgICAgICAgJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAnPjxAflwnfXtbXVxcJywKICAgICAgICAgICAgICAgICdUZXN0OzpfwrBeISLCpyQlJi8oKT0/wrRgKitUZXN0JywKICAgICAgICAgICAgICAgICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAnVGVzdCBUZXN0JywKICAgICAgICAgICAgICAgICJUZXN0XG5UZXN0XHRUZXN0IiwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChVVEYtOCBjaGVja3MpfSwKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNV0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbOV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1XSwKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gNiBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICfihoIg4oW7IOKFmycsCiAgICAgICAgICAgICAgICAn4piEIOKGriDihrkg4oaSJywKICAgICAgICAgICAgICAgICfigqQg4oKhIOKCqSDigq8g4oK1JywKICAgICAgICAgICAgICAgICfimYog4pmIIOKZiSDimYog4pmLIOKZjSDimZEnLAogICAgICAgICAgICAgICAgJ+KciCDinaQg4piuJywKICAgICAgICAgICAgICAgICfViiDVhCDVgCcsCiAgICAgICAgICAgICAgICAnwq4gwqknLAogICAgICAgICAgICAgICAgJ+OBiyDjgZIg44KSJywKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCj1jdXQKCiMgcnVuIGdlbmVyYWwgRXhwb3J0RGF0YUdldCB0ZXN0cwpmb3IgbXkgJFRlc3QgKEBFeHBvcnREYXRhVGVzdHMpIHsKCiAgICBzdWJ0ZXN0ICJFeHBvcnREYXRhOiAkVGVzdC0+e05hbWV9IiA9PiBzdWIgewoKICAgICAgICAjIGNoZWNrIFNvdXJjZUV4cG9ydERhdGEgYXR0cmlidXRlCiAgICAgICAgaWYgKCAhJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfSB8fCByZWYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfSBuZSAnSEFTSCcgKSB7CgogICAgICAgICAgICBmYWlsKCJTb3VyY2VFeHBvcnREYXRhIG5vdCBmb3VuZCBmb3IgdGhpcyB0ZXN0LiIpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKAogICAgICAgICAgICAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57T2JqZWN0RGF0YX0KICAgICAgICAgICAgJiYgcmVmICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntPYmplY3REYXRhfSBlcSAnSEFTSCcKICAgICAgICAgICAgJiYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9LT57VGVtcGxhdGVJRH0KICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgc2F2ZSBvYmplY3QgZGF0YQogICAgICAgICAgICAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhU2F2ZSgKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9LT57VGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICBPYmplY3REYXRhID0+ICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntPYmplY3REYXRhfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0aGUgbWFwcGluZyBvYmplY3QgZGF0YQogICAgICAgIGlmICgKICAgICAgICAgICAgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e01hcHBpbmdPYmplY3REYXRhfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e01hcHBpbmdPYmplY3REYXRhfSBlcSAnQVJSQVknCiAgICAgICAgICAgICYmICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntFeHBvcnREYXRhR2V0fS0+e1RlbXBsYXRlSUR9CiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIGRlbGV0ZSBhbGwgZXhpc3RpbmcgbWFwcGluZyBkYXRhCiAgICAgICAgICAgICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdEZWxldGUoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntFeHBvcnREYXRhR2V0fS0+e1RlbXBsYXRlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYWRkIHRoZSBtYXBwaW5nIG9iamVjdCByb3dzCiAgICAgICAgICAgIE1BUFBJTkdPQkpFQ1REQVRBOgogICAgICAgICAgICBmb3IgbXkgJE1hcHBpbmdPYmplY3REYXRhICggQHsgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e01hcHBpbmdPYmplY3REYXRhfSB9ICkgewoKICAgICAgICAgICAgICAgICMgYWRkIGEgbmV3IG1hcHBpbmcgcm93CiAgICAgICAgICAgICAgICBteSAkTWFwcGluZ0lEID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ0FkZCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntFeHBvcnREYXRhR2V0fS0+e1RlbXBsYXRlSUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIHRoZSBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgICAgICAgICAkSW1wb3J0RXhwb3J0T2JqZWN0LT5NYXBwaW5nT2JqZWN0RGF0YVNhdmUoCiAgICAgICAgICAgICAgICAgICAgTWFwcGluZ0lEICAgICAgICAgPT4gJE1hcHBpbmdJRCwKICAgICAgICAgICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiAkTWFwcGluZ09iamVjdERhdGEsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCB0aGUgc2VhcmNoIGRhdGEKICAgICAgICBpZiAoCiAgICAgICAgICAgICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntTZWFyY2hEYXRhfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e1NlYXJjaERhdGF9IGVxICdIQVNIJwogICAgICAgICAgICAmJiAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57RXhwb3J0RGF0YUdldH0tPntUZW1wbGF0ZUlEfQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgIyBzYXZlIHNlYXJjaCBkYXRhCiAgICAgICAgICAgICRJbXBvcnRFeHBvcnRPYmplY3QtPlNlYXJjaERhdGFTYXZlKAogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57RXhwb3J0RGF0YUdldH0tPntUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e1NlYXJjaERhdGF9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGV4cG9ydCBkYXRhIGFzIGFuIGFycmF5cmVmCiAgICAgICAgbXkgJEV4cG9ydERhdGEgPSAkT2JqZWN0QmFja2VuZE9iamVjdC0+RXhwb3J0RGF0YUdldCgKICAgICAgICAgICAgJXsgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9IH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFRlc3QtPntSZWZlcmVuY2VFeHBvcnREYXRhfSApIHsKICAgICAgICAgICAgb2soICEkRXhwb3J0RGF0YSwgIkV4cG9ydERhdGFHZXQoKSByZXR1cm5lZCBub3QgZGF0YSBhcyB3YXMgZXhwZWN0ZWQiICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoIHJlZiAkRXhwb3J0RGF0YSBuZSAnQVJSQVknICkgewoKICAgICAgICAgICAgIyBjaGVjayBhcnJheSByZWZlcmVuY2UKICAgICAgICAgICAgZmFpbCgiRXhwb3J0RGF0YUdldCgpIC0gcmV0dXJuIHZhbHVlIGlzIG5vdCBhbiBhcnJheSByZWZlcmVuY2UiKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgbnVtYmVyIG9mIHJvd3MKICAgICAgICBpcygKICAgICAgICAgICAgc2NhbGFyIEB7JEV4cG9ydERhdGF9LAogICAgICAgICAgICBzY2FsYXIgQHsgJFRlc3QtPntSZWZlcmVuY2VFeHBvcnREYXRhfSB9LAogICAgICAgICAgICAiRXhwb3J0RGF0YUdldCgpIC0gY29ycmVjdCBudW1iZXIgb2Ygcm93cyIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayB0aGUgaW5kaXZpZHVhbCByb3dzIG9mIGV4cG9ydCBkYXRhCiAgICAgICAgbXkgJENvdW50ZXJSb3cgPSAwOwogICAgICAgIFJPVzoKICAgICAgICBmb3IgbXkgJEV4cG9ydFJvdyAoICRFeHBvcnREYXRhLT5AKiApIHsKICAgICAgICAgICAgc3VidGVzdCAiRXhwb3J0RGF0YUdldCgpOiByb3cgJENvdW50ZXJSb3cgaW4gZXhwb3J0ZWQgZGF0YSIgPT4gc3ViIHsKICAgICAgICAgICAgICAgIHJlZl9vayggJEV4cG9ydFJvdywgJ0FSUkFZJywgJ2V4cG9ydGVkIHJvdyBpcyBhbiBhcnJheXJlZicgKTsKCiAgICAgICAgICAgICAgICAjIGV4dHJhY3QgcmVmZXJlbmNlIHJvdwogICAgICAgICAgICAgICAgbXkgJFJlZmVyZW5jZVJvdyA9ICRUZXN0LT57UmVmZXJlbmNlRXhwb3J0RGF0YX0tPlskQ291bnRlclJvd107CiAgICAgICAgICAgICAgICByZWZfb2soICRSZWZlcmVuY2VSb3csICdBUlJBWScsICdleHBlY3RlZCByb3cgaXMgYW4gYXJyYXlyZWYnICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBudW1iZXIgb2YgY29sdW1ucwogICAgICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAgICAgc2NhbGFyIEB7JEV4cG9ydFJvd30sCiAgICAgICAgICAgICAgICAgICAgc2NhbGFyIEB7JFJlZmVyZW5jZVJvd30sCiAgICAgICAgICAgICAgICAgICAgImNvcnJlY3QgbnVtYmVyIG9mIGNvbHVtbnMiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHZhbHVlcwogICAgICAgICAgICAgICAgaXMoICRFeHBvcnRSb3csICRSZWZlcmVuY2VSb3csICd2YWx1ZXMgaW4gZXhwb3J0ZWQgcm93JyApOwogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBjb250aW51ZSB7CiAgICAgICAgICAgICRDb3VudGVyUm93Kys7CiAgICAgICAgfQoKICAgICAgICAjIG9wdGlvbmFsbHkgdGVzdCB0aGUgZm9ybWF0dGVkIGV4cG9ydAogICAgICAgIGlmICggJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFTYXZlfSApIHsKICAgICAgICAgICAgaWYgKCAhJFRlc3QtPntSZWZlcmVuY2VFeHBvcnRDb250ZW50fSApIHsKICAgICAgICAgICAgICAgIGZhaWwoIlJlZmVyZW5jZUV4cG9ydENvbnRlbnQgaXMgc2V0IHVwIik7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggcmVmICRUZXN0LT57UmVmZXJlbmNlRXhwb3J0Q29udGVudH0gbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgIGZhaWwoIlJlZmVyZW5jZUV4cG9ydENvbnRlbnQgaXMgYW4gYXJyYXlyZWYiKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRUZW1wbGF0ZUlEID0gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFTYXZlfS0+e1RlbXBsYXRlSUR9OwoKICAgICAgICAgICAgIyBzcGVjaWZ5IHRoZSBmb3JtYXQKICAgICAgICAgICAgJEltcG9ydEV4cG9ydE9iamVjdC0+Rm9ybWF0RGF0YVNhdmUoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlELAogICAgICAgICAgICAgICAgRm9ybWF0RGF0YSA9PiAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57RXhwb3J0RGF0YVNhdmV9LT57Rm9ybWF0RGF0YX0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgZXhwb3J0IGRhdGEgcm93cwogICAgICAgICAgICBteSAkRm9ybWF0ID0gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFTYXZlfS0+e0Zvcm1hdH07CiAgICAgICAgICAgIGRpYWcgIkZvcm1hdCBvZiBjb250ZW50IGlzOiAkRm9ybWF0IjsKICAgICAgICAgICAgbXkgJEZvcm1hdEJhY2tlbmQgPSAkRm9ybWF0QmFja2VuZE9iamVjdHskRm9ybWF0fTsKICAgICAgICAgICAgbXkgQENvbnRlbnQ7CiAgICAgICAgICAgIGZvciBteSAkUm93ICggJEV4cG9ydERhdGEtPkAqICkgewogICAgICAgICAgICAgICAgcHVzaCBAQ29udGVudCwgJEZvcm1hdEJhY2tlbmQtPkV4cG9ydERhdGFTYXZlKAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgICAgICAgICAgICAgRXhwb3J0RGF0YVJvdyA9PiAkUm93LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgXEBDb250ZW50LAogICAgICAgICAgICAgICAgJFRlc3QtPntSZWZlcmVuY2VFeHBvcnRDb250ZW50fSwKICAgICAgICAgICAgICAgICdFeHBvcnREYXRhU2F2ZSgpIHByb2R1Y2VkIGV4cGVjdGVkIGNvbnRlbnQnCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfTsKfQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIGRlZmluZSBnZW5lcmFsIEltcG9ydERhdGFTYXZlIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15IEBJbXBvcnREYXRhVGVzdHMgPSAoCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtJbXBvcnREYXRhU2F2ZSBkb2Vzbid0IGNvbnRhaW5zIGFsbCBkYXRhIChjaGVjayByZXF1aXJlZCBhdHRyaWJ1dGVzKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gW10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7SW1wb3J0RGF0YVNhdmUgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcyl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1syMF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7SW1wb3J0RGF0YVNhdmUgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcyl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syMF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFtdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7aW1wb3J0IGRhdGEgcm93IG11c3QgYmUgYW4gYXJyYXkgcmVmZXJlbmNlIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syMF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+ICcnLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ltcG9ydCBkYXRhIHJvdyBtdXN0IGJlIGFuIGFycmF5IHJlZmVyZW5jZSAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjBdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiB7fSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtubyBleGlzdGluZyB0ZW1wbGF0ZSBpZCBpcyBnaXZlbiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbLTFdICsgMSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWydEdW1teSddLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe25vIGNsYXNzIGlkIGlzIGdpdmVuIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syMV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsnRHVtbXknXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbnZhbGlkIGNsYXNzIGlkIGlzIGdpdmVuIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJEludmFsZGlDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjJdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbJ0R1bW15J10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7bWFwcGluZyBsaXN0IGlzIGVtcHR5IChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWydEdW1teSddLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe21vcmUgdGhhbiBvbmUgaWRlbnRpZmllciB3aXRoIHRoZSBzYW1lIG5hbWUgKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyAnMTIzJywgJzMyMScgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpZGVudGlmaWVyIGlzIGVtcHR5IChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWycnXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpZGVudGlmaWVyIGlzIHVuZGVmIChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gW3VuZGVmXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtib3RoIGlkZW50aWZpZXJzIGFyZSBlbXB0eSAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyAnJywgJycgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtib3RoIGlkZW50aWZpZXJzIGFyZSB1bmRlZiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyB1bmRlZiwgdW5kZWYgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtvbmUgaWRlbnRpZmllcnMgaXMgZW1wdHksIG9uZSBpcyB1bmRlZiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyAnJywgdW5kZWYgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtvbmUgb2YgdGhlIGlkZW50aWZpZXJzIGlzIGVtcHR5IChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjNdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbICcxMjMnLCAnJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe29uZSBvZiB0aGUgaWRlbnRpZmllcnMgaXMgdW5kZWYgKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syM10sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsgJzEyMycsIHVuZGVmIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7b25lIG9mIHRoZSBpZGVudGlmaWVycyBpcyBlbXB0eSAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyAnJywgJzEyMycgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtvbmUgb2YgdGhlIGlkZW50aWZpZXJzIGlzIGVtcHR5IChzaG91bGQgZmFpbCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjNdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbIHVuZGVmLCAnMTIzJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIFRPRE8gQWRkIHNvbWUgaWRlbnRpZmllciB0ZXN0cwoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7ZW1wdHkgbmFtZSBpcyBnaXZlbiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsgJycsICdQcm9kdWN0aW9uJywgJ09wZXJhdGlvbmFsJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ludmFsaWQgZGVwbG95bWVudCBzdGF0ZSBpcyBnaXZlbiAoc2hvdWxkIGZhaWwpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRWYWxpZENvbmZpZ0l0ZW1DbGFzc0lELAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCAxJywgJ0R1bW15JywgJ09wZXJhdGlvbmFsJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ludmFsaWQgaW5jaWRlbnQgc3RhdGUgaXMgZ2l2ZW4gKHNob3VsZCBmYWlsKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjRdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMicsICdQcm9kdWN0aW9uJywgJ0R1bW15JyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIHRlc3Qgd2l0aG91dCBhbnkgZHluYW1pYyBmaWVsZHMKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHFxe25vIGR5bmFtaWMgZmllbGRzIChzaG91bGQgc3VjY2VlZCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFZhbGlkQ29uZmlnSXRlbUNsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMycsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMycsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgICAgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJFRlc3RJRFN1ZmZpeCIgPT4gdW5kZWYsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyB0ZXN0cyB3aXRoIGEgc2luZ2xlIHZhbHVlIGVudGl0eSBmaWVsZDogQ3VzdG9tZXJDSU8KCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtpbXBvcnQgQ3VzdG9tZXJDSU8gYXMgc2ltcGxlIHN0cmluZyAoc2hvdWxkIHN1Y2NlZWQpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgQ3VzdG9tZXJDSU8nLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAoKICAgICAgICAgICAgICAgICAgICAjIEN1c3RvbWVyQ0lPIGlzIGEgc2luZ2xlIHZhbHVlIEVudGl0aXkgZmllbGQuIEJvdGggQ1NWIGFuZCBKU09OIGV4cG9ydCB0aGlzIGNhc2UgYXMKICAgICAgICAgICAgICAgICAgICAjIGEgc2ltcGxlIHN0cmluZy4KICAgICAgICAgICAgICAgICAgICAkQ3VzdG9tZXJVc2Vyc3tkaXZlcnNlX0NJT30sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgQ3VzdG9tZXJDSU8nLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAoKICAgICAgICAgICAgICAgICMgQ3VzdG9tZXJDSU8gaXMgYSBzaW5nbGUgdmFsdWUgUmVmZXJlbmNlIGZpZWxkLCB0aGVyZWZvcmUgYSBFbnRpdHkgZmllbGQuCiAgICAgICAgICAgICAgICAjIFNpbmdsZSB2YWx1ZSBFbnRpdHkgZmllbGRzIHJldHVybiBhIGxpc3Qgd2l0aCBvbmUgZWxlbWVudC4KICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgJEN1c3RvbWVyVXNlcnN7ZGl2ZXJzZV9DSU99LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0kVGVzdElEU3VmZml4IiA9PiB1bmRlZiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtvbmx5IEN1c3RvbWVyQ0lPIGFzIHJlZmVyZW5jZSB0byBzaW5nbGUgdmFsdWUgYXJyYXkgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyQ0lPJywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKCiAgICAgICAgICAgICAgICAgICAgIyBDdXN0b21lckNJTyBpcyBhIHNpbmdsZSB2YWx1ZSBSZWZlcmVuY2UgZmllbGQsIHRoZXJlZm9yZSBhIEVudGl0eSBmaWVsZC4KICAgICAgICAgICAgICAgICAgICAjIFNpbmdsZSB2YWx1ZSBFbnRpdHkgZmllbGRzIGNhbiBiZSBjcmVhdGVkIHdpdGggYSBsaXN0IHdpdGggYSBzaW5nbGUgZWxlbWVudC4KICAgICAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCB0aGlzIGNhc2UgZG9lcyBub3QgYXJpc2UgZnJvbSB0aGUgcmVndWxhciBleHBvcnQsIGFzIHRoZSByZWd1bGFyIGV4cG9ydAogICAgICAgICAgICAgICAgICAgICMgZXhwb3J0cyBDdXN0b21lckNJTyBhcyBhIHNpbXBsZSBzdHJpbmcuCiAgICAgICAgICAgICAgICAgICAgWyAkQ3VzdG9tZXJVc2Vyc3tmZW1hbGVfQ0lPfSBdLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMSwKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyQ0lPJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKCiAgICAgICAgICAgICAgICAjIEN1c3RvbWVyQ0lPIGlzIGEgc2luZ2xlIHZhbHVlIFJlZmVyZW5jZSBmaWVsZCwgdGhlcmVmb3JlIGEgRW50aXR5IGZpZWxkLgogICAgICAgICAgICAgICAgIyBTaW5nbGUgdmFsdWUgRW50aXR5IGZpZWxkcyByZXR1cm4gYSBsaXN0IHdpdGggb25lIGVsZW1lbnQuCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgICAgICRDdXN0b21lclVzZXJze2ZlbWFsZV9DSU99LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0kVGVzdElEU3VmZml4IiA9PiB1bmRlZiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIHRlc3RzIHdpdGggYSB0d28gZGF0ZSBmaWVsZHM6IEZpcnN0TW9uZGF5IGFuZCBGaXJzdFdlZWtlbmQKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtGaXJzdE1vbmRheSBhbmQgRmlyc3RXZWVrZW5kIGFzIGRhdGEgc3RydWN0dXJlIChzaG91bGQgc3VjY2VlZCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29EYXRlc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RNb25kYXkkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEZpcnN0TW9uZGF5IGFuZCBGaXJzdFdlZWtlbmQnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICcyMDI2LTAxLTA1IDAwOjAwOjAwJywKICAgICAgICAgICAgICAgICAgICBbICcyMDI2LTAxLTAzJywgJzIwMjYtMDEtMDQnIF0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEZpcnN0TW9uZGF5IGFuZCBGaXJzdFdlZWtlbmQnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCIgID0+ICcyMDI2LTAxLTA1IDAwOjAwOjAwJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIgPT4gWyAnMjAyNi0wMS0wMyAwMDowMDowMCcsICcyMDI2LTAxLTA0IDAwOjAwOjAwJyBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHFxe0ZpcnN0TW9uZGF5IGFuZCBGaXJzdFdlZWtlbmQgYXMgSlNPTiBzdHJpbmcgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9GaXJzdE1vbmRheSRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9GaXJzdFdlZWtlbmQkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgRmlyc3RNb25kYXkgYW5kIEZpcnN0V2Vla2VuZCcsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJzIwMjctMDEtMDQgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgICAgIHFxe1siMjAyNy0wMS0wMiIsICIyMDI3LTAxLTAzIiBdfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgRmlyc3RNb25kYXkgYW5kIEZpcnN0V2Vla2VuZCcsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RNb25kYXkkVGVzdElEU3VmZml4IiAgPT4gJzIwMjctMDEtMDQgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9GaXJzdFdlZWtlbmQkVGVzdElEU3VmZml4IiA9PiBbICcyMDI3LTAxLTAyIDAwOjAwOjAwJywgJzIwMjctMDEtMDMgMDA6MDA6MDAnIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7Rml4aW5nIHRoZSBmaXJzdCBtb25kYXkgaW4gMjAyNSwgd2FzIHNldCB0byB0dWVzZGF5fSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvRGF0ZXN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9GaXJzdE1vbmRheSRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgIlVuaXRUZXN0IC0gVHdvRGF0ZXMgMjAyNSAkUmFuZG9tSUQiLCAgICAjIHdhcyBjcmVhdGVkIGJ5IHNldHVwIG9mIGNvbmZpZyBpdGVtcwogICAgICAgICAgICAgICAgICAgICcyMDI1LTAxLTA2IDAwOjAwOjAwJywgICAgICAgICAgICAgICAgICAgIyBmaXhpbmcgdHVlc2RheSB0byBtb25kYXkKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDIsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHFxe1VuaXRUZXN0IC0gVHdvRGF0ZXMgMjAyNSAkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCIgID0+ICcyMDI1LTAxLTA2IDAwOjAwOjAwJywgICAgICAgICAgICAgICAgICAgICMgZml4ZWQ6IHR1ZXNkYXkgPT4gbW9uZGF5CiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0V2Vla2VuZCRUZXN0SURTdWZmaXgiID0+IFsKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0wNCAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgJzIwMjUtMDEtMDUgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtFeHRlbmRpbmcgZmlyc3Qgd2Vla2VuZCAyMDI1IHRvIG1vbmRheX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAiVW5pdFRlc3QgLSBUd29EYXRlcyAyMDI1ICRSYW5kb21JRCIsICAgICMgd2FzIGNyZWF0ZWQgYnkgc2V0dXAgb2YgY29uZmlnIGl0ZW1zCiAgICAgICAgICAgICAgICAgICAgcXF7WyIyMDI1LTAxLTA0IiwiMjAyNS0wMS0wNSIsICAgICIyMDI1LTAxLTA2IiBdfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDMsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHFxe1VuaXRUZXN0IC0gVHdvRGF0ZXMgMjAyNSAkUmFuZG9tSUR9LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0TW9uZGF5JFRlc3RJRFN1ZmZpeCIgID0+ICcyMDI1LTAxLTA2IDAwOjAwOjAwJywgICAgICAgICAgICAgICAgICAgICMgZml4ZWQ6IHR1ZXNkYXkgPT4gbW9uZGF5CiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0ZpcnN0V2Vla2VuZCRUZXN0SURTdWZmaXgiID0+IFsKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0wNCAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgJzIwMjUtMDEtMDUgMDA6MDA6MDAnLAogICAgICAgICAgICAgICAgICAgICcyMDI1LTAxLTA2IDAwOjAwOjAwJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7RXh0ZW5kaW5nIGZpcnN0IHdlZWtlbmQgMjAyNSB0byBmcmlkYXksIHNraXBwaW5nIHdlZG5lc2RheSBhbmQgdHVlc2RheX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0RhdGVzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9Ojo3IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9Ojo2IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJHtUZXN0SURTdWZmaXh9OjoxIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICJVbml0VGVzdCAtIFR3b0RhdGVzIDIwMjUgJFJhbmRvbUlEIiwgICAgIyB3YXMgY3JlYXRlZCBieSBzZXR1cCBvZiBjb25maWcgaXRlbXMKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0xMCAwMDowMDowMCcsICAgICAgICAgICAgICAgICAgICMgZXh0ZW5kaW5nIHRvIGZyaWRheSwgc2tpcHBpbmcgdHVlc2RheSwgd2VkbmVzZGF5LCBhbmQgdGh1cnNkYXkKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0wOSAwMDowMDowMCcsICAgICAgICAgICAgICAgICAgICMgYWRkaW5nIHRodXJzZGF5CiAgICAgICAgICAgICAgICAgICAgJzIwMjUtMDItMDQgMDA6MDA6MDAnLCAgICAgICAgICAgICAgICAgICAjIHdyb25nIG1vbnRoIGZvciBzYXR1cmRheQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gNCwKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gcXF7VW5pdFRlc3QgLSBUd29EYXRlcyAyMDI1ICRSYW5kb21JRH0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RNb25kYXkkVGVzdElEU3VmZml4IiAgPT4gJzIwMjUtMDEtMDYgMDA6MDA6MDAnLCAgICAgICAgICAgICAgICAgICAgIyBmaXhlZDogdHVlc2RheSA9PiBtb25kYXkKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfRmlyc3RXZWVrZW5kJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgICAgICcyMDI1LTAyLTA0IDAwOjAwOjAwJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdyb25nIG1vbnRoCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdHVlc2RheSBza2lwcGVkCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2VkbmVzZGF5IHNraXBwZWQKICAgICAgICAgICAgICAgICAgICAnMjAyNS0wMS0wOSAwMDowMDowMCcsCiAgICAgICAgICAgICAgICAgICAgJzIwMjUtMDEtMTAgMDA6MDA6MDAnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZnJpZGF5CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgdGVzdHMgd2l0aCBhIG11bHRpIHZhbHVlIGVudGl0eSBmaWVsZCwgQ3VzdG9tZXJTYWxlc1RlYW0KCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtDdXN0b21lclNhbGVzVGVhbSBhcyByZWZlcmVuY2UgdG8gbXVsdGkgdmFsdWUgYXJyYXkgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyU2FsZXNUZWFtIGZvciB0cmVlcyBhbmQgYXBwbGVzJywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKCiAgICAgICAgICAgICAgICAgICAgIyBmb3IgZXhhbXBsZSBmcm9tIEpTT04gZXhwb3J0CiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICBAQ3VzdG9tZXJVc2Vyc3txdyh0YW5hYmF0ZV9tb25nZXIgcGFsbV9tb25nZXIgYXBwbGVfbW9uZ2VyKX0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBDdXN0b21lclNhbGVzVGVhbSBmb3IgdHJlZXMgYW5kIGFwcGxlcycsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgICAgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyU2FsZXNUZWFtJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgICAgIEBDdXN0b21lclVzZXJze3F3KHRhbmFiYXRlX21vbmdlciBwYWxtX21vbmdlciBhcHBsZV9tb25nZXIpfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7Q3VzdG9tZXJTYWxlc1RlYW0gYXMgQ1NWIHdpdGggbXVsdGkgdmFsdWUgYXJyYXkgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfQ3VzdG9tZXJTYWxlc1RlYW0kVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1s1XSwgICAgIyBDU1YKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwoKICAgICAgICAgICAgICAgICAgICAjIGZvciBleGFtcGxlIGZyb20gQ1NWIGV4cG9ydCwgdGhlIGV4YWN0IGxheW91dCBkb2VzIG5vdCBtYXR0ZXIKICAgICAgICAgICAgICAgICAgICAjIG1ha2Ugc3VyZSB0aGF0IHF7In0gaXMgcXVvdGVkIGluIHRoZSBKU09OIHN0cmluZwogICAgICAgICAgICAgICAgICAgIHFxe1sgIkB7WyRDdXN0b21lclVzZXJze29uaW9uX21vbmdlcn0gPX4gcy8iL1xcIi9nciBdfSIgICAgICAgICAsICAgICAgICAgICAgICJAe1skQ3VzdG9tZXJVc2Vyc3tnYXJsaWNfbW9uZ2VyfSA9fiBzLyIvXFwiL2dyIF19IiBdfSwKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyU2FsZXNUZWFtIGZvciByb290IHZlZ2V0YWJsZXMnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMSwKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IEN1c3RvbWVyU2FsZXNUZWFtIGZvciByb290IHZlZ2V0YWJsZXMnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9DdXN0b21lckNJTyRUZXN0SURTdWZmaXgiICAgICAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9DdXN0b21lclNhbGVzVGVhbSRUZXN0SURTdWZmaXgiID0+IFsKICAgICAgICAgICAgICAgICAgICBAQ3VzdG9tZXJVc2Vyc3txdyhvbmlvbl9tb25nZXIgZ2FybGljX21vbmdlcil9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIHRlc3RzIHdpdGggYSBzaW5nbGUgdmFsdWUgU2V0IGZpZWxkLCBaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxcXtaWlpTZXRDb250aW5lbnRhbFN1cHBvcnQgYXMgcmVmZXJlbmNlIHRvIHNpbmdsZSB2YWx1ZSBhcnJheSAoc2hvdWxkIHN1Y2NlZWQpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7U2luZ2xlVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9aWlpTZXRDb250aW5lbnRhbFN1cHBvcnQkVGVzdElEU3VmZml4IiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBTdXBwb3J0IGZvciBBZnJpY2EnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKCiAgICAgICAgICAgICAgICAgICAgIyBmcm9tIEpTT04gZXhwb3J0CiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICB7ICdMZXZlbEZpcnN0JyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0sICdMZXZlbFNlY29uZCcgLiAkVGVzdElEU3VmZml4ID0+ICBbICRBZ2VudDJVc2VySUR7U2Vjb25kTGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0gfSwKICAgICAgICAgICAgICAgICAgICBdLAoKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMSwKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBTdXBwb3J0IGZvciBBZnJpY2EnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1paWlNldENvbnRpbmVudGFsU3VwcG9ydCRUZXN0SURTdWZmaXgiID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICdMZXZlbEZpcnN0JyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0ZpcnN0TGV2ZWxTdXBwb3J0ZXJBZnJpY2F9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgICdMZXZlbFNlY29uZCcgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckFmcmljYX0gXQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHFxe1paWlNldENvbnRpbmVudGFsU3VwcG9ydCBhcyBKU09OIHN0cmluZyB3aXRoIGEgc2luZ2xlIHZhbHVlIGFycmF5IChzaG91bGQgc3VjY2VlZCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tTaW5nbGVWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldENvbnRpbmVudGFsU3VwcG9ydCRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IFN1cHBvcnQgZm9yIEV1cm9wZScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAoKICAgICAgICAgICAgICAgICAgICAjIEpTT04gc3RyaW5nIGxpa2UgZnJvbSBDU1YgZXhwb3J0LiBUaGUgZXhhY3QgbGF5b3V0IGRvZXMgbm90IG1hdHRlci4KICAgICAgICAgICAgICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHF7In0gaXMgcXVvdGVkIGluIHRoZSBKU09OIHN0cmluZy4KICAgICAgICAgICAgICAgICAgICA8PCJFTkRfSlNPTiIsClsKICAgIHsgIkxldmVsRmlyc3QkVGVzdElEU3VmZml4IjogWyAiQHtbJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyRXVyb3BlfSA9fiBzLyIvXFwiL2dyIF19IiBdLCAiTGV2ZWxTZWNvbmQkVGVzdElEU3VmZml4IjogWyAiQHtbJEFnZW50MlVzZXJJRHtTZWNvbmRMZXZlbFN1cHBvcnRlckV1cm9wZX0gPX4gcy8iL1xcIi9nciBdfSIgXSB9Cl0KRU5EX0pTT04KCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgU3VwcG9ydCBmb3IgRXVyb3BlJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF9aWlpTZXRDb250aW5lbnRhbFN1cHBvcnQkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAnTGV2ZWxGaXJzdCcgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtGaXJzdExldmVsU3VwcG9ydGVyRXVyb3BlfSBdLAogICAgICAgICAgICAgICAgICAgICAgICAnTGV2ZWxTZWNvbmQnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7U2Vjb25kTGV2ZWxTdXBwb3J0ZXJFdXJvcGV9IF0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIHRlc3RzIHdpdGggYSBtdWx0aSB2YWx1ZSBTZXQgZmllbGQsIFpaWlNldE9mQWdlbnRzCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7WlpaU2V0T2ZBZ2VudHMgYXMgcmVmZXJlbmNlIHRvIG11bHRpIHZhbHVlIGFycmF5IChzaG91bGQgc3VjY2VlZCl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJFRlc3RJRFN1ZmZpeCIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0JywKCiAgICAgICAgICAgICAgICAgICAgIyBmcm9tIEpTT04gZXhwb3J0CiAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgQ3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldCcsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX0N1c3RvbWVyQ0lPJFRlc3RJRFN1ZmZpeCIgICAgPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vdCBpbiB0aGUgbWFwcGluZyBsaXN0CiAgICAgICAgICAgICAgICAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJFRlc3RJRFN1ZmZpeCIgPT4gWwogICAgICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSwgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtGcm93bmluZ0FnZW50fSBdIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHFxe1paWlNldE9mQWdlbnRzIGFzIEpTT04gc3RyaW5nIHdpdGggbXVsdGkgdmFsdWUgYXJyYXkgKHNob3VsZCBzdWNjZWVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gIkR5bmFtaWNGaWVsZF9aWlpTZXRPZkFnZW50cyRUZXN0SURTdWZmaXgiLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgQ3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldCcsCgogICAgICAgICAgICAgICAgICAgICMgc2ltaWxhciB0byBDU1YgZXhwb3J0CiAgICAgICAgICAgICAgICAgICAgPDwiRU5EX0pTT04iLAogICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCI6IFsgIkB7WyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IjogWyAiQHtbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gPX4gcy8iL1xcIi9nciBdfSIgXSB9LAogICAgICAgICAgICAgICAgICAgICAgICB7ICJBZ2VudDEkVGVzdElEU3VmZml4IjogWyAiQHtbICRBZ2VudDJVc2VySUR7Q2xpbWJpbmdBZ2VudH0gPX4gcy8iL1xcIi9nciBdfSIgXSwgIkFnZW50MiRUZXN0SURTdWZmaXgiOiBbICJAe1sgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgeyAiQWdlbnQxJFRlc3RJRFN1ZmZpeCI6IFsgIkB7WyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IjogWyAiQHtbICRBZ2VudDJVc2VySUR7RnJvd25pbmdBZ2VudH0gPX4gcy8iL1xcIi9nciBdfSIgXSB9CiAgICAgICAgICAgICAgICAgICAgXQpFTkRfSlNPTgogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCBDdXN0b21lclVzZXJBbmRNdWx0aVZhbHVlU2V0JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiAgICA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm90IGluIHRoZSBtYXBwaW5nIGxpc3QKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgeyAnQWdlbnQxJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0NsaW1iaW5nQWdlbnR9IF0sICdBZ2VudDInIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSB9LAogICAgICAgICAgICAgICAgICAgIHsgJ0FnZW50MScgLiAkVGVzdElEU3VmZml4ID0+IFsgJEFnZW50MlVzZXJJRHtDbGltYmluZ0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Zyb3duaW5nQWdlbnR9IF0gfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXF7WlpaU2V0T2ZBZ2VudHMgd2l0aCBpbmRleGVkIGFjY2VzcyAoc2hvdWxkIHN1Y2NlZWQpfSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAiRHluYW1pY0ZpZWxkX1paWlNldE9mQWdlbnRzJHtUZXN0SURTdWZmaXh9OjoyIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMke1Rlc3RJRFN1ZmZpeH06OjIwIiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICJVbml0VGVzdCAtIFpaWlNldE9mQWdlbnRzIEIgJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgICAgICA8PCJFTkRfSlNPTl9GT1JfSU5ERVhfMiIsCiAgICAgICAgICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiOiBbICJAe1sgJEFnZW50MlVzZXJJRHtMb3R1c0FnZW50fSA9fiBzLyIvXFwiL2dyIF19IiBdLCAiQWdlbnQyJFRlc3RJRFN1ZmZpeCI6IFsgIkB7WyAkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0gfQpFTkRfSlNPTl9GT1JfSU5ERVhfMgogICAgICAgICAgICAgICAgICAgIDw8IkVORF9KU09OX0ZPUl9JTkRFWF8yMCIsCiAgICAgICAgICAgICAgICAgICAgICAgIHsgIkFnZW50MSRUZXN0SURTdWZmaXgiOiBbICJAe1sgJEFnZW50MlVzZXJJRHtEZXNrQWdlbnR9ID1+IHMvIi9cXCIvZ3IgXX0iIF0sICJBZ2VudDIkVGVzdElEU3VmZml4IjogWyAiQHtbICRBZ2VudDJVc2VySUR7RGVza0FnZW50fSA9fiBzLyIvXFwiL2dyIF19IiBdIH0KRU5EX0pTT05fRk9SX0lOREVYXzIwCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAyLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJVbml0VGVzdCAtIFpaWlNldE9mQWdlbnRzIEIgJFJhbmRvbUlEIiwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfQ3VzdG9tZXJDSU8kVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgJEN1c3RvbWVyVXNlcnN7bWFsZV9DSU99LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfWlpaU2V0T2ZBZ2VudHMkVGVzdElEU3VmZml4IiA9PiBbCiAgICAgICAgICAgICAgICAgICAgeyAnQWdlbnQxJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAgICAgJ0FnZW50MicgLiAkVGVzdElEU3VmZml4ID0+IHVuZGVmIH0sCiAgICAgICAgICAgICAgICAgICAgeyAnQWdlbnQxJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0xvdHVzQWdlbnR9IF0sICdBZ2VudDInIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7TG90dXNBZ2VudH0gXSB9LCAgICAjIGNoYW5nZWQKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCAzIHRvIDE5IHNraXBwZWQKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICAgICAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gdW5kZWYgfSwKICAgICAgICAgICAgICAgICAgICB7ICdBZ2VudDEnIC4gJFRlc3RJRFN1ZmZpeCA9PiBbICRBZ2VudDJVc2VySUR7RGVza0FnZW50fSBdLCAnQWdlbnQyJyAuICRUZXN0SURTdWZmaXggPT4gWyAkQWdlbnQyVXNlcklEe0Rlc2tBZ2VudH0gXSB9LCAgICAgIyBhZGRlZAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCik7Cgo9Zm9yIG5ldmVyCgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXthbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoYSBORVcgY29uZmlnIGl0ZW0gbXVzdCBiZSBjcmVhdGVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnQ3VzdG9tZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZVRpbWUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0ludGVnZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dEFyZWExOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMycsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wNi0wNScsCiAgICAgICAgICAgICAgICAgICAgJzIwMDgtMDgtMDUgMDQ6NTAnLAogICAgICAgICAgICAgICAgICAgICdUZXN0MycsCiAgICAgICAgICAgICAgICAgICAgJzMnLAogICAgICAgICAgICAgICAgICAgICdUZXN0MyBUZXh0MyBUZXN0MycsCiAgICAgICAgICAgICAgICAgICAgIlRlc3QzXG5UZXh0QXJyYXkzXG5UZXN0MyIsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMycsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0N1c3RvbWVyMTo6MScgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdEYXRlMTo6MScgICAgICAgICAgID0+ICcyMDA4LTA2LTA1JywKICAgICAgICAgICAgICAgICdEYXRlVGltZTE6OjEnICAgICAgID0+ICcyMDA4LTA4LTA1IDA0OjUwJywKICAgICAgICAgICAgICAgICdHZW5lcmFsQ2F0YWxvZzE6OjEnID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3QzfSwKICAgICAgICAgICAgICAgICdJbnRlZ2VyMTo6MScgICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdUZXN0MyBUZXh0MyBUZXN0MycsCiAgICAgICAgICAgICAgICAnVGV4dEFyZWExOjoxJyAgICAgICA9PiAiVGVzdDNcblRleHRBcnJheTNcblRlc3QzIiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChhIHNlY29uZCBORVcgY29uZmlnIGl0ZW0gbXVzdCBiZSBjcmVhdGVkKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnQ3VzdG9tZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZVRpbWUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0ludGVnZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dEFyZWExOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNCcsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wOS0wNScsCiAgICAgICAgICAgICAgICAgICAgJzIwMDgtMTItMDUgMDQ6NTAnLAogICAgICAgICAgICAgICAgICAgICdUZXN0NCcsCiAgICAgICAgICAgICAgICAgICAgJzQnLAogICAgICAgICAgICAgICAgICAgICdUZXN0NCBUZXh0NCBUZXN0NCcsCiAgICAgICAgICAgICAgICAgICAgIlRlc3Q0XG5UZXh0QXJyYXk0XG5UZXN0NCIsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNCcsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0N1c3RvbWVyMTo6MScgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdEYXRlMTo6MScgICAgICAgICAgID0+ICcyMDA4LTA5LTA1JywKICAgICAgICAgICAgICAgICdEYXRlVGltZTE6OjEnICAgICAgID0+ICcyMDA4LTEyLTA1IDA0OjUwJywKICAgICAgICAgICAgICAgICdHZW5lcmFsQ2F0YWxvZzE6OjEnID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3Q0fSwKICAgICAgICAgICAgICAgICdJbnRlZ2VyMTo6MScgICAgICAgID0+ICc0JywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdUZXN0NCBUZXh0NCBUZXN0NCcsCiAgICAgICAgICAgICAgICAnVGV4dEFyZWExOjoxJyAgICAgICA9PiAiVGVzdDRcblRleHRBcnJheTRcblRlc3Q0IiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChhIG5ldyB2ZXJzaW9uIG11c3QgYmUgYWRkZWQgdG8gZmlyc3QgdGVzdCBjb25maWcgaXRlbSl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdDdXN0b21lcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlVGltZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW50ZWdlcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0QXJlYTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjZdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgICAgICdQaWxvdCcsCiAgICAgICAgICAgICAgICAgICAgJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgICAgICcyMDA4LTAyLTAyJywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMiAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QyJywKICAgICAgICAgICAgICAgICAgICAnMicsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgVGV4dCBVUERBVEUxIFRlc3QnLAogICAgICAgICAgICAgICAgICAgICJUZXN0XG5UZXh0IEFycmF5IFVQREFURTFcblRlc3QiLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMiwKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAyJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQaWxvdCcsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgJ0N1c3RvbWVyMTo6MScgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdEYXRlMTo6MScgICAgICAgICAgID0+ICcyMDA4LTAyLTAyJywKICAgICAgICAgICAgICAgICdEYXRlVGltZTE6OjEnICAgICAgID0+ICcyMDA4LTAyLTAyIDAzOjU5JywKICAgICAgICAgICAgICAgICdHZW5lcmFsQ2F0YWxvZzE6OjEnID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3QyfSwKICAgICAgICAgICAgICAgICdJbnRlZ2VyMTo6MScgICAgICAgID0+ICcyJywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdUZXN0IFRleHQgVVBEQVRFMSBUZXN0JywKICAgICAgICAgICAgICAgICdUZXh0QXJlYTE6OjEnICAgICAgID0+ICJUZXN0XG5UZXh0IEFycmF5IFVQREFURTFcblRlc3QiLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGEgbmV3IHZlcnNpb24gbXVzdCBiZSBhZGRlZCB0byBmaXJzdCB0ZXN0IGNvbmZpZyBpdGVtIGFnYWluKX0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0N1c3RvbWVyMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGVUaW1lMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbnRlZ2VyMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHRBcmVhMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syN10sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMycsCiAgICAgICAgICAgICAgICAgICAgJ1JlcGFpcicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgICAgICcyMDA4LTAyLTAzJywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMyAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QzJywKICAgICAgICAgICAgICAgICAgICAnMycsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgVGV4dCBVUERBVEUyIFRlc3QnLAogICAgICAgICAgICAgICAgICAgICJUZXN0XG5UZXh0IEFycmF5IFVQREFURTJcblRlc3QiLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMywKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAzJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdSZXBhaXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdDdXN0b21lcjE6OjEnICAgICAgID0+ICdVbml0VGVzdCcsCiAgICAgICAgICAgICAgICAnRGF0ZTE6OjEnICAgICAgICAgICA9PiAnMjAwOC0wMi0wMycsCiAgICAgICAgICAgICAgICAnRGF0ZVRpbWUxOjoxJyAgICAgICA9PiAnMjAwOC0wMi0wMyAwMzo1OScsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0M30sCiAgICAgICAgICAgICAgICAnSW50ZWdlcjE6OjEnICAgICAgICA9PiAnMycsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnVGVzdCBUZXh0IFVQREFURTIgVGVzdCcsCiAgICAgICAgICAgICAgICAnVGV4dEFyZWExOjoxJyAgICAgICA9PiAiVGVzdFxuVGV4dCBBcnJheSBVUERBVEUyXG5UZXN0IiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2FsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChhIG5ldyB2ZXJzaW9uIG11c3QgYmUgYWRkZWQgdG8gdGhpcmQgdGVzdCBjb25maWcgaXRlbSl9LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjddLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzJdLAogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKSBNYWluMVN1YjFTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMiknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjIgKDIpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjIgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjIgKDEpIE1haW4yU3ViMSAoMSknLAogICAgICAgICAgICAgICAgICAgICdNYWluMiAoMSkgTWFpbjJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4yICgxKSBNYWluMlN1YjIgKDIpJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDIsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ01haW4xOjoxJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjInID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjEgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjozJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKSBNYWluMVN1YjFTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMiAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjInICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjEnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoyJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIyICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScgPT4gJ01haW4xICgxKSBNYWluMVN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIyOjoyJyA9PiAnTWFpbjEgKDEpIE1haW4xU3ViMiAoMiknLAogICAgICAgICAgICAgICAgJ01haW4yOjoxJyAgICAgICAgICAgICAgID0+ICdNYWluMiAoMSknLAogICAgICAgICAgICAgICAgJ01haW4yOjoxOjpNYWluMlN1YjE6OjEnID0+ICdNYWluMiAoMSkgTWFpbjJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScgPT4gJ01haW4yICgxKSBNYWluMlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMjo6MTo6TWFpbjJTdWIyOjoyJyA9PiAnTWFpbjIgKDEpIE1haW4yU3ViMiAoMiknLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKHNwZWNpYWwgY2hhcmFjdGVyIGNoZWNrcykKICAgICMgSW4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMicgMTYgQXR0cmlidXRlcyB3ZXJlIGltcG9ydGVkLAogICAgIyBzbyB0aGVyZSB3aWxsIGJlIDggbGluZ2VyaW5nIGF0dHJpYnV0ZXMuCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnOCBsaW5nZXJpbmcgYXR0cmlidXRlcycsCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze0N1c3RvbWVyVXNlckFuZE11bHRpVmFsdWVTZXR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syN10sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMycsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJyIiOzs6Oi4uLS1fXyMjJywKICAgICAgICAgICAgICAgICAgICAnVGVzdDs6X8KwXiEiwqckJSYvKCk9P8K0YCorVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgICAgICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgIlRlc3RcblRlc3RcdFRlc3QiLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMywKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMycsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjEnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJyIiOzs6Oi4uLS1fXyMjJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJyAgICAgICAgICAgICAgICAgICAgICA9PiAnVGVzdDs6X8KwXiEiwqckJSYvKCk9P8K0YCorVGVzdCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgJ01haW4yOjoxJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3QgVGVzdCcsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gIlRlc3RcblRlc3RcdFRlc3QiLAoKICAgICAgICAgICAgICAgICMgbGluZ2VyaW5nIGZyb20gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MicgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjMnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjEgKDMpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyJyAgICAgICAgICAgICAgICAgICAgICA9PiAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjE6OjEnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoxJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MicgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjI6OjInID0+ICdNYWluMSAoMSkgTWFpbjFTdWIyICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MicgPT4gJ01haW4yICgxKSBNYWluMlN1YjIgKDIpJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChVVEYtOCBjaGVja3MpCiAgICAjIEluICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDInIDE2IEF0dHJpYnV0ZXMgd2VyZSBpbXBvcnRlZCwKICAgICMgc28gdGhlcmUgd2lsbCBiZSA4IGxpbmdlcmluZyBhdHRyaWJ1dGVzLgogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJzggbGluZ2VyaW5nIGF0dHJpYnV0ZXMsIGFnYWluJywKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7Q3VzdG9tZXJVc2VyQW5kTXVsdGlWYWx1ZVNldH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI3XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDMgVmVyc2lvbiA0JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnzqsgzrQgzrsnLAogICAgICAgICAgICAgICAgICAgICfPgCDPhyDPmCcsCiAgICAgICAgICAgICAgICAgICAgJ8+6IM+xIM+uJywKICAgICAgICAgICAgICAgICAgICAnya8gypMgyqAnLAogICAgICAgICAgICAgICAgICAgICfKrCDKrycsCiAgICAgICAgICAgICAgICAgICAgJ9C5INGEINGJJywKICAgICAgICAgICAgICAgICAgICAn0Zog0ZEnLAogICAgICAgICAgICAgICAgICAgICfRrCDRpicsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDMgVmVyc2lvbiA0JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdNYWluMTo6MScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnzqsgzrQgzrsnLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICfPgCDPhyDPmCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4gJ8+6IM+xIM+uJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJyA9PiAnya8gypMgyqAnLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjI6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICfKrCDKrycsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjEnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ9C5INGEINGJJywKICAgICAgICAgICAgICAgICdNYWluMjo6MTo6TWFpbjJTdWIxOjoxJyAgICAgICAgICAgICAgICAgICAgICA9PiAn0Zog0ZEnLAogICAgICAgICAgICAgICAgJ01haW4yOjoxOjpNYWluMlN1YjI6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICfRrCDRpicsCgogICAgICAgICAgICAgICAgIyBsaW5nZXJpbmcgZnJvbSAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDMgVmVyc2lvbiAyJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoyJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKSBNYWluMVN1YjFTdWJTdWIxICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MycgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMyknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjInICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjEnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoyJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIyICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MicgPT4gJ01haW4xICgxKSBNYWluMVN1YjIgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMjo6MTo6TWFpbjJTdWIyOjoyJyA9PiAnTWFpbjIgKDEpIE1haW4yU3ViMiAoMiknLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7YSBzaW1wbGUgaW1wb3J0IGZvciB0ZXN0aW5nIHRoZSBvdmVycmlkaW5nIGJlaGF2aW9yIG9mIGVtcHR5IHZhbHVlc30sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ0ltcG9ydHRlc3QgNSBmb3IgYmVoYXZpb3Igb2YgZW1wdHkgdmFsdWVzJywKICAgICAgICAgICAgICAgICAgICAnVGVzdDEnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMSwKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IDUnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdJbXBvcnR0ZXN0IDUgZm9yIGJlaGF2aW9yIG9mIGVtcHR5IHZhbHVlcycsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBpbXBvcnQgYW4gZW1wdHkgdmFsdWUgZm9yIFRleHQxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9uCiAgICAjIG5vIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnaW1wb3J0IGFuIGVtcHR5IHZhbHVlIGZvciBUZXh0MScsCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnSW1wb3J0dGVzdCA1IGZvciBiZWhhdmlvciBvZiBlbXB0eSB2YWx1ZXMnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgbm8gbmV3IHZlcnNpb24gc2hvdWxkIGJlIGNyZWF0ZWQKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7aW1wb3J0IHVuZGVmIGZvciBUZXh0MSwgd2l0aCBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzIHR1cm5lZCBvbn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnSW1wb3J0dGVzdCA1IGZvciBiZWhhdmlvciBvZiBlbXB0eSB2YWx1ZXMnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYSBuZXcgdmVyc2lvbiBzaG91bGQgYmUgY3JlYXRlZAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gZW1wdHkgdmFsdWUgZm9yIFRleHQxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9mZn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IDUnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICdUZXN0MScsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAyLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ltcG9ydCBhIHNpbmdsZSBzcGFjZSB2YWx1ZSBmb3IgVGV4dDEsIHdpdGggRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyB0dXJuZWQgb259LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnICcsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDMsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnICcsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ltcG9ydCB0aGUgc3RyaW5nICcwJyB2YWx1ZSBmb3IgVGV4dDEsIHdpdGggRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyB0dXJuZWQgb259LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnMCcsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDQsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnMCcsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBubyBuZXcgdmVyc2lvbiBzaG91bGQgYmUgY3JlYXRlZAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gZW1wdHkgdmFsdWUgZm9yIEdlbmVyYWxDYXRhbG9nMSwgd2l0aCBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzIHR1cm5lZCBvbn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1R3b0N1c3RvbWVyVXNlcnN9LAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJzAnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgdGhlIGltcG9ydCBzaG91bGQgZmFpbAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgR2VuZXJhbENhdGFsb2cxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9ufSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAnbm9uLWV4aXN0ZW50IGdlbmVyYWwgY2F0YWxvZyBlbnRyeScsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgdGhlIGltcG9ydCBzaG91bGQgZmFpbAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgR2VuZXJhbENhdGFsb2cxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9mZn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsaWRDb25maWdJdGVtQ2xhc3NJRCwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAnbm9uLWV4aXN0ZW50IGdlbmVyYWwgY2F0YWxvZyBlbnRyeScsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgbm8gbmV3IHZlcnNpb24gc2hvdWxkIGJlIGNyZWF0ZWQKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+IHF7aW1wb3J0IGFuIGVtcHR5IHZhbHVlIGZvciBEZXBsU3RhdGUsIHdpdGggRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyB0dXJuZWQgb259LAogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc3tUd29DdXN0b21lclVzZXJzfSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IDUnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJzAnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYW4gZXJyb3Igc2hvdWxkIGJlIGdlbmVyYXRlZAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgRGVwbFN0YXRlLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9ufSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBkZXBsb3ltZW50IHN0YXRlJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIG5vIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe2ltcG9ydCBhbiBlbXB0eSB2YWx1ZSBmb3IgSW5jaVN0YXRlLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9ufSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJzAnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYW4gZXJyb3Igc2hvdWxkIGJlIGdlbmVyYXRlZAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gcXtpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgSW5jaVN0YXRlLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9ufSwKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHN7VHdvQ3VzdG9tZXJVc2Vyc30sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQgaW5jaWRlbnQgc3RhdGUnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBxe0ltcG9ydCB3aXRob3V0IHJlcXVpcmVkIGF0dHJpYnV0ZSAnVHlwZScsIGFuIGVycm9yIHNob3VsZCBiZSBnZW5lcmF0ZWQgKHNlZSBidWcjMTQwOTgpLn0sCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURze1NpbmdsZVZhbHVlU2V0fSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgIlVuaXRUZXN0IC0gSW1wb3J0dGVzdCAxICRSYW5kb21JRCIsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKPWN1dAoKIyBydW4gZ2VuZXJhbCBJbXBvcnREYXRhVGVzdHMgdGVzdHMKbXkgJEltcG9ydFRlc3RDb3VudCA9IDE7CmZvciBteSAkVGVzdCAoQEltcG9ydERhdGFUZXN0cykgewoKICAgIHN1YnRlc3QgIkltcG9ydERhdGE6ICRUZXN0LT57TmFtZX0iID0+IHN1YiB7CgogICAgICAgICMgY2hlY2sgU291cmNlSW1wb3J0RGF0YSBhdHRyaWJ1dGUKICAgICAgICBpZiAoICEkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9IHx8IHJlZiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9IG5lICdIQVNIJyApIHsKCiAgICAgICAgICAgIGZhaWwoIlNvdXJjZUltcG9ydERhdGEgbm90IGZvdW5kIGZvciB0aGlzIHRlc3QuIik7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIHNldCB0aGUgb2JqZWN0IGRhdGEKICAgICAgICBpZiAoCiAgICAgICAgICAgICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntPYmplY3REYXRhfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e09iamVjdERhdGF9IGVxICdIQVNIJwogICAgICAgICAgICAmJiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57SW1wb3J0RGF0YVNhdmV9LT57VGVtcGxhdGVJRH0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0RGF0YVNhdmUoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntJbXBvcnREYXRhU2F2ZX0tPntUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgIE9iamVjdERhdGEgPT4gJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e09iamVjdERhdGF9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRoZSBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKAogICAgICAgICAgICAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57TWFwcGluZ09iamVjdERhdGF9CiAgICAgICAgICAgICYmIHJlZiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57TWFwcGluZ09iamVjdERhdGF9IGVxICdBUlJBWScKICAgICAgICAgICAgJiYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e0ltcG9ydERhdGFTYXZlfS0+e1RlbXBsYXRlSUR9CiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICAjIGRlbGV0ZSBhbGwgZXhpc3RpbmcgbWFwcGluZyBkYXRhCiAgICAgICAgICAgICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdEZWxldGUoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntJbXBvcnREYXRhU2F2ZX0tPntUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCB0aGUgbWFwcGluZyBvYmplY3Qgcm93cwogICAgICAgICAgICBNQVBQSU5HT0JKRUNUREFUQToKICAgICAgICAgICAgZm9yIG15ICRNYXBwaW5nT2JqZWN0RGF0YSAoIEB7ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntNYXBwaW5nT2JqZWN0RGF0YX0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGFkZCBhIG5ldyBtYXBwaW5nIHJvdwogICAgICAgICAgICAgICAgbXkgJE1hcHBpbmdJRCA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdBZGQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57SW1wb3J0RGF0YVNhdmV9LT57VGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBhZGQgdGhlIG1hcHBpbmcgb2JqZWN0IGRhdGEKICAgICAgICAgICAgICAgICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdPYmplY3REYXRhU2F2ZSgKICAgICAgICAgICAgICAgICAgICBNYXBwaW5nSUQgICAgICAgICA9PiAkTWFwcGluZ0lELAogICAgICAgICAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+ICRNYXBwaW5nT2JqZWN0RGF0YSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaW1wb3J0IGRhdGEgc2F2ZQogICAgICAgIG15ICggJENvbmZpZ0l0ZW1JRCwgJFJldENvZGUgKSA9ICRPYmplY3RCYWNrZW5kT2JqZWN0LT5JbXBvcnREYXRhU2F2ZSgKICAgICAgICAgICAgJXsgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e0ltcG9ydERhdGFTYXZlfSB9LAogICAgICAgICAgICBDb3VudGVyID0+ICRJbXBvcnRUZXN0Q291bnQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFRlc3QtPntSZWZlcmVuY2VJbXBvcnREYXRhfSApIHsKCiAgICAgICAgICAgIG9rKCAhJENvbmZpZ0l0ZW1JRCwgIkltcG9ydERhdGFTYXZlKCkgLSByZXR1cm4gbm8gQ29uZmlnSXRlbUlEIiApOwogICAgICAgICAgICBvayggISRSZXRDb2RlLCAgICAgICJJbXBvcnREYXRhU2F2ZSgpIC0gcmV0dXJuIG5vIFJldENvZGUiICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBvayggJENvbmZpZ0l0ZW1JRCwgIkltcG9ydERhdGFTYXZlKCkgLSByZXR1cm4gQ29uZmlnSXRlbUlEOiAkQ29uZmlnSXRlbUlEIiApOwogICAgICAgIG9rKCAkUmV0Q29kZSwgICAgICAiSW1wb3J0RGF0YVNhdmUoKSAtIHJldHVybiBSZXRDb2RlOiAkUmV0Q29kZSIgKTsKCiAgICAgICAgIyBjaGVjayB0aGUgbnVtYmVyIG9mIHZlcnNpb25zCiAgICAgICAgewogICAgICAgICAgICBteSAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKSAvLyBbXTsKCiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgc2NhbGFyICRWZXJzaW9uTGlzdC0+QCosCiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57VmVyc2lvbkNvdW50fSB8fCAwLAogICAgICAgICAgICAgICAgIkltcG9ydERhdGFTYXZlKCkgLSBjb3JyZWN0IG51bWJlciBvZiB2ZXJzaW9ucyIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24KICAgICAgICBteSAkVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBnZW5lcmFsIGVsZW1lbnRzCiAgICAgICAgRUxFTUVOVDoKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKHF3KE51bWJlciBOYW1lIERlcGxTdGF0ZSBJbmNpU3RhdGUpKSB7CgogICAgICAgICAgICBuZXh0IEVMRU1FTlQgdW5sZXNzIGV4aXN0cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT57JEVsZW1lbnR9OwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICAkVmVyc2lvbkRhdGEtPnskRWxlbWVudH0sCiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT57JEVsZW1lbnR9LAogICAgICAgICAgICAgICAgIkltcG9ydERhdGFTYXZlKCkgJEVsZW1lbnQgaXMgaWRlbnRpY2FsIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgbnVtYmVyIG9mIGR5bmFtaWMgZmllbGQgZWxlbWVudHMKICAgICAgICBpcygKICAgICAgICAgICAgKCB0cnVlIHttL15EeW5hbWljRmllbGRfL30ga2V5cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT4lKiApLAogICAgICAgICAgICAoIHRydWUge20vXkR5bmFtaWNGaWVsZF8vfSBrZXlzICRWZXJzaW9uRGF0YS0+JSogKSwKICAgICAgICAgICAgIkltcG9ydERhdGFTYXZlKCkgLSBjb3JyZWN0IG51bWJlciBvZiBkeW5hbWljIGZpZWxkIGVsZW1lbnRzIiwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGR5bmFtaWMgZmllbGQgZWxlbWVudHMKICAgICAgICBERl9LRVk6CiAgICAgICAgZm9yIG15ICRERktleSAoIHNvcnQga2V5cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT4lKiApIHsKICAgICAgICAgICAgbmV4dCBERl9LRVkgdW5sZXNzICRERktleSA9fiBtL15EeW5hbWljRmllbGRfLzsKCiAgICAgICAgICAgIG9rKCBleGlzdHMgJFZlcnNpb25EYXRhLT57JERGS2V5fSwgIiRERktleSByZXRyaWV2ZWQgZnJvbSBuZXcgY29uZmlnIGl0ZW0iICk7CiAgICAgICAgICAgIGlzKAogICAgICAgICAgICAgICAgJFZlcnNpb25EYXRhLT57JERGS2V5fSwKICAgICAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlSW1wb3J0RGF0YX0tPntMYXN0VmVyc2lvbn0tPnskREZLZXl9LAogICAgICAgICAgICAgICAgIiRERktleSBoYXMgZXhwZWN0ZWQgdmFsdWUiCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfTsKfQpjb250aW51ZSB7CiAgICAkSW1wb3J0VGVzdENvdW50Kys7Cn0KCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/ImportExport/ObjectBackend/ITSMConfigItemExternalSource.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKdXNlIExpc3Q6OkFsbFV0aWxzIHF3KG1heCBtaW4gdHJ1ZSk7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KCiMgU2FuaXR5IGNoZWNrIHdoZXRoZXIgSW1wb3J0RXhwb3J0IGlzIGF2YWlsYWJsZS4KIyBUaGlzIHNob3VsZCBzdWNjZWVkIHNpbmNlIEltcG9ydEV4cG9ydCBoYXMgYmVlbiBpbnRlZ3JhdGVkIGludG8gT1RPQk8gY29yZQp7CiAgICAjIGdldCBJbXBvcnRFeHBvcnQgbW9kdWxlIGRpcmVjdG9yeQogICAgbXkgJEltcG9ydEV4cG9ydE1vZHVsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpIC4gJy9LZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC5wbSc7CiAgICBvayggLWYgJEltcG9ydEV4cG9ydE1vZHVsZSwgJ0ltcG9ydEV4cG9ydC5wbSBleGlzdHMnICk7Cn0KCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwpteSAkSW1wb3J0RXhwb3J0T2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0Jyk7Cm15ICRPYmplY3RCYWNrZW5kT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6Ok9iamVjdEJhY2tlbmQ6OklUU01Db25maWdJdGVtJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIG1ha2UgcHJlcGFyYXRpb25zCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgZGVmaW5lIG5lZWRlZCB2YXJpYWJsZQpteSAkUmFuZG9tSUQgICAgID0gJEhlbHBlci0+R2V0UmFuZG9tSUQ7Cm15ICRUZXN0SURTdWZmaXggPSAiVW5pdFRlc3QkUmFuZG9tSUQiOwpkaWFnICJUZXN0SURTdWZmaXg6ICckVGVzdElEU3VmZml4JyI7CgojIGNyZWF0ZSB0ZXN0IHVzZXIKbXkgKCB1bmRlZiwgJFRlc3RVc2VySUQgKSA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ3VzZXJzJywgJ2l0c20tY29uZmlnaXRlbScgXSwKKTsKCl9Mb2FkUmVhZHlUb0ltcG9ydENsYXNzZXMoKTsKCiMgZ2V0IHRoZSBjb25maWcgaXRlbSBjbGFzc2VzIGFzIG5hbWUgMiBpZCBsaXN0Cm15ICRDSUNsYXNzTGlzdFJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAopOwpteSAlQ0lDbGFzc05hbWUySUQgPSByZXZlcnNlICRDSUNsYXNzTGlzdFJlZi0+JSo7CgojIGFkZCBJbXBvcnRFeHBvcnQgdGVtcGxhdGUKbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIEZvcm1hdCAgPT4gJ0NTVicsCiAgICBOYW1lICAgID0+ICdVbml0VGVzdCcgLiAkUmFuZG9tSUQsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAopOwokSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhU2F2ZSgKICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICBPYmplY3REYXRhID0+IHsKICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDSUNsYXNzTmFtZTJJRHtTdWJzaWRpYXJ5fSwKICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICB9LAogICAgVXNlcklEID0+ICRUZXN0VXNlcklELAopOwoKbXkgQE1hcHBpbmdPYmplY3REYXRhID0gKAogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICB9LAogICAgewogICAgICAgIEtleSA9PiAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknLAogICAgfSwKICAgIHsKICAgICAgICBLZXkgPT4gJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnknLAogICAgfSwKKTsKCk1BUFBJTkdPQkpFQ1REQVRBOgpmb3IgbXkgJE1hcHBpbmdPYmplY3REYXRhIChATWFwcGluZ09iamVjdERhdGEpIHsKCiAgICAjIGFkZCBhIG5ldyBtYXBwaW5nIHJvdwogICAgbXkgJE1hcHBpbmdJRCA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdBZGQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRCwKICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgKTsKCiAgICAjIGFkZCB0aGUgbWFwcGluZyBvYmplY3QgZGF0YQogICAgJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdERhdGFTYXZlKAogICAgICAgIE1hcHBpbmdJRCAgICAgICAgID0+ICRNYXBwaW5nSUQsCiAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gJE1hcHBpbmdPYmplY3REYXRhLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+ICRUZXN0VXNlcklELAogICAgKTsKfQoKIyBhZGQgYSBnZW5lcmFsIGNhdGFsb2cgdGVzdCBsaXN0Cm15ICRDb25maWdJdGVtR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgIEdyb3VwICA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKKTsKb2soICRDb25maWdJdGVtR3JvdXBJRCwgJ2dvdCBncm91cCBpZCBmb3IgaXRzbS1jb25maWdpdGVtJyApOwoKIyBkb24ndCBjYXJlIGFib3V0IHZhbGlkIGVtYWlscwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnQ2hlY2tFbWFpbEFkZHJlc3NlcycsCiAgICBWYWx1ZSA9PiAwLAopOwoKIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0Cm15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAopOwpyZWZfb2soICREZXBsU3RhdGVMaXN0LCAnSEFTSCcsICdkZXBsb3ltZW50IHN0YXRlIGxpc3QgaXMgYSBoYXNocmVmJyApOwpteSAlRGVwbFN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JERlcGxTdGF0ZUxpc3R9OwoKIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdApteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7CnJlZl9vayggJERlcGxTdGF0ZUxpc3QsICdIQVNIJywgJ2luY2lkZW50IHN0YXRlIGxpc3QgaXMgYSBoYXNocmVmJyApOwpteSAlSW5jaVN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JEluY2lTdGF0ZUxpc3R9OwoKIyBhZGQgdGhlIHRlc3QgY29uZmlnIGl0ZW1zCmRpYWcgImFkZCBjb25maWcgaXRlbTogQ291bnRyeSI7Cm15ICRDSUNvdW50cnlJRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgTmFtZSAgICAgICAgPT4gJ1Rlc3RDb3VudHJ5JywKICAgIENsYXNzSUQgICAgID0+ICRDSUNsYXNzTmFtZTJJRHtDb3VudHJ5fSwKICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICA9PiAkVGVzdFVzZXJJRCwKKTsKb2soICRDSUNvdW50cnlJRCwgJ2NvbmZpZyBpdGVtIGFkZGVkJyApOwoKZGlhZyAiYWRkIGNvbmZpZyBpdGVtOiBTdWJzaWRpYXJ5IjsKbXkgJENJU3Vic2lkaWFyeUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3RTdWJzaWRpYXJ5JywKICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ0lDbGFzc05hbWUySUR7U3Vic2lkaWFyeX0sCiAgICBEZXBsU3RhdGVJRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknICAgICAgICAgICAgICAgPT4gJ0Jvbm4nLAogICAgJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnknID0+IFskQ0lDb3VudHJ5SURdLAopOwpvayggJENJU3Vic2lkaWFyeUlELCAnY29uZmlnIGl0ZW0gYWRkZWQnICk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgZGVmaW5lIGdlbmVyYWwgSW1wb3J0RGF0YVNhdmUgdGVzdHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwpteSBASW1wb3J0RGF0YVRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ0ltcG9ydGluZyBkYXRhIHdpdGhvdXQgdHJpZ2dlcmluZyBhIG5ldyB2ZXJzaW9uLCBlbXB0eWluZyB0aGUgb2xkIHZhbHVlJywKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDSUNsYXNzTmFtZTJJRHtTdWJzaWRpYXJ5fSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29mZicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVGVzdFN1YnNpZGlhcnknLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICdNw7xuY2hlbicsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVGVzdFN1YnNpZGlhcnknLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknID0+ICdNw7xuY2hlbicsCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdJbXBvcnRpbmcgZGF0YSB3aXRob3V0IHRyaWdnZXJpbmcgYSBuZXcgdmVyc2lvbiwga2VlcGluZyB0aGUgb2xkIHZhbHVlJywKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDSUNsYXNzTmFtZTJJRHtTdWJzaWRpYXJ5fSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRCwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdUZXN0U3Vic2lkaWFyeScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ1N0cmF1YmluZycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25Db3VudCA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdUZXN0U3Vic2lkaWFyeScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknICAgICAgICAgICAgICAgPT4gJ1N0cmF1YmluZycsCiAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeScgPT4gWyRDSUNvdW50cnlJRF0sCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdJbXBvcnRpbmcgZGF0YSB0cmlnZ2VyaW5nIGEgbmV3IHZlcnNpb24sIGtlZXBpbmcgdGhlIG9sZCB2YWx1ZScsCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ0lDbGFzc05hbWUySUR7U3Vic2lkaWFyeX0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENsYXNzUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICAgICAgU3Vic2lkaWFyeSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVyc2lvblRyaWdnZXIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0xvY2F0aW9uLUNpdHknLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlELAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3RTdWJzaWRpYXJ5JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnQmVybGluJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbkNvdW50ID0+IDIsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3RTdWJzaWRpYXJ5JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdEeW5hbWljRmllbGRfTG9jYXRpb24tQ2l0eScgICAgICAgICAgICAgICA9PiAnQmVybGluJywKICAgICAgICAgICAgICAgICdEeW5hbWljRmllbGRfTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5JyA9PiBbJENJQ291bnRyeUlEXSwKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ0ltcG9ydGluZyBkYXRhIHRyaWdnZXJpbmcgYSBuZXcgdmVyc2lvbiwgZW1wdHlpbmcgdGhlIG9sZCB2YWx1ZScsCiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ0lDbGFzc05hbWUySUR7U3Vic2lkaWFyeX0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvZmYnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDbGFzc1ByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgICAgIFN1YnNpZGlhcnkgPT4gewogICAgICAgICAgICAgICAgICAgIFZlcnNpb25UcmlnZ2VyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1DaXR5JywKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRCwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdUZXN0U3Vic2lkaWFyeScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ0hhbWJ1cmcnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uQ291bnQgPT4gMywKICAgICAgICAgICAgTGFzdFZlcnNpb24gID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3RTdWJzaWRpYXJ5JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1DaXR5JyA9PiAnSGFtYnVyZycsCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgfSwKKTsKCiMgcnVuIGdlbmVyYWwgSW1wb3J0RGF0YVRlc3RzIHRlc3RzCm15ICRJbXBvcnRUZXN0Q291bnQgPSAxOwpmb3IgbXkgJFRlc3QgKEBJbXBvcnREYXRhVGVzdHMpIHsKCiAgICBzdWJ0ZXN0ICJJbXBvcnREYXRhOiAkVGVzdC0+e05hbWV9IiA9PiBzdWIgewoKICAgICAgICAjIGNoZWNrIFNvdXJjZUltcG9ydERhdGEgYXR0cmlidXRlCiAgICAgICAgaWYgKCAhJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfSB8fCByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfSBuZSAnSEFTSCcgKSB7CgogICAgICAgICAgICBmYWlsKCJTb3VyY2VJbXBvcnREYXRhIG5vdCBmb3VuZCBmb3IgdGhpcyB0ZXN0LiIpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKAogICAgICAgICAgICAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9e09iamVjdERhdGF9CiAgICAgICAgICAgICYmIHJlZiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9e09iamVjdERhdGF9IGVxICdIQVNIJwogICAgICAgICAgICAmJiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9e0ltcG9ydERhdGFTYXZlfXtUZW1wbGF0ZUlEfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhU2F2ZSgKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtJbXBvcnREYXRhU2F2ZX17VGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICBPYmplY3REYXRhID0+ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX17T2JqZWN0RGF0YX0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIGdlbmVyYWwgY2F0YWxvZyBwcmVmZXJlbmNlcwogICAgICAgIGlmICgKICAgICAgICAgICAgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfSBlcSAnSEFTSCcKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIG15ICRDbGFzc05hbWUgKCBzb3J0IGtleXMgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfS0+JSogKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2VLZXkgKCBzb3J0IGtleXMgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfXskQ2xhc3NOYW1lfS0+JSogKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ0lDbGFzc05hbWUySUR7JENsYXNzTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICA9PiAkUHJlZmVyZW5jZUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgID0+ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX17Q2xhc3NQcmVmZXJlbmNlc317JENsYXNzTmFtZX17JFByZWZlcmVuY2VLZXl9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgb2soICRTdWNjZXNzLCAiU3VjY2Vzc2Z1bGx5IHNldCBwcmVmZXJlbmNlICRQcmVmZXJlbmNlS2V5IGZvciBjbGFzcyAkQ2xhc3NOYW1lIiApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGltcG9ydCBkYXRhIHNhdmUKICAgICAgICBteSAoICRDb25maWdJdGVtSUQsICRSZXRDb2RlICkgPSAkT2JqZWN0QmFja2VuZE9iamVjdC0+SW1wb3J0RGF0YVNhdmUoCiAgICAgICAgICAgICV7ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX17SW1wb3J0RGF0YVNhdmV9IH0sCiAgICAgICAgICAgIENvdW50ZXIgPT4gJEltcG9ydFRlc3RDb3VudCwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9ICkgewoKICAgICAgICAgICAgb2soICEkQ29uZmlnSXRlbUlELCAiSW1wb3J0RGF0YVNhdmUoKSAtIHJldHVybiBubyBDb25maWdJdGVtSUQiICk7CiAgICAgICAgICAgIG9rKCAhJFJldENvZGUsICAgICAgIkltcG9ydERhdGFTYXZlKCkgLSByZXR1cm4gbm8gUmV0Q29kZSIgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG9rKCAkQ29uZmlnSXRlbUlELCAiSW1wb3J0RGF0YVNhdmUoKSAtIHJldHVybiBDb25maWdJdGVtSUQ6ICRDb25maWdJdGVtSUQiICk7CiAgICAgICAgb2soICRSZXRDb2RlLCAgICAgICJJbXBvcnREYXRhU2F2ZSgpIC0gcmV0dXJuIFJldENvZGU6ICRSZXRDb2RlIiApOwoKICAgICAgICAjIGNoZWNrIHRoZSBudW1iZXIgb2YgdmVyc2lvbnMKICAgICAgICB7CiAgICAgICAgICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uTGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApIC8vIFtdOwoKICAgICAgICAgICAgaXMoCiAgICAgICAgICAgICAgICBzY2FsYXIgJFZlcnNpb25MaXN0LT5AKiwKICAgICAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlSW1wb3J0RGF0YX17VmVyc2lvbkNvdW50fSB8fCAwLAogICAgICAgICAgICAgICAgIkltcG9ydERhdGFTYXZlKCkgLSBjb3JyZWN0IG51bWJlciBvZiB2ZXJzaW9ucyIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24KICAgICAgICBteSAkVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBnZW5lcmFsIGVsZW1lbnRzCiAgICAgICAgRUxFTUVOVDoKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKHF3KE51bWJlciBOYW1lIERlcGxTdGF0ZSBJbmNpU3RhdGUpKSB7CgogICAgICAgICAgICBuZXh0IEVMRU1FTlQgdW5sZXNzIGV4aXN0cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9e0xhc3RWZXJzaW9ufXskRWxlbWVudH07CgogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+eyRFbGVtZW50fSwKICAgICAgICAgICAgICAgICRUZXN0LT57UmVmZXJlbmNlSW1wb3J0RGF0YX17TGFzdFZlcnNpb259eyRFbGVtZW50fSwKICAgICAgICAgICAgICAgICJJbXBvcnREYXRhU2F2ZSgpICRFbGVtZW50IGlzIGlkZW50aWNhbCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGR5bmFtaWMgZmllbGQgZWxlbWVudHMKICAgICAgICBERl9LRVk6CiAgICAgICAgZm9yIG15ICRERktleSAoIHNvcnQga2V5cyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9e0xhc3RWZXJzaW9ufS0+JSogKSB7CiAgICAgICAgICAgIG5leHQgREZfS0VZIHVubGVzcyAkREZLZXkgPX4gbS9eRHluYW1pY0ZpZWxkXy87CgogICAgICAgICAgICBvayggZXhpc3RzICRWZXJzaW9uRGF0YS0+eyRERktleX0sICIkREZLZXkgcmV0cmlldmVkIGZyb20gbmV3IGNvbmZpZyBpdGVtIiApOwogICAgICAgICAgICBpcygKICAgICAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+eyRERktleX0sCiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9e0xhc3RWZXJzaW9ufXskREZLZXl9LAogICAgICAgICAgICAgICAgIiRERktleSBoYXMgZXhwZWN0ZWQgdmFsdWUiCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHRpZHkgdGhlIGdlbmVyYWwgY2F0YWxvZyBwcmVmZXJlbmNlcyB1cAogICAgICAgIGlmICgKICAgICAgICAgICAgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfQogICAgICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfSBlcSAnSEFTSCcKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIG15ICRDbGFzc05hbWUgKCBzb3J0IGtleXMgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfS0+JSogKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2VLZXkgKCBzb3J0IGtleXMgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfXtDbGFzc1ByZWZlcmVuY2VzfXskQ2xhc3NOYW1lfS0+JSogKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ0lDbGFzc05hbWUySUR7JENsYXNzTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICA9PiAkUHJlZmVyZW5jZUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgID0+IFsnJ10sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBvayggJFN1Y2Nlc3MsICJTdWNjZXNzZnVsbHkgcmVzZXQgcHJlZmVyZW5jZSAkUHJlZmVyZW5jZUtleSBmb3IgY2xhc3MgJENsYXNzTmFtZSIgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07Cn0KY29udGludWUgewogICAgJEltcG9ydFRlc3RDb3VudCsrOwp9CgpzdWIgX0xvYWRSZWFkeVRvSW1wb3J0Q2xhc3NlcyB7CgogICAgbXkgJEhvbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKTsKCiAgICBteSAkTWFpbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyk7CgogICAgbXkgJENvbnRlbnQgPSAkTWFpbk9iamVjdC0+RmlsZVJlYWQoCiAgICAgICAgTG9jYXRpb24gPT4gIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzL0lULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMy55bWwiLAogICAgICAgIE1vZGUgICAgID0+ICd1dGY4JywKICAgICk7CgogICAgb2soICRDb250ZW50LCAiQ2xhc3NlcyBoYXZlIGJlZW4gbG9hZGVkIiApOwoKICAgICRDb250ZW50ID0gJHsgJENvbnRlbnQgfHwgXCcnIH07CgogICAgJENvbnRlbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgIERhdGEgPT4gJENvbnRlbnQsCiAgICApOwoKICAgIGlmICggcmVmICRDb250ZW50IGVxICdIQVNIJyApIHsKICAgICAgICAkQ29udGVudCA9IFskQ29udGVudF07CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGltcG9ydCB0aGUgY2xhc3MgWUFNTCBmaWxlCiAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNsYXNzSW1wb3J0KAogICAgICAgIENvbnRlbnQgICAgID0+ICRDb250ZW50LAogICAgICAgIENsYXNzRXhpc3RzID0+ICdVUERBVEUnLAogICAgKTsKCiAgICBvayggJFJlc3VsdC0+e1N1Y2Nlc3N9LCAiQ2xhc3NlcyBoYXZlIGJlZW4gaW1wb3J0ZWQiICk7CgogICAgcmV0dXJuOwp9Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Agent/Admin/AdminITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0cwogICAgICAgIG15ICRIZWxwZXIgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJElUU01Db25maWdJdGVtSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicpOwogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgICRJVFNNQ29uZmlnSXRlbUhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgICAgICAgICBIZWxwZXJPYmplY3QgPT4gJEhlbHBlcgogICAgICAgICk7CiAgICAgICAgbXkgQENvbmZpZ0l0ZW1DbGFzc05hbWVzOwogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNsYXNzIChxdyhDb21wdXRlciBIYXJkd2FyZSBMb2NhdGlvbiBOZXR3b3JrIFNvZnR3YXJlKSkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbURhdGFSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkQ29uZmlnSXRlbUNsYXNzLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NOYW1lcywgJENvbmZpZ0l0ZW1EYXRhUmVmLT57TmFtZX07CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWRtaW5JVFNNQ29uZmlnSXRlbS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZG1pbklUU01Db25maWdJdGVtIik7CgogICAgICAgICMgVGVzdCBkZWZhdWx0IElUU01Db25maWdJdGVtIGNsYXNzLgogICAgICAgIGZvciBteSAkSXRlbSAoQENvbmZpZ0l0ZW1DbGFzc05hbWVzKSB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICRJdGVtLCAnbGlua190ZXh0JyApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZCgpOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIENoZWNrIGZvciB0YWJsZSBzdHJ1Y3R1cmUuCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUiLCAgICAgICAgICAgICAnY3NzJyApOwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRoZWFkIHRyIHRoIiwgJ2NzcycgKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICAgICAjIENsaWNrIG9uICdDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbicuCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdBZGQnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICMgQ2hlY2sgZm9yIGlucHV0IGFyZWEuCiAgICAgICAgICAgIG15ICRJbnB1dEZpZWxkID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGVmaW5pdGlvbiIsICdjc3MnICk7CiAgICAgICAgICAgICRJbnB1dEZpZWxkLT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRJbnB1dEZpZWxkLT5pc19kaXNwbGF5ZWQoKTsKCiAgICAgICAgICAgICMgUmV0dXJuIGJhY2sgdG8gb3ZlcnZpZXcgc2NyZWVuLgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWRtaW5JVFNNQ29uZmlnSXRlbScgKV0iKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/Admin/AdminImportExport.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3Rlck9NOyAgICAjIFNldCB1cCAkS2VybmVsOjpPTQp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bTsKCiMgc29tZSBzZXR1cCBiZWZvcmUgc3RhcnRpbmcgdGhlIFNlbGVuaXVtIHRlc3QKCiMgbmVlZGVkIG9iamVjdHMKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKIyBUaGUgaGVscGVyIG11c3RuJ3QgcnVuIGluIGEgdHJhbnNhY3Rpb24sIGJlY2F1c2Ugb3RoZXJ3aXNlCiMgdGhlIHdlYnNlcnZlciB3b3VsZCBub3Qgc2VlIHRoZSBjaGFuZ2VzIGluIHRoZSBkYXRhYmFzZS4KbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgojIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7Cm9rKCAkVGVzdFVzZXJMb2dpbiwgJ3Rlc3QgdXNlciBjcmVhdGVkJyApOwpteSAkVGVzdFVzZXJJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPlVzZXJMb29rdXAoIFVzZXJMb2dpbiA9PiAkVGVzdFVzZXJMb2dpbiApOwpvayggJFRlc3RVc2VySUQsICdnb3QgSUQgZm9yIHRlc3QgdXNlcicgKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEOwoKIyBUaGUgZGVmaW5pdGlvbiBpdHNlbGYgaXMgaXJyZWxldmFudCwgaXQganVzdCBoYXMgdG8gYmUgdmFsaWQKbXkgJENvbmZpZ0l0ZW1ZQU1MRGVmaW5pdGlvbiA9IDw8J0VORF9ZQU1MJzsKLS0tClBhZ2VzOgogIC0gTmFtZTogQ0lfMV9QYWdlMQogICAgSW50ZXJmYWNlczogW10KICAgIExheW91dDoKICAgICAgQ29sdW1uczogMwogICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICBDb250ZW50OgogICAgICAtIFNlY3Rpb246IENJXzFfU2VjdGlvbjEKICAgICAgICBDb2x1bW5TdGFydDogMQogICAgICAgIFJvd1N0YXJ0OiAxCgogIC0gTmFtZTogQ0lfMV9QYWdlMgogICAgTGF5b3V0OgogICAgICBDb2x1bW5zOiAzCiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIENvbnRlbnQ6CiAgICAgIC0gU2VjdGlvbjogQ0lfMV9TZWN0aW9uMgogICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgUm93U3RhcnQ6IDIKClNlY3Rpb25zOgogIENJXzFfU2VjdGlvbjE6CiAgICBDb250ZW50OgogICAgICAtIEhlYWRlcjogIlRoaXMgaXMgc2VjdGlvbiAxIgoKICBDSV8xX1NlY3Rpb24yOgogICAgQ29udGVudDoKICAgICAgLSBIZWFkZXI6ICJUaGlzIGlzIHNlY3Rpb24gMiIKRU5EX1lBTUwKCm15ICRUZXN0Q2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgICAgPT4gIkNsYXNzXyRSYW5kb21JRCIsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRUZXN0VXNlcklELAopOwpvayggJFRlc3RDbGFzc0lELCAiQ2xhc3MgYWRkZWQgdG8gR2VuZXJhbENhdGFsb2ciICk7CgojIHNldCBwZXJtaXNzaW9uIGFuZCB2ZXJzaW9uIHN0cmluZyBtb2R1bGUKewogICAgbXkgJEdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgR3JvdXAgID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG9rKCAkR3JvdXBJRCwgJ2dvdCBJRCBmb3IgZ3JvdXAgaXRzbS1jb25maWdpdGVtJyApOwoKICAgICMgc2V0IHBlcm1pc3Npb24uCiAgICBteSAkU3VjY2VzcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICBJdGVtSUQgPT4gJFRlc3RDbGFzc0lELAogICAgICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICAgICAgVmFsdWUgID0+IFskR3JvdXBJRF0sCiAgICApOwogICAgb2soICRTdWNjZXNzLCAnc2V0dGluZyBwZXJtaXNzaW9uIHdhcyBzdWNjZXNzZnVsJyApOwoKICAgICMgc2V0IHZlcnNpb24gc3RyaW5nIG1vZHVsZQogICAgJFN1Y2Nlc3MgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgSXRlbUlEID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICBLZXkgICAgPT4gJ1ZlcnNpb25TdHJpbmdNb2R1bGUnLAogICAgICAgIFZhbHVlICA9PiBbJ0luY3JlbWVudGFsJ10KICAgICk7CiAgICBvayggJFN1Y2Nlc3MsICdzZXR0aW5nIGluY3JlbWVudGFsIHZlcnNpb24gc3RyaW5nIG1vZHVsZSB3YXMgc3VjY2Vzc2Z1bCcgKTsKCn0KCiMgVGhlIGNvbmZpZyBpdGVtIGNsYXNzIG5lZWRzIGEgdmFsaWQgZGVmaW5pdGlvbgpteSAkRGVmaW5pdGluQWRkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICBDbGFzc0lEICAgID0+ICRUZXN0Q2xhc3NJRCwKICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICBDcmVhdGVCeSAgID0+ICRUZXN0VXNlcklELAogICAgRGVmaW5pdGlvbiA9PiAkQ29uZmlnSXRlbVlBTUxEZWZpbml0aW9uLAopOwpvayggJERlZmluaXRpbkFkZFJlc3VsdC0+e1N1Y2Nlc3N9LCAiRGVmaW5pdGlvbkFkZCgpIHN1Y2Nlc3NmdWwiICk7Cm15ICREZWZpbml0aW9uSUQgPSAkRGVmaW5pdGluQWRkUmVzdWx0LT57RGVmaW5pdGlvbklEfTsKb2soICREZWZpbml0aW9uSUQsICJEZWZpbml0aW9uQWRkKCkgZ290IGRlZmluaXRpb24gSUQiICk7CgojIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KbXkgJERlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKbXkgJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCm15ICRTZWxlbml1bSA9IEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0tPm5ldzsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CiAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBudW1iZXIuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRUZXN0Q2xhc3NJRCwKICAgICAgICApOwogICAgICAgIG9rKCAkQ29uZmlnSXRlbU51bWJlciwgIkNvbmZpZ0l0ZW0gbnVtYmVyIGlzIGNyZWF0ZWQgLSAkQ29uZmlnSXRlbU51bWJlciIgKTsKCiAgICAgICAgIyBBZGQgJ0xvY2F0aW9uJyB0ZXN0IENvbmZpZ0l0ZW0uCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gIlNlbGVuaXVtIiAuICRIZWxwZXItPkdldFJhbmRvbUlEOwogICAgICAgIG15ICRDb25maWdJdGVtSUQgICA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBOYW1lICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAxLAogICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkVGVzdENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+ICRUZXN0VXNlcklELAogICAgICAgICk7CiAgICAgICAgb2soICRDb25maWdJdGVtSUQsICJDb25maWdJdGVtICdMb2NhdGlvbicgaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiICk7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFkbWluSW1wb3J0RXhwb3J0IHNjcmVlbi4KICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWRtaW5JbXBvcnRFeHBvcnQiKTsKCiAgICAgICAgIyBDaGVjayBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnRfYnlfY3NzX29rKCJ0YWJsZSIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50X2J5X2Nzc19vaygidGFibGUgdGhlYWQgdHIgdGgiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudF9ieV9jc3Nfb2soInRhYmxlIHRib2R5IHRyIHRkIik7CgogICAgICAgICMgQ2xpY2sgb24gJ0FkZCB0ZW1wbGF0ZScuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFkbWluSW1wb3J0RXhwb3J0O1N1YmFjdGlvbj1UZW1wbGF0ZUVkaXQnICldIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBhbmQgaW5wdXQgc3RlcCAxIG9mIDUgc2NyZWVuLgogICAgICAgIGRpYWcoJ1N0ZXAgMScpOwogICAgICAgIGZvciBteSAkU3RlcE9uZUlEICgKICAgICAgICAgICAgcXcoTmFtZSBPYmplY3RfU2VhcmNoIEZvcm1hdF9TZWFyY2ggVmFsaWRJRF9TZWFyY2ggQ29tbWVudCkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkU3RlcE9uZUlEIiwgJ2NzcycgKTsKICAgICAgICAgICAgb2soICRFbGVtZW50LCAiJFN0ZXBPbmVJRCBmb3VuZCBpbiBzdGVwIDEiICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkX29rOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkX29rOwogICAgICAgIH0KICAgICAgICBteSAkSW1wb3J0RXhwb3J0TmFtZSA9ICJJbXBvcnRFeHBvcnQiIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICdjc3MnICktPnNlbmRfa2V5cygkSW1wb3J0RXhwb3J0TmFtZSk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjT2JqZWN0JykudmFsKCdJVFNNQ29uZmlnSXRlbScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNGb3JtYXQnKS52YWwoJ0NTVicpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjQ29tbWVudCIsICdjc3MnICktPnNlbmRfa2V5cygnU2VsZW5pdW1UZXN0Jyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAY2xhc3M9J1ByaW1hcnkgQ2FsbEZvckFjdGlvbiddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIGFuZCBpbnB1dCBzdGVwIDIgb2YgNSBzY3JlZW4uCiAgICAgICAgZGlhZygnU3RlcCAyJyk7CiAgICAgICAgZm9yIG15ICRTdGVwVHdvSUQgKAogICAgICAgICAgICBxdyhDbGFzc0lEX1NlYXJjaCBDb3VudE1heCBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRTdGVwVHdvSUQiLCAnY3NzJyApOwogICAgICAgICAgICBvayggJEVsZW1lbnQsICIkU3RlcFR3b0lEIGZvdW5kIGluIHN0ZXAgMiIgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWRfb2s7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWRfb2s7CiAgICAgICAgfQoKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNDbGFzc0lEJykudmFsKCckVGVzdENsYXNzSUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQGNsYXNzPSdQcmltYXJ5IENhbGxGb3JBY3Rpb24nXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBhbmQgaW5wdXQgc3RlcCAzIG9mIDUgc2NyZWVuLgogICAgICAgIGRpYWcoJ1N0ZXAgMzogZm9ybWF0IGRlZmluaXRpb24nKTsKICAgICAgICBmb3IgbXkgJFN0ZXBUaHJlZUlEICgKICAgICAgICAgICAgcXcoQ29sdW1uU2VwYXJhdG9yX1NlYXJjaCBDaGFyc2V0IEluY2x1ZGVDb2x1bW5IZWFkZXJzX1NlYXJjaCkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkU3RlcFRocmVlSUQiLCAnY3NzJyApOwogICAgICAgICAgICBvayggJEVsZW1lbnQsICIkU3RlcFRocmVlSUQgZm91bmQgaW4gc3RlcCAzIiApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZF9vazsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZF9vazsKICAgICAgICB9CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjQ29sdW1uU2VwYXJhdG9yJykudmFsKCdDb21tYScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgYW5kIGlucHV0IHN0ZXAgNCBvZiA1IHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEBjbGFzcz0nUHJpbWFyeSBDYWxsRm9yQWN0aW9uJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTWFwcGluZ0FkZEJ1dHRvbiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgZGlhZygnU3RlcCA0Jyk7CiAgICAgICAgZm9yIG15ICRTdGVwRm91cklEICgKICAgICAgICAgICAgcXcoS2V5X1NlYXJjaCBJZGVudGlmaWVyKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIuLy8qW1xAaWQ9J09iamVjdDo6MDo6JFN0ZXBGb3VySUQnXSIpOwogICAgICAgICAgICBvayggJEVsZW1lbnQsICIkU3RlcEZvdXJJRCBmb3VuZCBpbiBzdGVwIDQiICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkX29rOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkX29rOwogICAgICAgIH0KCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnRfYnlfY3NzX29rKCJ0YWJsZSIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50X2J5X2Nzc19vaygidGFibGUgdGhlYWQgdHIgdGgiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudF9ieV9jc3Nfb2soInRhYmxlIHRib2R5IHRyIHRkIik7CgogICAgICAgICMgU2VsZWN0ICdOdW1iZXInIG1hcHBpbmcgZWxlbWVudC4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNPYmplY3RcXFxcOlxcXFw6MFxcXFw6XFxcXDpLZXknKS52YWwoJ051bWJlcicpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgICMgQWRkIGFuZCBzZWxlY3QgJ05hbWUnIG1hcHBpbmcgZWxlbWVudC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNYXBwaW5nQWRkQnV0dG9uIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI09iamVjdFxcXFw6XFxcXDoxXFxcXDpcXFxcOktleScpLnZhbCgnTmFtZScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgICMgQWRkIGFuZCBzZWxlY3QgJ0RlcGxveW1lbnQgU3RhdGUnIG1hcHBpbmcgZWxlbWVudC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNYXBwaW5nQWRkQnV0dG9uIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI09iamVjdFxcXFw6XFxcXDoyXFxcXDpcXFxcOktleScpLnZhbCgnRGVwbFN0YXRlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgYW5kIHNlbGVjdCAnSW5jaWRlbnQgU3RhdGUnIG1hcHBpbmcgZWxlbWVudC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNYXBwaW5nQWRkQnV0dG9uIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI09iamVjdFxcXFw6XFxcXDozXFxcXDpcXFxcOktleScpLnZhbCgnSW5jaVN0YXRlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgIyBmb3IgZXZlcnkgbGluZSBjaGVjayBpZiBhY3Rpb24gZWxlbWVudHMgYXJlIHZpc2libGUgYW5kIGlmIHRoZWlyIGVuYWJsZWQgc3RhdGUgaXMgY29ycmVjdAogICAgICAgICMgdGhlIGZpcnN0IEFycm93VXAgYW5kIHRoZSBsYXN0IEFycm93ZG93biBtdXN0IGJlIGRpc2FibGVkLCBhbGwgdGhlIG90aGVycyBtdXN0IGJlIGVuYWJsZWQKICAgICAgICBmb3IgbXkgJFN0ZXBGb3VyQ2xhc3MgKAogICAgICAgICAgICBxdyhBcnJvd1VwIEFycm93RG93biBEZWxldGVDb2x1bW4pCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50cyA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50cyggIi4kU3RlcEZvdXJDbGFzcyIsICdjc3MnICk7CiAgICAgICAgICAgIG9rKCAkRWxlbWVudHMsICIkU3RlcEZvdXJDbGFzcyBjbGFzcyBmb3VuZCBpbiBzdGVwIDQiICk7CgogICAgICAgICAgICBpZiAoICRTdGVwRm91ckNsYXNzIGVxICdBcnJvd1VwJyApIHsKICAgICAgICAgICAgICAgIG15ICRJbmRleCA9IDA7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCAkRWxlbWVudHMtPkAqICkgewogICAgICAgICAgICAgICAgICAgIG15ICRTdGF0ZU9rID0gJEluZGV4ID09IDAgPyAhJEVsZW1lbnQtPmlzX2VuYWJsZWQgOiAkRWxlbWVudC0+aXNfZW5hYmxlZDsKICAgICAgICAgICAgICAgICAgICBvayggJFN0YXRlT2ssICIkU3RlcEZvdXJDbGFzcyBlbGVtZW50ICRJbmRleCBlbmFibGVkIHN0YXRlIGlzIGNvcnJlY3QiICk7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZF9vazsKICAgICAgICAgICAgICAgICAgICAkSW5kZXgrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRTdGVwRm91ckNsYXNzIGVxICdBcnJvd0Rvd24nICkgewogICAgICAgICAgICAgICAgbXkgJEluZGV4ID0gMDsKICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoICRFbGVtZW50cy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN0YXRlT2sgPSAkSW5kZXggPT0gMyA/ICEkRWxlbWVudC0+aXNfZW5hYmxlZCA6ICRFbGVtZW50LT5pc19lbmFibGVkOwogICAgICAgICAgICAgICAgICAgIG9rKCAkU3RhdGVPaywgIiRTdGVwRm91ckNsYXNzIGVsZW1lbnQgJEluZGV4IGVuYWJsZWQgc3RhdGUgaXMgY29ycmVjdCIgKTsKICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkX29rOwogICAgICAgICAgICAgICAgICAgICRJbmRleCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJEluZGV4ID0gMDsKICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoICRFbGVtZW50cy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN0YXRlT2sgPSAkRWxlbWVudC0+aXNfZW5hYmxlZDsKICAgICAgICAgICAgICAgICAgICBvayggJFN0YXRlT2ssICIkU3RlcEZvdXJDbGFzcyBlbGVtZW50ICRJbmRleCBlbmFibGVkIHN0YXRlIGlzIGNvcnJlY3QiICk7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZF9vazsKICAgICAgICAgICAgICAgICAgICAkSW5kZXgrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0TmV4dEJ1dHRvbiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBzdGVwIDUgb2YgNSBzY3JlZW4uCiAgICAgICAgZGlhZygnU3RlcCA1LCByZXN0cmljdCB3aGF0IGlzIGV4cG9ydGVkJyk7CiAgICAgICAgZm9yIG15ICRTdGVwRml2ZUlEICgKICAgICAgICAgICAgcXcoUmVzdHJpY3RFeHBvcnQgTnVtYmVyIE5hbWUgRGVwbFN0YXRlSURzX1NlYXJjaCBJbmNpU3RhdGVJRHNfU2VhcmNoKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRTdGVwRml2ZUlEIiwgJ2NzcycgKTsKICAgICAgICAgICAgb2soICRFbGVtZW50LCAiJFN0ZXBGaXZlSUQgZm91bmQgaW4gc3RlcCA1IiApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZF9vazsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZF9vazsKICAgICAgICB9CgogICAgICAgICMgU2VhcmNoIENvbmZpZ0l0ZW0gYnkgbnVtYmVyIGFuZCBkZXBsb3ltZW50IHN0YXRlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1Jlc3RyaWN0RXhwb3J0IiwgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOdW1iZXIiLCAgICAgICAgICdjc3MnICktPnNlbmRfa2V5cygkQ29uZmlnSXRlbU51bWJlcik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICAgICAgICAgICAnY3NzJyApLT5zZW5kX2tleXMoJENvbmZpZ0l0ZW1OYW1lKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNEZXBsU3RhdGVJRHMnKS52YWwoJyRQcm9kdWN0aW9uRGVwbFN0YXRlSUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjSW5jaVN0YXRlSURzJykudmFsKCcxJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEBjbGFzcz0nUHJpbWFyeSBDYWxsRm9yQWN0aW9uJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgR2V0IFRlbXBsYXRlSUQgb2YgY3JlYXRlZCB0ZXN0IHRlbXBsYXRlLgogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwogICAgICAgIG15ICgkVGVtcGxhdGVJRCkgPSAkREJPYmplY3QtPlNlbGVjdFJvd0FycmF5KAogICAgICAgICAgICBTUUwgID0+ICdTRUxFQ1QgaWQgRlJPTSBpbWV4cG9ydF90ZW1wbGF0ZSBXSEVSRSBuYW1lID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJEltcG9ydEV4cG9ydE5hbWUgXSwKICAgICAgICApOwogICAgICAgIG9rKCAkVGVtcGxhdGVJRCwgImdvdCB0aGUgdGVtcGxhdGUgSUQgLSAkVGVtcGxhdGVJRCIgKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byB0ZXN0IGNyZWF0ZWQgQ29uZmlnSXRlbSBhbmQgdmVyaWZ5IGl0LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEIik7CiAgICAgICAgJFNlbGVuaXVtLT5jb250ZW50X2NvbnRhaW5zKAogICAgICAgICAgICAkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbmFtZSAkQ29uZmlnSXRlbU5hbWUgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBFeHBvcnQgdXNpbmcgdGhlIGNyZWF0ZWQgdGVzdCB0ZW1wbGF0ZS4KICAgICAgICBteSAkSW1wb3J0RXhwb3J0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwogICAgICAgIG15ICRFeHBvcnRSZXN1bHRSZWYgICAgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5FeHBvcnQoCiAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzYW5pdHkgY2hlY2sgb2YgdGhlIGV4cG9ydAogICAgICAgIGlzKAogICAgICAgICAgICAkRXhwb3J0UmVzdWx0UmVmLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBEZXN0aW5hdGlvbkNvbnRlbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHFxeyIkQ29uZmlnSXRlbU51bWJlciIsIiRDb25maWdJdGVtTmFtZSIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCJ9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIEZhaWxlZCAgPT4gMCwKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ2V4cG9ydCByZXN1bHQnCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW0gYW5kIHZlcmlmeSB0aGUgZGVsZXRpb24KICAgICAgICB7CiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUZvdW5kID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICBSZXN1bHQgICAgICAgPT4gJ0NPVU5UJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBbJENvbmZpZ0l0ZW1JRF0KICAgICAgICAgICAgKTsKICAgICAgICAgICAgb2soICEkQ29uZmlnSXRlbUZvdW5kLCAiQ29uZmlnSXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIgKTsKCiAgICAgICAgICAgICMgUmVmcmVzaCBzY3JlZW4gYW5kIHZlcmlmeSB0aGF0IHRlc3QgQ29uZmlnSXRlbSBkb2VzIG5vdCBleGlzdCBhbnltb3JlLgogICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkUmVmcmVzaCgpOwogICAgICAgICAgICAkU2VsZW5pdW0tPmNvbnRlbnRfY29udGFpbnMoCiAgICAgICAgICAgICAgICAiQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hIiwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbmFtZSAkQ29uZmlnSXRlbU5hbWUgaXMgbm90IGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgQmVmb3JlIGltcG9ydGluZyB2ZXJpZnkgdGhhdCB0aGUgY29uZmlnIGl0ZW1zIGRvIG5vdCBhbHJlYWR5IGV4aXN0CiAgICAgICAgZm9yIG15ICRDb3VudCAoIDEgLi4gMiApIHsKICAgICAgICAgICAgbXkgJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUgPSAnU2VsZW5pdW10ZXN0X0FkbWluSW1wb3J0RXhwb3J0XycgLiAkQ291bnQ7CiAgICAgICAgICAgIG15ICRDb3VudCAgICAgICAgICAgICAgICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0NPVU5UJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaXMoICRDb3VudCwgMCwgIiRJbXBvcnRlZENvbmZpZ0l0ZW1OYW1lIGRvZXMgbm90IGV4aXN0IGJlZm9yZSBpbXBvcnQiICk7CiAgICAgICAgfQoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFkbWluSW1wb3J0RXhwb3J0IHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZG1pbkltcG9ydEV4cG9ydCIpOwoKICAgICAgICAjIENsaWNrIG9uICdJbXBvcnQnLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJ1N1YmFjdGlvbj1JbXBvcnRJbmZvcm1hdGlvbjtUZW1wbGF0ZUlEPSRUZW1wbGF0ZUlEJyApXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgU2VsZWN0IEV4cG9ydGVkIGZpbGUgYW5kIHN0YXJ0IGltcG9ydGluZy4KICAgICAgICAjIFRoZSBkaXJlY3RvcnkgL29wdC9vdG9iby9zY3JpcHRzL3Rlc3Qvc2FtcGxlIGhhcyBiZWVuIGNvcGllZCBmcm9tIE9UT0JPIGNvcmUgaW50byB0aGUgU2VsZW5pdW0gaW1hZ2UuCiAgICAgICAgIyBUaGUgY29udGVudCBpczoKICAgICAgICAjICAgIjEwNDk1MDAwMTAxIiwiU2VsZW5pdW10ZXN0X0FkbWluSW1wb3J0RXhwb3J0XzEiLCJQcm9kdWN0aW9uIiwiT3BlcmF0aW9uYWwiCiAgICAgICAgIyAgICIxMDQ5NTAwMDEwMiIsIlNlbGVuaXVtdGVzdF9BZG1pbkltcG9ydEV4cG9ydF8yIiwiUHJvZHVjdGlvbiIsIk9wZXJhdGlvbmFsIgogICAgICAgIG15ICRJbXBvcnRMb2NhdGlvbiA9ICcvb3B0L290b2JvL3NjcmlwdHMvdGVzdC9zYW1wbGUvSW1wb3J0RXhwb3J0L1RlbXBsYXRlSW1wb3J0LmNzdic7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbY29udGFpbnMoXEBuYW1lLCBcJ1NvdXJjZUZpbGUnICldIiktPnNlbmRfa2V5cygkSW1wb3J0TG9jYXRpb24pOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nU3RhcnQgSW1wb3J0J11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgZm9yIGV4cGVjdGVkIG91dGNvbWUuCiAgICAgICAgJFNlbGVuaXVtLT5jb250ZW50X2NvbnRhaW5zKAogICAgICAgICAgICAnKENyZWF0ZWQ6IDIpJywKICAgICAgICAgICAgIkltcG9ydCB0ZXN0IENvbmZpZ0l0ZW0gLSBzdWNjZXNzIiwKICAgICAgICApOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIGltcG9ydGVkIHRlc3QgY3JlYXRlZCBDb25maWdJdGVtIGFuZCB2ZXJpZnkgaXQuCiAgICAgICAgZm9yIG15ICRDb3VudCAoIDEgLi4gMiApIHsKICAgICAgICAgICAgbXkgJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUgPSAnU2VsZW5pdW10ZXN0X0FkbWluSW1wb3J0RXhwb3J0XycgLiAkQ291bnQ7CgogICAgICAgICAgICBzdWJ0ZXN0ICJjaGVja2luZyBpbXBvcnQgb2YgJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUiID0+IHN1YiB7CiAgICAgICAgICAgICAgICBteSAkRXhwZWN0ZWRJbXBvcnRlZENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtSUQgKyAkQ291bnQ7CiAgICAgICAgICAgICAgICBteSAoICRGb3VuZEltcG9ydGVkQ29uZmlnSXRlbUlELCBAT3RoZXJJRHMgKSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkSW1wb3J0ZWRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpcyggJEV4cGVjdGVkSW1wb3J0ZWRDb25maWdJdGVtSUQsICRGb3VuZEltcG9ydGVkQ29uZmlnSXRlbUlELCAiJEZvdW5kSW1wb3J0ZWRDb25maWdJdGVtSUQgaGFzIGJlZW4gaW1wb3J0ZWQiICk7CiAgICAgICAgICAgICAgICBpcyggXEBPdGhlcklEcywgICAgICAgICAgICAgICAgICAgIFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAib25seSBvbmUgaXRlbSBmb3VuZCIgKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kRm91bmRJbXBvcnRlZENvbmZpZ0l0ZW1JRCIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmNvbnRlbnRfY29udGFpbnMoCiAgICAgICAgICAgICAgICAgICAgJEltcG9ydGVkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSBuYW1lICRJbXBvcnRlZENvbmZpZ0l0ZW1OYW1lIGlzIGZvdW5kIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjbGVhbiB1cCwgZGVsZXRlIHRoZSB0ZXN0IGltcG9ydGVkIENvbmZpZ0l0ZW0uCiAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkRm91bmRJbXBvcnRlZENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgb2soICREZWxldGVTdWNjZXNzLCAiQ29uZmlnSXRlbSAkSW1wb3J0ZWRDb25maWdJdGVtTmFtZSBpcyBkZWxldGVkIC0gSUQgJEZvdW5kSW1wb3J0ZWRDb25maWdJdGVtSUQiICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWRtaW5JbXBvcnRFeHBvcnQgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFkbWluSW1wb3J0RXhwb3J0Iik7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcmpRdWVyeUV2ZW50Qm91bmQoCiAgICAgICAgICAgIENTU1NlbGVjdG9yID0+ICJhLkltcG9ydEV4cG9ydERlbGV0ZVtkYXRhLWlkPSckVGVtcGxhdGVJRCddIiwKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIHRvIGRlbGV0ZSB0ZXN0IHRlbXBsYXRlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiYS5JbXBvcnRFeHBvcnREZWxldGVbZGF0YS1pZD0nJFRlbXBsYXRlSUQnXSIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcmpRdWVyeUV2ZW50Qm91bmQoCiAgICAgICAgICAgIENTU1NlbGVjdG9yID0+ICIjRGlhbG9nQnV0dG9uMTp2aXNpYmxlIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggJyNEaWFsb2dCdXR0b24xJywgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEVsZW1lbnRNaXNzaW5nID0+IFsgImEuSW1wb3J0RXhwb3J0RGVsZXRlW2RhdGEtaWQ9JyRUZW1wbGF0ZUlEJ10iLCAnY3NzJyBdICk7CgogICAgICAgICMgQ2hlY2sgaWYgdGVzdCB0ZW1wbGF0ZSBpcyBkZWxldGVkLgogICAgICAgIG9rKAogICAgICAgICAgICAhJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ2EuSW1wb3J0RXhwb3J0RGVsZXRlW2RhdGEtaWQqPVwiJFRlbXBsYXRlSURcIl0nKS5sZW5ndGg7IgogICAgICAgICAgICApLAogICAgICAgICAgICAiVGVzdCB0ZW1wbGF0ZSBpcyBkZWxldGVkIiwKICAgICAgICApOwogICAgfQopOwoKIyBUT0RPOiBjbGVhbiB1cCBvZiB0aGUgZGF0YWJhc2UKCmRvbmVfdGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXItPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgICAgICAgICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIKICAgICAgICApOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3MgKHF3KENvbXB1dGVyIEhhcmR3YXJlIExvY2F0aW9uIE5ldHdvcmsgU29mdHdhcmUpKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkQ29uZmlnSXRlbUNsYXNzLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NJRHMsICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgfQoKICAgICAgICAjIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KICAgICAgICBteSAkRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAgICAgbXkgJE93bmVyICAgICAgICAgICA9ICciVGVzdCBUZXN0IiA8dGVzdEB0ZXN0LmNvbT4nOwogICAgICAgIG15ICRDb21wdXRlckNsYXNzSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgIE5hbWUgID0+ICdDb21wdXRlcicsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzLgogICAgICAgIG15IEBDb25maWdJdGVtTnVtYmVyczsKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgICAgICBmb3IgbXkgJElUU01Db25maWdJdGVtIChAQ29uZmlnSXRlbUNsYXNzSURzKSB7CgogICAgICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJElUU01Db25maWdJdGVtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gbnVtYmVyIGlzIGNyZWF0ZWQgLSAkQ29uZmlnSXRlbU51bWJlciIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbU51bWJlcnMsICRDb25maWdJdGVtTnVtYmVyOwoKICAgICAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnU2VsZW5pdW1UZXN0JywKICAgICAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJElUU01Db25maWdJdGVtLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKICAgICAgICB9CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtLCBzb3J0ZWQgYnkgY3JlYXRlZCB0aW1lLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtO0ZpbHRlcj1BbGw7Vmlldz07U29ydEJ5PUxhc3RDaGFuZ2VkO09yZGVyQnk9RG93biIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMgd2l0aCAnQWxsJyBmaWx0ZXIgYWN0aXZlCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ2E6Y29udGFpbnMoJENvbmZpZ0l0ZW1OdW1iZXIpJykubGVuZ3RoID09PSAxIgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gdmFsdWUgJENvbmZpZ0l0ZW1OdW1iZXIgLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGVhY2ggb2YgQ29uZmlnSXRlbSBjbGFzcyBmaWx0ZXJzIGZvciB0aGVpciByZXNwZWN0aXZlIHRlc3QgQ29uZmlnSXRlbQogICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKCiAgICAgICAgICAgICMgQ2xpY2sgb24gQ29uZmlnSXRlbSBjbGFzcwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtO1NvcnRCeT1DaGFuZ2VkO09yZGVyQnk9RG93bjtWaWV3PVNtYWxsO0ZpbHRlcj0kQ29uZmlnSXRlbUNsYXNzSURzWyRDb3VudF0nICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIENoZWNrIGZvciB0YWJsZSBzdHJ1Y3R1cmUKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIiwgJ2NzcycgKTsKCiAgICAgICAgICAgICMgQ2hlY2sgZm9yIENvbmZpZ0l0ZW0gbnVtYmVyCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCdhOmNvbnRhaW5zKCRDb25maWdJdGVtTnVtYmVyKScpLmxlbmd0aCIKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiVGVzdCBDb25maWdJdGVtIHZhbHVlICRDb25maWdJdGVtTnVtYmVyIC0gZm91bmQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHRoZSBudW1iZXIgY29sdW1uIGhhcyBhIGxpbmsgdG8gdGhlIGNvbmZpZyBpdGVtIHpvb20KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ3RyOmVxKFwiMVwiKSBhOmNvbnRhaW5zKCRDb25maWdJdGVtTnVtYmVyc1s0XSlbaHJlZio9XCJJdGVtSUQ9JENvbmZpZ0l0ZW1JRHNbNF1cIl0nKS5sZW5ndGg7IgogICAgICAgICAgICApLAogICAgICAgICAgICAiTGluayBvbiBDb25maWdJdGVtICdOdW1iZXInIGNvbHVtbiBjb3JyZWN0LiIKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtRGVsZXRlIChAQ29uZmlnSXRlbUlEcykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtRGVsZXRlLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1EZWxldGUiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemAdd.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcjsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlJlZ2lzdGVyT007ICAgICAgICAjIFNldCB1cCAkS2VybmVsOjpPTQoKb3VyICRTZWxmOwoKIyBnZXQgc2VsZW5pdW0gb2JqZWN0Cm15ICRTZWxlbml1bSA9IEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0tPm5ldzsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3RzCiAgICAgICAgbXkgJEhlbHBlciAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OklUU01Db25maWdJdGVtSGVscGVyJyk7CiAgICAgICAgJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgICAgICAgICAkSGVscGVyID0+IHsKICAgICAgICAgICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNhdGFsb2cgY2xhc3MgSURzCiAgICAgICAgJElUU01Db25maWdJdGVtSGVscGVyLT5UZXN0Q29uZmlnSXRlbUNyZWF0ZUxlZ2FjeUNsYXNzZXMoCiAgICAgICAgICAgIEhlbHBlck9iamVjdCA9PiAkSGVscGVyCiAgICAgICAgKTsKICAgICAgICBteSBAQ29uZmlnSXRlbUNsYXNzSURzOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NOYW1lczsKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1DbGFzcyAocXcoQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayBTb2Z0d2FyZSkpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJENvbmZpZ0l0ZW1DbGFzcywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAgICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc05hbWVzLCAkQ29uZmlnSXRlbURhdGFSZWYtPntOYW1lfTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtQWRkIik7CgogICAgICAgICMgY2hlY2sgZm9yIElUU01Db25maWdJdGVtIGNsYXNzZXMKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1DbGFzc05hbWUgKEBDb25maWdJdGVtQ2xhc3NOYW1lcykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkQ29uZmlnSXRlbUNsYXNzTmFtZSApID4gLTEsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBjbGFzcyAkQ29uZmlnSXRlbUNsYXNzTmFtZSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZm9yIGxpbmtzIHRvICdBZGQnIG5ldyBpdGVtIGZvciBlYWNoIGNsYXNzCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3NBZGQgKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NsYXNzSUQ9JENvbmZpZ0l0ZW1DbGFzc0FkZCcgKV0iCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBJRCAkQ29uZmlnSXRlbUNsYXNzQWRkIGFkZCBsaW5rIC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemBulk.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0cwogICAgICAgIG15ICRIZWxwZXIgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJElUU01Db25maWdJdGVtSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicpOwogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgICRJVFNNQ29uZmlnSXRlbUhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgICAgICAgICBIZWxwZXJPYmplY3QgPT4gJEhlbHBlcgogICAgICAgICk7CgogICAgICAgICMgR2V0ICdDb21wdXRlcicgY2F0YWxvZyBjbGFzcyBJRHMuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAnQ29tcHV0ZXInLAogICAgICAgICk7CiAgICAgICAgbXkgJENvbXB1dGVyQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGFuZCAnUmVwYWlyJyBkZXBsb3ltZW50IHN0YXRlIElEcy4KICAgICAgICBteSBARGVwbFN0YXRlSURzOwogICAgICAgIGZvciBteSAkRGVwbFN0YXRlIChxdyAoUHJvZHVjdGlvbiBSZXBhaXIpKSB7CiAgICAgICAgICAgIG15ICREZXBsU3RhdGVEYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkRGVwbFN0YXRlLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBEZXBsU3RhdGVJRHMsICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICB9CgogICAgICAgICMgQ3JlYXRlIHRocmVlIHRlc3QgQ29uZmlnSXRlbXMgZm9yICdDb21wdXRlcicgQ29uZmlnSXRlbSBjbGFzcy4KICAgICAgICBteSBAQ29uZmlnSXRlbXM7CiAgICAgICAgZm9yICggMSAuLiAzICkgewoKICAgICAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBudW1iZXIuCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb21wdXRlckNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIG51bWJlciBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OdW1iZXIiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU5hbWUgPSAnSGFyZHdhcmUnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRDb21wdXRlckNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVJRHNbMF0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtcywKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRJVFNNQ29uZmlnSXRlbSwgc29ydGVkIGJ5IGNyZWF0ZWQgdGltZS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbTtGaWx0ZXI9QWxsO1ZpZXc9OztTb3J0Qnk9TGFzdENoYW5nZWQ7T3JkZXJCeT1Eb3duIgogICAgICAgICk7CgogICAgICAgICMgU2VsZWN0IHR3byBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgZm9yIG15ICRTZWxlY3RDb25maWdJdGVtIChAQ29uZmlnSXRlbXMpIHsKCiAgICAgICAgICAgICMgRG9uJ3QgY2xpY2sgb24gdGhpcmQgdGVzdCBDb25maWdJdGVtLgogICAgICAgICAgICBpZiAoICRTZWxlY3RDb25maWdJdGVtLT57SUR9IG5lICRDb25maWdJdGVtc1syXS0+e0lEfSApIHsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAdmFsdWU9JyRTZWxlY3RDb25maWdJdGVtLT57SUR9J10iKS0+Y2xpY2soKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBDbGljayBvbiBidWxrIGFjdGlvbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW3RleHQoKT0nQnVsayddIiktPmNsaWNrKCk7CgogICAgICAgICMgU3dpdGNoIHRvICdCdWxrJyB3aW5kb3cuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIHdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI0RlcGxTdGF0ZUlEIikubGVuZ3RoOycgKTsKCiAgICAgICAgIyBDaGVjayBzY3JlZW4KICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoRGVwbFN0YXRlSUQgSW5jaVN0YXRlSUQgTGlua1RvZ2V0aGVyIExpbmtUb2dldGhlckxpbmtUeXBlIExpbmtUb2dldGhlckFub3RoZXIgTGlua1R5cGUgc3VibWl0UmljaFRleHQpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBDaGFuZ2UgZGVwbG95bWVudCBzdGF0ZSB0byAnUmVwYWlyJyBmb3IgdGVzdCBDb25maWdJdGVtcwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0RlcGxTdGF0ZUlEJykudmFsKCckRGVwbFN0YXRlSURzWzFdJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKSIKICAgICAgICApOwoKICAgICAgICAjIGxpbmsgJ0FsdGVybmF0aXZlIHRvJyB0ZXN0IENvbmZpZ0l0ZW1zIHRvZ2V0aGVyCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjTGlua1RvZ2V0aGVyJykudmFsKCcxJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKSIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0xpbmtUb2dldGhlckxpbmtUeXBlJykudmFsKCdDb25uZWN0ZWRUbzo6U291cmNlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKSIKICAgICAgICApOwoKICAgICAgICAjIGxpbmsgdGhpcmQgdGVzdCBDb25maWdJdGVtIGFzIHBhcnQgb2YgZmlyc3QgdHdvCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTGlua1RvZ2V0aGVyQW5vdGhlciIsICdjc3MnICktPnNlbmRfa2V5cyggJENvbmZpZ0l0ZW1zWzJdLT57Q29uZmlnSXRlbU51bWJlcn0gKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNMaW5rVHlwZScpLnZhbCgnSW5jbHVkZXM6OlRhcmdldCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiCiAgICAgICAgKTsKCiAgICAgICAgIyRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0xpbmtUeXBlIG9wdGlvblt2YWx1ZT0nSW5jbHVkZXM6OlRhcmdldCddIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgIyBTdWJtaXQgYnVsayBjaGFuZ2VzCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjc3VibWl0UmljaFRleHQiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIFN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDEgKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMF0gKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBmaXJzdCBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMgem9vbSB2aWV3LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1zWzFdLT57SUR9IgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZm9yIG90aGVyIHR3byBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgIyBWZXJpZnkgdGhhdCBsaW5rIGFjdGlvbiBpbiBidWxrIHNjcmVlbiB3YXMgc3VjY2Vzcy4KICAgICAgICBteSAkQ291bnQgPSAxOwogICAgICAgIElURU06CiAgICAgICAgZm9yIG15ICRDaGVja0NvbmZpZ0l0ZW0gKEBDb25maWdJdGVtcykgewoKICAgICAgICAgICAgbmV4dCBJVEVNIGlmICRDb25maWdJdGVtc1sxXS0+e0NvbmZpZ0l0ZW1OdW1iZXJ9ID09ICRDaGVja0NvbmZpZ0l0ZW0tPntDb25maWdJdGVtTnVtYmVyfTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICAgICAiLy9hW1xAY2xhc3M9XCdBc0Jsb2NrIExpbmtPYmplY3RMaW5rXCddW2NvbnRhaW5zKC4sXCckQ2hlY2tDb25maWdJdGVtLT57Q29uZmlnSXRlbU51bWJlcn1cJyldIgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbnVtYmVyICRDaGVja0NvbmZpZ0l0ZW0tPntDb25maWdJdGVtTnVtYmVyfSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAkREI6OnNpbmdsZSA9IDE7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9kaXZbXEBjbGFzcz0nVmFsdWUnIGFuZCBcQHRpdGxlPSdSZXBhaXInXSIpLAogICAgICAgICAgICAiRGVwbG95bWVudCBzdGF0ZSBpcyBSZXBhaXIuIiwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtRGVsZXRlIChAQ29uZmlnSXRlbXMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbURlbGV0ZS0+e0lEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZyBpdGVtIGlzIGRlbGV0ZWQgLSBJRCAkQ29uZmlnSXRlbURlbGV0ZS0+e0lEfSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQopOwoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemDuplicate.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIFRlc3QyOjpWMDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0cwogICAgICAgIG15ICRIZWxwZXIgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJElUU01Db25maWdJdGVtSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicpOwogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgICRJVFNNQ29uZmlnSXRlbUhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgICAgICAgICBIZWxwZXJPYmplY3QgPT4gJEhlbHBlcgogICAgICAgICk7CgogICAgICAgICMgR2V0ICdIYXJkd2FyZScgY2F0YWxvZyBjbGFzcyBJRHMuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAnSGFyZHdhcmUnLAogICAgICAgICk7CiAgICAgICAgbXkgJEhhcmR3YXJlQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSURzLgogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQgPSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYtPntJdGVtSUR9OwoKICAgICAgICAjIHNldCBOYW1lIHVwZGF0ZSBhcyBhIHZlcnNpb24gdHJpZ2dlcmluZyBldmVudAogICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgS2V5ICAgID0+ICdWZXJzaW9uVHJpZ2dlcicsCiAgICAgICAgICAgIFZhbHVlICA9PiBbJ05hbWUnXQogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVyLgogICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICJDb25maWdJdGVtIG51bWJlciBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OdW1iZXIiCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1NlbGVuaXVtIFRlc3QnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEIgogICAgICAgICk7CgogICAgICAgICMgQWRkIGEgbmV3IHZlcnNpb24uCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gJ0hhcmR3YXJlJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1Ob3RlID0gJ1NvbWUgU2VsZW5pdW0gdGVzdCBub3RlJzsKICAgICAgICAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0hhcmR3YXJlLU5vdGUnID0+ICRDb25maWdJdGVtTm90ZSwKICAgICAgICApOwogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH0sCiAgICAgICAgICAgICJWZXJzaW9uIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9IgogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtWm9vbSBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEIgogICAgICAgICk7CgogICAgICAgICMgR2V0IENvbmZpZ0l0ZW0gdmFsdWUgcGFyYW1zLgogICAgICAgIG15IEBDb25maWdJdGVtVmFsdWVzID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAnSGFyZHdhcmUnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ3AuVmFsdWU6Y29udGFpbnMoSGFyZHdhcmUpJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gImgxOmNvbnRhaW5zKCRDb25maWdJdGVtTmFtZSkiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkQ29uZmlnSXRlbU5vdGUsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAicDpjb250YWlucygkQ29uZmlnSXRlbU5vdGUpIiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIENvbmZpZ0l0ZW0gdmFsdWVzIG9uIHNjcmVlbgogICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtVmFsdWUgKEBDb25maWdJdGVtVmFsdWVzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCckQ2hlY2tDb25maWdJdGVtVmFsdWUtPntDaGVja30nKS5sZW5ndGg7IgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gdmFsdWUgJENoZWNrQ29uZmlnSXRlbVZhbHVlLT57VmFsdWV9IC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDbGljayBvbiAnRHVwbGljYXRlJyBtZW51IGl0ZW0gYW5kIHN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0R1cGxpY2F0ZUlEPSRDb25maWdJdGVtSUQ7VmVyc2lvbklEPSRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH1cJyApXSIKICAgICAgICApLT5jbGljaygpOwoKICAgICAgICAjIHN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKTsKICAgICAgICBteSAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgd2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeQogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIjRGVwbFN0YXRlSUQiKS5sZW5ndGg7JyApOwoKICAgICAgICAjIEdldCBkdXBsaWNhdGVkIENvbmZpZ0l0ZW0gdmFsdWUgcGFyYW1zLgogICAgICAgIG15IEBEdXBsaWNhdGVkQ29uZmlnSXRlbVZhbHVlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICBFeHBlY3RlZFZhbHVlID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICA9PiAnRGVwbFN0YXRlSUQnLAogICAgICAgICAgICAgICAgRXhwZWN0ZWRWYWx1ZSA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgID0+ICdJbmNpU3RhdGVJRCcsCiAgICAgICAgICAgICAgICBFeHBlY3RlZFZhbHVlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgPT4gJ0R5bmFtaWNGaWVsZF9IYXJkd2FyZS1Ob3RlJywKICAgICAgICAgICAgICAgIEV4cGVjdGVkVmFsdWUgPT4gJENvbmZpZ0l0ZW1Ob3RlLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZHVwbGljYXRlZCBDb25maWdJdGVtIHZhbHVlcyBvbiBzY3JlZW4KICAgICAgICBmb3IgbXkgJENoZWNrQ29uZmlnSXRlbVZhbHVlIChARHVwbGljYXRlZENvbmZpZ0l0ZW1WYWx1ZXMpIHsKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJENoZWNrQ29uZmlnSXRlbVZhbHVlLT57T2JqZWN0SUR9IiwgJ2NzcycgKS0+Z2V0X3ZhbHVlKCksCiAgICAgICAgICAgICAgICAkQ2hlY2tDb25maWdJdGVtVmFsdWUtPntFeHBlY3RlZFZhbHVlfSwKICAgICAgICAgICAgICAgICIjJENoZWNrQ29uZmlnSXRlbVZhbHVlLT57T2JqZWN0SUR9IHN0b3JlZCB2YWx1ZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEVkaXQgbmFtZSBmb3IgZHVwbGljYXRlIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICBteSAkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUgPSAiRHVwbGljYXRlIiAuICRDb25maWdJdGVtTmFtZTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOYW1lIiwgJ2NzcycgKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOYW1lIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCREdXBsaWNhdGVDb25maWdJdGVtTmFtZSk7CgogICAgICAgICMgU2VsZWN0IGN1cnJlbnQgZGF0ZSBhcyB0aGUgaW5zdGFsbGF0aW9uIGRhdGUuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vKltjb250YWlucyhcQG5hbWUsIFwnRHluYW1pY0ZpZWxkX0hhcmR3YXJlLUluc3RhbGxEYXRlVXNlZFwnICldIiktPmNsaWNrKCk7CgogICAgICAgIHNsZWVwIDI7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J1N1Ym1pdCddW1xAdHlwZT0nc3VibWl0J10iKS0+Y2xpY2soKTsKCiAgICAgICAgIyBTd2l0Y2ggYmFjayB0byB6b29tIHZpZXcuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAxICk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzBdICk7CgogICAgICAgICMgV2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKENvcmUpID09ICJvYmplY3QiICYmIHR5cGVvZihDb3JlLkFwcCkgPT0gIm9iamVjdCIgJiYgQ29yZS5BcHAuUGFnZUxvYWRDb21wbGV0ZTsnCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdoMTpjb250YWlucygkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUpJykubGVuZ3RoOyIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBkdXBsaWNhdGVkIENvbmZpZ0l0ZW0gdmFsdWUuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCdoMTpjb250YWlucygkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUpJykubGVuZ3RoOyIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSB2YWx1ZSAkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW1zLgogICAgICAgIGZvciAoIDEgLi4gMiApIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG9rKCAkU3VjY2VzcywgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtSUQiICk7CiAgICAgICAgICAgICRDb25maWdJdGVtSUQrKzsKICAgICAgICB9CiAgICB9Cik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemEdit.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKI3VzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRDSUhlbHBlciAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAgICAgIyBnZXQgaGVscGVyIG9iamVjdHMKICAgICAgICAkS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAgICAgICAgICRIZWxwZXIgPT4gewogICAgICAgICAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgY29uZmlnIGl0ZW0gY2xhc3NlcwoKICAgICAgICBteSBAVGVzdCA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNsYXNzID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBDaGVja0VkaXRGaWVsZHMgPT4gWwogICAgICAgICAgICAgICAgICAgICdOYW1lJywgJ0RlcGxTdGF0ZUlEJywgJ0luY2lTdGF0ZUlEJywgJ1ZlbmRvcicsICdNb2RlbCcsICdEZXNjcmlwdGlvbicsICdUeXBlJywgJ093bmVyJywKICAgICAgICAgICAgICAgICAgICAnU2VyaWFsTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW5nU3lzdGVtJywgJ0NQVScsICdSYW0nLCAnSGFyZERpc2snLCAnQ2FwYWNpdHknLCAnRlFETicsICdEeW5hbWljRmllbGRfQ29tcHV0ZXItTklDU3ViUHJpbWFyeUF0dHJpYnV0ZScsICdQb3ZlckRIQ1AnLAogICAgICAgICAgICAgICAgICAgICdHcmFwaGljQWRhcHRlcicsCiAgICAgICAgICAgICAgICAgICAgJ090aGVyRXF1aXBtZW50JywgJ1dhcnJhbnR5RXhwaXJhdGlvbkRhdGUnLCAnSW5zdGFsbERhdGUnLCAnTm90ZScsICdGaWxlVXBsb2FkJywgJ1N1Ym1pdCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DbGFzcyA9PiAnSGFyZHdhcmUnLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdWZW5kb3InLCAnTW9kZWwnLCAnRGVzY3JpcHRpb24nLCAnVHlwZScsICdPd25lcicsCiAgICAgICAgICAgICAgICAgICAgJ1NlcmlhbE51bWJlcicsCiAgICAgICAgICAgICAgICAgICAgJ1dhcnJhbnR5RXhwaXJhdGlvbkRhdGUnLCAnSW5zdGFsbERhdGUnLCAnTm90ZScsICdGaWxlVXBsb2FkJywgJ1N1Ym1pdCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DbGFzcyA9PiAnTG9jYXRpb24nLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdUeXBlJywgJ1Bob25lMScsICdQaG9uZTInLCAnRmF4JywgJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1FTWFpbCcsICdBZGRyZXNzJywKICAgICAgICAgICAgICAgICAgICAnTm90ZScsICdGaWxlVXBsb2FkJywgICdTdWJtaXQnCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2xhc3MgPT4gJ05ldHdvcmsnLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdEZXNjcmlwdGlvbicsICdUeXBlJywgJ05ldHdvcmtBZGRyZXNzJywgJ1N1Ym5ldE1hc2snLAogICAgICAgICAgICAgICAgICAgICdHYXRld2F5JywKICAgICAgICAgICAgICAgICAgICAnTm90ZScsICdGaWxlVXBsb2FkJywgJ1N1Ym1pdCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DbGFzcyA9PiAnU29mdHdhcmUnLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdWZW5kb3InLCAnVmVyc2lvbicsICdEZXNjcmlwdGlvbicsICdUeXBlJywgJ093bmVyJywKICAgICAgICAgICAgICAgICAgICAnU2VyaWFsTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICAnTGljZW5jZVR5cGUnLCAnTGljZW5jZUtleScsICdNZWRpYScsICdOb3RlJywgJ1N1Ym1pdCcKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSUQuCiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkRGVwbFN0YXRlSUQgPSAkRGVwbFN0YXRlRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKICAgICAgICBteSAkUmFuZG9tSUQgICAgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1FZGl0IChAVGVzdCkgewoKICAgICAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtQWRkIHNjcmVlbi4KICAgICAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUFkZCIpOwoKICAgICAgICAgICAgIyBHZXQgQ29uZmlnSXRlbSBjbGFzcyBJRC4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgID0+ICRDb25maWdJdGVtRWRpdC0+e0NvbmZpZ0l0ZW1DbGFzc30sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtQ2xhc3NJRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdhW2hyZWYqPVwiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NsYXNzSUQ9JENvbmZpZ0l0ZW1DbGFzc0lEXCJdJykubGVuZ3RoIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBDbGljayBvbiBDb25maWdJdGVtIGNsYXNzLgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRWRpdDtDbGFzc0lEPSRDb25maWdJdGVtQ2xhc3NJRFwnICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI05hbWUnKS5sZW5ndGggJiYgXCQoJyNTdWJtaXRCdXR0b24nKS5sZW5ndGgiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENoZWNrIGZvciBDb25maWdJdGVtRWRpdCBmaWVsZHMuCiAgICAgICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtRmllbGQgKCBAeyAkQ29uZmlnSXRlbUVkaXQtPntDaGVja0VkaXRGaWVsZHN9IH0gKSB7CgogICAgICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCckQ2hlY2tDb25maWdJdGVtRmllbGRcJyApXSIpOwogICAgICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBDcmVhdGUgdGVzdCBDb25maWdJdGVtLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU5hbWUgPSAkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9IC4gJFJhbmRvbUlEOwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNOYW1lIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCRDb25maWdJdGVtTmFtZSk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgIlwkKCcjRGVwbFN0YXRlSUQnKS52YWwoJyREZXBsU3RhdGVJRCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjRGVwbFN0YXRlSUQnKS52YWwoKSA9PT0gJyREZXBsU3RhdGVJRCciCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJcJCgnI0luY2lTdGF0ZUlEJykudmFsKCcxJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKSIpOwogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjSW5jaVN0YXRlSUQnKS52YWwoKSA9PT0gJzEnIiApOwoKICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9IGVxICdDb21wdXRlcicgKSB7CgogICAgICAgICAgICAgICAgIyBHZXQgR2VuZXJhbCBDYXRhbG9nIElEIGZvciAnWWVzJy4KICAgICAgICAgICAgICAgIG15ICRZZXNEYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpZZXNObycsCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1llcycsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbXkgJFllc0lEID0gJFllc0RhdGFSZWYtPntJdGVtSUR9OwoKICAgICAgICAgICAgICAgICMgRW50ZXIgTklDIG5hbWUuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfQ29tcHV0ZXItTklDU3ViUHJpbWFyeUF0dHJpYnV0ZV8wXCcgKV0iKS0+c2VuZF9rZXlzKCdTZWxlbml1bU5ldHdvcmsnKTsKCiAgICAgICAgICAgICAgICAjIFNlbGVjdCBZZXMgZm9yIERIQ1BPdmVySVAuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJcJCgnIycgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcignRHluYW1pY0ZpZWxkX0NvbXB1dGVyLU5JQ0lQb3ZlckRIQ1BfMCcpKS52YWwoJyRZZXNJRCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIEVudGVyIE90aGVyIEVxdWlwbWVudC4KICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvLypbY29udGFpbnMoXEBuYW1lLCBcJ0R5bmFtaWNGaWVsZF9Db21wdXRlci1PdGhlckVxdWlwbWVudFwnICldIiktPnNlbmRfa2V5cygnU2VsZW5pdW0gRXF1aXBtZW50Jyk7CgogICAgICAgICAgICAgICAgIyBFbnRlciBOb3Rlcy4KICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvLypbY29udGFpbnMoXEBuYW1lLCBcJ0R5bmFtaWNGaWVsZF9Db21wdXRlci1Ob3RlXCcgKV0iKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBOb3RlcycpOwoKICAgICAgICAgICAgICAgICMgU2VsZWN0IGN1cnJlbnQgZGF0ZSBhcyB0aGUgaW5zdGFsbGF0aW9uIGRhdGUuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfQ29tcHV0ZXItSW5zdGFsbERhdGVVc2VkXCcgKV0iKS0+Y2xpY2soKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb25maWdJdGVtRWRpdC0+e0NvbmZpZ0l0ZW1DbGFzc30gZXEgJ05ldHdvcmsnICkgewogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vKltjb250YWlucyhcQG5hbWUsIFwnRHluYW1pY0ZpZWxkX05ldHdvcmstTmV0d29ya0FkZHJlc3NTdWJQcmltYXJ5QXR0cmlidXRlXzBcJyApXSIpLT5zZW5kX2tleXMoJ1NlbGVuaXVtIExBTicpOwoKICAgICAgICAgICAgICAgICMgRW50ZXIgTm90ZXMuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfTmV0d29yay1Ob3RlXCcgKV0iKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBOb3RlcycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbmZpZ0l0ZW1FZGl0LT57Q29uZmlnSXRlbUNsYXNzfSBlcSAnSGFyZHdhcmUnICkgewoKICAgICAgICAgICAgICAgICMgRW50ZXIgTm90ZXMuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfSGFyZHdhcmUtTm90ZVwnICldIiktPnNlbmRfa2V5cygnU2VsZW5pdW0gTm90ZXMnKTsKCiAgICAgICAgICAgICAgICAjIFNlbGVjdCBjdXJyZW50IGRhdGUgYXMgdGhlIGluc3RhbGxhdGlvbiBkYXRlLgogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vKltjb250YWlucyhcQG5hbWUsIFwnRHluYW1pY0ZpZWxkX0hhcmR3YXJlLUluc3RhbGxEYXRlVXNlZFwnICldIiktPmNsaWNrKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9IGVxICdMb2NhdGlvbicgKSB7CgogICAgICAgICAgICAgICAgIyBFbnRlciBOb3Rlcy4KICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvLypbY29udGFpbnMoXEBuYW1lLCBcJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1Ob3RlXCcgKV0iKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBOb3RlcycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbmZpZ0l0ZW1FZGl0LT57Q29uZmlnSXRlbUNsYXNzfSBlcSAnU29mdHdhcmUnICkgewoKICAgICAgICAgICAgICAgICMgRW50ZXIgTm90ZXMuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdEeW5hbWljRmllbGRfU29mdHdhcmUtTm90ZVwnICldIiktPnNlbmRfa2V5cygnU2VsZW5pdW0gTm90ZXMnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nU3VibWl0J11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnaDE6Y29udGFpbnMoJENvbmZpZ0l0ZW1OYW1lKScpLmxlbmd0aCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgR2V0IENvbmZpZ0l0ZW0gdmFsdWUuCiAgICAgICAgICAgIG15IEBDb25maWdJdGVtVmFsdWVzID0gKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgICAgICAgICBDaGVjayAgICAgICA9PiAiaDE6Y29udGFpbnMoJENvbmZpZ0l0ZW1OYW1lKSIsCiAgICAgICAgICAgICAgICAgICAgQ2hlY2tSZXN1bHQgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgPT4gJENvbmZpZ0l0ZW1FZGl0LT57Q29uZmlnSXRlbUNsYXNzfSwKICAgICAgICAgICAgICAgICAgICBDaGVjayAgICAgICA9PiAicC5WYWx1ZTpjb250YWlucygkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9KSIsCiAgICAgICAgICAgICAgICAgICAgQ2hlY2tSZXN1bHQgPT4gMiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENoZWNrIHN1Ym1pdHRlZCB2YWx1ZXMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20gc2NyZWVuLgogICAgICAgICAgICBmb3IgbXkgJENoZWNrQ29uZmlnSXRlbVZhbHVlIChAQ29uZmlnSXRlbVZhbHVlcykgewogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnJENoZWNrQ29uZmlnSXRlbVZhbHVlLT57Q2hlY2t9JykubGVuZ3RoID09PSAkQ2hlY2tDb25maWdJdGVtVmFsdWUtPntDaGVja1Jlc3VsdH0iCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAiVGVzdCBDb25maWdJdGVtIHZhbHVlICRDaGVja0NvbmZpZ0l0ZW1WYWx1ZS0+e1ZhbHVlfSAtIGZvdW5kIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgR2V0IENvbmZpZ0l0ZW1JRC4KICAgICAgICAgICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJwogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIEBDb25maWdJdGVtSURzLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gZm91bmQgZm9yIGRlbGV0aW9uIC0gSUQgJENvbmZpZ0l0ZW1JRHNbMF0iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW0uCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRHNbMF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGRlbGV0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEc1swXSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQopOwoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemHistory.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgojIGdldCBzZWxlbml1bSBvYmplY3QKbXkgJFNlbGVuaXVtID0gS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bS0+bmV3OwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgIyBnZXQgaGVscGVyIG9iamVjdHMKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICAkS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAgICAgICAgICRIZWxwZXIgPT4gewogICAgICAgICAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICAgICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICAgICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAgICAgIyBnZXQgY2F0YWxvZyBjbGFzcyBJRHMKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXItPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgICAgICAgICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIKICAgICAgICApOwoKICAgICAgICAjIEdldCAnSGFyZHdhcmUnIGNhdGFsb2cgY2xhc3MgSURzLgogICAgICAgIG15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0hhcmR3YXJlJywKICAgICAgICApOwogICAgICAgIG15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICMgR2V0ICdQcm9kdWN0aW9uJyBkZXBsb3ltZW50IHN0YXRlIElEcy4KICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlEID0gJFByb2R1Y3Rpb25EZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBzZXQgTmFtZSB1cGRhdGUgYXMgYSB2ZXJzaW9uIHRyaWdnZXJpbmcgZXZlbnQKICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgICAgICBWYWx1ZSAgPT4gWydOYW1lJ10KICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICk7CgogICAgICAgICMgQWRkIHRoZSBuZXcgQ29uZmlnSXRlbS4KICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIE51bWJlciAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdTZWxlbml1bSBUZXN0JywKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBjcmVhdGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIKICAgICAgICApOwogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgbXkgJEZpcnN0VmVyc2lvbklEID0gJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfTsKCiAgICAgICAgIyBBZGQgYSBuZXcgdmVyc2lvbi4KICAgICAgICBteSAkQ29uZmlnSXRlbU5hbWUgPSAnSGFyZHdhcmUnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkQ29uZmlnSXRlbU5vdGUgPSAnU29tZSBTZWxlbml1bSB0ZXN0IG5vdGUnOwogICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICdEeW5hbWljRmllbGRfSGFyZHdhcmUtTm90ZScgPT4gJENvbmZpZ0l0ZW1Ob3RlLAogICAgICAgICk7CiAgICAgICAgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICBteSAkU2Vjb25kVmVyc2lvbklEID0gJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWNvbmRWZXJzaW9uSUQsCiAgICAgICAgICAgICJWZXJzaW9uIGlzIGNyZWF0ZWQgLSBJRCAkU2Vjb25kVmVyc2lvbklEIgogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdGVzdCB1c2VyIElECiAgICAgICAgbXkgJFRlc3RVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIGNoZWNrIGZvciBlcnJvciBtZXNzYWdlIHdoZW4gbm8gQ29uZmlnSXRlbUlEIGlzIHByb3ZpZGVkIGluIGhpc3Rvcnkgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkiKTsKCiAgICAgICAgbXkgJEVycm9yTWVzc2FnZU5vSUQgPSAnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISc7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkRXJyb3JNZXNzYWdlTm9JRCApID4gLTEsCiAgICAgICAgICAgICJFcnJvciBtZXNzYWdlICRFcnJvck1lc3NhZ2VOb0lEIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIGhpc3RvcnkgbWVzc2FnZXMgbGlzdAogICAgICAgIG15IEBIaXN0b3J5TWVzc2FnZXMgPSAoCiAgICAgICAgICAgICJOZXcgQ29uZmlnSXRlbSAoSUQ9JENvbmZpZ0l0ZW1JRCkiLAogICAgICAgICAgICAiTmV3IHZlcnNpb24gKElEPSRGaXJzdFZlcnNpb25JRCIsCiAgICAgICAgICAgICJOZXcgdmVyc2lvbiAoSUQ9JFNlY29uZFZlcnNpb25JRCIsCiAgICAgICAgICAgICJBdHRyaWJ1dGUgSGFyZHdhcmUtTm90ZSB1cGRhdGVkIGZyb20gXCJcIiB0byBcIlNvbWUgU2VsZW5pdW0gdGVzdCBub3RlXCIiLAogICAgICAgICAgICAiTmFtZSB1cGRhdGVkIChuZXc9JENvbmZpZ0l0ZW1OYW1lLCBvbGQ9U2VsZW5pdW0gVGVzdCkiLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZm9yIGhpc3RvcnkgbWVzc2FnZXMgaW4gaGlzdG9yeSBzY3JlZW4gb2YgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW0KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk7Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtSUQiCiAgICAgICAgKTsKCiAgICAgICAgJERCOjpzaW5nbGUgPSAxOwoKICAgICAgICBmb3IgbXkgJEhpc3RvcnlNZXNzYWdlIChASGlzdG9yeU1lc3NhZ2VzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRIaXN0b3J5TWVzc2FnZSApID4gLTEsCiAgICAgICAgICAgICAgICAiSGlzdG9yeSBtZXNzYWdlICRIaXN0b3J5TWVzc2FnZSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICREQjo6c2luZ2xlID0gMTsKCiAgICAgICAgIyByZW1vdmUgaXRzbS1jb25maWdpdGVtICdybycgYWNjZXNzIHJpZ2h0IGZvciB0ZXN0IHVzZXIKICAgICAgICAjIGdldCBncm91cCBvYmplY3QKICAgICAgICBteSAkR3JvdXBPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICAgICAgIyBnZXQgJ2l0c20tY29uZmlnaXRlbScgZ3JvdXAgSUQKICAgICAgICBteSAkSVRTTUNvbmZpZ0l0ZW1Hcm91cElEID0gJEdyb3VwT2JqZWN0LT5Hcm91cExvb2t1cCgKICAgICAgICAgICAgR3JvdXAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgKTsKCiAgICAgICAgIyByZW1vdmUgYWNjZXNzIHJpZ2h0cyB0byB0ZXN0IHVzZXIKICAgICAgICAkR3JvdXBPYmplY3QtPkdyb3VwTWVtYmVyQWRkKAogICAgICAgICAgICBHSUQgICAgICAgID0+ICRJVFNNQ29uZmlnSXRlbUdyb3VwSUQsCiAgICAgICAgICAgIFVJRCAgICAgICAgPT4gJFRlc3RVc2VySUQsCiAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gewogICAgICAgICAgICAgICAgcm8gPT4gMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBmb3IgZXJyb3IgbWVzc2FnZSB3aGVuIHVzZXIgaGF2ZSBubyBhY2Nlc3MgcmlnaHRzIGluIGhpc3Rvcnkgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5O0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEIgogICAgICAgICk7CgogICAgICAgIG15ICRFcnJvck1lc3NhZ2VOb1Blcm1pc3Npb24gPSAnTm8gUGVybWlzc2lvbiB0byB1c2UgdGhpcyBmcm9udGVuZCBtb2R1bGUhJzsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRFcnJvck1lc3NhZ2VOb1Blcm1pc3Npb24gKSA+IC0xLAogICAgICAgICAgICAiRXJyb3IgbWVzc2FnZSAkRXJyb3JNZXNzYWdlTm9QZXJtaXNzaW9uIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIsCiAgICAgICAgKTsKICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemPrint.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgojIHNvbWUgc2V0dXAgYmVmb3JlIHN0YXJ0aW5nIHRoZSBTZWxlbml1bSB0ZXN0CnNraXBfYWxsKCdTa2lwcGluZyBDTURCIFNlbGVuaXVtIHRlc3RzIHRlbXBvcmFyaWx5LicpOwoKb3VyICRTZWxmOwoKbXkgJFNlbGVuaXVtID0gS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bS0+bmV3OwoKaWYgKCAkU2VsZW5pdW0tPnticm93c2VyX25hbWV9IG5lICdmaXJlZm94JyApIHsKICAgICRTZWxmLT5UcnVlKAogICAgICAgIDEsCiAgICAgICAgIlBERiB0ZXN0IGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIEZpcmVmb3giLAogICAgKTsKICAgIHJldHVybiAxOwp9CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICMgR2V0ICdIYXJkd2FyZScgY2F0YWxvZyBjbGFzcyBJRHMuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAnSGFyZHdhcmUnLAogICAgICAgICk7CiAgICAgICAgbXkgJEhhcmR3YXJlQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSURzLgogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQgPSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYtPntJdGVtSUR9OwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICk7CgogICAgICAgICMgQWRkIHRoZSBuZXcgQ29uZmlnSXRlbS4KICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgYSBuZXcgdmVyc2lvbi4KICAgICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnU2VsZW5pdW1UZXN0JywKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+IDEsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRWZXJzaW9uSUQsCiAgICAgICAgICAgICJWZXJzaW9uIGlzIGNyZWF0ZWQgLSBJRCAkVmVyc2lvbklEIgogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU0NvbmZpZ0l0ZW1ab29tIHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1JRCIpOwoKICAgICAgICAjIENoZWNrIGlmIHRoZXJlIGlzIHRoZSBsaW5rIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludCBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJ2FbaHJlZio9XCJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVByaW50O0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEXCJdJykubGVuZ3RoOyIKICAgICAgICApOwoKICAgICAgICAjIEdvIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludCBzY3JlZW4gZm9yIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICAkU2VsZW5pdW0tPmdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludDtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1JRDtWZXJzaW9uSUQ9JFZlcnNpb25JRCIKICAgICAgICApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcHJpbnQgc2NyZWVuIGlzIGxvYWRlZC4KICAgICAgICBBQ1RJVkVTTEVFUDoKICAgICAgICBmb3IgbXkgJFNlY29uZCAoIDEgLi4gMzAgKSB7CiAgICAgICAgICAgIGlmICggaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlLCAncHJpbnRlZCBieScgKSA+IC0xLCApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAicHJpbnRlZCBieSIgKSA+IC0xLAogICAgICAgICAgICAgICAgICAgICJQcmludCBzY3JlZW4gaXMgbG9hZGVkIGFmdGVyICRTZWNvbmQgc2Vjb25kcyIsCiAgICAgICAgICAgICAgICApIHx8IGRpZTsKCiAgICAgICAgICAgICAgICBsYXN0IEFDVElWRVNMRUVQOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHNsZWVwIDE7CiAgICAgICAgfQoKICAgICAgICAjIEdldCB0ZXN0IHByaW50IHZhbHVlcy4KICAgICAgICBteSBAQ29uZmlnSXRlbVByaW50ID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSAgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiQ29uZmlnSXRlbSMgJENvbmZpZ0l0ZW1OdW1iZXIgLSBmb3VuZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlICAgPT4gJ1NlbGVuaXVtVGVzdCcsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJDb25maWdJdGVtOiBTZWxlbml1bVRlc3QgLSBmb3VuZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlICAgPT4gJ0hhcmR3YXJlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIkNsYXNzOiBIYXJkd2FyZSAtIGZvdW5kIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmFsdWUgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJDdXJyZW50IERlcGxveW1lbnQgU3RhdGU6IFByb2R1Y3Rpb24gLSBmb3VuZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIkN1cnJlbnQgSW5jaWRlbnQgU3RhdGU6IE9wZXJhdGlvbmFsIC0gZm91bmQiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSAgID0+ICdWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiQ3VycmVudCBWZXJzaW9uOiBWZXJzaW9uIDEgLSBmb3VuZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBmb3IgcHJpbnRlZCB2YWx1ZXMuCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtVmFsdWUgKEBDb25maWdJdGVtUHJpbnQpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJENvbmZpZ0l0ZW1WYWx1ZS0+e1ZhbHVlfSApID4gLTEsCiAgICAgICAgICAgICAgICAiJENvbmZpZ0l0ZW1WYWx1ZS0+e01lc3NhZ2V9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtLgogICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtSUQiLAogICAgICAgICk7CiAgICB9Cik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemSearch.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0cwogICAgICAgIG15ICRIZWxwZXIgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CiAgICAgICAgbXkgJElUU01Db25maWdJdGVtSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbUhlbHBlcicpOwogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgICRJVFNNQ29uZmlnSXRlbUhlbHBlci0+VGVzdENvbmZpZ0l0ZW1DcmVhdGVMZWdhY3lDbGFzc2VzKAogICAgICAgICAgICBIZWxwZXJPYmplY3QgPT4gJEhlbHBlcgogICAgICAgICk7CgogICAgICAgICMgR2V0ICdDb21wdXRlcicgQ29uZmlnSXRlbSBJRC4KICAgICAgICBteSBAQ29uZmlnSXRlbUNsYXNzSURzOwogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNsYXNzIChxdyhDb21wdXRlcikpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgID0+ICRDb25maWdJdGVtQ2xhc3MsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc0lEcywgJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICB9CgogICAgICAgICMgR2V0ICdQcm9kdWN0aW9uJyBkZXBsb3ltZW50IHN0YXRlIElEcy4KICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlEID0gJFByb2R1Y3Rpb25EZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBudW1iZXJzLgogICAgICAgIG15IEBDb25maWdJdGVtTnVtYmVyczsKICAgICAgICBmb3IgKCAxIC4uIDIgKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCcsCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSAkQ29uZmlnSXRlbU51bWJlciBudW1iZXIgaXMgY3JlYXRlZCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbU51bWJlcnMsICRDb25maWdJdGVtTnVtYmVyOwogICAgICAgIH0KCiAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtcy4KICAgICAgICBteSAkSW5jaVN0YXRlSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0luY2lkZW50JywKICAgICAgICApOwoKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgICAgICBteSAkQ291bnQgICAgPSAxOwogICAgICAgIG15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ3JlYXRlTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1DcmVhdGVOdW1iZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICRDb3VudCAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCA9PiAkSW5jaVN0YXRlSUQtPntJdGVtSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEIGlzIGNyZWF0ZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCIpOwoKICAgICAgICAjIFdhaXQgdW50aWwgZm9ybSBhbmQgb3ZlcmxheSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaENsYXNzSUQnKS5sZW5ndGgiICk7CgogICAgICAgICMgQ2hlY2sgZm9yICdDbGFzcycgbGFiZWwuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnbGFiZWxbZm9yPVwiQ2xhc3NcIl0nKS5sZW5ndGgiKSwKICAgICAgICAgICAgIkNsYXNzIGxhYmVsIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZm9yICdDbGFzcycgc2VsZWN0IGJveC4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoQ2xhc3NJRCIsICdjc3MnICksCiAgICAgICAgICAgICJDbGFzcyBzZWxlY3QgYm94IC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgQmUgc3VyZSBtb2Rlcm5pemVkIGZpZWxkIGhhcyBsb2FkZWQuCiAgICAgICAgc2xlZXAgMTsKCiAgICAgICAgIyBTZWxlY3QgJ0NvbXB1dGVyJyBjbGFzcy4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hDbGFzc0lEJykudmFsKCckQ29uZmlnSXRlbUNsYXNzSURzWzBdJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgIyBCZSBzdXJlIGFsbCBmaWVsZHMgYXJlIGxvYWRlZC4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI1NlYXJjaEZvcm1TdWJtaXQiKS5sZW5ndGg7JywKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIENvbmZpZ0l0ZW0gc2VhcmNoIHBhZ2UuCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KFNlYXJjaENsYXNzSUQgU2VhcmNoUHJvZmlsZSBTZWFyY2hQcm9maWxlTmV3IEF0dHJpYnV0ZSBQcmV2aW91c1ZlcnNpb25TZWFyY2ggUmVzdWx0Rm9ybSBTZWFyY2hGb3JtU3VibWl0KQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBzbGVlcCAxOwogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjJElEJykubGVuZ3RoIiApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjJElEJykubGVuZ3RoOyIpLAogICAgICAgICAgICAgICAgIkVsZW1lbnQgaXMgZm91bmQgLSAkSUQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayBpZiBJVFNNQ2hhbmdlIFNlYXJjaCBmb3JtIGNvbnRhaW4gRXhjZWwgb3V0cHV0IG9wdGlvbiwgc2VlIGJ1ZyMxMjc2OS4KICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjUmVzdWx0Rm9ybSBvcHRpb246Y29udGFpbnMoXCJFeGNlbFwiKScpLmxlbmd0aCIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJzEnLAogICAgICAgICAgICAnSVRTTUNvbmZpZ0l0ZW0gU2VhcmNoIGNvbnRhaW4gRXhjZWwgb3V0cHV0JywKICAgICAgICApOwoKICAgICAgICAjIHNldCB0aGUgZGVmYXVsdCBzb3J0IGJ5IG51bWJlciBkZXNjCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NvcnRCeTo6RGVmYXVsdCcsCiAgICAgICAgICAgIFZhbHVlID0+ICdOdW1iZXInLAogICAgICAgICk7CgogICAgICAgICMgU2VhcmNoIENvbmZpZ0l0ZW1zIGJ5IHRlc3QgQ29uZmlnSXRlbSBudW1iZXIgYW5kIG5hbWVzLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjQXR0cmlidXRlJykudmFsKCdOYW1lJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjU2VhcmNoSW5zZXJ0IGlucHV0W25hbWU9XCJOYW1lXCJdJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTnVtYmVyJ10iKS0+c2VuZF9rZXlzKCcqJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOYW1lJ10iKS0+c2VuZF9rZXlzKCAnKicgLiAkUmFuZG9tSUQgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoRm9ybVN1Ym1pdCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgIVwkKCdEaWFsb2cuTW9kYWwnKS5sZW5ndGggJiYgXCQoJyNPdmVydmlld0JvZHkgLlRhYmxlU21hbGwnKS5sZW5ndGgiCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBmb3IgZXhwZWN0ZWQgcmVzdWx0LgogICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNPdmVydmlld0JvZHkgLlRhYmxlU21hbGwgdGQ6Y29udGFpbnMoJENoZWNrQ29uZmlnSXRlbSknKS5sZW5ndGgiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gJENoZWNrQ29uZmlnSXRlbSBudW1iZXIgaXMgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBWZXJpZnkgc29ydGluZyBpbiB0YWJsZSwgYnkgZGVmYXVsdCBzb3J0aW5nIGlzIGRvbmUgYnkgQ29uZmlnSXRlbU51bWJlciAtIHNvcnQgZGVzY2VuZGluZy4KICAgICAgICAjIExvd2VyIElEIHdpbGwgb24gdGhlIGJvdHRvbiBvZiB0YWJsZS4KICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgndGJvZHkgdHI6ZXEoMCknKS5hdHRyKCdpZCcpIiksCiAgICAgICAgICAgICdDb25maWdJdGVtSURfJyAuICRDb25maWdJdGVtSURzWzFdLAogICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSURzWzFdIGlzIG9uIHRvcCBvZiB0YWJsZSBzb3J0IGJ5IE51bWJlciBhc2NlbmRpbmciCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKDEpJykuYXR0cignaWQnKSIpLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEXycgLiAkQ29uZmlnSXRlbUlEc1swXSwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEc1swXSBpcyBvbiBib3R0b20gb2YgdGFibGUgc29ydCBieSBOdW1iZXIgYXNjZW5kaW5nIgogICAgICAgICk7CgogICAgICAgICMgQ2xpY2sgdG8gc29ydCBieSBOYW1lLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiLk5hbWUiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgZm9yIGV4cGVjdGVkIHJlc3VsdC4KICAgICAgICBmb3IgbXkgJENoZWNrQ29uZmlnSXRlbSAoQENvbmZpZ0l0ZW1OdW1iZXJzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIHRkOmNvbnRhaW5zKCRDaGVja0NvbmZpZ0l0ZW0pJykubGVuZ3RoIgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtICRDaGVja0NvbmZpZ0l0ZW0gbnVtYmVyIGlzIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgU29ydCBpcyBieSBOYW1lIGRlc2NlbmRpbmcuCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKDApJykuYXR0cignaWQnKSIpLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEXycgLiAkQ29uZmlnSXRlbUlEc1sxXSwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEc1sxXSBpcyBvbiB0b3Agb2YgdGFibGUgc29ydCBieSBOYW1lIGRlc2NlbmRpbmciCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKDEpJykuYXR0cignaWQnKSIpLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEXycgLiAkQ29uZmlnSXRlbUlEc1swXSwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEc1swXSBpcyBvbiBib3R0b20gb2YgdGFibGUgc29ydCBieSBOYW1lIGRlc2NlbmRpbmciCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayB0byBzb3J0IGJ5IE5hbWUgYWdhaW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIuTmFtZSIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBWZXJpZnkgb3JkZXIgaXMgY2hhbmdlZCwgc29ydCBieSBOYW1lIGFzY2VuZGluZy4KICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgndGJvZHkgdHI6ZXEoMCknKS5hdHRyKCdpZCcpIiksCiAgICAgICAgICAgICdDb25maWdJdGVtSURfJyAuICRDb25maWdJdGVtSURzWzBdLAogICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSURzWzBdIGlzIG9uIHRvcCBvZiB0YWJsZSBzb3J0IGJ5IE5hbWUgYXNjZW5kaW5nIgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKDEpJykuYXR0cignaWQnKSIpLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEXycgLiAkQ29uZmlnSXRlbUlEc1sxXSwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEc1sxXSBpcyBvbiBib3R0b20gb2YgdGFibGUgc29ydCBieSBOYW1lIGFzY2VuZGluZyIKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlcnMgYW5kIGFkZCB0aGUgbmV3IENvbmZpZ0l0ZW1zLgogICAgICAgIG15ICVEeW5hbWljRmllbGQxID0gKAogICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0NvbXB1dGVyLU5JQycgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICdDb21wdXRlci1OSUNTdWJQcmltYXJ5QXR0cmlidXRlJyA9PiAnVGVzdCBuZXR3b3JrIGFkYXB0ZXInLAogICAgICAgICAgICAgICAgICAgICdDb21wdXRlci1OSUNJUEFkZHJlc3MnICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICcxNzIuMC4wLjAnCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAnQ29tcHV0ZXItTklDSVBvdmVyREhDUCcgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAzMgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlJyA9PiAnMjAxNy0xMC0xMCAwMDowMDowMCcKICAgICAgICApOwogICAgICAgIG15ICVEeW5hbWljRmllbGQyID0gKAogICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0NvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGUnID0+ICcyMDE3LTExLTExIDAwOjAwOjAwJwogICAgICAgICk7CgogICAgICAgIEBDb25maWdJdGVtTnVtYmVycyA9ICgpOwogICAgICAgICRDb3VudCAgICAgICAgICAgICA9IDE7CiAgICAgICAgZm9yICggMSAuLiAzNSApIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtICRDb25maWdJdGVtTnVtYmVyIG51bWJlciBpcyBjcmVhdGVkIgogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtTnVtYmVycywgJENvbmZpZ0l0ZW1OdW1iZXI7CiAgICAgICAgICAgIG15ICVEeW5hbWljRmllbGQgPSAoICRDb3VudCA8PSAzMCApID8gJUR5bmFtaWNGaWVsZDEgOiAlRHluYW1pY0ZpZWxkMjsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJENvdW50IC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVJRC0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgJUR5bmFtaWNGaWVsZCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEIGlzIGNyZWF0ZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIGR5bmFtaWMgZmllbGRzIGFzIHNlYXJjaGFibGUKICAgICAgICBteSAlU2VhcmNoYWJsZUZpZWxkc1N5c0NvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKS0+U2V0dGluZ0dldCgKICAgICAgICAgICAgTmFtZSA9PiAnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRHluYW1pY0ZpZWxkJywKICAgICAgICApOwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEeW5hbWljRmllbGQnLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAnQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZScgPT4gJzEnLAogICAgICAgICAgICAgICAgJ0NvbXB1dGVyLU5JQ0lQQWRkcmVzcycgICAgICAgICAgID0+ICcxJywKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgICMgQ2hhbmdlIHNlYXJjaCBvcHRpb24uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjSVRTTUNvbmZpZ0l0ZW1TZWFyY2giLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIFdhaXQgdW50aWwgZm9ybSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gXCQoJyNBdHRyaWJ1dGUnKS5sZW5ndGgiICk7CgogICAgICAgICMgQWRkIHNlYXJjaCBmaWx0ZXIgYnkgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSBhbmQgc2V0IGRhdGUgcmFuZ2UgKDgtMTAtMjAxNyAtIDE1LTEwLTIwMTcpLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0F0dHJpYnV0ZScpLnZhbCgnU2VhcmNoX0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlVGltZVNsb3QnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnaW5wdXRbbmFtZT1cIlNlYXJjaF9EeW5hbWljRmllbGRfQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZVRpbWVTbG90XCJdJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1NlYXJjaEluc2VydCBzZWxlY3RbaWQ9XCJTZWFyY2hfRHluYW1pY0ZpZWxkX0NvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGVUaW1lU2xvdFN0YXJ0RGF5XCJdJykudmFsKCc4Jyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjU2VhcmNoSW5zZXJ0IHNlbGVjdFtpZD1cIlNlYXJjaF9EeW5hbWljRmllbGRfQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZVRpbWVTbG90U3RhcnRNb250aFwiXScpLnZhbCgnMTAnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hJbnNlcnQgc2VsZWN0W2lkPVwiU2VhcmNoX0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlVGltZVNsb3RTdGFydFllYXJcIl0nKS52YWwoJzIwMTcnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hJbnNlcnQgc2VsZWN0W2lkPVwiU2VhcmNoX0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlVGltZVNsb3RTdG9wRGF5XCJdJykudmFsKCcxNScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1NlYXJjaEluc2VydCBzZWxlY3RbaWQ9XCJTZWFyY2hfRHluYW1pY0ZpZWxkX0NvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGVUaW1lU2xvdFN0b3BNb250aFwiXScpLnZhbCgnMTAnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hJbnNlcnQgc2VsZWN0W2lkPVwiU2VhcmNoX0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlVGltZVNsb3RTdG9wWWVhclwiXScpLnZhbCgnMjAxNycpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTnVtYmVyJ10iKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J051bWJlciddIiktPnNlbmRfa2V5cygnKicpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTmFtZSddIiktPmNsZWFyKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOYW1lJ10iKS0+c2VuZF9rZXlzKCAnKicgLiAkUmFuZG9tSUQgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoRm9ybVN1Ym1pdCIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmICFcJCgnRGlhbG9nLk1vZGFsJykubGVuZ3RoICYmIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJy5QYWdpbmF0aW9uJykudGV4dCgpLnRyaW0oKS5pbmRleE9mKCcxLTI1IG9mIDMwJykgPiAtMTsiKSwKICAgICAgICAgICAgIkNoZWNrIHBhZ2luYXRpb24gb24gdGhlIGZpcnN0IHBhZ2UiLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIHRib2R5IHRyJykubGVuZ3RoOyIpLAogICAgICAgICAgICAnMjUnLAogICAgICAgICAgICAiTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyBvbiB0aGUgZmlyc3QgcGFnZSBpcyBjb3JyZWN0IC0gMjUiLAogICAgICAgICk7CgogICAgICAgICMgR28gdG8gdGhlIHNlY29uZCBwYWdlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2hQYWdlMiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlBhZ2luYXRpb24nKS50ZXh0KCkudHJpbSgpLmluZGV4T2YoJzI2LTMwIG9mIDMwJykgPiAtMTsiKSwKICAgICAgICAgICAgIkNoZWNrIHBhZ2luYXRpb24gb24gdGhlIHNlY29uZCBwYWdlIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnI092ZXJ2aWV3Qm9keSAuVGFibGVTbWFsbCB0Ym9keSB0cicpLmxlbmd0aDsiKSwKICAgICAgICAgICAgJzUnLAogICAgICAgICAgICAiTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyBvbiB0aGUgc2Vjb25kIHBhZ2UgaXMgY29ycmVjdCAtIDUiLAogICAgICAgICk7CgogICAgICAgICMgQ2hhbmdlIHNlYXJjaCBvcHRpb24uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjSVRTTUNvbmZpZ0l0ZW1TZWFyY2giLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIFdhaXQgdW50aWwgZm9ybSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gXCQoJyNBdHRyaWJ1dGUnKS5sZW5ndGggJiYgXCQoJyNTZWFyY2hJbnNlcnQgaW5wdXRbbmFtZT1cIk5hbWVcIl0nKS5sZW5ndGgiCiAgICAgICAgKTsKCiAgICAgICAgIyBJbnB1dCB3cm9uZyBzZWFyY2ggcGFyYW1ldGVycywgcmVzdWx0IHNob3VsZCBiZSAnTm8gZGF0YSBmb3VuZCcuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOYW1lJ10iKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J05hbWUnXSIpLT5zZW5kX2tleXMoJ2FzZGZnJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoRm9ybVN1Ym1pdCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgIVwkKCdEaWFsb2cuTW9kYWwnKS5sZW5ndGggJiYgXCQoJyNPdmVydmlld0JvZHkgI0VtcHR5TWVzc2FnZVNtYWxsJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZm9yIGV4cGVjdGVkIHJlc3VsdC4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICdObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLicgKSA+IC0xLAogICAgICAgICAgICAiJ05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJyAtIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uICJDaGFuZ2Ugc2VhcmNoIG9wdGlvbiIKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNJVFNNQ29uZmlnSXRlbVNlYXJjaCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaFByb2ZpbGVOZXcnKS5sZW5ndGgiICk7CiAgICAgICAgc2xlZXAgMjsKCiAgICAgICAgIyBDcmVhdGUgbmV3IHRlbXBsYXRlIHNlYXJjaC4KICAgICAgICBteSAkU2VhcmNoUHJvZmlsZU5hbWUgPSAiU2VhcmNoLSIgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaFByb2ZpbGVOZXciLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNTZWFyY2hQcm9maWxlQWRkTmFtZScpLmxlbmd0aCIgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoUHJvZmlsZUFkZE5hbWUiLCAgICdjc3MnICktPnNlbmRfa2V5cygkU2VhcmNoUHJvZmlsZU5hbWUpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaFByb2ZpbGVBZGRBY3Rpb24iLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCkgPT09ICckU2VhcmNoUHJvZmlsZU5hbWUnIgogICAgICAgICk7CgogICAgICAgICMgRXhlY3V0ZSBzZWFyY2ggd2l0aCBuZXcgc2VhcmNoIHByb2ZpbGUgdG8gc2F2ZSBpdC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J051bWJlciddIiktPmNsZWFyKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOdW1iZXInXSIpLT5zZW5kX2tleXMoJyonKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J05hbWUnXSIpLT5jbGVhcigpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTmFtZSddIiktPnNlbmRfa2V5cyggJyonIC4gJFJhbmRvbUlEICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaEZvcm1TdWJtaXQiLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmICFcJCgnRGlhbG9nLk1vZGFsJykubGVuZ3RoICYmIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICMgQ2xpY2sgb24gIkNoYW5nZSBzZWFyY2ggb3B0aW9uIgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0lUU01Db25maWdJdGVtU2VhcmNoIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgIyBTZWxlY3QgbmV3bHkgY3JlYXRlZCBzZWFyY2ggcHJvZmlsZS4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCckU2VhcmNoUHJvZmlsZU5hbWUnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSA9PT0gJyRTZWFyY2hQcm9maWxlTmFtZSc7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaFByb2ZpbGVBc0xpbms6dmlzaWJsZScpLmxlbmd0aCIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGJ1dHRvbiBmb3IgcHJvZmlsZSBsaW5rLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1NlYXJjaFByb2ZpbGVBc0xpbmsiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKENvcmUpID09ICJvYmplY3QiICYmIHR5cGVvZihDb3JlLkFwcCkgPT0gIm9iamVjdCIgJiYgQ29yZS5BcHAuUGFnZUxvYWRDb21wbGV0ZScKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uICJDaGFuZ2Ugc2VhcmNoIG9wdGlvbiIKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNJVFNNQ29uZmlnSXRlbVNlYXJjaCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSA9PT0gJyRTZWFyY2hQcm9maWxlTmFtZSciCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCk7IiksCiAgICAgICAgICAgICRTZWFyY2hQcm9maWxlTmFtZSwKICAgICAgICAgICAgIkNoZWNrIGlmIHByb2ZpbGUgaXMgbG9hZGVkIHdlbGwiCiAgICAgICAgKTsKCiAgICAgICAgIyBWZXJpZnkgc2VhcmNoIHJlc3VsdCByZW1haW5lZCBpbnRhY3QgYWZ0ZXIgY2hhbmdpbmcgaXRlbXMgcGVyIHBhZ2UsIHNlZSBidWcjMTQ3MTcgZm9yIG1vcmUgZGV0YWlscy4KICAgICAgICAjIFNldCAxMCBjb25maWcgaXRlbXMgcGVyIHBhZ2UuCgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiLkRpYWxvZyAuQ2xvc2UiLCAgICAgICAgICAgICAgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggImEjU2hvd0NvbnRleHRTZXR0aW5nc0RpYWxvZyIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gJCgiLkRpYWxvZy5Nb2RhbCAjVXNlckNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsUGFnZVNob3duIikubGVuZ3RoJwogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5JbnB1dEZpZWxkVmFsdWVTZXQoCiAgICAgICAgICAgIEVsZW1lbnQgPT4gJyNVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGxQYWdlU2hvd24nLAogICAgICAgICAgICBWYWx1ZSAgID0+ICcxMCcsCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNEaWFsb2dCdXR0b24xIiwgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiAhJCgiLkRpYWxvZy5Nb2RhbCIpLmxlbmd0aCcKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGlmIGNvcnJlY3QgbnVtYmVyIG9mIGl0ZW1zIGFyZSBzaG93biBvbiBwYWdpbmF0aW9uLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJy5QYWdpbmF0aW9uJykudGV4dCgpLnRyaW0oKS5pbmRleE9mKCcxLTEwIG9mIDMwJykgPiAtMTsiKSwKICAgICAgICAgICAgIkNoZWNrIHBhZ2luYXRpb24gYWZ0ZXIgc3dpdGNoIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIHRib2R5IHRyJykubGVuZ3RoOyIpLAogICAgICAgICAgICAnMTAnLAogICAgICAgICAgICAiTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyBpcyBjb3JyZWN0IC0gMTAiLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbURlbGV0ZUlEIChAQ29uZmlnSXRlbUlEcykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtRGVsZXRlSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1EZWxldGVJRCBpcyBkZWxldGVkIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgICAgIGZvciBteSAkQ2FjaGUgKHF3KENvbmZpZ0l0ZW0gVmVyc2lvbikpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5DbGVhblVwKCBUeXBlID0+ICRDYWNoZSApOwogICAgICAgIH0KICAgIH0KKTsKCiRTZWxmLT5Eb25lVGVzdGluZzsK</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemZoom.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgojIGdldCBzZWxlbml1bSBvYmplY3QKbXkgJFNlbGVuaXVtID0gS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bS0+bmV3OwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICAgICAkS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAgICAgICAgICRIZWxwZXIgPT4gewogICAgICAgICAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgJ0hhcmR3YXJlJyBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgIG15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0hhcmR3YXJlJywKICAgICAgICApOwogICAgICAgIG15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICMgZ2V0ICdQcm9kdWN0aW9uJyBhbmQgJ1JlcGFpcicgZGVwbG95bWVudCBzdGF0ZSBJRHMKICAgICAgICBteSBARGVwbFN0YXRlSURzOwogICAgICAgIG15IEBEZXBsU3RhdGVzID0gKHF3KFByb2R1Y3Rpb24gUmVwYWlyKSk7CiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGFSZWY7CiAgICAgICAgZm9yIG15ICREZXBsU3RhdGUgKEBEZXBsU3RhdGVzKSB7CiAgICAgICAgICAgICREZXBsU3RhdGVEYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkRGVwbFN0YXRlLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBEZXBsU3RhdGVJRHMsICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgIG15ICRIYXJkd2FyZUNsYXNzRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0hhcmR3YXJlJywKICAgICAgICApOwoKICAgICAgICAjIHNldCBOYW1lIHVwZGF0ZSBhcyBhIHZlcnNpb24gdHJpZ2dlcmluZyBldmVudAogICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRIYXJkd2FyZUNsYXNzRGF0YVJlZi0+e0l0ZW1JRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAnVmVyc2lvblRyaWdnZXInLAogICAgICAgICAgICBWYWx1ZSAgPT4gWydOYW1lJ10KICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBDb25maWdJdGVtIG51bWJlcgogICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICJDb25maWdJdGVtIG51bWJlciBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OdW1iZXIiCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgdGhlIG5ldyBDb25maWdJdGVtCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgQ2xhc3NJRCAgICAgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAkRGVwbFN0YXRlRGF0YVJlZi0+e0l0ZW1JRH0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEIgogICAgICAgICk7CgogICAgICAgICMgYWRkIHR3byB2ZXJzaW9ucwogICAgICAgIG15IEBVcGRhdGVkTmFtZXMgPSAoICdTZWxlbml1bVRlc3QyJywgJ1NlbGVuaXVtVGVzdDMnICk7CiAgICAgICAgbXkgJU5hbWVzQnlWZXJzaW9uOwogICAgICAgIGZvciBteSAkTmFtZSAoQFVwZGF0ZWROYW1lcykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJOYW1lIGlzIHVwZGF0ZWQgLSAnJE5hbWUnIgogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICJWZXJzaW9uIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9IgogICAgICAgICAgICApOwogICAgICAgICAgICAkTmFtZXNCeVZlcnNpb257ICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH0gfSA9ICROYW1lOwogICAgICAgIH0KICAgICAgICBteSBAVmVyc2lvbklEcyA9IHNvcnQga2V5cyAlTmFtZXNCeVZlcnNpb247CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtO1NvcnRCeT1OdW1iZXI7T3JkZXJCeT1Eb3duO1ZpZXc9O0ZpbHRlcj0kSGFyZHdhcmVDb25maWdJdGVtSUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayBvbiBjcmVhdGVkIENvbmZpZ0l0ZW0uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyggdGV4dCgpLCAnJENvbmZpZ0l0ZW1OdW1iZXInICldIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBnZXQgQ29uZmlnSXRlbSB2YWx1ZSBwYXJhbXMKICAgICAgICBteSBAQ29uZmlnSXRlbVZhbHVlcyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmFsdWUgPT4gJ0hhcmR3YXJlJywKICAgICAgICAgICAgICAgIENoZWNrID0+ICdwLlZhbHVlOmNvbnRhaW5zKEhhcmR3YXJlKScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ3AuVmFsdWU6Y29udGFpbnMoU2VsZW5pdW1UZXN0MyknLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAnUmVwYWlyJywKICAgICAgICAgICAgICAgIENoZWNrID0+ICdkaXYuVmFsdWU6Y29udGFpbnMoUmVwYWlyKScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnZGl2LlZhbHVlOmNvbnRhaW5zKE9wZXJhdGlvbmFsKScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlID0+ICIkQ29uZmlnSXRlbU51bWJlciIsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAiaDE6Y29udGFpbnMoJENvbmZpZ0l0ZW1OdW1iZXIpIiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIENvbmZpZ0l0ZW0gdmFsdWVzIG9uIHNjcmVlbgogICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtVmFsdWUgKEBDb25maWdJdGVtVmFsdWVzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCckQ2hlY2tDb25maWdJdGVtVmFsdWUtPntDaGVja30nKS5sZW5ndGgiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSB2YWx1ZSAkQ2hlY2tDb25maWdJdGVtVmFsdWUtPntWYWx1ZX0gLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFZlcnNpb25JRCAoQFZlcnNpb25JRHMpIHsKICAgICAgICAgICAgbXkgJFZhbHVlID0gIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEO1ZlcnNpb25JRD0kVmVyc2lvbklEIjsKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJcJCgnI1ZlcnNpb25TZWxlY3Rpb24nKS52YWwoJyRWYWx1ZScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyROYW1lc0J5VmVyc2lvbnskVmVyc2lvbklEfScpLmxlbmd0aCIsCiAgICAgICAgICAgICAgICAiJE5hbWVzQnlWZXJzaW9ueyRWZXJzaW9uSUR9ICgkVmVyc2lvbklEKSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHRlc3QgbWVudSBidXR0b25zIHBhcmFtcwogICAgICAgIG15IEBNZW51QnV0dG9ucyA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnQmFjaycsCiAgICAgICAgICAgICAgICBMaW5rID0+ICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbTtTb3J0Qnk9TnVtYmVyO09yZGVyQnk9RG93bjtWaWV3PTtGaWx0ZXI9JEhhcmR3YXJlQ29uZmlnSXRlbUlEIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnSGlzdG9yeScsCiAgICAgICAgICAgICAgICBMaW5rID0+ICJBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1JRDtWZXJzaW9uSUQ9JFZlcnNpb25JRHNbMV0iLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdFZGl0JywKICAgICAgICAgICAgICAgIExpbmsgPT4gIkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnUHJpbnQnLAogICAgICAgICAgICAgICAgTGluayA9PiAiQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50O0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEO1ZlcnNpb25JRD0kVmVyc2lvbklEc1sxXSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgTGluayA9PiAiQWdlbnRMaW5rT2JqZWN0O1NvdXJjZU9iamVjdD1JVFNNQ29uZmlnSXRlbTtTb3VyY2VLZXk9JENvbmZpZ0l0ZW1JRCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R1cGxpY2F0ZScsCiAgICAgICAgICAgICAgICBMaW5rID0+ICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7RHVwbGljYXRlSUQ9JENvbmZpZ0l0ZW1JRDtWZXJzaW9uSUQ9JFZlcnNpb25JRHNbMV0iLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgbWVudSBidXR0b25zCiAgICAgICAgZm9yIG15ICRNZW51QnV0dG9uQ2hlY2sgKEBNZW51QnV0dG9ucykgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCBcJyRNZW51QnV0dG9uQ2hlY2stPntMaW5rfScgKV0iKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJNZW51IGJ1dHRvbiAkTWVudUJ1dHRvbkNoZWNrLT57TmFtZX0gLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbQogICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtSUQiLAogICAgICAgICk7CiAgICB9CgopOwoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentLinkObject.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCnVzZSBUZXN0Mjo6VjA7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgojIE5PVEU6IFRoZSB0ZXN0IHJ1bnMgc3VjY2Vzc2Z1bGx5LCBidXQgd2l0aCB0aGUgc2lkZSBlZmZlY3Qgb2YgZXJyb3IgbWVzc2FnZXMgZnJvbSB0aGUgRVMgd2hlbiB0aWNrZXRzIGFyZSBkZWxldGVkCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3RzCiAgICAgICAgbXkgJEhlbHBlciAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OklUU01Db25maWdJdGVtSGVscGVyJyk7CiAgICAgICAgJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgICAgICAgICAkSGVscGVyID0+IHsKICAgICAgICAgICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRXZWJzZXJ2aWNlT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiAgICAgICAgbXkgJFRpY2tldE9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICMgZGlzYWJsZSBFUwogICAgICAgIG15ICVFbGFzdGljU2VhcmNoQWN0aXZlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICdFbGFzdGljc2VhcmNoOjpBY3RpdmUnLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMCwKICAgICAgICAgICAgS2V5ICAgPT4gJ0VsYXN0aWNzZWFyY2g6OkFjdGl2ZScsCiAgICAgICAgICAgIFZhbHVlID0+ICRFbGFzdGljU2VhcmNoQWN0aXZle0VmZmVjdGl2ZVZhbHVlfQogICAgICAgICk7CgogICAgICAgICMgZGlzYWJsZSBFUyB3ZWJzZXJ2aWNlCiAgICAgICAgbXkgJFdlYnNlcnZpY2UgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUdldCgKICAgICAgICAgICAgSUQgPT4gMSwKICAgICAgICApOwogICAgICAgIG15ICRXZWJTZXJ2aWNlRGlzYWJsZWQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAgICAgSUQgICAgICA9PiAkV2Vic2VydmljZS0+e0lEfSwKICAgICAgICAgICAgTmFtZSAgICA9PiAkV2Vic2VydmljZS0+e05hbWV9LAogICAgICAgICAgICBDb25maWcgID0+ICRXZWJzZXJ2aWNlLT57Q29uZmlnfSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAyLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFdlYlNlcnZpY2VEaXNhYmxlZCwKICAgICAgICAgICAgIldlYnNlcnZpY2UgJyRXZWJzZXJ2aWNlLT57TmFtZX0nIGlzIGRpc2FibGVkIgogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNhdGFsb2cgbGVnYWN5IGNsYXNzZXMgSURzCiAgICAgICAgJElUU01Db25maWdJdGVtSGVscGVyLT5UZXN0Q29uZmlnSXRlbUNyZWF0ZUxlZ2FjeUNsYXNzZXMoCiAgICAgICAgICAgIEhlbHBlck9iamVjdCA9PiAkSGVscGVyCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgQ29tcHV0ZXIgYW5kIEhhcmR3YXJlIGNhdGFsb2cgY2xhc3MgSURzLgogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtIChxdyhDb21wdXRlciBIYXJkd2FyZSkpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgID0+ICRDb25maWdJdGVtLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NJRHMsICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgfQoKICAgICAgICAjIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KICAgICAgICBteSAkRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBDcmVhdGUgdHdvIHRlc3QgQ29uZmlnSXRlbXMgZm9yIENvbXB1dGVyIGFuZCBIYXJkd2FyZSBDb25maWdJdGVtIGNsYXNzLgogICAgICAgIG15IEBDb25maWdJdGVtTnVtYmVyczsKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgICAgICBmb3IgbXkgJElUU01Db25maWdJdGVtIChAQ29uZmlnSXRlbUNsYXNzSURzKSB7CgogICAgICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJElUU01Db25maWdJdGVtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gbnVtYmVyIGlzIGNyZWF0ZWQgLSAkQ29uZmlnSXRlbU51bWJlciIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbU51bWJlcnMsICRDb25maWdJdGVtTnVtYmVyOwoKICAgICAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgID0+ICRJVFNNQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+ICREZXBsU3RhdGVJRCwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnU2VsZW5pdW0gVGVzdCcsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBjcmVhdGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKICAgICAgICB9CgogICAgICAgICMgQ3JlYXRlIHRlc3Qgc2VydmljZS4KICAgICAgICBteSAkU2VydmljZU5hbWUgPSAiU2VydmljZSIgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRTZXJ2aWNlSUQgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyktPlNlcnZpY2VBZGQoCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICRTZXJ2aWNlTmFtZSwKICAgICAgICAgICAgVmFsaWRJRCAgICAgPT4gMSwKICAgICAgICAgICAgQ29tbWVudCAgICAgPT4gJ1NlbGVuaXVtIFRlc3QgU2VydmljZScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgID0+IDIsCiAgICAgICAgICAgIENyaXRpY2FsaXR5ID0+ICczIG5vcm1hbCcsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlcnZpY2VJRCwKICAgICAgICAgICAgIlNlcnZpY2UgaXMgY3JlYXRlZCAtIElEICRTZXJ2aWNlSUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB0aWNrZXQuCiAgICAgICAgbXkgJFRpY2tldE51bWJlciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZU51bWJlcigpOwogICAgICAgIG15ICRUaWNrZXRJRCAgICAgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgICAgIFROICAgICAgICAgICA9PiAkVGlja2V0TnVtYmVyLAogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NlbGVuaXVtVGVzdFRpY2tldCcsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICduZXcnLAogICAgICAgICAgICBDdXN0b21lcklEICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAZXhhbXBsZS5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFRpY2tldElELAogICAgICAgICAgICAiVGlja2V0IGlzIGNyZWF0ZWQgLSBJRCAkVGlja2V0SUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJywgJ2l0c20tc2VydmljZScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtWm9vbSBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEc1swXSIKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIG9uICdMaW5rJyBtZW51LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRMaW5rT2JqZWN0O1NvdXJjZU9iamVjdD1JVFNNQ29uZmlnSXRlbTtTb3VyY2VLZXk9JENvbmZpZ0l0ZW1JRHNbMF1cJyApXSIKICAgICAgICApLT5jbGljaygpOwoKICAgICAgICAjIFN3aXRjaCB0byAnTGluaycgd2luZG93LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgIG15ICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIHBhZ2UgaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZihDb3JlKSA9PSAib2JqZWN0IiAmJiB0eXBlb2YoQ29yZS5BcHApID09ICJvYmplY3QiICYmIENvcmUuQXBwLlBhZ2VMb2FkQ29tcGxldGUnCiAgICAgICAgKTsKCiAgICAgICAgIyBTZWxlY3QgdG8gbGluayB3aXRoIHRlc3QgSGFyZHdhcmUgQ29uZmlnSXRlbS4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNUYXJnZXRJZGVudGlmaWVyJykudmFsKCdJVFNNQ29uZmlnSXRlbTo6JENvbmZpZ0l0ZW1DbGFzc0lEc1sxXScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgIHNsZWVwIDI7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNTRUFSQ0hcXFxcOlxcXFw6TnVtYmVyIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIENoZWNrICdMaW5rJyBzY3JlZW4gZm9yIHR3byBDb25maWdJdGVtcy4KICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoVGFyZ2V0SWRlbnRpZmllciBTdWJtaXRTZWFyY2gpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBTZWFyY2ggQ29uZmlnSXRlbSBieSBpdHMgbnVtYmVyIGFuZCBzZWxlY3QgcmVzdWx0LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J1NFQVJDSDo6TnVtYmVyJ10iKS0+c2VuZF9rZXlzKCAkQ29uZmlnSXRlbU51bWJlcnNbMV0gKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJtaXRTZWFyY2giLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnI0xpbmtUYXJnZXRLZXlzJywgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICBzbGVlcCAxOwoKICAgICAgICAjIFNlbGVjdCAnQWx0ZXJuYXRpdmVUbycgbGluayB0eXBlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQGlkPSdBZGRMaW5rcyddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBTZWxlY3QgdG8gbGluayB3aXRoIHRlc3QgU2VydmljZS4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNUYXJnZXRJZGVudGlmaWVyJykudmFsKCdTZXJ2aWNlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgc2xlZXAgMjsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI1NFQVJDSFxcXFw6XFxcXDpOYW1lIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIFNlYXJjaCBTZXJ2aWNlIGJ5IG5hbWUgYW5kIHNlbGVjdCByZXN1bHQuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBpZD0nU0VBUkNIOjpOYW1lJ10iKS0+c2VuZF9rZXlzKCRTZXJ2aWNlTmFtZSk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0U2VhcmNoIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J0xpbmtUYXJnZXRLZXlzJ11bXEB2YWx1ZT0nJFNlcnZpY2VJRCddIiktPmNsaWNrKCk7CgogICAgICAgICMgU2VsZWN0ICdSZWxldmFudCB0bycgbGluayB0eXBlLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1R5cGVJZGVudGlmaWVyJykudmFsKCdSZWxldmFudFRvOjpTb3VyY2UnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQGlkPSdBZGRMaW5rcyddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBTZWxlY3QgdG8gbGluayB3aXRoIHRlc3QgVGlja2V0LgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1RhcmdldElkZW50aWZpZXInKS52YWwoJ1RpY2tldCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgIHNsZWVwIDI7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNTRUFSQ0hcXFxcOlxcXFw6VGlja2V0TnVtYmVyIikubGVuZ3RoOycKICAgICAgICApOwoKICAgICAgICAjIFNlYXJjaCBUaWNrZXQgYnkgbnVtYmVyIGFuZCBzZWxlY3QgcmVzdWx0LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J1NFQVJDSDo6VGlja2V0TnVtYmVyJ10iKS0+c2VuZF9rZXlzKCRUaWNrZXROdW1iZXIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1Ym1pdFNlYXJjaCIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBpZD0nTGlua1RhcmdldEtleXMnXVtcQHZhbHVlPSckVGlja2V0SUQnXSIpLT5jbGljaygpOwoKICAgICAgICAjIFNlbGVjdCAnRGVwZW5kcyB0bycgbGluayB0eXBlLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1R5cGVJZGVudGlmaWVyJykudmFsKCdEZXBlbmRzT246OlNvdXJjZScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAaWQ9J0FkZExpbmtzJ10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENsb3NlIGxpbmsgd2luZG93LCByZXR1cm4gdG8gWm9vbSB2aWV3IGFuZCByZWZyZXNoIHBhZ2UuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTGlua0FkZENsb3NlTGluayIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMSApOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CgogICAgICAgICMgQ2hlY2sgZm9yIGxpbmtlZCB2YWx1ZXMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20gc2NyZWVuLgogICAgICAgIGZvciBteSAkQ2hlY2tWYWx1ZXMgKCAkQ29uZmlnSXRlbU51bWJlcnNbMV0sICRTZXJ2aWNlTmFtZSwgJFRpY2tldE51bWJlciApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJENoZWNrVmFsdWVzICkgPiAtMSwKICAgICAgICAgICAgICAgICJMaW5rZWQgdmFsdWUgJENoZWNrVmFsdWVzIC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDbGljayBvbiAnTGluaycgbWVudSBhbmQgc3dpdGNoIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50TGlua09iamVjdDtTb3VyY2VPYmplY3Q9SVRTTUNvbmZpZ0l0ZW07U291cmNlS2V5PSRDb25maWdJdGVtSURzWzBdXCcgKV0iCiAgICAgICAgKS0+Y2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKENvcmUpID09ICJvYmplY3QiICYmIHR5cGVvZihDb3JlLkFwcCkgPT0gIm9iamVjdCIgJiYgQ29yZS5BcHAuUGFnZUxvYWRDb21wbGV0ZScKICAgICAgICApOwoKICAgICAgICAjIENsaWNrICdnbyB0byBtYW5hZ2UgbGlua3Mgc2NyZWVuJy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCcjTWFuYWdlTGlua3NcJyApXSIpLT5jbGljaygpOwoKICAgICAgICAjIFdhaXQgZm9yIHRoZSBtYW5hZ2UgbGlua3MgdGFiIHRvIHNob3cgdXAuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCJkaXZbZGF0YS1pZD1NYW5hZ2VMaW5rc106dmlzaWJsZSIpLmxlbmd0aCAmJiBwYXJzZUludCgkKCJkaXZbZGF0YS1pZD1NYW5hZ2VMaW5rc10iKS5jc3MoIm9wYWNpdHkiKSwgMTApID09IDEnCiAgICAgICAgKTsKCiAgICAgICAgIyBTZWxlY3QgYWxsIGxpbmtlZCBpdGVtcyBhbmQgZGVsZXRlIGxpbmtzLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAdmFsdWU9J0lUU01Db25maWdJdGVtOjokQ29uZmlnSXRlbUlEc1sxXTo6QWx0ZXJuYXRpdmVUbyddIiktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdGl0bGU9J0RlbGV0ZSBsaW5rcyddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEB2YWx1ZT0nU2VydmljZTo6JFNlcnZpY2VJRFw6OlJlbGV2YW50VG8nXSIpLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHRpdGxlPSdEZWxldGUgbGlua3MnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAdmFsdWU9J1RpY2tldDo6JFRpY2tldElEXDo6RGVwZW5kc09uJ10iKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB0aXRsZT0nRGVsZXRlIGxpbmtzJ10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENsb3NlIGxpbmsgd2luZG93LCByZXR1cm4gdG8gWm9vbSB2aWV3IGFuZCByZWZyZXNoIHBhZ2UuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTGlua0FkZENsb3NlTGluayIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMSApOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CgogICAgICAgICMgQ2hlY2sgZm9yIG5vIGxpbmtlZCB2YWx1ZXMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20gc2NyZWVuLgogICAgICAgIGZvciBteSAkQ2hlY2tWYWx1ZXMgKCAkQ29uZmlnSXRlbU51bWJlcnNbMV0sICRTZXJ2aWNlTmFtZSwgJFRpY2tldE51bWJlciApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJENoZWNrVmFsdWVzICkgPT0gLTEsCiAgICAgICAgICAgICAgICAiTGlua2VkIHZhbHVlICRDaGVja1ZhbHVlcyAtIG5vdCBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIERlbGV0ZSB0ZXN0IFRpY2tldC4KICAgICAgICBteSAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiVGlja2V0IGlzIGRlbGV0ZWQgLSBJRCAkVGlja2V0SUQgIgogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1EZWxldGUgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1EZWxldGUsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGRlbGV0ZWQgLSBJRCAkQ29uZmlnSXRlbURlbGV0ZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBEZWxldGUgdGVzdCBzZXJ2aWNlIGFuZCBpdHMgcHJlZmVyZW5jZXMuCiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gIkRFTEVURSBGUk9NIHNlcnZpY2VfcHJlZmVyZW5jZXMgV0hFUkUgc2VydmljZV9pZCA9ICRTZXJ2aWNlSUQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiU2VydmljZSBwcmVmZXJlbmNlcyBpcyBkZWxldGVkIiwKICAgICAgICApOwogICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSBzZXJ2aWNlIFdIRVJFIGlkID0gJFNlcnZpY2VJRCIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJTZXJ2aWNlIGlzIGRlbGV0ZWQgLSBJRCAkU2VydmljZUlEIiwKICAgICAgICApOwogICAgfQopOwoKJFNlbGYtPkRvbmVUZXN0aW5nOwo=</File>
        <File Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/DashboardITSMConfigItemGeneric.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpSZWdpc3RlckRyaXZlcjsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00gYW5kIHRoZSB0ZXN0IGRyaXZlciAkU2VsZgp1c2UgS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bTsKCiMgc29tZSBzZXR1cCBiZWZvcmUgc3RhcnRpbmcgdGhlIFNlbGVuaXVtIHRlc3QKc2tpcF9hbGwoJ1NraXBwaW5nIENNREIgU2VsZW5pdW0gdGVzdHMgdGVtcG9yYXJpbHkuJyk7CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IGN1c3RvbWVyIHVzZXIgbG9naW4uCiAgICAgICAgbXkgJFRlc3RDdXN0b21lclVzZXIgPSAkSGVscGVyLT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IGN1c3RvbWVyIHVzZXIiOwoKICAgICAgICBteSAkQ3VzdG9tZXJVc2VyT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpOwogICAgICAgIG15ICRDdXN0b21lckNvbXBhbnlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJDb21wYW55Jyk7CgogICAgICAgICMgR2V0IGN1c3RvbWVyIHVzZXIgZGF0YS4KICAgICAgICBteSAlQ3VzdG9tZXJVc2VyID0gJEN1c3RvbWVyVXNlck9iamVjdC0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgVXNlciA9PiAkVGVzdEN1c3RvbWVyVXNlciwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSByYW5kb20gaWQuCiAgICAgICAgbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiAgICAgICAgbXkgJEN1c3RvbWVyQ29tcGFueUlEID0gJEN1c3RvbWVyQ29tcGFueU9iamVjdC0+Q3VzdG9tZXJDb21wYW55QWRkKAogICAgICAgICAgICBDdXN0b21lcklEICAgICAgICAgID0+ICIkVGVzdEN1c3RvbWVyVXNlci0kUmFuZG9tSUQiLAogICAgICAgICAgICBDdXN0b21lckNvbXBhbnlOYW1lID0+ICIkVGVzdEN1c3RvbWVyVXNlci0kUmFuZG9tSUQiLAogICAgICAgICAgICBWYWxpZElEICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkQ3VzdG9tZXJDb21wYW55SUQsCiAgICAgICAgICAgICJDcmVhdGVkIHRlc3QgY3VzdG9tZXIgY29tcGFueSAkQ3VzdG9tZXJDb21wYW55SUQiLAogICAgICAgICk7CgogICAgICAgICMgRGVmaW5lIHRlc3QgYXJyYXkuCiAgICAgICAgbXkgQFRlc3QgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENsYXNzTmFtZSAgPT4gJ0N1c3RvbWVyJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gPDwiRU9GIiwKLS0tCi0gS2V5OiBDdXN0b21lcgogIE5hbWU6IEN1c3RvbWVyCiAgU2VhcmNoYWJsZTogMSwKICBJbnB1dDoKICAgIFR5cGU6IEN1c3RvbWVyCkVPRgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDbGFzc05hbWUgID0+ICdDdXN0b21lckNvbXBhbnknIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnQ3VzdG9tZXJDb21wYW55JywKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gPDwiRU9GIiwKLS0tCi0gS2V5OiBDdXN0b21lckNvbXBhbnkKICBOYW1lOiBDdXN0b21lckNvbXBhbnkKICBTZWFyY2hhYmxlOiAxLAogIElucHV0OgogICAgVHlwZTogQ3VzdG9tZXJDb21wYW55CkVPRgogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgQ2hhbmdlIGNvbmZpZyBzZXR0aW5ncy4KICAgICAgICBteSAlSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXJTeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNVSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXInLAogICAgICAgICk7CgogICAgICAgIGRlbGV0ZSAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXJTeXNDb25maWd7RWZmZWN0aXZlVmFsdWV9LT57Q29uZmlnSXRlbUtleX07CiAgICAgICAgJElUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyU3lzQ29uZmlne0VmZmVjdGl2ZVZhbHVlfS0+e0NvbmZpZ0l0ZW1LZXl9ID0gewogICAgICAgICAgICAnQ3VzdG9tZXInIC4gJFJhbmRvbUlEID0+ICdDdXN0b21lcicsCiAgICAgICAgfTsKCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNVSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXInLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAleyAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXJTeXNDb25maWd7RWZmZWN0aXZlVmFsdWV9IH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55U3lzQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueScsCiAgICAgICAgKTsKCiAgICAgICAgZGVsZXRlICRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0tPntDb25maWdJdGVtS2V5fTsKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnlTeXNDb25maWd7RWZmZWN0aXZlVmFsdWV9LT57Q29uZmlnSXRlbUtleX0gPSB7CiAgICAgICAgICAgICdDdXN0b21lckNvbXBhbnknIC4gJFJhbmRvbUlEID0+ICdDdXN0b21lckNvbXBhbnknLAogICAgICAgIH07CgogICAgICAgICMgQ2hhbmdlIGNvbmZpZyBzZXR0aW5nLgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueScsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgICV7ICRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0gfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICAgICAjIEFkZCB0aGUgdGVzdCBjbGFzc2VzLgogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgbXkgQENvbmZpZ0l0ZW1DbGFzc2VzOwogICAgICAgIG15IEBDb25maWdJdGVtRGVmaW5pdGlvbklEczsKCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uIChAVGVzdCkgewoKICAgICAgICAgICAgIyBBZGQgYW4gdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3MuCiAgICAgICAgICAgIG15ICRDbGFzc0lEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgICAgICAgICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAkRGVmaW5pdGlvbi0+e0NsYXNzTmFtZX0sCiAgICAgICAgICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENoZWNrIGNsYXNzIGlkLgogICAgICAgICAgICBpZiAoICEkQ2xhc3NJRCApIHsKCiAgICAgICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICJDYW4ndCBhZGQgbmV3IGNvbmZpZyBpdGVtIGNsYXNzLiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NJRHMsICRDbGFzc0lEOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NlcywgICREZWZpbml0aW9uLT57Q2xhc3NOYW1lfTsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgZ3JvdXAgYWxyZWFkeSBleGlzdHMuCiAgICAgICAgICAgIG15ICRHcm91cElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTG9va3VwKAogICAgICAgICAgICAgICAgR3JvdXAgID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFNldCBwZXJtaXNzaW9uLgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIEtleSAgICA9PiAnUGVybWlzc2lvbicsCiAgICAgICAgICAgICAgICBWYWx1ZSAgPT4gWyRHcm91cElEXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQWRkIGEgZGVmaW5pdGlvbiB0byB0aGUgY2xhc3MuCiAgICAgICAgICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG9rKCAkUmVzdWx0LT57U3VjY2Vzc30sICAgICAgJ0RlZmluaXRpb25BZGQoKSBzdWNjZXNzZnVsJyApOwogICAgICAgICAgICBvayggJFJlc3VsdC0+e0RlZmluaXRpb25JRH0sICdnb3QgRGVmaW5pdGlvbklEJyApOwoKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbURlZmluaXRpb25JRHMsICRSZXN1bHQtPntEZWZpbml0aW9uSUR9OwoKICAgICAgICAgICAgIyBBZGQgZGF0YSB0byB0ZXN0IGFycmF5LgogICAgICAgICAgICAkRGVmaW5pdGlvbi0+e0NsYXNzSUR9ID0gJENsYXNzSUQ7CiAgICAgICAgfQoKICAgICAgICAjIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KICAgICAgICBteSAkRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgc2NyaXB0IGFsaWFzLgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgZm9yIG15ICRUZXN0IChAVGVzdCkgewoKICAgICAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtQWRkLgogICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtQWRkIik7CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdhW2hyZWYqPVwiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NsYXNzSUQ9JFRlc3QtPntDbGFzc0lEfVwiXScpLmxlbmd0aCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQ2xpY2sgb24gQ29uZmlnSXRlbSBjbGFzcy4KICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICAgICAiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7Q2xhc3NJRD0kVGVzdC0+e0NsYXNzSUR9XCcgKV0iCiAgICAgICAgICAgICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjTmFtZScpLmxlbmd0aCAmJiBcJCgnI1N1Ym1pdEJ1dHRvbicpLmxlbmd0aCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQ3JlYXRlIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gJ1NlbGVuaXVtVGVzdC0nIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICdjc3MnICktPnNlbmRfa2V5cygkQ29uZmlnSXRlbU5hbWUpOwoKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJcJCgnI0RlcGxTdGF0ZUlEJykudmFsKCckRGVwbFN0YXRlSUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpIgogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0RlcGxTdGF0ZUlEJykudmFsKCkgPT09ICckRGVwbFN0YXRlSUQnIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNJbmNpU3RhdGVJRCcpLnZhbCgnMScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0luY2lTdGF0ZUlEJykudmFsKCkgPT09ICcxJyIgKTsKCiAgICAgICAgICAgIGlmICggJFRlc3QtPntLZXl9IGVxICdDdXN0b21lcicgKSB7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNJdGVtMTAiLCAnY3NzJyApLT5jbGVhcigpOwogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjSXRlbTEwIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCAkQ3VzdG9tZXJVc2Vye1VzZXJJRH0gKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoImxpLnVpLW1lbnUtaXRlbTp2aXNpYmxlIikubGVuZ3RoJwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCdsaS51aS1tZW51LWl0ZW06Y29udGFpbnMoJEN1c3RvbWVyVXNlcntVc2VySUR9KScpLmNsaWNrKCkiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgIlwkKCcjSXRlbTEwJykudmFsKCckQ3VzdG9tZXJDb21wYW55SUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpIgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0l0ZW0xMCcpLnZhbCgpID09PSAnJEN1c3RvbWVyQ29tcGFueUlEJyIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdTdWJtaXQnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdoMTpjb250YWlucygkQ29uZmlnSXRlbU5hbWUpJykubGVuZ3RoIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkVGVzdC0+e0tleX0gZXEgJ0N1c3RvbWVyJyApIHsKCiAgICAgICAgICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXIuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyO0N1c3RvbWVyVXNlcklEPSRDdXN0b21lclVzZXJ7VXNlcklEfSIKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDb25maWdJdGVtTmFtZSApID4gLTEsCiAgICAgICAgICAgICAgICAgICAgIiRDb25maWdJdGVtTmFtZSBmb3VuZCBvbiBwYWdlIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkVGVzdC0+e0tleX0gZXEgJ0N1c3RvbWVyQ29tcGFueScgKSB7CgogICAgICAgICAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXIuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI7Q3VzdG9tZXJJRD0kQ3VzdG9tZXJDb21wYW55SUQiCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkQ29uZmlnSXRlbU5hbWUgKSA+IC0xLAogICAgICAgICAgICAgICAgICAgICIkQ29uZmlnSXRlbU5hbWUgZm91bmQgb24gcGFnZSIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIENsZWFudXAuCiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gY3VzdG9tZXJfY29tcGFueSBXSEVSRSBjdXN0b21lcl9pZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRDdXN0b21lckNvbXBhbnlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRGVsZXRlZCBDdXN0b21lckNvbXBhbnkiLAogICAgICAgICk7CgogICAgICAgIG15ICRDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goIENsYXNzSURzID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzICk7CgogICAgICAgICMgRGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskQ29uZmlnSXRlbUlEc30gKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtSUQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uSUQgKEBDb25maWdJdGVtRGVmaW5pdGlvbklEcykgewogICAgICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgPT4gIkRFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBXSEVSRSBpZCA9ICREZWZpbml0aW9uSUQiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZyBpdGVtIGRlZmluaXRpb24gaXMgZGVsZXRlZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJENsYXNzSUQgKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSBnZW5lcmFsX2NhdGFsb2dfcHJlZmVyZW5jZXMgV0hFUkUgZ2VuZXJhbF9jYXRhbG9nX2lkID0gJENsYXNzSUQiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIlByZWZlcmVuY2VzIGRlbGV0ZWQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSBnZW5lcmFsX2NhdGFsb2cgV0hFUkUgaWQgPSAkQ2xhc3NJRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ2xhc3MgaXRlbSBpcyBkZWxldGVkIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCk7CiAgICB9Cik7Cgpkb25lX3Rlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Customer/ITSMConfigurationManagement/CustomerITSMConfigItem.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXItPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgICAgICAgICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIKICAgICAgICApOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgbXkgQFRlc3RDbGFzc2VzID0gcXcoQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayk7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3MgKEBUZXN0Q2xhc3NlcykgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJENvbmZpZ0l0ZW1DbGFzcywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAkQ29uZmlnSXRlbURhdGFSZWYtPntJdGVtSUR9OwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSUQuCiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkRGVwbFN0YXRlSUQgICAgICA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MuCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1OdW1iZXJzOwogICAgICAgIG15IEBDb25maWdJdGVtSURzOwogICAgICAgIGZvciBteSAkSVRTTUNvbmZpZ0l0ZW0gKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKCiAgICAgICAgICAgICMgQ3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVyLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSVRTTUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtTnVtYmVycywgJENvbmZpZ0l0ZW1OdW1iZXI7CgogICAgICAgICAgICAjIEFkZCB0aGUgbmV3IENvbmZpZ0l0ZW0uCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkSVRTTUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgICAgIH0KCiAgICAgICAgbXkgJUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJ0N1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0N1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBWYWx1ZSA9PiAkQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0KICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJEluZGV4ICggMSAuLiA1ICkgewogICAgICAgICAgICBteSAlUGVybWlzc2lvbkNvbmRpdGlvbnNTeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwJEluZGV4IiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJEluZGV4ID4gMSApIHsKICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uQ29uZGl0aW9uc1N5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX17TmFtZX0gICAgPSAkVGVzdENsYXNzZXNbICRJbmRleCAtIDIgXTsKICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uQ29uZGl0aW9uc1N5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX17Q2xhc3Nlc30gPSBbICRUZXN0Q2xhc3Nlc1sgJEluZGV4IC0gMiBdIF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICAgICAgS2V5ICAgPT4gIkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzAkSW5kZXgiLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFBlcm1pc3Npb25Db25kaXRpb25zU3lzQ29uZmlne0VmZmVjdGl2ZVZhbHVlfQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSwgc29ydGVkIGJ5IGNyZWF0ZWQgdGltZSBieSBjbGlja2luZyBDb25maWdJdGVtcyBpY29uIG9uIHRoZSBzaWRlIG1lbnUgYmFyCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1DdXN0b21lcklUU01Db25maWdJdGVtJyApXSIKICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgZWFjaCBvZiBDb25maWdJdGVtIGNsYXNzIGZpbHRlcnMgZm9yIHRoZWlyIHJlc3BlY3RpdmUgdGVzdCBDb25maWdJdGVtCiAgICAgICAgQ09ORklHSVRFTToKICAgICAgICBmb3IgbXkgJEluZGV4ICggMSAuLiA1ICkgewoKICAgICAgICAgICAgIyBDbGljayBvbiBDb25maWdJdGVtIGNsYXNzCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW07U3ViYWN0aW9uPTtGaWx0ZXI9MCRJbmRleDtTb3J0Qnk9O09yZGVyQnk9O0Z1bGx0ZXh0PScgKV0iCiAgICAgICAgICAgICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTSBpZiAkSW5kZXggPT0gMTsKCiAgICAgICAgICAgICMgb3JkZXIgYnkgZGVzY2VuZGluZyBjcmVhdGlvbiB0aW1lCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vdGhbY29udGFpbnMoXEBjbGFzcywgXCdPdmVydmlld0hlYWRlclwnICkgYW5kIGNvbnRhaW5zKFxAY2xhc3MsIFwnQ3JlYXRlZFwnICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vdGhbY29udGFpbnMoXEBjbGFzcywgXCdPdmVydmlld0hlYWRlclwnICkgYW5kIGNvbnRhaW5zKFxAY2xhc3MsIFwnQ3JlYXRlZFwnICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIENoZWNrIGZvciBDb25maWdJdGVtIG51bWJlcgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtTnVtYmVyc1sgJEluZGV4IC0gMiBdOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnModGV4dCgpLCBcJyRDb25maWdJdGVtTnVtYmVyXCcgKV0iKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbnVtYmVyICRDb25maWdJdGVtTnVtYmVyIC0gZm91bmQiLAogICAgICAgICAgICApOwoKICAgICAgICB9CgogICAgICAgICMgVmVyaWZ5IHRoZXJlIGlzIGEgbGluayB0byBDdXN0b21lcklUU01Db25maWdJdGVtWm9vbSBvbiBDb25maWdJdGVtIE51bWJlciBjb2x1bW4uCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCd0cjplcShcIjFcIikgYTpjb250YWlucygkQ29uZmlnSXRlbU51bWJlcnNbM10pW2hyZWYqPVwiSXRlbUlEPSRDb25maWdJdGVtSURzWzNdXCJdJykubGVuZ3RoOyIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIkxpbmsgb24gQ29uZmlnSXRlbSAnTnVtYmVyJyBjb2x1bW4gY29ycmVjdC4iCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW1zLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbURlbGV0ZSAoQENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbURlbGV0ZSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtRGVsZXRlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/Selenium/Customer/ITSMConfigurationManagement/CustomerITSMConfigItemZoom.t" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJEcml2ZXI7ICAgICMgU2V0IHVwICRLZXJuZWw6Ok9NIGFuZCB0aGUgdGVzdCBkcml2ZXIgJFNlbGYKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW07CgpvdXIgJFNlbGY7CgpteSAkU2VsZW5pdW0gPSBLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtLT5uZXc7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAgICAgJEhlbHBlciA9PiB7CiAgICAgICAgICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW1IZWxwZXInKTsKICAgICAgICAkSVRTTUNvbmZpZ0l0ZW1IZWxwZXItPlRlc3RDb25maWdJdGVtQ3JlYXRlTGVnYWN5Q2xhc3NlcygKICAgICAgICAgICAgSGVscGVyT2JqZWN0ID0+ICRIZWxwZXIKICAgICAgICApOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgbXkgQFRlc3RDbGFzc2VzID0gcXcoQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayk7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3MgKEBUZXN0Q2xhc3NlcykgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJENvbmZpZ0l0ZW1DbGFzcywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAkQ29uZmlnSXRlbURhdGFSZWYtPntJdGVtSUR9OwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSUQuCiAgICAgICAgbXkgJERlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkRGVwbFN0YXRlSUQgICAgICA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MuCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1OdW1iZXJzOwogICAgICAgIG15IEBDb25maWdJdGVtSURzOwogICAgICAgIGZvciBteSAkSVRTTUNvbmZpZ0l0ZW0gKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKCiAgICAgICAgICAgICMgQ3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVyLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSVRTTUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtTnVtYmVycywgJENvbmZpZ0l0ZW1OdW1iZXI7CgogICAgICAgICAgICAjIEFkZCB0aGUgbmV3IENvbmZpZ0l0ZW0uCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkSVRTTUNvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgY3JlYXRlZCAtIElEICRDb25maWdJdGVtSUQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgICAgIH0KCiAgICAgICAgbXkgJUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgIE5hbWUgPT4gJ0N1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICk7CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0N1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSMjI0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBWYWx1ZSA9PiAkQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0KICAgICAgICApOwogICAgICAgICVDdXN0b21lcklUU01Db25maWdJdGVtU3lzQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICdDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lcklUU01Db25maWdJdGVtWm9vbScsCiAgICAgICAgKTsKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnQ3VzdG9tZXJGcm9udGVuZDo6TW9kdWxlIyMjQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVpvb20nLAogICAgICAgICAgICBWYWx1ZSA9PiAkQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0KICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJEluZGV4ICggMSAuLiA1ICkgewogICAgICAgICAgICBteSAlUGVybWlzc2lvbkNvbmRpdGlvbnNTeXNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyktPlNldHRpbmdHZXQoCiAgICAgICAgICAgICAgICBOYW1lID0+ICJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwJEluZGV4IiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJEluZGV4ID4gMSApIHsKICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uQ29uZGl0aW9uc1N5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX17TmFtZX0gICAgPSAkVGVzdENsYXNzZXNbICRJbmRleCAtIDIgXTsKICAgICAgICAgICAgICAgICRQZXJtaXNzaW9uQ29uZGl0aW9uc1N5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX17Q2xhc3Nlc30gPSBbICRUZXN0Q2xhc3Nlc1sgJEluZGV4IC0gMiBdIF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICAgICAgS2V5ICAgPT4gIkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzAkSW5kZXgiLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFBlcm1pc3Npb25Db25kaXRpb25zU3lzQ29uZmlne0VmZmVjdGl2ZVZhbHVlfQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSwgc29ydGVkIGJ5IGNyZWF0ZWQgdGltZSBieSBjbGlja2luZyBDb25maWdJdGVtcyBpY29uIG9uIHRoZSBzaWRlIG1lbnUgYmFyCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1DdXN0b21lcklUU01Db25maWdJdGVtJyApXSIKICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgZWFjaCBvZiBDb25maWdJdGVtIGNsYXNzIGZpbHRlcnMgZm9yIHRoZWlyIHJlc3BlY3RpdmUgdGVzdCBDb25maWdJdGVtCiAgICAgICAgQ09ORklHSVRFTToKICAgICAgICBmb3IgbXkgJEluZGV4ICggMiAuLiA1ICkgewoKICAgICAgICAgICAgIyBDbGljayBvbiBDb25maWdJdGVtIGNsYXNzCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW07U3ViYWN0aW9uPTtGaWx0ZXI9MCRJbmRleDtTb3J0Qnk9O09yZGVyQnk9O0Z1bGx0ZXh0PScgKV0iCiAgICAgICAgICAgICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICMgb3JkZXIgYnkgZGVzY2VuZGluZyBjcmVhdGlvbiB0aW1lCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vdGhbY29udGFpbnMoXEBjbGFzcywgXCdPdmVydmlld0hlYWRlclwnICkgYW5kIGNvbnRhaW5zKFxAY2xhc3MsIFwnQ3JlYXRlZFwnICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAgICAgIi8vdGhbY29udGFpbnMoXEBjbGFzcywgXCdPdmVydmlld0hlYWRlclwnICkgYW5kIGNvbnRhaW5zKFxAY2xhc3MsIFwnQ3JlYXRlZFwnICldIgogICAgICAgICAgICApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIENoZWNrIGZvciBDb25maWdJdGVtIG51bWJlcgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtTnVtYmVyc1sgJEluZGV4IC0gMiBdOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnModGV4dCgpLCBcJyRDb25maWdJdGVtTnVtYmVyXCcgKV0iKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbnVtYmVyICRDb25maWdJdGVtTnVtYmVyIC0gZm91bmQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBWZXJpZnkgdGhlcmUgaXMgYSBsaW5rIHRvIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tIG9uIENvbmZpZ0l0ZW0gTnVtYmVyIGNvbHVtbi4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtSURzWyAkSW5kZXggLSAyIF07CiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1OdW1iZXJzWyAkSW5kZXggLSAyIF07CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCd0cjplcShcIjFcIikgYTpjb250YWlucygkQ29uZmlnSXRlbU51bWJlcilbaHJlZio9XCJJdGVtSUQ9JENvbmZpZ0l0ZW1JRFwiXScpLmxlbmd0aDsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIkxpbmsgb24gQ29uZmlnSXRlbSAnTnVtYmVyJyBjb2x1bW4gY29ycmVjdC4iCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKHRleHQoKSwgXCckQ29uZmlnSXRlbU51bWJlclwnICldIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICMgY2hlY2sgQ29uZmlnSXRlbSB2YWx1ZXMgb24gdGhlIHpvb20gc2NyZWVuCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRUZXN0Q2xhc3Nlc1sgJEluZGV4IC0gMiBdIC4gIiMkQ29uZmlnSXRlbU51bWJlciI7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCdwOmNvbnRhaW5zKCRWYWx1ZSknKS5sZW5ndGgiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gZmllbGQgdmFsdWUgJyRWYWx1ZScgZm91bmQgaW4gY29uZmlnIGl0ZW0gem9vbSIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxlbml1bS0+Z29fYmFjaygpOwogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIjsnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW1zLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbURlbGV0ZSAoQENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbURlbGV0ZSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtRGVsZXRlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cik7CgokU2VsZi0+RG9uZVRlc3Rpbmc7Cg==</File>
        <File Location="scripts/test/sample/ImportExport/TemplateExport.csv" Permission="660" Encode="Base64">Ik5hbWUiLCJEZXBsb3ltZW50IFN0YXRlIiwiSW5jaWRlbnQgU3RhdGUiCiJUZXN0Q29uZmlnSXRlbfCfjJ5fPDxSQU5ET01fSUQ+Pl8xMCIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCIKIlRlc3RDb25maWdJdGVt8J+Mnl88PFJBTkRPTV9JRD4+XzkiLCJQcm9kdWN0aW9uIiwiT3BlcmF0aW9uYWwiCiJUZXN0Q29uZmlnSXRlbfCfjJ5fPDxSQU5ET01fSUQ+Pl84IiwiUHJvZHVjdGlvbiIsIk9wZXJhdGlvbmFsIgoiVGVzdENvbmZpZ0l0ZW3wn4yeXzw8UkFORE9NX0lEPj5fNyIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCIKIlRlc3RDb25maWdJdGVt8J+Mnl88PFJBTkRPTV9JRD4+XzYiLCJQcm9kdWN0aW9uIiwiT3BlcmF0aW9uYWwiCiJUZXN0Q29uZmlnSXRlbfCfjJ5fPDxSQU5ET01fSUQ+Pl81IiwiUHJvZHVjdGlvbiIsIk9wZXJhdGlvbmFsIgoiVGVzdENvbmZpZ0l0ZW3wn4yeXzw8UkFORE9NX0lEPj5fNCIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCIKIlRlc3RDb25maWdJdGVt8J+Mnl88PFJBTkRPTV9JRD4+XzMiLCJQcm9kdWN0aW9uIiwiT3BlcmF0aW9uYWwiCiJUZXN0Q29uZmlnSXRlbfCfjJ5fPDxSQU5ET01fSUQ+Pl8yIiwiUHJvZHVjdGlvbiIsIk9wZXJhdGlvbmFsIgoiVGVzdENvbmZpZ0l0ZW3wn4yeXzw8UkFORE9NX0lEPj5fMSIsIlByb2R1Y3Rpb24iLCJPcGVyYXRpb25hbCI=</File>
        <File Location="scripts/test/sample/ITSMConfigurationManagement/LegacyClasses.yml" Permission="660" Encode="Base64">LS0tCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIE5hbWU6IENvbXB1dGVyCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246IHwKICAgIC0tLQogICAgUGFnZXM6CiAgICAgIC0gTmFtZTogQ29udGVudAogICAgICAgIExheW91dDoKICAgICAgICAgIENvbHVtbnM6IDEKICAgICAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgICAgIFJvd1N0YXJ0OiAxCgogICAgU2VjdGlvbnM6CiAgICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgQ29udGVudDoKICAgICAgICAgIC0gREY6IENvbXB1dGVyLVZlbmRvcgogICAgICAgICAgLSBERjogQ29tcHV0ZXItTW9kZWwKICAgICAgICAgIC0gREY6IENvbXB1dGVyLURlc2NyaXB0aW9uCiAgICAgICAgICAtIERGOiBDb21wdXRlci1UeXBlCiAgICAgICAgICAtIERGOiBDb21wdXRlci1DdXN0b21lcklECiAgICAgICAgICAtIERGOiBDb21wdXRlci1Pd25lcgogICAgICAgICAgLSBERjogQ29tcHV0ZXItU2VyaWFsTnVtYmVyCiAgICAgICAgICAtIERGOiBDb21wdXRlci1PcGVyYXRpbmdTeXN0ZW0KICAgICAgICAgIC0gREY6IENvbXB1dGVyLUNQVQogICAgICAgICAgLSBERjogQ29tcHV0ZXItUmFtCiAgICAgICAgICAtIERGOiBDb21wdXRlci1IYXJkRGlzawogICAgICAgICAgLSBERjogQ29tcHV0ZXItRlFETgogICAgICAgICAgLSBERjogQ29tcHV0ZXItTklDCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogQ29tcHV0ZXItR3JhcGhpY0FkYXB0ZXIKICAgICAgICAgIC0gREY6IENvbXB1dGVyLU90aGVyRXF1aXBtZW50CiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogQ29tcHV0ZXItV2FycmFudHlFeHBpcmF0aW9uRGF0ZQogICAgICAgICAgLSBERjogQ29tcHV0ZXItSW5zdGFsbERhdGUKICAgICAgICAgICAgTWFuZGF0b3J5OiAxCiAgICAgICAgICAtIERGOiBDb21wdXRlci1Ob3RlCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogIER5bmFtaWNGaWVsZHM6CiAgICBDb21wdXRlci1DUFU6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBNdWx0aVZhbHVlOiAxCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENQVQogICAgICBOYW1lOiBDb21wdXRlci1DUFUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLUN1c3RvbWVySUQ6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogQ3VzdG9tZXIgQ29tcGFueQogICAgICBOYW1lOiBDb21wdXRlci1DdXN0b21lcklECiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1EZXNjcmlwdGlvbjoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogRGVzY3JpcHRpb24KICAgICAgTmFtZTogQ29tcHV0ZXItRGVzY3JpcHRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLUZRRE46CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRlFETgogICAgICBOYW1lOiBDb21wdXRlci1GUUROCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1HcmFwaGljQWRhcHRlcjoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBHcmFwaGljIEFkYXB0ZXIKICAgICAgTmFtZTogQ29tcHV0ZXItR3JhcGhpY0FkYXB0ZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLUhhcmREaXNrOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBDb21wdXRlci1IYXJkRGlza1N1YlByaW1hcnlBdHRyaWJ1dGUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTmFtZQogICAgICAgICAgICBOYW1lOiBDb21wdXRlci1IYXJkRGlza1N1YlByaW1hcnlBdHRyaWJ1dGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBDb21wdXRlci1IYXJkRGlza0NhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IENvbXB1dGVyLUhhcmREaXNrQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAxCiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBIYXJkIERpc2sKICAgICAgTmFtZTogQ29tcHV0ZXItSGFyZERpc2sKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLUluc3RhbGxEYXRlOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgWWVhcnNJbkZ1dHVyZTogMTAKICAgICAgICBZZWFyc0luUGFzdDogMjAKICAgICAgICBZZWFyc1BlcmlvZDogMQogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IEluc3RhbGwgRGF0ZQogICAgICBOYW1lOiBDb21wdXRlci1JbnN0YWxsRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29tcHV0ZXItTW9kZWw6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogQ29tcHV0ZXItTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLU5JQzoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogQ29tcHV0ZXItTklDU3ViUHJpbWFyeUF0dHJpYnV0ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBOYW1lCiAgICAgICAgICAgIE5hbWU6IENvbXB1dGVyLU5JQ1N1YlByaW1hcnlBdHRyaWJ1dGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBDb21wdXRlci1OSUNJUG92ZXJESENQCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06Olllc05vCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgICAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgICAgICAgTGFiZWw6IElQIG92ZXIgREhDUAogICAgICAgICAgICBOYW1lOiBDb21wdXRlci1OSUNJUG92ZXJESENQCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogQ29tcHV0ZXItTklDSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogMQogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IENvbXB1dGVyLU5JQ0lQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6IDEKICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgQWRhcHRlcgogICAgICBOYW1lOiBDb21wdXRlci1OSUMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLU5vdGU6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE5vdGUKICAgICAgTmFtZTogQ29tcHV0ZXItTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29tcHV0ZXItT3BlcmF0aW5nU3lzdGVtOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgTmFtZTogQ29tcHV0ZXItT3BlcmF0aW5nU3lzdGVtCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1PdGhlckVxdWlwbWVudDoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogT3RoZXIgRXF1aXBtZW50CiAgICAgIE5hbWU6IENvbXB1dGVyLU90aGVyRXF1aXBtZW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1Pd25lcjoKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogT3duZXIKICAgICAgTmFtZTogQ29tcHV0ZXItT3duZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLVJhbToKICAgICAgQ0lDbGFzczogQ29tcHV0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIE11bHRpVmFsdWU6IDEKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogUmFtCiAgICAgIE5hbWU6IENvbXB1dGVyLVJhbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29tcHV0ZXItU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbCBOdW1iZXIKICAgICAgTmFtZTogQ29tcHV0ZXItU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb21wdXRlci1UeXBlOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OkNvbXB1dGVyOjpUeXBlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogQ29tcHV0ZXItVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29tcHV0ZXItVmVuZG9yOgogICAgICBDSUNsYXNzOiBDb21wdXRlcgogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFZlbmRvcgogICAgICBOYW1lOiBDb21wdXRlci1WZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGU6CiAgICAgIENJQ2xhc3M6IENvbXB1dGVyCiAgICAgIENvbmZpZzoKICAgICAgICBZZWFyc0luRnV0dXJlOiAxMAogICAgICAgIFllYXJzSW5QYXN0OiAyMAogICAgICAgIFllYXJzUGVyaW9kOiAxCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlCiAgICAgIE5hbWU6IENvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgTmFtZTogSGFyZHdhcmUKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogfAogICAgLS0tCiAgICBQYWdlczoKICAgICAgLSBOYW1lOiBDb250ZW50CiAgICAgICAgTGF5b3V0OgogICAgICAgICAgQ29sdW1uczogMQogICAgICAgICAgQ29sdW1uV2lkdGg6IDFmcgogICAgICAgIENvbnRlbnQ6CiAgICAgICAgICAtIFNlY3Rpb246IEF0dHJpYnV0ZXMKICAgICAgICAgICAgQ29sdW1uU3RhcnQ6IDEKICAgICAgICAgICAgUm93U3RhcnQ6IDEKCiAgICBTZWN0aW9uczoKICAgICAgQXR0cmlidXRlczoKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBERjogSGFyZHdhcmUtVmVuZG9yCiAgICAgICAgICAtIERGOiBIYXJkd2FyZS1Nb2RlbAogICAgICAgICAgLSBERjogSGFyZHdhcmUtRGVzY3JpcHRpb24KICAgICAgICAgIC0gREY6IEhhcmR3YXJlLVR5cGUKICAgICAgICAgIC0gREY6IEhhcmR3YXJlLUN1c3RvbWVySUQKICAgICAgICAgIC0gREY6IEhhcmR3YXJlLU93bmVyCiAgICAgICAgICAtIERGOiBIYXJkd2FyZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIC0gREY6IEhhcmR3YXJlLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGUKICAgICAgICAgIC0gREY6IEhhcmR3YXJlLUluc3RhbGxEYXRlCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogSGFyZHdhcmUtTm90ZQogICAgICAgICAgICBNYW5kYXRvcnk6IDEKICBEeW5hbWljRmllbGRzOgogICAgSGFyZHdhcmUtQ3VzdG9tZXJJRDoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBDdXN0b21lciBDb21wYW55CiAgICAgIE5hbWU6IEhhcmR3YXJlLUN1c3RvbWVySUQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIEhhcmR3YXJlLURlc2NyaXB0aW9uOgogICAgICBDSUNsYXNzOiBIYXJkd2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBIYXJkd2FyZS1EZXNjcmlwdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSGFyZHdhcmUtSW5zdGFsbERhdGU6CiAgICAgIENJQ2xhc3M6IEhhcmR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBZZWFyc0luRnV0dXJlOiAxMAogICAgICAgIFllYXJzSW5QYXN0OiAyMAogICAgICAgIFllYXJzUGVyaW9kOiAxCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogSW5zdGFsbCBEYXRlCiAgICAgIE5hbWU6IEhhcmR3YXJlLUluc3RhbGxEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBIYXJkd2FyZS1Nb2RlbDoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBIYXJkd2FyZS1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSGFyZHdhcmUtTm90ZToKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTm90ZQogICAgICBOYW1lOiBIYXJkd2FyZS1Ob3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBIYXJkd2FyZS1Pd25lcjoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogT3duZXIKICAgICAgTmFtZTogSGFyZHdhcmUtT3duZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIEhhcmR3YXJlLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWwgTnVtYmVyCiAgICAgIE5hbWU6IEhhcmR3YXJlLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSGFyZHdhcmUtVHlwZToKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzOiBJVFNNOjpDb25maWdJdGVtOjpIYXJkd2FyZTo6VHlwZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogMQogICAgICBGaWVsZFR5cGU6IEdlbmVyYWxDYXRhbG9nCiAgICAgIExhYmVsOiBUeXBlCiAgICAgIE5hbWU6IEhhcmR3YXJlLVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIEhhcmR3YXJlLVZlbmRvcjoKICAgICAgQ0lDbGFzczogSGFyZHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBWZW5kb3IKICAgICAgTmFtZTogSGFyZHdhcmUtVmVuZG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBIYXJkd2FyZS1XYXJyYW50eUV4cGlyYXRpb25EYXRlOgogICAgICBDSUNsYXNzOiBIYXJkd2FyZQogICAgICBDb25maWc6CiAgICAgICAgWWVhcnNJbkZ1dHVyZTogMTAKICAgICAgICBZZWFyc0luUGFzdDogMjAKICAgICAgICBZZWFyc1BlcmlvZDogMQogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IFdhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZQogICAgICBOYW1lOiBIYXJkd2FyZS1XYXJyYW50eUV4cGlyYXRpb25EYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIE5hbWU6IExvY2F0aW9uCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246IHwKICAgIC0tLQogICAgUGFnZXM6CiAgICAgIC0gTmFtZTogQ29udGVudAogICAgICAgIExheW91dDoKICAgICAgICAgIENvbHVtbnM6IDEKICAgICAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgICAgIFJvd1N0YXJ0OiAxCgogICAgU2VjdGlvbnM6CiAgICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgQ29udGVudDoKICAgICAgICAgIC0gREY6IExvY2F0aW9uLVR5cGUKICAgICAgICAgIC0gREY6IExvY2F0aW9uLUN1c3RvbWVySUQKICAgICAgICAgIC0gREY6IExvY2F0aW9uLU93bmVyCiAgICAgICAgICAtIERGOiBMb2NhdGlvbi1QaG9uZTEKICAgICAgICAgIC0gREY6IExvY2F0aW9uLVBob25lMgogICAgICAgICAgLSBERjogTG9jYXRpb24tRmF4CiAgICAgICAgICAtIERGOiBMb2NhdGlvbi1FTWFpbAogICAgICAgICAgLSBERjogTG9jYXRpb24tQWRkcmVzcwogICAgICAgICAgLSBERjogTG9jYXRpb24tTm90ZQogICAgICAgICAgICBNYW5kYXRvcnk6IDEKICBEeW5hbWljRmllbGRzOgogICAgTG9jYXRpb24tQWRkcmVzczoKICAgICAgQ0lDbGFzczogTG9jYXRpb24KICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogQWRkcmVzcwogICAgICBOYW1lOiBMb2NhdGlvbi1BZGRyZXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1DdXN0b21lcklEOgogICAgICBDSUNsYXNzOiBMb2NhdGlvbgogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBQb3NzaWJsZU5vbmU6IDEKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IEN1c3RvbWVyIENvbXBhbnkKICAgICAgTmFtZTogTG9jYXRpb24tQ3VzdG9tZXJJRAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tRU1haWw6CiAgICAgIENJQ2xhc3M6IExvY2F0aW9uCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRS1NYWlsCiAgICAgIE5hbWU6IExvY2F0aW9uLUVNYWlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1GYXg6CiAgICAgIENJQ2xhc3M6IExvY2F0aW9uCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRmF4CiAgICAgIE5hbWU6IExvY2F0aW9uLUZheAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tTm90ZToKICAgICAgQ0lDbGFzczogTG9jYXRpb24KICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTm90ZQogICAgICBOYW1lOiBMb2NhdGlvbi1Ob3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1Pd25lcjoKICAgICAgQ0lDbGFzczogTG9jYXRpb24KICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogT3duZXIKICAgICAgTmFtZTogTG9jYXRpb24tT3duZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVBob25lMToKICAgICAgQ0lDbGFzczogTG9jYXRpb24KICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBQaG9uZSAxCiAgICAgIE5hbWU6IExvY2F0aW9uLVBob25lMQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUGhvbmUyOgogICAgICBDSUNsYXNzOiBMb2NhdGlvbgogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFBob25lIDIKICAgICAgTmFtZTogTG9jYXRpb24tUGhvbmUyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1UeXBlOgogICAgICBDSUNsYXNzOiBMb2NhdGlvbgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OkxvY2F0aW9uOjpUeXBlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogTG9jYXRpb24tVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICBOYW1lOiBOZXR3b3JrCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246IHwKICAgIC0tLQogICAgUGFnZXM6CiAgICAgIC0gTmFtZTogQ29udGVudAogICAgICAgIExheW91dDoKICAgICAgICAgIENvbHVtbnM6IDEKICAgICAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgICAgIFJvd1N0YXJ0OiAxCgogICAgU2VjdGlvbnM6CiAgICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgQ29udGVudDoKICAgICAgICAgIC0gREY6IE5ldHdvcmstRGVzY3JpcHRpb24KICAgICAgICAgIC0gREY6IE5ldHdvcmstVHlwZQogICAgICAgICAgLSBERjogTmV0d29yay1DdXN0b21lcklECiAgICAgICAgICAtIERGOiBOZXR3b3JrLU93bmVyCiAgICAgICAgICAtIERGOiBOZXR3b3JrLU5ldHdvcmtBZGRyZXNzCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogTmV0d29yay1Ob3RlCiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogIER5bmFtaWNGaWVsZHM6CiAgICBOZXR3b3JrLUN1c3RvbWVySUQ6CiAgICAgIENJQ2xhc3M6IE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBDdXN0b21lciBDb21wYW55CiAgICAgIE5hbWU6IE5ldHdvcmstQ3VzdG9tZXJJRAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTmV0d29yay1EZXNjcmlwdGlvbjoKICAgICAgQ0lDbGFzczogTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBOZXR3b3JrLURlc2NyaXB0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBOZXR3b3JrLU5ldHdvcmtBZGRyZXNzOgogICAgICBDSUNsYXNzOiBOZXR3b3JrCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IE5ldHdvcmstTmV0d29ya0FkZHJlc3NTdWJQcmltYXJ5QXR0cmlidXRlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBOZXR3b3JrCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTmFtZQogICAgICAgICAgICBOYW1lOiBOZXR3b3JrLU5ldHdvcmtBZGRyZXNzU3ViUHJpbWFyeUF0dHJpYnV0ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IE5ldHdvcmstTmV0d29ya0FkZHJlc3NTdWJuZXRNYXNrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBOZXR3b3JrCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6IDI1NS4yNTUuMjU1LjAKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3VibmV0IE1hc2sKICAgICAgICAgICAgTmFtZTogTmV0d29yay1OZXR3b3JrQWRkcmVzc1N1Ym5ldE1hc2sKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBOZXR3b3JrLU5ldHdvcmtBZGRyZXNzR2F0ZXdheQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogTmV0d29yawogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogMQogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBHYXRld2F5CiAgICAgICAgICAgIE5hbWU6IE5ldHdvcmstTmV0d29ya0FkZHJlc3NHYXRld2F5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogMQogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBBZGRyZXNzCiAgICAgIE5hbWU6IE5ldHdvcmstTmV0d29ya0FkZHJlc3MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIE5ldHdvcmstTm90ZToKICAgICAgQ0lDbGFzczogTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBOb3RlCiAgICAgIE5hbWU6IE5ldHdvcmstTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTmV0d29yay1Pd25lcjoKICAgICAgQ0lDbGFzczogTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBPd25lcgogICAgICBOYW1lOiBOZXR3b3JrLU93bmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBOZXR3b3JrLVR5cGU6CiAgICAgIENJQ2xhc3M6IE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzOiBJVFNNOjpDb25maWdJdGVtOjpOZXR3b3JrOjpUeXBlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogTmV0d29yay1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIE5hbWU6IFNvZnR3YXJlCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246IHwKICAgIC0tLQogICAgUGFnZXM6CiAgICAgIC0gTmFtZTogQ29udGVudAogICAgICAgIExheW91dDoKICAgICAgICAgIENvbHVtbnM6IDEKICAgICAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgICAgICBDb250ZW50OgogICAgICAgICAgLSBTZWN0aW9uOiBBdHRyaWJ1dGVzCiAgICAgICAgICAgIENvbHVtblN0YXJ0OiAxCiAgICAgICAgICAgIFJvd1N0YXJ0OiAxCgogICAgU2VjdGlvbnM6CiAgICAgIEF0dHJpYnV0ZXM6CiAgICAgICAgQ29udGVudDoKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLVZlbmRvcgogICAgICAgICAgLSBERjogU29mdHdhcmUtVmVyc2lvbgogICAgICAgICAgLSBERjogU29mdHdhcmUtRGVzY3JpcHRpb24KICAgICAgICAgIC0gREY6IFNvZnR3YXJlLVR5cGUKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLUN1c3RvbWVySUQKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLU93bmVyCiAgICAgICAgICAtIERGOiBTb2Z0d2FyZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLUxpY2VuY2VUeXBlCiAgICAgICAgICAtIERGOiBTb2Z0d2FyZS1MaWNlbmNlS2V5CiAgICAgICAgICAgIE1hbmRhdG9yeTogMQogICAgICAgICAgLSBERjogU29mdHdhcmUtTWVkaWEKICAgICAgICAgIC0gREY6IFNvZnR3YXJlLU5vdGUKICAgICAgICAgICAgTWFuZGF0b3J5OiAxCiAgRHluYW1pY0ZpZWxkczoKICAgIFNvZnR3YXJlLUN1c3RvbWVySUQ6CiAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogQ3VzdG9tZXIgQ29tcGFueQogICAgICBOYW1lOiBTb2Z0d2FyZS1DdXN0b21lcklECiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBTb2Z0d2FyZS1EZXNjcmlwdGlvbjoKICAgICAgQ0lDbGFzczogU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogRGVzY3JpcHRpb24KICAgICAgTmFtZTogU29mdHdhcmUtRGVzY3JpcHRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLUxpY2VuY2VLZXk6CiAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IFNvZnR3YXJlLUxpY2VuY2VLZXlTdWJQcmltYXJ5QXR0cmlidXRlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE5hbWUKICAgICAgICAgICAgTmFtZTogU29mdHdhcmUtTGljZW5jZUtleVN1YlByaW1hcnlBdHRyaWJ1dGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBTb2Z0d2FyZS1MaWNlbmNlS2V5UXVhbnRpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6IDEKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgICcxJzogMQogICAgICAgICAgICAgICAgJzEwJzogMTAKICAgICAgICAgICAgICAgICcxMDAnOiAxMDAKICAgICAgICAgICAgICAgICcxMDAwJzogMTAwMAogICAgICAgICAgICAgICAgJzEwMSc6IDEwMQogICAgICAgICAgICAgICAgJzEwMic6IDEwMgogICAgICAgICAgICAgICAgJzEwMyc6IDEwMwogICAgICAgICAgICAgICAgJzEwNCc6IDEwNAogICAgICAgICAgICAgICAgJzEwNSc6IDEwNQogICAgICAgICAgICAgICAgJzEwNic6IDEwNgogICAgICAgICAgICAgICAgJzEwNyc6IDEwNwogICAgICAgICAgICAgICAgJzEwOCc6IDEwOAogICAgICAgICAgICAgICAgJzEwOSc6IDEwOQogICAgICAgICAgICAgICAgJzExJzogMTEKICAgICAgICAgICAgICAgICcxMTAnOiAxMTAKICAgICAgICAgICAgICAgICcxMTEnOiAxMTEKICAgICAgICAgICAgICAgICcxMTInOiAxMTIKICAgICAgICAgICAgICAgICcxMTMnOiAxMTMKICAgICAgICAgICAgICAgICcxMTQnOiAxMTQKICAgICAgICAgICAgICAgICcxMTUnOiAxMTUKICAgICAgICAgICAgICAgICcxMTYnOiAxMTYKICAgICAgICAgICAgICAgICcxMTcnOiAxMTcKICAgICAgICAgICAgICAgICcxMTgnOiAxMTgKICAgICAgICAgICAgICAgICcxMTknOiAxMTkKICAgICAgICAgICAgICAgICcxMic6IDEyCiAgICAgICAgICAgICAgICAnMTIwJzogMTIwCiAgICAgICAgICAgICAgICAnMTIxJzogMTIxCiAgICAgICAgICAgICAgICAnMTIyJzogMTIyCiAgICAgICAgICAgICAgICAnMTIzJzogMTIzCiAgICAgICAgICAgICAgICAnMTI0JzogMTI0CiAgICAgICAgICAgICAgICAnMTI1JzogMTI1CiAgICAgICAgICAgICAgICAnMTI2JzogMTI2CiAgICAgICAgICAgICAgICAnMTI3JzogMTI3CiAgICAgICAgICAgICAgICAnMTI4JzogMTI4CiAgICAgICAgICAgICAgICAnMTI5JzogMTI5CiAgICAgICAgICAgICAgICAnMTMnOiAxMwogICAgICAgICAgICAgICAgJzEzMCc6IDEzMAogICAgICAgICAgICAgICAgJzEzMSc6IDEzMQogICAgICAgICAgICAgICAgJzEzMic6IDEzMgogICAgICAgICAgICAgICAgJzEzMyc6IDEzMwogICAgICAgICAgICAgICAgJzEzNCc6IDEzNAogICAgICAgICAgICAgICAgJzEzNSc6IDEzNQogICAgICAgICAgICAgICAgJzEzNic6IDEzNgogICAgICAgICAgICAgICAgJzEzNyc6IDEzNwogICAgICAgICAgICAgICAgJzEzOCc6IDEzOAogICAgICAgICAgICAgICAgJzEzOSc6IDEzOQogICAgICAgICAgICAgICAgJzE0JzogMTQKICAgICAgICAgICAgICAgICcxNDAnOiAxNDAKICAgICAgICAgICAgICAgICcxNDEnOiAxNDEKICAgICAgICAgICAgICAgICcxNDInOiAxNDIKICAgICAgICAgICAgICAgICcxNDMnOiAxNDMKICAgICAgICAgICAgICAgICcxNDQnOiAxNDQKICAgICAgICAgICAgICAgICcxNDUnOiAxNDUKICAgICAgICAgICAgICAgICcxNDYnOiAxNDYKICAgICAgICAgICAgICAgICcxNDcnOiAxNDcKICAgICAgICAgICAgICAgICcxNDgnOiAxNDgKICAgICAgICAgICAgICAgICcxNDknOiAxNDkKICAgICAgICAgICAgICAgICcxNSc6IDE1CiAgICAgICAgICAgICAgICAnMTUwJzogMTUwCiAgICAgICAgICAgICAgICAnMTUxJzogMTUxCiAgICAgICAgICAgICAgICAnMTUyJzogMTUyCiAgICAgICAgICAgICAgICAnMTUzJzogMTUzCiAgICAgICAgICAgICAgICAnMTU0JzogMTU0CiAgICAgICAgICAgICAgICAnMTU1JzogMTU1CiAgICAgICAgICAgICAgICAnMTU2JzogMTU2CiAgICAgICAgICAgICAgICAnMTU3JzogMTU3CiAgICAgICAgICAgICAgICAnMTU4JzogMTU4CiAgICAgICAgICAgICAgICAnMTU5JzogMTU5CiAgICAgICAgICAgICAgICAnMTYnOiAxNgogICAgICAgICAgICAgICAgJzE2MCc6IDE2MAogICAgICAgICAgICAgICAgJzE2MSc6IDE2MQogICAgICAgICAgICAgICAgJzE2Mic6IDE2MgogICAgICAgICAgICAgICAgJzE2Myc6IDE2MwogICAgICAgICAgICAgICAgJzE2NCc6IDE2NAogICAgICAgICAgICAgICAgJzE2NSc6IDE2NQogICAgICAgICAgICAgICAgJzE2Nic6IDE2NgogICAgICAgICAgICAgICAgJzE2Nyc6IDE2NwogICAgICAgICAgICAgICAgJzE2OCc6IDE2OAogICAgICAgICAgICAgICAgJzE2OSc6IDE2OQogICAgICAgICAgICAgICAgJzE3JzogMTcKICAgICAgICAgICAgICAgICcxNzAnOiAxNzAKICAgICAgICAgICAgICAgICcxNzEnOiAxNzEKICAgICAgICAgICAgICAgICcxNzInOiAxNzIKICAgICAgICAgICAgICAgICcxNzMnOiAxNzMKICAgICAgICAgICAgICAgICcxNzQnOiAxNzQKICAgICAgICAgICAgICAgICcxNzUnOiAxNzUKICAgICAgICAgICAgICAgICcxNzYnOiAxNzYKICAgICAgICAgICAgICAgICcxNzcnOiAxNzcKICAgICAgICAgICAgICAgICcxNzgnOiAxNzgKICAgICAgICAgICAgICAgICcxNzknOiAxNzkKICAgICAgICAgICAgICAgICcxOCc6IDE4CiAgICAgICAgICAgICAgICAnMTgwJzogMTgwCiAgICAgICAgICAgICAgICAnMTgxJzogMTgxCiAgICAgICAgICAgICAgICAnMTgyJzogMTgyCiAgICAgICAgICAgICAgICAnMTgzJzogMTgzCiAgICAgICAgICAgICAgICAnMTg0JzogMTg0CiAgICAgICAgICAgICAgICAnMTg1JzogMTg1CiAgICAgICAgICAgICAgICAnMTg2JzogMTg2CiAgICAgICAgICAgICAgICAnMTg3JzogMTg3CiAgICAgICAgICAgICAgICAnMTg4JzogMTg4CiAgICAgICAgICAgICAgICAnMTg5JzogMTg5CiAgICAgICAgICAgICAgICAnMTknOiAxOQogICAgICAgICAgICAgICAgJzE5MCc6IDE5MAogICAgICAgICAgICAgICAgJzE5MSc6IDE5MQogICAgICAgICAgICAgICAgJzE5Mic6IDE5MgogICAgICAgICAgICAgICAgJzE5Myc6IDE5MwogICAgICAgICAgICAgICAgJzE5NCc6IDE5NAogICAgICAgICAgICAgICAgJzE5NSc6IDE5NQogICAgICAgICAgICAgICAgJzE5Nic6IDE5NgogICAgICAgICAgICAgICAgJzE5Nyc6IDE5NwogICAgICAgICAgICAgICAgJzE5OCc6IDE5OAogICAgICAgICAgICAgICAgJzE5OSc6IDE5OQogICAgICAgICAgICAgICAgJzInOiAyCiAgICAgICAgICAgICAgICAnMjAnOiAyMAogICAgICAgICAgICAgICAgJzIwMCc6IDIwMAogICAgICAgICAgICAgICAgJzIwMSc6IDIwMQogICAgICAgICAgICAgICAgJzIwMic6IDIwMgogICAgICAgICAgICAgICAgJzIwMyc6IDIwMwogICAgICAgICAgICAgICAgJzIwNCc6IDIwNAogICAgICAgICAgICAgICAgJzIwNSc6IDIwNQogICAgICAgICAgICAgICAgJzIwNic6IDIwNgogICAgICAgICAgICAgICAgJzIwNyc6IDIwNwogICAgICAgICAgICAgICAgJzIwOCc6IDIwOAogICAgICAgICAgICAgICAgJzIwOSc6IDIwOQogICAgICAgICAgICAgICAgJzIxJzogMjEKICAgICAgICAgICAgICAgICcyMTAnOiAyMTAKICAgICAgICAgICAgICAgICcyMTEnOiAyMTEKICAgICAgICAgICAgICAgICcyMTInOiAyMTIKICAgICAgICAgICAgICAgICcyMTMnOiAyMTMKICAgICAgICAgICAgICAgICcyMTQnOiAyMTQKICAgICAgICAgICAgICAgICcyMTUnOiAyMTUKICAgICAgICAgICAgICAgICcyMTYnOiAyMTYKICAgICAgICAgICAgICAgICcyMTcnOiAyMTcKICAgICAgICAgICAgICAgICcyMTgnOiAyMTgKICAgICAgICAgICAgICAgICcyMTknOiAyMTkKICAgICAgICAgICAgICAgICcyMic6IDIyCiAgICAgICAgICAgICAgICAnMjIwJzogMjIwCiAgICAgICAgICAgICAgICAnMjIxJzogMjIxCiAgICAgICAgICAgICAgICAnMjIyJzogMjIyCiAgICAgICAgICAgICAgICAnMjIzJzogMjIzCiAgICAgICAgICAgICAgICAnMjI0JzogMjI0CiAgICAgICAgICAgICAgICAnMjI1JzogMjI1CiAgICAgICAgICAgICAgICAnMjI2JzogMjI2CiAgICAgICAgICAgICAgICAnMjI3JzogMjI3CiAgICAgICAgICAgICAgICAnMjI4JzogMjI4CiAgICAgICAgICAgICAgICAnMjI5JzogMjI5CiAgICAgICAgICAgICAgICAnMjMnOiAyMwogICAgICAgICAgICAgICAgJzIzMCc6IDIzMAogICAgICAgICAgICAgICAgJzIzMSc6IDIzMQogICAgICAgICAgICAgICAgJzIzMic6IDIzMgogICAgICAgICAgICAgICAgJzIzMyc6IDIzMwogICAgICAgICAgICAgICAgJzIzNCc6IDIzNAogICAgICAgICAgICAgICAgJzIzNSc6IDIzNQogICAgICAgICAgICAgICAgJzIzNic6IDIzNgogICAgICAgICAgICAgICAgJzIzNyc6IDIzNwogICAgICAgICAgICAgICAgJzIzOCc6IDIzOAogICAgICAgICAgICAgICAgJzIzOSc6IDIzOQogICAgICAgICAgICAgICAgJzI0JzogMjQKICAgICAgICAgICAgICAgICcyNDAnOiAyNDAKICAgICAgICAgICAgICAgICcyNDEnOiAyNDEKICAgICAgICAgICAgICAgICcyNDInOiAyNDIKICAgICAgICAgICAgICAgICcyNDMnOiAyNDMKICAgICAgICAgICAgICAgICcyNDQnOiAyNDQKICAgICAgICAgICAgICAgICcyNDUnOiAyNDUKICAgICAgICAgICAgICAgICcyNDYnOiAyNDYKICAgICAgICAgICAgICAgICcyNDcnOiAyNDcKICAgICAgICAgICAgICAgICcyNDgnOiAyNDgKICAgICAgICAgICAgICAgICcyNDknOiAyNDkKICAgICAgICAgICAgICAgICcyNSc6IDI1CiAgICAgICAgICAgICAgICAnMjUwJzogMjUwCiAgICAgICAgICAgICAgICAnMjUxJzogMjUxCiAgICAgICAgICAgICAgICAnMjUyJzogMjUyCiAgICAgICAgICAgICAgICAnMjUzJzogMjUzCiAgICAgICAgICAgICAgICAnMjU0JzogMjU0CiAgICAgICAgICAgICAgICAnMjU1JzogMjU1CiAgICAgICAgICAgICAgICAnMjU2JzogMjU2CiAgICAgICAgICAgICAgICAnMjU3JzogMjU3CiAgICAgICAgICAgICAgICAnMjU4JzogMjU4CiAgICAgICAgICAgICAgICAnMjU5JzogMjU5CiAgICAgICAgICAgICAgICAnMjYnOiAyNgogICAgICAgICAgICAgICAgJzI2MCc6IDI2MAogICAgICAgICAgICAgICAgJzI2MSc6IDI2MQogICAgICAgICAgICAgICAgJzI2Mic6IDI2MgogICAgICAgICAgICAgICAgJzI2Myc6IDI2MwogICAgICAgICAgICAgICAgJzI2NCc6IDI2NAogICAgICAgICAgICAgICAgJzI2NSc6IDI2NQogICAgICAgICAgICAgICAgJzI2Nic6IDI2NgogICAgICAgICAgICAgICAgJzI2Nyc6IDI2NwogICAgICAgICAgICAgICAgJzI2OCc6IDI2OAogICAgICAgICAgICAgICAgJzI2OSc6IDI2OQogICAgICAgICAgICAgICAgJzI3JzogMjcKICAgICAgICAgICAgICAgICcyNzAnOiAyNzAKICAgICAgICAgICAgICAgICcyNzEnOiAyNzEKICAgICAgICAgICAgICAgICcyNzInOiAyNzIKICAgICAgICAgICAgICAgICcyNzMnOiAyNzMKICAgICAgICAgICAgICAgICcyNzQnOiAyNzQKICAgICAgICAgICAgICAgICcyNzUnOiAyNzUKICAgICAgICAgICAgICAgICcyNzYnOiAyNzYKICAgICAgICAgICAgICAgICcyNzcnOiAyNzcKICAgICAgICAgICAgICAgICcyNzgnOiAyNzgKICAgICAgICAgICAgICAgICcyNzknOiAyNzkKICAgICAgICAgICAgICAgICcyOCc6IDI4CiAgICAgICAgICAgICAgICAnMjgwJzogMjgwCiAgICAgICAgICAgICAgICAnMjgxJzogMjgxCiAgICAgICAgICAgICAgICAnMjgyJzogMjgyCiAgICAgICAgICAgICAgICAnMjgzJzogMjgzCiAgICAgICAgICAgICAgICAnMjg0JzogMjg0CiAgICAgICAgICAgICAgICAnMjg1JzogMjg1CiAgICAgICAgICAgICAgICAnMjg2JzogMjg2CiAgICAgICAgICAgICAgICAnMjg3JzogMjg3CiAgICAgICAgICAgICAgICAnMjg4JzogMjg4CiAgICAgICAgICAgICAgICAnMjg5JzogMjg5CiAgICAgICAgICAgICAgICAnMjknOiAyOQogICAgICAgICAgICAgICAgJzI5MCc6IDI5MAogICAgICAgICAgICAgICAgJzI5MSc6IDI5MQogICAgICAgICAgICAgICAgJzI5Mic6IDI5MgogICAgICAgICAgICAgICAgJzI5Myc6IDI5MwogICAgICAgICAgICAgICAgJzI5NCc6IDI5NAogICAgICAgICAgICAgICAgJzI5NSc6IDI5NQogICAgICAgICAgICAgICAgJzI5Nic6IDI5NgogICAgICAgICAgICAgICAgJzI5Nyc6IDI5NwogICAgICAgICAgICAgICAgJzI5OCc6IDI5OAogICAgICAgICAgICAgICAgJzI5OSc6IDI5OQogICAgICAgICAgICAgICAgJzMnOiAzCiAgICAgICAgICAgICAgICAnMzAnOiAzMAogICAgICAgICAgICAgICAgJzMwMCc6IDMwMAogICAgICAgICAgICAgICAgJzMwMSc6IDMwMQogICAgICAgICAgICAgICAgJzMwMic6IDMwMgogICAgICAgICAgICAgICAgJzMwMyc6IDMwMwogICAgICAgICAgICAgICAgJzMwNCc6IDMwNAogICAgICAgICAgICAgICAgJzMwNSc6IDMwNQogICAgICAgICAgICAgICAgJzMwNic6IDMwNgogICAgICAgICAgICAgICAgJzMwNyc6IDMwNwogICAgICAgICAgICAgICAgJzMwOCc6IDMwOAogICAgICAgICAgICAgICAgJzMwOSc6IDMwOQogICAgICAgICAgICAgICAgJzMxJzogMzEKICAgICAgICAgICAgICAgICczMTAnOiAzMTAKICAgICAgICAgICAgICAgICczMTEnOiAzMTEKICAgICAgICAgICAgICAgICczMTInOiAzMTIKICAgICAgICAgICAgICAgICczMTMnOiAzMTMKICAgICAgICAgICAgICAgICczMTQnOiAzMTQKICAgICAgICAgICAgICAgICczMTUnOiAzMTUKICAgICAgICAgICAgICAgICczMTYnOiAzMTYKICAgICAgICAgICAgICAgICczMTcnOiAzMTcKICAgICAgICAgICAgICAgICczMTgnOiAzMTgKICAgICAgICAgICAgICAgICczMTknOiAzMTkKICAgICAgICAgICAgICAgICczMic6IDMyCiAgICAgICAgICAgICAgICAnMzIwJzogMzIwCiAgICAgICAgICAgICAgICAnMzIxJzogMzIxCiAgICAgICAgICAgICAgICAnMzIyJzogMzIyCiAgICAgICAgICAgICAgICAnMzIzJzogMzIzCiAgICAgICAgICAgICAgICAnMzI0JzogMzI0CiAgICAgICAgICAgICAgICAnMzI1JzogMzI1CiAgICAgICAgICAgICAgICAnMzI2JzogMzI2CiAgICAgICAgICAgICAgICAnMzI3JzogMzI3CiAgICAgICAgICAgICAgICAnMzI4JzogMzI4CiAgICAgICAgICAgICAgICAnMzI5JzogMzI5CiAgICAgICAgICAgICAgICAnMzMnOiAzMwogICAgICAgICAgICAgICAgJzMzMCc6IDMzMAogICAgICAgICAgICAgICAgJzMzMSc6IDMzMQogICAgICAgICAgICAgICAgJzMzMic6IDMzMgogICAgICAgICAgICAgICAgJzMzMyc6IDMzMwogICAgICAgICAgICAgICAgJzMzNCc6IDMzNAogICAgICAgICAgICAgICAgJzMzNSc6IDMzNQogICAgICAgICAgICAgICAgJzMzNic6IDMzNgogICAgICAgICAgICAgICAgJzMzNyc6IDMzNwogICAgICAgICAgICAgICAgJzMzOCc6IDMzOAogICAgICAgICAgICAgICAgJzMzOSc6IDMzOQogICAgICAgICAgICAgICAgJzM0JzogMzQKICAgICAgICAgICAgICAgICczNDAnOiAzNDAKICAgICAgICAgICAgICAgICczNDEnOiAzNDEKICAgICAgICAgICAgICAgICczNDInOiAzNDIKICAgICAgICAgICAgICAgICczNDMnOiAzNDMKICAgICAgICAgICAgICAgICczNDQnOiAzNDQKICAgICAgICAgICAgICAgICczNDUnOiAzNDUKICAgICAgICAgICAgICAgICczNDYnOiAzNDYKICAgICAgICAgICAgICAgICczNDcnOiAzNDcKICAgICAgICAgICAgICAgICczNDgnOiAzNDgKICAgICAgICAgICAgICAgICczNDknOiAzNDkKICAgICAgICAgICAgICAgICczNSc6IDM1CiAgICAgICAgICAgICAgICAnMzUwJzogMzUwCiAgICAgICAgICAgICAgICAnMzUxJzogMzUxCiAgICAgICAgICAgICAgICAnMzUyJzogMzUyCiAgICAgICAgICAgICAgICAnMzUzJzogMzUzCiAgICAgICAgICAgICAgICAnMzU0JzogMzU0CiAgICAgICAgICAgICAgICAnMzU1JzogMzU1CiAgICAgICAgICAgICAgICAnMzU2JzogMzU2CiAgICAgICAgICAgICAgICAnMzU3JzogMzU3CiAgICAgICAgICAgICAgICAnMzU4JzogMzU4CiAgICAgICAgICAgICAgICAnMzU5JzogMzU5CiAgICAgICAgICAgICAgICAnMzYnOiAzNgogICAgICAgICAgICAgICAgJzM2MCc6IDM2MAogICAgICAgICAgICAgICAgJzM2MSc6IDM2MQogICAgICAgICAgICAgICAgJzM2Mic6IDM2MgogICAgICAgICAgICAgICAgJzM2Myc6IDM2MwogICAgICAgICAgICAgICAgJzM2NCc6IDM2NAogICAgICAgICAgICAgICAgJzM2NSc6IDM2NQogICAgICAgICAgICAgICAgJzM2Nic6IDM2NgogICAgICAgICAgICAgICAgJzM2Nyc6IDM2NwogICAgICAgICAgICAgICAgJzM2OCc6IDM2OAogICAgICAgICAgICAgICAgJzM2OSc6IDM2OQogICAgICAgICAgICAgICAgJzM3JzogMzcKICAgICAgICAgICAgICAgICczNzAnOiAzNzAKICAgICAgICAgICAgICAgICczNzEnOiAzNzEKICAgICAgICAgICAgICAgICczNzInOiAzNzIKICAgICAgICAgICAgICAgICczNzMnOiAzNzMKICAgICAgICAgICAgICAgICczNzQnOiAzNzQKICAgICAgICAgICAgICAgICczNzUnOiAzNzUKICAgICAgICAgICAgICAgICczNzYnOiAzNzYKICAgICAgICAgICAgICAgICczNzcnOiAzNzcKICAgICAgICAgICAgICAgICczNzgnOiAzNzgKICAgICAgICAgICAgICAgICczNzknOiAzNzkKICAgICAgICAgICAgICAgICczOCc6IDM4CiAgICAgICAgICAgICAgICAnMzgwJzogMzgwCiAgICAgICAgICAgICAgICAnMzgxJzogMzgxCiAgICAgICAgICAgICAgICAnMzgyJzogMzgyCiAgICAgICAgICAgICAgICAnMzgzJzogMzgzCiAgICAgICAgICAgICAgICAnMzg0JzogMzg0CiAgICAgICAgICAgICAgICAnMzg1JzogMzg1CiAgICAgICAgICAgICAgICAnMzg2JzogMzg2CiAgICAgICAgICAgICAgICAnMzg3JzogMzg3CiAgICAgICAgICAgICAgICAnMzg4JzogMzg4CiAgICAgICAgICAgICAgICAnMzg5JzogMzg5CiAgICAgICAgICAgICAgICAnMzknOiAzOQogICAgICAgICAgICAgICAgJzM5MCc6IDM5MAogICAgICAgICAgICAgICAgJzM5MSc6IDM5MQogICAgICAgICAgICAgICAgJzM5Mic6IDM5MgogICAgICAgICAgICAgICAgJzM5Myc6IDM5MwogICAgICAgICAgICAgICAgJzM5NCc6IDM5NAogICAgICAgICAgICAgICAgJzM5NSc6IDM5NQogICAgICAgICAgICAgICAgJzM5Nic6IDM5NgogICAgICAgICAgICAgICAgJzM5Nyc6IDM5NwogICAgICAgICAgICAgICAgJzM5OCc6IDM5OAogICAgICAgICAgICAgICAgJzM5OSc6IDM5OQogICAgICAgICAgICAgICAgJzQnOiA0CiAgICAgICAgICAgICAgICAnNDAnOiA0MAogICAgICAgICAgICAgICAgJzQwMCc6IDQwMAogICAgICAgICAgICAgICAgJzQwMSc6IDQwMQogICAgICAgICAgICAgICAgJzQwMic6IDQwMgogICAgICAgICAgICAgICAgJzQwMyc6IDQwMwogICAgICAgICAgICAgICAgJzQwNCc6IDQwNAogICAgICAgICAgICAgICAgJzQwNSc6IDQwNQogICAgICAgICAgICAgICAgJzQwNic6IDQwNgogICAgICAgICAgICAgICAgJzQwNyc6IDQwNwogICAgICAgICAgICAgICAgJzQwOCc6IDQwOAogICAgICAgICAgICAgICAgJzQwOSc6IDQwOQogICAgICAgICAgICAgICAgJzQxJzogNDEKICAgICAgICAgICAgICAgICc0MTAnOiA0MTAKICAgICAgICAgICAgICAgICc0MTEnOiA0MTEKICAgICAgICAgICAgICAgICc0MTInOiA0MTIKICAgICAgICAgICAgICAgICc0MTMnOiA0MTMKICAgICAgICAgICAgICAgICc0MTQnOiA0MTQKICAgICAgICAgICAgICAgICc0MTUnOiA0MTUKICAgICAgICAgICAgICAgICc0MTYnOiA0MTYKICAgICAgICAgICAgICAgICc0MTcnOiA0MTcKICAgICAgICAgICAgICAgICc0MTgnOiA0MTgKICAgICAgICAgICAgICAgICc0MTknOiA0MTkKICAgICAgICAgICAgICAgICc0Mic6IDQyCiAgICAgICAgICAgICAgICAnNDIwJzogNDIwCiAgICAgICAgICAgICAgICAnNDIxJzogNDIxCiAgICAgICAgICAgICAgICAnNDIyJzogNDIyCiAgICAgICAgICAgICAgICAnNDIzJzogNDIzCiAgICAgICAgICAgICAgICAnNDI0JzogNDI0CiAgICAgICAgICAgICAgICAnNDI1JzogNDI1CiAgICAgICAgICAgICAgICAnNDI2JzogNDI2CiAgICAgICAgICAgICAgICAnNDI3JzogNDI3CiAgICAgICAgICAgICAgICAnNDI4JzogNDI4CiAgICAgICAgICAgICAgICAnNDI5JzogNDI5CiAgICAgICAgICAgICAgICAnNDMnOiA0MwogICAgICAgICAgICAgICAgJzQzMCc6IDQzMAogICAgICAgICAgICAgICAgJzQzMSc6IDQzMQogICAgICAgICAgICAgICAgJzQzMic6IDQzMgogICAgICAgICAgICAgICAgJzQzMyc6IDQzMwogICAgICAgICAgICAgICAgJzQzNCc6IDQzNAogICAgICAgICAgICAgICAgJzQzNSc6IDQzNQogICAgICAgICAgICAgICAgJzQzNic6IDQzNgogICAgICAgICAgICAgICAgJzQzNyc6IDQzNwogICAgICAgICAgICAgICAgJzQzOCc6IDQzOAogICAgICAgICAgICAgICAgJzQzOSc6IDQzOQogICAgICAgICAgICAgICAgJzQ0JzogNDQKICAgICAgICAgICAgICAgICc0NDAnOiA0NDAKICAgICAgICAgICAgICAgICc0NDEnOiA0NDEKICAgICAgICAgICAgICAgICc0NDInOiA0NDIKICAgICAgICAgICAgICAgICc0NDMnOiA0NDMKICAgICAgICAgICAgICAgICc0NDQnOiA0NDQKICAgICAgICAgICAgICAgICc0NDUnOiA0NDUKICAgICAgICAgICAgICAgICc0NDYnOiA0NDYKICAgICAgICAgICAgICAgICc0NDcnOiA0NDcKICAgICAgICAgICAgICAgICc0NDgnOiA0NDgKICAgICAgICAgICAgICAgICc0NDknOiA0NDkKICAgICAgICAgICAgICAgICc0NSc6IDQ1CiAgICAgICAgICAgICAgICAnNDUwJzogNDUwCiAgICAgICAgICAgICAgICAnNDUxJzogNDUxCiAgICAgICAgICAgICAgICAnNDUyJzogNDUyCiAgICAgICAgICAgICAgICAnNDUzJzogNDUzCiAgICAgICAgICAgICAgICAnNDU0JzogNDU0CiAgICAgICAgICAgICAgICAnNDU1JzogNDU1CiAgICAgICAgICAgICAgICAnNDU2JzogNDU2CiAgICAgICAgICAgICAgICAnNDU3JzogNDU3CiAgICAgICAgICAgICAgICAnNDU4JzogNDU4CiAgICAgICAgICAgICAgICAnNDU5JzogNDU5CiAgICAgICAgICAgICAgICAnNDYnOiA0NgogICAgICAgICAgICAgICAgJzQ2MCc6IDQ2MAogICAgICAgICAgICAgICAgJzQ2MSc6IDQ2MQogICAgICAgICAgICAgICAgJzQ2Mic6IDQ2MgogICAgICAgICAgICAgICAgJzQ2Myc6IDQ2MwogICAgICAgICAgICAgICAgJzQ2NCc6IDQ2NAogICAgICAgICAgICAgICAgJzQ2NSc6IDQ2NQogICAgICAgICAgICAgICAgJzQ2Nic6IDQ2NgogICAgICAgICAgICAgICAgJzQ2Nyc6IDQ2NwogICAgICAgICAgICAgICAgJzQ2OCc6IDQ2OAogICAgICAgICAgICAgICAgJzQ2OSc6IDQ2OQogICAgICAgICAgICAgICAgJzQ3JzogNDcKICAgICAgICAgICAgICAgICc0NzAnOiA0NzAKICAgICAgICAgICAgICAgICc0NzEnOiA0NzEKICAgICAgICAgICAgICAgICc0NzInOiA0NzIKICAgICAgICAgICAgICAgICc0NzMnOiA0NzMKICAgICAgICAgICAgICAgICc0NzQnOiA0NzQKICAgICAgICAgICAgICAgICc0NzUnOiA0NzUKICAgICAgICAgICAgICAgICc0NzYnOiA0NzYKICAgICAgICAgICAgICAgICc0NzcnOiA0NzcKICAgICAgICAgICAgICAgICc0NzgnOiA0NzgKICAgICAgICAgICAgICAgICc0NzknOiA0NzkKICAgICAgICAgICAgICAgICc0OCc6IDQ4CiAgICAgICAgICAgICAgICAnNDgwJzogNDgwCiAgICAgICAgICAgICAgICAnNDgxJzogNDgxCiAgICAgICAgICAgICAgICAnNDgyJzogNDgyCiAgICAgICAgICAgICAgICAnNDgzJzogNDgzCiAgICAgICAgICAgICAgICAnNDg0JzogNDg0CiAgICAgICAgICAgICAgICAnNDg1JzogNDg1CiAgICAgICAgICAgICAgICAnNDg2JzogNDg2CiAgICAgICAgICAgICAgICAnNDg3JzogNDg3CiAgICAgICAgICAgICAgICAnNDg4JzogNDg4CiAgICAgICAgICAgICAgICAnNDg5JzogNDg5CiAgICAgICAgICAgICAgICAnNDknOiA0OQogICAgICAgICAgICAgICAgJzQ5MCc6IDQ5MAogICAgICAgICAgICAgICAgJzQ5MSc6IDQ5MQogICAgICAgICAgICAgICAgJzQ5Mic6IDQ5MgogICAgICAgICAgICAgICAgJzQ5Myc6IDQ5MwogICAgICAgICAgICAgICAgJzQ5NCc6IDQ5NAogICAgICAgICAgICAgICAgJzQ5NSc6IDQ5NQogICAgICAgICAgICAgICAgJzQ5Nic6IDQ5NgogICAgICAgICAgICAgICAgJzQ5Nyc6IDQ5NwogICAgICAgICAgICAgICAgJzQ5OCc6IDQ5OAogICAgICAgICAgICAgICAgJzQ5OSc6IDQ5OQogICAgICAgICAgICAgICAgJzUnOiA1CiAgICAgICAgICAgICAgICAnNTAnOiA1MAogICAgICAgICAgICAgICAgJzUwMCc6IDUwMAogICAgICAgICAgICAgICAgJzUwMSc6IDUwMQogICAgICAgICAgICAgICAgJzUwMic6IDUwMgogICAgICAgICAgICAgICAgJzUwMyc6IDUwMwogICAgICAgICAgICAgICAgJzUwNCc6IDUwNAogICAgICAgICAgICAgICAgJzUwNSc6IDUwNQogICAgICAgICAgICAgICAgJzUwNic6IDUwNgogICAgICAgICAgICAgICAgJzUwNyc6IDUwNwogICAgICAgICAgICAgICAgJzUwOCc6IDUwOAogICAgICAgICAgICAgICAgJzUwOSc6IDUwOQogICAgICAgICAgICAgICAgJzUxJzogNTEKICAgICAgICAgICAgICAgICc1MTAnOiA1MTAKICAgICAgICAgICAgICAgICc1MTEnOiA1MTEKICAgICAgICAgICAgICAgICc1MTInOiA1MTIKICAgICAgICAgICAgICAgICc1MTMnOiA1MTMKICAgICAgICAgICAgICAgICc1MTQnOiA1MTQKICAgICAgICAgICAgICAgICc1MTUnOiA1MTUKICAgICAgICAgICAgICAgICc1MTYnOiA1MTYKICAgICAgICAgICAgICAgICc1MTcnOiA1MTcKICAgICAgICAgICAgICAgICc1MTgnOiA1MTgKICAgICAgICAgICAgICAgICc1MTknOiA1MTkKICAgICAgICAgICAgICAgICc1Mic6IDUyCiAgICAgICAgICAgICAgICAnNTIwJzogNTIwCiAgICAgICAgICAgICAgICAnNTIxJzogNTIxCiAgICAgICAgICAgICAgICAnNTIyJzogNTIyCiAgICAgICAgICAgICAgICAnNTIzJzogNTIzCiAgICAgICAgICAgICAgICAnNTI0JzogNTI0CiAgICAgICAgICAgICAgICAnNTI1JzogNTI1CiAgICAgICAgICAgICAgICAnNTI2JzogNTI2CiAgICAgICAgICAgICAgICAnNTI3JzogNTI3CiAgICAgICAgICAgICAgICAnNTI4JzogNTI4CiAgICAgICAgICAgICAgICAnNTI5JzogNTI5CiAgICAgICAgICAgICAgICAnNTMnOiA1MwogICAgICAgICAgICAgICAgJzUzMCc6IDUzMAogICAgICAgICAgICAgICAgJzUzMSc6IDUzMQogICAgICAgICAgICAgICAgJzUzMic6IDUzMgogICAgICAgICAgICAgICAgJzUzMyc6IDUzMwogICAgICAgICAgICAgICAgJzUzNCc6IDUzNAogICAgICAgICAgICAgICAgJzUzNSc6IDUzNQogICAgICAgICAgICAgICAgJzUzNic6IDUzNgogICAgICAgICAgICAgICAgJzUzNyc6IDUzNwogICAgICAgICAgICAgICAgJzUzOCc6IDUzOAogICAgICAgICAgICAgICAgJzUzOSc6IDUzOQogICAgICAgICAgICAgICAgJzU0JzogNTQKICAgICAgICAgICAgICAgICc1NDAnOiA1NDAKICAgICAgICAgICAgICAgICc1NDEnOiA1NDEKICAgICAgICAgICAgICAgICc1NDInOiA1NDIKICAgICAgICAgICAgICAgICc1NDMnOiA1NDMKICAgICAgICAgICAgICAgICc1NDQnOiA1NDQKICAgICAgICAgICAgICAgICc1NDUnOiA1NDUKICAgICAgICAgICAgICAgICc1NDYnOiA1NDYKICAgICAgICAgICAgICAgICc1NDcnOiA1NDcKICAgICAgICAgICAgICAgICc1NDgnOiA1NDgKICAgICAgICAgICAgICAgICc1NDknOiA1NDkKICAgICAgICAgICAgICAgICc1NSc6IDU1CiAgICAgICAgICAgICAgICAnNTUwJzogNTUwCiAgICAgICAgICAgICAgICAnNTUxJzogNTUxCiAgICAgICAgICAgICAgICAnNTUyJzogNTUyCiAgICAgICAgICAgICAgICAnNTUzJzogNTUzCiAgICAgICAgICAgICAgICAnNTU0JzogNTU0CiAgICAgICAgICAgICAgICAnNTU1JzogNTU1CiAgICAgICAgICAgICAgICAnNTU2JzogNTU2CiAgICAgICAgICAgICAgICAnNTU3JzogNTU3CiAgICAgICAgICAgICAgICAnNTU4JzogNTU4CiAgICAgICAgICAgICAgICAnNTU5JzogNTU5CiAgICAgICAgICAgICAgICAnNTYnOiA1NgogICAgICAgICAgICAgICAgJzU2MCc6IDU2MAogICAgICAgICAgICAgICAgJzU2MSc6IDU2MQogICAgICAgICAgICAgICAgJzU2Mic6IDU2MgogICAgICAgICAgICAgICAgJzU2Myc6IDU2MwogICAgICAgICAgICAgICAgJzU2NCc6IDU2NAogICAgICAgICAgICAgICAgJzU2NSc6IDU2NQogICAgICAgICAgICAgICAgJzU2Nic6IDU2NgogICAgICAgICAgICAgICAgJzU2Nyc6IDU2NwogICAgICAgICAgICAgICAgJzU2OCc6IDU2OAogICAgICAgICAgICAgICAgJzU2OSc6IDU2OQogICAgICAgICAgICAgICAgJzU3JzogNTcKICAgICAgICAgICAgICAgICc1NzAnOiA1NzAKICAgICAgICAgICAgICAgICc1NzEnOiA1NzEKICAgICAgICAgICAgICAgICc1NzInOiA1NzIKICAgICAgICAgICAgICAgICc1NzMnOiA1NzMKICAgICAgICAgICAgICAgICc1NzQnOiA1NzQKICAgICAgICAgICAgICAgICc1NzUnOiA1NzUKICAgICAgICAgICAgICAgICc1NzYnOiA1NzYKICAgICAgICAgICAgICAgICc1NzcnOiA1NzcKICAgICAgICAgICAgICAgICc1NzgnOiA1NzgKICAgICAgICAgICAgICAgICc1NzknOiA1NzkKICAgICAgICAgICAgICAgICc1OCc6IDU4CiAgICAgICAgICAgICAgICAnNTgwJzogNTgwCiAgICAgICAgICAgICAgICAnNTgxJzogNTgxCiAgICAgICAgICAgICAgICAnNTgyJzogNTgyCiAgICAgICAgICAgICAgICAnNTgzJzogNTgzCiAgICAgICAgICAgICAgICAnNTg0JzogNTg0CiAgICAgICAgICAgICAgICAnNTg1JzogNTg1CiAgICAgICAgICAgICAgICAnNTg2JzogNTg2CiAgICAgICAgICAgICAgICAnNTg3JzogNTg3CiAgICAgICAgICAgICAgICAnNTg4JzogNTg4CiAgICAgICAgICAgICAgICAnNTg5JzogNTg5CiAgICAgICAgICAgICAgICAnNTknOiA1OQogICAgICAgICAgICAgICAgJzU5MCc6IDU5MAogICAgICAgICAgICAgICAgJzU5MSc6IDU5MQogICAgICAgICAgICAgICAgJzU5Mic6IDU5MgogICAgICAgICAgICAgICAgJzU5Myc6IDU5MwogICAgICAgICAgICAgICAgJzU5NCc6IDU5NAogICAgICAgICAgICAgICAgJzU5NSc6IDU5NQogICAgICAgICAgICAgICAgJzU5Nic6IDU5NgogICAgICAgICAgICAgICAgJzU5Nyc6IDU5NwogICAgICAgICAgICAgICAgJzU5OCc6IDU5OAogICAgICAgICAgICAgICAgJzU5OSc6IDU5OQogICAgICAgICAgICAgICAgJzYnOiA2CiAgICAgICAgICAgICAgICAnNjAnOiA2MAogICAgICAgICAgICAgICAgJzYwMCc6IDYwMAogICAgICAgICAgICAgICAgJzYwMSc6IDYwMQogICAgICAgICAgICAgICAgJzYwMic6IDYwMgogICAgICAgICAgICAgICAgJzYwMyc6IDYwMwogICAgICAgICAgICAgICAgJzYwNCc6IDYwNAogICAgICAgICAgICAgICAgJzYwNSc6IDYwNQogICAgICAgICAgICAgICAgJzYwNic6IDYwNgogICAgICAgICAgICAgICAgJzYwNyc6IDYwNwogICAgICAgICAgICAgICAgJzYwOCc6IDYwOAogICAgICAgICAgICAgICAgJzYwOSc6IDYwOQogICAgICAgICAgICAgICAgJzYxJzogNjEKICAgICAgICAgICAgICAgICc2MTAnOiA2MTAKICAgICAgICAgICAgICAgICc2MTEnOiA2MTEKICAgICAgICAgICAgICAgICc2MTInOiA2MTIKICAgICAgICAgICAgICAgICc2MTMnOiA2MTMKICAgICAgICAgICAgICAgICc2MTQnOiA2MTQKICAgICAgICAgICAgICAgICc2MTUnOiA2MTUKICAgICAgICAgICAgICAgICc2MTYnOiA2MTYKICAgICAgICAgICAgICAgICc2MTcnOiA2MTcKICAgICAgICAgICAgICAgICc2MTgnOiA2MTgKICAgICAgICAgICAgICAgICc2MTknOiA2MTkKICAgICAgICAgICAgICAgICc2Mic6IDYyCiAgICAgICAgICAgICAgICAnNjIwJzogNjIwCiAgICAgICAgICAgICAgICAnNjIxJzogNjIxCiAgICAgICAgICAgICAgICAnNjIyJzogNjIyCiAgICAgICAgICAgICAgICAnNjIzJzogNjIzCiAgICAgICAgICAgICAgICAnNjI0JzogNjI0CiAgICAgICAgICAgICAgICAnNjI1JzogNjI1CiAgICAgICAgICAgICAgICAnNjI2JzogNjI2CiAgICAgICAgICAgICAgICAnNjI3JzogNjI3CiAgICAgICAgICAgICAgICAnNjI4JzogNjI4CiAgICAgICAgICAgICAgICAnNjI5JzogNjI5CiAgICAgICAgICAgICAgICAnNjMnOiA2MwogICAgICAgICAgICAgICAgJzYzMCc6IDYzMAogICAgICAgICAgICAgICAgJzYzMSc6IDYzMQogICAgICAgICAgICAgICAgJzYzMic6IDYzMgogICAgICAgICAgICAgICAgJzYzMyc6IDYzMwogICAgICAgICAgICAgICAgJzYzNCc6IDYzNAogICAgICAgICAgICAgICAgJzYzNSc6IDYzNQogICAgICAgICAgICAgICAgJzYzNic6IDYzNgogICAgICAgICAgICAgICAgJzYzNyc6IDYzNwogICAgICAgICAgICAgICAgJzYzOCc6IDYzOAogICAgICAgICAgICAgICAgJzYzOSc6IDYzOQogICAgICAgICAgICAgICAgJzY0JzogNjQKICAgICAgICAgICAgICAgICc2NDAnOiA2NDAKICAgICAgICAgICAgICAgICc2NDEnOiA2NDEKICAgICAgICAgICAgICAgICc2NDInOiA2NDIKICAgICAgICAgICAgICAgICc2NDMnOiA2NDMKICAgICAgICAgICAgICAgICc2NDQnOiA2NDQKICAgICAgICAgICAgICAgICc2NDUnOiA2NDUKICAgICAgICAgICAgICAgICc2NDYnOiA2NDYKICAgICAgICAgICAgICAgICc2NDcnOiA2NDcKICAgICAgICAgICAgICAgICc2NDgnOiA2NDgKICAgICAgICAgICAgICAgICc2NDknOiA2NDkKICAgICAgICAgICAgICAgICc2NSc6IDY1CiAgICAgICAgICAgICAgICAnNjUwJzogNjUwCiAgICAgICAgICAgICAgICAnNjUxJzogNjUxCiAgICAgICAgICAgICAgICAnNjUyJzogNjUyCiAgICAgICAgICAgICAgICAnNjUzJzogNjUzCiAgICAgICAgICAgICAgICAnNjU0JzogNjU0CiAgICAgICAgICAgICAgICAnNjU1JzogNjU1CiAgICAgICAgICAgICAgICAnNjU2JzogNjU2CiAgICAgICAgICAgICAgICAnNjU3JzogNjU3CiAgICAgICAgICAgICAgICAnNjU4JzogNjU4CiAgICAgICAgICAgICAgICAnNjU5JzogNjU5CiAgICAgICAgICAgICAgICAnNjYnOiA2NgogICAgICAgICAgICAgICAgJzY2MCc6IDY2MAogICAgICAgICAgICAgICAgJzY2MSc6IDY2MQogICAgICAgICAgICAgICAgJzY2Mic6IDY2MgogICAgICAgICAgICAgICAgJzY2Myc6IDY2MwogICAgICAgICAgICAgICAgJzY2NCc6IDY2NAogICAgICAgICAgICAgICAgJzY2NSc6IDY2NQogICAgICAgICAgICAgICAgJzY2Nic6IDY2NgogICAgICAgICAgICAgICAgJzY2Nyc6IDY2NwogICAgICAgICAgICAgICAgJzY2OCc6IDY2OAogICAgICAgICAgICAgICAgJzY2OSc6IDY2OQogICAgICAgICAgICAgICAgJzY3JzogNjcKICAgICAgICAgICAgICAgICc2NzAnOiA2NzAKICAgICAgICAgICAgICAgICc2NzEnOiA2NzEKICAgICAgICAgICAgICAgICc2NzInOiA2NzIKICAgICAgICAgICAgICAgICc2NzMnOiA2NzMKICAgICAgICAgICAgICAgICc2NzQnOiA2NzQKICAgICAgICAgICAgICAgICc2NzUnOiA2NzUKICAgICAgICAgICAgICAgICc2NzYnOiA2NzYKICAgICAgICAgICAgICAgICc2NzcnOiA2NzcKICAgICAgICAgICAgICAgICc2NzgnOiA2NzgKICAgICAgICAgICAgICAgICc2NzknOiA2NzkKICAgICAgICAgICAgICAgICc2OCc6IDY4CiAgICAgICAgICAgICAgICAnNjgwJzogNjgwCiAgICAgICAgICAgICAgICAnNjgxJzogNjgxCiAgICAgICAgICAgICAgICAnNjgyJzogNjgyCiAgICAgICAgICAgICAgICAnNjgzJzogNjgzCiAgICAgICAgICAgICAgICAnNjg0JzogNjg0CiAgICAgICAgICAgICAgICAnNjg1JzogNjg1CiAgICAgICAgICAgICAgICAnNjg2JzogNjg2CiAgICAgICAgICAgICAgICAnNjg3JzogNjg3CiAgICAgICAgICAgICAgICAnNjg4JzogNjg4CiAgICAgICAgICAgICAgICAnNjg5JzogNjg5CiAgICAgICAgICAgICAgICAnNjknOiA2OQogICAgICAgICAgICAgICAgJzY5MCc6IDY5MAogICAgICAgICAgICAgICAgJzY5MSc6IDY5MQogICAgICAgICAgICAgICAgJzY5Mic6IDY5MgogICAgICAgICAgICAgICAgJzY5Myc6IDY5MwogICAgICAgICAgICAgICAgJzY5NCc6IDY5NAogICAgICAgICAgICAgICAgJzY5NSc6IDY5NQogICAgICAgICAgICAgICAgJzY5Nic6IDY5NgogICAgICAgICAgICAgICAgJzY5Nyc6IDY5NwogICAgICAgICAgICAgICAgJzY5OCc6IDY5OAogICAgICAgICAgICAgICAgJzY5OSc6IDY5OQogICAgICAgICAgICAgICAgJzcnOiA3CiAgICAgICAgICAgICAgICAnNzAnOiA3MAogICAgICAgICAgICAgICAgJzcwMCc6IDcwMAogICAgICAgICAgICAgICAgJzcwMSc6IDcwMQogICAgICAgICAgICAgICAgJzcwMic6IDcwMgogICAgICAgICAgICAgICAgJzcwMyc6IDcwMwogICAgICAgICAgICAgICAgJzcwNCc6IDcwNAogICAgICAgICAgICAgICAgJzcwNSc6IDcwNQogICAgICAgICAgICAgICAgJzcwNic6IDcwNgogICAgICAgICAgICAgICAgJzcwNyc6IDcwNwogICAgICAgICAgICAgICAgJzcwOCc6IDcwOAogICAgICAgICAgICAgICAgJzcwOSc6IDcwOQogICAgICAgICAgICAgICAgJzcxJzogNzEKICAgICAgICAgICAgICAgICc3MTAnOiA3MTAKICAgICAgICAgICAgICAgICc3MTEnOiA3MTEKICAgICAgICAgICAgICAgICc3MTInOiA3MTIKICAgICAgICAgICAgICAgICc3MTMnOiA3MTMKICAgICAgICAgICAgICAgICc3MTQnOiA3MTQKICAgICAgICAgICAgICAgICc3MTUnOiA3MTUKICAgICAgICAgICAgICAgICc3MTYnOiA3MTYKICAgICAgICAgICAgICAgICc3MTcnOiA3MTcKICAgICAgICAgICAgICAgICc3MTgnOiA3MTgKICAgICAgICAgICAgICAgICc3MTknOiA3MTkKICAgICAgICAgICAgICAgICc3Mic6IDcyCiAgICAgICAgICAgICAgICAnNzIwJzogNzIwCiAgICAgICAgICAgICAgICAnNzIxJzogNzIxCiAgICAgICAgICAgICAgICAnNzIyJzogNzIyCiAgICAgICAgICAgICAgICAnNzIzJzogNzIzCiAgICAgICAgICAgICAgICAnNzI0JzogNzI0CiAgICAgICAgICAgICAgICAnNzI1JzogNzI1CiAgICAgICAgICAgICAgICAnNzI2JzogNzI2CiAgICAgICAgICAgICAgICAnNzI3JzogNzI3CiAgICAgICAgICAgICAgICAnNzI4JzogNzI4CiAgICAgICAgICAgICAgICAnNzI5JzogNzI5CiAgICAgICAgICAgICAgICAnNzMnOiA3MwogICAgICAgICAgICAgICAgJzczMCc6IDczMAogICAgICAgICAgICAgICAgJzczMSc6IDczMQogICAgICAgICAgICAgICAgJzczMic6IDczMgogICAgICAgICAgICAgICAgJzczMyc6IDczMwogICAgICAgICAgICAgICAgJzczNCc6IDczNAogICAgICAgICAgICAgICAgJzczNSc6IDczNQogICAgICAgICAgICAgICAgJzczNic6IDczNgogICAgICAgICAgICAgICAgJzczNyc6IDczNwogICAgICAgICAgICAgICAgJzczOCc6IDczOAogICAgICAgICAgICAgICAgJzczOSc6IDczOQogICAgICAgICAgICAgICAgJzc0JzogNzQKICAgICAgICAgICAgICAgICc3NDAnOiA3NDAKICAgICAgICAgICAgICAgICc3NDEnOiA3NDEKICAgICAgICAgICAgICAgICc3NDInOiA3NDIKICAgICAgICAgICAgICAgICc3NDMnOiA3NDMKICAgICAgICAgICAgICAgICc3NDQnOiA3NDQKICAgICAgICAgICAgICAgICc3NDUnOiA3NDUKICAgICAgICAgICAgICAgICc3NDYnOiA3NDYKICAgICAgICAgICAgICAgICc3NDcnOiA3NDcKICAgICAgICAgICAgICAgICc3NDgnOiA3NDgKICAgICAgICAgICAgICAgICc3NDknOiA3NDkKICAgICAgICAgICAgICAgICc3NSc6IDc1CiAgICAgICAgICAgICAgICAnNzUwJzogNzUwCiAgICAgICAgICAgICAgICAnNzUxJzogNzUxCiAgICAgICAgICAgICAgICAnNzUyJzogNzUyCiAgICAgICAgICAgICAgICAnNzUzJzogNzUzCiAgICAgICAgICAgICAgICAnNzU0JzogNzU0CiAgICAgICAgICAgICAgICAnNzU1JzogNzU1CiAgICAgICAgICAgICAgICAnNzU2JzogNzU2CiAgICAgICAgICAgICAgICAnNzU3JzogNzU3CiAgICAgICAgICAgICAgICAnNzU4JzogNzU4CiAgICAgICAgICAgICAgICAnNzU5JzogNzU5CiAgICAgICAgICAgICAgICAnNzYnOiA3NgogICAgICAgICAgICAgICAgJzc2MCc6IDc2MAogICAgICAgICAgICAgICAgJzc2MSc6IDc2MQogICAgICAgICAgICAgICAgJzc2Mic6IDc2MgogICAgICAgICAgICAgICAgJzc2Myc6IDc2MwogICAgICAgICAgICAgICAgJzc2NCc6IDc2NAogICAgICAgICAgICAgICAgJzc2NSc6IDc2NQogICAgICAgICAgICAgICAgJzc2Nic6IDc2NgogICAgICAgICAgICAgICAgJzc2Nyc6IDc2NwogICAgICAgICAgICAgICAgJzc2OCc6IDc2OAogICAgICAgICAgICAgICAgJzc2OSc6IDc2OQogICAgICAgICAgICAgICAgJzc3JzogNzcKICAgICAgICAgICAgICAgICc3NzAnOiA3NzAKICAgICAgICAgICAgICAgICc3NzEnOiA3NzEKICAgICAgICAgICAgICAgICc3NzInOiA3NzIKICAgICAgICAgICAgICAgICc3NzMnOiA3NzMKICAgICAgICAgICAgICAgICc3NzQnOiA3NzQKICAgICAgICAgICAgICAgICc3NzUnOiA3NzUKICAgICAgICAgICAgICAgICc3NzYnOiA3NzYKICAgICAgICAgICAgICAgICc3NzcnOiA3NzcKICAgICAgICAgICAgICAgICc3NzgnOiA3NzgKICAgICAgICAgICAgICAgICc3NzknOiA3NzkKICAgICAgICAgICAgICAgICc3OCc6IDc4CiAgICAgICAgICAgICAgICAnNzgwJzogNzgwCiAgICAgICAgICAgICAgICAnNzgxJzogNzgxCiAgICAgICAgICAgICAgICAnNzgyJzogNzgyCiAgICAgICAgICAgICAgICAnNzgzJzogNzgzCiAgICAgICAgICAgICAgICAnNzg0JzogNzg0CiAgICAgICAgICAgICAgICAnNzg1JzogNzg1CiAgICAgICAgICAgICAgICAnNzg2JzogNzg2CiAgICAgICAgICAgICAgICAnNzg3JzogNzg3CiAgICAgICAgICAgICAgICAnNzg4JzogNzg4CiAgICAgICAgICAgICAgICAnNzg5JzogNzg5CiAgICAgICAgICAgICAgICAnNzknOiA3OQogICAgICAgICAgICAgICAgJzc5MCc6IDc5MAogICAgICAgICAgICAgICAgJzc5MSc6IDc5MQogICAgICAgICAgICAgICAgJzc5Mic6IDc5MgogICAgICAgICAgICAgICAgJzc5Myc6IDc5MwogICAgICAgICAgICAgICAgJzc5NCc6IDc5NAogICAgICAgICAgICAgICAgJzc5NSc6IDc5NQogICAgICAgICAgICAgICAgJzc5Nic6IDc5NgogICAgICAgICAgICAgICAgJzc5Nyc6IDc5NwogICAgICAgICAgICAgICAgJzc5OCc6IDc5OAogICAgICAgICAgICAgICAgJzc5OSc6IDc5OQogICAgICAgICAgICAgICAgJzgnOiA4CiAgICAgICAgICAgICAgICAnODAnOiA4MAogICAgICAgICAgICAgICAgJzgwMCc6IDgwMAogICAgICAgICAgICAgICAgJzgwMSc6IDgwMQogICAgICAgICAgICAgICAgJzgwMic6IDgwMgogICAgICAgICAgICAgICAgJzgwMyc6IDgwMwogICAgICAgICAgICAgICAgJzgwNCc6IDgwNAogICAgICAgICAgICAgICAgJzgwNSc6IDgwNQogICAgICAgICAgICAgICAgJzgwNic6IDgwNgogICAgICAgICAgICAgICAgJzgwNyc6IDgwNwogICAgICAgICAgICAgICAgJzgwOCc6IDgwOAogICAgICAgICAgICAgICAgJzgwOSc6IDgwOQogICAgICAgICAgICAgICAgJzgxJzogODEKICAgICAgICAgICAgICAgICc4MTAnOiA4MTAKICAgICAgICAgICAgICAgICc4MTEnOiA4MTEKICAgICAgICAgICAgICAgICc4MTInOiA4MTIKICAgICAgICAgICAgICAgICc4MTMnOiA4MTMKICAgICAgICAgICAgICAgICc4MTQnOiA4MTQKICAgICAgICAgICAgICAgICc4MTUnOiA4MTUKICAgICAgICAgICAgICAgICc4MTYnOiA4MTYKICAgICAgICAgICAgICAgICc4MTcnOiA4MTcKICAgICAgICAgICAgICAgICc4MTgnOiA4MTgKICAgICAgICAgICAgICAgICc4MTknOiA4MTkKICAgICAgICAgICAgICAgICc4Mic6IDgyCiAgICAgICAgICAgICAgICAnODIwJzogODIwCiAgICAgICAgICAgICAgICAnODIxJzogODIxCiAgICAgICAgICAgICAgICAnODIyJzogODIyCiAgICAgICAgICAgICAgICAnODIzJzogODIzCiAgICAgICAgICAgICAgICAnODI0JzogODI0CiAgICAgICAgICAgICAgICAnODI1JzogODI1CiAgICAgICAgICAgICAgICAnODI2JzogODI2CiAgICAgICAgICAgICAgICAnODI3JzogODI3CiAgICAgICAgICAgICAgICAnODI4JzogODI4CiAgICAgICAgICAgICAgICAnODI5JzogODI5CiAgICAgICAgICAgICAgICAnODMnOiA4MwogICAgICAgICAgICAgICAgJzgzMCc6IDgzMAogICAgICAgICAgICAgICAgJzgzMSc6IDgzMQogICAgICAgICAgICAgICAgJzgzMic6IDgzMgogICAgICAgICAgICAgICAgJzgzMyc6IDgzMwogICAgICAgICAgICAgICAgJzgzNCc6IDgzNAogICAgICAgICAgICAgICAgJzgzNSc6IDgzNQogICAgICAgICAgICAgICAgJzgzNic6IDgzNgogICAgICAgICAgICAgICAgJzgzNyc6IDgzNwogICAgICAgICAgICAgICAgJzgzOCc6IDgzOAogICAgICAgICAgICAgICAgJzgzOSc6IDgzOQogICAgICAgICAgICAgICAgJzg0JzogODQKICAgICAgICAgICAgICAgICc4NDAnOiA4NDAKICAgICAgICAgICAgICAgICc4NDEnOiA4NDEKICAgICAgICAgICAgICAgICc4NDInOiA4NDIKICAgICAgICAgICAgICAgICc4NDMnOiA4NDMKICAgICAgICAgICAgICAgICc4NDQnOiA4NDQKICAgICAgICAgICAgICAgICc4NDUnOiA4NDUKICAgICAgICAgICAgICAgICc4NDYnOiA4NDYKICAgICAgICAgICAgICAgICc4NDcnOiA4NDcKICAgICAgICAgICAgICAgICc4NDgnOiA4NDgKICAgICAgICAgICAgICAgICc4NDknOiA4NDkKICAgICAgICAgICAgICAgICc4NSc6IDg1CiAgICAgICAgICAgICAgICAnODUwJzogODUwCiAgICAgICAgICAgICAgICAnODUxJzogODUxCiAgICAgICAgICAgICAgICAnODUyJzogODUyCiAgICAgICAgICAgICAgICAnODUzJzogODUzCiAgICAgICAgICAgICAgICAnODU0JzogODU0CiAgICAgICAgICAgICAgICAnODU1JzogODU1CiAgICAgICAgICAgICAgICAnODU2JzogODU2CiAgICAgICAgICAgICAgICAnODU3JzogODU3CiAgICAgICAgICAgICAgICAnODU4JzogODU4CiAgICAgICAgICAgICAgICAnODU5JzogODU5CiAgICAgICAgICAgICAgICAnODYnOiA4NgogICAgICAgICAgICAgICAgJzg2MCc6IDg2MAogICAgICAgICAgICAgICAgJzg2MSc6IDg2MQogICAgICAgICAgICAgICAgJzg2Mic6IDg2MgogICAgICAgICAgICAgICAgJzg2Myc6IDg2MwogICAgICAgICAgICAgICAgJzg2NCc6IDg2NAogICAgICAgICAgICAgICAgJzg2NSc6IDg2NQogICAgICAgICAgICAgICAgJzg2Nic6IDg2NgogICAgICAgICAgICAgICAgJzg2Nyc6IDg2NwogICAgICAgICAgICAgICAgJzg2OCc6IDg2OAogICAgICAgICAgICAgICAgJzg2OSc6IDg2OQogICAgICAgICAgICAgICAgJzg3JzogODcKICAgICAgICAgICAgICAgICc4NzAnOiA4NzAKICAgICAgICAgICAgICAgICc4NzEnOiA4NzEKICAgICAgICAgICAgICAgICc4NzInOiA4NzIKICAgICAgICAgICAgICAgICc4NzMnOiA4NzMKICAgICAgICAgICAgICAgICc4NzQnOiA4NzQKICAgICAgICAgICAgICAgICc4NzUnOiA4NzUKICAgICAgICAgICAgICAgICc4NzYnOiA4NzYKICAgICAgICAgICAgICAgICc4NzcnOiA4NzcKICAgICAgICAgICAgICAgICc4NzgnOiA4NzgKICAgICAgICAgICAgICAgICc4NzknOiA4NzkKICAgICAgICAgICAgICAgICc4OCc6IDg4CiAgICAgICAgICAgICAgICAnODgwJzogODgwCiAgICAgICAgICAgICAgICAnODgxJzogODgxCiAgICAgICAgICAgICAgICAnODgyJzogODgyCiAgICAgICAgICAgICAgICAnODgzJzogODgzCiAgICAgICAgICAgICAgICAnODg0JzogODg0CiAgICAgICAgICAgICAgICAnODg1JzogODg1CiAgICAgICAgICAgICAgICAnODg2JzogODg2CiAgICAgICAgICAgICAgICAnODg3JzogODg3CiAgICAgICAgICAgICAgICAnODg4JzogODg4CiAgICAgICAgICAgICAgICAnODg5JzogODg5CiAgICAgICAgICAgICAgICAnODknOiA4OQogICAgICAgICAgICAgICAgJzg5MCc6IDg5MAogICAgICAgICAgICAgICAgJzg5MSc6IDg5MQogICAgICAgICAgICAgICAgJzg5Mic6IDg5MgogICAgICAgICAgICAgICAgJzg5Myc6IDg5MwogICAgICAgICAgICAgICAgJzg5NCc6IDg5NAogICAgICAgICAgICAgICAgJzg5NSc6IDg5NQogICAgICAgICAgICAgICAgJzg5Nic6IDg5NgogICAgICAgICAgICAgICAgJzg5Nyc6IDg5NwogICAgICAgICAgICAgICAgJzg5OCc6IDg5OAogICAgICAgICAgICAgICAgJzg5OSc6IDg5OQogICAgICAgICAgICAgICAgJzknOiA5CiAgICAgICAgICAgICAgICAnOTAnOiA5MAogICAgICAgICAgICAgICAgJzkwMCc6IDkwMAogICAgICAgICAgICAgICAgJzkwMSc6IDkwMQogICAgICAgICAgICAgICAgJzkwMic6IDkwMgogICAgICAgICAgICAgICAgJzkwMyc6IDkwMwogICAgICAgICAgICAgICAgJzkwNCc6IDkwNAogICAgICAgICAgICAgICAgJzkwNSc6IDkwNQogICAgICAgICAgICAgICAgJzkwNic6IDkwNgogICAgICAgICAgICAgICAgJzkwNyc6IDkwNwogICAgICAgICAgICAgICAgJzkwOCc6IDkwOAogICAgICAgICAgICAgICAgJzkwOSc6IDkwOQogICAgICAgICAgICAgICAgJzkxJzogOTEKICAgICAgICAgICAgICAgICc5MTAnOiA5MTAKICAgICAgICAgICAgICAgICc5MTEnOiA5MTEKICAgICAgICAgICAgICAgICc5MTInOiA5MTIKICAgICAgICAgICAgICAgICc5MTMnOiA5MTMKICAgICAgICAgICAgICAgICc5MTQnOiA5MTQKICAgICAgICAgICAgICAgICc5MTUnOiA5MTUKICAgICAgICAgICAgICAgICc5MTYnOiA5MTYKICAgICAgICAgICAgICAgICc5MTcnOiA5MTcKICAgICAgICAgICAgICAgICc5MTgnOiA5MTgKICAgICAgICAgICAgICAgICc5MTknOiA5MTkKICAgICAgICAgICAgICAgICc5Mic6IDkyCiAgICAgICAgICAgICAgICAnOTIwJzogOTIwCiAgICAgICAgICAgICAgICAnOTIxJzogOTIxCiAgICAgICAgICAgICAgICAnOTIyJzogOTIyCiAgICAgICAgICAgICAgICAnOTIzJzogOTIzCiAgICAgICAgICAgICAgICAnOTI0JzogOTI0CiAgICAgICAgICAgICAgICAnOTI1JzogOTI1CiAgICAgICAgICAgICAgICAnOTI2JzogOTI2CiAgICAgICAgICAgICAgICAnOTI3JzogOTI3CiAgICAgICAgICAgICAgICAnOTI4JzogOTI4CiAgICAgICAgICAgICAgICAnOTI5JzogOTI5CiAgICAgICAgICAgICAgICAnOTMnOiA5MwogICAgICAgICAgICAgICAgJzkzMCc6IDkzMAogICAgICAgICAgICAgICAgJzkzMSc6IDkzMQogICAgICAgICAgICAgICAgJzkzMic6IDkzMgogICAgICAgICAgICAgICAgJzkzMyc6IDkzMwogICAgICAgICAgICAgICAgJzkzNCc6IDkzNAogICAgICAgICAgICAgICAgJzkzNSc6IDkzNQogICAgICAgICAgICAgICAgJzkzNic6IDkzNgogICAgICAgICAgICAgICAgJzkzNyc6IDkzNwogICAgICAgICAgICAgICAgJzkzOCc6IDkzOAogICAgICAgICAgICAgICAgJzkzOSc6IDkzOQogICAgICAgICAgICAgICAgJzk0JzogOTQKICAgICAgICAgICAgICAgICc5NDAnOiA5NDAKICAgICAgICAgICAgICAgICc5NDEnOiA5NDEKICAgICAgICAgICAgICAgICc5NDInOiA5NDIKICAgICAgICAgICAgICAgICc5NDMnOiA5NDMKICAgICAgICAgICAgICAgICc5NDQnOiA5NDQKICAgICAgICAgICAgICAgICc5NDUnOiA5NDUKICAgICAgICAgICAgICAgICc5NDYnOiA5NDYKICAgICAgICAgICAgICAgICc5NDcnOiA5NDcKICAgICAgICAgICAgICAgICc5NDgnOiA5NDgKICAgICAgICAgICAgICAgICc5NDknOiA5NDkKICAgICAgICAgICAgICAgICc5NSc6IDk1CiAgICAgICAgICAgICAgICAnOTUwJzogOTUwCiAgICAgICAgICAgICAgICAnOTUxJzogOTUxCiAgICAgICAgICAgICAgICAnOTUyJzogOTUyCiAgICAgICAgICAgICAgICAnOTUzJzogOTUzCiAgICAgICAgICAgICAgICAnOTU0JzogOTU0CiAgICAgICAgICAgICAgICAnOTU1JzogOTU1CiAgICAgICAgICAgICAgICAnOTU2JzogOTU2CiAgICAgICAgICAgICAgICAnOTU3JzogOTU3CiAgICAgICAgICAgICAgICAnOTU4JzogOTU4CiAgICAgICAgICAgICAgICAnOTU5JzogOTU5CiAgICAgICAgICAgICAgICAnOTYnOiA5NgogICAgICAgICAgICAgICAgJzk2MCc6IDk2MAogICAgICAgICAgICAgICAgJzk2MSc6IDk2MQogICAgICAgICAgICAgICAgJzk2Mic6IDk2MgogICAgICAgICAgICAgICAgJzk2Myc6IDk2MwogICAgICAgICAgICAgICAgJzk2NCc6IDk2NAogICAgICAgICAgICAgICAgJzk2NSc6IDk2NQogICAgICAgICAgICAgICAgJzk2Nic6IDk2NgogICAgICAgICAgICAgICAgJzk2Nyc6IDk2NwogICAgICAgICAgICAgICAgJzk2OCc6IDk2OAogICAgICAgICAgICAgICAgJzk2OSc6IDk2OQogICAgICAgICAgICAgICAgJzk3JzogOTcKICAgICAgICAgICAgICAgICc5NzAnOiA5NzAKICAgICAgICAgICAgICAgICc5NzEnOiA5NzEKICAgICAgICAgICAgICAgICc5NzInOiA5NzIKICAgICAgICAgICAgICAgICc5NzMnOiA5NzMKICAgICAgICAgICAgICAgICc5NzQnOiA5NzQKICAgICAgICAgICAgICAgICc5NzUnOiA5NzUKICAgICAgICAgICAgICAgICc5NzYnOiA5NzYKICAgICAgICAgICAgICAgICc5NzcnOiA5NzcKICAgICAgICAgICAgICAgICc5NzgnOiA5NzgKICAgICAgICAgICAgICAgICc5NzknOiA5NzkKICAgICAgICAgICAgICAgICc5OCc6IDk4CiAgICAgICAgICAgICAgICAnOTgwJzogOTgwCiAgICAgICAgICAgICAgICAnOTgxJzogOTgxCiAgICAgICAgICAgICAgICAnOTgyJzogOTgyCiAgICAgICAgICAgICAgICAnOTgzJzogOTgzCiAgICAgICAgICAgICAgICAnOTg0JzogOTg0CiAgICAgICAgICAgICAgICAnOTg1JzogOTg1CiAgICAgICAgICAgICAgICAnOTg2JzogOTg2CiAgICAgICAgICAgICAgICAnOTg3JzogOTg3CiAgICAgICAgICAgICAgICAnOTg4JzogOTg4CiAgICAgICAgICAgICAgICAnOTg5JzogOTg5CiAgICAgICAgICAgICAgICAnOTknOiA5OQogICAgICAgICAgICAgICAgJzk5MCc6IDk5MAogICAgICAgICAgICAgICAgJzk5MSc6IDk5MQogICAgICAgICAgICAgICAgJzk5Mic6IDk5MgogICAgICAgICAgICAgICAgJzk5Myc6IDk5MwogICAgICAgICAgICAgICAgJzk5NCc6IDk5NAogICAgICAgICAgICAgICAgJzk5NSc6IDk5NQogICAgICAgICAgICAgICAgJzk5Nic6IDk5NgogICAgICAgICAgICAgICAgJzk5Nyc6IDk5NwogICAgICAgICAgICAgICAgJzk5OCc6IDk5OAogICAgICAgICAgICAgICAgJzk5OSc6IDk5OQogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBRdWFudGl0eQogICAgICAgICAgICBOYW1lOiBTb2Z0d2FyZS1MaWNlbmNlS2V5UXVhbnRpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBTb2Z0d2FyZS1MaWNlbmNlS2V5RXhwaXJhdGlvbkRhdGUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBZZWFyc0luRnV0dXJlOiAxMAogICAgICAgICAgICAgIFllYXJzSW5QYXN0OiAyMAogICAgICAgICAgICAgIFllYXJzUGVyaW9kOiAxCiAgICAgICAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICAgICAgICBMYWJlbDogRXhwaXJhdGlvbiBEYXRlCiAgICAgICAgICAgIE5hbWU6IFNvZnR3YXJlLUxpY2VuY2VLZXlFeHBpcmF0aW9uRGF0ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6IDEKICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IExpY2VuY2UgS2V5CiAgICAgIE5hbWU6IFNvZnR3YXJlLUxpY2VuY2VLZXkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLUxpY2VuY2VUeXBlOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OlNvZnR3YXJlOjpMaWNlbmNlVHlwZQogICAgICAgIFBvc3NpYmxlTm9uZTogMQogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogMQogICAgICBGaWVsZFR5cGU6IEdlbmVyYWxDYXRhbG9nCiAgICAgIExhYmVsOiBMaWNlbmNlIFR5cGUKICAgICAgTmFtZTogU29mdHdhcmUtTGljZW5jZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLU1lZGlhOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1lZGlhCiAgICAgIE5hbWU6IFNvZnR3YXJlLU1lZGlhCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBTb2Z0d2FyZS1Ob3RlOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBOb3RlCiAgICAgIE5hbWU6IFNvZnR3YXJlLU5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLU93bmVyOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBPd25lcgogICAgICBOYW1lOiBTb2Z0d2FyZS1Pd25lcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgU29mdHdhcmUtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbCBOdW1iZXIKICAgICAgTmFtZTogU29mdHdhcmUtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBTb2Z0d2FyZS1UeXBlOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OlNvZnR3YXJlOjpUeXBlCiAgICAgICAgUG9zc2libGVOb25lOiAxCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAxCiAgICAgIEZpZWxkVHlwZTogR2VuZXJhbENhdGFsb2cKICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogU29mdHdhcmUtVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgU29mdHdhcmUtVmVuZG9yOgogICAgICBDSUNsYXNzOiBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFZlbmRvcgogICAgICBOYW1lOiBTb2Z0d2FyZS1WZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIFNvZnR3YXJlLVZlcnNpb246CiAgICAgIENJQ2xhc3M6IFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogVmVyc2lvbgogICAgICBOYW1lOiBTb2Z0d2FyZS1WZXJzaW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCg==</File>
        <File Location="scripts/test/sample/ITSMConfigurationManagement/Links/unittest.yml" Permission="660" Encode="Base64">LS0tCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBMb2NhdGlvbgogICAgTmFtZTogQ291bnRyeQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcwogICAgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsCiAgICBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlCiAgICBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaAogICAgY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uCiAgICByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlCiAgICB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gTG9jYXRpb24KICAgIE5hbWU6IFN1YnNpZGlhcnkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246CiAgICBBZGRyZXNzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbgogICAgXCAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMKICAgIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4KICAgIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBDTURCCiAgICBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCCiAgICBEZXNjcmlwdGlvblxyXG5cclxuU2VjdGlvbnM6XHJcbiAgQWRkcmVzczpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gSGVhZGVyOgogICAgQWRkcmVzc1xyXG4gICAgICAtIERGOiBMb2NhdGlvbi1TdHJlZXRcclxuICAgICAgLSBERjogTG9jYXRpb24tQ2l0eVxyXG4gICAgICAtCiAgICBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLUxhdGl0dWRlXHJcbiAgICAgIC0gREY6CiAgICBMb2NhdGlvbi1Mb25naXR1ZGUiCiAgRHluYW1pY0ZpZWxkczoKICAgIExvY2F0aW9uLUNpdHk6CiAgICAgIENJQ2xhc3M6IFN1YnNpZGlhcnkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENpdHkKICAgICAgTmFtZTogTG9jYXRpb24tQ2l0eQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tTGF0aXR1ZGU6CiAgICAgIENJQ2xhc3M6IFN1YnNpZGlhcnkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IExhdGl0dWRlCiAgICAgIE5hbWU6IExvY2F0aW9uLUxhdGl0dWRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1Mb25naXR1ZGU6CiAgICAgIENJQ2xhc3M6IFN1YnNpZGlhcnkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IExvbmdpdHVkZQogICAgICBOYW1lOiBMb2NhdGlvbi1Mb25naXR1ZGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAwCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogQ291bnRyeQogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVN0cmVldDoKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU3RyZWV0CiAgICAgIE5hbWU6IExvY2F0aW9uLVN0cmVldAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgRGVzY3JpcHRpb246XHJcbiAgICBUeXBlOiBEZXNjcmlwdGlvblxyXG4gICAgSGVhZGVyOgogICAgRGVzY3JpcHRpb24iCiAgUm9sZU5hbWU6IENNREIgRGVzY3JpcHRpb24KLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEJhY2tsaW5rczpcclxuICAgIFR5cGU6IENvbmZpZ0l0ZW1MaW5rc1xyXG4gICAgSGVhZGVyOgogICAgQmFja2xpbmtzXHJcbiAgICBMaW5rZWRBczogU291cmNlIgogIFJvbGVOYW1lOiBDTURCIEJhY2tsaW5rcwo=</File>
        <File Location="scripts/webservices/GenericConfigItemConnectorSOAP.yml" Permission="660" Encode="Base64">LS0tCkRlYnVnZ2VyOgogIERlYnVnVGhyZXNob2xkOiBkZWJ1ZwogIFRlc3RNb2RlOiAwCkRlc2NyaXB0aW9uOiBJVFNNIENvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBDb25uZWN0b3IgU2FtcGxlCkZyYW1ld29ya1ZlcnNpb246IDUuMC54IGdpdApQcm92aWRlcjoKICBPcGVyYXRpb246CiAgICBDb25maWdJdGVtQ3JlYXRlOgogICAgICBEZXNjcmlwdGlvbjogQ3JlYXRlcyBuZXcgQ29uZmlndXJhdGlvbiBJdGVtcyBmcm9tIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICBNYXBwaW5nSW5ib3VuZDoge30KICAgICAgTWFwcGluZ091dGJvdW5kOiB7fQogICAgICBUeXBlOiBDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlCiAgICBDb25maWdJdGVtRGVsZXRlOgogICAgICBEZXNjcmlwdGlvbjogRGVsZXRlcyBDb25maWd1cmF0aW9uIEl0ZW1zIGZyb20gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgIE1hcHBpbmdJbmJvdW5kOiB7fQogICAgICBNYXBwaW5nT3V0Ym91bmQ6IHt9CiAgICAgIFR5cGU6IENvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1EZWxldGUKICAgIENvbmZpZ0l0ZW1HZXQ6CiAgICAgIERlc2NyaXB0aW9uOiBHZXQgdGhlIGRldGFpbHMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMgZnJvbSBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgTWFwcGluZ0luYm91bmQ6IHt9CiAgICAgIE1hcHBpbmdPdXRib3VuZDoge30KICAgICAgVHlwZTogQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldAogICAgQ29uZmlnSXRlbVNlYXJjaDoKICAgICAgRGVzY3JpcHRpb246IFNlYXJjaCBDb25maWd1cmF0aW9uIEl0ZW1zIGZyb20gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgIE1hcHBpbmdJbmJvdW5kOiB7fQogICAgICBNYXBwaW5nT3V0Ym91bmQ6IHt9CiAgICAgIFR5cGU6IENvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1TZWFyY2gKICAgIENvbmZpZ0l0ZW1VcGRhdGU6CiAgICAgIERlc2NyaXB0aW9uOiBVcGRhdGVzIENvbmZpZ3VyYXRpb24gSXRlbXMgZnJvbSBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgTWFwcGluZ0luYm91bmQ6IHt9CiAgICAgIE1hcHBpbmdPdXRib3VuZDoge30KICAgICAgVHlwZTogQ29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZQogIFRyYW5zcG9ydDoKICAgIENvbmZpZzoKICAgICAgTWF4TGVuZ3RoOiAxMDAwMDAwMDAKICAgICAgTmFtZVNwYWNlOiBodHRwOi8vd3d3Lm90b2JvLm9yZy9Db25maWdJdGVtQ29ubmVjdG9yCiAgICAgIFJlcXVlc3ROYW1lRnJlZVRleHQ6ICcnCiAgICAgIFJlcXVlc3ROYW1lU2NoZW1lOiBQbGFpbgogICAgICBSZXNwb25zZU5hbWVGcmVlVGV4dDogJycKICAgICAgUmVzcG9uc2VOYW1lU2NoZW1lOiBSZXNwb25zZQogICAgVHlwZTogSFRUUDo6U09BUApSZW1vdGVTeXN0ZW06ICcnClJlcXVlc3RlcjoKICBUcmFuc3BvcnQ6CiAgICBUeXBlOiAnJwo=</File>
        <File Location="var/httpd/htdocs/js/Core.Agent.Admin.ACL.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vICRvcmlnaW46IG90b2JvIC0gNmVmZGM3YmYyYTMzMjUyNzdjZDc5YTYwZjBmMjQwN2Y4YWQ1OWU4NyAtIHZhci9odHRwZC9odGRvY3MvanMvQ29yZS5BZ2VudC5BZG1pbi5BQ0wuanMKLy8gLS0KLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKLy8gdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKLy8gRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCi8vIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCi8vIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgovLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQovLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLy8gLS0KCiJ1c2Ugc3RyaWN0IjsKCnZhciBDb3JlID0gQ29yZSB8fCB7fTsKQ29yZS5BZ2VudCA9IENvcmUuQWdlbnQgfHwge307CkNvcmUuQWdlbnQuQWRtaW4gPSBDb3JlLkFnZW50LkFkbWluIHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UgQ29yZS5BZ2VudC5BZG1pbgogKiBAbWVtYmVyb2YgQ29yZS5BZ2VudAogKiBAYXV0aG9yCiAqLwoKLyoqCiAqIEBuYW1lc3BhY2UgQ29yZS5BZ2VudC5BZG1pbi5BQ0wKICogQG1lbWJlcm9mIENvcmUuQWdlbnQuQWRtaW4KICogQGF1dGhvcgogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgQUNMIG1vZHVsZS4KICovCkNvcmUuQWdlbnQuQWRtaW4uQUNMID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIEtleXNXaXRob3V0U3Via2V5cwogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuQWRtaW4uQUNMCiAgICAgKiBAbWVtYmVyIHtBcnJheX0KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBLZXlzV2l0aG91dFN1YmtleXMKICAgICAqLwogICAgdmFyIEtleXNXaXRob3V0U3Via2V5cyA9IFsgJ0FjdGl2aXR5RGlhbG9nJywgJ0FjdGlvbicsICdQcm9jZXNzJywgJ0Zvcm0nLCAnRm9ybVN0ZCcgXTsKCiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBDb3JlLkFnZW50LkFkbWluLkFDTAogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplIHRoZSBtb2R1bGUuCiAgICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbigpIHsKICAgICAgICBDb3JlLlVJLlRhYmxlLkluaXRUYWJsZUZpbHRlcigkKCcjRmlsdGVyQUNMcycpLCAkKCcjQUNMcycpLCAwKTsKICAgICAgICBpZiAoQ29yZS5Db25maWcuR2V0KCdTdWJhY3Rpb24nKSA9PT0gJ0FDTEVkaXQnKSB7CiAgICAgICAgICAgIFRhcmdldE5TLkluaXRBQ0xFZGl0KCk7CiAgICAgICAgfQoKICAgICAgICAvLyBpbml0IGNoZWNrYm94IHRvIGluY2x1ZGUgaW52YWxpZCBlbGVtZW50cwogICAgICAgICQoJ2lucHV0I0luY2x1ZGVJbnZhbGlkJykub2ZmKCdjaGFuZ2UnKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgVVJMID0gQ29yZS5Db25maWcuR2V0KCJCYXNlbGluayIpICsgJ0FjdGlvbj0nICsgQ29yZS5Db25maWcuR2V0KCJBY3Rpb24iKSArICc7SW5jbHVkZUludmFsaWQ9JyArICggJCh0aGlzKS5pcygnOmNoZWNrZWQnKSA/IDEgOiAwICk7CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gVVJMOwogICAgICAgIH0pOwovLyBSb3RoZXJPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICAgICAgJCgnI09iamVjdFR5cGUnKS5vbignY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgJ0FjdGlvbj1BZG1pbkFDTDtPYmplY3RUeXBlPScgKyAkKHRoaXMpLnZhbCgpOwogICAgICAgIH0pOwovLyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIH07CgogICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICogQG5hbWUgU2hvd0RlbGV0ZUFDTENvbmZpcm1hdGlvbkRpYWxvZwogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuQWRtaW4uQUNMCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCAtIFRoZSBjb25maXJtYXRpb24gZGlhbG9nIHRlbXBsYXRlIGluIHRoZSBIVE1MLgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFNob3dzIGEgY29uZmlybWF0aW9uIGRpYWxvZyB0byBkZWxldGUgdGhlIEFDTCBlbnRyeS4KICAgICAqLwogICAgZnVuY3Rpb24gU2hvd0RlbGV0ZUFDTENvbmZpcm1hdGlvbkRpYWxvZygkRWxlbWVudCkgewogICAgICAgIHZhciBEaWFsb2dFbGVtZW50ID0gJEVsZW1lbnQuZGF0YSgnZGlhbG9nLWVsZW1lbnQnKSwKICAgICAgICAgICAgRGlhbG9nVGl0bGUgPSAkRWxlbWVudC5kYXRhKCdkaWFsb2ctdGl0bGUnKSwKICAgICAgICAgICAgQUNMSUQgPSAkRWxlbWVudC5kYXRhKCdpZCcpOwoKICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygKICAgICAgICAgICAgJCgnI0RpYWxvZ3MgIycgKyBEaWFsb2dFbGVtZW50KSwKICAgICAgICAgICAgRGlhbG9nVGl0bGUsCiAgICAgICAgICAgICcyNDBweCcsCiAgICAgICAgICAgICdDZW50ZXInLAogICAgICAgICAgICB0cnVlLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIExhYmVsOiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnQ2FuY2VsJyksCiAgICAgICAgICAgICAgICAgICBDbGFzczogJ1ByaW1hcnknLAogICAgICAgICAgICAgICAgICAgRnVuY3Rpb246IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5DbG9zZURpYWxvZygkKCcuRGlhbG9nJykpOwogICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ0RlbGV0ZScpLAogICAgICAgICAgICAgICAgICAgRnVuY3Rpb246IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICB2YXIgRGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbjogJ0FkbWluQUNMJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1YmFjdGlvbjogJ0FDTERlbGV0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDogQUNMSUQsCi8vIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RUeXBlOiAkKCdbbmFtZT1PYmplY3RUeXBlXScpLnZhbCgpLAovLyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hhbmdlIHRoZSBkaWFsb2cgdG8gYW4gYWpheCBsb2FkZXIKICAgICAgICAgICAgICAgICAgICAgICAkKCcuRGlhbG9nJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5Db250ZW50Rm9vdGVyJykuZW1wdHkoKS5lbmQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnLklubmVyQ29udGVudCcpLmVtcHR5KCkuYXBwZW5kKCc8ZGl2IGNsYXNzPSJTcGFjaW5nIENlbnRlciI+PHNwYW4gY2xhc3M9IkFKQVhMb2FkZXIiPjwvc3Bhbj48L2Rpdj4nKTsKCiAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsbCB0aGUgYWpheCBmdW5jdGlvbgogICAgICAgICAgICAgICAgICAgICAgIENvcmUuQUpBWC5GdW5jdGlvbkNhbGwoQ29yZS5Db25maWcuR2V0KCdDR0lIYW5kbGUnKSwgRGF0YSwgZnVuY3Rpb24gKFJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUmVzcG9uc2UgfHwgIVJlc3BvbnNlLlN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KFJlc3BvbnNlLk1lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZycpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZS5BcHAuSW50ZXJuYWxSZWRpcmVjdCh7Ci8vIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbjogRGF0YS5BY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbjogRGF0YS5BY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RUeXBlOiBEYXRhLk9iamVjdFR5cGUKLy8gRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgIH0sICdqc29uJyk7CiAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICBdCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBuYW1lIFJlc3RvcmVBQ0xEYXRhCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5BZG1pbi5BQ0wKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVybnMge0Jvb2xlYW59IFJldHVybnMgZmFsc2UsIGlmICREYXRhT2JqLnZhbCgpIGlzIG5vdCBkZWZpbmVkCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJERhdGFPYmoKICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkVGFyZ2V0T2JqCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgQnVpbGQgdXAgdGhlIERPTSBmcm9tIHRoZSBzdG9yZWQgQUNMIGRhdGEuCiAgICAgKi8KICAgIFRhcmdldE5TLlJlc3RvcmVBQ0xEYXRhID0gZnVuY3Rpb24oJERhdGFPYmosICRUYXJnZXRPYmopIHsKCiAgICAgICAgdmFyIEpTT05TdHJpbmcgPSAkRGF0YU9iai52YWwoKSwKICAgICAgICAgICAgRGF0YSwKICAgICAgICAgICAgTGV2ZWwxS2V5LCBMZXZlbDJLZXksIExldmVsM0tleSwgTGV2ZWw0S2V5LAogICAgICAgICAgICAkSXRlbU9iakxldmVsMSwgJEl0ZW1PYmpMZXZlbDIsICRJdGVtT2JqTGV2ZWwzLCAkSXRlbU9iakxldmVsNCwKICAgICAgICAgICAgJFRlbXBPYmpMZXZlbDIsICRUZW1wT2JqTGV2ZWwzLCAkVGVtcE9iakxldmVsNCwKICAgICAgICAgICAgU2VsZWN0SFRNTCwKICAgICAgICAgICAgVmFsdWUsCiAgICAgICAgICAgIENsYXNzLAogICAgICAgICAgICBCb29sLAogICAgICAgICAgICBJc01hdGNoSXRlbSA9ICgkVGFyZ2V0T2JqLmF0dHIoJ2lkJykgPT09ICdBQ0xNYXRjaCcpID8gdHJ1ZSA6IGZhbHNlOwoKICAgICAgICBpZiAoIUpTT05TdHJpbmcpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgRGF0YSA9IEpTT04ucGFyc2UoSlNPTlN0cmluZyk7CgogICAgICAgIGZvciAoTGV2ZWwxS2V5IGluIERhdGEpIHsKCiAgICAgICAgICAgIGlmIChEYXRhLmhhc093blByb3BlcnR5KExldmVsMUtleSkpIHsKCiAgICAgICAgICAgICAgICAkSXRlbU9iakxldmVsMSA9ICQoJyNUZW1wbGF0ZUxldmVsMSA+IGxpJykuY2xvbmUoKTsKICAgICAgICAgICAgICAgICRJdGVtT2JqTGV2ZWwxCiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtY29udGVudCcsIExldmVsMUtleSkKICAgICAgICAgICAgICAgICAgICAuZmluZCgnc3Ryb25nJykKICAgICAgICAgICAgICAgICAgICAudGV4dChDb3JlLkFwcC5Fc2NhcGVIVE1MKExldmVsMUtleSkpCiAgICAgICAgICAgICAgICAgICAgLm5leHQoJ3VsJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkljb24uQWRkQnV0dG9uJykKICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJCgnIycgKyBMZXZlbDFLZXkpLnBhcmVudCgpLmh0bWwoKSk7CgogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBEYXRhW0xldmVsMUtleV0gPT09ICdvYmplY3QnKSB7CgogICAgICAgICAgICAgICAgICAgICRUZW1wT2JqTGV2ZWwyID0gJCgnPGRpdiAvPicpOwoKICAgICAgICAgICAgICAgICAgICBmb3IgKExldmVsMktleSBpbiBEYXRhW0xldmVsMUtleV0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChEYXRhW0xldmVsMUtleV0uaGFzT3duUHJvcGVydHkoTGV2ZWwyS2V5KSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLmluQXJyYXkoTGV2ZWwyS2V5LCBLZXlzV2l0aG91dFN1YmtleXMpICE9PSAtMSAmJiAhSXNNYXRjaEl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSXRlbU9iakxldmVsMiA9ICQoJyNUZW1wbGF0ZUxldmVsMkxhc3QgPiBsaScpLmNsb25lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSXRlbU9iakxldmVsMiA9ICQoJyNUZW1wbGF0ZUxldmVsMiA+IGxpJykuY2xvbmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSXRlbU9iakxldmVsMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLWNvbnRlbnQnLCBMZXZlbDJLZXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3N0cm9uZycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQoQ29yZS5BcHAuRXNjYXBlSFRNTChMZXZlbDJLZXkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCd1bCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5JY29uLkFkZEJ1dHRvbicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5leHQoJ2lucHV0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignZGF0YS1wYXJlbnQnLCBMZXZlbDJLZXkpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMZXZlbDJLZXkgPT09ICdEeW5hbWljRmllbGQnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0SFRNTCA9ICQoJyMnICsgTGV2ZWwyS2V5KS5wYXJlbnQoKS5odG1sKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0SFRNTCArPSAnPHNwYW4gY2xhc3M9IkFkZEFsbCI+JyArIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCdBZGQgYWxsJykgKyAnPC9zcGFuPic7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRJdGVtT2JqTGV2ZWwyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZnRlcihTZWxlY3RIVE1MKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGFyZW50KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2lucHV0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRJdGVtT2JqTGV2ZWwyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdzZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignaWQnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignZGF0YS1sZXZlbCcsIDMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLmluQXJyYXkoTGV2ZWwyS2V5LCBLZXlzV2l0aG91dFN1YmtleXMpICE9PSAtMSAmJiAhSXNNYXRjaEl0ZW0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEl0ZW1PYmpMZXZlbDIuZmluZCgndWwnKS5hZGRDbGFzcygnTGFzdExldmVsJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZW1wT2JqTGV2ZWwzID0gJCgnPGRpdiAvPicpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKExldmVsM0tleSBpbiBEYXRhW0xldmVsMUtleV1bTGV2ZWwyS2V5XSkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERhdGFbTGV2ZWwxS2V5XVtMZXZlbDJLZXldLmhhc093blByb3BlcnR5KExldmVsM0tleSkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9IERhdGFbTGV2ZWwxS2V5XVtMZXZlbDJLZXldW0xldmVsM0tleV07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEl0ZW1PYmpMZXZlbDMgPSAkKCcjVGVtcGxhdGVMZXZlbDQgPiBsaScpLmNsb25lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSXRlbU9iakxldmVsMwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLWNvbnRlbnQnLCBWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnZW0nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5iZWZvcmUoJzxzcGFuPicgKyBDb3JlLkFwcC5Fc2NhcGVIVE1MKFZhbHVlKSArICc8L3NwYW4+Jyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRlbXBPYmpMZXZlbDMuYXBwZW5kKCRJdGVtT2JqTGV2ZWwzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSXRlbU9iakxldmVsMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY2hpbGRyZW4oJ3VsJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByZXBlbmQoJFRlbXBPYmpMZXZlbDMuaHRtbCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkl0ZW1QcmVmaXgnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgRGF0YVtMZXZlbDFLZXldW0xldmVsMktleV0gPT09ICdvYmplY3QnKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGVtcE9iakxldmVsMyA9ICQoJzxkaXYgLz4nKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoTGV2ZWwzS2V5IGluIERhdGFbTGV2ZWwxS2V5XVtMZXZlbDJLZXldKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERhdGFbTGV2ZWwxS2V5XVtMZXZlbDJLZXldLmhhc093blByb3BlcnR5KExldmVsM0tleSkpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEl0ZW1PYmpMZXZlbDMgPSAkKCcjVGVtcGxhdGVMZXZlbDMgPiBsaScpLmNsb25lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEl0ZW1PYmpMZXZlbDMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtY29udGVudCcsIExldmVsM0tleSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNoaWxkcmVuKCcuSWNvbicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZnRlcignPHNwYW4+JyArIENvcmUuQXBwLkVzY2FwZUhUTUwoTGV2ZWwzS2V5KSArICc8L3NwYW4+JyArICc6Jyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgRGF0YVtMZXZlbDFLZXldW0xldmVsMktleV1bTGV2ZWwzS2V5XSAhPT0gJ29iamVjdCcpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzID0gJ1RydWUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sID0gcGFyc2VJbnQoRGF0YVtMZXZlbDFLZXldW0xldmVsMktleV1bTGV2ZWwzS2V5XSwgMTApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEJvb2wgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzID0gJ0ZhbHNlJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEl0ZW1PYmpMZXZlbDMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCd1bCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ0Jvb2xlYW4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2xpJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLWNvbnRlbnQnLCBCb29sKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdEYXRhSXRlbScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnc3BhbicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYmVmb3JlKCc8c3BhbiBjbGFzcz0iSWNvbiAnICsgQ2xhc3MgKyAnIEJvb2xlYW4iIC8+JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGVtcE9iakxldmVsNCA9ICQoJzxkaXYgLz4nKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoTGV2ZWw0S2V5IGluIERhdGFbTGV2ZWwxS2V5XVtMZXZlbDJLZXldW0xldmVsM0tleV0pIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoRGF0YVtMZXZlbDFLZXldW0xldmVsMktleV1bTGV2ZWwzS2V5XS5oYXNPd25Qcm9wZXJ0eShMZXZlbDRLZXkpKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0gRGF0YVtMZXZlbDFLZXldW0xldmVsMktleV1bTGV2ZWwzS2V5XVtMZXZlbDRLZXldOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSXRlbU9iakxldmVsNCA9ICQoJyNUZW1wbGF0ZUxldmVsNCA+IGxpJykuY2xvbmUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSXRlbU9iakxldmVsNAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignZGF0YS1jb250ZW50JywgVmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdlbScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5iZWZvcmUoJzxzcGFuPicgKyBDb3JlLkFwcC5Fc2NhcGVIVE1MKFZhbHVlKSArICc8L3NwYW4+Jyk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZW1wT2JqTGV2ZWw0LmFwcGVuZCgkSXRlbU9iakxldmVsNCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEl0ZW1PYmpMZXZlbDMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jaGlsZHJlbigndWwnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnByZXBlbmQoJFRlbXBPYmpMZXZlbDQuaHRtbCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5JdGVtUHJlZml4JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZW1wT2JqTGV2ZWwzLmFwcGVuZCgkSXRlbU9iakxldmVsMyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEl0ZW1PYmpMZXZlbDIuY2hpbGRyZW4oJ3VsJykucHJlcGVuZCgkVGVtcE9iakxldmVsMy5odG1sKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUZW1wT2JqTGV2ZWwyLmFwcGVuZCgkSXRlbU9iakxldmVsMik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEl0ZW1PYmpMZXZlbDEuY2hpbGRyZW4oJ3VsJykucHJlcGVuZCgkVGVtcE9iakxldmVsMi5odG1sKCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJFRhcmdldE9iai5hcHBlbmQoJEl0ZW1PYmpMZXZlbDEpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIEFkZEl0ZW0KICAgICAqIEBtZW1iZXJvZiBDb3JlLkFnZW50LkFkbWluLkFDTAogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJE9iamVjdAogICAgICogQHBhcmFtIHtTdHJpbmd9IFR5cGUKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBBZGRzIGFuIGl0ZW0gdG8gdGhlIGxpc3QuCiAgICAgKi8KICAgIFRhcmdldE5TLkFkZEl0ZW0gPSBmdW5jdGlvbigkT2JqZWN0LCBUeXBlKSB7CgogICAgICAgIHZhciBBbHJlYWR5QWRkZWQgPSBmYWxzZSwKICAgICAgICAgICAgVmFsdWUgPSAkT2JqZWN0LnZhbCgpLAogICAgICAgICAgICBWYWx1ZUVzY2FwZWQgPSBDb3JlLkFwcC5Fc2NhcGVIVE1MKFZhbHVlKSwKICAgICAgICAgICAgTGV2ZWwgPSBwYXJzZUludCgkT2JqZWN0LmF0dHIoJ2RhdGEtbGV2ZWwnKSwgMTApLAogICAgICAgICAgICAkTGV2ZWxPYmosICRUYXJnZXQsICRUcmlnZ2VyT2JqLAogICAgICAgICAgICBQcmVmaXgsIFNlbGVjdEhUTUwsCiAgICAgICAgICAgIElzTWF0Y2hJdGVtID0gKCRPYmplY3QuY2xvc2VzdCgnI0FDTE1hdGNoJykubGVuZ3RoKSA/IHRydWUgOiBmYWxzZTsKCiAgICAgICAgaWYgKExldmVsID09PSAxKSB7CgogICAgICAgICAgICAkVGFyZ2V0ID0gJE9iamVjdC5wcmV2QWxsKCcuQUNMRmllbGRHcm91cCcpOwogICAgICAgICAgICAkVGFyZ2V0LmNoaWxkcmVuKCdsaScpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCdkYXRhLWNvbnRlbnQnKSA9PT0gVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICBBbHJlYWR5QWRkZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBpZiAoIUFscmVhZHlBZGRlZCkgewoKICAgICAgICAgICAgICAgICRMZXZlbE9iaiA9ICQoJyNUZW1wbGF0ZUxldmVsMSA+IGxpJykuY2xvbmUoKTsKICAgICAgICAgICAgICAgICRMZXZlbE9iagogICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLWNvbnRlbnQnLCBWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAuZmluZCgnc3Ryb25nJykKICAgICAgICAgICAgICAgICAgICAudGV4dChWYWx1ZUVzY2FwZWQpCiAgICAgICAgICAgICAgICAgICAgLm5leHQoJ3VsJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkljb24uQWRkQnV0dG9uJykKICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJCgnIycgKyBWYWx1ZSkucGFyZW50KCkuaHRtbCgpKTsKICAgICAgICAgICAgICAgICRUYXJnZXQuYXBwZW5kKCRMZXZlbE9iaik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBhbGVydChDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJykpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTZXQgZW1wdHkgdmFsdWUgZm9yICRPYmplY3QgYW5kIGJsdXIgaXRzIHNpYmxpbmcgbW9kZXJuIGlucHV0IGZpZWxkIChzZWUgYnVnIzE0MTU3KS4KICAgICAgICAgICAgJE9iamVjdC52YWwoJycpLnNpYmxpbmdzKCcuSW5wdXRGaWVsZF9Db250YWluZXInKS5maW5kKCcuSW5wdXRGaWVsZF9TZWFyY2gnKS5ibHVyKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKExldmVsID09PSAyKSB7CgogICAgICAgICAgICAkVGFyZ2V0ID0gJE9iamVjdC5wYXJlbnQoKTsKICAgICAgICAgICAgJFRhcmdldC5wYXJlbnQoKS5jaGlsZHJlbignbGknKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuYXR0cignZGF0YS1jb250ZW50JykgPT09IFZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgQWxyZWFkeUFkZGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgaWYgKCFBbHJlYWR5QWRkZWQpIHsKCiAgICAgICAgICAgICAgICBpZiAoJC5pbkFycmF5KFZhbHVlLCBLZXlzV2l0aG91dFN1YmtleXMpICE9PSAtMSAmJiAhSXNNYXRjaEl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAkTGV2ZWxPYmogPSAkKCcjVGVtcGxhdGVMZXZlbDJMYXN0ID4gbGknKS5jbG9uZSgpOwogICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqID0gJExldmVsT2JqLmZpbmQoJy5BZGRCdXR0b24nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMZXZlbE9iaiA9ICQoJyNUZW1wbGF0ZUxldmVsMiA+IGxpJykuY2xvbmUoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkTGV2ZWxPYmoKICAgICAgICAgICAgICAgICAgICAuYXR0cignZGF0YS1jb250ZW50JywgVmFsdWUpCiAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3N0cm9uZycpCiAgICAgICAgICAgICAgICAgICAgLnRleHQoVmFsdWVFc2NhcGVkKQogICAgICAgICAgICAgICAgICAgIC5uZXh0KCd1bCcpCiAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5JY29uLkFkZEJ1dHRvbicpCiAgICAgICAgICAgICAgICAgICAgLm5leHQoJ2lucHV0JykKICAgICAgICAgICAgICAgICAgICAuYXR0cignZGF0YS1wYXJlbnQnLCBWYWx1ZSk7CgogICAgICAgICAgICAgICAgaWYgKFZhbHVlID09PSAnRHluYW1pY0ZpZWxkJykgewogICAgICAgICAgICAgICAgICAgIFNlbGVjdEhUTUwgPSAkKCcjJyArIFZhbHVlKS5wYXJlbnQoKS5odG1sKCk7CiAgICAgICAgICAgICAgICAgICAgU2VsZWN0SFRNTCArPSAnPHNwYW4gY2xhc3M9IkFkZEFsbCI+JyArIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCdBZGQgYWxsJykgKyAnPC9zcGFuPic7CgogICAgICAgICAgICAgICAgICAgICRMZXZlbE9iagogICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnaW5wdXQnKQogICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoU2VsZWN0SFRNTCkKICAgICAgICAgICAgICAgICAgICAgICAgLnBhcmVudCgpCiAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dCcpCiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAkTGV2ZWxPYmoKICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdpZCcpCiAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLWxldmVsJywgMyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkVGFyZ2V0LmJlZm9yZSgkTGV2ZWxPYmopOwoKICAgICAgICAgICAgICAgIGlmICgkLmluQXJyYXkoVmFsdWUsIEtleXNXaXRob3V0U3Via2V5cykgIT09IC0xICYmICFJc01hdGNoSXRlbSkgewogICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsaWNrKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBhbGVydChDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnQW4gaXRlbSB3aXRoIHRoaXMgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQuJykpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTZXQgZW1wdHkgdmFsdWUgZm9yICRPYmplY3QgYW5kIGJsdXIgaXRzIHNpYmxpbmcgbW9kZXJuIGlucHV0IGZpZWxkIChzZWUgYnVnIzE0MTU3KS4KICAgICAgICAgICAgJE9iamVjdC52YWwoJycpLnNpYmxpbmdzKCcuSW5wdXRGaWVsZF9Db250YWluZXInKS5maW5kKCcuSW5wdXRGaWVsZF9TZWFyY2gnKS5ibHVyKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKExldmVsID09PSAzKSB7CgogICAgICAgICAgICAkTGV2ZWxPYmogPSAkKCcjVGVtcGxhdGVMZXZlbDMgPiBsaScpLmNsb25lKCk7CiAgICAgICAgICAgICRUcmlnZ2VyT2JqID0gJExldmVsT2JqLmZpbmQoJy5BZGRCdXR0b24nKTsKCiAgICAgICAgICAgIGlmIChWYWx1ZSkgewogICAgICAgICAgICAgICAgJExldmVsT2JqCiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtY29udGVudCcsIFZhbHVlKQogICAgICAgICAgICAgICAgICAgIC5jaGlsZHJlbignLkljb24nKQogICAgICAgICAgICAgICAgICAgIC5hZnRlcignPHNwYW4+JyArIFZhbHVlRXNjYXBlZCArICc8L3NwYW4+JyArICc6Jyk7CiAgICAgICAgICAgICAgICAkTGV2ZWxPYmouaW5zZXJ0QmVmb3JlKCRPYmplY3QucGFyZW50KCkpOwoKICAgICAgICAgICAgICAgIGlmIChUeXBlID09PSAnQm9vbGVhbicpIHsKICAgICAgICAgICAgICAgICAgICAkTGV2ZWxPYmoKICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3VsJykKICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdCb29sZWFuJykKICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2xpJykKICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtY29udGVudCcsICcxJykKICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdEYXRhSXRlbScpCiAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdzcGFuJykKICAgICAgICAgICAgICAgICAgICAgICAgLmJlZm9yZSgnPHNwYW4gY2xhc3M9Ikljb24gVHJ1ZSBCb29sZWFuIiAvPicpCiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkT2JqZWN0LnZhbCgnJyk7CgogICAgICAgICAgICBpZiAoVmFsdWUgJiYgVHlwZSAhPT0gJ0Jvb2xlYW4nKSB7CiAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5jbGljaygpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKExldmVsID09PSA0KSB7CgogICAgICAgICAgICAkTGV2ZWxPYmogPSAkKCcjVGVtcGxhdGVMZXZlbDQgPiBsaScpLmNsb25lKCk7CiAgICAgICAgICAgICRUcmlnZ2VyT2JqID0gJE9iamVjdC5uZXh0KCcuQWRkQnV0dG9uJyk7CgogICAgICAgICAgICBpZiAoVmFsdWUpIHsKCiAgICAgICAgICAgICAgICBQcmVmaXggPSAkT2JqZWN0LnByZXZBbGwoJ3NlbGVjdCcpLnZhbCgpOwogICAgICAgICAgICAgICAgaWYgKFByZWZpeCkgewogICAgICAgICAgICAgICAgICAgIFZhbHVlID0gUHJlZml4ICsgVmFsdWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJExldmVsT2JqCiAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtY29udGVudCcsIFZhbHVlKQogICAgICAgICAgICAgICAgICAgIC5maW5kKCdlbScpCiAgICAgICAgICAgICAgICAgICAgLmJlZm9yZSgnPHNwYW4+JyArIFZhbHVlICsgJzwvc3Bhbj4nKTsKICAgICAgICAgICAgICAgICRMZXZlbE9iai5pbnNlcnRCZWZvcmUoJE9iamVjdC5wYXJlbnQoKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJE9iamVjdAogICAgICAgICAgICAgICAgLnByZXZBbGwoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ0hpZGRlbicpCiAgICAgICAgICAgICAgICAubmV4dEFsbCgnaW5wdXQnKQogICAgICAgICAgICAgICAgLnJlbW92ZSgpOwoKICAgICAgICAgICAgaWYgKFZhbHVlKSB7CiAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5jbGljaygpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIENvbGxlY3RBQ0xEYXRhCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5BZG1pbi5BQ0wKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVybnMge09iamVjdH0gQUNMIGRhdGEgc3RydWN0dXJlLgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRJdGVtT2JqCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgQ29sbGVjdHMgdGhlIEFDTCBkYXRhLgogICAgICovCiAgICBUYXJnZXROUy5Db2xsZWN0QUNMRGF0YSA9IGZ1bmN0aW9uKCRJdGVtT2JqKSB7CgogICAgICAgIHZhciBTdHJ1Y3R1cmUgPSB7fSwKICAgICAgICAgICAgJFN1Ykl0ZW1zT2JqLAogICAgICAgICAgICBJdGVtTmFtZUxldmVsMSwKICAgICAgICAgICAgSXRlbU5hbWVMZXZlbDIsCiAgICAgICAgICAgIEl0ZW1OYW1lTGV2ZWwzOwoKICAgICAgICAkSXRlbU9iai5jaGlsZHJlbignbGkuRGF0YUl0ZW0nKS5lYWNoKGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgSXRlbU5hbWVMZXZlbDEgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtY29udGVudCcpOwogICAgICAgICAgICBTdHJ1Y3R1cmVbSXRlbU5hbWVMZXZlbDFdID0ge307CgogICAgICAgICAgICAkU3ViSXRlbXNPYmogPSAkKHRoaXMpLmNoaWxkcmVuKCd1bCcpLmNoaWxkcmVuKCdsaS5EYXRhSXRlbScpOwoKICAgICAgICAgICAgaWYgKCRTdWJJdGVtc09iai5sZW5ndGggPiAwKSB7CgogICAgICAgICAgICAgICAgJFN1Ykl0ZW1zT2JqLmVhY2goZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgICAgIEl0ZW1OYW1lTGV2ZWwyID0gJCh0aGlzKS5hdHRyKCdkYXRhLWNvbnRlbnQnKTsKICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVbSXRlbU5hbWVMZXZlbDFdW0l0ZW1OYW1lTGV2ZWwyXSA9IHt9OwogICAgICAgICAgICAgICAgICAgICRTdWJJdGVtc09iaiA9ICQodGhpcykuY2hpbGRyZW4oJ3VsJykuY2hpbGRyZW4oJ2xpLkRhdGFJdGVtJyk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkU3ViSXRlbXNPYmoubGVuZ3RoID4gMCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuY2hpbGRyZW4oJ3VsJykuaGFzQ2xhc3MoJ0xhc3RMZXZlbCcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVbSXRlbU5hbWVMZXZlbDFdW0l0ZW1OYW1lTGV2ZWwyXSA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN1Ykl0ZW1zT2JqLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlW0l0ZW1OYW1lTGV2ZWwxXVtJdGVtTmFtZUxldmVsMl0ucHVzaCgkKHRoaXMpLmF0dHIoJ2RhdGEtY29udGVudCcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdWJJdGVtc09iai5lYWNoKGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVtTmFtZUxldmVsMyA9ICQodGhpcykuYXR0cignZGF0YS1jb250ZW50Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN1Ykl0ZW1zT2JqID0gJCh0aGlzKS5jaGlsZHJlbigndWwnKS5jaGlsZHJlbignbGkuRGF0YUl0ZW0nKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykuY2hpbGRyZW4oJ3VsJykuaGFzQ2xhc3MoJ0Jvb2xlYW4nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVbSXRlbU5hbWVMZXZlbDFdW0l0ZW1OYW1lTGV2ZWwyXVtJdGVtTmFtZUxldmVsM10gPSBwYXJzZUludCgkU3ViSXRlbXNPYmouYXR0cignZGF0YS1jb250ZW50JyksIDEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZVtJdGVtTmFtZUxldmVsMV1bSXRlbU5hbWVMZXZlbDJdW0l0ZW1OYW1lTGV2ZWwzXSA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJFN1Ykl0ZW1zT2JqLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdWJJdGVtc09iai5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZVtJdGVtTmFtZUxldmVsMV1bSXRlbU5hbWVMZXZlbDJdW0l0ZW1OYW1lTGV2ZWwzXS5wdXNoKCQodGhpcykuYXR0cignZGF0YS1jb250ZW50JykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiBTdHJ1Y3R1cmU7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgSW5pdEFDTEVkaXQKICAgICAqIEBtZW1iZXJvZiBDb3JlLkFnZW50LkFkbWluLkFDTAogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgSW5pdGlhbGl6ZXMgdGhlIEFDTCBlZGl0b3IuCiAgICAgKi8KICAgIFRhcmdldE5TLkluaXRBQ0xFZGl0ID0gZnVuY3Rpb24gKCkgewoKICAgICAgICAkKCcjQUNMRGVsZXRlJykub24oJ2NsaWNrLkFDTERlbGV0ZScsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBTaG93RGVsZXRlQUNMQ29uZmlybWF0aW9uRGlhbG9nKCQoRXZlbnQudGFyZ2V0KS5jbG9zZXN0KCdhJykpOwogICAgICAgICAgICBFdmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAkKCcuSXRlbUFkZExldmVsMScpCiAgICAgICAgICAgIC5hdHRyKCdkYXRhLWxldmVsJywgMSkKICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2lkJyk7CgogICAgICAgICQoJy5MZXZlbFRvQmVBZGRlZCcpCiAgICAgICAgICAgIC5hdHRyKCdkYXRhLWxldmVsJywgMikKICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdMZXZlbFRvQmVBZGRlZCcpOwoKICAgICAgICAkKCcjUHJlZml4ZXMnKS5yZW1vdmVBdHRyKCdpZCcpOwoKICAgICAgICAkKCcuQUNMU3RydWN0dXJlJykub24oJ2NsaWNrJywgJy5EYXRhSXRlbSBzdHJvbmcnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgJCh0aGlzKS5wcmV2QWxsKCcuVHJpZ2dlcicpLmNsaWNrKCk7CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignY2xpY2snLCAnLlRyaWdnZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKCQodGhpcykuaGFzQ2xhc3MoJ0NvbGxhcHNlJykpIHsKICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ0NvbGxhcHNlJykKICAgICAgICAgICAgICAgICAgICAubmV4dEFsbCgndWwnKQogICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdDb2xsYXBzZScpCiAgICAgICAgICAgICAgICAgICAgLm5leHRBbGwoJ3VsJykKICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignY2xpY2snLCAnLkFkZEFsbCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgJFNlbGVjdE9iaiA9ICQodGhpcykucHJldignc2VsZWN0JyksCiAgICAgICAgICAgICAgICBCb29sZWFuU3RyID0gJyc7CgogICAgICAgICAgICBpZiAoJFNlbGVjdE9iai5oYXNDbGFzcygnQm9vbGVhbicpKSB7CiAgICAgICAgICAgICAgICBCb29sZWFuU3RyID0gJ0Jvb2xlYW4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkU2VsZWN0T2JqLmZpbmQoJ29wdGlvbicpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAkU2VsZWN0T2JqLnZhbCgkKHRoaXMpLmF0dHIoJ3ZhbHVlJykpOwogICAgICAgICAgICAgICAgVGFyZ2V0TlMuQWRkSXRlbSgkU2VsZWN0T2JqLCBCb29sZWFuU3RyKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignY2xpY2snLCAnLkFkZERhdGFJdGVtJywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBhbHJlYWR5IGFuIGl0ZW0gcGxhY2Vob2xkZXIuIERvIG5vdGhpbmcgdGhlbi4KICAgICAgICAgICAgaWYgKCQodGhpcykucHJldkFsbCgnLk5ld0RhdGFJdGVtJykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgIC5iZWZvcmUoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iTmV3RGF0YUl0ZW0iIGRhdGEtbGV2ZWw9IjQiIC8+JykKICAgICAgICAgICAgICAgIC5wcmV2QWxsKCdzZWxlY3QnKQogICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdIaWRkZW4nKTsKICAgICAgICAgICAgJCgnLk5ld0RhdGFJdGVtJykucHJldkFsbCgnc2VsZWN0JykuZm9jdXMoKTsKCiAgICAgICAgICAgIENvcmUuQXBwLlB1Ymxpc2goJ0FDTC5Jbml0QXV0b2NvbXBsZXRlJyk7CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignYmx1ciBrZXlkb3duJywgJy5OZXdEYXRhSXRlbScsIGZ1bmN0aW9uKEV2ZW50KSB7CiAgICAgICAgICAgIGlmICgoRXZlbnQudHlwZSA9PT0gJ2tleWRvd24nICYmIEV2ZW50LndoaWNoID09PSAxMykgfHwgRXZlbnQudHlwZSAhPT0gJ2tleWRvd24nKSB7CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnQWRkZWQnKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ0FkZGVkJyk7CiAgICAgICAgICAgICAgICBUYXJnZXROUy5BZGRJdGVtKCQodGhpcykpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignYmx1ciBrZXlkb3duJywgJy5OZXdEYXRhS2V5JywgZnVuY3Rpb24oRXZlbnQpIHsKICAgICAgICAgICAgaWYgKChFdmVudC50eXBlID09PSAna2V5ZG93bicgJiYgRXZlbnQud2hpY2ggPT09IDEzKSB8fCBFdmVudC50eXBlICE9PSAna2V5ZG93bicpIHsKICAgICAgICAgICAgICAgIFRhcmdldE5TLkFkZEl0ZW0oJCh0aGlzKSk7CiAgICAgICAgICAgICAgICBDb3JlLlVJLklucHV0RmllbGRzLkFjdGl2YXRlKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgJCgnLkFDTFN0cnVjdHVyZScpLm9uKCdjbGljaycsICcuSWNvbi5Cb29sZWFuJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICgkKHRoaXMpLmhhc0NsYXNzKCdUcnVlJykpIHsKICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ1RydWUnKQogICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnRmFsc2UnKQogICAgICAgICAgICAgICAgICAgIC5wYXJlbnQoKQogICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLWNvbnRlbnQnLCAwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ0ZhbHNlJykKICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ1RydWUnKQogICAgICAgICAgICAgICAgICAgIC5wYXJlbnQoKQogICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLWNvbnRlbnQnLCAxKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAkKCcuQUNMU3RydWN0dXJlJykub24oJ2NsaWNrJywgJy5FZGl0YWJsZSBzcGFuJywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICB2YXIgJE9iaiA9ICQodGhpcyksCiAgICAgICAgICAgICAgICBWYWx1ZSA9ICRPYmoudGV4dCgpLAogICAgICAgICAgICAgICAgV2lkdGggPSAkT2JqLndpZHRoKCkgKyAzLAogICAgICAgICAgICAgICAgJFNlbGVjdE9iaiA9ICQoJyNUZW1wbGF0ZUxldmVsMycpLmZpbmQoJ3NlbGVjdCcpLAogICAgICAgICAgICAgICAgJFNlbGVjdE9iakNsb25lID0gJFNlbGVjdE9iai5jbG9uZSgpLAogICAgICAgICAgICAgICAgUmVnZXhSZXN1bHQsCiAgICAgICAgICAgICAgICBMYXN0TGV2ZWwgPSB0cnVlOwoKICAgICAgICAgICAgLy8gb25seSBhcHBseSBvbiByaWdodCBzcGFucwogICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnSWNvbicpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIG9ubHkgYXBwbHkgaWYgbm90IG9mIHR5cGUgImJvb2xlYW4iCiAgICAgICAgICAgIGlmICgkKHRoaXMpLm5leHRBbGwoJ3VsJykuaGFzQ2xhc3MoJ0Jvb2xlYW4nKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBkZWNpZGUgaWYgd2UgYXJlIGFscmVhZHkgb24gdGhlIGxhc3QgbGV2ZWwKICAgICAgICAgICAgaWYgKCEkKHRoaXMpLm5leHQoJ2VtJykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBMYXN0TGV2ZWwgPSBmYWxzZTsKICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIGlmIChMYXN0TGV2ZWwpIHsKCiAgICAgICAgICAgICAgICAvLyBnZXQgY29udGVudHMgb2YgdGhlICdwcmVmaXhlcycgc2VsZWN0Ym94IHRvIGRlY2lkZSB3aGV0aGVyIG9yIG5vdCB3ZQogICAgICAgICAgICAgICAgLy8gYXJlIGRlYWxpbmcgd2l0aCBhIHNwZWNpYWwgdHlwZSBvZiBzdHJpbmcKICAgICAgICAgICAgICAgICRTZWxlY3RPYmouZmluZCgnb3B0aW9uJykuZWFjaChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICAgICAgdmFyIFByZWZpeCA9ICQodGhpcykuYXR0cigndmFsdWUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgUmVnZXg7CgogICAgICAgICAgICAgICAgICAgIGlmIChQcmVmaXgpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIFByZWZpeCA9IFByZWZpeC5yZXBsYWNlKC9cWy8sICcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgUHJlZml4ID0gUHJlZml4LnJlcGxhY2UoL1xdLywgJycpOwogICAgICAgICAgICAgICAgICAgICAgICBQcmVmaXggPSAkLnRyaW0oUHJlZml4KTsKICAgICAgICAgICAgICAgICAgICAgICAgUmVnZXggPSBuZXcgUmVnRXhwKCcoXFxbJyArIFByZWZpeCArICdcXF0pLionKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2V4UmVzdWx0ID0gVmFsdWUubWF0Y2goUmVnZXgpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVnZXhSZXN1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0gVmFsdWUucmVwbGFjZShSZWdleFJlc3VsdFsxXSwgJycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGVjdE9iakNsb25lLnZhbChSZWdleFJlc3VsdFsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAkT2JqCiAgICAgICAgICAgICAgICAgICAgLmJlZm9yZSgnPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJMaXZlRWRpdCIgdmFsdWU9IicgKyBWYWx1ZSArICciIC8+JykKICAgICAgICAgICAgICAgICAgICAucHJldignaW5wdXQnKQogICAgICAgICAgICAgICAgICAgIC5jc3MoJ3dpZHRoJywgcGFyc2VJbnQoV2lkdGgsIDEwKSArICdweCcpCiAgICAgICAgICAgICAgICAgICAgLm5leHRBbGwoJ2VtJykKICAgICAgICAgICAgICAgICAgICAuaGlkZSgpCiAgICAgICAgICAgICAgICAgICAgLnBhcmVudCgpCiAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdEYXRhSXRlbScpCiAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2lucHV0JykKICAgICAgICAgICAgICAgICAgICAuYmVmb3JlKCRTZWxlY3RPYmpDbG9uZSkKICAgICAgICAgICAgICAgICAgICAucGFyZW50KCkKICAgICAgICAgICAgICAgICAgICAuZmluZCgnc2VsZWN0JykKICAgICAgICAgICAgICAgICAgICAuZm9jdXMoKQogICAgICAgICAgICAgICAgICAgIC5jc3MoJ21hcmdpbi1yaWdodCcsICcycHgnKQogICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnTGl2ZUVkaXRTZWxlY3QnKQogICAgICAgICAgICAgICAgICAgIC5uZXh0QWxsKCdzcGFuJykKICAgICAgICAgICAgICAgICAgICAucmVtb3ZlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgJE9iagogICAgICAgICAgICAgICAgICAgIC5iZWZvcmUoJzxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iTGl2ZUVkaXQgQmlnIiB2YWx1ZT0iJyArIFZhbHVlICsgJyIgLz4nKQogICAgICAgICAgICAgICAgICAgIC5wcmV2KCdpbnB1dCcpCiAgICAgICAgICAgICAgICAgICAgLmNzcygnd2lkdGgnLCBwYXJzZUludChXaWR0aCwgMTApICsgJ3B4JykKICAgICAgICAgICAgICAgICAgICAuZm9jdXMoKQogICAgICAgICAgICAgICAgICAgIC5zZWxlY3QoKQogICAgICAgICAgICAgICAgICAgIC5uZXh0QWxsKCdzcGFuJykKICAgICAgICAgICAgICAgICAgICAucmVtb3ZlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQ29yZS5BcHAuUHVibGlzaCgnQUNMLkluaXRBdXRvY29tcGxldGUnKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gcHJldmVudCB1c2VycyBmcm9tIGFjY2lkZW50YWxseSBzdWJtaXR0aW5nIHRoZSBmb3JtIG9uIHByZXNzaW5nICdlbnRlcicKICAgICAgICAkKCcuQUNMU3RydWN0dXJlJykub24oJ2tleWRvd24nLCAnLkxpdmVFZGl0U2VsZWN0JywgZnVuY3Rpb24oRXZlbnQpIHsKICAgICAgICAgICAgaWYgKEV2ZW50LndoaWNoID09PSAxMykgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignY2hhbmdlIGJsdXInLCAnLkxpdmVFZGl0U2VsZWN0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQodGhpcykubmV4dCgnaW5wdXQnKS5zZWxlY3QoKS5mb2N1cygpOwogICAgICAgIH0pOwoKICAgICAgICAkKCcuQUNMU3RydWN0dXJlJykub24oJ2JsdXIga2V5ZG93bicsICcuTGl2ZUVkaXQnLCBmdW5jdGlvbihFdmVudCkgewoKICAgICAgICAgICAgdmFyIFZhbHVlOwoKICAgICAgICAgICAgaWYgKChFdmVudC50eXBlID09PSAna2V5ZG93bicgJiYgRXZlbnQud2hpY2ggPT09IDEzKSB8fCBFdmVudC50eXBlICE9PSAna2V5ZG93bicpIHsKCiAgICAgICAgICAgICAgICBWYWx1ZSA9ICQodGhpcykudmFsKCk7CgogICAgICAgICAgICAgICAgaWYgKFZhbHVlKSB7CgogICAgICAgICAgICAgICAgICAgIC8vIGF2b2lkIHdyb25nIGJlaGF2aW9yIHdoZW4gVmFsdWUgaXMgYWxyZWFkeSBwcmVzZW50CiAgICAgICAgICAgICAgICAgICAgaWYgKCQodGhpcykubmV4dCgnc3BhbicpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnQmlnJykpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZnRlcignPHNwYW4+JyArIFZhbHVlICsgJzwvc3Bhbj4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBhcmVudCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ0RhdGFJdGVtJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdkYXRhLWNvbnRlbnQnLCBWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCcuTGl2ZUVkaXQnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGF2b2lkIHdyb25nIGJlaGF2aW9yIGlmIHNlbGVjdCBpcyBubyBtb3JlIHByZXNlbnQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKHRoaXMpLnBhcmVudCgpLmZpbmQoJ3NlbGVjdCcpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9ICQodGhpcykucGFyZW50KCkuZmluZCgnc2VsZWN0JykudmFsKCkgKyBWYWx1ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZnRlcignPHNwYW4+JyArIFZhbHVlICsgJzwvc3Bhbj4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5leHRBbGwoJ2VtJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zaG93KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wYXJlbnQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdEYXRhSXRlbScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignZGF0YS1jb250ZW50JywgVmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkxpdmVFZGl0LCBzZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnQmlnJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS52YWwoJCh0aGlzKS5wYXJlbnQoKS5hdHRyKCdkYXRhLWNvbnRlbnQnKSkuYmx1cigpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGFyZW50KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgJCgnLkFDTFN0cnVjdHVyZScpLm9uKCdjaGFuZ2UnLCAnLk5ld0RhdGFLZXlEcm9wZG93bicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgQm9vbGVhblN0ciA9ICcnOwogICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnQm9vbGVhbicpKSB7CiAgICAgICAgICAgICAgICBCb29sZWFuU3RyID0gJ0Jvb2xlYW4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIFRhcmdldE5TLkFkZEl0ZW0oJCh0aGlzKSwgQm9vbGVhblN0cik7CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignY2xpY2snLCAnLkRhdGFJdGVtIGVtJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQodGhpcykucGFyZW50KCkuZmFkZU91dCgzMDAsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmUoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignY2xpY2snLCAnLkljb24uUmVtb3ZlQnV0dG9uJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBSZW1vdmUgPSBmYWxzZTsKICAgICAgICAgICAgaWYgKCQodGhpcykubmV4dEFsbCgndWwnKS5maW5kKCdsaScpLmxlbmd0aCA+IDEpIHsKICAgICAgICAgICAgICAgIGlmIChjb25maXJtKENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCdUaGlzIGl0ZW0gc3RpbGwgY29udGFpbnMgc3ViIGl0ZW1zLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIHRoaXMgaXRlbSBpbmNsdWRpbmcgaXRzIHN1YiBpdGVtcz8nKSkpIHsKICAgICAgICAgICAgICAgICAgICBSZW1vdmUgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgUmVtb3ZlID0gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKFJlbW92ZSkgewogICAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnQoKS5mYWRlT3V0KDMwMCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BQ0xTdHJ1Y3R1cmUnKS5vbignY2hhbmdlJywgJy5JdGVtQWRkJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIFRhcmdldE5TLkFkZEl0ZW0oJCh0aGlzKSk7CiAgICAgICAgICAgIENvcmUuVUkuSW5wdXRGaWVsZHMuQWN0aXZhdGUoKTsKICAgICAgICB9KTsKCiAgICAgICAgJCgnI1N1Ym1pdEFuZENvbnRpbnVlJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQoJyNDb250aW51ZUFmdGVyU2F2ZScpLnZhbCgxKTsKICAgICAgICAgICAgJCgnI1N1Ym1pdCcpLmNsaWNrKCk7CiAgICAgICAgfSk7CgogICAgICAgICQoJyNTdWJtaXQsICNTdWJtaXRBbmRDb250aW51ZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgLy8gY29sbGVjdCBkYXRhIGZyb20gdGhlIGlucHV0IGFyZWFzCiAgICAgICAgICAgIFRhcmdldE5TLkNvbmZpZ01hdGNoID0gVGFyZ2V0TlMuQ29sbGVjdEFDTERhdGEoJCgnI0FDTE1hdGNoJykpOwogICAgICAgICAgICBUYXJnZXROUy5Db25maWdDaGFuZ2UgPSBUYXJnZXROUy5Db2xsZWN0QUNMRGF0YSgkKCcjQUNMQ2hhbmdlJykpOwoKICAgICAgICAgICAgJCgnaW5wdXRbbmFtZT1Db25maWdNYXRjaF0nKS52YWwoQ29yZS5KU09OLlN0cmluZ2lmeShUYXJnZXROUy5Db25maWdNYXRjaCkpOwogICAgICAgICAgICAkKCdpbnB1dFtuYW1lPUNvbmZpZ0NoYW5nZV0nKS52YWwoQ29yZS5KU09OLlN0cmluZ2lmeShUYXJnZXROUy5Db25maWdDaGFuZ2UpKTsKICAgICAgICB9KTsKCiAgICAgICAgVGFyZ2V0TlMuUmVzdG9yZUFDTERhdGEoCiAgICAgICAgICAgICQoJ2lucHV0W25hbWU9Q29uZmlnTWF0Y2hdJyksCiAgICAgICAgICAgICQoJyNBQ0xNYXRjaCcpCiAgICAgICAgKTsKCiAgICAgICAgVGFyZ2V0TlMuUmVzdG9yZUFDTERhdGEoCiAgICAgICAgICAgICQoJ2lucHV0W25hbWU9Q29uZmlnQ2hhbmdlXScpLAogICAgICAgICAgICAkKCcjQUNMQ2hhbmdlJykKICAgICAgICApOwoKICAgICAgICBDb3JlLkFwcC5TdWJzY3JpYmUoJ0FDTC5Jbml0QXV0b2NvbXBsZXRlJywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAkKCcuTGl2ZUVkaXQsIC5OZXdEYXRhSXRlbScpLmVhY2goZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgLy8gb25seSBkbyBpdCBmb3IgdGhlICdBY3Rpb24nIGl0ZW0gKGNhbiBiZSBleHRlbmRlZCBpbiB0aGUgZnV0dXJlKQogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuY2xvc2VzdCgndWwnKS5jbG9zZXN0KCdsaScpLmRhdGEoJ2NvbnRlbnQnKSA9PT0gJ0FjdGlvbicpIHsKCiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGVsZW1lbnQgZG9lc24ndCBoYXZlIGFuIElELCBnZW5lcmF0ZSBvbmUuCiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBhdXRvY29tcGxldGUgZm9yIHdvcmsgcHJvcGVybHksIGUuZy4KICAgICAgICAgICAgICAgICAgICAvLyB0byBoaWRlIHRoZSBsb2FkZXIgaWNvbiBhZnRlciB0aGUgcmVzdWx0cyBoYXZlIGJlZW4gZmV0Y2hlZAogICAgICAgICAgICAgICAgICAgIENvcmUuVUkuR2V0SUQoJCh0aGlzKSk7CgogICAgICAgICAgICAgICAgICAgIENvcmUuVUkuQXV0b2NvbXBsZXRlLkluaXQoCiAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcyksCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKFJlcXVlc3QsIFJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgRGF0YSA9IFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1MQyA9ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlQWN0aW9uc0xpc3QgPSBDb3JlLkNvbmZpZy5HZXQoJ1Bvc3NpYmxlQWN0aW9uc0xpc3QnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUmVxdWVzdC50ZXJtID09PSAnKionKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9IFBvc3NpYmxlQWN0aW9uc0xpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2goUG9zc2libGVBY3Rpb25zTGlzdCwgZnVuY3Rpb24oSW5kZXgsIEl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUxDID0gSXRlbS52YWx1ZS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoSXRlbUxDLmluZGV4T2YoUmVxdWVzdC50ZXJtLnRvTG93ZXJDYXNlKCkpICE9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YS5wdXNoKEl0ZW0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNwb25zZShEYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oRXZlbnQsIFVJKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKEV2ZW50LnRhcmdldCkudmFsKFVJLml0ZW0udmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAnQUNMT3B0aW9uc0F1dG9jb21wbGV0ZScKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCgogICAgICAgIH0pOwogICAgfTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KENvcmUuQWdlbnQuQWRtaW4uQUNMIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/Core.Agent.Admin.Znuny4OTOBODynamicFieldScreen.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMTItMjAyMCBabnVueSBHbWJILCBodHRwOi8vem51bnkuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vICRvcmlnaW46IG90b2JvIC0gZmY5ZTI5N2JhZjI4N2UxNjA3MWQzYWM2YWQ3ZjZjMTNmMTFhYzdmYSAtIHZhci9odHRwZC9odGRvY3MvanMvQ29yZS5BZ2VudC5BZG1pbi5abnVueTRPVE9CT0R5bmFtaWNGaWVsZFNjcmVlbi5qcwovLyAtLQovLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgovLyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQovLyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgovLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKLy8gQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKLy8gRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIENvcmUgICAgICAgICA9IENvcmUgICAgICAgICAgICAgfHwge307CkNvcmUuQWdlbnQgICAgICAgPSBDb3JlLkFnZW50ICAgICAgIHx8IHt9OwpDb3JlLkFnZW50LkFkbWluID0gQ29yZS5BZ2VudC5BZG1pbiB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIENvcmUuQWdlbnQuQWRtaW4uWm51bnk0T1RPQk9EeW5hbWljRmllbGRTY3JlZW4KICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIER5bmFtaWMgRmllbGQgU2NyZWVuIG1vZHVsZS4KICovCkNvcmUuQWdlbnQuQWRtaW4uWm51bnk0T1RPQk9EeW5hbWljRmllbGRTY3JlZW4gPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKCiAgICAgICAgLy8gSW5pdGlhbGl6ZSBBbGxvY2F0aW9uIExpc3QKICAgICAgICBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LkluaXQoIiNBdmFpbGFibGVFbGVtZW50cywgI0Rpc2FibGVkRWxlbWVudHMsICNBc3NpZ25lZEVsZW1lbnRzLCAjQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzIiwgIi5BbGxvY2F0aW9uTGlzdCIsIFVwZGF0ZUZpZWxkcyk7CgogICAgICAgIC8vIEluaXRpYWxpemUgbGlzdCBmaWx0ZXIKICAgICAgICBDb3JlLlVJLlRhYmxlLkluaXRUYWJsZUZpbHRlcigkKCcjRmlsdGVyRWxlbWVudHMnKSwgJCgnI0VsZW1lbnRzJykpOwogICAgICAgIENvcmUuVUkuVGFibGUuSW5pdFRhYmxlRmlsdGVyKCQoJyNGaWx0ZXJBdmFpbGFibGVFbGVtZW50cycpLCAkKCcjQXZhaWxhYmxlRWxlbWVudHMnKSk7CiAgICAgICAgQ29yZS5VSS5UYWJsZS5Jbml0VGFibGVGaWx0ZXIoJCgnI0ZpbHRlckRpc2FibGVkRWxlbWVudHMnKSwgJCgnI0Rpc2FibGVkRWxlbWVudHMnKSk7CiAgICAgICAgQ29yZS5VSS5UYWJsZS5Jbml0VGFibGVGaWx0ZXIoJCgnI0ZpbHRlckFzc2lnbmVkRWxlbWVudHMnKSwgJCgnI0Fzc2lnbmVkRWxlbWVudHMnKSk7CiAgICAgICAgQ29yZS5VSS5UYWJsZS5Jbml0VGFibGVGaWx0ZXIoJCgnI0ZpbHRlckFzc2lnbmVkUmVxdWlyZWRFbGVtZW50cycpLCAkKCcjQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzJykpOwoKICAgICAgICAkLmVhY2goWydTZWxlY3RBbGxBdmFpbGFibGVFbGVtZW50cycsICdTZWxlY3RBbGxEaXNhYmxlZEVsZW1lbnRzJywgICdTZWxlY3RBbGxBc3NpZ25lZEVsZW1lbnRzJywgJ1NlbGVjdEFsbEFzc2lnbmVkUmVxdWlyZWRFbGVtZW50cyddLCBmdW5jdGlvbiAoSW5kZXgsIEVsZW1lbnRzKSB7CgogICAgICAgICAgICAkKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdW25hbWU9IicrRWxlbWVudHMrJyJdJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBDb3JlLkZvcm0uU2VsZWN0QWxsQ2hlY2tib3hlcygkKHRoaXMpLCAkKCcjJyArIEVsZW1lbnRzKSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwoKICAgICAgICAvLyByZWdpc3RlciBhbGwgYmluZGluZ3MKICAgICAgICAkLmVhY2goWydBdmFpbGFibGVFbGVtZW50cycsICdEaXNhYmxlZEVsZW1lbnRzJywgJ0Fzc2lnbmVkRWxlbWVudHMnLCAnQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzJ10sIGZ1bmN0aW9uIChJbmRleCwgUGFyYW1ldGVyTmFtZSkgewoKICAgICAgICAgICAgdmFyIEVsZW1lbnQ7CiAgICAgICAgICAgICQoJyNBbGxTZWxlY3RlZCcrIFBhcmFtZXRlck5hbWUpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgICAgIC8vIG1vdmUgYWxsIGxpIHRvIGFub3RoZXIgdWwgbGlzdC4KICAgICAgICAgICAgICAgICQoImlucHV0OmNoZWNrYm94OmNoZWNrZWQiKS5lYWNoKGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAgICAgRWxlbWVudCA9ICQodGhpcykudmFsKCk7CgogICAgICAgICAgICAgICAgICAgIGlmKEVsZW1lbnQpewogICAgICAgICAgICAgICAgICAgICAgICAkKCdsaSMnK0VsZW1lbnQpLmFwcGVuZFRvKCcjJysgUGFyYW1ldGVyTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJ2xpIycrRWxlbWVudCkuZmluZCgnaW5wdXRbdHlwZT0iaGlkZGVuIl0nKS5hdHRyKCduYW1lJywgUGFyYW1ldGVyTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyMnK0VsZW1lbnQpLmZpbmQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKS5hdHRyKCduYW1lJywgJ1NlbGVjdEFsbCcrIFBhcmFtZXRlck5hbWUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIC8vIHJlbW92ZWQgYWxsIGNoZWNrZWQKICAgICAgICAgICAgICAgICQoImlucHV0OmNoZWNrYm94IikucHJvcCgnY2hlY2tlZCcsICQodGhpcykucHJvcCgiY2hlY2tlZCIpKS5yZW1vdmVBdHRyKCdjaGVja2VkJyk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0pOwoKLy8gUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICQoICIjRHluYW1pY0ZpZWxkU2VsZWN0ZWRPYmplY3RUeXBlIiApLmNoYW5nZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgbGV0IE9iamVjdFR5cGVGaWx0ZXIgPSAkKCIjRHluYW1pY0ZpZWxkU2VsZWN0ZWRPYmplY3RUeXBlIikudmFsKCk7CiAgICAgICAgICAgIGxldCBVUkwgPSBDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJykgKyAnQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkU2NyZWVuJzsKICAgICAgICAgICAgVVJMICs9ICc7U2VsZWN0ZWRPYmplY3RUeXBlPScgKyBlbmNvZGVVUklDb21wb25lbnQoT2JqZWN0VHlwZUZpbHRlcik7CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9IFVSTDsKICAgICAgICB9KTsKLy8gRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgICAgICQoJyNTdWJtaXQnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkKCcjRm9ybScpLnN1Ym1pdCgpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIGZ1bmN0aW9uIFVwZGF0ZUZpZWxkcyhFdmVudCwgVUkpIHsKCiAgICAgICAgdmFyIFRhcmdldCA9ICQoVUkuaXRlbSkucGFyZW50KCkuYXR0cignaWQnKTsKCiAgICAgICAgLy8gaWYgdGhlIGVsZW1lbnQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgQXNzaWduZWRFbGVtZW50IGxpc3QsIHJlbmFtZSBpdCB0byBERiBuYW1lCiAgICAgICAgaWYgKFRhcmdldCA9PT0gJ0F2YWlsYWJsZUVsZW1lbnRzJykgewogICAgICAgICAgICAkKFVJLml0ZW0pLmZpbmQoJ2lucHV0W3R5cGU9ImhpZGRlbiJdJykuYXR0cignbmFtZScsICdBdmFpbGFibGVFbGVtZW50cycpOwogICAgICAgICAgICAkKFVJLml0ZW0pLmZpbmQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKS5hdHRyKCduYW1lJywgJ1NlbGVjdEFsbEF2YWlsYWJsZUVsZW1lbnRzJyk7CiAgICAgICAgICAgICQoVUkuaXRlbSkuZmluZCgnaW5wdXRbdHlwZT0iY2hlY2tib3giXScpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICAgICAgICB9CgogICAgICAgIC8vIHJlbmFtZSBpdCB0byBEaXNhYmxlZEVsZW1lbnRzCiAgICAgICAgZWxzZSBpZiAoVGFyZ2V0ID09PSAnRGlzYWJsZWRFbGVtZW50cycpIHsKICAgICAgICAgICAgJChVSS5pdGVtKS5maW5kKCdpbnB1dFt0eXBlPSJoaWRkZW4iXScpLmF0dHIoJ25hbWUnLCAnRGlzYWJsZWRFbGVtZW50cycpOwogICAgICAgICAgICAkKFVJLml0ZW0pLmZpbmQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKS5hdHRyKCduYW1lJywgJ1NlbGVjdEFsbERpc2FibGVkRWxlbWVudHMnKTsKICAgICAgICAgICAgJChVSS5pdGVtKS5maW5kKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdJykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgICAgIH0KCiAgICAgICAgLy8gcmVuYW1lIGl0IHRvIEFzc2lnbmVkRWxlbWVudHMKICAgICAgICBlbHNlIGlmIChUYXJnZXQgPT09ICdBc3NpZ25lZEVsZW1lbnRzJykgewogICAgICAgICAgICAkKFVJLml0ZW0pLmZpbmQoJ2lucHV0W3R5cGU9ImhpZGRlbiJdJykuYXR0cignbmFtZScsICdBc3NpZ25lZEVsZW1lbnRzJyk7CiAgICAgICAgICAgICQoVUkuaXRlbSkuZmluZCgnaW5wdXRbdHlwZT0iY2hlY2tib3giXScpLmF0dHIoJ25hbWUnLCAnU2VsZWN0QWxsQXNzaWduZWRFbGVtZW50cycpOwogICAgICAgICAgICAkKFVJLml0ZW0pLmZpbmQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKS5yZW1vdmVBdHRyKCdjaGVja2VkJyk7CiAgICAgICAgfQoKICAgICAgICAvLyByZW5hbWUgaXQgdG8gQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzCiAgICAgICAgZWxzZSBpZiAoVGFyZ2V0ID09PSAnQXNzaWduZWRSZXF1aXJlZEVsZW1lbnRzJykgewogICAgICAgICAgICAkKFVJLml0ZW0pLmZpbmQoJ2lucHV0W3R5cGU9ImhpZGRlbiJdJykuYXR0cignbmFtZScsICdBc3NpZ25lZFJlcXVpcmVkRWxlbWVudHMnKTsKICAgICAgICAgICAgJChVSS5pdGVtKS5maW5kKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdJykuYXR0cignbmFtZScsICdTZWxlY3RBbGxBc3NpZ25lZFJlcXVpcmVkRWxlbWVudHMnKTsKICAgICAgICAgICAgJChVSS5pdGVtKS5maW5kKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdJykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oQ29yZS5BZ2VudC5BZG1pbi5abnVueTRPVE9CT0R5bmFtaWNGaWVsZFNjcmVlbiB8fCB7fSkpOwoKQ29yZS5BZ2VudC5BZG1pbi5abnVueTRPVE9CT0R5bmFtaWNGaWVsZFNjcmVlbi5Jbml0KCk7Cg==</File>
        <File Location="var/httpd/htdocs/js/Core.Agent.TreeView.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgQ29yZSA9IENvcmUgfHwge307CkNvcmUuQWdlbnQgPSBDb3JlLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UgQ29yZS5BZ2VudC5UcmVlVmlldwogKiBAbWVtYmVyb2YgQ29yZS5BZ2VudAogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gVHJlZVZpZXcuCiAqLwpDb3JlLkFnZW50LlRyZWVWaWV3ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIEluc3RhbmNlCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5BZG1pbi5Qcm9jZXNzTWFuYWdlbWVudC5DYW52YXMKICAgICAqIEBtZW1iZXIge0FycmF5fQogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIGxvY2FsIHZhcmlhYmxlIGZvciBKU1BsdW1iCiAgICAgKi8KCiAgICB2YXIgSW5zdGFuY2U7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5UcmVlVmlldwogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgVHJlZVZpZXcuCiAgICAqLwoKICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CgogICAgICAgICQoIGRvY3VtZW50ICkucmVhZHkoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIFVwZGF0ZVRyZWUoKTsKICAgICAgICB9KTsKCiAgICAgICAgJCgiI0RlcHRoIikuYmluZCgna2V5dXAgbW91c2V1cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgVXBkYXRlVHJlZSgpOwogICAgICAgIH0pOwoKICAgICAgICAkKCIjWm9vbSIpLmJpbmQoJ2tleWRvd24gbW91c2Vkb3duJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkKCIjTGFzdFpvb20iKS52YWwoJCgiI1pvb20iKS52YWwoKSk7CiAgICAgICAgfSk7CgogICAgICAgICQoIiNab29tIikuYmluZCgna2V5dXAgbW91c2V1cCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgWm9vbUluT3V0KCk7CiAgICAgICAgfSk7CgogICAgICAgICQoIiNUcmVlVmlld0Nsb3NlTGluayIpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB3aW5kb3cuY2xvc2UoKTsKICAgICAgICB9KTsKCiAgICAgICAgd2luZG93LnNldFpvb20gPSBmdW5jdGlvbih6b29tLCBpbnN0YW5jZSwgdHJhbnNmb3JtT3JpZ2luKSB7CgogICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW4gPSB0cmFuc2Zvcm1PcmlnaW4gfHwgWzAuNSwgMC41XTsKICAgICAgICAgICAgdmFyIGVsID0gaW5zdGFuY2UuZ2V0Q29udGFpbmVyKCk7CgogICAgICAgICAgICB2YXIgcCA9IFsid2Via2l0IiwgIm1veiIsICJtcyIsICJvIl0sCiAgICAgICAgICAgICAgcyA9ICJzY2FsZSgiICsgem9vbSArICIpIiwKICAgICAgICAgICAgICBvU3RyaW5nID0gKHRyYW5zZm9ybU9yaWdpblswXSAqIDEwMCkgKyAiJSAiICsgKHRyYW5zZm9ybU9yaWdpblsxXSAqIDEwMCkgKyAiJSI7CgogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHAubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICBlbC5zdHlsZVtwW2ldICsgIlRyYW5zZm9ybSJdID0gczsKICAgICAgICAgICAgICBlbC5zdHlsZVtwW2ldICsgIlRyYW5zZm9ybU9yaWdpbiJdID0gb1N0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWwuc3R5bGVbInRyYW5zZm9ybSJdID0gczsKICAgICAgICAgICAgZWwuc3R5bGVbInRyYW5zZm9ybU9yaWdpbiJdID0gb1N0cmluZzsKCiAgICAgICAgICAgIGluc3RhbmNlLnNldFpvb20oem9vbSk7CiAgICAgICAgICAgIGluc3RhbmNlLnJlcGFpbnRFdmVyeXRoaW5nKCk7CiAgICAgICAgfTsKCiAgICAgICAgJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpewogICAgICAgICAgICBJbnN0YW5jZS5yZXBhaW50RXZlcnl0aGluZygpOwogICAgICAgIH0pOwogICAgfTsKCiAgICAvKioKICAgICogQHByaXZhdGUKICAgICogQG5hbWUgWm9vbUluT3V0CiAgICAqIEBtZW1iZXJvZiBDb3JlLkFnZW50LlRyZWVWaWV3CiAgICAqIEBhdXRob3IgUm90aGVyIE9TUyBHbWJICiAgICAqIEBmdW5jdGlvbgogICAgKiBAZGVzY3JpcHRpb24KICAgICogICAgICBBcHBseSBab29tIGluIG9yIE91dCBvZiB0aGUgVHJlZVZpZXcgR3JhcGhpYy4KICAgICovCgogICAgZnVuY3Rpb24gWm9vbUluT3V0KCkgewogICAgICAgIHdpbmRvdy5zZXRab29tKHBhcnNlSW50KCQoIiNab29tIikudmFsKCkpLzEwMCwgSW5zdGFuY2UsIG51bGwpOwogICAgICAgIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgncmVzaXplJykpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvKioKICAgICogQHByaXZhdGUKICAgICogQG5hbWUgVXBkYXRlVHJlZQogICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5UcmVlVmlldwogICAgKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVXBkYXRlIFRyZWVWaWV3IHdpdGggZGVzaXJlZCBkZXB0aCBsZXZlbCBmb3IgdGhlIHNlbGVjdGVkIENvbmZpZ0l0ZW0uCiAgICAqICAgICAgVGhlIHRyZWUgbm9kZXMgYXJlIHB1dCBpbnRvIHRoZSBIVE1MIGVsZW1lbnQgJ0NhbnZhcycuCiAgICAqICAgICAgQWxzbyBpbmNsdWRlZCBpbiB0aGUgQ2FudmFzIGFyZSB0aGUgaGlkZGVuIGlucHV0IGZpZWxkcyBMaW5rRGF0YVNvdXJjZSBhbmQgTGlua0RhdGFUYXJnZXQKICAgICogICAgICB3aGljaCBsaXN0IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgbm9kZXMuCiAgICAqLwoKICAgIGZ1bmN0aW9uIFVwZGF0ZVRyZWUoKSB7CiAgICAgICAganNQbHVtYi5yZXNldCgpOwogICAgICAgICQoJyNDYW52YXMnKS5lbXB0eSgpOwoKICAgICAgICBsZXQgUmVxdWVzdFBhcmFtcyA9IHsKICAgICAgICAgICAgQWN0aW9uOiAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3JywKICAgICAgICAgICAgU3ViYWN0aW9uOiAgICAnTG9hZFRyZWVWaWV3JywKICAgICAgICAgICAgQ29uZmlnSXRlbUlEOiBlbmNvZGVVUklDb21wb25lbnQoJCgiI0NvbmZpZ0l0ZW1JRCIpLnZhbCgpKSwKICAgICAgICAgICAgVmVyc2lvbklEOiAgICBlbmNvZGVVUklDb21wb25lbnQoJCgiI1ZlcnNpb25JRCIpLnZhbCgpKSwKICAgICAgICAgICAgRGVwdGg6ICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoJCgiI0RlcHRoIikudmFsKCkpCiAgICAgICAgfTsKCiAgICAgICAgJCgiI0RlcHRoIikucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKICAgICAgICAkKCIjQUpBWExvYWRlckRlcHRoIikuY3NzKCJkaXNwbGF5IiwgImJsb2NrIik7CgogICAgICAgIENvcmUuQUpBWC5GdW5jdGlvbkNhbGwoCiAgICAgICAgICAgIENvcmUuQ29uZmlnLkdldCgnQ0dJSGFuZGxlJyksCiAgICAgICAgICAgIFJlcXVlc3RQYXJhbXMsCiAgICAgICAgICAgIGZ1bmN0aW9uIChSZXNwb25zZSkgewogICAgICAgICAgICAgICAgJCgiI0NhbnZhcyIpLmh0bWwoUmVzcG9uc2UpOwoKICAgICAgICAgICAgICAgIEluc3RhbmNlID0ganNQbHVtYi5nZXRJbnN0YW5jZSh7CiAgICAgICAgICAgICAgICAgICAgUGFpbnRTdHlsZTogewogICAgICAgICAgICAgICAgICAgICAgICBsaW5lV2lkdGg6IDAuMSwKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlU3R5bGU6ICIjMDAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgb3V0bGluZUNvbG9yOiAiIzAwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgIG91dGxpbmVXaWR0aDogMC4xCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBDb25uZWN0b3I6IFsiU3RyYWlnaHQiXSwKICAgICAgICAgICAgICAgICAgICBhbmNob3I6IFsnUGVyaW1ldGVyJywge3NoYXBlOiAnQ2lyY2xlJ31dLAogICAgICAgICAgICAgICAgICAgIEVuZHBvaW50OiBbJ0RvdCcsIHtyYWRpdXM6IDN9XSwKICAgICAgICAgICAgICAgICAgICBlbmRwb2ludFN0eWxlOiB7ZmlsbDogJ3JnYig4MCwgODEsIDgxKSd9LAogICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogJ0NhbnZhcycKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIGRyYXdDb25uZWN0aW9ucyggSW5zdGFuY2UsICQoIiNMaW5rRGF0YVNvdXJjZSIpLnZhbCgpLCAnU291cmNlJyApOwogICAgICAgICAgICAgICAgZHJhd0Nvbm5lY3Rpb25zKCBJbnN0YW5jZSwgJCgiI0xpbmtEYXRhVGFyZ2V0IikudmFsKCksICdUYXJnZXQnICk7CgogICAgICAgICAgICAgICAgJCgiI0FKQVhMb2FkZXJEZXB0aCIpLmNzcygiZGlzcGxheSIsICJub25lIik7CiAgICAgICAgICAgICAgICAkKCIjRGVwdGgiKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKCiAgICAgICAgICAgICAgICBpZiAoIHBhcnNlSW50KCQoIiNEZXB0aCIpLnZhbCgpKSA+IHBhcnNlSW50KCQoIiNNYXhEZXB0aCIpLnZhbCgpKSApIHsKICAgICAgICAgICAgICAgICAgICAkKCIjRGVwdGgiKS52YWwoJCgiI01heERlcHRoIikudmFsKCkpOwogICAgICAgICAgICAgICAgICAgICQoIiNUcmVlVmlld01lc3NhZ2VzIikucmVtb3ZlQ2xhc3MoIkhpZGRlbiIpOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAkKCIjVHJlZVZpZXdNZXNzYWdlcyIpLmFkZENsYXNzKCJIaWRkZW4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgSW5zdGFuY2UucmVwYWludEV2ZXJ5dGhpbmcoKTsKICAgICAgICAgICAgICAgICAgICB9LCAzMDAwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICQoIiNUcmVlVmlld01lc3NhZ2VzIikuYWRkQ2xhc3MoIkhpZGRlbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgSW5zdGFuY2UucmVwYWludEV2ZXJ5dGhpbmcoKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ2h0bWwnCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIGRyYXdDb25uZWN0aW9ucwogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuVHJlZWVWaWV3CiAgICAgKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2luc3RhbmNlfSAgSnNQbHVtYiBJbnN0YW5jZQogICAgICogQHBhcmFtIHtsaW5rX2RhdGF9IGxpbmsgbGlzdCwgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbgogICAgICogQHBhcmFtIHtvcHRpb259IFNwZWNpZnkgVGFyZ2V0L1NvdXJjZQogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFdyaXRlIGFyY3MgKGFycm93cykgYmV0d2VlbiBlbGVtZW50cyBpbiB0aGUgZ3JhcGhpYy4KICAgICAqLwoKICAgIGZ1bmN0aW9uIGRyYXdDb25uZWN0aW9ucyhpbnN0YW5jZSwgbGlua19kYXRhLCBvcHRpb24pIHsKCiAgICAgICAgLy8gbm90aGluZyB0byBkbyB3aGVuIHRoZSBpbnB1dCBpcyBlbXB0ZQogICAgICAgIGlmIChsaW5rX2RhdGEgPT09ICIiKSByZXR1cm47CgogICAgICAgIHZhciBDb25uZWN0aW9ucyAgICA9IGxpbmtfZGF0YS5zcGxpdCgiOyIpOwogICAgICAgIHZhciBEaXJlY3Rpb24gICAgICA9IG9wdGlvbjsKICAgICAgICB2YXIgU2hvd0xpbmtMYWJlbHMgPSAkKCIjU2hvd0xpbmtMYWJlbHMiKS52YWwoKTsKCiAgICAgICAgQ29ubmVjdGlvbnMuZm9yRWFjaChlbGVtZW50ID0+IHsKICAgICAgICAgICAgdmFyIExpbmsgPSBlbGVtZW50LnNwbGl0KCIsIik7CgogICAgICAgICAgICBsZXQgUGFyYW1zID0gewogICAgICAgICAgICAgICAgc291cmNlOiBMaW5rWzFdLAogICAgICAgICAgICAgICAgdGFyZ2V0OiBMaW5rWzBdLAogICAgICAgICAgICAgICAgc2NvcGU6ICJUcmVlVmlldyIsCiAgICAgICAgICAgICAgICBhbmNob3I6IFsiQm90dG9tIiwgIlRvcCJdLAogICAgICAgICAgICAgICAgcGFyYW1ldGVyczogewogICAgICAgICAgICAgICAgICAgIENvbm5lY3Rpb25JRDogRGlyZWN0aW9uICsgTGlua1sxXSArICItIiArIExpbmtbMF0gKyAiLSIgKyBMaW5rWzJdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CgogICAgICAgICAgICBpZiAoIFNob3dMaW5rTGFiZWxzID09PSAiWWVzIiApIHsKICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oUGFyYW1zLCB7CiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheXM6WwogICAgICAgICAgICAgICAgICAgICAgICBbICJBcnJvdyIsIHsgd2lkdGg6OSwgbGVuZ3RoOjEwLCBsb2NhdGlvbjogMC45NiwgaWQ6ImFycm93IiB9IF0sCiAgICAgICAgICAgICAgICAgICAgICAgIFsgIkxhYmVsIiwgeyBsYWJlbDogTGlua1syXSwgbG9jYXRpb246MC41LCBpZDoiTGFiZWwiLCBzdHlsZTogImJhY2tncm91bmQtY29sb3I6ICNmZmZmZmYiIH0gXQogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihQYXJhbXMsIHsKICAgICAgICAgICAgICAgICAgICBvdmVybGF5czpbCiAgICAgICAgICAgICAgICAgICAgICAgIFsgIkFycm93IiwgeyB3aWR0aDo5LCBsZW5ndGg6MTAsIGxvY2F0aW9uOiAwLjk2LCBpZDoiYXJyb3ciIH0gXQogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBhc3N1bWluZyB2YWxpZCBpbnB1dAogICAgICAgICAgICBpbnN0YW5jZS5jb25uZWN0KFBhcmFtcyk7CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KENvcmUuQWdlbnQuVHJlZVZpZXcgfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.Admin.ITSMConfigItem.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWRtaW4gPSBJVFNNLkFkbWluIHx8IHt9OwoKLyoqCiogQG5hbWVzcGFjZSBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiogQG1lbWJlcm9mIElUU00uQWRtaW4KKiBAYXV0aG9yCiogQGRlc2NyaXB0aW9uCiogICAgICBbZGVzY3JpcHRpb25fcGxhY2Vob2xkZXJdCiovCklUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0gPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgJCgnI0ltcG9ydCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewoKICAgICAgICAvLyB2YWxpZGF0ZSBkcm9wZG93bgogICAgICAgIHZhciBDbGFzc1ZhbGlkYXRpb24gPSBDb3JlLkZvcm0uVmFsaWRhdGUuVmFsaWRhdGVFbGVtZW50KCQoJyNFeGFtcGxlQ2xhc3MnKSk7CiAgICAgICAgaWYgKCBDbGFzc1ZhbGlkYXRpb24gPT0gZmFsc2UgKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHZhciBJbXBvcnRJdGVtID0gJCgnI0V4YW1wbGVDbGFzcycpLnZhbCgpOwoKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICAnQWN0aW9uPScgKyAnQWRtaW5JVFNNQ29uZmlnSXRlbScgKyAnO1N1YmFjdGlvbj1GaWxlQ2xhc3NMaXN0O0V4YW1wbGVGaWxlPScgKyBJbXBvcnRJdGVtLAogICAgICAgICAgICBmdW5jdGlvbiAoUmVzcG9uc2UpIHsKCiAgICAgICAgICAgICAgICBpZiAoIVJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgICAgYWxlcnQoQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIkFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLiIpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgSXRlbUxpc3QgPSBSZXNwb25zZTsKCiAgICAgICAgICAgICAgICB2YXIgSFRNTFN0cmluZyA9IENvcmUuVGVtcGxhdGUuUmVuZGVyKCdBZ2VudC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQvQ2xhc3NJbXBvcnRDb25maXJtJywgewogICAgICAgICAgICAgICAgICAgICdDbGFzc2VzJzogSXRlbUxpc3QuQ2xhc3NlcywKICAgICAgICAgICAgICAgICAgICAnUm9sZXMnOiBJdGVtTGlzdC5Sb2xlcywKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdmFyIFVwZGF0ZUV4aXN0aW5nRW50aXRpZXMgPSAkKCcjVXBkYXRlRXhpc3RpbmdFbnRpdGllcycpLnByb3AoJ2NoZWNrZWQnKSA/ICcxJyA6ICcwJzsKCiAgICAgICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93RGlhbG9nKHsKICAgICAgICAgICAgICAgICAgICBUaXRsZTogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIk92ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24iKSwKICAgICAgICAgICAgICAgICAgICBIVE1MOiBIVE1MU3RyaW5nLAogICAgICAgICAgICAgICAgICAgIE1vZGFsOiB0cnVlLAogICAgICAgICAgICAgICAgICAgIENsb3NlT25DbGlja091dHNpZGU6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIENsb3NlT25Fc2NhcGU6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uVG9wOiAnMjAlJywKICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbkxlZnQ6ICdDZW50ZXInLAogICAgICAgICAgICAgICAgICAgIEFsbG93QXV0b0dyb3c6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgQnV0dG9uczogWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ0NvbmZpcm0nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGU6IHVuZGVmaW5lZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzOiAnQ29uZmlybSBDYWxsRm9yQWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIERpYWxvZ1RlbXBsYXRlID0gQ29yZS5UZW1wbGF0ZS5SZW5kZXIoJ0RpYWxvZy9XYWl0aW5nJywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0OiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgiSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93RGlhbG9nKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRNTDogRGlhbG9nVGVtcGxhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlOiAiIiwgICAvLyBOb3QgYXBwbGljYWJsZSBpZiBoZWFkZXIgaXMgaGlkZGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGFsOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9zZU9uQ2xpY2tPdXRzaWRlOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvc2VPbkVzY2FwZTogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uVG9wOiAnMjAlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb25MZWZ0OiAnQ2VudGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dBdXRvR3JvdzogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpZGVIZWFkZXI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpZGVGb290ZXI6IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWN0aW9uPScgKyAnQWRtaW5JVFNNQ29uZmlnSXRlbScgKyAnO1N1YmFjdGlvbj1DbGFzc0ltcG9ydDtFeGFtcGxlQ2xhc3M9JyArIEltcG9ydEl0ZW0gKyAnO1VwZGF0ZUV4aXN0aW5nRW50aXRpZXM9JyArIFVwZGF0ZUV4aXN0aW5nRW50aXRpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChSZXNwb25zZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFSZXNwb25zZSB8fCAhUmVzcG9uc2UuU3VjY2VzcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuVUkuRGlhbG9nLlNob3dBbGVydCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCBSZXNwb25zZS5FcnJvck1lc3NhZ2UgfHwgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJyApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZzp2aXNpYmxlJykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsOiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnRGlzbWlzcycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZTogJ0Nsb3NlJywKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9KTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0gfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Add.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQWRkCiAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0KICogQGF1dGhvciBSb3RoZXIgT1NTIEdtYkgKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtIGFkZC4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5BZGQgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtLkFkZAogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0YWJsZSBmaWx0ZXIuCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBDb3JlLlVJLlRhYmxlLkluaXRUYWJsZUZpbHRlcigkKCcjRmlsdGVyQ2xhc3NlcycpLCAkKCcjQ2xhc3NlcycpKTsKICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQWRkIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.CustomerSearch.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoKLy8gVE9ETzoKLy9SZW1vdmUgdGhpcyBsaW5lIGFuZCBmaXggSlNEb2MKLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RVNMaW50KQoKCiJ1c2Ugc3RyaWN0IjsKCnZhciBJVFNNID0gSVRTTSB8fCB7fTsKSVRTTS5BZ2VudCA9IElUU00uQWdlbnQgfHwge307CklUU00uQWdlbnQuQ29uZmlnSXRlbSA9IElUU00uQWdlbnQuQ29uZmlnSXRlbSB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2gKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIHNlYXJjaC4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5DdXN0b21lclNlYXJjaCA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkN1c3RvbWVyU2VhcmNoCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCAtIFRoZSBqUXVlcnkgb2JqZWN0IG9mIHRoZSBpbnB1dCBmaWVsZCB3aXRoIGF1dG9jb21wbGV0ZS4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBJbml0aWFsaXplcyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewoKICAgICAgICB2YXIgQ3VzdG9tZXJTZWFyY2hJdGVtSURzID0gQ29yZS5Db25maWcuR2V0KCdDdXN0b21lclNlYXJjaEl0ZW1JRHMnKTsKCiAgICAgICAgaWYgKHR5cGVvZiBDdXN0b21lclNlYXJjaEl0ZW1JRHMgIT09ICd1bmRlZmluZWQnICYmIEFycmF5LmlzQXJyYXkoQ3VzdG9tZXJTZWFyY2hJdGVtSURzKSAmJiBDdXN0b21lclNlYXJjaEl0ZW1JRHMubGVuZ3RoKSB7CgogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IEN1c3RvbWVyU2VhcmNoSXRlbUlEcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgLy8gZXNjYXBlIHBvc3NpYmxlIGNvbG9ucyAoOikgaW4gZWxlbWVudCBpZCBiZWNhdXNlIGpRdWVyeSBjYW4gbm90IGhhbmRsZSBpdCBpbiBpZCBhdHRyaWJ1dGUgc2VsZWN0b3JzCiAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkN1c3RvbWVyU2VhcmNoLkluaXQoICQoIiMiICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoQ3VzdG9tZXJTZWFyY2hJdGVtSURzW2ldKSApICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5BZ2VudC5Db25maWdJdGVtLkN1c3RvbWVyU2VhcmNoIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Dashboard.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRGFzaGJvYXJkCiAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0KICogQGF1dGhvciBSb3RoZXIgT1NTIEdtYkgKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG5hdmJhci4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5EYXNoYm9hcmQgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtLkRhc2hib2FyZAogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgb3ZlcnZpZXcgYmVoYXZpb3Vycy4KICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewoKICAgICAgICB2YXIgRGFzaGxldERhdGEgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01Db25maWdJdGVtR2VuZXJpYycpOwoKICAgICAgICBpZiAodHlwZW9mIERhc2hsZXREYXRhICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICBJVFNNQ29uZmlnSXRlbUdlbmVyaWMoRGFzaGxldERhdGEpOwoKICAgICAgICAgICAgLy8gU3Vic2NyaWJlIHRvIENvbnRlbnRVcGRhdGUgZXZlbnQgdG8gaW5pdGlhdGUgdGlja2V0IGdlbmVyaWMgZXZlbnRzIG9uIHdpZGdldCB1cGRhdGUKICAgICAgICAgICAgQ29yZS5BcHAuU3Vic2NyaWJlKCdFdmVudC5BSkFYLkNvbnRlbnRVcGRhdGUuQ2FsbGJhY2snLCBmdW5jdGlvbigkV2lkZ2V0RWxlbWVudCkgewogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiAkV2lkZ2V0RWxlbWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgJFdpZGdldEVsZW1lbnQuc2VhcmNoKERhc2hsZXREYXRhLk5hbWUpICE9PSBwYXJzZUludCgnLTEnLCAxMCkpIHsKICAgICAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbUdlbmVyaWMoRGFzaGxldERhdGEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9OwoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIElUU01Db25maWdJdGVtR2VuZXJpYwogICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbS5EYXNoYm9hcmQKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtPYmplY3R9IERhc2hsZXREYXRhIC0gSGFzaCB3aXRoIGNvbnRhaW5lciBuYW1lIGFuZCBIVE1MIG5hbWUKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBJbml0aWFsaXplcyBkYXNoYm9hcmQgd2lkZ2V0IElUU01Db25maWdJdGVtR2VuZXJpYwogICAgICovCiAgICBmdW5jdGlvbiBJVFNNQ29uZmlnSXRlbUdlbmVyaWMgKERhc2hsZXREYXRhKSB7CgogICAgICAgICAgICAkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKERhc2hsZXREYXRhLk5hbWUpICsgJy1ib3gnKS5maW5kKCcuVGFiLkFjdGlvbnMgbGkgYScpLm9mZignY2xpY2snKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciBDdXN0b21lcklELAogICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklELAogICAgICAgICAgICAgICAgICAgIEZpbHRlcjsKCiAgICAgICAgICAgICAgICBDdXN0b21lcklEICAgICAgPSAkKCdpbnB1dFtuYW1lPUN1c3RvbWVySURdJykudmFsKCkgfHwgJyc7CiAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJJRCAgPSAkKCdpbnB1dFtuYW1lPUN1c3RvbWVyVXNlcklEXScpLnZhbCgpIHx8ICcnOwogICAgICAgICAgICAgICAgRmlsdGVyICAgICAgICAgID0gJCh0aGlzKS5hdHRyKCdkYXRhLWZpbHRlcicpOwoKICAgICAgICAgICAgICAgICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkgKyAnLWJveCcpLmFkZENsYXNzKCdMb2FkaW5nJyk7CiAgICAgICAgICAgICAgICBDb3JlLkFKQVguQ29udGVudFVwZGF0ZSgkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKERhc2hsZXREYXRhLk5hbWUpKSwgQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgJ0FjdGlvbj0nICsgQ29yZS5Db25maWcuR2V0KCdBY3Rpb24nKSArICc7U3ViYWN0aW9uPUVsZW1lbnQ7TmFtZT0nICsgRGFzaGxldERhdGEuTmFtZSArICc7Q3VzdG9tZXJJRD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEN1c3RvbWVySUQpICsgJztDdXN0b21lclVzZXJJRD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KEN1c3RvbWVyVXNlcklEKSArICc7RmlsdGVyPScgKyBGaWx0ZXIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKERhc2hsZXREYXRhLk5hbWUpICsgJy1ib3gnKS5yZW1vdmVDbGFzcygnTG9hZGluZycpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcihEYXNobGV0RGF0YS5OYW1lKSArICctYm94JykuZmluZCgnLkRhdGFUYWJsZSB0aCBhJykub2ZmKCdjbGljaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIEN1c3RvbWVySUQsCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQsCiAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgID0gJCh0aGlzKS5hdHRyKCdkYXRhLWNvbHVtbicpLAogICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICA9ICcnLAogICAgICAgICAgICAgICAgICAgICRPcmRlckJ5T2JqICAgICA9ICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkgKyAnLWJveCcpLmZpbmQoJ3RoLlNvcnREZXNjZW5kaW5nTGFyZ2UsIHRoLlNvcnRBc2NlbmRpbmdMYXJnZScpOwoKICAgICAgICAgICAgICAgIEN1c3RvbWVySUQgICAgICA9ICQoJ2lucHV0W25hbWU9Q3VzdG9tZXJJRF0nKS52YWwoKSB8fCAnJzsKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEICA9ICQoJ2lucHV0W25hbWU9Q3VzdG9tZXJVc2VySURdJykudmFsKCkgfHwgJyc7CgogICAgICAgICAgICAgICAgaWYgKCRPcmRlckJ5T2JqICYmICRPcmRlckJ5T2JqLmhhc0NsYXNzKCdTb3J0RGVzY2VuZGluZ0xhcmdlJykpIHsKICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ID0gJ0Rvd24nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoJE9yZGVyQnlPYmogJiYgJE9yZGVyQnlPYmouaGFzQ2xhc3MoJ1NvcnRBc2NlbmRpbmdMYXJnZScpKSB7CiAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcihEYXNobGV0RGF0YS5OYW1lKSArICctYm94JykuYWRkQ2xhc3MoJ0xvYWRpbmcnKTsKICAgICAgICAgICAgICAgIENvcmUuQUpBWC5Db250ZW50VXBkYXRlKCQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkpLCBDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJykgKyAnQWN0aW9uPScgKyBDb3JlLkNvbmZpZy5HZXQoJ0FjdGlvbicpICsgJztTdWJhY3Rpb249RWxlbWVudDtOYW1lPScgKyBEYXNobGV0RGF0YS5OYW1lICsgJztDdXN0b21lcklEPScgKyBlbmNvZGVVUklDb21wb25lbnQoQ3VzdG9tZXJJRCkgKyAnO0N1c3RvbWVyVXNlcklEPScgKyBlbmNvZGVVUklDb21wb25lbnQoQ3VzdG9tZXJVc2VySUQpICsgJztTb3J0Qnk9JyArIFNvcnRCeSArICc7T3JkZXJCeT0nICsgT3JkZXJCeSwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkgKyAnLWJveCcpLnJlbW92ZUNsYXNzKCdMb2FkaW5nJyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSk7CiAgICB9CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRGFzaGJvYXJkIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Edit.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRWRpdAogKiBAbWVtYmVyb2YgSVRTTS5BZ2VudAogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gZWRpdC4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qCiAgICAqIEBuYW1lIEluaXQKICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0CiAgICAqIEBmdW5jdGlvbgogICAgKiBAZGVzY3JpcHRpb24KICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBmb3JtIHN1Ym1pdHRpb24uCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAkKCcjQ2FuY2VsQnV0dG9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBpZiAoQ29yZS5VSS5Qb3B1cC5DdXJyZW50SXNQb3B1cFdpbmRvdygpKSB7CiAgICAgICAgICAgICAgICBDb3JlLlVJLlBvcHVwLkNsb3NlUG9wdXAoKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBIaWRlU2hvd0NvbXBsZXRlUGFnZVNlY3Rpb24oICQoJyNDbGFzc0l0ZW0gPiAuQ29udGVudCA+IGZpZWxkc2V0JykgKTsKICAgICAgICBDb3JlLkFwcC5TdWJzY3JpYmUoJ0V2ZW50LkFKQVguRm9ybVVwZGF0ZS5DYWxsYmFjaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBIaWRlU2hvd0NvbXBsZXRlUGFnZVNlY3Rpb24oICQoJyNDbGFzc0l0ZW0gPiAuQ29udGVudCA+IGZpZWxkc2V0JykgKQogICAgICAgIH0pOwoKICAgICAgICBPcGVuUmVsZXZhbnRQYWdlcygpOwogICAgICAgICQoJ2Zvcm0nKS5vbignc3VibWl0JywgT3BlblJlbGV2YW50UGFnZXMpOwogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIE9wZW5zIHRoZSBkZXRhaWxzIG9mIGFsbCBwYWdlcyB0aGF0IGNvbnRhaW4gaW52YWxpZCBmb3JtIGlucHV0IGZpZWxkcyBvciBjb250YWluIGEgY3VycmVudGx5IGZvY3VzZWQgZWxlbWVudC4KICAgICAqLwogICAgZnVuY3Rpb24gT3BlblJlbGV2YW50UGFnZXMoKSB7CiAgICAgICAgbGV0ICRSZWxldmFudERldGFpbHNPcGVuZWQgPSBmYWxzZTsKICAgICAgICAkKCdkZXRhaWxzJykuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGlmICgkKHRoaXMpLmZpbmQoJy5FcnJvcicpLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignb3BlbicsIHRydWUpOwogICAgICAgICAgICAgICAgJFJlbGV2YW50RGV0YWlsc09wZW5lZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoJCh0aGlzKS5maW5kKCc6Zm9jdXMnKS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ29wZW4nLCB0cnVlKTsKICAgICAgICAgICAgICAgICRSZWxldmFudERldGFpbHNPcGVuZWQgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgaWYgKCEkUmVsZXZhbnREZXRhaWxzT3BlbmVkKSB7CiAgICAgICAgICAgICQoJ2RldGFpbHM6Zmlyc3Qtb2YtdHlwZScpLmF0dHIoJ29wZW4nLCB0cnVlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBIaWRlU2hvdyBhIHNlY3Rpb24gb3IgcGFnZSBoZWFkZXIgaWYgdGhlIGNvbXBsZXRlIGNvbnRlbnQgaXMgQUNMSGlkZGVuCiAgICAgKi8KICAgIGZ1bmN0aW9uIEhpZGVTaG93Q29tcGxldGVQYWdlU2VjdGlvbiggJEVsZW1lbnQsIElzUGFnZSApIHsKICAgICAgICBpZiAoICFJc1BhZ2UgKSB7CiAgICAgICAgICAgICRFbGVtZW50LmNoaWxkcmVuKCJkZXRhaWxzLlBhZ2VDb250ZW50IikuZWFjaCggZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBIaWRlU2hvd0NvbXBsZXRlUGFnZVNlY3Rpb24oICQodGhpcyksIHRydWUgKQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIGxldCBIaWRlUGFnZSA9IElzUGFnZSAmJiAkRWxlbWVudC5jaGlsZHJlbigiLlJvd19TZWN0aW9uSGVhZGVyIikubGVuZ3RoID4gMDsKCiAgICAgICAgJEVsZW1lbnQuY2hpbGRyZW4oIi5Sb3dfU2VjdGlvbkhlYWRlciIpLmVhY2goIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBsZXQgJFNlY3Rpb25Sb3dzID0gJCh0aGlzKS5uZXh0VW50aWwoIi5Sb3dfU2VjdGlvbkhlYWRlciIpLAogICAgICAgICAgICAgICAgVmlzaWJsZVJvd3MgID0gJFNlY3Rpb25Sb3dzLmZpbHRlcigiOm5vdCgub29vQUNMSGlkZGVuKSIpLmxlbmd0aCA+IDA7CgogICAgICAgICAgICBpZiAoICQodGhpcykuaGFzQ2xhc3MoIm9vb0FDTEhpZGRlbiIpICkgewogICAgICAgICAgICAgICAgaWYgKCBWaXNpYmxlUm93cyApIHsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCJvb29BQ0xIaWRkZW4iKTsKICAgICAgICAgICAgICAgICAgICBIaWRlUGFnZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICggIVZpc2libGVSb3dzICkgewogICAgICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoIm9vb0FDTEhpZGRlbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgSGlkZVBhZ2UgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBpZiAoIElzUGFnZSApIHsKICAgICAgICAgICAgaWYgKCAkRWxlbWVudC5oYXNDbGFzcygib29vQUNMSGlkZGVuIikgKSB7CiAgICAgICAgICAgICAgICBpZiAoICFIaWRlUGFnZSApIHsKICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC5yZW1vdmVDbGFzcygib29vQUNMSGlkZGVuIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoIEhpZGVQYWdlICkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LmFkZENsYXNzKCJvb29BQ0xIaWRkZW4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KElUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0IHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.History.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgovKmVzbGludC1kaXNhYmxlIG5vLXdpbmRvdyovCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uSGlzdG9yeQogKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtCiAqIEBhdXRob3IgUm90aGVyIE9TUyBHbWJICiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5LgogKi8KSVRTTS5BZ2VudC5Db25maWdJdGVtLkhpc3RvcnkgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtLkhpc3RvcnkKICAgICogQGZ1bmN0aW9uCiAgICAqIEBkZXNjcmlwdGlvbgogICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIHBvcHVwLgogICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCgnYS5MaW5rWm9vbVZpZXcnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHdpbmRvdy5vcGVuZXIuQ29yZS5VSS5Qb3B1cC5GaXJlUG9wdXBFdmVudCgnVVJMJywgeyBVUkw6ICQodGhpcykuYXR0cignaHJlZicpfSk7CiAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuQ2xvc2VQb3B1cCgpOwogICAgICAgIH0pOwogICAgfTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KElUU00uQWdlbnQuQ29uZmlnSXRlbS5IaXN0b3J5IHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Overview.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uT3ZlcnZpZXcKICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbQogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgbmF2YmFyLgogKi8KSVRTTS5BZ2VudC5Db25maWdJdGVtLk92ZXJ2aWV3ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qCiAgICAqIEBuYW1lIEluaXQKICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbS5PdmVydmlldwogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgb3ZlcnZpZXcgYmVoYXZpb3Vycy4KICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBJVFNNQ29uZmlnSXRlbVNlYXJjaCAgICA9IENvcmUuQ29uZmlnLkdldCgnSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnKTsKICAgICAgICB2YXIgSVRTTUNvbmZpZ0l0ZW1BY3Rpb25Sb3cgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01Db25maWdJdGVtQWN0aW9uUm93JykgfHwge307CgogICAgICAgIHZhciBVUkwsIENvbHVtbkZpbHRlciwgTmV3Q29sdW1uRmlsdGVyU3RyZywgTXlSZWdFeCwgU2Vzc2lvbkluZm9ybWF0aW9uOwoKICAgICAgICAkKCcjU2hvd0NvbnRleHRTZXR0aW5nc0RpYWxvZycpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygkKCcjQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyJyksIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJTZXR0aW5ncyIpLCAnMTUlJywgJ0NlbnRlcicsIHRydWUsCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlN1Ym1pdCIpLAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlOiAnU3VibWl0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3M6ICdQcmltYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb246IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkTGlzdENvbnRhaW5lciA9ICQoJy5BbGxvY2F0aW9uTGlzdENvbnRhaW5lcicpLmZpbmQoJy5Bc3NpZ25lZEZpZWxkcycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlciA9ICQoJ2xpLkFjdGl2ZSA+IGEnKS50ZXh0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRJRDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkTGlzdENvbnRhaW5lcikgJiYgJExpc3RDb250YWluZXIubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKCRMaXN0Q29udGFpbmVyLmZpbmQoJ2xpJyksIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZElEID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZC0nICsgJCh0aGlzKS5hdHRyKCdkYXRhLWZpZWxkbmFtZScpICsgJy0nICsgRmlsdGVyOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBhZGQgdGhpcyBmaWVsZCBpZiBpdHMgbm90IGFscmVhZHkgdGhlcmUuIFRoaXMgY291bGQgaGFwcGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGUuZy4gdGhlIHNhdmUgYnV0dG9uIGlzIGNsaWNrZWQgbXVsdGlwbGUgdGltZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKCcjJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKEZpZWxkSUQpKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJzxpbnB1dCBuYW1lPSJVc2VyRmlsdGVyQ29sdW1uc0VuYWJsZWQiIHR5cGU9ImhpZGRlbiIgLz4nKS5hdHRyKCdpZCcsIEZpZWxkSUQpLnZhbCgkKHRoaXMpLmF0dHIoJ2RhdGEtZmllbGRuYW1lJykpLmFwcGVuZFRvKCRMaXN0Q29udGFpbmVyLmNsb3Nlc3QoJ2RpdicpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLCB0cnVlKTsKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLlNldEFsbG9jYXRpb25MaXN0KCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgaWYgKElUU01Db25maWdJdGVtU2VhcmNoKSB7CiAgICAgICAgICAgICQoJyNJVFNNQ29uZmlnSXRlbVNlYXJjaCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guT3BlblNlYXJjaERpYWxvZygKICAgICAgICAgICAgICAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1TZWFyY2guUHJvZmlsZSksCiAgICAgICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1TZWFyY2guQ2xhc3NJRCkKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgJC5lYWNoKElUU01Db25maWdJdGVtQWN0aW9uUm93LCBmdW5jdGlvbihLZXksIERhdGEpIHsKICAgICAgICAgICAgSVRTTS5VSS5Db25maWdJdGVtQWN0aW9uUm93LkFkZEFjdGlvbnMoJCgnI0NvbmZpZ0l0ZW1JRF8nICsgS2V5KSwgRGF0YSk7CiAgICAgICAgfSk7CgogICAgICAgIElUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdy5Jbml0KCk7CgogICAgICAgIENvcmUuVUkuSW5pdENoZWNrYm94U2VsZWN0aW9uKCQoJ3RhYmxlIHRkLkNoZWNrYm94JykpOwoKICAgICAgICAvLyBjaGFuZ2UgZXZlbnQgZm9yIGNvbHVtbiBmaWx0ZXIKICAgICAgICAkKCcuQ29sdW1uRmlsdGVyJykub24oJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgIC8vIGRlZmluZSB2YXJpYWJsZXMKICAgICAgICAgICAgVVJMID0gQ29yZS5Db25maWcuR2V0KCJCYXNlbGluayIpICsgJ0FjdGlvbj0nICsgQ29yZS5Db25maWcuR2V0KCJBY3Rpb24iKSArICc7JyArIENvcmUuQ29uZmlnLkdldCgnTGlua1BhZ2UnKSArICdDYXRlZ29yeT0nICsgQ29yZS5Db25maWcuR2V0KCdDYXRlZ29yeScpICsgJzsnOwogICAgICAgICAgICBTZXNzaW9uSW5mb3JtYXRpb24gPSBDb3JlLkFwcC5HZXRTZXNzaW9uSW5mb3JtYXRpb24oKTsKICAgICAgICAgICAgJC5lYWNoKFNlc3Npb25JbmZvcm1hdGlvbiwgZnVuY3Rpb24gKEtleSwgVmFsdWUpIHsKICAgICAgICAgICAgICAgIFVSTCArPSBlbmNvZGVVUklDb21wb25lbnQoS2V5KSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChWYWx1ZSkgKyAnOyc7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBDb2x1bW5GaWx0ZXIgPSAkKHRoaXMpWzBdLm5hbWU7CiAgICAgICAgICAgIE5ld0NvbHVtbkZpbHRlclN0cmcgPSAkKHRoaXMpWzBdLm5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoJCh0aGlzKS52YWwoKSkgKyAnOyc7CgogICAgICAgICAgICBNeVJlZ0V4ID0gbmV3ICBSZWdFeHAoQ29sdW1uRmlsdGVyKyI9W147XSo7Iik7CgogICAgICAgICAgICAvLyBjaGVjayBmb3IgYWxyZWFkeSBzZXQgcGFyYW1ldGVyIGFuZCByZXBsYWNlCiAgICAgICAgICAgIGlmIChVUkwubWF0Y2goTXlSZWdFeCkpIHsKICAgICAgICAgICAgICAgIFVSTCA9IFVSTC5yZXBsYWNlKE15UmVnRXgsIE5ld0NvbHVtbkZpbHRlclN0cmcpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBvdGhlcndpc2UgYWRkIHRoZSBuZXcgY29sdW1uIGZpbHRlcgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIFVSTCA9IFVSTCArIE5ld0NvbHVtbkZpbHRlclN0cmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHJlZGlyZWN0CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gIFVSTDsKICAgICAgICB9KTsKCiAgICAgICAgLy8gY2xpY2sgZXZlbnQgb24gdGFibGUgaGVhZGVyIHRyaWdnZXIKICAgICAgICAkKCcuT3ZlcnZpZXdIZWFkZXInKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyICRUcmlnZ2VyT2JqID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgIEZpbHRlck5hbWU7CgogICAgICAgICAgICBpZiAoJFRyaWdnZXJPYmouaGFzQ2xhc3MoJ0FjdGl2ZScpKSB7CiAgICAgICAgICAgICAgICAkVHJpZ2dlck9iagogICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgIC5maW5kKCcuQ29sdW1uU2V0dGluZ3NCb3gnKQogICAgICAgICAgICAgICAgICAgIC5mYWRlT3V0KCdmYXN0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLnJlbW92ZUNsYXNzKCdBY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAvLyBzbGlkZSB1cCBhbGwgb3BlbiBzZXR0aW5ncyB3aWRnZXRzCiAgICAgICAgICAgICAgICAkKCcuQ29sdW1uU2V0dGluZ3NUcmlnZ2VyJykKICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbHVtblNldHRpbmdzQm94JykKICAgICAgICAgICAgICAgICAgICAuZmFkZU91dCgnZmFzdCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudCgpLnByZXYoJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInKS5yZW1vdmVDbGFzcygnQWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8gc2hvdyBUSElTIHNldHRpbmdzIHdpZGdldAogICAgICAgICAgICAgICAgJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbHVtblNldHRpbmdzQm94JykKICAgICAgICAgICAgICAgICAgICAuZmFkZUluKCdmYXN0JywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5hZGRDbGFzcygnQWN0aXZlJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZyZXNoIGZpbHRlciBkcm9wZG93bgogICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJOYW1lID0gJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignbmFtZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3RoJykuaGFzQ2xhc3MoJ0N1c3RvbWVySUQnKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3RoJykuaGFzQ2xhc3MoJ0N1c3RvbWVyVXNlcklEJykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5jbG9zZXN0KCd0aCcpLmhhc0NsYXNzKCdSZXNwb25zaWJsZScpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRyaWdnZXJPYmouY2xvc2VzdCgndGgnKS5oYXNDbGFzcygnT3duZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkVHJpZ2dlck9iai5wYXJlbnQoKS5maW5kKCcuU2VsZWN0ZWRWYWx1ZScpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuQUpBWC5Gb3JtVXBkYXRlKCQoJyNOb3RoaW5nJyksICdBSkFYRmlsdGVyVXBkYXRlJywgRmlsdGVyTmFtZSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBBdXRvQ29tcGxldGVWYWx1ZSA9ICRUcmlnZ2VyT2JqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5leHQoJy5Db2x1bW5TZXR0aW5nc0NvbnRhaW5lcicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0b0NvbXBsZXRlVGV4dCAgPSAkVHJpZ2dlck9iagogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdzZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdvcHRpb246c2VsZWN0ZWQnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50ZXh0KCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXV0b0NvbXBsZXRlVmFsdWUgIT09ICdEZWxldGVGaWx0ZXInKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnc2VsZWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJzxzcGFuIGNsYXNzPSJTZWxlY3RlZFZhbHVlIEhpZGRlbiI+JyArIEF1dG9Db21wbGV0ZVRleHQgKyAnICgnICsgQXV0b0NvbXBsZXRlVmFsdWUgKyAnKTwvc3Bhbj4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wYXJlbnQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dFt0eXBlPXRleHRdJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJzxhIGhyZWY9IiMiIGNsYXNzPSJEZWxldGVGaWx0ZXIiPjxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+PC9hPicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBhcmVudCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2EuRGVsZXRlRmlsdGVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub2ZmKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsKCdEZWxldGVGaWx0ZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkFKQVguRm9ybVVwZGF0ZSgkKCcjQ29sdW1uRmlsdGVyQXR0cmlidXRlcycpLCAnQUpBWEZpbHRlclVwZGF0ZScsIEZpbHRlck5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAkKCcuTWFzdGVyQWN0aW9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgIHZhciAkTWFzdGVyQWN0aW9uTGluayA9ICQodGhpcykuZmluZCgnLk1hc3RlckFjdGlvbkxpbmsnKTsKICAgICAgICAgICAgLy8gb25seSBhY3QgaWYgdGhlIGxpbmsgd2FzIG5vdCBjbGlja2VkIGRpcmVjdGx5CiAgICAgICAgICAgIGlmIChFdmVudC50YXJnZXQgIT09ICRNYXN0ZXJBY3Rpb25MaW5rLmdldCgwKSkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJE1hc3RlckFjdGlvbkxpbmsuYXR0cignaHJlZicpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5BZ2VudC5Db25maWdJdGVtLk92ZXJ2aWV3IHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Search.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoKLy8gVE9ETzoKLy9SZW1vdmUgdGhpcyBsaW5lIGFuZCBmaXggSlNEb2MKLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RVNMaW50KQoKCiJ1c2Ugc3RyaWN0IjsKCnZhciBJVFNNID0gSVRTTSB8fCB7fTsKSVRTTS5BZ2VudCA9IElUU00uQWdlbnQgfHwge307CklUU00uQWdlbnQuQ29uZmlnSXRlbSA9IElUU00uQWdlbnQuQ29uZmlnSXRlbSB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2gKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIHNlYXJjaC4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2ggPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBzZWFyY2ggc2NyZWVuLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBJVFNNQ29uZmlnSXRlbU9wZW5TZWFyY2hEaWFsb2cgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01Db25maWdJdGVtT3BlblNlYXJjaERpYWxvZycpOwogICAgICAgIGlmICggSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nICkgewogICAgICAgICAgICBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coCiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbU9wZW5TZWFyY2hEaWFsb2cuQWN0aW9uLAogICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nLlByb2ZpbGUpLAogICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nLkNsYXNzSUQpCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVybiBub3RoaW5nCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gcmVidWlsZCBhdHRyaWJ1dGUgc2VsZWN0aW9uLCBvbmx5IHNob3cgYXZhaWxhYmxlIGF0dHJpYnV0ZXMuCiAgICAgKi8KICAgIFRhcmdldE5TLkFkZGl0aW9uYWxBdHRyaWJ1dGVTZWxlY3Rpb25SZWJ1aWxkID0gZnVuY3Rpb24gKCkgewoKICAgICAgICAvLyBnZXQgb3JpZ2luYWwgc2VsZWN0aW9uIHdpdGggYWxsIHBvc3NpYmxlIGZpZWxkcyBhbmQgY2xvbmUgaXQKICAgICAgICB2YXIgJEF0dHJpYnV0ZUNsb25lID0gJCgnI0F0dHJpYnV0ZU9yaWcgb3B0aW9uJykuY2xvbmUoKSwKICAgICAgICAgICAgJEF0dHJpYnV0ZVNlbGVjdGlvbiA9ICQoJyNBdHRyaWJ1dGUnKS5lbXB0eSgpLAogICAgICAgICAgICBWYWx1ZTsKCiAgICAgICAgLy8gc3RyaXAgYWxsIGFscmVhZHkgdXNlZCBhdHRyaWJ1dGVzCiAgICAgICAgJEF0dHJpYnV0ZUNsb25lLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICBWYWx1ZSA9IENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCQodGhpcykuYXR0cigndmFsdWUnKSk7CiAgICAgICAgICAgIGlmICghJCgnI1NlYXJjaEluc2VydCBsYWJlbCNMYWJlbCcgKyBWYWx1ZSkubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAkQXR0cmlidXRlU2VsZWN0aW9uLmFwcGVuZCgkKHRoaXMpKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAkQXR0cmlidXRlU2VsZWN0aW9uLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJyk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtTdHJpbmd9IG9mIGF0dHJpYnV0ZSB0byBhZGQuCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBhZGRzIG9uZSBhdHRyaWJ1dGUgZm9yIHNlYXJjaAogICAgICovCiAgICBUYXJnZXROUy5TZWFyY2hBdHRyaWJ1dGVBZGQgPSBmdW5jdGlvbiAoQXR0cmlidXRlKSB7CgogICAgICAgIC8vIGVzY2FwZSBwb3NzaWJsZSBjb2xvbnMgKDopIGluIGVsZW1lbnQgaWQgYmVjYXVzZSBqUXVlcnkgY2FuIG5vdCBoYW5kbGUgaXQgaW4gaWQgYXR0cmlidXRlIHNlbGVjdG9ycwogICAgICAgIEF0dHJpYnV0ZSA9IENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKEF0dHJpYnV0ZSk7CgogICAgICAgIHZhciAkTGFiZWwgPSAkKCcjU2VhcmNoQXR0cmlidXRlc0hpZGRlbiBsYWJlbCNMYWJlbCcgKyBBdHRyaWJ1dGUpOwoKICAgICAgICBpZiAoJExhYmVsLmxlbmd0aCkgewogICAgICAgICAgICAkTGFiZWwucHJldigpLmNsb25lKCkuYXBwZW5kVG8oJyNTZWFyY2hJbnNlcnQnKTsKICAgICAgICAgICAgJExhYmVsLmNsb25lKCkuYXBwZW5kVG8oJyNTZWFyY2hJbnNlcnQnKTsKICAgICAgICAgICAgJExhYmVsLm5leHQoKS5jbG9uZSgpLmFwcGVuZFRvKCcjU2VhcmNoSW5zZXJ0JykKCiAgICAgICAgICAgICAgICAvLyBiaW5kIGNsaWNrIGZ1bmN0aW9uIHRvIHJlbW92ZSBidXR0b24gbm93CiAgICAgICAgICAgICAgICAuZmluZCgnLlJlbW92ZUJ1dHRvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgJEVsZW1lbnQgPSAkKHRoaXMpLnBhcmVudCgpOwogICAgICAgICAgICAgICAgICAgIFRhcmdldE5TLlNlYXJjaEF0dHJpYnV0ZVJlbW92ZSgkRWxlbWVudCk7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlYnVpbGQgc2VsZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgVGFyZ2V0TlMuQWRkaXRpb25hbEF0dHJpYnV0ZVNlbGVjdGlvblJlYnVpbGQoKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8gc2V0IGF1dG9jb21wbGV0ZSB0byBjdXN0b21lciB0eXBlIGZpZWxkcwogICAgICAgICAgICAgICAgJCgnI1NlYXJjaEluc2VydCcpLmZpbmQoJy5JVFNNQ3VzdG9tZXJTZWFyY2gnKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBJbnB1dElEID0gJCh0aGlzKS5hdHRyKCdpZCcpICsgJ0F1dG9jb21wbGV0ZSc7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnSVRTTUN1c3RvbWVyU2VhcmNoJyk7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdpZCcsIElucHV0SUQpOwogICAgICAgICAgICAgICAgICAgICQodGhpcykucHJldigpLmF0dHIoJ2lkJywgSW5wdXRJRCArICdTZWxlY3RlZCcpOwoKICAgICAgICAgICAgICAgICAgICAvLyBlc2NhcGUgcG9zc2libGUgY29sb25zICg6KSBpbiBlbGVtZW50IGlkIGJlY2F1c2UgalF1ZXJ5IGNhbiBub3QgaGFuZGxlIGl0IGluIGlkIGF0dHJpYnV0ZSBzZWxlY3RvcnMKICAgICAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkN1c3RvbWVyU2VhcmNoLkluaXQoICQoJyMnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSW5wdXRJRCkgKSApOwoKICAgICAgICAgICAgICAgICAgICAvLyBwcmV2ZW50IGRpYWxvZyBjbG9zdXJlIHdoZW4gc2VsZWN0IGEgY3VzdG9tZXIgZnJvbSB0aGUgbGlzdAogICAgICAgICAgICAgICAgICAgICQoJ3VsLnVpLWF1dG9jb21wbGV0ZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKEV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICBDb3JlLlVJLklucHV0RmllbGRzLkFjdGl2YXRlKCQoJyNTZWFyY2hJbnNlcnQnKSk7CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCBUaGUgalF1ZXJ5IG9iamVjdCBvZiB0aGUgZm9ybSAgb3IgYW55IGVsZW1lbnQKICAgICAqICAgICAgd2l0aGluIHRoaXMgZm9ybSBjaGVjay4KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHJlbW92ZSBhdHRyaWJ1dGVzIGZyb20gYW4gZWxlbWVudC4KICAgICAqLwoKICAgIFRhcmdldE5TLlNlYXJjaEF0dHJpYnV0ZVJlbW92ZSA9IGZ1bmN0aW9uICgkRWxlbWVudCkgewogICAgICAgICRFbGVtZW50LnByZXYoKS5wcmV2KCkucmVtb3ZlKCk7CiAgICAgICAgJEVsZW1lbnQucHJldigpLnJlbW92ZSgpOwogICAgICAgICRFbGVtZW50LnJlbW92ZSgpOwogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHByaXZhdGUKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBQcm9maWxlIFRoZSBwcm9maWxlIG5hbWUgdGhhdCB3aWxsIGJlIGRlbGV0ZS4KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhIHByb2ZpbGUgdmlhIGFuIGFqYXggcmVxdWVzdHMuCiAgICAgKi8KICAgIGZ1bmN0aW9uIFNlYXJjaFByb2ZpbGVEZWxldGUoUHJvZmlsZSkgewogICAgICAgIHZhciBEYXRhID0gewogICAgICAgICAgICBBY3Rpb246ICdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgU3ViYWN0aW9uOiAnQUpBWFByb2ZpbGVEZWxldGUnLAogICAgICAgICAgICBQcm9maWxlOiBQcm9maWxlLAogICAgICAgICAgICBDbGFzc0lEOiAkKCcjU2VhcmNoQ2xhc3NJRCcpLnZhbCgpCiAgICAgICAgfTsKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICBEYXRhLAogICAgICAgICAgICBmdW5jdGlvbiAoKSB7fQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwcml2YXRlCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqIEBkZXNjcmlwdGlvbiBTaG93cyB3YWl0aW5nIGRpYWxvZyB1bnRpbCBzZWFyY2ggc2NyZWVuIGlzIHJlYWR5LgogICAgICovCiAgICBmdW5jdGlvbiBTaG93V2FpdGluZ0RpYWxvZygpIHsKICAgICAgICB2YXIgQ29udGVudCA9IENvcmUuVGVtcGxhdGUuUmVuZGVyKAogICAgICAgICAgICAnQWdlbnQvSVRTTUNvcmUvTG9hZGluZ0RpYWxvZycsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNwYW5UaXRsZTogQ29yZS5Db25maWcuR2V0KCdMb2FkaW5nTXNnJykKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIENvcmUuVUkuRGlhbG9nLlNob3dDb250ZW50RGlhbG9nKAogICAgICAgICAgICBDb250ZW50LAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0xvYWRpbmdNc2cnKSwKICAgICAgICAgICAgJzEwcHgnLAogICAgICAgICAgICAnQ2VudGVyJywKICAgICAgICAgICAgdHJ1ZQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSBub25lCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBzZXRzIGFsbCBzZWFyY2ggZGlhbG9nIHNldHRpbmdzCiAgICAgKi8KCiAgICBUYXJnZXROUy5TZXRTZWFyY2hEaWFsb2cgPSBmdW5jdGlvbigpIHsKCiAgICAgICAgLy8gaGlkZSBhZGQgdGVtcGxhdGUgYmxvY2sKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFkZEJsb2NrJykuaGlkZSgpOwoKICAgICAgICAvLyBoaWRlIHNhdmUgY2hhbmdlcyBpbiB0ZW1wbGF0ZSBibG9jawogICAgICAgICQoJyNTYXZlUHJvZmlsZScpLnBhcmVudCgpLmhpZGUoKS5wcmV2KCkuaGlkZSgpLnByZXYoKS5oaWRlKCk7CgogICAgICAgIC8vIHNlYXJjaCBwcm9maWxlIGlzIHNlbGVjdGVkCiAgICAgICAgaWYgKCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCkgJiYgJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSAhPT0gJ2xhc3Qtc2VhcmNoJykgewoKICAgICAgICAgICAgLy8gc2hvdyBkZWxldGUgYnV0dG9uCiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlRGVsZXRlJykuc2hvdygpOwoKICAgICAgICAgICAgLy8gc2hvdyBwcm9maWxlIGxpbmsKICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBc0xpbmsnKS5zaG93KCk7CgogICAgICAgICAgICAvLyBzaG93IHNhdmUgY2hhbmdlcyBpbiB0ZW1wbGF0ZSBibG9jawogICAgICAgICAgICAkKCcjU2F2ZVByb2ZpbGUnKS5wYXJlbnQoKS5zaG93KCkucHJldigpLnNob3coKS5wcmV2KCkuc2hvdygpOwoKICAgICAgICAgICAgLy8gc2V0IFNhdmVQcm9maWxlIHRvIDAKICAgICAgICAgICAgJCgnI1NhdmVQcm9maWxlJykucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTsKICAgICAgICB9CgogICAgICAgIENvcmUuVUkuSW5wdXRGaWVsZHMuQWN0aXZhdGUoJCgnLkRpYWxvZzp2aXNpYmxlJykpOwoKICAgICAgICAvLyByZWdpc3RlciBhZGQgb2YgYXR0cmlidXRlCiAgICAgICAgJCgnI0F0dHJpYnV0ZScpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBBdHRyaWJ1dGUgPSAkKCcjQXR0cmlidXRlJykudmFsKCk7CiAgICAgICAgICAgIFRhcmdldE5TLlNlYXJjaEF0dHJpYnV0ZUFkZChBdHRyaWJ1dGUpOwogICAgICAgICAgICBUYXJnZXROUy5BZGRpdGlvbmFsQXR0cmlidXRlU2VsZWN0aW9uUmVidWlsZCgpOwoKICAgICAgICAgICAgLy8gUmVnaXN0ZXIgZXZlbnQgZm9yIHRyZWUgc2VsZWN0aW9uIGRpYWxvZwogICAgICAgICAgICAkKCcuU2hvd1RyZWVTZWxlY3Rpb24nKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgQ29yZS5VSS5UcmVlU2VsZWN0aW9uLlNob3dUcmVlU2VsZWN0aW9uKCQodGhpcykpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gcmVnaXN0ZXIgcmV0dXJuIGtleQogICAgICAgICQoJyNTZWFyY2hGb3JtJykub2ZmKCdrZXlwcmVzcy5GaWx0ZXJJbnB1dCcpLm9uKCdrZXlwcmVzcy5GaWx0ZXJJbnB1dCcsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBpZiAoKEV2ZW50LmNoYXJDb2RlIHx8IEV2ZW50LmtleUNvZGUpID09PSAxMykgewogICAgICAgICAgICAgICAgaWYgKCFDaGVja0ZvclNlYXJjaGVkVmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkKCcjU2VhcmNoRm9ybVN1Ym1pdCcpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgLy8gcmVnaXN0ZXIgc3VibWl0CiAgICAgICAgJCgnI1NlYXJjaEZvcm1TdWJtaXQnKS5vZmYoJ2NsaWNrLkRvU2VhcmNoJykub24oJ2NsaWNrLkRvU2VhcmNoJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgdmFyIFNob3duQXR0cmlidXRlcyA9IFtdOwoKICAgICAgICAgICAgaWYgKCQoJyNTZWFyY2hQcm9maWxlQWRkQWN0aW9uLCAjU2VhcmNoUHJvZmlsZUFkZE5hbWUnKS5pcygnOnZpc2libGUnKSAmJiAkKCcjU2VhcmNoUHJvZmlsZUFkZE5hbWUnKS52YWwoKSkgewogICAgICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBZGRBY3Rpb24nKS50cmlnZ2VyKCdjbGljaycpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyByZW1lbWJlciBzaG93biBhdHRyaWJ1dGVzCiAgICAgICAgICAgICQoJyNTZWFyY2hJbnNlcnQgbGFiZWwnKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmF0dHIoJ2lkJykpIHsKICAgICAgICAgICAgICAgICAgICBTaG93bkF0dHJpYnV0ZXMucHVzaCgkKHRoaXMpLmF0dHIoJ2lkJykpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgJCgnI1NlYXJjaEZvcm0gI1Nob3duQXR0cmlidXRlcycpLnZhbChTaG93bkF0dHJpYnV0ZXMuam9pbignOycpKTsKCiAgICAgICAgICAgIC8vIE5vcm1hbCByZXN1bHRzIG1vZGUgd2lsbCByZXR1cm4gSFRNTCBpbiB0aGUgc2FtZSB3aW5kb3cKICAgICAgICAgICAgaWYgKCQoJyNTZWFyY2hGb3JtICNSZXN1bHRGb3JtJykudmFsKCkgPT09ICdOb3JtYWwnKSB7CgogICAgICAgICAgICAgICAgaWYgKCFDaGVja0ZvclNlYXJjaGVkVmFsdWVzKCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBDaGVja1NlYXJjaFN0cmluZ3NGb3JTdG9wV29yZHMoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKCcjU2VhcmNoRm9ybScpLnN1Ym1pdCgpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsgLy8gUHJpbnQgYW5kIENTViBzaG91bGQgb3BlbiBpbiBhIG5ldyB3aW5kb3csIG5vIHdhaXRpbmcgZGlhbG9nCiAgICAgICAgICAgICAgICAkKCcjU2VhcmNoRm9ybScpLmF0dHIoJ3RhcmdldCcsICdTZWFyY2hSZXN1bHRQYWdlJyk7CiAgICAgICAgICAgICAgICBpZiAoIUNoZWNrRm9yU2VhcmNoZWRWYWx1ZXMoKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIENoZWNrU2VhcmNoU3RyaW5nc0ZvclN0b3BXb3JkcyhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtJykuc3VibWl0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtJykuYXR0cigndGFyZ2V0JywgJycpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgQ29yZS5Gb3JtLlZhbGlkYXRlLkluaXQoKTsKICAgICAgICBDb3JlLkZvcm0uVmFsaWRhdGUuU2V0U3VibWl0RnVuY3Rpb24oJCgnI1NlYXJjaEZvcm0nKSwgZnVuY3Rpb24gKEZvcm0pIHsKICAgICAgICAgICAgRm9ybS5zdWJtaXQoKTsKCiAgICAgICAgICAgIC8vIFNob3cgb25seSBhIHdhaXRpbmcgZGlhbG9nIGZvciBOb3JtYWwgcmVzdWx0cyBtb2RlLCBiZWNhdXNlIHRoaXMgcmVzdWx0CiAgICAgICAgICAgIC8vICB3aWxsIHJldHVybiB0aGUgSFRNTCBpbiB0aGUgc2FtZSB3aW5kb3cuCiAgICAgICAgICAgIGlmICgkKCcjU2VhcmNoRm9ybSAjUmVzdWx0Rm9ybScpLnZhbCgpID09PSAnTm9ybWFsJykgewogICAgICAgICAgICAgICAgU2hvd1dhaXRpbmdEaWFsb2coKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAvLyBsb2FkIHByb2ZpbGUKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZScpLmJpbmQoJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5Mb2FkUHJvZmlsZSggJCh0aGlzKS52YWwoKSApOwogICAgICAgIH0pOwoKICAgICAgICAvLyBzaG93IGFkZCBwcm9maWxlIGJsb2NrIG9yIG5vdAogICAgICAgICQoJyNTZWFyY2hQcm9maWxlTmV3Jykub24oJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlQWRkQmxvY2snKS50b2dnbGUoKTsKICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBZGROYW1lJykuZm9jdXMoKTsKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAvLyBhZGQgbmV3IHByb2ZpbGUKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFkZEFjdGlvbicpLmJpbmQoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgUHJvZmlsZU5hbWUsICRFbGVtZW50MTsKCiAgICAgICAgICAgIC8vIGdldCBuYW1lCiAgICAgICAgICAgIFByb2ZpbGVOYW1lID0gJCgnI1NlYXJjaFByb2ZpbGVBZGROYW1lJykudmFsKCk7CgogICAgICAgICAgICAvLyBjaGVjayBuYW1lCiAgICAgICAgICAgIGlmICghUHJvZmlsZU5hbWUubGVuZ3RoIHx8IFByb2ZpbGVOYW1lLmxlbmd0aCA8IDIpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gYWRkIG5hbWUgdG8gcHJvZmlsZSBzZWxlY3Rpb24KICAgICAgICAgICAgJEVsZW1lbnQxID0gJCgnI1NlYXJjaFByb2ZpbGUnKS5jaGlsZHJlbigpLmZpcnN0KCkuY2xvbmUoKTsKICAgICAgICAgICAgJEVsZW1lbnQxLnRleHQoUHJvZmlsZU5hbWUpOwogICAgICAgICAgICAkRWxlbWVudDEuYXR0cigndmFsdWUnLCBQcm9maWxlTmFtZSk7CiAgICAgICAgICAgICRFbGVtZW50MS5wcm9wKCdzZWxlY3RlZCcsIHRydWUpOwogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZScpLmFwcGVuZCgkRWxlbWVudDEpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJyk7CgogICAgICAgICAgICAvLyBzZXQgaW5wdXQgYm94IHRvIGVtcHR5CiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlQWRkTmFtZScpLnZhbCgnJyk7CgogICAgICAgICAgICAvLyBoaWRlIGFkZCB0ZW1wbGF0ZSBibG9jawogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFkZEJsb2NrJykuaGlkZSgpOwoKICAgICAgICAgICAgLy8gaGlkZSBzYXZlIGNoYW5nZXMgaW4gdGVtcGxhdGUgYmxvY2sKICAgICAgICAgICAgJCgnI1NhdmVQcm9maWxlJykucGFyZW50KCkuaGlkZSgpLnByZXYoKS5oaWRlKCkucHJldigpLmhpZGUoKTsKCiAgICAgICAgICAgIC8vIHNldCBTYXZlUHJvZmlsZSB0byAxCiAgICAgICAgICAgICQoJyNTYXZlUHJvZmlsZScpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTsKCiAgICAgICAgICAgIC8vIHNob3cgZGVsZXRlIGJ1dHRvbgogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZURlbGV0ZScpLnNob3coKTsKCiAgICAgICAgICAgIC8vIHNob3cgcHJvZmlsZSBsaW5rCiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlQXNMaW5rJykuc2hvdygpOwogICAgICAgIH0pOwoKICAgICAgICAvLyBkaXJlY3QgbGluayB0byBwcm9maWxlCiAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBc0xpbmsnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIFNlYXJjaFByb2ZpbGUgPSAkKCcjU2VhcmNoUHJvZmlsZScpLnZhbCgpLAogICAgICAgICAgICAgICAgU2VhcmNoUHJvZmlsZUFjdGlvbiA9ICQoJyNTZWFyY2hBY3Rpb24nKS52YWwoKSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPSAkKCcjU2VhcmNoQ2xhc3NJRCcpLnZhbCgpOwoKICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJykgKyAnQWN0aW9uPScgKyBTZWFyY2hQcm9maWxlQWN0aW9uICsKICAgICAgICAgICAgJztTdWJhY3Rpb249U2VhcmNoO1Rha2VMYXN0U2VhcmNoPTE7U2F2ZVByb2ZpbGU9MTtQcm9maWxlPScgKyBlbmNvZGVVUklDb21wb25lbnQoU2VhcmNoUHJvZmlsZSkKICAgICAgICAgICAgKyAnO0NsYXNzSUQ9JyArIENsYXNzSUQ7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gZGVsZXRlIHByb2ZpbGUKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZURlbGV0ZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewoKICAgICAgICAgICAgLy8gc3RyaXAgYWxsIGFscmVhZHkgdXNlZCBhdHRyaWJ1dGVzCiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlJykuZmluZCgnb3B0aW9uOnNlbGVjdGVkJykuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCd2YWx1ZScpICE9PSAnbGFzdC1zZWFyY2gnKSB7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlYnVpbGQgYXR0cmlidXRlcwogICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hJbnNlcnQnKS50ZXh0KCcnKTsKCiAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIHJlbW90ZQogICAgICAgICAgICAgICAgICAgIFNlYXJjaFByb2ZpbGVEZWxldGUoJCh0aGlzKS52YWwoKSk7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBsb2NhbAogICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlKCk7CgogICAgICAgICAgICAgICAgICAgIC8vIHNob3cgZnVsbHRleHQKICAgICAgICAgICAgICAgICAgICBUYXJnZXROUy5TZWFyY2hBdHRyaWJ1dGVBZGQoJ0Z1bGx0ZXh0Jyk7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlYnVpbGQgc2VsZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgVGFyZ2V0TlMuQWRkaXRpb25hbEF0dHJpYnV0ZVNlbGVjdGlvblJlYnVpbGQoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlJykudHJpZ2dlcignY2hhbmdlJyk7CgogICAgICAgICAgICBpZiAoJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSAmJiAkKCcjU2VhcmNoUHJvZmlsZScpLnZhbCgpID09PSAnbGFzdC1zZWFyY2gnKSB7CgogICAgICAgICAgICAgICAgLy8gaGlkZSBkZWxldGUgbGluawogICAgICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVEZWxldGUnKS5oaWRlKCk7CgogICAgICAgICAgICAgICAgLy8gc2hvdyBwcm9maWxlIGxpbmsKICAgICAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlQXNMaW5rJykuaGlkZSgpOwoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7UHJvZmlsZX0gVGhlIHByb2ZpbGUgdGhhdCBpcyBzZXQgdG8gdGhlIHNlYXJjaCBkaWFsb2cKICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHJlZnJlc2ggdGhlIHNlYXJjaCBkaWFsb2cgd2l0aCB0aGUgc2VsZWN0ZWQgcHJvZmlsZQogICAgICovCgogICAgVGFyZ2V0TlMuTG9hZFByb2ZpbGUgPSBmdW5jdGlvbiAoUHJvZmlsZSkgewogICAgICAgIHZhciBCYXNlTGluayA9IENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwKICAgICAgICAgICAgQWN0aW9uID0gJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtU2VhcmNoOycsCiAgICAgICAgICAgIFN1YkFjdGlvbiA9ICdTdWJhY3Rpb249TG9hZFByb2ZpbGU7JywKICAgICAgICAgICAgQ2xhc3NJRCA9ICdDbGFzc0lEPScgKyAkKCcjU2VhcmNoQ2xhc3NJRCcpLnZhbCgpICsgJzsnLAogICAgICAgICAgICBTZWFyY2hQcm9maWxlID0gJ1Byb2ZpbGU9JyArIFByb2ZpbGUsCiAgICAgICAgICAgIFVSTCA9ICBCYXNlTGluayArIEFjdGlvbiArIFN1YkFjdGlvbiArIENsYXNzSUQgKyBTZWFyY2hQcm9maWxlOwoKICAgICAgICAkKCcjRGl2Q2xhc3NJRCcpLmFkZENsYXNzKCd1aS1hdXRvY29tcGxldGUtbG9hZGluZycpOwogICAgICAgIENvcmUuQUpBWC5Db250ZW50VXBkYXRlKCQoJyNBSkFYVXBkYXRlJyksIFVSTCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBJVFNNU2VhcmNoUHJvZmlsZUF0dHJpYnV0ZXMgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01TZWFyY2hQcm9maWxlQXR0cmlidXRlcycpIHx8IFtdOwogICAgICAgICAgICAkLmVhY2goSVRTTVNlYXJjaFByb2ZpbGVBdHRyaWJ1dGVzLCBmdW5jdGlvbihfSWR4LCBBdHRyaWJ1dGUpIHsKICAgICAgICAgICAgICAgIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guU2VhcmNoQXR0cmlidXRlQWRkKENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKEF0dHJpYnV0ZSkpOwogICAgICAgICAgICAgICAgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5BZGRpdGlvbmFsQXR0cmlidXRlU2VsZWN0aW9uUmVidWlsZCgpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIFRhcmdldE5TLlNldFNlYXJjaERpYWxvZyggJyRFbnZ7IkFjdGlvbiJ9JyApOwogICAgICAgICAgICAkKCcjSVRTTVNlYXJjaFByb2ZpbGUnKS5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgICQoJyNJVFNNU2VhcmNoRmllbGRzJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICAgICAkKCcuRGlhbG9nOnZpc2libGUgI1NlYXJjaEZvcm1TdWJtaXQnKS5hcHBlbmRUbygkKCcuRGlhbG9nOnZpc2libGUgPiAuQ29udGVudCA+IC5Db250ZW50Rm9vdGVyJykpOwogICAgICAgICAgICAkKCcjU2VhcmNoRm9ybVN1Ym1pdCcpLnJlbW92ZUNsYXNzKCdIaWRkZW4nKTsKICAgICAgICAgICAgJCgnI0RpdkNsYXNzSUQnKS5yZW1vdmVDbGFzcygndWktYXV0b2NvbXBsZXRlLWxvYWRpbmcnKTsKICAgICAgICAgICAgQ29yZS5VSS5JbnB1dEZpZWxkcy5BY3RpdmF0ZSgkKCcjU2VhcmNoRm9ybScpKTsKICAgICAgICB9KTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7Q2xhc3NJRH0gVGhlIGNsYXNzIGlkIHRoYXQgaXMgc2V0IHRvIHRoZSBzZWFyY2ggZGlhbG9nCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiByZWZyZXNoIHRoZSBzZWFyY2ggZGlhbG9nIHdpdGggdGhlIHNlbGVjdGVkIGNsYXNzCiAgICAgKi8KCiAgICBUYXJnZXROUy5Mb2FkQ2xhc3MgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIEJhc2VMaW5rID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpLAogICAgICAgICAgICBBY3Rpb24gPSAnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2g7JywKICAgICAgICAgICAgU3ViQWN0aW9uID0gJ1N1YmFjdGlvbj1BSkFYVXBkYXRlOycsCiAgICAgICAgICAgIENsYXNzSUQgPSAnQ2xhc3NJRD0nICsgJCgnI1NlYXJjaENsYXNzSUQnKS52YWwoKSArICc7JywKICAgICAgICAgICAgVVJMID0gIEJhc2VMaW5rICsgQWN0aW9uICsgU3ViQWN0aW9uICsgQ2xhc3NJRCArIFNlYXJjaFByb2ZpbGU7CgogICAgICAgICQoJyNEaXZDbGFzc0lEJykuYWRkQ2xhc3MoJ3VpLWF1dG9jb21wbGV0ZS1sb2FkaW5nJyk7CiAgICAgICAgQ29yZS5BSkFYLkNvbnRlbnRVcGRhdGUoJCgnI0FKQVhVcGRhdGUnKSwgVVJMLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIElUU01TZWFyY2hQcm9maWxlQXR0cmlidXRlcyA9IENvcmUuQ29uZmlnLkdldCgnSVRTTVNlYXJjaFByb2ZpbGVBdHRyaWJ1dGVzJykgfHwgW107CiAgICAgICAgICAgICQuZWFjaChJVFNNU2VhcmNoUHJvZmlsZUF0dHJpYnV0ZXMsIGZ1bmN0aW9uKF9JZHgsIEF0dHJpYnV0ZSkgewogICAgICAgICAgICAgICAgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5TZWFyY2hBdHRyaWJ1dGVBZGQoQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoQXR0cmlidXRlKSk7CiAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLkFkZGl0aW9uYWxBdHRyaWJ1dGVTZWxlY3Rpb25SZWJ1aWxkKCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgVGFyZ2V0TlMuU2V0U2VhcmNoRGlhbG9nKCAnJEVudnsiQWN0aW9uIn0nICk7CiAgICAgICAgICAgICQoJyNJVFNNU2VhcmNoUHJvZmlsZScpLnJlbW92ZUNsYXNzKCdIaWRkZW4nKTsKICAgICAgICAgICAgJCgnI0lUU01TZWFyY2hGaWVsZHMnKS5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgICQoJy5EaWFsb2c6dmlzaWJsZSAjU2VhcmNoRm9ybVN1Ym1pdCcpLmFwcGVuZFRvKCQoJy5EaWFsb2c6dmlzaWJsZSA+IC5Db250ZW50ID4gLkNvbnRlbnRGb290ZXInKSk7CiAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtU3VibWl0JykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICAgICAkKCcjRGl2Q2xhc3NJRCcpLnJlbW92ZUNsYXNzKCd1aS1hdXRvY29tcGxldGUtbG9hZGluZycpOwogICAgICAgICAgICBDb3JlLlVJLklucHV0RmllbGRzLkFjdGl2YXRlKCQoJyNTZWFyY2hGb3JtJykpOwogICAgICAgIH0pOwogICAgfTsKCiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKiBAbmFtZSBDaGVja0ZvclNlYXJjaGVkVmFsdWVzCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5TZWFyY2gKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVybnMge0Jvb2xlYW59IEZhbHNlIGlmIG5vIHZhbHVlcyB3ZXJlIGZvdW5kLCB0cnVlIGlmIHZhbHVlcyB3aGVyZSB0aGVyZS4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBDaGVja3MgaWYgYW55IHZhbHVlcyB3ZXJlIGVudGVyZWQgaW4gdGhlIHNlYXJjaC4KICAgICAqICAgICAgSWYgbm90aGluZyBhdCBhbGwgZXhpc3RzLCBpdCBhbGVydHMgd2l0aCB0cmFuc2xhdGVkOgogICAgICogICAgICAiUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nIgogICAgICovCiAgICBmdW5jdGlvbiBDaGVja0ZvclNlYXJjaGVkVmFsdWVzKCkgewogICAgICAgIC8vIGxvb3AgdGhyb3VnaCB0aGUgU2VhcmNoRm9ybSBsYWJlbHMKICAgICAgICB2YXIgU2VhcmNoVmFsdWVGbGFnID0gZmFsc2U7CiAgICAgICAgJCgnI1NlYXJjaEZvcm0gbGFiZWwnKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIEVsZW1lbnROYW1lLAogICAgICAgICAgICAgICAgJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAkTGFiZWxFbGVtZW50ID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgICRGaWVsZEVsZW1lbnQgPSAkTGFiZWxFbGVtZW50Lm5leHQoJy5GaWVsZCcpOwogICAgICAgICAgICAvLyB0aG9zZSB3aXRoIElEJ3MgYXJlIHVzZWQgZm9yIHNlYXJjaGluZwogICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCdpZCcpKSB7CgogICAgICAgICAgICAgICAgLy8gc3Vic3RyaW5nICJMYWJlbCIgKGUuZy4gZmlyc3QgZml2ZSBjaGFyYWN0ZXJzICkgZnJvbSB0aGUKICAgICAgICAgICAgICAgIC8vIGxhYmVsIGlkLCB1c2UgdGhlIHJlbWFpbmluZyBuYW1lIGFzIG5hbWUgc3RyaW5nIGZvciBhY2Nlc3NpbmcKICAgICAgICAgICAgICAgIC8vIHRoZSBmb3JtIGlucHV0J3MgdmFsdWUKICAgICAgICAgICAgICAgIEVsZW1lbnROYW1lID0gJCh0aGlzKS5hdHRyKCdpZCcpLnN1YnN0cmluZyg1KTsKICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJCgnI1NlYXJjaEZvcm0gaW5wdXRbbmFtZT0nICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRWxlbWVudE5hbWUpICsgJ10nKTsKCiAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIGlucHV0IGVsZW1lbnQgd2l0aCB0aGUgc2VsZWN0ZWQgbmFtZQogICAgICAgICAgICAgICAgLy8gZmluZCB0aGUgbmV4dCAic2VsZWN0IiBlbGVtZW50IGFuZCB1c2UgdGhhdCBvbmUgZm9yIGNoZWNraW5nCiAgICAgICAgICAgICAgICBpZiAoISRFbGVtZW50Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJCh0aGlzKS5uZXh0KCkuZmluZCgnc2VsZWN0Jyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gRml4IGZvciBidWcjMTA4NDU6IG1ha2Ugc3VyZSB0aW1lIHNsb3QgZmllbGRzIHdpdGggVGltZUlucHV0Rm9ybWF0CiAgICAgICAgICAgICAgICAvLyAnSW5wdXQnIHNldCBhcmUgYmVpbmcgY29uc2lkZXJlZCBjb3JyZWN0bHksIHRvby4gQXMgdGhpcyBpcyBvbmx5CiAgICAgICAgICAgICAgICAvLyByZWxldmFudCBmb3Igc2VhcmNoIHR5cGUgJ1RpbWVTbG90Jywgd2UgY2hlY2sgZm9yIHRoZSBmaXJzdAogICAgICAgICAgICAgICAgLy8gaW5wdXQgdHlwZT10ZXh0IGVsZW1lbnQgaW4gdGhlIGNvcnJlc3BvbmRpbmcgZmllbGQgZWxlbWVudC4KICAgICAgICAgICAgICAgIC8vIEFsbCB0aW1lIGZpZWxkIGVsZW1lbnRzIGhhdmUgdG8gYmUgZmlsbGVkIGluLCBidXQgaWYgb25seSBvbmUKICAgICAgICAgICAgICAgIC8vIGlzIG1pc3NpbmcsIHdlIHRyZWF0IHRoZSB3aG9sZSBmaWVsZCBhcyBpbnZhbGlkLgogICAgICAgICAgICAgICAgaWYgKCRGaWVsZEVsZW1lbnQuZmluZCgnaW5wdXRbbmFtZSQ9IlNlYXJjaFR5cGUiXScpLnZhbCgpID09PSAnVGltZVNsb3QnICYmICEkRmllbGRFbGVtZW50LmZpbmQoJ3NlbGVjdCcpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJEZpZWxkRWxlbWVudC5maW5kKCdpbnB1dFt0eXBlPXRleHRdJykuZmlyc3QoKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJEVsZW1lbnQubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRFbGVtZW50LnZhbCgpICYmICRFbGVtZW50LnZhbCgpICE9PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICBTZWFyY2hWYWx1ZUZsYWcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIGlmICghU2VhcmNoVmFsdWVGbGFnKSB7CiAgICAgICAgICAgYWxlcnQoQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBTZWFyY2hWYWx1ZUZsYWc7CiAgICB9CgogICAgICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIENoZWNrU2VhcmNoU3RyaW5nc0ZvclN0b3BXb3JkcwogICAgICogQG1lbWJlcm9mIENvcmUuQWdlbnQuU2VhcmNoCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IENhbGxiYWNrIC0gZnVuY3Rpb24gdG8gZXhlY3V0ZSwgaWYgbm8gc3RvcCB3b3JkcyB3ZXJlIGZvdW5kLgogICAgICogQGRlc2NyaXB0aW9uIENoZWNrcyBpZiBzcGVjaWZpYyB2YWx1ZXMgb2YgdGhlIHNlYXJjaCBmb3JtIGNvbnRhaW4gc3RvcCB3b3Jkcy4KICAgICAqICAgICAgICAgICAgICBJZiBzdG9wIHdvcmRzIGFyZSBwcmVzZW50LCBhIHdhcm5pbmcgd2lsbCBiZSBkaXNwbGF5ZWQuCiAgICAgKiAgICAgICAgICAgICAgSWYgc3RvcCB3b3JkcyBhcmUgbm90IHByZXNlbnQsIHRoZSBnaXZlbiBjYWxsYmFjayB3aWxsIGJlIGV4ZWN1dGVkLgogICAgICovCiAgICBmdW5jdGlvbiBDaGVja1NlYXJjaFN0cmluZ3NGb3JTdG9wV29yZHMoQ2FsbGJhY2spIHsKICAgICAgICB2YXIgU2VhcmNoU3RyaW5ncyA9IHt9LAogICAgICAgICAgICBTZWFyY2hTdHJpbmdzRm91bmQgPSAwLAogICAgICAgICAgICBSZWxldmFudEVsZW1lbnROYW1lcyA9IHsKICAgICAgICAgICAgICAgICdGcm9tJzogMSwKICAgICAgICAgICAgICAgICdUbyc6IDEsCiAgICAgICAgICAgICAgICAnQ2MnOiAxLAogICAgICAgICAgICAgICAgJ1N1YmplY3QnOiAxLAogICAgICAgICAgICAgICAgJ0JvZHknOiAxLAogICAgICAgICAgICAgICAgJ0Z1bGx0ZXh0JzogMQogICAgICAgICAgICB9OwoKICAgICAgICBpZiAoIUNvcmUuQ29uZmlnLkdldCgnQ2hlY2tTZWFyY2hTdHJpbmdzRm9yU3RvcFdvcmRzJykpIHsKICAgICAgICAgICAgQ2FsbGJhY2soKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJCgnI1NlYXJjaEZvcm0gbGFiZWwnKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIEVsZW1lbnROYW1lLAogICAgICAgICAgICAgICAgJEVsZW1lbnQ7CgogICAgICAgICAgICAvLyB0aG9zZSB3aXRoIElEJ3MgYXJlIHVzZWQgZm9yIHNlYXJjaGluZwogICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCdpZCcpKSB7CgogICAgICAgICAgICAgICAgLy8gc3Vic3RyaW5nICJMYWJlbCIgKGUuZy4gZmlyc3QgZml2ZSBjaGFyYWN0ZXJzICkgZnJvbSB0aGUKICAgICAgICAgICAgICAgIC8vIGxhYmVsIGlkLCB1c2UgdGhlIHJlbWFpbmluZyBuYW1lIGFzIG5hbWUgc3RyaW5nIGZvciBhY2Nlc3NpbmcKICAgICAgICAgICAgICAgIC8vIHRoZSBmb3JtIGlucHV0J3MgdmFsdWUKICAgICAgICAgICAgICAgIEVsZW1lbnROYW1lID0gJCh0aGlzKS5hdHRyKCdpZCcpLnN1YnN0cmluZyg1KTsKICAgICAgICAgICAgICAgIGlmICghUmVsZXZhbnRFbGVtZW50TmFtZXNbRWxlbWVudE5hbWVdKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJCgnI1NlYXJjaEZvcm0gaW5wdXRbbmFtZT0nICsgRWxlbWVudE5hbWUgKyAnXScpOwoKICAgICAgICAgICAgICAgIGlmICgkRWxlbWVudC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJEVsZW1lbnQudmFsKCkgJiYgJEVsZW1lbnQudmFsKCkgIT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaFN0cmluZ3NbRWxlbWVudE5hbWVdID0gJEVsZW1lbnQudmFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaFN0cmluZ3NGb3VuZCA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIC8vIENoZWNrIGlmIHN0b3Agd29yZHMgYXJlIHByZXNlbnQuCiAgICAgICAgaWYgKCFTZWFyY2hTdHJpbmdzRm91bmQpIHsKICAgICAgICAgICAgQ2FsbGJhY2soKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgQUpBWFN0b3BXb3JkQ2hlY2soCiAgICAgICAgICAgIFNlYXJjaFN0cmluZ3MsCiAgICAgICAgICAgIGZ1bmN0aW9uIChGb3VuZFN0b3BXb3JkcykgewogICAgICAgICAgICAgICAgYWxlcnQoQ29yZS5Db25maWcuR2V0KCdTZWFyY2hTdHJpbmdzQ29udGFpblN0b3BXb3Jkc01zZycpICsgIlxuIiArIEZvdW5kU3RvcFdvcmRzKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ2FsbGJhY2sKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge0V2ZW50fSBBY3Rpb24KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIG9wZW4gdGhlIHNlYXJjaCBkaWFsb2cKICAgICAqLwoKICAgIFRhcmdldE5TLk9wZW5TZWFyY2hEaWFsb2cgPSBmdW5jdGlvbiAoQWN0aW9uLCBQcm9maWxlLCBDbGFzcykgewoKICAgICAgICB2YXIgUmVmZXJyZXIgPSBDb3JlLkNvbmZpZy5HZXQoJ0FjdGlvbicpLAogICAgICAgICAgICBEYXRhOwoKICAgICAgICBpZiAoIUFjdGlvbikgewogICAgICAgICAgICBBY3Rpb24gPSdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJzsKICAgICAgICB9CiAgICAgICAgRGF0YSA9IHsKICAgICAgICAgICAgQWN0aW9uOiBBY3Rpb24sCiAgICAgICAgICAgIFJlZmVycmVyOiBSZWZlcnJlciwKICAgICAgICAgICAgUHJvZmlsZTogUHJvZmlsZSwKICAgICAgICAgICAgU3ViYWN0aW9uOiAnQUpBWCcsCiAgICAgICAgICAgIENsYXNzSUQ6IENsYXNzCiAgICAgICAgfTsKCiAgICAgICAgU2hvd1dhaXRpbmdEaWFsb2coKTsKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICBEYXRhLAogICAgICAgICAgICBmdW5jdGlvbiAoSFRNTCkgewoKICAgICAgICAgICAgICAgIC8vIGlmIHRoZSB3YWl0aW5nIGRpYWxvZyB3YXMgY2FuY2VsZWQsIGRvIG5vdCBzaG93IHRoZSBzZWFyY2gKICAgICAgICAgICAgICAgIC8vICBkaWFsb2cgYXMgd2VsbAogICAgICAgICAgICAgICAgaWYgKCEkKCcuRGlhbG9nOnZpc2libGUnKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuU2hvd0NvbnRlbnREaWFsb2coSFRNTCwgQ29yZS5Db25maWcuR2V0KCdTZWFyY2hNc2cnKSwgJzEwcHgnLCAnQ2VudGVyJywgdHJ1ZSwgW10sIHRydWUpOwoKICAgICAgICAgICAgICAgICQoJyNTZWFyY2hDbGFzc0lEJykub2ZmKCdjaGFuZ2UuU2VhcmNoUHJvZmlsZScpLm9uKCdjaGFuZ2UuU2VhcmNoUHJvZmlsZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICggJCgnI1NlYXJjaENsYXNzSUQnKS52YWwoKSAhPT0gIiIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guTG9hZFByb2ZpbGUoICQoJyNTZWFyY2hQcm9maWxlJykudmFsKCkgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlJykuYXR0cigiaWQiLCAiU2VhcmNoUHJvZmlsZU9sZCIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIHZhciBDbGFzc1NlbGVjdGVkID0gJCgnI1NlYXJjaENsYXNzSUQnKS52YWwoKTsKICAgICAgICAgICAgICAgIGlmIChDbGFzc1NlbGVjdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5Mb2FkUHJvZmlsZSgkKCcjU2VhcmNoUHJvZmlsZScpLnZhbCgpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBUYXJnZXROUy5TZXRTZWFyY2hEaWFsb2coKTsKICAgICAgICAgICAgfSwgJ2h0bWwnCiAgICAgICAgKTsKICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoIHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Zoom.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbQogKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtCiAqIEBhdXRob3IgUm90aGVyIE9TUyBHbWJICiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSBhZGQuCiAqLwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbSA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKgogICAgKiBAbmFtZSBJbml0CiAgICAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbQogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyBjb25maWcgaXRlbSB6b29tIHNlY3Rpb24uCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAkKCcjVmVyc2lvblNlbGVjdGlvbicpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBSZWRpcmVjdCA9ICQodGhpcykudmFsKCk7CiAgICAgICAgICAgIGlmICggUmVkaXJlY3QgKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBSZWRpcmVjdDsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICB2YXIgSVRTTVNob3dDb25maXJtRGlhbG9nID0gQ29yZS5Db25maWcuR2V0KCdJVFNNU2hvd0NvbmZpcm1EaWFsb2cnKTsKCiAgICAgICAgSVRTTS5BZ2VudC5ab29tLkluaXQoQ29yZS5Db25maWcuR2V0KCdVc2VyQ29uZmlnSXRlbVpvb21UYWJsZUhlaWdodCcpKTsKCiAgICAgICAgJCgndWwuQWN0aW9ucyBhLkFzUG9wdXAnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwKCQodGhpcykuYXR0cignaHJlZicpLCAnQWN0aW9uJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgJCgnLk1hc3RlckFjdGlvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICB2YXIgJE1hc3RlckFjdGlvbkxpbmsgPSAkKHRoaXMpLmZpbmQoJy5NYXN0ZXJBY3Rpb25MaW5rJyk7CiAgICAgICAgICAgIC8vIG9ubHkgYWN0IGlmIHRoZSBsaW5rIHdhcyBub3QgY2xpY2tlZCBkaXJlY3RseQogICAgICAgICAgICBpZiAoRXZlbnQudGFyZ2V0ICE9PSAkTWFzdGVyQWN0aW9uTGluay5nZXQoMCkpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICRNYXN0ZXJBY3Rpb25MaW5rLmF0dHIoJ2hyZWYnKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAvLyBJbml0aWFsaXplIGFsbG9jYXRpb24gbGlzdCBmb3IgbGluayBvYmplY3QgdGFibGUuCiAgICAgICAgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuU2V0QWxsb2NhdGlvbkxpc3QoKTsKCiAgICAgICAgaWYgKElUU01TaG93Q29uZmlybURpYWxvZykgewogICAgICAgICAgICAkLmVhY2goSVRTTVNob3dDb25maXJtRGlhbG9nLCBmdW5jdGlvbihfS2V5LCBEYXRhKSB7CiAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkNvbmZpcm1EaWFsb2cuQmluZENvbmZpcm1EaWFsb2coewogICAgICAgICAgICAgICAgICAgIEVsZW1lbnRJRDogICAgICAgICAgICAgICAgICBEYXRhLk1lbnVJRCwKICAgICAgICAgICAgICAgICAgICBFbGVtZW50U2VsZWN0b3I6ICAgICAgICAgICAgRGF0YS5FbGVtZW50U2VsZWN0b3IsCiAgICAgICAgICAgICAgICAgICAgRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nOiAgIERhdGEuRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nLAogICAgICAgICAgICAgICAgICAgIENvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nOiBEYXRhLkNvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nLAogICAgICAgICAgICAgICAgICAgIERpYWxvZ1RpdGxlOiAgICAgICAgICAgICAgICBEYXRhLkRpYWxvZ1RpdGxlLAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRUZXh0OiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFllczogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlllcyIpLAogICAgICAgICAgICAgICAgICAgICAgICBObzogIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJObyIpLAogICAgICAgICAgICAgICAgICAgICAgICBPazogIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJPayIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGxldCBMaW5rQ2VsbHMgPSAkKCcuQ29uZmlnSXRlbUxpbmtzX0NlbGwnKTsKICAgICAgICAgICAgaWYgKExpbmtDZWxscy5sZW5ndGggPT0gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBMaW5rQ2VsbHMuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBsZXQgJENvbnRlbnQgPSAkKCcuQ2VsbENvbnRlbnQnLCB0aGlzKTsKICAgICAgICAgICAgICAgIGlmICgkQ29udGVudC5sZW5ndGggPT0gMCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oZWlnaHQoKSA+ICRDb250ZW50LmhlaWdodCgpKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbnRlbnQuY3NzKCdtYXgtaGVpZ2h0JywgJCh0aGlzKS5oZWlnaHQoKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pCiAgICAgICAgfSwgMTAwKTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBJZnJhbWVBdXRvSGVpZ2h0CiAgICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20KICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRJZnJhbWUgLSBUaGUgaWZyYW1lIHdoaWNoIHNob3VsZCBiZSBhdXRvLWhlaWdodGVkCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgU2V0IGlmcmFtZSBoZWlnaHQgYXV0b21hdGljYWxseSBiYXNlZCBvbiByZWFsIGNvbnRlbnQgaGVpZ2h0IGFuZCBoYXJkY29kZWQgbWF4IGhlaWdodC4KICAgICAqLwogICAgVGFyZ2V0TlMuSWZyYW1lQXV0b0hlaWdodCA9IGZ1bmN0aW9uICgkSWZyYW1lKSB7CgogICAgICAgIHZhciBOZXdIZWlnaHQsCiAgICAgICAgICAgIElmcmFtZUJvZHlIZWlnaHQsCgogICAgICAgICAgICAvLyBtYXggaGVpZ2h0CiAgICAgICAgICAgIERlc2NyaXB0aW9uSGVpZ2h0TWF4ID0gMTAwMDsKCiAgICAgICAgaWYgKGlzSlF1ZXJ5T2JqZWN0KCRJZnJhbWUpKSB7CiAgICAgICAgICAgIElmcmFtZUJvZHlIZWlnaHQgPSAkSWZyYW1lLmNvbnRlbnRzKCkuZmluZCgnYm9keScpLmhlaWdodCgpOwogICAgICAgICAgICBOZXdIZWlnaHQgPSAkSWZyYW1lLmNvbnRlbnRzKCkuaGVpZ2h0KCk7CiAgICAgICAgICAgIGlmICghTmV3SGVpZ2h0IHx8IGlzTmFOKE5ld0hlaWdodCkpIHsKCiAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IGhlaWdodAogICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gMTAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKElmcmFtZUJvZHlIZWlnaHQgPiBEZXNjcmlwdGlvbkhlaWdodE1heAogICAgICAgICAgICAgICAgICAgIHx8IE5ld0hlaWdodCA+IERlc2NyaXB0aW9uSGVpZ2h0TWF4KSB7CiAgICAgICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gRGVzY3JpcHRpb25IZWlnaHRNYXg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChJZnJhbWVCb2R5SGVpZ2h0ID4gTmV3SGVpZ2h0KSB7CiAgICAgICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gSWZyYW1lQm9keUhlaWdodDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gYWRkIGRlbHRhIGZvciBzY3JvbGxiYXIKICAgICAgICAgICAgTmV3SGVpZ2h0ID0gcGFyc2VJbnQoTmV3SGVpZ2h0LCAxMCkgKyAyNTsKCiAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgbWluaW11bSBoZWlnaHQgaXMgaW4gbGluZSB3aXRoIHRoZSBhdmF0YXIgaW1hZ2VzCiAgICAgICAgICAgIGlmIChOZXdIZWlnaHQgPCA0NikgewogICAgICAgICAgICAgICAgTmV3SGVpZ2h0ID0gNDY7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRJZnJhbWUuaGVpZ2h0KE5ld0hlaWdodCArICdweCcpOwogICAgICAgIH0KICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbSB8fCB7fSkpOwo=</File>
        <File Location="var/httpd/htdocs/js/ITSM.Agent.DynamicFieldITSMConfigItemLensSearch.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxOSBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgSVRTTS5BZ2VudC5EeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUxlbnNTZWFyY2gKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIGNvbnRhY3QgZGF0YSBzZWFyY2guCiAqLwpJVFNNLkFnZW50LkR5bmFtaWNGaWVsZElUU01Db25maWdJdGVtTGVuc1NlYXJjaCA9IChmdW5jdGlvbihUYXJnZXROUykgewoKICAgIGlmICgKICAgICAgICAhQ29yZS5EZWJ1Zy5DaGVja0RlcGVuZGVuY3koJ0lUU00uQWdlbnQuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zU2VhcmNoJywgJ0NvcmUuQ29uZmlnJywgJ0NvcmUuQ29uZmlnJywgdHJ1ZSkKICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQG5hbWUgSW5pdAogICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zU2VhcmNoCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMKICAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uKCkgewoKICAgICAgICBmdW5jdGlvbiBJbml0RHluYW1pY0ZpZWxkcygkQ29udGV4dCkgewogICAgICAgICAgICB2YXIgQXV0b0NvbXBsZXRlID0gQ29yZS5Db25maWcuR2V0KCdBdXRvY29tcGxldGUnKSwKICAgICAgICAgICAgICAgIEF1dG9Db21wbGV0ZUFjdGl2ZSA9IGZhbHNlOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgdHlwZW9mIEF1dG9Db21wbGV0ZSAhPT0gJ3VuZGVmaW5lZCcKICAgICAgICAgICAgICAgICYmIHR5cGVvZiBBdXRvQ29tcGxldGUuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zICE9PSAndW5kZWZpbmVkJwogICAgICAgICAgICAgICAgJiYgdHlwZW9mIEF1dG9Db21wbGV0ZS5EeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUxlbnMuQXV0b0NvbXBsZXRlQWN0aXZlICE9PSAndW5kZWZpbmVkJwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBBdXRvQ29tcGxldGVBY3RpdmUgPSBBdXRvQ29tcGxldGUuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zLkF1dG9Db21wbGV0ZUFjdGl2ZSAhPT0gJzAnCiAgICAgICAgICAgICAgICAgICAgPyB0cnVlCiAgICAgICAgICAgICAgICAgICAgOiBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJCgnLkR5bmFtaWNGaWVsZElUU01Db25maWdJdGVtTGVucycsICRDb250ZXh0KS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIFRhcmdldE5TLkluaXRFbGVtZW50KCQodGhpcyksIEF1dG9Db21wbGV0ZUFjdGl2ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgSW5pdER5bmFtaWNGaWVsZHMoKTsKCiAgICAgICAgLy8gU2luY2UgbmV3IHByb2Nlc3Mgc2NyZWVuIGxvYWRzIGFjdGl2aXR5IHZpYSBhbiBBSkFYIGNhbGwsIHdlIG5lZWQgdG8gc3Vic2NyaWJlIHRvIGFuIGV2ZW50CiAgICAgICAgLy8gICBpbiBvcmRlciB0byByZS1pbml0YWxpemUgZHluYW1pYyBmaWVsZHMuIFBsZWFzZSBzZWUgYnVnIzEzMTQ2IGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgIENvcmUuQXBwLlN1YnNjcmliZSgnVGlja2V0UHJvY2Vzcy5Jbml0LkZpcnN0QWN0aXZpdHlEaWFsb2cuTG9hZCcsIGZ1bmN0aW9uICgkQWN0aXZpdHlEaWFsb2cpIHsKICAgICAgICAgICAgSW5pdER5bmFtaWNGaWVsZHMoJEFjdGl2aXR5RGlhbG9nKTsKICAgICAgICB9KTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBJbml0RWxlbWVudAogICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuRHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zU2VhcmNoCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCBUaGUgalF1ZXJ5IG9iamVjdCBvZiB0aGUgaW5wdXQgZmllbGQgd2l0aCBhdXRvY29tcGxldGUKICAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gQXV0b0NvbXBsZXRlQWN0aXZlIFNldCB0byBmYWxzZSwgaWYgYXV0b2NvbXBsZXRlIHNob3VsZCBvbmx5IGJlIHN0YXJ0ZWQgYnkgY2xpY2sgb24gYSBidXR0b24gbmV4dCB0byB0aGUgaW5wdXQgZmllbGQKICAgICAqIEBkZXNjcmlwdGlvbiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIGV2ZXJ5IENvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZAogICAgICovCiAgICBUYXJnZXROUy5Jbml0RWxlbWVudCA9IGZ1bmN0aW9uKCRFbGVtZW50LCBBdXRvQ29tcGxldGVBY3RpdmUpIHsKICAgICAgICB2YXIgQXV0b0NvbXBsZXRlQ29uZmlnID0gQ29yZS5Db25maWcuR2V0KCdBdXRvY29tcGxldGUnKS5EeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUxlbnMKICAgICAgICAgICAgPyBDb3JlLkNvbmZpZy5HZXQoJ0F1dG9jb21wbGV0ZScpLkR5bmFtaWNGaWVsZElUU01Db25maWdJdGVtTGVucwogICAgICAgICAgICA6IHsKICAgICAgICAgICAgICAgIE1pblF1ZXJ5TGVuZ3RoOiAyLAogICAgICAgICAgICAgICAgUXVlcnlEZWxheTogMTAwLAogICAgICAgICAgICAgICAgTWF4UmVzdWx0c0Rpc3BsYXllZDogMjAsCiAgICAgICAgICAgICAgICBCdXR0b25UZXh0OiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnU2VhcmNoJyksCiAgICAgICAgICAgIH07CgogICAgICAgIGlmKGlzSlF1ZXJ5T2JqZWN0KCRFbGVtZW50KSkgewoKICAgICAgICAgICAgJEVsZW1lbnQubmV4dCgnaW5wdXRbdHlwZT1idXR0b25dJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICQodGhpcykucHJldignaW5wdXQnKS52YWwoJycpLnByZXZBbGwoJ2lucHV0JykudmFsKCcnKTsKICAgICAgICAgICAgICAgICQodGhpcykucHJldignaW5wdXQnKS5ibHVyKCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgLy8gSGlkZSB0b29sdGlwIGluIGF1dG9jb21wbGV0ZSBmaWVsZCwgaWYgdXNlciBhbHJlYWR5IHR5cGVkIHNvbWV0aGluZyB0byBwcmV2ZW50IHRoZSBhdXRvY29tcGxldGUgbGlzdAogICAgICAgICAgICAvLyB0byBiZSBoaWRkZW4gdW5kZXIgdGhlIHRvb2x0aXAuIChPbmx5IG5lZWRlZCBmb3Igc2VydmVyc2lkZSBlcnJvcnMpCiAgICAgICAgICAgICRFbGVtZW50LnVuYmluZCgna2V5dXAuVmFsaWRhdGUnKS5iaW5kKCdrZXl1cC5WYWxpZGF0ZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIFZhbHVlID0gJEVsZW1lbnQudmFsKCk7CiAgICAgICAgICAgICAgICBpZigkRWxlbWVudC5oYXNDbGFzcygnU2VydmVyRXJyb3InKSAmJiBWYWx1ZS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAkKCcjT1RPQk9fVUlfVG9vbHRpcHNfRXJyb3JUb29sdGlwJykuaGlkZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSh7CiAgICAgICAgICAgICAgICBtaW5MZW5ndGg6IEF1dG9Db21wbGV0ZUFjdGl2ZSA/IEF1dG9Db21wbGV0ZUNvbmZpZy5NaW5RdWVyeUxlbmd0aCA6IDUwMCwKICAgICAgICAgICAgICAgIGRlbGF5OiBBdXRvQ29tcGxldGVDb25maWcuUXVlcnlEZWxheSwKICAgICAgICAgICAgICAgIHNvdXJjZTogZnVuY3Rpb24oUmVxdWVzdCwgUmVzcG9uc2UpIHsKCiAgICAgICAgICAgICAgICAgICAgdmFyIFVSTCA9IENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbjogJ0FnZW50RHluYW1pY0ZpZWxkSVRTTUNvbmZpZ0l0ZW1MZW5zU2VhcmNoJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlcm06IFJlcXVlc3QudGVybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkOiAkRWxlbWVudC5hdHRyKCdpZCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4UmVzdWx0czogQXV0b0NvbXBsZXRlQ29uZmlnLk1heFJlc3VsdHNEaXNwbGF5ZWQKICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgLy8gSWYgYW4gb2xkIGFqYXggcmVxdWVzdCBpcyBhbHJlYWR5IHJ1bm5pbmcsIHN0b3AgdGhlIG9sZCByZXF1ZXN0IGFuZCBzdGFydCB0aGUgbmV3IG9uZS4KICAgICAgICAgICAgICAgICAgICBpZigkRWxlbWVudC5kYXRhKCdBdXRvQ29tcGxldGVYSFInKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC5kYXRhKCdBdXRvQ29tcGxldGVYSFInKS5hYm9ydCgpOwogICAgICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC5yZW1vdmVEYXRhKCdBdXRvQ29tcGxldGVYSFInKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gUnVuIHRoZSByZXNwb25zZSBmdW5jdGlvbiB0byBoaWRlIHRoZSByZXF1ZXN0IGFuaW1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2Uoe30pOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQuZGF0YSgnQXV0b0NvbXBsZXRlWEhSJywgQ29yZS5BSkFYLkZ1bmN0aW9uQ2FsbChVUkwsIERhdGEsIGZ1bmN0aW9uKFJlc3VsdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgVmFsdWVEYXRhID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICRFbGVtZW50LnJlbW92ZURhdGEoJ0F1dG9Db21wbGV0ZVhIUicpOwogICAgICAgICAgICAgICAgICAgICAgICAkLmVhY2goUmVzdWx0LCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlRGF0YS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5WYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5WYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IHRoaXMuS2V5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlKFZhbHVlRGF0YSk7CiAgICAgICAgICAgICAgICAgICAgfSkpOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHNlbGVjdDogZnVuY3Rpb24oRXZlbnQsIFVJKSB7CgogICAgICAgICAgICAgICAgICAgIHZhciBDb250YWN0S2V5ID0gVUkuaXRlbS5rZXksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRhY3RWYWx1ZSA9IFVJLml0ZW0udmFsdWU7CgogICAgICAgICAgICAgICAgICAgIFRhcmdldE5TLkFkZFRpY2tldENvbnRhY3QoJCh0aGlzKS5hdHRyKCdpZCcpLCBDb250YWN0VmFsdWUsIENvbnRhY3RLZXkpOwogICAgICAgICAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICRFbGVtZW50LmJsdXIoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgVmlzaWJsZSA9IGZhbHNlOwoKICAgICAgICAgICAgICAgIGlmICghJCh0aGlzKS52YWwoKSkgewogICAgICAgICAgICAgICAgICAgICQodGhpcykucHJldkFsbCgnaW5wdXRbdHlwZT1oaWRkZW5dJykudmFsKCcnKTsKICAgICAgICAgICAgICAgICAgICAkKCcuJyArICQodGhpcykucHJldkFsbCgnaW5wdXRbdHlwZT1oaWRkZW5dJykuYXR0cignaWQnKSkuZmFkZU91dCgnZmFzdCcsIGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKHRoaXMpLmZpbmQoJy5Db25maWdJdGVtJykuaGFzQ2xhc3MoJ0hpZGRlbicpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmxlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZSgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKCcjQ29udGFjdEluZm8nKS5maW5kKCcuQ29udGFjdCcpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnI0NvbnRhY3RJbmZvJykuZmluZCgncC5Ob25lJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFZpc2libGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNDb250YWN0SW5mbycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5Db250YWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbnRhY3RXRCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdIaWRkZW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJyNDb250YWN0SW5mbycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJy5Db250YWN0OmZpcnN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbnRhY3RXRCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNob3coKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBpZiAoIUF1dG9Db21wbGV0ZUFjdGl2ZSkgewogICAgICAgICAgICAgICAgJEVsZW1lbnQuYWZ0ZXIoJzxidXR0b24gaWQ9IicgKyAkRWxlbWVudC5hdHRyKCdpZCcpICsgJ1NlYXJjaCIgdHlwZT0iYnV0dG9uIj4nICsgQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoQXV0b0NvbXBsZXRlQ29uZmlnLkJ1dHRvblRleHQpICsgJzwvYnV0dG9uPicpOwogICAgICAgICAgICAgICAgJCgnIycgKyAkRWxlbWVudC5hdHRyKCdpZCcpICsgJ1NlYXJjaCcpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSgnb3B0aW9uJywgJ21pbkxlbmd0aCcsIDApOwogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LmF1dG9jb21wbGV0ZSgnc2VhcmNoJyk7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQuYXV0b2NvbXBsZXRlKCdvcHRpb24nLCAnbWluTGVuZ3RoJywgNTAwKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBPbiB1bmxvYWQgcmVtb3ZlIG9sZCBzZWxlY3RlZCBkYXRhLiBJZiB0aGUgcGFnZSBpcyByZWxvYWRlZCAod2l0aCBGNSkgdGhpcyBkYXRhIHN0YXlzIGluIHRoZSBmaWVsZCBhbmQgaW52b2tlcyBhbiBhamF4IHJlcXVlc3Qgb3RoZXJ3aXNlLgogICAgICAgICQod2luZG93KS5iaW5kKCdiZWZvcmV1bmxvYWQnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgJCgnLkNvbnRhY3RBdXRvQ29tcGxldGUnKS52YWwoJycpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSk7CiAgICB9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gRmllbGQKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBDb250YWN0VmFsdWUgVGhlIHJlYWRhYmxlIGN1c3RvbWVyIGlkZW50aWZpZXIuCiAgICAgKiBAcGFyYW0ge1N0cmluZ30gQ29udGFjdEtleSBvbiBzeXN0ZW0uCiAgICAgKiBAZGVzY3JpcHRpb24gVGhpcyBmdW5jdGlvbiBhZGQgYSBuZXcgdGlja2V0IGNvbnRhY3QKICAgICAqIEByZXR1cm5zIHtib29sZWFufQogICAgICovCiAgICBUYXJnZXROUy5BZGRUaWNrZXRDb250YWN0ID0gZnVuY3Rpb24oRmllbGQsIENvbnRhY3RWYWx1ZSwgQ29udGFjdEtleSkgewoKICAgICAgICB2YXIgVmFsdWVGaWVsZCA9IEZpZWxkLnJlcGxhY2UoJ0F1dG9jb21wbGV0ZV8nLCAnJyk7CgogICAgICAgIGlmKCFWYWx1ZUZpZWxkLmxlbmd0aCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkKCcjJyArIFZhbHVlRmllbGQpLnZhbChDb250YWN0S2V5KTsKICAgICAgICAkKCcjJyArIEZpZWxkKS52YWwoQ29udGFjdFZhbHVlKTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5BZ2VudC5EeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUxlbnNTZWFyY2ggfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.Customer.ConfigItem.Overview.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQ3VzdG9tZXIgPSBJVFNNLkN1c3RvbWVyIHx8IHt9OwpJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0gPSBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcKICogQG1lbWJlcm9mIElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbQogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgbmF2YmFyLgogKi8KSVRTTS5DdXN0b21lci5Db25maWdJdGVtLk92ZXJ2aWV3ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qCiAgICAqIEBuYW1lIEluaXQKICAgICogQG1lbWJlcm9mIElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5PdmVydmlldwogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgb3ZlcnZpZXcgYmVoYXZpb3Vycy4KICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBVUkwsIENvbHVtbkZpbHRlciwgTmV3Q29sdW1uRmlsdGVyU3RyZywgTXlSZWdFeCwgU2Vzc2lvbkluZm9ybWF0aW9uOwoKICAgICAgICAkKCcjU2hvd0NvbnRleHRTZXR0aW5nc0RpYWxvZycpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygkKCcjQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyJyksIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJTZXR0aW5ncyIpLCAnMTUlJywgJ0NlbnRlcicsIHRydWUsCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlN1Ym1pdCIpLAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlOiAnU3VibWl0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3M6ICdQcmltYXJ5JywKICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb246IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkTGlzdENvbnRhaW5lciA9ICQoJy5BbGxvY2F0aW9uTGlzdENvbnRhaW5lcicpLmZpbmQoJy5Bc3NpZ25lZEZpZWxkcycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlciA9ICQoJ2xpLkFjdGl2ZSA+IGEnKS50ZXh0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRJRDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkTGlzdENvbnRhaW5lcikgJiYgJExpc3RDb250YWluZXIubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJC5lYWNoKCRMaXN0Q29udGFpbmVyLmZpbmQoJ2xpJyksIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZElEID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZC0nICsgJCh0aGlzKS5hdHRyKCdkYXRhLWZpZWxkbmFtZScpICsgJy0nICsgRmlsdGVyOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBhZGQgdGhpcyBmaWVsZCBpZiBpdHMgbm90IGFscmVhZHkgdGhlcmUuIFRoaXMgY291bGQgaGFwcGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGUuZy4gdGhlIHNhdmUgYnV0dG9uIGlzIGNsaWNrZWQgbXVsdGlwbGUgdGltZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkKCcjJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKEZpZWxkSUQpKS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJzxpbnB1dCBuYW1lPSJVc2VyRmlsdGVyQ29sdW1uc0VuYWJsZWQiIHR5cGU9ImhpZGRlbiIgLz4nKS5hdHRyKCdpZCcsIEZpZWxkSUQpLnZhbCgkKHRoaXMpLmF0dHIoJ2RhdGEtZmllbGRuYW1lJykpLmFwcGVuZFRvKCRMaXN0Q29udGFpbmVyLmNsb3Nlc3QoJ2RpdicpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLCB0cnVlKTsKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIENvcmUuQ3VzdG9tZXIuVGFibGVGaWx0ZXJzLlNldEFsbG9jYXRpb25MaXN0KCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgQ29yZS5VSS5Jbml0Q2hlY2tib3hTZWxlY3Rpb24oJCgndGFibGUgdGQuQ2hlY2tib3gnKSk7CgogICAgICAgIC8vIGNoYW5nZSBldmVudCBmb3IgY29sdW1uIGZpbHRlcgogICAgICAgICQoJy5Db2x1bW5GaWx0ZXInKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgLy8gZGVmaW5lIHZhcmlhYmxlcwogICAgICAgICAgICBVUkwgPSBDb3JlLkNvbmZpZy5HZXQoIkJhc2VsaW5rIikgKyAnQWN0aW9uPScgKyBDb3JlLkNvbmZpZy5HZXQoIkFjdGlvbiIpICsgJzsnICsgQ29yZS5Db25maWcuR2V0KCdMaW5rUGFnZScpOwogICAgICAgICAgICBTZXNzaW9uSW5mb3JtYXRpb24gPSBDb3JlLkFwcC5HZXRTZXNzaW9uSW5mb3JtYXRpb24oKTsKICAgICAgICAgICAgJC5lYWNoKFNlc3Npb25JbmZvcm1hdGlvbiwgZnVuY3Rpb24gKEtleSwgVmFsdWUpIHsKICAgICAgICAgICAgICAgIFVSTCArPSBlbmNvZGVVUklDb21wb25lbnQoS2V5KSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChWYWx1ZSkgKyAnOyc7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBDb2x1bW5GaWx0ZXIgPSAkKHRoaXMpWzBdLm5hbWU7CiAgICAgICAgICAgIE5ld0NvbHVtbkZpbHRlclN0cmcgPSAkKHRoaXMpWzBdLm5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoJCh0aGlzKS52YWwoKSkgKyAnOyc7CgogICAgICAgICAgICBNeVJlZ0V4ID0gbmV3ICBSZWdFeHAoQ29sdW1uRmlsdGVyKyI9W147XSo7Iik7CgogICAgICAgICAgICAvLyBjaGVjayBmb3IgYWxyZWFkeSBzZXQgcGFyYW1ldGVyIGFuZCByZXBsYWNlCiAgICAgICAgICAgIGlmIChVUkwubWF0Y2goTXlSZWdFeCkpIHsKICAgICAgICAgICAgICAgIFVSTCA9IFVSTC5yZXBsYWNlKE15UmVnRXgsIE5ld0NvbHVtbkZpbHRlclN0cmcpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBvdGhlcndpc2UgYWRkIHRoZSBuZXcgY29sdW1uIGZpbHRlcgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIFVSTCA9IFVSTCArIE5ld0NvbHVtbkZpbHRlclN0cmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHJlZGlyZWN0CiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gIFVSTDsKICAgICAgICB9KTsKCiAgICAgICAgLy8gY2xpY2sgZXZlbnQgb24gdGFibGUgaGVhZGVyIHRyaWdnZXIKICAgICAgICAkKCcuT3ZlcnZpZXdIZWFkZXInKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyICRUcmlnZ2VyT2JqID0gJCh0aGlzKSwKICAgICAgICAgICAgICAgIEZpbHRlck5hbWU7CgogICAgICAgICAgICBpZiAoJFRyaWdnZXJPYmouaGFzQ2xhc3MoJ0FjdGl2ZScpKSB7CiAgICAgICAgICAgICAgICAkVHJpZ2dlck9iagogICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgIC5maW5kKCcuQ29sdW1uU2V0dGluZ3NCb3gnKQogICAgICAgICAgICAgICAgICAgIC5mYWRlT3V0KCdmYXN0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLnJlbW92ZUNsYXNzKCdBY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAvLyBzbGlkZSB1cCBhbGwgb3BlbiBzZXR0aW5ncyB3aWRnZXRzCiAgICAgICAgICAgICAgICAkKCcuQ29sdW1uU2V0dGluZ3NUcmlnZ2VyJykKICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbHVtblNldHRpbmdzQm94JykKICAgICAgICAgICAgICAgICAgICAuZmFkZU91dCgnZmFzdCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudCgpLnByZXYoJy5Db2x1bW5TZXR0aW5nc1RyaWdnZXInKS5yZW1vdmVDbGFzcygnQWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8gc2hvdyBUSElTIHNldHRpbmdzIHdpZGdldAogICAgICAgICAgICAgICAgJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAuZmluZCgnLkNvbHVtblNldHRpbmdzQm94JykKICAgICAgICAgICAgICAgICAgICAuZmFkZUluKCdmYXN0JywgZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5hZGRDbGFzcygnQWN0aXZlJyk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyByZWZyZXNoIGZpbHRlciBkcm9wZG93bgogICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJOYW1lID0gJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignbmFtZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3RoJykuaGFzQ2xhc3MoJ0N1c3RvbWVySUQnKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUcmlnZ2VyT2JqLmNsb3Nlc3QoJ3RoJykuaGFzQ2xhc3MoJ0N1c3RvbWVyVXNlcklEJykgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVHJpZ2dlck9iai5jbG9zZXN0KCd0aCcpLmhhc0NsYXNzKCdSZXNwb25zaWJsZScpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRyaWdnZXJPYmouY2xvc2VzdCgndGgnKS5oYXNDbGFzcygnT3duZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkVHJpZ2dlck9iai5wYXJlbnQoKS5maW5kKCcuU2VsZWN0ZWRWYWx1ZScpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuQUpBWC5Gb3JtVXBkYXRlKCQoJyNOb3RoaW5nJyksICdBSkFYRmlsdGVyVXBkYXRlJywgRmlsdGVyTmFtZSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBBdXRvQ29tcGxldGVWYWx1ZSA9ICRUcmlnZ2VyT2JqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLm5leHQoJy5Db2x1bW5TZXR0aW5nc0NvbnRhaW5lcicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnZhbCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXV0b0NvbXBsZXRlVGV4dCAgPSAkVHJpZ2dlck9iagogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5uZXh0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdzZWxlY3QnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdvcHRpb246c2VsZWN0ZWQnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50ZXh0KCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQXV0b0NvbXBsZXRlVmFsdWUgIT09ICdEZWxldGVGaWx0ZXInKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRyaWdnZXJPYmoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV4dCgnLkNvbHVtblNldHRpbmdzQ29udGFpbmVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmluZCgnc2VsZWN0JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJzxzcGFuIGNsYXNzPSJTZWxlY3RlZFZhbHVlIEhpZGRlbiI+JyArIEF1dG9Db21wbGV0ZVRleHQgKyAnICgnICsgQXV0b0NvbXBsZXRlVmFsdWUgKyAnKTwvc3Bhbj4nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wYXJlbnQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dFt0eXBlPXRleHRdJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYWZ0ZXIoJzxhIGhyZWY9IiMiIGNsYXNzPSJEZWxldGVGaWx0ZXIiPjxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+PC9hPicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnBhcmVudCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ2EuRGVsZXRlRmlsdGVyJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub2ZmKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jbG9zZXN0KCcuQ29sdW1uU2V0dGluZ3NDb250YWluZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbmQoJ3NlbGVjdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudmFsKCdEZWxldGVGaWx0ZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkFKQVguRm9ybVVwZGF0ZSgkKCcjQ29sdW1uRmlsdGVyQXR0cmlidXRlcycpLCAnQUpBWEZpbHRlclVwZGF0ZScsIEZpbHRlck5hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICAkKCcuTWFzdGVyQWN0aW9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgIHZhciAkTWFzdGVyQWN0aW9uTGluayA9ICQodGhpcykuZmluZCgnLk1hc3RlckFjdGlvbkxpbmsnKTsKICAgICAgICAgICAgLy8gb25seSBhY3QgaWYgdGhlIGxpbmsgd2FzIG5vdCBjbGlja2VkIGRpcmVjdGx5CiAgICAgICAgICAgIGlmIChFdmVudC50YXJnZXQgIT09ICRNYXN0ZXJBY3Rpb25MaW5rLmdldCgwKSkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gJE1hc3RlckFjdGlvbkxpbmsuYXR0cignaHJlZicpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5DdXN0b21lci5Db25maWdJdGVtLk92ZXJ2aWV3IHx8IHt9KSk7Cg==</File>
        <File Location="var/httpd/htdocs/js/ITSM.Customer.ConfigItem.Zoom.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQ3VzdG9tZXIgPSBJVFNNLkN1c3RvbWVyIHx8IHt9OwpJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0gPSBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW0uT3ZlcnZpZXcKICogQG1lbWJlcm9mIElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbQogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgbmF2YmFyLgogKi8KSVRTTS5DdXN0b21lci5Db25maWdJdGVtLlpvb20gPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgSVRTTS5DdXN0b21lci5Db25maWdJdGVtLlpvb20KICAgICogQGZ1bmN0aW9uCiAgICAqIEBkZXNjcmlwdGlvbgogICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIG92ZXJ2aWV3IGJlaGF2aW91cnMuCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAkKCcjVmVyc2lvblNlbGVjdGlvbicpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBSZWRpcmVjdCA9ICQodGhpcykudmFsKCk7CiAgICAgICAgICAgIGlmICggUmVkaXJlY3QgKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBSZWRpcmVjdDsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAkKCcjQXR0YWNobWVudHMnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICQoJyNBdHRhY2htZW50Qm94JykuY3NzKAogICAgICAgICAgICAgICAgJ3JpZ2h0JywgJCh3aW5kb3cpLndpZHRoKCkgLSAkKCcjQXR0YWNobWVudHMnKS5vZmZzZXQoKS5sZWZ0IC0gJCgnI0F0dGFjaG1lbnRzJykud2lkdGgoKSAtIDI0CiAgICAgICAgICAgICk7CiAgICAgICAgICAgICQoJyNBdHRhY2htZW50Qm94JykudG9nZ2xlKCk7CiAgICAgICAgfSk7CgogICAgICAgIC8vIHNjcm9sbCBldmVudHMKICAgICAgICAkKHdpbmRvdykuc2Nyb2xsKCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgLy8gY2hhbmdlIEhlYWRlciBvbiBzY3JvbGwKICAgICAgICAgICAgaWYgKCAkKHdpbmRvdykud2lkdGgoKSA+IDc2NyApIHsKICAgICAgICAgICAgICAgIGlmICggJCh3aW5kb3cpLnNjcm9sbFRvcCgpID4gOTAgJiYgJCgiI29vb0hlYWRlciIpLmhlaWdodCgpID4gNTYgKSB7CiAgICAgICAgICAgICAgICAgICAgJCgiI29vb0hlYWRlciIpLmhlaWdodCggJzQ4cHgnICk7CiAgICAgICAgICAgICAgICAgICAgJCgiI29vb0hlYWRlciIpLmNzcyggJ3BhZGRpbmctdG9wJywgJzhweCcgKTsKICAgICAgICAgICAgICAgICAgICAkKCIjb29vSGVhZGVyIikuY3NzKCAncGFkZGluZy1ib3R0b20nLCAnOHB4JyApOwogICAgICAgICAgICAgICAgICAgICQoIiNDSUluZm9CYXIiKS5mYWRlT3V0KDIwMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICggJCh3aW5kb3cpLnNjcm9sbFRvcCgpIDwgOCApIHsKICAgICAgICAgICAgICAgICAgICAkKCIjb29vSGVhZGVyIikuaGVpZ2h0KCAnMTAxcHgnICk7CiAgICAgICAgICAgICAgICAgICAgJCgiI29vb0hlYWRlciIpLmNzcyggJ3BhZGRpbmctdG9wJywgJzIycHgnICk7CiAgICAgICAgICAgICAgICAgICAgJCgiI29vb0hlYWRlciIpLmNzcyggJ3BhZGRpbmctYm90dG9tJywgJzIycHgnICk7CiAgICAgICAgICAgICAgICAgICAgJCgiI0NJSW5mb0JhciIpLmZhZGVJbigyMDApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgSWZyYW1lQXV0b0hlaWdodAogICAgICogQG1lbWJlcm9mIElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbS5ab29tCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkSWZyYW1lIC0gVGhlIGlmcmFtZSB3aGljaCBzaG91bGQgYmUgYXV0by1oZWlnaHRlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFNldCBpZnJhbWUgaGVpZ2h0IGF1dG9tYXRpY2FsbHkgYmFzZWQgb24gcmVhbCBjb250ZW50IGhlaWdodCBhbmQgaGFyZGNvZGVkIG1heCBoZWlnaHQuCiAgICAgKi8KICAgIFRhcmdldE5TLklmcmFtZUF1dG9IZWlnaHQgPSBmdW5jdGlvbiAoJElmcmFtZSkgewoKICAgICAgICB2YXIgTmV3SGVpZ2h0LAogICAgICAgICAgICBJZnJhbWVCb2R5SGVpZ2h0LAoKICAgICAgICAgICAgLy8gbWF4IGhlaWdodAogICAgICAgICAgICBEZXNjcmlwdGlvbkhlaWdodE1heCA9IDEwMDA7CgogICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkSWZyYW1lKSkgewogICAgICAgICAgICBJZnJhbWVCb2R5SGVpZ2h0ID0gJElmcmFtZS5jb250ZW50cygpLmZpbmQoJ2JvZHknKS5oZWlnaHQoKTsKICAgICAgICAgICAgTmV3SGVpZ2h0ID0gJElmcmFtZS5jb250ZW50cygpLmhlaWdodCgpOwogICAgICAgICAgICBpZiAoIU5ld0hlaWdodCB8fCBpc05hTihOZXdIZWlnaHQpKSB7CgogICAgICAgICAgICAgICAgLy8gZGVmYXVsdCBoZWlnaHQKICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IDEwMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChJZnJhbWVCb2R5SGVpZ2h0ID4gRGVzY3JpcHRpb25IZWlnaHRNYXgKICAgICAgICAgICAgICAgICAgICB8fCBOZXdIZWlnaHQgPiBEZXNjcmlwdGlvbkhlaWdodE1heCkgewogICAgICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IERlc2NyaXB0aW9uSGVpZ2h0TWF4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoSWZyYW1lQm9keUhlaWdodCA+IE5ld0hlaWdodCkgewogICAgICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IElmcmFtZUJvZHlIZWlnaHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGFkZCBkZWx0YSBmb3Igc2Nyb2xsYmFyCiAgICAgICAgICAgIE5ld0hlaWdodCA9IHBhcnNlSW50KE5ld0hlaWdodCwgMTApICsgMjU7CgogICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlIG1pbmltdW0gaGVpZ2h0IGlzIGluIGxpbmUgd2l0aCB0aGUgYXZhdGFyIGltYWdlcwogICAgICAgICAgICBpZiAoTmV3SGVpZ2h0IDwgNDYpIHsKICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IDQ2OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkSWZyYW1lLmhlaWdodChOZXdIZWlnaHQgKyAncHgnKTsKICAgICAgICB9CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5DdXN0b21lci5Db25maWdJdGVtLlpvb20gfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.Customer.ConfigItemList.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQ3VzdG9tZXIgPSBJVFNNLkN1c3RvbWVyIHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UgSVRTTS5DdXN0b21lci5Db25maWdJdGVtTGlzdAogKiBAbWVtYmVyb2YgSVRTTS5DdXN0b21lcgogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBOYXZpZ2F0aW9uIEJhcgogKi8KSVRTTS5DdXN0b21lci5Db25maWdJdGVtTGlzdCA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKiBAbmFtZSBOYXZCYXJTaHJpbmsKICAgICAqIEBtZW1iZXJvZiBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0CiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIE5hdkJhciB0byBpdHMgZGVmYXVsdC4KICAgICAqLwogICAgLypmdW5jdGlvbiBOYXZCYXJTaHJpbmsoKSB7CiAgICAgICAgJCgnI05hdmlnYXRpb24nKS5vZmYoJ21vdXNlbGVhdmUnLCBOYXZCYXJTaHJpbmspOwogICAgICAgICQoJyNOYXZpZ2F0aW9uJykucmVtb3ZlQ2xhc3MoIm9vb0V4cGFuZGVkIik7CiAgICAgICAgJCgnI05hdkJhck1vZHVsZUljb25zID4gYSA+IC5OYXZCYXJEZXNjcmlwdGlvbiA+IHAnKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAkKHRoaXMpLmhpZGUoKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gd2FpdCwgdGlsbCB0aGUgTmF2QmFyIGlzIHNtYWxsCiAgICAgICAgc2V0VGltZW91dCggZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICQoJyNOYXZCYXJFeHBhbmQnKS5zaG93KCk7CiAgICAgICAgfSwgMjUwKTsKICAgIH07Ki8KCiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBJVFNNLkN1c3RvbWVyLkNvbmZpZ0l0ZW1MaXN0CiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIENvbmZpZ0l0ZW1MaXN0IGphdmFzY3JpcHQgZnVuY3Rpb25zLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gbW92ZSBhbGwgZWxlbWVudHMgdG8gdGhlIHJvd3MKICAgICAgICAkKCcub29vVGlja2V0SXRlbUNhdCcpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBSb3cxICAgICAgID0gJCh0aGlzKS5jaGlsZHJlbigiLm9vb1JvdzEiKS5maXJzdCgpOwogICAgICAgICAgICB2YXIgUm93MiAgICAgICA9ICQodGhpcykuY2hpbGRyZW4oIi5vb29Sb3cyIikuZmlyc3QoKTsKICAgICAgICAgICAgdmFyIFdpZHRoMSAgICAgPSAwOwogICAgICAgICAgICB2YXIgV2lkdGgyICAgICA9IDA7CiAgICAgICAgICAgIHZhciBNYXhXaWR0aCAgID0gJCh0aGlzKS53aWR0aCgpOwogICAgICAgICAgICB2YXIgQ2F0ZWdvcmllcyA9ICQodGhpcykuY2hpbGRyZW4oInAiKTsKCi8vICAgICAgICAgICAgZm9yICh2YXIgQ2F0IG9mIENhdGVnb3JpZXMpIHsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBDYXRlZ29yaWVzLmxlbmd0aDsgaSsrICkgewogICAgICAgICAgICAgICAgdmFyIENhdGVnb3J5ID0gJCggQ2F0ZWdvcmllc1tpXSApOwogICAgICAgICAgICAgICAgdmFyIE91dGVyICAgID0gQ2F0ZWdvcnkub3V0ZXJXaWR0aCh0cnVlKTsKICAgICAgICAgICAgICAgIGlmICggV2lkdGgxIDw9IFdpZHRoMiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIFdpZHRoMSArIE91dGVyIDwgTWF4V2lkdGggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIENhdGVnb3J5LmFwcGVuZFRvKFJvdzEpOwogICAgICAgICAgICAgICAgICAgICAgICBXaWR0aDEgKz0gT3V0ZXI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeS5oaWRlKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBXaWR0aDIgKyBPdXRlciA8IE1heFdpZHRoICkgewogICAgICAgICAgICAgICAgICAgICAgICBDYXRlZ29yeS5hcHBlbmRUbyhSb3cyKTsKICAgICAgICAgICAgICAgICAgICAgICAgV2lkdGgyICs9IE91dGVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ2F0ZWdvcnkuaGlkZSgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KElUU00uQ3VzdG9tZXIuQ29uZmlnSXRlbUxpc3QgfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/js/ITSM.UI.ConfigItemActionRow.js" Permission="660" Encode="Base64">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoKLy8gVE9ETzoKLy9SZW1vdmUgdGhpcyBsaW5lIGFuZCBmaXggSlNEb2MKLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6SmF2YVNjcmlwdDo6RVNMaW50KQoKCiJ1c2Ugc3RyaWN0IjsKCnZhciBJVFNNID0gSVRTTSB8fCB7fTsKSVRTTS5VSSA9IElUU00uVUkgfHwge307CgovKioKICogQG5hbWVzcGFjZQogKiBAZXhwb3J0cyBUYXJnZXROUyBhcyBJVFNNLlVJLkNvbmZpZ0l0ZW1BY3Rpb25Sb3cKICogQGRlc2NyaXB0aW9uCiAqICAgICAgQWN0aW9uIHJvdyBmdW5jdGlvbmFsaXR5CiAqIEByZXF1aXJlcwogKiAgICAgIENvcmUuSlNPTgogKiAgICAgIENvcmUuRGF0YQogKi8KSVRTTS5VSS5Db25maWdJdGVtQWN0aW9uUm93ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIGlmICghQ29yZS5EZWJ1Zy5DaGVja0RlcGVuZGVuY3koJ0lUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdycsICdDb3JlLkpTT04nLCAnSlNPTiBBUEknKSkgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmICghQ29yZS5EZWJ1Zy5DaGVja0RlcGVuZGVuY3koJ0lUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdycsICdDb3JlLkRhdGEnLCAnRGF0YSBBUEknKSkgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgQ29uZmlnSXRlbUVsZW1lbnRTZWxlY3RvcnMgPSB7CiAgICAgICAgICAgICdTbWFsbCc6ICdkaXYuT3ZlcnZpZXcgdGFibGUgdGQgaW5wdXQ6Y2hlY2tib3hbbmFtZT1Db25maWdJdGVtSURdJywKICAgICAgICAgICAgJ01lZGl1bSc6ICd1bC5PdmVydmlldyBpbnB1dDpjaGVja2JveFtuYW1lPUNvbmZpZ0l0ZW1JRF0nLAogICAgICAgICAgICAnTGFyZ2UnOiAndWwuT3ZlcnZpZXcgaW5wdXQ6Y2hlY2tib3hbbmFtZT1Db25maWdJdGVtSURdJwogICAgICAgIH0sCiAgICAgICAgQ29uZmlnSXRlbVZpZXc7CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwcml2YXRlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gRGF0YSBUaGUgZGF0YSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQKICAgICAqIEByZXR1cm4ge3N0cmluZ30gcXVlcnkgc3RyaW5nIG9mIHRoZSBkYXRhCiAgICAgKiBAZGVzY3JpcHRpb24gQ29udmVydHMgYSBnaXZlbiBoYXNoIGludG8gYSBxdWVyeSBzdHJpbmcKICAgICAqLwogICAgZnVuY3Rpb24gU2VyaWFsaXplRGF0YShEYXRhKSB7CiAgICAgICAgdmFyIFF1ZXJ5U3RyaW5nID0gJyc7CiAgICAgICAgJC5lYWNoKERhdGEsIGZ1bmN0aW9uIChLZXksIFZhbHVlKSB7CiAgICAgICAgICAgIFF1ZXJ5U3RyaW5nICs9ICc7JyArIGVuY29kZVVSSUNvbXBvbmVudChLZXkpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KFZhbHVlKTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gUXVlcnlTdHJpbmc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9ucyBhZGRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSB2YWxpZCBhY3Rpb24gb2YgYW4gZWxlbWVudCB0byB0aGUgZWxlbWVudC4KICAgICAqICAgICAgVGhlc2UgaW5mb3JtYXRpb24gYXJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGFjdGlvbiByb3cgaW5kaXZpZHVhbGx5IGZvciB0aGlzIGVsZW1lbnQuCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEVsZW1lbnQKICAgICAqICAgICAgVGhlIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBkYXRhIGlzIHN0b3JlZAogICAgICogQHBhcmFtIHtTdHJpbmd9IEpTT05TdHJpbmcKICAgICAqICAgICAgVGhlIEpTT04gc3RyaW5nIHdoaWNoIGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdmFsaWQgYWN0aW9ucyBvZiB0aGUgZWxlbWVudCAoZ2VuZXJhdGVkIGJ5IFBlcmwgbW9kdWxlKQogICAgICogICAgICBDb3VsZCBhbHNvIGJlIGFuIGphdmFzY3JpcHQgb2JqZWN0IGRpcmVjdGx5CiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqLwogICAgVGFyZ2V0TlMuQWRkQWN0aW9ucyA9IGZ1bmN0aW9uICgkRWxlbWVudCwgSlNPTlN0cmluZykgewogICAgICAgIHZhciBBY3Rpb25zOwogICAgICAgIC8vIFRoZSBlbGVtZW50IG9mIHRoZSBnaXZlbiBJRCBtdXN0IGV4aXN0LCBKU09OU3RyaW5nIG11c3Qgbm90IGJlIGVtcHR5CiAgICAgICAgaWYgKGlzSlF1ZXJ5T2JqZWN0KCRFbGVtZW50KSkgewogICAgICAgICAgICBpZiAodHlwZW9mIEpTT05TdHJpbmcgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICBBY3Rpb25zID0gQ29yZS5KU09OLlBhcnNlKEpTT05TdHJpbmcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgQWN0aW9ucyA9IEpTT05TdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHNhdmUgYWN0aW9uIGRhdGEgdG8gdGhlIGdpdmVuIGVsZW1lbnQKICAgICAgICAgICAgQ29yZS5EYXRhLlNldCgkRWxlbWVudCwgJ0FjdGlvbnMnLCBBY3Rpb25zKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIENvcmUuRGVidWcuTG9nKCdFbGVtZW50IGRvZXMgbm90IGV4aXN0IG9yIG5vIHZhbGlkIGRhdGEgc3RydWN0dXJlIHBhc3NlZC4nKTsKICAgICAgICB9CiAgICB9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb24gY2xpY2sgb24gdGhlIGNoZWNrYm94IG9mIGFuIENvbmZpZ0l0ZW0gZWxlbWVudCBhbmQgdXBkYXRlcyB0aGUgYWN0aW9uIHJvdyBmb3IgdGhpcyBlbGVtZW50LgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRDbGlja2VkRWxlbWVudAogICAgICogICAgICBqUXVlcnlPYmplY3Qgb2YgdGhlIGNsaWNrZWQgZWxlbWVudCAobm9ybWFsbHkgJCh0aGlzKSkKICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSBDaGVja2JveGVzCiAgICAgKiAgICAgIGpRdWVyeU9iamVjdCBvZiB0aGUgY2hlY2tib3hlcyBvZiB0aGUgZGlmZmVyZW50IENvbmZpZ0l0ZW1zCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEFjdGlvblJvdwogICAgICogICAgICBUaGUgalF1ZXJ5T2JqZWN0IG9mIHRoZSBBY3Rpb25Sb3cgd3JhcHBlciAobm9ybWFsbHkgdGhlIDx1bD4tRWxlbWVudCkKICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICovCiAgICBUYXJnZXROUy5VcGRhdGVBY3Rpb25Sb3cgPSBmdW5jdGlvbiAoXyRDbGlja2VkRWxlbWVudCwgJENoZWNrYm94ZXMsICRBY3Rpb25Sb3cpIHsKICAgICAgICB2YXIgQ29uZmlnSXRlbUFjdGlvbkRhdGEsCiAgICAgICAgICAgIEFjdGlvblJvd0VsZW1lbnQ7CgogICAgICAgIC8vIENoZWNrLCBpZiBvbmUgb3IgbW9yZSBpdGVtcyBhcmUgc2VsZWN0ZWQKICAgICAgICAkQ2hlY2tib3hlcyA9ICRDaGVja2JveGVzLmZpbHRlcignOmNoZWNrZWQnKTsKICAgICAgICAvLyBObyBjaGVja2JveCBpcyBzZWxlY3RlZAogICAgICAgIGlmICghJENoZWNrYm94ZXMubGVuZ3RoKSB7CiAgICAgICAgICAgIC8vIFJlbW92ZSBhY3Rpb25zIGFuZCBkZWFjdGl2YXRlIGJ1bGsgYWN0aW9uCiAgICAgICAgICAgICRBY3Rpb25Sb3cKICAgICAgICAgICAgICAgIC5maW5kKCdsaScpLmZpbHRlcignOm5vdCguQnVsayknKS5yZW1vdmUoKQogICAgICAgICAgICAgICAgLmVuZCgpLmVuZCgpCiAgICAgICAgICAgICAgICAuZmluZCgnI0NvbmZpZ0l0ZW1CdWxrQWN0aW9uJykuYWRkQ2xhc3MoJ0luYWN0aXZlJykKICAgICAgICAgICAgICAgIC5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2xpLkxhc3QnKS5yZW1vdmVDbGFzcygnTGFzdCcpCiAgICAgICAgICAgICAgICAuZW5kKCkKICAgICAgICAgICAgICAgIC5maW5kKCdsaTpsYXN0JykuYWRkQ2xhc3MoJ0xhc3QnKTsKICAgICAgICB9CiAgICAgICAgLy8gRXhhY3RseSBvbmUgY2hlY2tib3ggaXMgc2VsZWN0ZWQKICAgICAgICBlbHNlIGlmICgkQ2hlY2tib3hlcy5sZW5ndGggPT09IDEgJiYgISQoJyNTZWxlY3RBbGxDb25maWdJdGVtcycpLmlzKCc6Y2hlY2tlZCcpICkgewogICAgICAgICAgICAvLyBVcGRhdGUgYWN0aW9ucyBhbmQgYWN0aXZhdGUgYnVsayBhY3Rpb24KICAgICAgICAgICAgJEFjdGlvblJvdy5maW5kKCcjQ29uZmlnSXRlbUJ1bGtBY3Rpb24nKS5yZW1vdmVDbGFzcygnSW5hY3RpdmUnKTsKCiAgICAgICAgICAgIC8vIEZpbmQgdGhlIGVsZW1lbnQgd2hpY2ggaXMgYWN0aXZlIChpdCBtdXN0IG5vdCBiZSB0aGUgY2xpY2tlZCBlbGVtZW50ISkKICAgICAgICAgICAgLy8gYW5kIGdldCB0aGUgZGF0YQogICAgICAgICAgICBDb25maWdJdGVtQWN0aW9uRGF0YSA9IENvcmUuRGF0YS5HZXQoJENoZWNrYm94ZXMuY2xvc2VzdCgnbGksIHRyJyksICdBY3Rpb25zJyk7CiAgICAgICAgICAgIGlmICh0eXBlb2YgQ29uZmlnSXRlbUFjdGlvbkRhdGEgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAgICAkLmVhY2goQ29uZmlnSXRlbUFjdGlvbkRhdGEsIGZ1bmN0aW9uIChfSW5kZXgsIFZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKFZhbHVlLkhUTUwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJChWYWx1ZS5IVE1MKS5hdHRyKCdpZCcsIFZhbHVlLklEKS5hcHBlbmRUbygkQWN0aW9uUm93KTsKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uUm93RWxlbWVudCA9ICRBY3Rpb25Sb3cuZmluZCgnIycgKyBWYWx1ZS5JRCkuZmluZCgnYScpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIFZhbHVlLlRhcmdldCA9PT0gJ3VuZGVmaW5lZCcgfHwgVmFsdWUuVGFyZ2V0ID09PSAiIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uUm93RWxlbWVudC5hdHRyKCdocmVmJywgVmFsdWUuTGluayk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFZhbHVlLlBvcHVwVHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uUm93RWxlbWVudC5vbignY2xpY2suUG9wdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZS5VSS5Qb3B1cC5PcGVuUG9wdXAoVmFsdWUuTGluaywgVmFsdWUuUG9wdXBUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBBcHBseSB0aGUgTGFzdCBjbGFzcyB0byB0aGUgcmlnaHQgZWxlbWVudAogICAgICAgICAgICAkQWN0aW9uUm93CiAgICAgICAgICAgICAgICAuZmluZCgnbGkuTGFzdCcpLnJlbW92ZUNsYXNzKCdMYXN0JykKICAgICAgICAgICAgICAgIC5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2xpOmxhc3QnKS5hZGRDbGFzcygnTGFzdCcpOwogICAgICAgIH0KICAgICAgICAvLyBUd28gb3JlIG1vcmUgY2hlY2tib3hlcyBzZWxlY3RlZAogICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyBSZW1vdmUgYWN0aW9ucyBhbmQgYWN0aXZhdGUgYnVsayBhY3Rpb24KICAgICAgICAgICAgJEFjdGlvblJvdwogICAgICAgICAgICAgICAgLmZpbmQoJ2xpJykuZmlsdGVyKCc6bm90KC5CdWxrKScpLnJlbW92ZSgpCiAgICAgICAgICAgICAgICAuZW5kKCkuZW5kKCkKICAgICAgICAgICAgICAgIC5maW5kKCcjQ29uZmlnSXRlbUJ1bGtBY3Rpb24nKS5yZW1vdmVDbGFzcygnSW5hY3RpdmUnKQogICAgICAgICAgICAgICAgLmVuZCgpCiAgICAgICAgICAgICAgICAuZmluZCgnbGkuTGFzdCcpLnJlbW92ZUNsYXNzKCdMYXN0JykKICAgICAgICAgICAgICAgIC5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2xpOmxhc3QnKS5hZGRDbGFzcygnTGFzdCcpOwogICAgICAgIH0KICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBjb21wbGV0ZSBBY3Rpb25Sb3cgZnVuY3Rpb25hbGl0eSBhbmQgYmluZHMgYWxsIGNsaWNrIGV2ZW50cy4KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIC8vIEdldCB1c2VkIENvbmZpZ0l0ZW0gdmlldyBtb2RlCiAgICAgICAgaWYgKCQoJyNDb25maWdJdGVtT3ZlcnZpZXdNZWRpdW0nKS5sZW5ndGgpIHsKICAgICAgICAgICAgQ29uZmlnSXRlbVZpZXcgPSAnTWVkaXVtJzsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoJCgnI0NvbmZpZ0l0ZW1PdmVydmlld0xhcmdlJykubGVuZ3RoKSB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1WaWV3ID0gJ0xhcmdlJzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1WaWV3ID0gJ1NtYWxsJzsKICAgICAgICB9CgogICAgICAgICQoJyNTZWxlY3RBbGxDb25maWdJdGVtcycpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIFN0YXR1cyA9ICQodGhpcykucHJvcCgnY2hlY2tlZCcpOwogICAgICAgICAgICAkKENvbmZpZ0l0ZW1FbGVtZW50U2VsZWN0b3JzW0NvbmZpZ0l0ZW1WaWV3XSkucHJvcCgnY2hlY2tlZCcsIFN0YXR1cykudHJpZ2dlckhhbmRsZXIoJ2NsaWNrJyk7CiAgICAgICAgfSk7CgogICAgICAgICQoQ29uZmlnSXRlbUVsZW1lbnRTZWxlY3RvcnNbQ29uZmlnSXRlbVZpZXddKS5vbignY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIElUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdy5VcGRhdGVBY3Rpb25Sb3coJCh0aGlzKSwgJChDb25maWdJdGVtRWxlbWVudFNlbGVjdG9yc1tDb25maWdJdGVtVmlld10pLCAkKCdkaXYuT3ZlcnZpZXdBY3Rpb25zIHVsLkFjdGlvbnMnKSk7CiAgICAgICAgfSk7CgogICAgICAgICQoJyNDb25maWdJdGVtQnVsa0FjdGlvbiBhJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgJEVsZW1lbnQgPSAkKHRoaXMpLAogICAgICAgICAgICAgICAgJFNlbGVjdGVkQ29uZmlnSXRlbXMsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURQYXJhbWV0ZXIgPSAiQ29uZmlnSXRlbUlEPSIsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzID0gIiIsCiAgICAgICAgICAgICAgICBVUkw7CiAgICAgICAgICAgIGlmICgkRWxlbWVudC5wYXJlbnQoJ2xpJykuaGFzQ2xhc3MoJ0luYWN0aXZlJykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxlY3RlZENvbmZpZ0l0ZW1zID0gJChDb25maWdJdGVtRWxlbWVudFNlbGVjdG9yc1tDb25maWdJdGVtVmlld10gKyAnOmNoZWNrZWQnKTsKICAgICAgICAgICAgICAgICRTZWxlY3RlZENvbmZpZ0l0ZW1zLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRHMgKz0gQ29uZmlnSXRlbUlEUGFyYW1ldGVyICsgJCh0aGlzKS52YWwoKSArICI7IjsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgVVJMID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtQnVsazsiICsgQ29uZmlnSXRlbUlEczsKICAgICAgICAgICAgICAgIFVSTCArPSBTZXJpYWxpemVEYXRhKENvcmUuQXBwLkdldFNlc3Npb25JbmZvcm1hdGlvbigpKTsKICAgICAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwKFVSTCwgJ0NvbmZpZ0l0ZW1BY3Rpb24nKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLlVJLkNvbmZpZ0l0ZW1BY3Rpb25Sb3cgfHwge30pKTsK</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.Admin.ITSMConfigItem.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIEFwcGxpY2F0aW9uCiAqIEBzdWJzZWN0aW9uICBJVFNNQ29uZmlnSXRlbURlZmluaXRpb25zCiAqLwoKQG1lZGlhIHNjcmVlbixwcm9qZWN0aW9uLHR2LGhhbmRoZWxkIHsKCi8qKgogKiBAc3Vic3Vic2VjdGlvbiAgICAgQWRtaW5JVFNNQ29uZmlnSXRlbQogKi8KCi5TaWRlYmFyQ29sdW1uIC5XaWRnZXRTaW1wbGUgLkNhbGxGb3JBY3Rpb24gewogICAgbWFyZ2luLXRvcDogNHB4OwogICAgbWFyZ2luLWJvdHRvbTogNHB4Owp9CgpmaWVsZHNldCA+IC5GaWVsZCAuQ29kZU1pcnJvci13cmFwIHsKICAgIGhlaWdodDogY2FsYygxMDB2aCAtIDUwMHB4KTsKICAgIG1pbi1oZWlnaHQ6IDMyMHB4Owp9CgouQ29kZU1pcnJvckNvbnRhaW5lciB7CiAgICB3aWR0aDogOTAlOwp9CgouQ29kZU1pcnJvckNvbnRhaW5lciArIHAgewogICAgd2lkdGg6IDkwJTsKfQp9LyogZW5kIEBtZWRpYSAqLwo=</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.Edit.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIElUU00gQ29uZmlnSXRlbQogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgouUm93X1NlY3Rpb25IZWFkZXIgewogICAgbWFyZ2luLXRvcDogOHB4OwogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKLlJvd19QYWdlSGVhZGVyIHsKICAgIG1hcmdpbi10b3A6IDEycHg7CiAgICBtYXJnaW4tYm90dG9tOiA4cHg7Cn0KCi5Sb3dfU2VjdGlvbkhlYWRlciA+IGgzLAouUm93X1BhZ2VIZWFkZXIgPiBoMiB7CiAgICBtYXJnaW4tYm90dG9tOiA0cHg7CiAgICBtYXJnaW4tbGVmdDogMzAlOwogICAgcGFkZGluZy1sZWZ0OiAxMHB4Owp9CgouUm93X1NlY3Rpb25IZWFkZXIgPiBoMyB7CiAgICBmb250LXNpemU6IDEycHg7CiAgICBmb250LXdlaWdodDogYm9sZDsKfQoKLlJvd19QYWdlSGVhZGVyID4gaHIgewogICAgYm9yZGVyLXRvcDogMC41cHggc29saWQgdmFyKC0tY29sQkdEYXJrKTsKICAgIHdpZHRoOiA4MCU7CiAgICBtYXJnaW4tbGVmdDogMjAlOwp9CgpmaWVsZHNldC5UYWJsZUxpa2UgZGV0YWlscyA+IGxhYmVsIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLWxlZnQ6IDMwJTsKICAgIHBhZGRpbmctbGVmdDogMTBweDsKICAgIHBhZGRpbmctdG9wOiA0cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogNHB4OwogICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKfQoKLyogUGFnZSBIZWFkZXIgTmF2aWdhdGlvbiAqLwpkZXRhaWxzIHN1bW1hcnkgewogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1hcmdpbi1ib3R0b206IDEycHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCmRldGFpbHNbb3Blbl0gc3VtbWFyeSAuVG9nZ2xlIC5mYS1jYXJldC1yaWdodCwKZGV0YWlscyBzdW1tYXJ5IC5Ub2dnbGUgLmZhLWNhcmV0LWRvd24gewogICAgZGlzcGxheTogbm9uZTsKfQoKZGV0YWlsc1tvcGVuXSBzdW1tYXJ5IC5Ub2dnbGUgLmZhLWNhcmV0LWRvd24gewogICAgZGlzcGxheTogYmxvY2s7Cn0KCmRldGFpbHMgc3VtbWFyeSAuUm93X1BhZ2VIZWFkZXIgLlRvZ2dsZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBwYWRkaW5nLWJvdHRvbTogNHB4OyAvKiB0byBhbGlnbiB3aXRoIGgyICovCiAgICBsZWZ0OiAzMCU7CiAgICB0b3A6IDA7IAp9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.Overview.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogICogQHBhY2thZ2UgICAgIFNraW4gIkRlZmF1bHQiCiAgKiBAc2VjdGlvbiAgICAgSVRTTSBDb25maWdJdGVtCiAgKiBAc3Vic2VjdGlvbiAgT3ZlcnZpZXcKICAqLwoKLyoqCiAqIEBzdWJzZWN0aW9uICBDb25maWdJdGVtIExpc3QgVGFibGVzCiAqLwoKLkNvbmZpZ0l0ZW1MaXN0IHsKICAgIG92ZXJmbG93OiBhdXRvOwp9CgouQ29uZmlnSXRlbUxpc3QgdGFibGUgewogICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93OiBoaWRkZW47Cn0KCi5Db25maWdJdGVtTGlzdCB0ZCB7CiAgICBsaW5lLWhlaWdodDogMThweDsKfQoKLkNvbmZpZ0l0ZW1MaXN0IHRhYmxlIHRkLkNoZWNrYm94IHsKICAgIG1hcmdpbi1sZWZ0OiAwcHg7Cn0KCi5Db25maWdJdGVtTGlzdCB0YWJsZSBpbnB1dC5DaGVja2JveCB7CiAgICBtYXJnaW4tcmlnaHQ6IDdweDsKfQoKLkNvbmZpZ0l0ZW1MaXN0IHRkLkZyb20gZGl2LAouQ29uZmlnSXRlbUxpc3QgdGQuU3ViamVjdCBkaXYsCi5Db25maWdJdGVtTGlzdCB0ZC5DcmVhdGVkIGEgewogICAgaGVpZ2h0OiAyMHB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouQ29uZmlnSXRlbUxpc3QgLk5vIHsKICAgIHdpZHRoOiAzMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouQ29uZmlnSXRlbUxpc3QgLkF0dGFjaG1lbnRzIHsKICAgIHdpZHRoOiAyMHB4Owp9CgojT3ZlcnZpZXdCb2R5Lk92ZXJ2aWV3LkNvbmZpZ0l0ZW1MaXN0IHsKICAgIG92ZXJmbG93LXg6IGF1dG87CiAgICBtYXJnaW46IDA7CiAgICBib3JkZXI6IDA7CiAgICBncmlkLWFyZWE6IDEgLyAyIC8gMiAvIDM7Cn0KCiNPdmVydmlld0JvZHkuT3ZlcnZpZXcuQ29uZmlnSXRlbUxpc3QgdGFibGUgewogICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjREREOwogICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0RERDsKfQoKI092ZXJ2aWV3Qm9keS5PdmVydmlldy5Db25maWdJdGVtTGlzdCB0YWJsZS5UYWJsZVNtYWxsLk5vQ2VsbHNwYWNpbmcgewogICAgb3ZlcmZsb3c6IHZpc2libGU7Cn0KCiNPdmVydmlld0NvbnRhaW5lciB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgN2ZyOwogICAgbWFyZ2luOiAwcHggMTZweCA4cHggOHB4Owp9CgojT3ZlcnZpZXdDb250YWluZXIgPiAjT3ZlcnZpZXdDb250cm9sIHsKICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7CiAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCB2YXIoLS1jb2xCR01lZGl1bSk7CiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7Cn0KCiNPdmVydmlld0NvbnRhaW5lciA+ICNPdmVydmlld0NvbnRyb2wgPiB1bCA+IGxpIHsKICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICBwYWRkaW5nLXRvcDogNHB4OwogICAgcGFkZGluZy1ib3R0b206IDRweDsKICAgIHBhZGRpbmctbGVmdDogOHB4OwogICAgbWFyZ2luLWJvdHRvbTogNXB4Owp9CgojT3ZlcnZpZXdDb250YWluZXIgPiAjT3ZlcnZpZXdDb250cm9sID4gdWwgPiBsaSA+IGEgewogICAgcGFkZGluZy10b3A6IDRweDsKICAgIHBhZGRpbmctYm90dG9tOiA0cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDhweDsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBsZXR0ZXItc3BhY2luZzogMC4ycHg7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dERhcmspOwp9CgojT3ZlcnZpZXdDb250YWluZXIgPiAjT3ZlcnZpZXdDb250cm9sID4gdWwgPiBsaS5BY3RpdmUgewogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdNZWRpdW1EYXJrKTsKfQoKI092ZXJ2aWV3Q29udGFpbmVyID4gI092ZXJ2aWV3Q29udHJvbCA+IHVsID4gbGkuQWN0aXZlID4gYSB7CiAgICBjb2xvcjogdmFyKC0tY29sVGV4dERhcmspOwp9CgouT3ZlcnZpZXdDb250cm9sIC5BY3Rpb25Sb3cgewogICAgbWFyZ2luLWxlZnQ6IDEyLjUlOwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDEwcHg7CiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMTBweDsKICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDBweDsKICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwcHg7Cn0KCmRpdi5GbGFnLlNtYWxsIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHdpZHRoOiAxNnB4OwogICAgaGVpZ2h0OiAxNHB4OwogICAgbWFyZ2luOiAycHggOHB4IDAgMDsKICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KCmRpdi5GbGFnLlNtYWxsID4gc3BhbiB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICB3aWR0aDogMTZweDsKICAgIGhlaWdodDogMTJweDsKfQoKLkZsYWdnZWROYW1lIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLyogIEFsbCBkZXZpY2VzIHdpdGggYSBzbWFsbGVyIHJlc29sdXRpb24gdGhhbiB0aGUgY3VycmVudCBPVE9CTyBtaW5pbXVtIHNvbHV0aW9uICovCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMHB4KSBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7CgogICAgICAgICNPdmVydmlld0JvZHkuT3ZlcnZpZXcuQ29uZmlnSXRlbUxpc3QgewogICAgICAgIG92ZXJmbG93LXk6YXV0bzsKICAgIH0KfQo=</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.TreeView.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIENNREIgVHJlZVZpZXcKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLkNvbnRhaW5lckNhbnZhcyB7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgl3aWR0aDogMTAwJTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCW1hcmdpbi10b3A6IDIwcHg7CgltYXJnaW4tYm90dG9tOiAyMHB4OwoJei1pbmRleDogMDsKfQoKLlNwYWNlclRyZWUgewoJaGVpZ2h0OiAyMHB4OwkKfQoKLkJveCB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cgljb2xvcjogYmxhY2s7Cgl3aWR0aDogODAlOwoJbWluLXdpZHRoOiAyMDBweDsKCW1heC13aWR0aDogbWF4LWNvbnRlbnQ7CgloZWlnaHQ6IG1heC1jb250ZW50OwoJbWluLWhlaWdodDogNzBweDsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCS13ZWJraXQtdHJhbnNpdGlvbjogYWxsIGVhc2UtaW4tb3V0IC4yczsKCS1tb3otdHJhbnNpdGlvbjogYWxsIGVhc2UtaW4tb3V0IC4yczsKCXRyYW5zaXRpb246IGFsbCBlYXNlLWluLW91dCAuMnM7CgliYWNrZ3JvdW5kOiAjZmZmZmZmOwoJb3ZlcmZsb3c6IGhpZGRlbjsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCW1hcmdpbjogMTBweDsKCWJvcmRlci1yYWRpdXM6IDhweDsKCWJveC1zaGFkb3c6IDJweCA0cHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7Cglib3JkZXI6IG5vbmU7Cgl6LWluZGV4OiAxMDAwOwp9CgouQ29uZmlnSXRlbUluZm8gewoJZGlzcGxheTogdGFibGU7CgloZWlnaHQ6IDEwMCU7Cgl3aWR0aDogMTAwJTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhIE5ldWUiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmCn0KCi5BZGRpdGlvbmFsSW5mbyB7CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CglwYWRkaW5nOiA2cHg7Cglmb250LXNpemU6IDExcHg7Cn0KCi5Db25maWdJdGVtVGl0bGUgewoJZGlzcGxheTogdGFibGUtcm93OwoJdmVydGljYWwtYWxpZ246IG1pZGRsZTsKCWNvbG9yOiAjZmZmZmZmOwoJYmFja2dyb3VuZC1jb2xvcjogIzAwMDA5OTsKCWhlaWdodDogbWF4LWNvbnRlbnQ7Cglmb250LXdlaWdodDogNjAwOwoJZm9udC1zaXplOiAxNHB4Owp9CgouQ29uZmlnSXRlbVRpdGxlIHAgewoJbWFyZ2luLXRvcDogM3B4OwoJbWFyZ2luLWJvdHRvbTogM3B4OwogICAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7CQp9CgouVGFyZ2V0U2VjdGlvbiB7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCmg0IHsKCW1hcmdpbi1ibG9jay1zdGFydDogMWVtOwp9CgouX2pzUGx1bWJfY29ubmVjdG9yIHsKCXotaW5kZXg6IDE7Cn0KCi5fanNQbHVtYl9vdmVybGF5IHsKCXotaW5kZXg6IDE7Cglmb250LXNpemU6IDEwcHg7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwoJZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Cn0KCi5DaGlsZENvbnRhaW5lciB7CgltYXJnaW4tdG9wOiAzNXB4OwoJZGlzcGxheTogYmxvY2s7Cn0KCi5Sb3dUaXRsZSB7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cgl0b3A6IDlweDsKCWxlZnQ6IDEwcHg7Cglmb250LXNpemU6IDE0cHg7Cn0KCi5PcHRDb250YWluZXIgewoJcG9zaXRpb246IHJlbGF0aXZlOyAKCXotaW5kZXg6IDEwMDA7Cgl0b3A6IC03cHg7CgloZWlnaHQ6IDE1cHg7CgltYXJnaW46IDAgYXV0bzsKfQoKLk9wdERlcHRoIHsKCW1hcmdpbi1yaWdodDogM3B4OwoJZm9udC1zaXplOiAxM3B4OwoJYm9yZGVyLXJhZGl1czogNnB4OwoJYm9yZGVyOiAxcHggc29saWQ7CglvdXRsaW5lOiBub25lOwoJdGV4dC1hbGlnbjogY2VudGVyOwoJYm9yZGVyLWNvbG9yOiAjZGNkYmRiOwoJYm94LXNoYWRvdzogMHB4IDBweCAycHggcmdiYSg2Niw2Niw2NiwuODYpOwp9CgouQ29udGFpbmVyQmFyIHsKCWhlaWdodDogMzNweDsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCXotaW5kZXg6IDEwMDA7Cn0KCi5UcmVlVmlld01lc3NhZ2VzIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCW1hcmdpbjogMCBhdXRvOwoJcGFkZGluZzogOHB4OwoJd2lkdGg6IDEwMCU7CgliYWNrZ3JvdW5kLWNvbG9yOiAjRTk1RjUzOwoJY29sb3I6ICNmZmY7Cn0KCiNXaWRnZXRDb250YWluZXIgewoJcG9zaXRpb246IHJlbGF0aXZlOwoJei1pbmRleDogMTAwMDsJCn0KCiNTZWN0aW9uQ29udGFpbmVyIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWhlaWdodDogMTAwJTsKCWRpc3BsYXk6IGJsb2NrOwoJb3ZlcmZsb3c6IGhpZGRlbjsKCXotaW5kZXg6IDA7Cn0KCiNBSkFYTG9hZGVyRGVwdGggewoJcG9zaXRpb246IHJlbGF0aXZlOwoJbWFyZ2luOiAwIGF1dG87CglkaXNwbGF5OiBibG9jazsKCXRvcDogMTBweDsKCWJvcmRlcjogbm9uZTsKfQoKI1pvb21Jbk91dExhYmVsIHsKCXBvc2l0aW9uOiByZWxhdGl2ZTsKCWxlZnQ6IDE1cHg7Cglmb250LXNpemU6IDE0cHg7Cn0KCiNEZXB0aExhYmVsIHsKCWZvbnQtc2l6ZTogMTRweDsKfQoKI1pvb20gewoJcG9zaXRpb246IHJlbGF0aXZlOwoJbGVmdDogMTVweDsKCWZvbnQtc2l6ZTogMTNweDsKCWJvcmRlci1yYWRpdXM6IDZweDsKCWJvcmRlcjogMXB4IHNvbGlkOwoJb3V0bGluZTogbm9uZTsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWJvcmRlci1jb2xvcjogI2RjZGJkYjsKCWJveC1zaGFkb3c6IDBweCAwcHggMnB4IHJnYmEoNjYsNjYsNjYsLjg2KTsKfQoKLlpvb21MaW5rIHsKCWNvbG9yOiAjZmZmZmZmOwoJY3Vyc29yOiBwb2ludGVyOwoJZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Cn0KCi5ab29tTGluazpob3ZlciwgLlpvb21MaW5rOnZpc2l0ZWQgewoJY29sb3I6ICNmZmZmZmY7Cn0KCmlucHV0W3R5cGU9J251bWJlciddOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLCAKaW5wdXRbdHlwZT0nbnVtYmVyJ106Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24geyAKICAgIG9wYWNpdHk6IDE7Cn0KCn0gLyogZW5kIEBtZWRpYSAqLwo=</File>
        <File Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.Zoom.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIElUU00gQ29uZmlnSXRlbQogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgogICAgI1NlbGVjdGlvblJvdyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93OwogICAgICAgIGZsZXgtd3JhcDogbm93cmFwOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1hcmdpbi10b3A6IDI0cHg7CiAgICB9CgogICAgI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgewogICAgICAgIGZsb2F0OiByaWdodDsKICAgICAgICBkaXNwbGF5OiBpbmxpbmU7CiAgICB9CgogICAgI1BhZ2VTZWxlY3Rpb24gewogICAgICAgIGZsb2F0OiBsZWZ0OwogICAgICAgIGRpc3BsYXk6IGlubGluZSBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7CiAgICAgICAgZmxleC13cmFwOiBub3dyYXA7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7CiAgICAgICAgd2lkdGg6IDgwJTsKICAgIH0KCiAgICAjUGFnZVNlbGVjdGlvbiA+IGEgewogICAgICAgIG1hcmdpbi1yaWdodDogOHB4OwogICAgfQoKICAgICNQYWdlU2VsZWN0aW9uID4gaDIgewogICAgICAgIG1hcmdpbi1ib3R0b206IDBweDsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICAgICAgY29sb3I6ICMwMDAyM2M7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA3cHg7CiAgICB9CgogICAgI1BhZ2VTZWxlY3Rpb24gYnV0dG9uLlBhZ2VTZWxlY3Rpb25CdXR0b24gewogICAgICAgIHdpZHRoOiBhdXRvOwogICAgICAgIG1heC13aWR0aDogMjQwcHg7CiAgICAgICAgaGVpZ2h0OiAyMnB4OwogICAgfQogICAgCiAgICAjUGFnZVNlbGVjdGlvbiBidXR0b24uUGFnZVNlbGVjdGlvbkJ1dHRvbi5TZWxlY3RlZCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDBmYzsKICAgIH0KCiAgICAub29vQ29udGVudEdyaWQgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgbWFyZ2luLXRvcDogMjRweDsKICAgICAgICBncmlkLXJvdy1nYXA6IDEycHg7CiAgICAgICAgZ3JpZC1jb2x1bW4tZ2FwOiAxMnB4OwogICAgICAgIGdyaWQtYXV0by1yb3dzOiBtaW5tYXgobWluLWNvbnRlbnQsIDF2aCk7CiAgICB9CgogICAgLm9vb0NvbnRlbnRDZWxsIHsKICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgcGFkZGluZzogOHB4OwogICAgfQoKICAgIC5vb29Db250ZW50Q2VsbC5Db25maWdJdGVtTGlua3NfQ2VsbCAuQ2VsbENvbnRlbnQgewogICAgICAgIG1heC1oZWlnaHQ6IDQwMHB4OwogICAgICAgIG92ZXJmbG93LXk6IGF1dG87CiAgICB9CgogICAgLkZpZWxkRGlzcGxheVJvdyB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgIH0KCiAgICAuRmllbGREaXNwbGF5Um93Om5vdCg6Zmlyc3QtY2hpbGQpIHsKICAgICAgICBtYXJnaW4tdG9wOiAxMnB4OwogICAgfQoKICAgIC5GaWVsZERpc3BsYXlSb3cgPiBsYWJlbCwKICAgIC5GaWVsZERpc3BsYXlSb3cgPiBwIHsKICAgICAgICBtYXJnaW4tdG9wOiA0cHg7CiAgICB9CgogICAgLkZpZWxkRGlzcGxheVJvdyBsYWJlbCwKICAgIC5GaWVsZERpc3BsYXlSb3cgcCB7CiAgICAgICAgcGFkZGluZy1sZWZ0OiA4cHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogOHB4OwogICAgICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNWVtOwogICAgfQoKICAgIC5vb29Db250ZW50R3JpZCBsYWJlbCB7CiAgICAgICAgY29sb3I6ICM5MjkyOTI7CiAgICAgICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZBRkFGQTsKICAgIH0KCiAgICAuRHluYW1pY0ZpZWxkU2V0TGFiZWwgewogICAgICAgIHBhZGRpbmctdG9wOiA4cHg7CiAgICB9CgogICAgLlNldERpc3BsYXlWYWx1ZSB7CiAgICAgICAgbWFyZ2luLXRvcDogOHB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICBtYXJnaW4tbGVmdDogMjRweDsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogY2FsYyggNTAlIC0gMTJweCApIGNhbGMoIDUwJSArIDEycHggKTsKICAgIH0KCiAgICAuU2V0RGlzcGxheVZhbHVlID4gbGFiZWwsCiAgICAuU2V0RGlzcGxheVZhbHVlID4gcCB7CiAgICAgICAgbWFyZ2luLXRvcDogNHB4OwogICAgfQoKICAgIC5TZXREaXNwbGF5VmFsdWUgZGl2LkNsZWFyIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIC5EeW5hbWljRmllbGRSaWNoVGV4dExpbmsgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLkR5bmFtaWNGaWVsZFJpY2hUZXh0Q29udGVudC5IaWRkZW4gewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQoKICAgIC5EeW5hbWljRmllbGRSaWNoVGV4dENvbnRlbnQgPiAuT3ZlcmxheUR5bmFtaWNGaWVsZFJpY2hUZXh0aUZyYW1lIHsKICAgICAgICBoZWlnaHQ6IGF1dG87CiAgICAgICAgbWF4LWhlaWdodDogNDAwcHg7CiAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDY0cHgpOwogICAgfQoKfSAvKiBlbmQgQG1lZGlhICovCg==</File>
        <File Location="var/httpd/htdocs/skins/Agent/highcontrast/css/ITSM.Agent.ConfigItem.Zoom.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiSGlnaENvbnRyYXN0IgogKiBAc2VjdGlvbiAgICAgSVRTTSBDb25maWdJdGVtCiAqLwoKQG1lZGlhIHNjcmVlbixwcm9qZWN0aW9uLHR2LGhhbmRoZWxkIHsKICAgIAogICAgI1BhZ2VTZWxlY3Rpb24gYnV0dG9uLlBhZ2VTZWxlY3Rpb25CdXR0b24uU2VsZWN0ZWQgewogICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdMaWdodCk7CiAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbEJHRGFyayk7CiAgICAgICBjb2xvcjogdmFyKC0tY29sVGV4dERhcmspOwogICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNvbEJHRGFyayk7CiAgICB9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Customer.ConfigItemSearch.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBoZWlnaHQ6IDEyOHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHggMjBweCAwcHggMHB4OwogICAgfQoKICAgIC5Sb3cgPiBkaXYuRmllbGQsCiAgICAuUm93ID4gZGl2LklucHV0RmllbGRfQ29udGFpbmVyLAogICAgLlJvdyA+IHNlbGVjdCwKICAgICNja2VfUmljaFRleHQsCiAgICAjUmljaFRleHQgewogICAgICAgIHdpZHRoOiBjYWxjKCA1MCUgKyAxNTBweCApICFpbXBvcnRhbnQ7CiAgICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoIDI1JSAtIDc2cHggKTsKICAgIH0KCiAgICAuUm93ID4gaW5wdXRbdHlwZT0idGV4dCJdIHsKICAgICAgICB3aWR0aDogY2FsYyggNTAlICsgMTE4cHggKSAhaW1wb3J0YW50OwogICAgICAgIG1hcmdpbi1sZWZ0OiBjYWxjKCAyNSUgLSA3NnB4ICk7CiAgICB9CgogICAgLlJvdyA+IGxhYmVsLAogICAgLlJpY2hUZXh0SG9sZGVyID4gbGFiZWwgewogICAgICAgIGxlZnQ6IGNhbGMoIC01MCUgLSAxMjZweCApOwogICAgfQoKfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewoKICAgICNvb29IZWFkZXIgewogICAgICAgIGhlaWdodDogMTQ1cHg7CiAgICB9CgogICAgLlJvd19EeW5hbWljRmllbGQgewogICAgICAgIHdpZHRoOiA2NiU7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDE3JTsKICAgICAgICBncmlkLXJvdy1nYXA6IDE2cHg7CiAgICAgICAgZ3JpZC1jb2x1bW4tZ2FwOiA0MHB4OwogICAgfQoKICAgIC5Sb3cgPiBkaXYuRmllbGQsCiAgICAuUm93ID4gZGl2LklucHV0RmllbGRfQ29udGFpbmVyLAogICAgLlJvdyA+IHNlbGVjdCwKICAgICNja2VfUmljaFRleHQsCiAgICAjUmljaFRleHQgewogICAgICAgIHdpZHRoOiA2NiUgIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tbGVmdDogMTclOwogICAgfQoKICAgIC5Sb3cgPiBpbnB1dFt0eXBlPSJ0ZXh0Il0gewogICAgICAgIHdpZHRoOiBjYWxjKCA2NiUgLSAzMnB4ICkgIWltcG9ydGFudDsKICAgICAgICBtYXJnaW4tbGVmdDogMTclOwogICAgfQoKICAgIC5Sb3cgPiBsYWJlbCwKICAgIC5SaWNoVGV4dEhvbGRlciA+IGxhYmVsIHsKICAgICAgICBsZWZ0OiBjYWxjKCAtNjYlICsgMjRweCApOwogICAgfQoKfQoKLlJvdyA+IHNlbGVjdCwKLlJvdyA+IGlucHV0W3R5cGU9InRleHQiXSB7CiAgICBib3JkZXItcmFkaXVzOiAxMHB4Owp9CgouUm93ID4gaW5wdXRbdHlwZT0idGV4dCJdLAppbnB1dC5EeW5hbWljRmllbGRUZXh0IHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtc2l6ZTogMTZweDsKICAgIGxpbmUtaGVpZ2h0OiAxLjI1OwogICAgbGV0dGVyLXNwYWNpbmc6IDAuNHB4OwogICAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLlJvdyA+IGlucHV0W3R5cGU9InRleHQiXSB7CiAgICBoZWlnaHQ6IDU2cHg7CiAgICBwYWRkaW5nOiAwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IDMycHg7Cn0KCiNvb29IZWFkZXIgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsKfQoKI29vb0N1c3RvbWVyTm90aWZpY2F0aW9ucyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwp9CgojQm90dG9tQWN0aW9uUm93IHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1hcmdpbi10b3A6IDgwcHg7Cn0KCi5vb29JVFNNQ29uZmlnSXRlbVNlYXJjaCA+IGRpdiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiBjYWxjKCAxMDAlIC0gODBweCApOwogICAgaGVpZ2h0OiBhdXRvOwogICAgbWFyZ2luLXRvcDogOHB4OwogICAgcGFkZGluZy10b3A6IDI0cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMjRweDsKICAgIHBhZGRpbmctbGVmdDogNDBweDsKICAgIHBhZGRpbmctcmlnaHQ6IDQwcHg7CiAgICBib3JkZXItcmFkaXVzOiAxNXB4OwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7CiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7Cn0K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Customer.ConfigItem.Zoom.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAwcHggMTZweCAyNHB4IDE2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweCAyMHB4IDBweCAwcHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMC42cHggc29saWQgI2U1ZTVlYjsKICAgICAgICBoZWlnaHQ6IDEyMXB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB9CgogICAgI29vb01haW5Cb3ggewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjk7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdMaWdodCk7CiAgICAgICAgbWluLWhlaWdodDogY2FsYyggMTAwdmggLSAyNjVweCApOwogICAgfQoKfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewogICAgCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBwYWRkaW5nLXRvcDogMjJweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjJweDsKICAgICAgICBoZWlnaHQ6IDEwMXB4OwogICAgICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvcmRlci1ib3R0b206IDEuMnB4IHNvbGlkICNlNWU1ZWI7CiAgICAgICAgei1pbmRleDogMTIwMDsKCi13ZWJraXQtdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgIC1tb3otdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgICAgLW8tdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgICB9Cgp9Cgojb29vSGVhZGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtaW5tYXgoNDhweCwgMWZyKSBhdXRvOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKI0NJSW5mb0JhciB7CiAgICBoZWlnaHQ6IDIycHg7CiAgICBtYXJnaW46IDI2cHggMCA1cHggMDsKfQoKI0NJSW5mb0JhciBwLAojQ0lJbmZvQmFyIGRpdiwKI0NJSW5mb0JhciBsYWJlbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXNpemU6IDEycHg7Cn0KCiNDSUluZm9CYXIgbGFiZWwgewogICAgcGFkZGluZzogMnB4IDA7Cn0KCiNDSUluZm9CYXIgcCB7CiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7CiAgICBwYWRkaW5nOiAycHggOHB4OwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKfQoKCi5ncmVlbmxlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzRjZGZhOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sTm90aWZ5T0spOwp9CgoueWVsbG93bGVkIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZjY2M7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xOb3RpZnlXYXJuKTsKfQoKLnJlZGxlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjliY2IyOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sTm90aWZ5RXJyKTsKfQoKI29vb0N1c3RvbWVyTm90aWZpY2F0aW9ucyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y5OwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdMaWdodCk7Cn0KCiNBY3Rpb25Sb3cgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG8gYXV0bzsKICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyNHB4Owp9CgojUGFnZVNlbGVjdGlvbiA+IHAgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgojUGFnZVNlbGVjdGlvbiA+IGEgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAxNnB4Owp9CgojUGFnZVNlbGVjdGlvbiBidXR0b24uUGFnZVNlbGVjdGlvbkJ1dHRvbiB7CiAgICB3aWR0aDogYXV0bzsKICAgIG1heC13aWR0aDogMjQwcHg7CiAgICBwYWRkaW5nOiAwcHggMTZweDsKICAgIGhlaWdodDogMzJweDsKfQoKI1BhZ2VTZWxlY3Rpb24gYnV0dG9uLlBhZ2VTZWxlY3Rpb25CdXR0b24uU2VsZWN0ZWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDA5OTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbE1haW5Ib3Zlcik7Cn0KCiNBdHRhY2htZW50Q29udGFpbmVyIHsKICAgIHBhZGRpbmctbGVmdDogMjRweDsKICAgIHBhZGRpbmctdG9wOiA3cHg7Cn0KCiNBdHRhY2htZW50cyA+IGkgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdG9wOiAxcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAycHg7Cn0KCiNBdHRhY2htZW50Qm94IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHotaW5kZXg6IDIwMDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgcGFkZGluZzogMTZweCAyNHB4OwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7CiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgIG1hcmdpbi10b3A6IDJweDsKfQoKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgewogICAgd2lkdGg6IDIyMHB4OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIHBhZGRpbmctbGVmdDogMjRweDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCiNWZXJzaW9uU2VsZWN0aW9uIHsKICAgIHdpZHRoOiAyMjBweDsKfQoKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgPiAuRmllbGQgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgaGVpZ2h0OiAzMnB4OwogICAgbWFyZ2luLXRvcDogLTFweDsKICAgIHdpZHRoOiAxMDAlOwp9CgojVmVyc2lvblNlbGVjdGlvbkNvbnRhaW5lciA+IGxhYmVsIHsKICAgIGxlZnQ6IGNhbGMoIC0xMDAlICsgMTZweCApOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgdG9wOiAxcHg7Cn0KCiNWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyID4gLkZpZWxkOmhvdmVyIH4gbGFiZWwsCiNWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyID4gLkZpZWxkLm9vb1NlbGVjdGVkIH4gbGFiZWwsCiNWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyID4gbGFiZWwub29vRm9jdXMgewogICAgZm9udC1zaXplOiAxMHB4OwogICAgdG9wOiAtMTdweDsKfQoKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgaW5wdXQgewogICAgYm9yZGVyOiBzb2xpZCAxcHggIzdmODA5ZDsKICAgIGJvcmRlcjogc29saWQgMXB4IHZhcigtLWNvbFRleHRMaWdodCk7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwp9CgojVmVyc2lvblNlbGVjdGlvbkNvbnRhaW5lciAuSW5wdXRGaWVsZF9TZWxlY3Rpb24gewogICAgdG9wOiAxcHg7CiAgICBwYWRkaW5nOiAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoKZGl2LklucHV0RmllbGRfTGlzdENvbnRhaW5lciB7CiAgICByaWdodDogNHB4OwogICAgbWF4LXdpZHRoOiBtYXgtY29udGVudDsKICAgIG1hcmdpbi10b3A6IC0yMHB4Owp9CgpkaXYuSW5wdXRGaWVsZF9UcmVlQ29udGFpbmVyIHsKICAgIG1hcmdpbi10b3A6IDE2cHggIWltcG9ydGFudDsKICAgIG1hcmdpbi1ib3R0b206IDE2cHggIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogbWF4LWNvbnRlbnQgIWltcG9ydGFudDsKICAgIG1heC1oZWlnaHQ6IG1heC1jb250ZW50ICFpbXBvcnRhbnQ7Cn0KCi5qc3RyZWUtYW5jaG9yIHsKICAgIG1hcmdpbjogOHB4IDBweCA4cHggMjRweCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1yaWdodDogMjRweDsKICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50Owp9CgouanN0cmVlLW5vZGUgewogICAgbWluLWhlaWdodDogMzJweDsKfQoKLmpzdHJlZS1ub2RlID4gLmpzdHJlZS13aG9sZXJvdyB7CiAgICBoZWlnaHQ6IDMycHggIWltcG9ydGFudDsKfQoKLm9vb0Nsb3NlIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKLm9vb0NvbnRlbnRHcmlkIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgZ3JpZC1yb3ctZ2FwOiAxNnB4OwogICAgZ3JpZC1jb2x1bW4tZ2FwOiAxNnB4Owp9Cgoub29vQ29udGVudENlbGwgewogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICBwYWRkaW5nOiAxNnB4IDI0cHg7Cn0KCi5vb29Db250ZW50Q2VsbCBoMiB7CiAgICBtYXJnaW4tYm90dG9tOiAxMnB4Owp9CgouRmllbGREaXNwbGF5Um93IHsKICAgIGRpc3BsYXk6IGdyaWQ7Cn0KCi5GaWVsZERpc3BsYXlSb3c6bm90KDpmaXJzdC1jaGlsZCkgewogICAgbWFyZ2luLXRvcDogMTJweDsKfQoKLkZpZWxkRGlzcGxheVJvdyBsYWJlbCwKLkZpZWxkRGlzcGxheVJvdyBwIHsKICAgIG1hcmdpbi10b3A6IDRweDsKfQoKLkZpZWxkRGlzcGxheVJvdyBwLAouRmllbGREaXNwbGF5Um93IGxhYmVsIHsKICAgIHBhZGRpbmctbGVmdDogOHB4OwogICAgcGFkZGluZy1yaWdodDogOHB4OwogICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKICAgIGxpbmUtaGVpZ2h0OiAxLjVlbTsKfQoKLm9vb0NvbnRlbnRHcmlkIGxhYmVsIHsKICAgIGNvbG9yOiAjOTI5MjkyOwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZBRkFGQTsKICAgIGZvbnQtc2l6ZTogMTRweDsKfQoKLkR5bmFtaWNGaWVsZFNldExhYmVsIHsKICAgIHBhZGRpbmctdG9wOiAxNnB4Owp9CgouU2V0RGlzcGxheVZhbHVlIHsKICAgIG1hcmdpbi10b3A6IDhweDsKICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgIG1hcmdpbi1sZWZ0OiAyNHB4OwogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogY2FsYyggNTAlIC0gMTJweCApIGNhbGMoIDUwJSArIDEycHggKTsKfQoKLlNldERpc3BsYXlWYWx1ZSBkaXYuQ2xlYXIgewogICAgZGlzcGxheTogbm9uZTsKfQoKLkR5bmFtaWNGaWVsZFJpY2hUZXh0TGluayB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouRHluYW1pY0ZpZWxkUmljaFRleHRDb250ZW50LkhpZGRlbiB7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLk92ZXJsYXlEeW5hbWljRmllbGRSaWNoVGV4dGlGcmFtZSB7CiAgICBoZWlnaHQ6IGF1dG87CiAgICBtYXgtaGVpZ2h0OiA1MDBweDsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA2NHB4KTsKICAgIHBhZGRpbmc6IDAgMzJweDsKfQo=</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Customer.ConfigItemList.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKCiAgICAub29vQ29uZmlnSXRlbUxpc3QgewogICAgICAgIHdpZHRoOiBjYWxjKCAxMDAlIC0gNDhweCApOwogICAgICAgIG1hcmdpbi10b3A6IDhweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogMjRweDsKICAgICAgICBwYWRkaW5nLXRvcDogMTZweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMTZweDsKCiAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDQsIDAsIDcxLCAwLjE2KTsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogICAgfQoKICAgIC5vb29Db25maWdJdGVtTGlzdFNjcm9sbENvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZy10b3A6IDE2cHg7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDhweDsKICAgICAgICBvdmVyZmxvdzogYXV0bzsKICAgIH0KfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewoKICAgIC5vb29Db25maWdJdGVtTGlzdCB7CiAgICAgICAgd2lkdGg6IGNhbGMoIDEwMCUgLSA4MHB4ICk7CiAgICAgICAgbWFyZ2luLXRvcDogMTZweDsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDU2cHg7CiAgICAgICAgcGFkZGluZy1yaWdodDogNTZweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjRweDsKCiAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCByZ2JhKDQsIDAsIDcxLCAwLjE2KTsKICAgICAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOwogICAgfQoKICAgIC5vb29Db25maWdJdGVtTGlzdFNjcm9sbENvbnRhaW5lciB7CiAgICAgICAgcGFkZGluZy10b3A6IDMycHg7CiAgICAgICAgcGFkZGluZy1ib3R0b206IDE2cHg7CiAgICAgICAgb3ZlcmZsb3c6IGF1dG87CiAgICB9Cn0KCi5vb29Db25maWdJdGVtTGlzdCBoMywKLm9vb0NvbmZpZ0l0ZW1MaXN0IHAgewogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKfQoKLm9vb0lUU01Db25maWdJdGVtTGlzdEl0ZW06Zmlyc3QtY2hpbGQgewogICAgbWFyZ2luLXRvcDogOHB4Owp9Cg==</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Customer.ConfigItemOverview.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAwcHggMTZweCAyNHB4IDE2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweCAyMHB4IDBweCAwcHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMC42cHggc29saWQgI2U1ZTVlYjsKICAgICAgICBoZWlnaHQ6IDEyMXB4OwoKICAgICAgICAvKiB0ZXh0IC8gdGlja2V0IHNlYXJjaCAqLwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogY2FsYyggMTAwJSAtIDMycHgpOwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogNjRweCA1N3B4IDBweDsKICAgICAgICBhbGlnbi1pdGVtczogZW5kOwoKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQoKCSNvb29IZWFkZXJCdXR0b24gc3BhbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAjb29vSGVhZGVyQnV0dG9uID4gYnV0dG9uIHsKICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgYm90dG9tOiAzMnB4OwogICAgICAgIHJpZ2h0OiAxNnB4OwogICAgICAgIHdpZHRoOiA0OHB4OwogICAgICAgIHotaW5kZXg6IDYwMDsKICAgICAgICBib3gtc2hhZG93OiAwIDEycHggMTZweCAwIHJnYmEoMCwgMjcsIDI1NSwgMC4yNCk7CiAgICAgICAgYm94LXNoYWRvdzogMCAxMnB4IDE2cHggMCB2YXIoLS1jb2xTaGFkb3dNYWluKTsKCX0KCgkjb29vSGVhZGVyIGkgewogICAgICAgIGZvbnQtc2l6ZTogMjBweDsKICAgIAlwYWRkaW5nLWJvdHRvbTogMnB4OwoJfQoKICAgICNvb29TZWFyY2hCb3ggaS5vb29mby1zZWFyY2ggewogICAgICAgIHRvcDogMTUycHg7CiAgICAgICAgbGVmdDogMjZweDsKICAgIH0KCiAgICAjb29vTWFpbkJveCB7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmOTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xCR0xpZ2h0KTsKICAgICAgICBtaW4taGVpZ2h0OiBjYWxjKCAxMDB2aCAtIDI2NXB4ICk7CiAgICB9CgogICAgI29vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlciB7CiAgICAgICAgbWFyZ2luLWxlZnQ6IDE2cHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNnB4OwogICAgICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICAvKiBzZWFyY2g/IC8gYWxsIC8gb3BlbiAvIGNsb3NlZCAvLyBwYWdlPyAqLwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBhdXRvIDFmcjsKICAgICAgICBncmlkLXRlbXBsYXRlLXJvd3M6IGF1dG8gYXV0bzsKICAgICAgICBncmlkLWNvbHVtbi1nYXA6IDI0cHg7CiAgICAgICAgZ3JpZC1yb3ctZ2FwOiA4cHg7CiAgICB9CgogICAgI29vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlciA+IGRpdiB7CiAgICAgICAgZ3JpZC1yb3ctc3RhcnQ6IDI7CiAgICAgICAgZ3JpZC1yb3ctZW5kOiAzOwogICAgICAgIGdyaWQtY29sdW1uLXN0YXJ0OiAzOwogICAgICAgIGdyaWQtY29sdW1uLWVuZDogNDsKICAgIH0KCn0KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY4cHgpIHsKICAgIAogICAgI29vb0hlYWRlciB7CiAgICAgICAgaGVpZ2h0OiAxNDVweDsKICAgICAgICBwb3NpdGlvbjogc3RpY2t5OwogICAgICAgIHRvcDogMDsKICAgICAgICBib3JkZXItYm90dG9tOiAxLjJweCBzb2xpZCAjZTVlNWViOwoKICAgICAgICAvKiB0ZXh0IC8gdGlja2V0IHNlYXJjaCAvIG5ldyB0aWNrZXQgYnV0dG9uICovCiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgYXV0byBhdXRvOwogICAgICAgIGdyaWQtdGVtcGxhdGUtcm93czogMTAwJTsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgfQoKICAgICNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgewogICAgICAgIG1hcmdpbi1sZWZ0OiAzMnB4OwogICAgICAgIG1hcmdpbi1yaWdodDogMzJweDsKICAgICAgICBtYXJnaW4tdG9wOiAyNHB4OwogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgLyogc2VhcmNoPyAvIGFsbCAvIG9wZW4gLyBjbG9zZWQgLyBwYWdlPyAqLwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBhdXRvIGF1dG8gYXV0byAxZnI7CiAgICAgICAgZ3JpZC1jb2x1bW4tZ2FwOiA0MHB4OwogICAgfQoKICAgICNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgPiBkaXYgewogICAgICAgIGdyaWQtY29sdW1uLXN0YXJ0OiA1OwogICAgICAgIGdyaWQtY29sdW1uLWVuZDogNjsKICAgIH0KCgkjb29vSGVhZGVyQnV0dG9uIGkgewogICAgCXBhZGRpbmctcmlnaHQ6IDhweDsKCX0KCgkjb29vSGVhZGVyIGkgewogICAgCXBhZGRpbmctYm90dG9tOiAzcHg7Cgl9Cgp9Cgojb29vSGVhZGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7CgogICAgZGlzcGxheTogZ3JpZDsKfQoKI29vb0hlYWRlciBpIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCiNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgPiAub29vbCB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0Owp9Cgojb29vSVRTTUNvbmZpZ0l0ZW1MaXN0SGVhZGVyID4gLm9vb3IgewogICAgdGV4dC1hbGlnbjogcmlnaHQ7Cn0KCiNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgPiBkaXYgPiBwIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIHBhZGRpbmctcmlnaHQ6IDRweDsKfQoKI29vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlciA+IGRpdiA+IGEgewogICAgcGFkZGluZy1sZWZ0OiA0cHg7Cn0KCiNvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIgLlNlbGVjdGVkIHsKICAgIGNvbG9yOiAjMDAwMjNjOwogICAgY29sb3I6IHZhcigtLWNvbFRleHREYXJrKTsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7Cn0KCiNvb29JVFNNQ29uZmlnSXRlbUZpbHRlckRlbGV0ZSA+IGEgewogICAgZmxvYXQ6IHJpZ2h0Owp9Cgojb29vSVRTTUNvbmZpZ0l0ZW1GaWx0ZXJEZWxldGUgPiBhID4gaS5vb29mbyB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0b3A6IDJweDsKICAgIG1hcmdpbi1sZWZ0OiA0cHg7Cn0KCiNvb29DdXN0b21lck5vdGlmaWNhdGlvbnMgewogICAgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmOTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbEJHTGlnaHQpOwp9CgovKiBJRSAqLwpAbWVkaWEgYWxsIGFuZCAoLW1zLWhpZ2gtY29udHJhc3Q6IG5vbmUpLCAoLW1zLWhpZ2gtY29udHJhc3Q6IGFjdGl2ZSkgewoKICAgICNvb29IZWFkZXIgewogICAgICAgIGRpc3BsYXk6IC1tcy1ncmlkOwogICAgICAgIC8qIHRleHQgLyB0aWNrZXQgc2VhcmNoICovCiAgICAgICAgLW1zLWdyaWQtY29sdW1uczogMWZyIGF1dG8gYXV0bzsKICAgICAgICAtbXMtZ3JpZC1yb3dzOiAxMDAlOwogICAgfQoKICAgICNvb29IZWFkZXIgPiBoMSB7CiAgICAgICAgLW1zLWdyaWQtY29sdW1uOiAxOwogICAgICAgIC1tcy1ncmlkLXJvdy1hbGlnbjogY2VudGVyOwogICAgfQoKICAgICNvb29TZWFyY2hCb3ggewogICAgICAgIC1tcy1ncmlkLWNvbHVtbjogMjsKICAgICAgICAtbXMtZ3JpZC1yb3ctYWxpZ246IGNlbnRlcjsKICAgIH0KCiAgICAjb29vSGVhZGVyID4gYSB7CiAgICAgICAgLW1zLWdyaWQtY29sdW1uOiAzOwogICAgICAgIC1tcy1ncmlkLXJvdy1hbGlnbjogY2VudGVyOwogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQoKICAgIEBzdXBwb3J0cyAoZGlzcGxheTogZ3JpZCkgewogICAgICAgICNvb29IZWFkZXIgewogICAgICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIH0KICAgIH0KCn0K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/css/ITSM.Table.css" Permission="660" Encode="Base64">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIFRhYmxlcwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgovKioKICogQHN1YnNlY3Rpb24gIEdlbmVyYWwgc3R1ZmYKICovCgovKgogKiBGRjMuNiBoYXMgYSBwcm9ibGVtIHdpdGggc2V0dGluZyB0aGUgcG9zaXRpb246cmVsYXRpdmUgb25seSBvbiA6aG92ZXIgc3RhdGUuCiAqIEFzIGEgd29ya2Fyb3VuZCBpdCBpcyBzZXQgYWx3YXlzIGFuZCBhIHNwZWNpYWwgei1pbmRleCBvbiBob3Zlci4KICovCi5UYWJsZVNtYWxsIHRib2R5IHRyIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLlRhYmxlU21hbGwgdGJvZHkgdHI6aG92ZXIgewogICAgei1pbmRleDogMTA7Cn0KCi5UYWJsZVNtYWxsIHsKICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwp9CgovKioKICogQHN1YnNlY3Rpb24gIEdlbmVyaWMgdGFibGUgZWxlbWVudHMKICovCi5UYWJsZVNtYWxsIHRkLAouVGFibGVTbWFsbCB0aCB7CiAgICBsaW5lLWhlaWdodDogMTVweDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICB3b3JkLWJyZWFrOiBrZWVwLWFsbDsKfQoKLlRhYmxlU21hbGwgdHI6aG92ZXIgewogICAgY29sb3I6ICMwMDAyM2M7Cn0KCnRhYmxlIHRyLk1hc3RlckFjdGlvbiB7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIC5Tb3J0RGVzY2VuZGluZyA+IGE6YWZ0ZXIgewogICAgY29udGVudDogIlwyNUJDIjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgbGVmdDogMnB4OwogICAgdG9wOiAzcHg7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIC5Tb3J0QXNjZW5kaW5nID4gYTphZnRlciB7CiAgICBjb250ZW50OiAiXDI1QjIiOwogICAgZGlzcGxheTogYmxvY2s7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBsZWZ0OiAycHg7CiAgICB0b3A6IDNweDsKfQoKLyoqCiAqIEBzdWJzZWN0aW9uICBRdWV1ZU92ZXJ2aWV3VG90YWxzIERhdGFUYWJsZQogKi8KCi5Sb3cgdGQuUXVldWVPdmVydmlld1RvdGFscywKLlJvdyBhLlF1ZXVlT3ZlcnZpZXdUb3RhbHMgewogICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAgT3ZlcnZpZXcgU21hbGwgVmlldyBUYWJsZQogKi8KLlRhYmxlU21hbGwgewogICAgd2lkdGg6IDEwMCU7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICBjb2xvcjogIzAwMDIzYzsKfQoKLlRhYmxlU21hbGwgLkNoZWNrYm94IHsKICAgIG1hcmdpbi1sZWZ0OiA3cHg7Cn0KCi5TdGF0aWNDb2x1bW4gewogICAgcG9zaXRpb246IHN0aWNreTsKICAgIGxlZnQ6IDA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKfQoKdGguQ2hlY2tib3gsCnRkLkNoZWNrYm94IHsKICAgIHdpZHRoOiAzMHB4Owp9Cgp0aC5GbGFncyB7CiAgICB3aWR0aDogMzRweDsKfQoKdGQuRmxhZ3MgewogICAgd2lkdGg6IDI5cHg7Cn0KCnRoLkRpcmVjdGlvbiwKdGQuRGlyZWN0aW9uIHsKICAgIHdpZHRoOiAzMHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9Cgp0aC5BdHRhY2htZW50LAp0ZC5BdHRhY2htZW50IHsKICAgIHdpZHRoOiA0MHB4OwogICAgcGFkZGluZy1sZWZ0OiA1cHggIWltcG9ydGFudDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGggewogICAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGggYSwKLlRhYmxlU21hbGwgdGhlYWQgdGggc3BhbiB7CiAgICBwYWRkaW5nLXRvcDogMnB4OwogICAgcGFkZGluZy1ib3R0b206IDJweDsKfQoKLlJUTCAuVGFibGVTbWFsbCB0aGVhZCB0aCB7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IGJvdHRvbTsKfQoKLlRhYmxlU21hbGwgdGhlYWQgYSwKLlRhYmxlU21hbGwgdGhlYWQgc3BhbiB7CiAgICBtYXJnaW46IDAgMnB4IDFweCAxcHg7CiAgICBwYWRkaW5nOiAwIDEwcHg7CiAgICBjb2xvcjogIzRBNEE0QTsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxNXB4OwogICAgaGVpZ2h0OiAxNXB4OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLlJUTCAuVGFibGVTbWFsbCB0aGVhZCBhLAouUlRMIC5UYWJsZVNtYWxsIHRoZWFkIHNwYW4gewogICAgbWFyZ2luOiAwIDFweCAxcHggMnB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCBzcGFuIHsKICAgIGNvbG9yOiAjMDAwMjNjOwp9Cgp0aGVhZCAuU29ydEFzY2VuZGluZyBhLAp0aGVhZCAuaGVhZGVyU29ydFVwIGEsCnRoZWFkIC5Tb3J0RGVzY2VuZGluZyBhLAp0aGVhZCAuaGVhZGVyU29ydERvd24gYSB7CiAgICBjb2xvcjogIzAwMDIzYzsKfQoKLlRhYmxlU21hbGwgdGhlYWQgYSBzcGFuIHsKICAgIGhlaWdodDogMTVweDsKICAgIHdpZHRoOiAxNnB4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIGEgc3Bhbi5GbGFnIHsKICAgIGhlaWdodDogOXB4OwogICAgd2lkdGg6IDE2cHg7CiAgICBtYXJnaW4tdG9wOiA2cHg7Cn0KCi5UYWJsZVNtYWxsIHRkIHsKICAgIHBhZGRpbmc6IDE2cHggMTBweCAwcHggMHB4Owp9CgouVGFibGVTbWFsbCB0ZC5Ob25UZXh0Q29udGVudCB7CiAgICBwYWRkaW5nLWxlZnQ6IDA7CiAgICBwYWRkaW5nLXJpZ2h0OiAwOwp9CgouVGFibGVTbWFsbCB0Ym9keSB0ci5BY3RpdmUgdGQgewogICAgY29sb3I6ICMwMDAyM2M7Cn0KCi5UYWJsZVNtYWxsIHRkIGEgewogICAgY29sb3I6ICMwMDAyM2M7Cn0KCi5UYWJsZVNtYWxsIHRyOmhvdmVyIHRkIGEsCi5UYWJsZVNtYWxsIHRyLkFjdGl2ZSB0ZCBhIHsKICAgIGNvbG9yOiAjMDAwMjNjOwp9CgouVGFibGVTbWFsbCB0ZCBhLkR5bmFtaWNGaWVsZExpbmsgewogICAgY29sb3I6ICNGRjc3MjI7Cn0KCi5UYWJsZVNtYWxsIHRyOmhvdmVyIHRkIGEuRHluYW1pY0ZpZWxkTGluaywKLlRhYmxlU21hbGwgdHIuQWN0aXZlIHRkIGEuRHluYW1pY0ZpZWxkTGluayB7CiAgICBjb2xvcjogI0ZGRkZGRjsKfQoKLlRhYmxlU21hbGwgdGJvZHkgLkZsYWdzIHsKICAgIGxpbmUtaGVpZ2h0OiAxMXB4OwogICAgcGFkZGluZy10b3A6IDJweDsKICAgIHBhZGRpbmctbGVmdDogNXB4Owp9CgouVGFibGVTbWFsbCB0Ym9keSB0ZCBzcGFuLkRpcmVjdGlvbiB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIHdpZHRoOiAzMHB4Owp9CgouVGFibGVTbWFsbCB0Ym9keSB0ZCBzcGFuLkRpcmVjdGlvbiBpIHsKICAgIGNvbG9yOiAjNTU1Owp9CgovKiBUT0RPIGNoYW5nZSBpY29uIGNsYXNzZXMgKi8KLlRhYmxlU21hbGwgdGJvZHkgdGQgc3Bhbi5EaXJlY3Rpb24uSW5jb21pbmcgLmZhLWxvbmctYXJyb3ctbGVmdCwKLlRhYmxlU21hbGwgdGJvZHkgdGQgc3Bhbi5EaXJlY3Rpb24uT3V0Z29pbmcgLmZhLWxvbmctYXJyb3ctcmlnaHQgewogICAgY29sb3I6ICMwMDAyM2M7CiAgICBmb250LXNpemU6IDE0cHg7Cn0KCi5UYWJsZVNtYWxsIHRib2R5IHRkLkF0dGFjaG1lbnQgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgouVGFibGVTbWFsbCB0Ym9keSB0ZCBhLkF0dGFjaG1lbnQgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZm9udC1zaXplOiAxNnB4OwogICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLlRhYmxlU21hbGwgdGJvZHkgdGQgYS5BdHRhY2htZW50IGkgewogICAgY29sb3I6ICMwMDAyM2M7Cn0KCi5UYWJsZVNtYWxsIHRkIGgyIHsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAgVGFibGUgQ29udGV4dCBTZXR0aW5ncwogKi8KLlRhYmxlQ29udGV4dFNldHRpbmdzIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwOwogICAgdG9wOiAyOHB4Owp9CgouVGFibGVDb250ZXh0U2V0dGluZ3MgYSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxOHB4OwogICAgaGVpZ2h0OiAxOXB4OwogICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9jb250ZXh0c2V0dGluZ3MucG5nKSBuby1yZXBlYXQgNXB4IDRweDsKICAgIHRleHQtaW5kZW50OiAtOTk5OXB4Owp9CgovKioKICogQHN1YnNlY3Rpb24gIEhhbmRsZSBmb3IgcmVzaXppbmcgdGFibGVzCiAqLwouSGFuZGxlIHsKICAgIHdpZHRoOiAxMDAlOwp9CgouSGFuZGxlIGEgewogICAgZGlzcGxheTogYmxvY2s7CiAgICBtYXJnaW46IGF1dG87CiAgICBoZWlnaHQ6IDE0cHg7CiAgICB3aWR0aDogNzlweDsKICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50IHVybCguLi9pbWcvaGFuZGxlLnBuZykgbm8tcmVwZWF0OwogICAgdGV4dC1pbmRlbnQ6IC05OTk5cHg7CiAgICBjdXJzb3I6IG5zLXJlc2l6ZTsKfQoKLkhhbmRsZS51aS1yZXNpemFibGUtcyB7CiAgICBjdXJzb3I6YXV0bzsKICAgIGhlaWdodDphdXRvICFpbXBvcnRhbnQ7CiAgICBsZWZ0OmF1dG87Cn0KCi5IYW5kbGUudWktcmVzaXphYmxlLWhhbmRsZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogaW5oZXJpdDsKICAgIHotaW5kZXg6IDE5Owp9CgovKioKICogQHN1YnNlY3Rpb24gIFRhYmxlIGhlYWRlcnMtZmlsdGVycwogKi8KIC5UYWJsZVNtYWxsIHRoZWFkIHNwYW4uR3JheSB7CiAgICBjb2xvcjogIzQ0NDsKfQoKLkNvbHVtbkZpbHRlciArIC5BSkFYTG9hZGVyIHsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbjogM3B4IDBweCAwcHggMnB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogOTk7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCnNlbGVjdC5Db2x1bW5GaWx0ZXIgewogICAgd2lkdGg6IDEwMHB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCAuU29ydEFzY2VuZGluZ0xhcmdlIGEsCi5UYWJsZVNtYWxsIHRoZWFkIC5Tb3J0RGVzY2VuZGluZ0xhcmdlIGEgewogICAgY29sb3I6ICMwMDAyM2M7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKfQoKLlRhYmxlU21hbGwgdGhlYWQgLlNvcnREZXNjZW5kaW5nTGFyZ2UgPiBhOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICJcMjVCQyI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMDsKICAgIG1hcmdpbi1sZWZ0OiA0cHg7CiAgICB0ZXh0LXNoYWRvdzogMXB4IDFweCAwcHggI2ZmZjsKICAgIHotaW5kZXg6IDE7Cn0KCnRoZWFkIC5oZWFkZXJTb3J0VXAgPiBhOmJlZm9yZSwKdGhlYWQgLnRhYmxlc29ydGVyLWhlYWRlckRlc2MgPiBkaXYudGFibGVzb3J0ZXItaGVhZGVyLWlubmVyID4gYTpiZWZvcmUgewogICAgY29udGVudDogIlwyNUJDIjsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIG1hcmdpbi1yaWdodDogMnB4Owp9Cgp0aGVhZCAuaGVhZGVyU29ydERvd24gPiBhOmJlZm9yZSwKdGhlYWQgLnRhYmxlc29ydGVyLWhlYWRlckFzYyA+IGRpdi50YWJsZXNvcnRlci1oZWFkZXItaW5uZXIgPiBhOmJlZm9yZSB7CiAgICBjb250ZW50OiAiXDI1QjIiOwogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAycHg7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIC5Tb3J0QXNjZW5kaW5nTGFyZ2UgPiBhOmFmdGVyIHsKICAgIGNvbnRlbnQ6ICJcMjVCMiI7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICB3aWR0aDogMDsKICAgIG1hcmdpbi1sZWZ0OiA0cHg7CiAgICB0ZXh0LXNoYWRvdzogMXB4IDFweCAwcHggI2ZmZjsKICAgIHotaW5kZXg6IDE7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIGEsCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIHNwYW4uR3JheSB7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBsaW5lLWhlaWdodDogMTZweDsKICAgIHBhZGRpbmctbGVmdDogMHB4OwogICAgbWFyZ2luLWxlZnQ6IDBweDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlciB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHdpZHRoOiAxN3B4OwogICAgaGVpZ2h0OiAxN3B4OwogICAgZmxvYXQ6IHJpZ2h0OwogICAgb3BhY2l0eTogMC41OwogICAgcGFkZGluZzogMHB4OwogICAgbWFyZ2luOiAwcHggLThweCA0cHggMHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgei1pbmRleDogMjsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlciBpIHsKICAgIGNvbG9yOiAjNzc3Nzc3OwogICAgbWFyZ2luLWxlZnQ6IDNweDsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc1RyaWdnZXIgewogICAgbWFyZ2luOiAwcHggLThweCA0cHggMHB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCB0aC5PdmVydmlld0hlYWRlci5GaWx0ZXJBY3RpdmUgLkNvbHVtblNldHRpbmdzVHJpZ2dlciwKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlcjpob3ZlciwKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlci5BY3RpdmUgewogICAgb3BhY2l0eTogMS4wOwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7CiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIuRmlsdGVyQWN0aXZlIC5Db2x1bW5TZXR0aW5nc1RyaWdnZXIgaSwKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzVHJpZ2dlci5BY3RpdmUgaSB7CgogICAgY29sb3I6ICMzMzMzMzM7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc1RyaWdnZXI6YWZ0ZXIgewogICAgY29udGVudDogIiI7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc0NvbnRhaW5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc0JveCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwogICAgYm9yZGVyOiAxcHggc29saWQgI0JCQkJCQjsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIGJveC1zaGFkb3c6IDAgMXB4IDRweCAwIHJnYmEoNCwgMCwgNzEsIDAuMTYpOwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgdmFyKC0tY29sU2hhZG93RGFyayk7CiAgICBkaXNwbGF5OiBub25lOwogICAgcGFkZGluZzogNHB4IDhweDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHJpZ2h0OiAwcHg7CiAgICB0b3A6IDJweDsKICAgIHdpZHRoOiAxODBweDsKICAgIHotaW5kZXg6IDEwMDsKfQoKLk1haW5Cb3guRGFzaGJvYXJkIC5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc0JveCB7CiAgICB0b3A6IC0xMHB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCB0aC5PdmVydmlld0hlYWRlciAuQ29sdW1uU2V0dGluZ3NCb3ggc2VsZWN0IHsKICAgIG1hcmdpbi10b3A6IDBweDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzQm94IHNwYW4uU2VsZWN0ZWRWYWx1ZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwogICAgbWFyZ2luLWJvdHRvbTogOHB4OwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgcGFkZGluZzogNHB4OwogICAgYm9yZGVyOiAxcHggc29saWQgI2NjYzsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzQm94IHNwYW4uU2VsZWN0ZWRWYWx1ZSBzcGFuIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzQm94IHNwYW4uU2VsZWN0ZWRWYWx1ZSBhIHsKICAgIGJhY2tncm91bmQ6ICNBQUFBQUE7CiAgICBib3JkZXItcmFkaXVzOiAxNHB4OwogICAgY29sb3I6ICNGRkZGRkY7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGhlaWdodDogMTVweDsKICAgIGxpbmUtaGVpZ2h0OiAxM3B4OwogICAgbGVmdDogMDsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICB0b3A6IC0xcHg7CiAgICB3aWR0aDogMTBweDsKICAgIHBhZGRpbmc6IDBweCAwcHggMHB4IDVweDsKfQoKLlRhYmxlU21hbGwgdGhlYWQgdGguT3ZlcnZpZXdIZWFkZXIgLkNvbHVtblNldHRpbmdzQm94IGEuRGVsZXRlRmlsdGVyIHsKICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgIGZvbnQtc2l6ZTogMTRweDsKICAgIGxpbmUtaGVpZ2h0OiAxMnB4Owp9CgouVGFibGVTbWFsbCB0aGVhZCB0aC5PdmVydmlld0hlYWRlciAuQ29sdW1uU2V0dGluZ3NCb3ggYS5EZWxldGVGaWx0ZXIuSGlkZGVuIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIC5Db2x1bW5TZXR0aW5nc0JveCBzcGFuLlNlbGVjdGVkVmFsdWUgYTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiAjODg4Owp9CgouVGFibGVTbWFsbCB0aGVhZCB0aC5PdmVydmlld0hlYWRlciAuQ29sdW1uU2V0dGluZ3NCb3ggaW5wdXRbdHlwZT0idGV4dCJdIHsKICAgIHdpZHRoOiAxMDBweDsKfQoKCi5UYWJsZVNtYWxsIHRoZWFkIHRoLk92ZXJ2aWV3SGVhZGVyIHsKICAgIHBhZGRpbmc6IDBweCAyMHB4IDBweCAxcHg7Cn0KCi5UYWJsZVNtYWxsIC5Db2x1bW5GaWx0ZXIgewogICAgZm9udC1zaXplOiAxMnB4OwogICAgZmxvYXQ6IGxlZnQ7Cn0KCi8qIERlbGV0ZSBmaWx0ZXJzICovCi5Db250ZXh0U2V0dGluZ3MuUmVtb3ZlRmlsdGVycyBhIHsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouQ29udGV4dFNldHRpbmdzLlJlbW92ZUZpbHRlcnMgYSBpIHsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDE0cHg7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwp9CgovKioKICogQHN1YnNlY3Rpb24gIFBhY2thZ2UgbWFuYWdlcgogKi8KCnAuSW50cm9JbnN0YWxsIHsKICAgIHdpZHRoOiA3MCU7CiAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7CiAgICBtYXJnaW4tYm90dG9tOiA3cHg7Cn0KCi5PVE9CT1ZlcmlmeUxvZ29CaWcgewogICAgZmxvYXQ6IHJpZ2h0OwogICAgbWFyZ2luLXRvcDogMTBweDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICBtYXJnaW4tcmlnaHQ6IDQwcHg7CiAgICBtYXJnaW4tbGVmdDogMTBweDsKICAgIHdpZHRoOiAyMDBweDsKICAgIGhlaWdodDogNDVweDsKfQoKLk9UT0JPVmVyaWZ5TG9nbyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGZsb2F0OiByaWdodDsKICAgIG1hcmdpbjogM3B4IDBweCAwcHggM3B4OwogICAgd2lkdGg6IDc2cHg7CiAgICBoZWlnaHQ6IDE2cHg7Cn0KCi8qKgogKiBAc3Vic2VjdGlvbiAgSWNvbnMgaW4gdGFibGVzCiAqLwoKdGQgaSwKdGQgYSBpIHsKICAgIGNvbG9yOiAjOTk5OwogICAgbWFyZ2luLXJpZ2h0OiAzcHg7Cn0KCnRyOmhvdmVyIHRkIGksCnRyOmhvdmVyIHRkIGEgaSwKdGQgYTpob3ZlciBpIHsKICAgIGNvbG9yOiAjMDAwMjNjOwp9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K</File>
        <File Location="var/httpd/htdocs/skins/Customer/default/img/devices_black_24dp.svg" Permission="660" Encode="Base64">PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTQgN2MwLS41NS40NS0xIDEtMWgxNmMuNTUgMCAxLS40NSAxLTFzLS40NS0xLTEtMUg0Yy0xLjEgMC0yIC45LTIgMnYxMWgtLjVjLS44MyAwLTEuNS42Ny0xLjUgMS41Uy42NyAyMCAxLjUgMjBIMTR2LTNINFY3em0xOSAxaC02Yy0uNTUgMC0xIC40NS0xIDF2MTBjMCAuNTUuNDUgMSAxIDFoNmMuNTUgMCAxLS40NSAxLTFWOWMwLS41NS0uNDUtMS0xLTF6bS0xIDloLTR2LTdoNHY3eiIvPjwvc3ZnPg==</File>
        <File Location="var/itsm/configitemclasses/IT-Servicemanagement-11_0_3.yml" Permission="660" Encode="Base64">LS0tCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IEFwcGxpYW5jZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsCiAgICBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG4KICAgIFwgLSBOYW1lOiBOZXR3b3JrIEluZm9cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTQogICAgTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4KICAgIFwgLSBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IExvY2F0ZWQgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIEFwcGxpYW5jZVxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbgogICAgXCBJVFNNIE5ldHdvcmsgSW5mbzpcclxuICAgIE5hbWU6IElUU00gTmV0d29yayBJbmZvXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZToKICAgIElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIENNREIgQWNjb3VudGluZzpcclxuCiAgICBcICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlcnN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQXBwbGlhbmNlLUFwcGxpYW5jZVR5cGU6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIENvbnRhaW5lciBNYW5hZ2VtZW50OiBDb250YWluZXIgTWFuYWdlbWVudAogICAgICAgICAgRE5TLVNlcnZlcjogRE5TLVNlcnZlcgogICAgICAgICAgRmlyZXdhbGw6IEZpcmV3YWxsCiAgICAgICAgICBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSk6IElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKQogICAgICAgICAgT1RPQk86IE9UT0JPCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBob25lIC8gVm9JUDogUGhvbmUgLyBWb0lQCiAgICAgICAgICBWUE46IFZQTgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEFwcGxpYW5jZSBUeXBlCiAgICAgIE5hbWU6IElUU01BcHBsaWFuY2UtQXBwbGlhbmNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbzoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBJUHY0OiBJUHY0CiAgICAgICAgICAgICAgICBJUHY2OiBJUHY2CiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogSVAgUHJvdG9jb2wKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBJUCBOZXR3b3JrCiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogUmVsZXZhbnRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBJUCBOZXR3b3JrCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgREhDUDogREhDUAogICAgICAgICAgICAgICAgREhDUCBSZXNlcnZlZDogREhDUCBSZXNlcnZlZAogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTdGF0aWM6IFN0YXRpYwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFkZHJlc3MgQWxsb2NhdGlvbgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IElQIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1BQyBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgICAgLSBTd2l0Y2gKICAgICAgICAgICAgICAtIFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgT2JqZWN0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgb2JqZWN0IHBvcnQKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSG9zdG5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogRlFETgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENOQU1FL0FsaWFzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBQcmltYXJ5CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFjdGl2ZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBJbmZvcm1hdGlvbgogICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm8KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gTG9jYXRpb24KICAgIE5hbWU6IEJ1aWxkaW5nCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOgogICAgU3Vic2lkaWFyeVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgQWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCCiAgICBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuXHJcblJvbGVzOlxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZQogICAgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkCiAgICBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIgogICAgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb25cclxuICAgIFxyXG5TZWN0aW9uczpcclxuICBTdWJzaWRpYXJ5OlxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIEhlYWRlcjogU3Vic2lkaWFyeVxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb1N1YnNpZGlhcnlcclxuCiAgICBcIEFkZHJlc3M6XHJcbiAgICBUeXBlOiBSZWZlcmVuY2VkU2VjdGlvblxyXG4gICAgUmVmZXJlbmNlRmllbGQ6IExvY2F0aW9uLVJlZmVyZW5jZVRvU3Vic2lkaWFyeVxyXG4KICAgIFwgICBTZWN0aW9uTmFtZTogQWRkcmVzc1xyXG4gICAgRmllbGRMaXN0UHJlOlxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb1N1YnNpZGlhcnkiCiAgRHluYW1pY0ZpZWxkczoKICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvU3Vic2lkaWFyeToKICAgICAgQ0lDbGFzczogQnVpbGRpbmcKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogMAogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFN1YnNpZGlhcnkKICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9TdWJzaWRpYXJ5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gQ29udHJhY3QKICAgIE5hbWU6IENlcnRpZmljYXRlCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1TcGFuOgogICAgMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsCiAgICBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MKICAgIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbAogICAgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTSBHRiBDZXJ0aWZpY2F0ZVxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQgogICAgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIElUU01DZXJ0aWZpY2F0ZS1DcmVhdGlvbkRhdGU6CiAgICAgIENJQ2xhc3M6IENlcnRpZmljYXRlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAwCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcwJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IENyZWF0aW9uIERhdGUKICAgICAgTmFtZTogSVRTTUNlcnRpZmljYXRlLUNyZWF0aW9uRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNlcnRpZmljYXRlLUV4cGlyeURhdGU6CiAgICAgIENJQ2xhc3M6IENlcnRpZmljYXRlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAwCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IEV4cGlyeSBEYXRlCiAgICAgIE5hbWU6IElUU01DZXJ0aWZpY2F0ZS1FeHBpcnlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQ2VydGlmaWNhdGUtVHlwZToKICAgICAgQ0lDbGFzczogQ2VydGlmaWNhdGUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBDbGllbnQgQ2VydGlmaWNhdGVzOiBDbGllbnQgQ2VydGlmaWNhdGVzCiAgICAgICAgICBDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzOiBDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzCiAgICAgICAgICBEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlczogRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMKICAgICAgICAgIEVtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyk6IEVtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcykKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU1NML1RMUyBDZXJ0aWZpY2F0ZXM6IFNTTC9UTFMgQ2VydGlmaWNhdGVzCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNQ2VydGlmaWNhdGUtVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogQ2xpZW50CiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwKICAgIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZyBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQKICAgIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIFJvd1NwYW46CiAgICAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG4gIC0gTmFtZTogSGFyZHdhcmVcclxuCiAgICBcICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gR3JhcGhpY3MgQ2FyZDo6R3JhcGhpY3MgQ2FyZFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZTo6U3RvcmFnZVxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZQogICAgUGFydGl0aW9uOjpTdG9yYWdlIFBhcnRpdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuXHJcbgogICAgXCAtIE5hbWU6IFNvZnR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIE9wZXJhdGluZyBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ2xpZW50IFNvZnR3YXJlOjpDbGllbnQgU29mdHdhcmVcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuICAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDoKICAgIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IElUU00gTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG5cclxuICAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZCBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbgogICAgXCAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbiAgLSBOYW1lOiBEZXRhaWxzXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOgogICAgMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gTmV0d29yawogICAgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIENQVTo6Q1BVXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIE1lbW9yeTo6TWVtb3J5XHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcgU3lzdGVtOjpPcGVyYXRpbmcgU3lzdGVtXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDbGllbnQKICAgIFNvZnR3YXJlOjpDbGllbnQgU29mdHdhcmVcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UgUGFydGl0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICA1XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogNlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjoKICAgIDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpcgogICAgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZQogICAgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUKICAgIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMKICAgIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00KICAgIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuCiAgICBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTSBHRiBDbGllbnRcclxuICBJVFNNIE1vZGVsOlxyXG4KICAgIFwgICBOYW1lOiBJVFNNIE1vZGVsXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgQ01EQiBMb2NhdGVkCiAgICBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIE5hbWU6IElUU00KICAgIE9wZXJhdGluZyBTeXN0ZW1cclxuICBJVFNNIENsaWVudCBTb2Z0d2FyZTpcclxuICAgIE5hbWU6IElUU00gQ2xpZW50IFNvZnR3YXJlCiAgICBcIFxyXG4gIElUU00gQ1BVOlxyXG4gICAgTmFtZTogSVRTTSBDUFVcclxuICBJVFNNIE1lbW9yeTpcclxuICAgIE5hbWU6IElUU00gTWVtb3J5XHJcbgogICAgXCBJVFNNIEdyYXBoaWNzIENhcmQ6XHJcbiAgICBOYW1lOiBJVFNNIEdyYXBoaWNzIENhcmRcclxuICBJVFNNIFN0b3JhZ2U6XHJcbiAgICBOYW1lOgogICAgSVRTTSBTdG9yYWdlXHJcbiAgSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjpcclxuICAgIE5hbWU6IElUU00gU3RvcmFnZSBQYXJ0aXRpb24KICAgIFwgICBcclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuICAgIE5hbWU6IElUU00gTmV0d29yayBJbmZvXHJcbiAgSVRTTSBMaWNlbnNlOlxyXG4KICAgIFwgICBOYW1lOiBJVFNNIExpY2Vuc2VcclxuICBDTURCIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuCiAgICBcIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZToKICAgIENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENQVS1DUFVDbGFzczoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRGVza3RvcDogRGVza3RvcAogICAgICAgICAgTGFwdG9wOiBMYXB0b3AKICAgICAgICAgIE1vYmlsZUVtYmVkZGVkOiBNb2JpbGUvRW1iZWRkZWQKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2VydmVyOiBTZXJ2ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDUFUgQ2xhc3MKICAgICAgTmFtZTogQ1BVLUNQVUNsYXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtQ2xvY2tzcGVlZDoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMTZHSHo6IDEuNiBHSHoKICAgICAgICAgIDE3R0h6OiAxLjcgR0h6CiAgICAgICAgICAxOEdIejogMS44IEdIegogICAgICAgICAgMTlHSHo6IDEuOSBHSHoKICAgICAgICAgIDIwR0h6OiAyLjAgR0h6CiAgICAgICAgICAyMUdIejogMi4xIEdIegogICAgICAgICAgMjJHSHo6IDIuMiBHSHoKICAgICAgICAgIDIzR0h6OiAyLjMgR0h6CiAgICAgICAgICAyNEdIejogMi40IEdIegogICAgICAgICAgMjVHSHo6IDIuNSBHSHoKICAgICAgICAgIDI2R0h6OiAyLjYgR0h6CiAgICAgICAgICAyN0dIejogMi43IEdIegogICAgICAgICAgMjhHSHo6IDIuOCBHSHoKICAgICAgICAgIDI5R0h6OiAyLjkgR0h6CiAgICAgICAgICAzMEdIejogMy4wIEdIegogICAgICAgICAgMzFHSHo6IDMuMSBHSHoKICAgICAgICAgIDMyR0h6OiAzLjIgR0h6CiAgICAgICAgICAzM0dIejogMy4zIEdIegogICAgICAgICAgMzRHSHo6IDMuNCBHSHoKICAgICAgICAgIDM1R0h6OiAzLjUgR0h6CiAgICAgICAgICAzNkdIejogMy42IEdIegogICAgICAgICAgMzdHSHo6IDMuNyBHSHoKICAgICAgICAgIDM4R0h6OiAzLjggR0h6CiAgICAgICAgICAzOUdIejogMy45IEdIegogICAgICAgICAgNDBHSHo6IDQuMCBHSHoKICAgICAgICAgIDQxR0h6OiA0LjEgR0h6CiAgICAgICAgICA0MkdIejogNC4yIEdIegogICAgICAgICAgNDNHSHo6IDQuMyBHSHoKICAgICAgICAgIDQ0R0h6OiA0LjQgR0h6CiAgICAgICAgICA0NUdIejogNC41IEdIegogICAgICAgICAgNDZHSHo6IDQuNiBHSHoKICAgICAgICAgIDQ3R0h6OiA0LjcgR0h6CiAgICAgICAgICA0OEdIejogNC44IEdIegogICAgICAgICAgNDlHSHo6IDQuOSBHSHoKICAgICAgICAgIDUwR0h6OiA1LjAgR0h6CiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3NwZWVkCiAgICAgIE5hbWU6IENQVS1DbG9ja3NwZWVkCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtTnVtYmVyT2ZDUFU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIENQVXMKICAgICAgTmFtZTogQ1BVLU51bWJlck9mQ1BVCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtUGh5c2ljYWxDb3JlczoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBoeXNpY2FsIENvcmVzCiAgICAgIE5hbWU6IENQVS1QaHlzaWNhbENvcmVzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtU29ja2V0VHlwZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU00OiBBTTQKICAgICAgICAgIEJHQTogQkdBCiAgICAgICAgICBMR0ExMTUxOiBMR0ExMTUxCiAgICAgICAgICBMR0ExMjAwOiBMR0ExMjAwCiAgICAgICAgICBMR0ExMzY2OiBMR0ExMzY2CiAgICAgICAgICBMR0ExNzAwOiBMR0ExNzAwCiAgICAgICAgICBMR0EyMDExOiBMR0EyMDExCiAgICAgICAgICBMR0EyMDExMzogTEdBMjAxMS0zCiAgICAgICAgICBMR0EyMDY2OiBMR0EyMDY2CiAgICAgICAgICBMR0E3NzU6IExHQTc3NQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQR0E6IFBHQQogICAgICAgICAgU29ja2V0MzcwOiBTb2NrZXQgMzcwCiAgICAgICAgICBTb2NrZXQ0Nzg6IFNvY2tldCA0NzgKICAgICAgICAgIFRSNDogVFI0CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogU29ja2V0IFR5cGUKICAgICAgTmFtZTogQ1BVLVNvY2tldFR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1UaHJlYWRzOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzE5JzogJzE5JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICcyMCc6ICcyMCcKICAgICAgICAgICcyMSc6ICcyMScKICAgICAgICAgICcyMic6ICcyMicKICAgICAgICAgICcyMyc6ICcyMycKICAgICAgICAgICcyNCc6ICcyNCcKICAgICAgICAgICcyNSc6ICcyNScKICAgICAgICAgICcyNic6ICcyNicKICAgICAgICAgICcyNyc6ICcyNycKICAgICAgICAgICcyOCc6ICcyOCcKICAgICAgICAgICcyOSc6ICcyOScKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnMzAnOiAnMzAnCiAgICAgICAgICAnMzEnOiAnMzEnCiAgICAgICAgICAnMzInOiAnMzInCiAgICAgICAgICAnMzMnOiAnMzMnCiAgICAgICAgICAnMzQnOiAnMzQnCiAgICAgICAgICAnMzUnOiAnMzUnCiAgICAgICAgICAnMzYnOiAnMzYnCiAgICAgICAgICAnMzcnOiAnMzcnCiAgICAgICAgICAnMzgnOiAnMzgnCiAgICAgICAgICAnMzknOiAnMzknCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzQwJzogJzQwJwogICAgICAgICAgJzQxJzogJzQxJwogICAgICAgICAgJzQyJzogJzQyJwogICAgICAgICAgJzQzJzogJzQzJwogICAgICAgICAgJzQ0JzogJzQ0JwogICAgICAgICAgJzQ1JzogJzQ1JwogICAgICAgICAgJzQ2JzogJzQ2JwogICAgICAgICAgJzQ3JzogJzQ3JwogICAgICAgICAgJzQ4JzogJzQ4JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVGhyZWFkcwogICAgICBOYW1lOiBDUFUtVGhyZWFkcwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tTGVuc1RvTGljZW5zZUNvdW50OgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBDb3VudAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tUmVmZXJlbmNlVG9PUzoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIE9wZXJhdGluZyBTeXN0ZW0KICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogT3BlcmF0aW5nIFN5c3RlbQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvT1MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01DbGllbnQtQ2xpZW50Q2F0ZWdvcnk6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIERlc2t0b3A6IERlc2t0b3AKICAgICAgICAgIE5vdGVib29rOiBOb3RlYm9vawogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUaGluQ2xpZW50OiBUaGluIENsaWVudAogICAgICAgICAgVmlydHVhbENsaWVudDogVmlydHVhbCBDbGllbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbGllbnQgY2F0ZWdvcnkKICAgICAgTmFtZTogSVRTTUNsaWVudC1DbGllbnRDYXRlZ29yeQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudC1GaXJtd2FyZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBGaXJtd2FyZQogICAgICBOYW1lOiBJVFNNQ2xpZW50LUZpcm13YXJlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQ2xpZW50U29mdHdhcmUtUmVmZXJlbmNlVG9DbGllbnRTb2Z0d2FyZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIENsaWVudCBTb2Z0d2FyZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBDbGllbnQgU29mdHdhcmUKICAgICAgTmFtZTogSVRTTUNsaWVudFNvZnR3YXJlLVJlZmVyZW5jZVRvQ2xpZW50U29mdHdhcmUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQnVzSW50ZXJmYWNlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBR1A6IEFHUAogICAgICAgICAgRUlTQTogRUlTQQogICAgICAgICAgRmlyZVdpcmVJRUVFMTM5NDogRmlyZVdpcmUgKElFRUUgMTM5NCkKICAgICAgICAgIElTQTogSVNBCiAgICAgICAgICBMUENMb3dQaW5Db3VudDogTFBDIChMb3cgUGluIENvdW50KQogICAgICAgICAgTUNBTWljcm9DaGFubmVsQXJjaGl0ZWN0dXJlOiBNQ0EgKE1pY3JvIENoYW5uZWwgQXJjaGl0ZWN0dXJlKQogICAgICAgICAgTnVCdXM6IE51QnVzCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBDSTogUENJCiAgICAgICAgICBQQ0lFeHByZXNzUENJZTogUENJIEV4cHJlc3MgKFBDSWUpCiAgICAgICAgICBQQ0lYOiBQQ0ktWAogICAgICAgICAgVGh1bmRlcmJvbHQ6IFRodW5kZXJib2x0CiAgICAgICAgICBVU0JDOiBVU0ItQwogICAgICAgICAgVVNCVW5pdmVyc2FsU2VyaWFsQnVzOiBVU0IgKFVuaXZlcnNhbCBTZXJpYWwgQnVzKQogICAgICAgICAgVkVTQUxvY2FsQnVzVkxCOiBWRVNBIExvY2FsIEJ1cyAoVkxCKQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEJ1cyBJbnRlcmZhY2UKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE51bWJlciBvZiBncmFwaGljcyBjYXJkcwogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLUdyYXBoaWNzQ2FyZFZlbmRvcjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU1EUmFkZW9uSEQ2NzUwOiBBTUQgUmFkZW9uIEhEIDY3NTAKICAgICAgICAgIEFNRFJhZGVvbkhENjc3MDogQU1EIFJhZGVvbiBIRCA2NzcwCiAgICAgICAgICBBTURSYWRlb25IRDY3OTA6IEFNRCBSYWRlb24gSEQgNjc5MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODUwOiBBTUQgUmFkZW9uIEhEIDY4NTAKICAgICAgICAgIEFNRFJhZGVvbkhENjg3MDogQU1EIFJhZGVvbiBIRCA2ODcwCiAgICAgICAgICBBTURSYWRlb25IRDY5NTA6IEFNRCBSYWRlb24gSEQgNjk1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTcwOiBBTUQgUmFkZW9uIEhEIDY5NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk5MDogQU1EIFJhZGVvbiBIRCA2OTkwCiAgICAgICAgICBBTURSYWRlb25IRDc3NTA6IEFNRCBSYWRlb24gSEQgNzc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzcwOiBBTUQgUmFkZW9uIEhEIDc3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENzc5MDogQU1EIFJhZGVvbiBIRCA3NzkwCiAgICAgICAgICBBTURSYWRlb25IRDc4NTA6IEFNRCBSYWRlb24gSEQgNzg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ3ODcwOiBBTUQgUmFkZW9uIEhEIDc4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENzk1MDogQU1EIFJhZGVvbiBIRCA3OTUwCiAgICAgICAgICBBTURSYWRlb25IRDc5NzA6IEFNRCBSYWRlb24gSEQgNzk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTkwOiBBTUQgUmFkZW9uIEhEIDc5OTAKICAgICAgICAgIEFNRFJhZGVvblByb0R1bzogQU1EIFJhZGVvbiBQcm8gRHVvCiAgICAgICAgICBBTURSYWRlb25Qcm9TU0c6IEFNRCBSYWRlb24gUHJvIFNTRwogICAgICAgICAgQU1EUmFkZW9uUHJvV1gyMTAwOiBBTUQgUmFkZW9uIFBybyBXWCAyMTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDMxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDMxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNDEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNDEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g1MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA1MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDcxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDcxMDAKICAgICAgICAgIEFNRFJhZGVvblI1MjEwOiBBTUQgUmFkZW9uIFI1IDIxMAogICAgICAgICAgQU1EUmFkZW9uUjUyMjA6IEFNRCBSYWRlb24gUjUgMjIwCiAgICAgICAgICBBTURSYWRlb25SNTIzMDogQU1EIFJhZGVvbiBSNSAyMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzIwOiBBTUQgUmFkZW9uIFI1IDMyMAogICAgICAgICAgQU1EUmFkZW9uUjUzMzA6IEFNRCBSYWRlb24gUjUgMzMwCiAgICAgICAgICBBTURSYWRlb25SNTM0MDogQU1EIFJhZGVvbiBSNSAzNDAKICAgICAgICAgIEFNRFJhZGVvblI3MjQwOiBBTUQgUmFkZW9uIFI3IDI0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNTA6IEFNRCBSYWRlb24gUjcgMjUwCiAgICAgICAgICBBTURSYWRlb25SNzI1MFg6IEFNRCBSYWRlb24gUjcgMjUwWAogICAgICAgICAgQU1EUmFkZW9uUjcyNjBYOiBBTUQgUmFkZW9uIFI3IDI2MFgKICAgICAgICAgIEFNRFJhZGVvblI3MzQwOiBBTUQgUmFkZW9uIFI3IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjczNTA6IEFNRCBSYWRlb24gUjcgMzUwCiAgICAgICAgICBBTURSYWRlb25SNzM2MDogQU1EIFJhZGVvbiBSNyAzNjAKICAgICAgICAgIEFNRFJhZGVvblI3MzcwOiBBTUQgUmFkZW9uIFI3IDM3MAogICAgICAgICAgQU1EUmFkZW9uUjkyODU6IEFNRCBSYWRlb24gUjkgMjg1CiAgICAgICAgICBBTURSYWRlb25SOTI5MDogQU1EIFJhZGVvbiBSOSAyOTAKICAgICAgICAgIEFNRFJhZGVvblI5MjkwWDogQU1EIFJhZGVvbiBSOSAyOTBYCiAgICAgICAgICBBTURSYWRlb25SOTI5NVgyOiBBTUQgUmFkZW9uIFI5IDI5NVgyCiAgICAgICAgICBBTURSYWRlb25SOTM4MDogQU1EIFJhZGVvbiBSOSAzODAKICAgICAgICAgIEFNRFJhZGVvblI5MzgwWDogQU1EIFJhZGVvbiBSOSAzODBYCiAgICAgICAgICBBTURSYWRlb25SOTM5MDogQU1EIFJhZGVvbiBSOSAzOTAKICAgICAgICAgIEFNRFJhZGVvblI5MzkwWDogQU1EIFJhZGVvbiBSOSAzOTBYCiAgICAgICAgICBBTURSYWRlb25SOUZ1cnlYOiBBTUQgUmFkZW9uIFI5IEZ1cnkgWAogICAgICAgICAgQU1EUmFkZW9uUjlOYW5vOiBBTUQgUmFkZW9uIFI5IE5hbm8KICAgICAgICAgIEFNRFJhZGVvblJYNTQwMFhUOiBBTUQgUmFkZW9uIFJYIDU0MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMDogQU1EIFJhZGVvbiBSWCA1NTAwCiAgICAgICAgICBBTURSYWRlb25SWDU1MDBYVDogQU1EIFJhZGVvbiBSWCA1NTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU2MDA6IEFNRCBSYWRlb24gUlggNTYwMAogICAgICAgICAgQU1EUmFkZW9uUlg1NjAwWFQ6IEFNRCBSYWRlb24gUlggNTYwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NzA6IEFNRCBSYWRlb24gUlggNTcwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDA6IEFNRCBSYWRlb24gUlggNTcwMAogICAgICAgICAgQU1EUmFkZW9uUlg1NzAwWFQ6IEFNRCBSYWRlb24gUlggNTcwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1ODA6IEFNRCBSYWRlb24gUlggNTgwCiAgICAgICAgICBBTURSYWRlb25SWDU5MDogQU1EIFJhZGVvbiBSWCA1OTAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMDogQU1EIFJhZGVvbiBSWCA2NjAwCiAgICAgICAgICBBTURSYWRlb25SWDY2MDBYVDogQU1EIFJhZGVvbiBSWCA2NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY3MDA6IEFNRCBSYWRlb24gUlggNjcwMAogICAgICAgICAgQU1EUmFkZW9uUlg2NzAwWFQ6IEFNRCBSYWRlb24gUlggNjcwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg2ODAwWFQ6IEFNRCBSYWRlb24gUlggNjgwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg2OTAwWFQ6IEFNRCBSYWRlb24gUlggNjkwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlhWZWdhNTY6IEFNRCBSYWRlb24gUlggVmVnYSA1NgogICAgICAgICAgQU1EUmFkZW9uUlhWZWdhNjQ6IEFNRCBSYWRlb24gUlggVmVnYSA2NAogICAgICAgICAgTlZJRElBR2VGb3JjZTIxMDogTlZJRElBIEdlRm9yY2UgMjEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1QxMDMwOiBOVklESUEgR2VGb3JjZSBHVCAxMDMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MTA6IE5WSURJQSBHZUZvcmNlIEdUIDUxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTIwOiBOVklESUEgR2VGb3JjZSBHVCA1MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUzMDogTlZJRElBIEdlRm9yY2UgR1QgNTMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1NDU6IE5WSURJQSBHZUZvcmNlIEdUIDU0NQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjEwOiBOVklESUEgR2VGb3JjZSBHVCA2MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYyMDogTlZJRElBIEdlRm9yY2UgR1QgNjIwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MzA6IE5WSURJQSBHZUZvcmNlIEdUIDYzMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjQwOiBOVklESUEgR2VGb3JjZSBHVCA2NDAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDcxMDogTlZJRElBIEdlRm9yY2UgR1QgNzEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q3MzA6IE5WSURJQSBHZUZvcmNlIEdUIDczMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwNTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA1MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwNjA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA3MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDgwOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDEwODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjUwOiBOVklESUEgR2VGb3JjZSBHVFggMTY1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NjA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTY2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc0NTogTlZJRElBIEdlRm9yY2UgR1RYIDc0NQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc1MDogTlZJRElBIEdlRm9yY2UgR1RYIDc1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc1MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzYwOiBOVklESUEgR2VGb3JjZSBHVFggNzYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NzA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3ODA6IE5WSURJQSBHZUZvcmNlIEdUWCA3ODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3ODBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk1MDogTlZJRElBIEdlRm9yY2UgR1RYIDk1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk2MDogTlZJRElBIEdlRm9yY2UgR1RYIDk2MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk3MDogTlZJRElBIEdlRm9yY2UgR1RYIDk3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk4MDogTlZJRElBIEdlRm9yY2UgR1RYIDk4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggOTgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlTVgxNTA6IE5WSURJQSBHZUZvcmNlIE1YMTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlTVgzNTA6IE5WSURJQSBHZUZvcmNlIE1YMzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlTVg0NTA6IE5WSURJQSBHZUZvcmNlIE1YNDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA2MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDcwOiBOVklESUEgR2VGb3JjZSBSVFggMjA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwODA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMjA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNTA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA1MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNjBUaTogTlZJRElBIEdlRm9yY2UgUlRYIDMwNjAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDcwOiBOVklESUEgR2VGb3JjZSBSVFggMzA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwODA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA5MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwOTAKICAgICAgICAgIE5WSURJQU5WUzMwMDogTlZJRElBIE5WUyAzMDAKICAgICAgICAgIE5WSURJQU5WUzMxMDogTlZJRElBIE5WUyAzMTAKICAgICAgICAgIE5WSURJQU5WUzUxMDogTlZJRElBIE5WUyA1MTAKICAgICAgICAgIE5WSURJQVF1YWRybzIwMDA6IE5WSURJQSBRdWFkcm8gMjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvNjAwOiBOVklESUEgUXVhZHJvIDYwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzEyMDA6IE5WSURJQSBRdWFkcm8gSzEyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0syMjAwOiBOVklESUEgUXVhZHJvIEsyMjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDAwMDogTlZJRElBIFF1YWRybyBLNDAwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzQyMDogTlZJRElBIFF1YWRybyBLNDIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwMDogTlZJRElBIFF1YWRybyBLNDIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzUyMDA6IE5WSURJQSBRdWFkcm8gSzUyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s2MDA6IE5WSURJQSBRdWFkcm8gSzYwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYxME06IE5WSURJQSBRdWFkcm8gSzYxME0KICAgICAgICAgIE5WSURJQVF1YWRyb0s2MjA6IE5WSURJQSBRdWFkcm8gSzYyMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYyME06IE5WSURJQSBRdWFkcm8gSzYyME0KICAgICAgICAgIE5WSURJQVF1YWRyb00xMDAwTTogTlZJRElBIFF1YWRybyBNMTAwME0KICAgICAgICAgIE5WSURJQVF1YWRyb00yMDAwOiBOVklESUEgUXVhZHJvIE0yMDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNDAwMDogTlZJRElBIFF1YWRybyBNNDAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTUwMDA6IE5WSURJQSBRdWFkcm8gTTUwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDAwOiBOVklESUEgUXVhZHJvIE02MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNjAwTTogTlZJRElBIFF1YWRybyBNNjAwTQogICAgICAgICAgTlZJRElBUXVhZHJvUDEwMDA6IE5WSURJQSBRdWFkcm8gUDEwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1AyMDAwOiBOVklESUEgUXVhZHJvIFAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNDAwOiBOVklESUEgUXVhZHJvIFA0MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDAwOiBOVklESUEgUXVhZHJvIFA0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNTAwMDogTlZJRElBIFF1YWRybyBQNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDYwMDogTlZJRElBIFF1YWRybyBQNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwMDogTlZJRElBIFF1YWRybyBQNjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDYyMDogTlZJRElBIFF1YWRybyBQNjIwCiAgICAgICAgICBOVklESUFUZXNsYUs4MDogTlZJRElBIFRlc2xhIEs4MAogICAgICAgICAgTlZJRElBVGVzbGFQMTAwOiBOVklESUEgVGVzbGEgUDEwMAogICAgICAgICAgTlZJRElBVGVzbGFUNDogTlZJRElBIFRlc2xhIFQ0CiAgICAgICAgICBOVklESUFUZXNsYVYxMDA6IE5WSURJQSBUZXNsYSBWMTAwCiAgICAgICAgICBOVklESUFUaXRhblJUWDogTlZJRElBIFRpdGFuIFJUWAogICAgICAgICAgTlZJRElBVGl0YW5WOiBOVklESUEgVGl0YW4gVgogICAgICAgICAgTlZJRElBVGl0YW5YUGFzY2FsOiBOVklESUEgVGl0YW4gWCAoUGFzY2FsKQogICAgICAgICAgTlZJRElBVGl0YW5YcDogTlZJRElBIFRpdGFuIFhwCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBHcmFwaGljcyBjYXJkCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogMSBHQgogICAgICAgICAgJzExJzogMTEgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMic6IDIgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQnOiA0IEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEdERFI1OiBHRERSNQogICAgICAgICAgR0REUjVYOiBHRERSNVgKICAgICAgICAgIEdERFI2OiBHRERSNgogICAgICAgICAgR0REUjZYOiBHRERSNlgKICAgICAgICAgIEhCTTI6IEhCTTIKICAgICAgICAgIEhCTTJFOiBIQk0yRQogICAgICAgICAgSEJNSGlnaEJhbmR3aWR0aE1lbW9yeTogSEJNIChIaWdoIEJhbmR3aWR0aCBNZW1vcnkpCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNZW1vcnkgVHlwZQogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtT3V0cHV0czoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRFZJOiBEVkkKICAgICAgICAgIERpc3BsYXlQb3J0OiBEaXNwbGF5UG9ydAogICAgICAgICAgSERNSTogSERNSQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUaHVuZGVyYm9sdDogVGh1bmRlcmJvbHQKICAgICAgICAgIFVTQkM6IFVTQi1DCiAgICAgICAgICBWR0E6IFZHQQogICAgICAgICAgVmlydHVhbExpbms6IFZpcnR1YWxMaW5rCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogT3V0cHV0cwogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnRcIiAlXVslIENhcGFjaXR5CiAgICAgICAgICA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQKICAgICAgICAgICogRGF0YS4kQ2FwYWNpdHkgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIE5hbWVVcGRhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uQ3JlYXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1DYXBhY2l0eToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEwMjQnOiAxMDI0IEdCCiAgICAgICAgICAnMTInOiAxMiBHQgogICAgICAgICAgJzEyOCc6IDEyOCBHQgogICAgICAgICAgJzE2JzogMTYgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQ4JzogNDggR0IKICAgICAgICAgICc1MTInOiA1MTIgR0IKICAgICAgICAgICc2NCc6IDY0IEdCCiAgICAgICAgICAnOCc6IDggR0IKICAgICAgICAgICc5Nic6IDk2IEdCCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDYXBhY2l0eSAoR0IpCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ2xvY2tSYXRlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMTAwJzogJzEwMCcKICAgICAgICAgICcxMzMnOiAnMTMzJwogICAgICAgICAgJzE2Nic6ICcxNjYnCiAgICAgICAgICAnMjAwJzogJzIwMCcKICAgICAgICAgICcyMzMnOiAnMjMzJwogICAgICAgICAgJzI2Nic6ICcyNjYnCiAgICAgICAgICAnMzAwJzogJzMwMCcKICAgICAgICAgICczMzMnOiAnMzMzJwogICAgICAgICAgJzM2Nic6ICczNjYnCiAgICAgICAgICAnNDAwJzogJzQwMCcKICAgICAgICAgICc0NTAnOiAnNDUwJwogICAgICAgICAgJzUwMCc6ICc1MDAnCiAgICAgICAgICAnNTI1JzogJzUyNScKICAgICAgICAgICc2MDAnOiAnNjAwJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xvY2tyYXRlCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ2xvY2tSYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNvdW50OgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIFJBTSBtb2R1bGVzCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eQogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ291bnQKICAgICAgICBFeHByZXNzaW9uOiAiWyUgQ291bnQgPSBcIkR5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50XCIgJV1bJSBDYXBhY2l0eSA9CiAgICAgICAgICBcIkR5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5XCIgJV1cclxuWyUgVG90YWwgPSBEYXRhLiRDb3VudCAqIERhdGEuJENhcGFjaXR5CiAgICAgICAgICAlXVxyXG5bJSBUb3RhbCAlXSBHQiIKICAgICAgICBJbnRlcnByZXRlcjogfgogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgUmVhZG9ubHk6ICcxJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSZXF1aXJlZEFyZ3M6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eQogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ291bnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uRGVsZXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBSQU0gKEdCKQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVRvdGFsUkFNR0IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU01NZW1vcnktVHlwZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRERSOiBERFIKICAgICAgICAgIEREUjI6IEREUjIKICAgICAgICAgIEREUjM6IEREUjMKICAgICAgICAgIEREUjQ6IEREUjQKICAgICAgICAgIEREUjU6IEREUjUKICAgICAgICAgIFNEUkFNOiBTRFJBTQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgICAtIFN3aXRjaAogICAgICAgICAgICAgIC0gV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBPYmplY3QKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBGUUROCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWN0aXZlCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBOZXR3b3JrIEluZm9ybWF0aW9uCiAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2UtU3RvcmFnZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIEhEREhhcmREaXNrRHJpdmU6IEhERCAoSGFyZCBEaXNrIERyaXZlKQogICAgICAgICAgICAgICAgTlZNZVNTRE5vblZvbGF0aWxlTWVtb3J5RXhwcmVzc1NvbGlkU3RhdGVEcml2ZTogTlZNZSBTU0QgKE5vbi1Wb2xhdGlsZQogICAgICAgICAgICAgICAgICBNZW1vcnkgRXhwcmVzcyBTb2xpZCBTdGF0ZSBEcml2ZSkKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU1NEU29saWRTdGF0ZURyaXZlOiBTU0QgKFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgU1NIRFNvbGlkU3RhdGVIeWJyaWREcml2ZTogU1NIRCAoU29saWQgU3RhdGUgSHlicmlkIERyaXZlKQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgVHlwZQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1UeXBlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgQURBVEE6IEFEQVRBCiAgICAgICAgICAgICAgICBBREFUQVRlY2hub2xvZ3k6IEFEQVRBIFRlY2hub2xvZ3kKICAgICAgICAgICAgICAgIEFwYWNlcjogQXBhY2VyCiAgICAgICAgICAgICAgICBCdWZmYWxvOiBCdWZmYWxvCiAgICAgICAgICAgICAgICBDb3JzYWlyOiBDb3JzYWlyCiAgICAgICAgICAgICAgICBDcnVjaWFsTWljcm9uOiBDcnVjaWFsIChNaWNyb24pCiAgICAgICAgICAgICAgICBHVGVjaG5vbG9neVdlc3Rlcm5EaWdpdGFsOiBHLVRlY2hub2xvZ3kgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIEhHU1RXZXN0ZXJuRGlnaXRhbDogSEdTVCAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgSGl0YWNoaTogSGl0YWNoaQogICAgICAgICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICAgICAgICBLaW5nc3RvbjogS2luZ3N0b24KICAgICAgICAgICAgICAgIEtpbmdzdG9uRGlnaXRhbDogS2luZ3N0b24gRGlnaXRhbAogICAgICAgICAgICAgICAgTGFDaWVTZWFnYXRlOiBMYUNpZSAoU2VhZ2F0ZSkKICAgICAgICAgICAgICAgIExleGFyOiBMZXhhcgogICAgICAgICAgICAgICAgTWF4dG9yOiBNYXh0b3IKICAgICAgICAgICAgICAgIE9DWlRvc2hpYmE6IE9DWiAoVG9zaGliYSkKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgUE5ZOiBQTlkKICAgICAgICAgICAgICAgIFBsZXh0b3I6IFBsZXh0b3IKICAgICAgICAgICAgICAgIFNLaHluaXg6IFNLIGh5bml4CiAgICAgICAgICAgICAgICBTYW1zdW5nOiBTYW1zdW5nCiAgICAgICAgICAgICAgICBTYW1zdW5nU2VtaWNvbmR1Y3RvcjogU2Ftc3VuZyBTZW1pY29uZHVjdG9yCiAgICAgICAgICAgICAgICBTYW5EaXNrV2VzdGVybkRpZ2l0YWw6IFNhbkRpc2sgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIFNlYWdhdGU6IFNlYWdhdGUKICAgICAgICAgICAgICAgIFNpbGljb25Qb3dlcjogU2lsaWNvbiBQb3dlcgogICAgICAgICAgICAgICAgU29ueTogU29ueQogICAgICAgICAgICAgICAgU3VwZXJUYWxlbnQ6IFN1cGVyIFRhbGVudAogICAgICAgICAgICAgICAgVGVhbUdyb3VwOiBUZWFtIEdyb3VwCiAgICAgICAgICAgICAgICBUb3NoaWJhOiBUb3NoaWJhCiAgICAgICAgICAgICAgICBUcmFuc2NlbmQ6IFRyYW5zY2VuZAogICAgICAgICAgICAgICAgV2VzdGVybkRpZ2l0YWw6IFdlc3Rlcm4gRGlnaXRhbAogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgTWFudWZhY3R1cmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1vZGVsCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1vZGVsCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLU1vZGVsCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVNlcmlhbE51bWJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IFN0b3JhZ2UKICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU3RvcmFnZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gTmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1OYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBGcmVlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUZyZWVDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gVXNlZCBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Vc2VkQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Nb3VudFBvaW50CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBNb3VudCBQb2ludAogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Nb3VudFBvaW50CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZSBQYXJ0aXRpb24KICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFNvZnR3YXJlCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogQ2xpZW50ICh2aXJ0dWFsKQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsCiAgICBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gTGljZW5zZTo6TGljZW5zZVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZyBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDoKICAgIDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOgogICAgMlxyXG5cclxuICAtIE5hbWU6IEhhcmR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBJVFNNIEdyYXBoaWNzIENhcmQ6OkdyYXBoaWNzIENhcmRcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UKICAgIFBhcnRpdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuXHJcbiAgLSBOYW1lOiBTb2Z0d2FyZVxyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZyBTeXN0ZW06Ok9wZXJhdGluZwogICAgU3lzdGVtXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIENsaWVudCBTb2Z0d2FyZTo6Q2xpZW50IFNvZnR3YXJlXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDJcclxuXHJcbiAgLSBOYW1lOiBOZXR3b3JrIEluZm9cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuXHJcbiAgLSBOYW1lOiBEZXRhaWxzXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDUFU6OkNQVVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNZW1vcnk6Ok1lbW9yeVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuCiAgICBcICAgICAtIFNlY3Rpb246IElUU00gQ2xpZW50IFNvZnR3YXJlOjpDbGllbnQgU29mdHdhcmVcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDoKICAgIDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UKICAgIFBhcnRpdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiA1XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBMaWNlbnNlOjpMaWNlbnNlXHJcbiAgICAgICAgUm93U3RhcnQ6IDZcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDdcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbgogICAgXCAgICAgICBSb3dTcGFuOiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcblJvbGVzOlxyXG4KICAgIFwgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjCiAgICBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuCiAgICBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbAogICAgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTSBHRiBDbGllbnRcclxuICBJVFNNIE1vZGVsOlxyXG4gICAgTmFtZTogSVRTTSBNb2RlbFxyXG4KICAgIFwgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgQ01EQiBMb2NhdGVkIGluOlxyXG4gICAgTmFtZTogQ01EQgogICAgTG9jYXRlZCBpblxyXG4gIElUU00gT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIE5hbWU6IElUU00gT3BlcmF0aW5nIFN5c3RlbVxyXG4KICAgIFwgSVRTTSBDbGllbnQgU29mdHdhcmU6XHJcbiAgICBOYW1lOiBJVFNNIENsaWVudCBTb2Z0d2FyZSAgXHJcbiAgSVRTTSBDUFU6XHJcbgogICAgXCAgIE5hbWU6IElUU00gQ1BVXHJcbiAgSVRTTSBNZW1vcnk6XHJcbiAgICBOYW1lOiBJVFNNIE1lbW9yeVxyXG4gIElUU00gR3JhcGhpY3MKICAgIENhcmQ6XHJcbiAgICBOYW1lOiBJVFNNIEdyYXBoaWNzIENhcmRcclxuICBJVFNNIFN0b3JhZ2U6XHJcbiAgICBOYW1lOiBJVFNNIFN0b3JhZ2VcclxuCiAgICBcIElUU00gU3RvcmFnZSBQYXJ0aXRpb246XHJcbiAgICBOYW1lOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uICAgIFxyXG4gIElUU00gTmV0d29yawogICAgSW5mbzpcclxuICAgIE5hbWU6IElUU00gTmV0d29yayBJbmZvXHJcbiAgSVRTTSBMaWNlbnNlOlxyXG4gICAgTmFtZTogSVRTTSBMaWNlbnNlXHJcbgogICAgXCBDTURCIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6CiAgICBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDUFUtQ1BVQ2xhc3M6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEZXNrdG9wOiBEZXNrdG9wCiAgICAgICAgICBMYXB0b3A6IExhcHRvcAogICAgICAgICAgTW9iaWxlRW1iZWRkZWQ6IE1vYmlsZS9FbWJlZGRlZAogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBTZXJ2ZXI6IFNlcnZlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENQVSBDbGFzcwogICAgICBOYW1lOiBDUFUtQ1BVQ2xhc3MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1DbG9ja3NwZWVkOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMTZHSHo6IDEuNiBHSHoKICAgICAgICAgIDE3R0h6OiAxLjcgR0h6CiAgICAgICAgICAxOEdIejogMS44IEdIegogICAgICAgICAgMTlHSHo6IDEuOSBHSHoKICAgICAgICAgIDIwR0h6OiAyLjAgR0h6CiAgICAgICAgICAyMUdIejogMi4xIEdIegogICAgICAgICAgMjJHSHo6IDIuMiBHSHoKICAgICAgICAgIDIzR0h6OiAyLjMgR0h6CiAgICAgICAgICAyNEdIejogMi40IEdIegogICAgICAgICAgMjVHSHo6IDIuNSBHSHoKICAgICAgICAgIDI2R0h6OiAyLjYgR0h6CiAgICAgICAgICAyN0dIejogMi43IEdIegogICAgICAgICAgMjhHSHo6IDIuOCBHSHoKICAgICAgICAgIDI5R0h6OiAyLjkgR0h6CiAgICAgICAgICAzMEdIejogMy4wIEdIegogICAgICAgICAgMzFHSHo6IDMuMSBHSHoKICAgICAgICAgIDMyR0h6OiAzLjIgR0h6CiAgICAgICAgICAzM0dIejogMy4zIEdIegogICAgICAgICAgMzRHSHo6IDMuNCBHSHoKICAgICAgICAgIDM1R0h6OiAzLjUgR0h6CiAgICAgICAgICAzNkdIejogMy42IEdIegogICAgICAgICAgMzdHSHo6IDMuNyBHSHoKICAgICAgICAgIDM4R0h6OiAzLjggR0h6CiAgICAgICAgICAzOUdIejogMy45IEdIegogICAgICAgICAgNDBHSHo6IDQuMCBHSHoKICAgICAgICAgIDQxR0h6OiA0LjEgR0h6CiAgICAgICAgICA0MkdIejogNC4yIEdIegogICAgICAgICAgNDNHSHo6IDQuMyBHSHoKICAgICAgICAgIDQ0R0h6OiA0LjQgR0h6CiAgICAgICAgICA0NUdIejogNC41IEdIegogICAgICAgICAgNDZHSHo6IDQuNiBHSHoKICAgICAgICAgIDQ3R0h6OiA0LjcgR0h6CiAgICAgICAgICA0OEdIejogNC44IEdIegogICAgICAgICAgNDlHSHo6IDQuOSBHSHoKICAgICAgICAgIDUwR0h6OiA1LjAgR0h6CiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3NwZWVkCiAgICAgIE5hbWU6IENQVS1DbG9ja3NwZWVkCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtTnVtYmVyT2ZDUFU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE51bWJlciBvZiBDUFVzCiAgICAgIE5hbWU6IENQVS1OdW1iZXJPZkNQVQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLVBoeXNpY2FsQ29yZXM6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzE5JzogJzE5JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICcyMCc6ICcyMCcKICAgICAgICAgICcyMSc6ICcyMScKICAgICAgICAgICcyMic6ICcyMicKICAgICAgICAgICcyMyc6ICcyMycKICAgICAgICAgICcyNCc6ICcyNCcKICAgICAgICAgICcyNSc6ICcyNScKICAgICAgICAgICcyNic6ICcyNicKICAgICAgICAgICcyNyc6ICcyNycKICAgICAgICAgICcyOCc6ICcyOCcKICAgICAgICAgICcyOSc6ICcyOScKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnMzAnOiAnMzAnCiAgICAgICAgICAnMzEnOiAnMzEnCiAgICAgICAgICAnMzInOiAnMzInCiAgICAgICAgICAnMzMnOiAnMzMnCiAgICAgICAgICAnMzQnOiAnMzQnCiAgICAgICAgICAnMzUnOiAnMzUnCiAgICAgICAgICAnMzYnOiAnMzYnCiAgICAgICAgICAnMzcnOiAnMzcnCiAgICAgICAgICAnMzgnOiAnMzgnCiAgICAgICAgICAnMzknOiAnMzknCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzQwJzogJzQwJwogICAgICAgICAgJzQxJzogJzQxJwogICAgICAgICAgJzQyJzogJzQyJwogICAgICAgICAgJzQzJzogJzQzJwogICAgICAgICAgJzQ0JzogJzQ0JwogICAgICAgICAgJzQ1JzogJzQ1JwogICAgICAgICAgJzQ2JzogJzQ2JwogICAgICAgICAgJzQ3JzogJzQ3JwogICAgICAgICAgJzQ4JzogJzQ4JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUGh5c2ljYWwgQ29yZXMKICAgICAgTmFtZTogQ1BVLVBoeXNpY2FsQ29yZXMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1Tb2NrZXRUeXBlOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU00OiBBTTQKICAgICAgICAgIEJHQTogQkdBCiAgICAgICAgICBMR0ExMTUxOiBMR0ExMTUxCiAgICAgICAgICBMR0ExMjAwOiBMR0ExMjAwCiAgICAgICAgICBMR0ExMzY2OiBMR0ExMzY2CiAgICAgICAgICBMR0ExNzAwOiBMR0ExNzAwCiAgICAgICAgICBMR0EyMDExOiBMR0EyMDExCiAgICAgICAgICBMR0EyMDExMzogTEdBMjAxMS0zCiAgICAgICAgICBMR0EyMDY2OiBMR0EyMDY2CiAgICAgICAgICBMR0E3NzU6IExHQTc3NQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQR0E6IFBHQQogICAgICAgICAgU29ja2V0MzcwOiBTb2NrZXQgMzcwCiAgICAgICAgICBTb2NrZXQ0Nzg6IFNvY2tldCA0NzgKICAgICAgICAgIFRSNDogVFI0CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogU29ja2V0IFR5cGUKICAgICAgTmFtZTogQ1BVLVNvY2tldFR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1UaHJlYWRzOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFRocmVhZHMKICAgICAgTmFtZTogQ1BVLVRocmVhZHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudDoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RVbnRpbAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlVHlwZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tUmVmZXJlbmNlVG9PUzoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBPcGVyYXRpbmcgU3lzdGVtCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb09TCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudC1DbGllbnRDYXRlZ29yeToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIERlc2t0b3A6IERlc2t0b3AKICAgICAgICAgIE5vdGVib29rOiBOb3RlYm9vawogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUaGluQ2xpZW50OiBUaGluIENsaWVudAogICAgICAgICAgVmlydHVhbENsaWVudDogVmlydHVhbCBDbGllbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbGllbnQgY2F0ZWdvcnkKICAgICAgTmFtZTogSVRTTUNsaWVudC1DbGllbnRDYXRlZ29yeQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudC1GaXJtd2FyZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRmlybXdhcmUKICAgICAgTmFtZTogSVRTTUNsaWVudC1GaXJtd2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudFNvZnR3YXJlLVJlZmVyZW5jZVRvQ2xpZW50U29mdHdhcmU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQ2xpZW50IFNvZnR3YXJlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IENsaWVudCBTb2Z0d2FyZQogICAgICBOYW1lOiBJVFNNQ2xpZW50U29mdHdhcmUtUmVmZXJlbmNlVG9DbGllbnRTb2Z0d2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2U6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBR1A6IEFHUAogICAgICAgICAgRUlTQTogRUlTQQogICAgICAgICAgRmlyZVdpcmVJRUVFMTM5NDogRmlyZVdpcmUgKElFRUUgMTM5NCkKICAgICAgICAgIElTQTogSVNBCiAgICAgICAgICBMUENMb3dQaW5Db3VudDogTFBDIChMb3cgUGluIENvdW50KQogICAgICAgICAgTUNBTWljcm9DaGFubmVsQXJjaGl0ZWN0dXJlOiBNQ0EgKE1pY3JvIENoYW5uZWwgQXJjaGl0ZWN0dXJlKQogICAgICAgICAgTnVCdXM6IE51QnVzCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBDSTogUENJCiAgICAgICAgICBQQ0lFeHByZXNzUENJZTogUENJIEV4cHJlc3MgKFBDSWUpCiAgICAgICAgICBQQ0lYOiBQQ0ktWAogICAgICAgICAgVGh1bmRlcmJvbHQ6IFRodW5kZXJib2x0CiAgICAgICAgICBVU0JDOiBVU0ItQwogICAgICAgICAgVVNCVW5pdmVyc2FsU2VyaWFsQnVzOiBVU0IgKFVuaXZlcnNhbCBTZXJpYWwgQnVzKQogICAgICAgICAgVkVTQUxvY2FsQnVzVkxCOiBWRVNBIExvY2FsIEJ1cyAoVkxCKQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEJ1cyBJbnRlcmZhY2UKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3I6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTURSYWRlb25IRDY3NTA6IEFNRCBSYWRlb24gSEQgNjc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzcwOiBBTUQgUmFkZW9uIEhEIDY3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjc5MDogQU1EIFJhZGVvbiBIRCA2NzkwCiAgICAgICAgICBBTURSYWRlb25IRDY4NTA6IEFNRCBSYWRlb24gSEQgNjg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODcwOiBBTUQgUmFkZW9uIEhEIDY4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk1MDogQU1EIFJhZGVvbiBIRCA2OTUwCiAgICAgICAgICBBTURSYWRlb25IRDY5NzA6IEFNRCBSYWRlb24gSEQgNjk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTkwOiBBTUQgUmFkZW9uIEhEIDY5OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc1MDogQU1EIFJhZGVvbiBIRCA3NzUwCiAgICAgICAgICBBTURSYWRlb25IRDc3NzA6IEFNRCBSYWRlb24gSEQgNzc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzkwOiBBTUQgUmFkZW9uIEhEIDc3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg1MDogQU1EIFJhZGVvbiBIRCA3ODUwCiAgICAgICAgICBBTURSYWRlb25IRDc4NzA6IEFNRCBSYWRlb24gSEQgNzg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTUwOiBBTUQgUmFkZW9uIEhEIDc5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzk3MDogQU1EIFJhZGVvbiBIRCA3OTcwCiAgICAgICAgICBBTURSYWRlb25IRDc5OTA6IEFNRCBSYWRlb24gSEQgNzk5MAogICAgICAgICAgQU1EUmFkZW9uUHJvRHVvOiBBTUQgUmFkZW9uIFBybyBEdW8KICAgICAgICAgIEFNRFJhZGVvblByb1NTRzogQU1EIFJhZGVvbiBQcm8gU1NHCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDIxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDIxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYMzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMzEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g0MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA0MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDUxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDUxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNzEwMAogICAgICAgICAgQU1EUmFkZW9uUjUyMTA6IEFNRCBSYWRlb24gUjUgMjEwCiAgICAgICAgICBBTURSYWRlb25SNTIyMDogQU1EIFJhZGVvbiBSNSAyMjAKICAgICAgICAgIEFNRFJhZGVvblI1MjMwOiBBTUQgUmFkZW9uIFI1IDIzMAogICAgICAgICAgQU1EUmFkZW9uUjUzMjA6IEFNRCBSYWRlb24gUjUgMzIwCiAgICAgICAgICBBTURSYWRlb25SNTMzMDogQU1EIFJhZGVvbiBSNSAzMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzQwOiBBTUQgUmFkZW9uIFI1IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNDA6IEFNRCBSYWRlb24gUjcgMjQwCiAgICAgICAgICBBTURSYWRlb25SNzI1MDogQU1EIFJhZGVvbiBSNyAyNTAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwWDogQU1EIFJhZGVvbiBSNyAyNTBYCiAgICAgICAgICBBTURSYWRlb25SNzI2MFg6IEFNRCBSYWRlb24gUjcgMjYwWAogICAgICAgICAgQU1EUmFkZW9uUjczNDA6IEFNRCBSYWRlb24gUjcgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzM1MDogQU1EIFJhZGVvbiBSNyAzNTAKICAgICAgICAgIEFNRFJhZGVvblI3MzYwOiBBTUQgUmFkZW9uIFI3IDM2MAogICAgICAgICAgQU1EUmFkZW9uUjczNzA6IEFNRCBSYWRlb24gUjcgMzcwCiAgICAgICAgICBBTURSYWRlb25SOTI4NTogQU1EIFJhZGVvbiBSOSAyODUKICAgICAgICAgIEFNRFJhZGVvblI5MjkwOiBBTUQgUmFkZW9uIFI5IDI5MAogICAgICAgICAgQU1EUmFkZW9uUjkyOTBYOiBBTUQgUmFkZW9uIFI5IDI5MFgKICAgICAgICAgIEFNRFJhZGVvblI5Mjk1WDI6IEFNRCBSYWRlb24gUjkgMjk1WDIKICAgICAgICAgIEFNRFJhZGVvblI5MzgwOiBBTUQgUmFkZW9uIFI5IDM4MAogICAgICAgICAgQU1EUmFkZW9uUjkzODBYOiBBTUQgUmFkZW9uIFI5IDM4MFgKICAgICAgICAgIEFNRFJhZGVvblI5MzkwOiBBTUQgUmFkZW9uIFI5IDM5MAogICAgICAgICAgQU1EUmFkZW9uUjkzOTBYOiBBTUQgUmFkZW9uIFI5IDM5MFgKICAgICAgICAgIEFNRFJhZGVvblI5RnVyeVg6IEFNRCBSYWRlb24gUjkgRnVyeSBYCiAgICAgICAgICBBTURSYWRlb25SOU5hbm86IEFNRCBSYWRlb24gUjkgTmFubwogICAgICAgICAgQU1EUmFkZW9uUlg1NDAwWFQ6IEFNRCBSYWRlb24gUlggNTQwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwOiBBTUQgUmFkZW9uIFJYIDU1MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMFhUOiBBTUQgUmFkZW9uIFJYIDU1MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMDogQU1EIFJhZGVvbiBSWCA1NjAwCiAgICAgICAgICBBTURSYWRlb25SWDU2MDBYVDogQU1EIFJhZGVvbiBSWCA1NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU3MDogQU1EIFJhZGVvbiBSWCA1NzAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMDogQU1EIFJhZGVvbiBSWCA1NzAwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDBYVDogQU1EIFJhZGVvbiBSWCA1NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU4MDogQU1EIFJhZGVvbiBSWCA1ODAKICAgICAgICAgIEFNRFJhZGVvblJYNTkwOiBBTUQgUmFkZW9uIFJYIDU5MAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwOiBBTUQgUmFkZW9uIFJYIDY2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMFhUOiBBTUQgUmFkZW9uIFJYIDY2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMDogQU1EIFJhZGVvbiBSWCA2NzAwCiAgICAgICAgICBBTURSYWRlb25SWDY3MDBYVDogQU1EIFJhZGVvbiBSWCA2NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY4MDBYVDogQU1EIFJhZGVvbiBSWCA2ODAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY5MDBYVDogQU1EIFJhZGVvbiBSWCA2OTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E1NjogQU1EIFJhZGVvbiBSWCBWZWdhIDU2CiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E2NDogQU1EIFJhZGVvbiBSWCBWZWdhIDY0CiAgICAgICAgICBOVklESUFHZUZvcmNlMjEwOiBOVklESUEgR2VGb3JjZSAyMTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDEwMzA6IE5WSURJQSBHZUZvcmNlIEdUIDEwMzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUxMDogTlZJRElBIEdlRm9yY2UgR1QgNTEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MjA6IE5WSURJQSBHZUZvcmNlIEdUIDUyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTMwOiBOVklESUEgR2VGb3JjZSBHVCA1MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDU0NTogTlZJRElBIEdlRm9yY2UgR1QgNTQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MTA6IE5WSURJQSBHZUZvcmNlIEdUIDYxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjIwOiBOVklESUEgR2VGb3JjZSBHVCA2MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYzMDogTlZJRElBIEdlRm9yY2UgR1QgNjMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2NDA6IE5WSURJQSBHZUZvcmNlIEdUIDY0MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzEwOiBOVklESUEgR2VGb3JjZSBHVCA3MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDczMDogTlZJRElBIEdlRm9yY2UgR1QgNzMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA2MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDcwOiBOVklESUEgR2VGb3JjZSBHVFggMTA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzQ1OiBOVklESUEgR2VGb3JjZSBHVFggNzQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwOiBOVklESUEgR2VGb3JjZSBHVFggNzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc3MDogTlZJRElBIEdlRm9yY2UgR1RYIDc3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MDogTlZJRElBIEdlRm9yY2UgR1RYIDc4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTUwOiBOVklESUEgR2VGb3JjZSBHVFggOTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTYwOiBOVklESUEgR2VGb3JjZSBHVFggOTYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTcwOiBOVklESUEgR2VGb3JjZSBHVFggOTcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwOiBOVklESUEgR2VGb3JjZSBHVFggOTgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDE1MDogTlZJRElBIEdlRm9yY2UgTVgxNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDM1MDogTlZJRElBIEdlRm9yY2UgTVgzNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDQ1MDogTlZJRElBIEdlRm9yY2UgTVg0NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDYwOiBOVklESUEgR2VGb3JjZSBSVFggMjA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA2MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDkwOiBOVklESUEgR2VGb3JjZSBSVFggMzA5MAogICAgICAgICAgTlZJRElBTlZTMzAwOiBOVklESUEgTlZTIDMwMAogICAgICAgICAgTlZJRElBTlZTMzEwOiBOVklESUEgTlZTIDMxMAogICAgICAgICAgTlZJRElBTlZTNTEwOiBOVklESUEgTlZTIDUxMAogICAgICAgICAgTlZJRElBUXVhZHJvMjAwMDogTlZJRElBIFF1YWRybyAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm82MDA6IE5WSURJQSBRdWFkcm8gNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMTIwMDogTlZJRElBIFF1YWRybyBLMTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzIyMDA6IE5WSURJQSBRdWFkcm8gSzIyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MDAwOiBOVklESUEgUXVhZHJvIEs0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwOiBOVklESUEgUXVhZHJvIEs0MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjAwOiBOVklESUEgUXVhZHJvIEs0MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNTIwMDogTlZJRElBIFF1YWRybyBLNTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYwMDogTlZJRElBIFF1YWRybyBLNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjEwTTogTlZJRElBIFF1YWRybyBLNjEwTQogICAgICAgICAgTlZJRElBUXVhZHJvSzYyMDogTlZJRElBIFF1YWRybyBLNjIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwTTogTlZJRElBIFF1YWRybyBLNjIwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTEwMDBNOiBOVklESUEgUXVhZHJvIE0xMDAwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTIwMDA6IE5WSURJQSBRdWFkcm8gTTIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb000MDAwOiBOVklESUEgUXVhZHJvIE00MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNTAwMDogTlZJRElBIFF1YWRybyBNNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwMDA6IE5WSURJQSBRdWFkcm8gTTYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDBNOiBOVklESUEgUXVhZHJvIE02MDBNCiAgICAgICAgICBOVklESUFRdWFkcm9QMTAwMDogTlZJRElBIFF1YWRybyBQMTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDIwMDA6IE5WSURJQSBRdWFkcm8gUDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDA6IE5WSURJQSBRdWFkcm8gUDQwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDA6IE5WSURJQSBRdWFkcm8gUDQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A1MDAwOiBOVklESUEgUXVhZHJvIFA1MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwOiBOVklESUEgUXVhZHJvIFA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDAwOiBOVklESUEgUXVhZHJvIFA2MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjIwOiBOVklESUEgUXVhZHJvIFA2MjAKICAgICAgICAgIE5WSURJQVRlc2xhSzgwOiBOVklESUEgVGVzbGEgSzgwCiAgICAgICAgICBOVklESUFUZXNsYVAxMDA6IE5WSURJQSBUZXNsYSBQMTAwCiAgICAgICAgICBOVklESUFUZXNsYVQ0OiBOVklESUEgVGVzbGEgVDQKICAgICAgICAgIE5WSURJQVRlc2xhVjEwMDogTlZJRElBIFRlc2xhIFYxMDAKICAgICAgICAgIE5WSURJQVRpdGFuUlRYOiBOVklESUEgVGl0YW4gUlRYCiAgICAgICAgICBOVklESUFUaXRhblY6IE5WSURJQSBUaXRhbiBWCiAgICAgICAgICBOVklESUFUaXRhblhQYXNjYWw6IE5WSURJQSBUaXRhbiBYIChQYXNjYWwpCiAgICAgICAgICBOVklESUFUaXRhblhwOiBOVklESUEgVGl0YW4gWHAKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogMSBHQgogICAgICAgICAgJzExJzogMTEgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMic6IDIgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQnOiA0IEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBHRERSNTogR0REUjUKICAgICAgICAgIEdERFI1WDogR0REUjVYCiAgICAgICAgICBHRERSNjogR0REUjYKICAgICAgICAgIEdERFI2WDogR0REUjZYCiAgICAgICAgICBIQk0yOiBIQk0yCiAgICAgICAgICBIQk0yRTogSEJNMkUKICAgICAgICAgIEhCTUhpZ2hCYW5kd2lkdGhNZW1vcnk6IEhCTSAoSGlnaCBCYW5kd2lkdGggTWVtb3J5KQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWVtb3J5IFR5cGUKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHM6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEVkk6IERWSQogICAgICAgICAgRGlzcGxheVBvcnQ6IERpc3BsYXlQb3J0CiAgICAgICAgICBIRE1JOiBIRE1JCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFZHQTogVkdBCiAgICAgICAgICBWaXJ0dWFsTGluazogVmlydHVhbExpbmsKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBPdXRwdXRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtT3V0cHV0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnRcIiAlXVslIENhcGFjaXR5CiAgICAgICAgICA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQKICAgICAgICAgICogRGF0YS4kQ2FwYWNpdHkgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIE5hbWVVcGRhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uQ3JlYXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1DYXBhY2l0eToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDI0JzogMTAyNCBHQgogICAgICAgICAgJzEyJzogMTIgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICAnOTYnOiA5NiBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgKEdCKQogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNsb2NrUmF0ZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDAnOiAnMTAwJwogICAgICAgICAgJzEzMyc6ICcxMzMnCiAgICAgICAgICAnMTY2JzogJzE2NicKICAgICAgICAgICcyMDAnOiAnMjAwJwogICAgICAgICAgJzIzMyc6ICcyMzMnCiAgICAgICAgICAnMjY2JzogJzI2NicKICAgICAgICAgICczMDAnOiAnMzAwJwogICAgICAgICAgJzMzMyc6ICczMzMnCiAgICAgICAgICAnMzY2JzogJzM2NicKICAgICAgICAgICc0MDAnOiAnNDAwJwogICAgICAgICAgJzQ1MCc6ICc0NTAnCiAgICAgICAgICAnNTAwJzogJzUwMCcKICAgICAgICAgICc1MjUnOiAnNTI1JwogICAgICAgICAgJzYwMCc6ICc2MDAnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3JhdGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DbG9ja1JhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIFJBTSBtb2R1bGVzCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudFwiICVdWyUgQ2FwYWNpdHkgPQogICAgICAgICAgXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQgKiBEYXRhLiRDYXBhY2l0eQogICAgICAgICAgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkRlbGV0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgUkFNIChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBERFI6IEREUgogICAgICAgICAgRERSMjogRERSMgogICAgICAgICAgRERSMzogRERSMwogICAgICAgICAgRERSNDogRERSNAogICAgICAgICAgRERSNTogRERSNQogICAgICAgICAgU0RSQU06IFNEUkFNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbzoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBJUCBOZXR3b3JrCiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogUmVsZXZhbnRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBJUCBOZXR3b3JrCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1BQyBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSG9zdG5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBQcmltYXJ5CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZS1TdG9yYWdlOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBIRERIYXJkRGlza0RyaXZlOiBIREQgKEhhcmQgRGlzayBEcml2ZSkKICAgICAgICAgICAgICAgIE5WTWVTU0ROb25Wb2xhdGlsZU1lbW9yeUV4cHJlc3NTb2xpZFN0YXRlRHJpdmU6IE5WTWUgU1NEIChOb24tVm9sYXRpbGUKICAgICAgICAgICAgICAgICAgTWVtb3J5IEV4cHJlc3MgU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFNTRFNvbGlkU3RhdGVEcml2ZTogU1NEIChTb2xpZCBTdGF0ZSBEcml2ZSkKICAgICAgICAgICAgICAgIFNTSERTb2xpZFN0YXRlSHlicmlkRHJpdmU6IFNTSEQgKFNvbGlkIFN0YXRlIEh5YnJpZCBEcml2ZSkKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIFR5cGUKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtVHlwZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgQURBVEE6IEFEQVRBCiAgICAgICAgICAgICAgICBBREFUQVRlY2hub2xvZ3k6IEFEQVRBIFRlY2hub2xvZ3kKICAgICAgICAgICAgICAgIEFwYWNlcjogQXBhY2VyCiAgICAgICAgICAgICAgICBCdWZmYWxvOiBCdWZmYWxvCiAgICAgICAgICAgICAgICBDb3JzYWlyOiBDb3JzYWlyCiAgICAgICAgICAgICAgICBDcnVjaWFsTWljcm9uOiBDcnVjaWFsIChNaWNyb24pCiAgICAgICAgICAgICAgICBHVGVjaG5vbG9neVdlc3Rlcm5EaWdpdGFsOiBHLVRlY2hub2xvZ3kgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIEhHU1RXZXN0ZXJuRGlnaXRhbDogSEdTVCAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgSGl0YWNoaTogSGl0YWNoaQogICAgICAgICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICAgICAgICBLaW5nc3RvbjogS2luZ3N0b24KICAgICAgICAgICAgICAgIEtpbmdzdG9uRGlnaXRhbDogS2luZ3N0b24gRGlnaXRhbAogICAgICAgICAgICAgICAgTGFDaWVTZWFnYXRlOiBMYUNpZSAoU2VhZ2F0ZSkKICAgICAgICAgICAgICAgIExleGFyOiBMZXhhcgogICAgICAgICAgICAgICAgTWF4dG9yOiBNYXh0b3IKICAgICAgICAgICAgICAgIE9DWlRvc2hpYmE6IE9DWiAoVG9zaGliYSkKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgUE5ZOiBQTlkKICAgICAgICAgICAgICAgIFBsZXh0b3I6IFBsZXh0b3IKICAgICAgICAgICAgICAgIFNLaHluaXg6IFNLIGh5bml4CiAgICAgICAgICAgICAgICBTYW1zdW5nOiBTYW1zdW5nCiAgICAgICAgICAgICAgICBTYW1zdW5nU2VtaWNvbmR1Y3RvcjogU2Ftc3VuZyBTZW1pY29uZHVjdG9yCiAgICAgICAgICAgICAgICBTYW5EaXNrV2VzdGVybkRpZ2l0YWw6IFNhbkRpc2sgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIFNlYWdhdGU6IFNlYWdhdGUKICAgICAgICAgICAgICAgIFNpbGljb25Qb3dlcjogU2lsaWNvbiBQb3dlcgogICAgICAgICAgICAgICAgU29ueTogU29ueQogICAgICAgICAgICAgICAgU3VwZXJUYWxlbnQ6IFN1cGVyIFRhbGVudAogICAgICAgICAgICAgICAgVGVhbUdyb3VwOiBUZWFtIEdyb3VwCiAgICAgICAgICAgICAgICBUb3NoaWJhOiBUb3NoaWJhCiAgICAgICAgICAgICAgICBUcmFuc2NlbmQ6IFRyYW5zY2VuZAogICAgICAgICAgICAgICAgV2VzdGVybkRpZ2l0YWw6IFdlc3Rlcm4gRGlnaXRhbAogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgTWFudWZhY3R1cmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1vZGVsCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNb2RlbAogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1Nb2RlbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLVNlcmlhbE51bWJlcgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBTZXJpYWxOdW1iZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZQogICAgICBOYW1lOiBJVFNNU3RvcmFnZS1TdG9yYWdlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb246CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIE5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBGcmVlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUZyZWVDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIFVzZWQgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tVXNlZENhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTW91bnRQb2ludAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIE1vdW50IFBvaW50CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBTdG9yYWdlIFBhcnRpdGlvbgogICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFNvZnR3YXJlCiAgICBOYW1lOiBDbGllbnQgU29mdHdhcmUKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIExpY2Vuc2U6OkxpY2Vuc2VcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUKICAgIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zCiAgICBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5CiAgICBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoCiAgICBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZwogICAgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMKICAgIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00KICAgIExpY2Vuc2VcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuCiAgICBcICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBDbGllbnQgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBDbGllbnQgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogQ2xpZW50IFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIExpY2Vuc2UKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTGljZW5zZQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBDbHVzdGVyCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOgogICAgR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZAogICAgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zCiAgICBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5CiAgICBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoCiAgICBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZwogICAgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMKICAgIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTQogICAgR0YgQ2x1c3RlclxyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4gIENNREIgQWNjb3VudGluZzpcclxuCiAgICBcICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIElUU00tTGVuc1RvTGljZW5zZUNvdW50OgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50CiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgQ291bnQKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb206CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGUKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBUeXBlCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tUmVmZXJlbmNlVG9MaWNlbnNlOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIExpY2Vuc2UKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTGljZW5zZQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1SZWZlcmVuY2VUb1NlcnZlcjoKICAgICAgQ0lDbGFzczogQ2x1c3RlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTZXJ2ZXIKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFNlcnZlcgogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvU2VydmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogQ2x1c3RlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQWNjb3VudGluZzpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjoKICAgIEFjY291bnRpbmcgSW5mb3JtYXRpb25cclxuICAgIC0gREY6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlclxyXG4gICAgLSBERjoKICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2VcclxuICAgIC0gREY6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZVxyXG4gICAgLSBERjoKICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZVxyXG4gICAgLSBERjogSVRTTUFjY291bnRpbmctQ29zdFVuaXRcclxuICAgIC0gREY6CiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlclxyXG4gICAgLSBERjogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlclxyXG4gICAgLQogICAgREY6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0c1xyXG4gICAgLSBERjogSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHNcclxuCiAgICBcICAgLSBERjogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50IgogIFJvbGVOYW1lOiBDTURCIEFjY291bnRpbmcKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEJhY2tsaW5rczpcclxuICAgIFR5cGU6IENvbmZpZ0l0ZW1MaW5rc1xyXG4gICAgSGVhZGVyOgogICAgQmFja2xpbmtzXHJcbiAgICBMaW5rZWRBczogU291cmNlIgogIFJvbGVOYW1lOiBDTURCIEJhY2tsaW5rcwotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgRGVzY3JpcHRpb246XHJcbiAgICBUeXBlOiBEZXNjcmlwdGlvblxyXG4gICAgSGVhZGVyOgogICAgRGVzY3JpcHRpb24iCiAgUm9sZU5hbWU6IENNREIgRGVzY3JpcHRpb24KLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFN1YnNpZGlhcnk6XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIEhlYWRlcjoKICAgIFN1YnNpZGlhcnlcclxuICAgICAgLSBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9TdWJzaWRpYXJ5XHJcbiAgQWRkcmVzczpcclxuICAgIFR5cGU6CiAgICBSZWZlcmVuY2VkU2VjdGlvblxyXG4gICAgUmVmZXJlbmNlRmllbGQ6IExvY2F0aW9uLVJlZmVyZW5jZVRvU3Vic2lkaWFyeVxyXG4gICAgU2VjdGlvbk5hbWU6CiAgICBBZGRyZXNzXHJcbiAgICBGaWVsZExpc3RQcmU6XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvU3Vic2lkaWFyeSIKICBSb2xlTmFtZTogQ01EQiBHRiBCdWlsZGluZwotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgTG9jYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIEhlYWRlcjoKICAgIExvY2F0aW9uXHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb25cclxuICBBZGRyZXNzOlxyXG4gICAgVHlwZToKICAgIFJlZmVyZW5jZWRTZWN0aW9uXHJcbiAgICBSZWZlcmVuY2VGaWVsZDogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvblxyXG4gICAgU2VjdGlvbk5hbWU6CiAgICBBZGRyZXNzIgogIFJvbGVOYW1lOiBDTURCIExvY2F0ZWQgaW4KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBDb250cmFjdAogICAgTmFtZTogQ29udHJhY3QKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuXHJcbiAgLQogICAgTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCCiAgICBBY2NvdW50aW5nOjpBY2NvdW50aW5nXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG5Sb2xlczoKICAgIFxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbgogICAgXCAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4KICAgIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIENvbnRyYWN0XHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQgogICAgQWNjb3VudGluZ1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250cmFjdC1QZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcwJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IENvbnRyYWN0IHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IENvbnRyYWN0LVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRyYWN0LVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcwJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IENvbnRyYWN0IHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBDb250cmFjdC1QZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udHJhY3QtVHlwZToKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnQ29uc3VsdGluZyBBZ3JlZW1lbnQ6JzogQ29uc3VsdGluZyBBZ3JlZW1lbnQKICAgICAgICAgIEVtcGxveW1lbnQgQ29udHJhY3Q6IEVtcGxveW1lbnQgQ29udHJhY3QKICAgICAgICAgIEZyYW5jaGlzZSBBZ3JlZW1lbnQ6IEZyYW5jaGlzZSBBZ3JlZW1lbnQKICAgICAgICAgIExlYXNlIEFncmVlbWVudDogTGVhc2UgQWdyZWVtZW50CiAgICAgICAgICBMaWNlbnNlIEFncmVlbWVudDogTGljZW5zZSBBZ3JlZW1lbnQKICAgICAgICAgIExvYW4gQWdyZWVtZW50OiBMb2FuIEFncmVlbWVudAogICAgICAgICAgTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpOiBOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFydG5lcnNoaXAgQWdyZWVtZW50OiBQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQKICAgICAgICAgIFNhbGVzIENvbnRyYWN0OiBTYWxlcyBDb250cmFjdAogICAgICAgICAgU2VydmljZSBBZ3JlZW1lbnQ6IFNlcnZpY2UgQWdyZWVtZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ29udHJhY3QgVHlwZQogICAgICBOYW1lOiBDb250cmFjdC1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgSW52b2ljZQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBMb2NhdGlvbgogICAgTmFtZTogQ291bnRyeQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcwogICAgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsCiAgICBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlCiAgICBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaAogICAgY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uCiAgICByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlCiAgICB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFNvZnR3YXJlCiAgICBOYW1lOiBEYXRhYmFzZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsCiAgICBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBTZXJ2ZXI6OlNlcnZlclxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBMaWNlbnNlOjpMaWNlbnNlXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcblJvbGVzOlxyXG4gICMgUm9sZXMgYXJlCiAgICB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLCBzZWN0aW9ucwogICAgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZSBoYXZlIHNpbXBseQogICAgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4gICMgRm9yIGVhY2ggY2xhc3Mgd2l0aAogICAgY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4gICMgZGVmaW5pdGlvbiByZWZlcnJpbmcKICAgIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4gICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzCiAgICBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00KICAgIEdGIERhdGFiYXNlXHJcbiAgSVRTTSBTZXJ2ZXI6XHJcbiAgICBOYW1lOiBJVFNNIFNlcnZlclxyXG4gIElUU00gTGljZW5zZTpcclxuCiAgICBcICAgTmFtZTogSVRTTSBMaWNlbnNlXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIKICAgIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50CiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgQ291bnQKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb206CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogRGF0YWJhc2UKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGUKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBUeXBlCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tUmVmZXJlbmNlVG9MaWNlbnNlOgogICAgICBDSUNsYXNzOiBEYXRhYmFzZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tUmVmZXJlbmNlVG9TZXJ2ZXI6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIFNlcnZlcgogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogU2VydmVyCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9TZXJ2ZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Tb2Z0d2FyZS1EYXRhYmFzZVR5cGU6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQ2hyb21hIERCOiBDaHJvbWEgREIKICAgICAgICAgIEVsYXN0aWNzZWFyY2g6IEVsYXN0aWNzZWFyY2gKICAgICAgICAgIElCTSBEYjI6IElCTSBEYjIKICAgICAgICAgIE1hcmlhREI6IE1hcmlhREIKICAgICAgICAgIE1pY3Jvc29mdCBTUUwgU2VydmVyOiBNaWNyb3NvZnQgU1FMIFNlcnZlcgogICAgICAgICAgTW9uZ29EQjogTW9uZ29EQgogICAgICAgICAgTXlTUUw6IE15U1FMCiAgICAgICAgICBPcmFjbGUgRGF0YWJhc2U6IE9yYWNsZSBEYXRhYmFzZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQb3N0Z3JlU1FMOiBQb3N0Z3JlU1FMCiAgICAgICAgICBSZWRpczogUmVkaXMKICAgICAgICAgIFNRTGl0ZTogU1FMaXRlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogRGF0YWJhc2UKICAgICAgTmFtZTogSVRTTVNvZnR3YXJlLURhdGFiYXNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNvZnR3YXJlLURhdGVFbmRPZlN1cHBvcnQ6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxMCcKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IEVuZCBvZiBzdXBwb3J0CiAgICAgIE5hbWU6IElUU01Tb2Z0d2FyZS1EYXRlRW5kT2ZTdXBwb3J0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU29mdHdhcmUtRGF0ZVJlbGVhc2U6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiByZWxlYXNlCiAgICAgIE5hbWU6IElUU01Tb2Z0d2FyZS1EYXRlUmVsZWFzZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIEluZnJhc3RydWN0dXJlCiAgICAtIE5ldHdvcmsgSW5mcmFzdHJ1Y3R1cmUKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBEZXZpY2UgKHVuaWRlbnRpZmllZCkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgICBWZXJzaW9uVHJpZ2dlcjoKICAgIC0gRGVmaW5pdGlvblVwZGF0ZQogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzCiAgICBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwKICAgIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UKICAgIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoCiAgICBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24KICAgIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUKICAgIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZToKICAgIElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IERldmljZSAodW5pZGVudGlmaWVkKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IERldmljZSAodW5pZGVudGlmaWVkKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDb250YWN0IERpc3RyaWJ1dG9yCiAgICAgIE5hbWU6IENvbnRhY3QtRGlzdHJpYnV0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtVXNlcjoKICAgICAgQ0lDbGFzczogRGV2aWNlICh1bmlkZW50aWZpZWQpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogRGV2aWNlICh1bmlkZW50aWZpZWQpCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBXb3JrcGxhY2UKICAgIE5hbWU6IERpc3BsYXkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTW9kZWw6Ok1vZGVsXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuCiAgICBcIC0gTmFtZTogTG9jYXRlZCBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuXHJcblJvbGVzOlxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbAogICAgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzCiAgICBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgRGlzcGxheVxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbgogICAgXCBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQgaW46XHJcbiAgICBOYW1lOiBDTURCCiAgICBMb2NhdGVkIGluXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbgogICAgXCAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTURpc3BsYXktUG93ZXJEZWxpdmVyeToKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIE5vOiBObwogICAgICAgICAgWWVzOiBZZXMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBQb3dlciBEZWxpdmVyeQogICAgICBOYW1lOiBJVFNNRGlzcGxheS1Qb3dlckRlbGl2ZXJ5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1SZXNvbHV0aW9uOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMksgKDIwNDggeCAxMDgwKTogMksgKDIwNDggeCAxMDgwKQogICAgICAgICAgJzRLIFVsdHJhIEhEICgzODQwIHggMjE2MCk6JzogJzRLIFVsdHJhIEhEICgzODQwIHggMjE2MCk6JwogICAgICAgICAgNUsgKDUxMjAgeCAyODgwKTogNUsgKDUxMjAgeCAyODgwKQogICAgICAgICAgOEsgVWx0cmEgSEQgKDc2ODAgeCA0MzIwKTogOEsgVWx0cmEgSEQgKDc2ODAgeCA0MzIwKQogICAgICAgICAgRnVsbCBIRCAoMTkyMCB4IDEwODApOiBGdWxsIEhEICgxOTIwIHggMTA4MCkKICAgICAgICAgIEhEICgxMjgwIHggNzIwKTogSEQgKDEyODAgeCA3MjApCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFF1YWQgSEQgKDI1NjAgeCAxNDQwKTogUXVhZCBIRCAoMjU2MCB4IDE0NDApCiAgICAgICAgICBVV1FIRCAoMzQ0MCB4IDE0NDApOiBVV1FIRCAoMzQ0MCB4IDE0NDApCiAgICAgICAgICBXVVhHQSAoMTkyMCB4IDEyMDApOiBXVVhHQSAoMTkyMCB4IDEyMDApCiAgICAgICAgICBXWEdBICgxMzY2IHggNzY4KTogV1hHQSAoMTM2NiB4IDc2OCkKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNb25pdG9yIFJlc29sdXRpb24KICAgICAgTmFtZTogSVRTTURpc3BsYXktUmVzb2x1dGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTURpc3BsYXktU2l6ZUluY2g6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMjcnOiAyNyIKICAgICAgICAgICczMic6IDMyIgogICAgICAgICAgJzM0JzogMzQiCiAgICAgICAgICAnMzUnOiAzNSIKICAgICAgICAgICc0MCc6IDQwIgogICAgICAgICAgJzQzJzogNDMiCiAgICAgICAgICAnNDknOiA0OSIKICAgICAgICAgICc1NSc6IDU1IgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTW9uaXRvciBTaXplCiAgICAgIE5hbWU6IElUU01EaXNwbGF5LVNpemVJbmNoCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1UeXBlOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpOiBMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSkKICAgICAgICAgIExFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSk6IExFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSkKICAgICAgICAgIE9MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSk6IE9MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodAogICAgICAgICAgICBFbWl0dGluZyBEaW9kZSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgVG91Y2hzY3JlZW4gTW9uaXRvcjogVG91Y2hzY3JlZW4gTW9uaXRvcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogSVRTTURpc3BsYXktVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gQ29udHJhY3QKICAgIE5hbWU6IEZpbGVzCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogM1xyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuUm9sZXM6XHJcbgogICAgXCAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMKICAgIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4KICAgIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBDTURCCiAgICBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCCiAgICBEZXNjcmlwdGlvbiIKLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBOZXR3b3JrIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBJUCBOZXR3b3JrCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcblxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgSVAgTmV0d29ya1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQgogICAgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIElUU01JUE5ldHdvcmstQWRkcmVzc0FsbG9jYXRpb246CiAgICAgIENJQ2xhc3M6IElQIE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgIE5hbWU6IElUU01JUE5ldHdvcmstQWRkcmVzc0FsbG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01JUE5ldHdvcmstQ0lEUjoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ0lEUgogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLUNJRFIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01JUE5ldHdvcmstSVBQcm90b2NvbDoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLUlQUHJvdG9jb2wKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01JUE5ldHdvcmstSVBSYW5nZUVuZDoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRW5kIElQIEFkZHJlc3MKICAgICAgTmFtZTogSVRTTUlQTmV0d29yay1JUFJhbmdlRW5kCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNSVBOZXR3b3JrLUlQUmFuZ2VTdGFydDoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU3RhcnQgSVAgQWRkcmVzcwogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLUlQUmFuZ2VTdGFydAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUlQTmV0d29yay1OZXR3b3JrTGF5ZXI6CiAgICAgIENJQ2xhc3M6IElQIE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInOiAnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInCiAgICAgICAgICAnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJzogJ0xheWVyIDI6IERhdGEgTGluayBMYXllcicKICAgICAgICAgICdMYXllciAzOiBOZXR3b3JrIExheWVyJzogJ0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInCiAgICAgICAgICAnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJzogJ0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KScKICAgICAgICAgICdMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInOiAnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJwogICAgICAgICAgJ0xheWVyIDU6IFNlc3Npb24gTGF5ZXInOiAnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcicKICAgICAgICAgICdMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInOiAnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJwogICAgICAgICAgJ0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJzogJ0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTmV0d29yayBMYXllcgogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLU5ldHdvcmtMYXllcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQ2xpZW50IFNvZnR3YXJlOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgQ2xpZW50IFNvZnR3YXJlXHJcbiAgICAtIERGOiBJVFNNQ2xpZW50U29mdHdhcmUtUmVmZXJlbmNlVG9DbGllbnRTb2Z0d2FyZSIKICBSb2xlTmFtZTogSVRTTSBDbGllbnQgU29mdHdhcmUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIENvbnRhY3Q6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IENvbnRhY3RcclxuCiAgICBcICAgLSBERjogQ29udGFjdC1EaXN0cmlidXRvclxyXG4gICAgLSBERjogQ29udGFjdC1Vc2VyXHJcbiAgICAtIERGOiBDb250YWN0LUFkbWluaXN0cmF0b3IiCiAgUm9sZU5hbWU6IElUU00gQ29udGFjdAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQ29udHJhY3Q6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IENvbnRyYWN0XHJcbgogICAgXCAgIC0gREY6IElUU00tUmVmZXJlbmNlVG9Db250cmFjdFxyXG4gICAgLSBERjogSVRTTS1MZW5zVG9Db250cmFjdFR5cGVcclxuICAgICAgUmVhZG9ubHk6CiAgICAxXHJcbiAgICAtIERGOiBJVFNNLUxlbnNUb0NvbnRyYWN0UGVyaW9kRnJvbVxyXG4gICAgICBSZWFkb25seTogMVxyXG4gICAgLSBERjoKICAgIElUU00tTGVuc1RvQ29udHJhY3RQZXJpb2RVbnRpbFxyXG4gICAgICBSZWFkb25seTogMSIKICBSb2xlTmFtZTogSVRTTSBDb250cmFjdAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQ1BVOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBIZWFkZXI6IENQVVxyXG4KICAgIFwgICAgIC0gREY6IENQVS1DUFVDbGFzc1xyXG4gICAgICAtIERGOiBDUFUtTnVtYmVyT2ZDUFVcclxuICAgICAgLSBERjogQ1BVLVBoeXNpY2FsQ29yZXNcclxuCiAgICBcICAgICAtIERGOiBDUFUtVGhyZWFkc1xyXG4gICAgICAtIERGOiBDUFUtQ2xvY2tzcGVlZFxyXG4gICAgICAtIERGOiBDUFUtU29ja2V0VHlwZSIKICBSb2xlTmFtZTogSVRTTSBDUFUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEZvcm0gRmFjdG9yOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgRm9ybSBGYWN0b3JcclxuICAgIC0gREY6IElUU01Gb3JtRmFjdG9yLVR5cGVcclxuICAgIC0gREY6IElUU01Gb3JtRmFjdG9yLVJhY2tVbml0c1xyXG4KICAgIFwgICAtIERGOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGhcclxuICAgIC0gREY6IElUU01Gb3JtRmFjdG9yLVdlaWdodCIKICBSb2xlTmFtZTogSVRTTSBGb3JtIEZhY3RvcgotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNQXBwbGlhbmNlLUFwcGxpYW5jZVR5cGUiCiAgUm9sZU5hbWU6IElUU00gR0YgQXBwbGlhbmNlCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01DZXJ0aWZpY2F0ZS1UeXBlXHJcbiAgICAgIC0gREY6CiAgICBJVFNNQ2VydGlmaWNhdGUtQ3JlYXRpb25EYXRlXHJcbiAgICAgIC0gREY6IElUU01DZXJ0aWZpY2F0ZS1FeHBpcnlEYXRlIgogIFJvbGVOYW1lOiBJVFNNIEdGIENlcnRpZmljYXRlCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01DbGllbnQtQ2xpZW50Q2F0ZWdvcnlcclxuICAgICAgLQogICAgREY6IElUU01DbGllbnQtRmlybXdhcmUiCiAgUm9sZU5hbWU6IElUU00gR0YgQ2xpZW50Ci0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBTdW1tYXJ5XHJcbiAgICAgIC0gREY6IElUU00tUmVmZXJlbmNlVG9TZXJ2ZXIiCiAgUm9sZU5hbWU6IElUU00gR0YgQ2x1c3RlcgotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBDb250cmFjdC1UeXBlXHJcbiAgICAgIC0gREY6IENvbnRyYWN0LVBlcmlvZEZyb21cclxuCiAgICBcICAgICAtIERGOiBDb250cmFjdC1QZXJpb2RVbnRpbCIKICBSb2xlTmFtZTogSVRTTSBHRiBDb250cmFjdAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNU29mdHdhcmUtRGF0YWJhc2VUeXBlXHJcbiAgICAgIC0KICAgIERGOiBJVFNNU29mdHdhcmUtRGF0ZVJlbGVhc2VcclxuICAgICAgLSBERjogSVRTTVNvZnR3YXJlLURhdGVFbmRPZlN1cHBvcnQiCiAgUm9sZU5hbWU6IElUU00gR0YgRGF0YWJhc2UKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEdlbmVyYWwgSW5mb3JtYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBIZWFkZXI6IEdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgLSBERjogSVRTTURpc3BsYXktU2l6ZUluY2hcclxuICAgICAgLSBERjoKICAgIElUU01EaXNwbGF5LVR5cGVcclxuICAgICAgLSBERjogSVRTTURpc3BsYXktUmVzb2x1dGlvblxyXG4gICAgICAtIERGOiBJVFNNRGlzcGxheS1Qb3dlckRlbGl2ZXJ5IgogIFJvbGVOYW1lOiBJVFNNIEdGIERpc3BsYXkKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEdlbmVyYWwgSW5mb3JtYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBIZWFkZXI6IEdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgLSBERjogSVRTTUlQTmV0d29yay1OZXR3b3JrTGF5ZXJcclxuICAgICAgLQogICAgREY6IElUU01JUE5ldHdvcmstSVBQcm90b2NvbFxyXG4gICAgICAtIERGOiBJVFNNSVBOZXR3b3JrLUFkZHJlc3NBbGxvY2F0aW9uXHJcbgogICAgXCAgICAgLSBERjogSVRTTUlQTmV0d29yay1JUFJhbmdlU3RhcnRcclxuICAgICAgLSBERjogSVRTTUlQTmV0d29yay1JUFJhbmdlRW5kXHJcbgogICAgXCAgICAgLSBERjogSVRTTUlQTmV0d29yay1DSURSIgogIFJvbGVOYW1lOiBJVFNNIEdGIElQIE5ldHdvcmsKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEdlbmVyYWwgSW5mb3JtYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBIZWFkZXI6IEdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgLSBERjogSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGVcclxuICAgICAgLQogICAgREY6IElUU01MaWNlbnNlLUxpY2Vuc2VLZXlcclxuICAgICAgLSBERjogSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50XHJcbiAgICAgIC0KICAgIERGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbVxyXG4gICAgICAtIERGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwiCiAgUm9sZU5hbWU6IElUU00gR0YgTGljZW5zZQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNT3RoZXJBY2Nlc3Nvcmllcy1UeXBlIgogIFJvbGVOYW1lOiBJVFNNIEdGIE90aGVyIEFjY2Vzc29yaWVzCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01QaG9uZS1UeXBlXHJcbiAgICAgIC0gREY6IElUU01QaG9uZS1OdW1iZXIiCiAgUm9sZU5hbWU6IElUU00gR0YgUGhvbmUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFJhY2s6XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb1Jvb21cclxuCiAgICBcIEFkZHJlc3M6XHJcbiAgICBUeXBlOiBSZWZlcmVuY2VkU2VjdGlvblxyXG4gICAgUmVmZXJlbmNlRmllbGQ6IExvY2F0aW9uLVJlZmVyZW5jZVRvUm9vbVxyXG4KICAgIFwgICBTZWN0aW9uTmFtZTogQWRkcmVzcyIKICBSb2xlTmFtZTogSVRTTSBHRiBSYWNrCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01TSU0tQ2FyZG51bWJlclxyXG4gICAgICAtIERGOiBJVFNNU0lNLVBJTlxyXG4KICAgIFwgICAgIC0gREY6IElUU01TSU0tUElOMlxyXG4gICAgICAtIERGOiBJVFNNU0lNLVBVS1xyXG4gICAgICAtIERGOiBJVFNNU0lNLVBVSzJcclxuCiAgICBcICAgICAtIERGOiBJVFNNU0lNLU1vYmlsZU51bWJlclxyXG4gICAgICAtIERGOiBJVFNNLVJlZmVyZW5jZVRvQ29udHJhY3RcclxuICAgICAgLQogICAgREY6IElUU01TSU0tVHlwZSIKICBSb2xlTmFtZTogSVRTTSBHRiBTSU0gQ2FyZAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNVVBTLU1heGltdW1Mb2FkQ2FwYWNpdHlcclxuICAgICAgLQogICAgREY6IElUU01VUFMtQmF0dGVyeVR5cGVcclxuICAgICAgLSBERjogSVRTTVVQUy1CYXR0ZXJ5Q2FwYWNpdHkiCiAgUm9sZU5hbWU6IElUU00gR0YgVVBTCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHcmFwaGljcyBDYXJkOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgR3JhcGhpY3MgQ2FyZHNcclxuICAgIC0gREY6IElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yXHJcbiAgICAtIERGOiBJVFNNR3JhcGhpY3NDYXJkLUNvdW50XHJcbgogICAgXCAgIC0gREY6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVxyXG4gICAgLSBERjogSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCXHJcbgogICAgXCAgICAgUmVhZG9ubHk6IDFcclxuICAgIC0gREY6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZVxyXG4gICAgLSBERjogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2VcclxuCiAgICBcICAgLSBERjogSVRTTUdyYXBoaWNzQ2FyZC1PdXRwdXRzIgogIFJvbGVOYW1lOiBJVFNNIEdyYXBoaWNzIENhcmQKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIExpY2Vuc2U6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IExpY2Vuc2VcclxuCiAgICBcICAgLSBERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2VcclxuICAgIC0gREY6IElUU00tTGVuc1RvTGljZW5zZVR5cGVcclxuICAgICAgUmVhZG9ubHk6CiAgICAxXHJcbiAgICAtIERGOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudFxyXG4gICAgICBSZWFkb25seTogMVxyXG4gICAgLSBERjogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbVxyXG4KICAgIFwgICAgIFJlYWRvbmx5OiAxXHJcbiAgICAtIERGOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbFxyXG4gICAgICBSZWFkb25seToKICAgIDEiCiAgUm9sZU5hbWU6IElUU00gTGljZW5zZQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgTWVtb3J5OlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOiBNZW1vcnlcclxuCiAgICBcICAgLSBERjogSVRTTU1lbW9yeS1Db3VudFxyXG4gICAgLSBERjogSVRTTU1lbW9yeS1DYXBhY2l0eVxyXG4gICAgLSBERjogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCXHJcbgogICAgXCAgICAgUmVhZG9ubHk6IDFcclxuICAgIC0gREY6IElUU01NZW1vcnktQ2xvY2tSYXRlXHJcbiAgICAtIERGOiBJVFNNTWVtb3J5LVR5cGUiCiAgUm9sZU5hbWU6IElUU00gTWVtb3J5Ci0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBNb2RlbDpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjogSGFyZHdhcmUKICAgIE1vZGVsXHJcbiAgICAtIERGOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyXHJcbiAgICAtIERGOiBJVFNNTW9kZWwtTW9kZWxcclxuICAgIC0KICAgIERGOiBJVFNNTW9kZWwtU2VydmljZVRhZ1xyXG4gICAgLSBERjogSVRTTU1vZGVsLVNlcmlhbE51bWJlclxyXG4gICAgLSBERjogSVRTTU1vZGVsLU1vZGVsTm90ZSIKICBSb2xlTmFtZTogSVRTTSBNb2RlbAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgTmV0d29yayBJbmZvOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgTmV0d29ya1xyXG4gICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvIgogIFJvbGVOYW1lOiBJVFNNIE5ldHdvcmsgSW5mbwotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjoKICAgIE9wZXJhdGluZyBTeXN0ZW1cclxuICAgIC0gREY6IElUU00tUmVmZXJlbmNlVG9PUyIKICBSb2xlTmFtZTogSVRTTSBPcGVyYXRpbmcgU3lzdGVtCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBTZXJ2ZXI6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IFNlcnZlclxyXG4KICAgIFwgICAtIERGOiBJVFNNLVJlZmVyZW5jZVRvU2VydmVyIgogIFJvbGVOYW1lOiBJVFNNIFNlcnZlcgotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgU2VydmVyIFNvZnR3YXJlOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgU2VydmVyIFNvZnR3YXJlXHJcbiAgICAtIERGOiBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZSIKICBSb2xlTmFtZTogSVRTTSBTZXJ2ZXIgU29mdHdhcmUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFNJTSBDYXJkOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOiBTSU0KICAgIENhcmRcclxuICAgIC0gREY6IElUU01TSU0tUmVmZXJlbmNldG9TSU1DYXJkXHJcbiAgICAtIERGOiBJVFNNU0lNLUxlbnN0b1NJTUlNb2JpbGVOdW1iZXIiCiAgUm9sZU5hbWU6IElUU00gU0lNIENhcmQKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFN0b3JhZ2U6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IFN0b3JhZ2VcclxuCiAgICBcICAgLSBERjogSVRTTVN0b3JhZ2UtU3RvcmFnZSIKICBSb2xlTmFtZTogSVRTTSBTdG9yYWdlCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBTdG9yYWdlIFBhcnRpdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjoKICAgIFN0b3JhZ2UgUGFydGl0aW9uXHJcbiAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb24iCiAgUm9sZU5hbWU6IElUU00gU3RvcmFnZSBQYXJ0aXRpb24KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBDb250cmFjdAogICAgTmFtZTogTGljZW5zZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuICAtCiAgICBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgTGljZW5zZVxyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4KICAgIFwgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOgogICAgQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IExpY2Vuc2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcGVyYXRpbmcgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZToKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IEN1c3RvbWVyQ29tcGFueU5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogUHVyY2hhc2VkIGF0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudDoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3VudCBvZiBsaWNlbnNlcwogICAgICBOYW1lOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01MaWNlbnNlLUxpY2Vuc2VLZXk6CiAgICAgIENJQ2xhc3M6IExpY2Vuc2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTGljZW5zZSBLZXkKICAgICAgTmFtZTogSVRTTUxpY2Vuc2UtTGljZW5zZUtleQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb206CiAgICAgIENJQ2xhc3M6IExpY2Vuc2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6IDAKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAwCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMTAnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQUdQTEFmZmVyb0dlbmVyYWxQdWJsaWNMaWNlbnNlOiBBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSkKICAgICAgICAgIEFwYWNoZUxpY2Vuc2U6IEFwYWNoZSBMaWNlbnNlCiAgICAgICAgICBCU0RMaWNlbnNlQmVya2VsZXlTb2Z0d2FyZURpc3RyaWJ1dGlvbkxpY2Vuc2U6IEJTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZQogICAgICAgICAgICBEaXN0cmlidXRpb24gTGljZW5zZSkKICAgICAgICAgIENDMENyZWF0aXZlQ29tbW9uc1plcm86IENDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKQogICAgICAgICAgQ3JlYXRpdmVDb21tb25zOiBDcmVhdGl2ZSBDb21tb25zCiAgICAgICAgICBFUExFY2xpcHNlUHVibGljTGljZW5zZTogRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKQogICAgICAgICAgRnJlZXdhcmU6IEZyZWV3YXJlCiAgICAgICAgICBHUExHZW5lcmFsUHVibGljTGljZW5zZTogR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKQogICAgICAgICAgTEdQTExlc3NlckdlbmVyYWxQdWJsaWNMaWNlbnNlOiBMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSkKICAgICAgICAgIE1JVExpY2Vuc2U6IE1JVCBMaWNlbnNlCiAgICAgICAgICBNUExNb3ppbGxhUHVibGljTGljZW5zZTogTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQZXJwZXR1YWxsaWNlbnNlczogUGVycGV0dWFsIGxpY2Vuc2VzCiAgICAgICAgICBQdWJsaWNEb21haW46IFB1YmxpYyBEb21haW4KICAgICAgICAgIFNlYXRsaWNlbnNlczogU2VhdCBsaWNlbnNlcwogICAgICAgICAgU2hhcmV3YXJlOiBTaGFyZXdhcmUKICAgICAgICAgIFN1YnNjcmlwdGlvbmJhc2VkbGljZW5zZXM6IFN1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcwogICAgICAgICAgVm9sdW1lbGljZW5zZXM6IFZvbHVtZSBsaWNlbnNlcwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogTW9iaWxlIERldmljZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTW9kZWw6Ok1vZGVsXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTSU0gQ2FyZDo6U0lNCiAgICBDYXJkXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIENvbnRhY3Q6OkNvbnRhY3RcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlCiAgICBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQKICAgIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiCiAgICBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywKICAgIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZQogICAgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MKICAgIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbiAgSVRTTSBTSU0gQ2FyZDpcclxuCiAgICBcICAgTmFtZTogSVRTTSBTSU0gQ2FyZFxyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIKICAgIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIKICAgIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcGVyYXRpbmcgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZToKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IEN1c3RvbWVyQ29tcGFueU5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogUHVyY2hhc2VkIGF0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tTGVuc3RvU0lNSU1vYmlsZU51bWJlcjoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01TSU0tTW9iaWxlTnVtYmVyCiAgICAgICAgUmVmZXJlbmNlREY6IElUU01TSU0tUmVmZXJlbmNldG9TSU1DYXJkCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTVNJTS1SZWZlcmVuY2V0b1NJTUNhcmQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IE1vYmlsZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTVNJTS1MZW5zdG9TSU1JTW9iaWxlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU0lNLVJlZmVyZW5jZXRvU0lNQ2FyZDoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTSU0gQ2FyZAogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBTSU0gQ2FyZAogICAgICBOYW1lOiBJVFNNU0lNLVJlZmVyZW5jZXRvU0lNQ2FyZAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFNvZnR3YXJlCiAgICBOYW1lOiBPcGVyYXRpbmcgU3lzdGVtCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogM1xyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTGljZW5zZTo6TGljZW5zZVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46CiAgICAyXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNCiAgICBMaWNlbnNlOlxyXG4gICAgTmFtZTogSVRTTSBMaWNlbnNlXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbgogICAgXCBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6CiAgICBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudDoKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RVbnRpbAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlVHlwZToKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgSW52b2ljZQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlcnN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBPdGhlciBBY2Nlc3NvcmllcwogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgXHJcbgogICAgXCAtIE5hbWU6IExvY2F0ZWQgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIE90aGVyIEFjY2Vzc29yaWVzXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZToKICAgIENNREIgQWNjb3VudGluZ1xyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZAogICAgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbgogICAgXCBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU90aGVyQWNjZXNzb3JpZXMtVHlwZToKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBDYXJkIFJlYWRlcjogQ2FyZCBSZWFkZXIKICAgICAgICAgIEV4dGVybmFsIEhhcmQgRHJpdmU6IEV4dGVybmFsIEhhcmQgRHJpdmUKICAgICAgICAgIEhlYWRzZXQ6IEhlYWRzZXQKICAgICAgICAgIEtleWJvYXJkOiBLZXlib2FyZAogICAgICAgICAgTW91c2U6IE1vdXNlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFNwZWFrZXJzOiBTcGVha2VycwogICAgICAgICAgVVNCIEh1YjogVVNCIEh1YgogICAgICAgICAgVlIgSGVhZHNldDogVlIgSGVhZHNldAogICAgICAgICAgV2ViY2FtOiBXZWJjYW0KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUeXBlCiAgICAgIE5hbWU6IElUU01PdGhlckFjY2Vzc29yaWVzLVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBXb3JrcGxhY2UKICAgIE5hbWU6IFBob25lCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogM1xyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwKICAgIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbgogICAgXCAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuCiAgICBcIC0gTmFtZTogTG9jYXRlZCBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuXHJcblJvbGVzOlxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbAogICAgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzCiAgICBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgUGhvbmVcclxuICBJVFNNIE1vZGVsOlxyXG4gICAgTmFtZTogSVRTTSBNb2RlbFxyXG4KICAgIFwgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgSVRTTSBOZXR3b3JrIEluZm86XHJcbiAgICBOYW1lOgogICAgSVRTTSBOZXR3b3JrIEluZm9cclxuICBDTURCIExvY2F0ZWQgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBDTURCCiAgICBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCCiAgICBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgREhDUDogREhDUAogICAgICAgICAgICAgICAgREhDUCBSZXNlcnZlZDogREhDUCBSZXNlcnZlZAogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTdGF0aWM6IFN0YXRpYwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFkZHJlc3MgQWxsb2NhdGlvbgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgICAgLSBTd2l0Y2gKICAgICAgICAgICAgICAtIFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgT2JqZWN0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogRlFETgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFjdGl2ZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBJbmZvcm1hdGlvbgogICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm8KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01QaG9uZS1OdW1iZXI6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBQaG9uZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTVBob25lLU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVBob25lLVR5cGU6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQW5hbG9nIFBob25lOiBBbmFsb2cgUGhvbmUKICAgICAgICAgIENvbmZlcmVuY2UgUGhvbmU6IENvbmZlcmVuY2UgUGhvbmUKICAgICAgICAgIENvcmRsZXNzIFBob25lIChERUNUIFBob25lKTogQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpCiAgICAgICAgICBMYW5kbGluZSBQaG9uZTogTGFuZGxpbmUgUGhvbmUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2F0ZWxsaXRlIFBob25lOiBTYXRlbGxpdGUgUGhvbmUKICAgICAgICAgIFZvSVAgUGhvbmU6IFZvSVAgUGhvbmUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBQaG9uZSBUeXBlCiAgICAgIE5hbWU6IElUU01QaG9uZS1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBQcmludGVyCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsKICAgIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBMb2NhdGVkIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZQogICAgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28KICAgIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQKICAgIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMKICAgIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoCiAgICB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZQogICAgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbgogICAgXCAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4KICAgIFwgSVRTTSBOZXR3b3JrIEluZm86XHJcbiAgICBOYW1lOiBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIENNREIgQWNjb3VudGluZzpcclxuCiAgICBcICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSVB2NDogSVB2NAogICAgICAgICAgICAgICAgSVB2NjogSVB2NgogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IElQIFByb3RvY29sCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgREhDUDogREhDUAogICAgICAgICAgICAgICAgREhDUCBSZXNlcnZlZDogREhDUCBSZXNlcnZlZAogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTdGF0aWM6IFN0YXRpYwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFkZHJlc3MgQWxsb2NhdGlvbgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgICAgLSBTd2l0Y2gKICAgICAgICAgICAgICAtIFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgT2JqZWN0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IG9iamVjdCBwb3J0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogRlFETgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBDTkFNRS9BbGlhcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFjdGl2ZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBJbmZvcm1hdGlvbgogICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm8KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogUHJvamVjdG9yCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsKICAgIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBMb2NhdGVkIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZQogICAgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28KICAgIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQKICAgIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMKICAgIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoCiAgICB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZQogICAgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbgogICAgXCAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4KICAgIFwgSVRTTSBOZXR3b3JrIEluZm86XHJcbiAgICBOYW1lOiBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIENNREIgQWNjb3VudGluZzpcclxuCiAgICBcICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlcnN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgICAtIFN3aXRjaAogICAgICAgICAgICAgIC0gV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBPYmplY3QKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBGUUROCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWN0aXZlCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBOZXR3b3JrIEluZm9ybWF0aW9uCiAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBJbmZyYXN0cnVjdHVyZQogICAgLSBMb2NhdGlvbgogICAgLSBOZXR3b3JrIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBSYWNrCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOgogICAgUm9vbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBGb3JtIEZhY3Rvcjo6Rm9ybSBGYWN0b3JcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyICAgICAgICBcclxuCiAgICBcICAgICAtIFNlY3Rpb246IEFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00KICAgIEZvcm0gRmFjdG9yOlxyXG4gICAgTmFtZTogSVRTTSBGb3JtIEZhY3RvclxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQgogICAgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb25cclxuXHJcblNlY3Rpb25zOlxyXG4KICAgIFwgUm9vbTpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvUm9vbVxyXG4gIEFkZHJlc3M6XHJcbgogICAgXCAgIFR5cGU6IFJlZmVyZW5jZWRTZWN0aW9uXHJcbiAgICBSZWZlcmVuY2VGaWVsZDogTG9jYXRpb24tUmVmZXJlbmNlVG9Sb29tXHJcbgogICAgXCAgIFNlY3Rpb25OYW1lOiBBZGRyZXNzXHJcbiAgICBGaWVsZExpc3RQcmU6XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvUm9vbSIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTUZvcm1GYWN0b3ItUmFja0RlcHRoOgogICAgICBDSUNsYXNzOiBSYWNrCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMjMuNiBpbmNoZXMgKDYwMCBtbSk6IDIzLjYgaW5jaGVzICg2MDAgbW0pCiAgICAgICAgICAzMS41IGluY2hlcyAoODAwIG1tKTogMzEuNSBpbmNoZXMgKDgwMCBtbSkKICAgICAgICAgIDM1LjQgaW5jaGVzICg5MDAgbW0pOiAzNS40IGluY2hlcyAoOTAwIG1tKQogICAgICAgICAgMzkuNCBpbmNoZXMgKDEwMDAgbW0pOiAzOS40IGluY2hlcyAoMTAwMCBtbSkKICAgICAgICAgIDQzLjMgaW5jaGVzICgxMTAwIG1tKTogJzQzLjMgaW5jaGVzICgxMTAwIG1tKTonCiAgICAgICAgICA0Ny4yIGluY2hlcyAoMTIwMCBtbSk6IDQ3LjIgaW5jaGVzICgxMjAwIG1tKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBEZXB0aAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGgKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tVbml0czoKICAgICAgQ0lDbGFzczogUmFjawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknCiAgICAgICAgICAnMTAnOiAnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJwogICAgICAgICAgJzEyJzogJzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknCiAgICAgICAgICAnMTUnOiAnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKScKICAgICAgICAgICcxOCc6ICcxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknCiAgICAgICAgICAnMic6ICcyVTogMy41IGluY2hlcyAoOC44OSBjbSknCiAgICAgICAgICAnMjAnOiAnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJwogICAgICAgICAgJzIyJzogJzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKScKICAgICAgICAgICcyNCc6ICcyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKScKICAgICAgICAgICcyNyc6ICcyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKScKICAgICAgICAgICczJzogJzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJwogICAgICAgICAgJzMwJzogJzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknCiAgICAgICAgICAnMzMnOiAnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknCiAgICAgICAgICAnMzYnOiAnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknCiAgICAgICAgICAnMzknOiAnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknCiAgICAgICAgICAnNCc6ICc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKScKICAgICAgICAgICc0Mic6ICc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJwogICAgICAgICAgJzQ1JzogJzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJwogICAgICAgICAgJzQ4JzogJzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJwogICAgICAgICAgJzUnOiAnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknCiAgICAgICAgICAnNic6ICc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKScKICAgICAgICAgICc3JzogJzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKScKICAgICAgICAgICc4JzogJzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKScKICAgICAgICAgICc5JzogJzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKScKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFJhY2sgVW5pdHMgKFUpCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVJhY2tVbml0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItVHlwZToKICAgICAgQ0lDbGFzczogUmFjawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE5LWluY2ggUmFjazogMTktaW5jaCBSYWNrCiAgICAgICAgICAyMS1pbmNoIFJhY2s6IDIxLWluY2ggUmFjawogICAgICAgICAgMjMtaW5jaCBSYWNrOiAyMy1pbmNoIFJhY2sKICAgICAgICAgIEN1c3RvbSBSYWNrOiBDdXN0b20gUmFjawogICAgICAgICAgRVRTSSBSYWNrOiBFVFNJIFJhY2sKICAgICAgICAgIE1pbmktUmFjazogTWluaS1SYWNrCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRvd2VyOiBUb3dlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEZvcm0gRmFjdG9yCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVdlaWdodDoKICAgICAgQ0lDbGFzczogUmFjawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSGFyZHdhcmUgV2VpZ2h0CiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVdlaWdodAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Sb29tOgogICAgICBDSUNsYXNzOiBSYWNrCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIFJvb20KICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBSb29tCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvUm9vbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIExvY2F0aW9uCiAgICBOYW1lOiBSb29tCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOgogICAgQnVpbGRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIEFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOgogICAgM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcwogICAgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsCiAgICBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlCiAgICBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaAogICAgY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uCiAgICByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlCiAgICB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uXHJcblxyXG5TZWN0aW9uczpcclxuCiAgICBcIEJ1aWxkaW5nOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9CdWlsZGluZ1xyXG4gIEFkZHJlc3M6XHJcbgogICAgXCAgIFR5cGU6IFJlZmVyZW5jZWRTZWN0aW9uXHJcbiAgICBSZWZlcmVuY2VGaWVsZDogTG9jYXRpb24tUmVmZXJlbmNlVG9CdWlsZGluZ1xyXG4KICAgIFwgICBTZWN0aW9uTmFtZTogQWRkcmVzc1xyXG4gICAgRmllbGRMaXN0UHJlOlxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0J1aWxkaW5nIgogIER5bmFtaWNGaWVsZHM6CiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0J1aWxkaW5nOgogICAgICBDSUNsYXNzOiBSb29tCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBCdWlsZGluZwogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0J1aWxkaW5nCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gTmV0d29yayBJbmZyYXN0cnVjdHVyZQogICAgTmFtZTogUm91dGVyIChGaXJld2FsbCkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBSb3dTcGFuOgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuICAtIE5hbWU6IE5ldHdvcmsKICAgIEluZm9cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbiAgLSBOYW1lOiBBY2NvdW50aW5nXHJcbgogICAgXCAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBBY2NvdW50aW5nOjpBY2NvdW50aW5nXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBMb2NhdGVkCiAgICBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQKICAgIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4KICAgIFwgICAgICAgXHJcblJvbGVzOlxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbAogICAgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzCiAgICBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00KICAgIE1vZGVsOlxyXG4gICAgTmFtZTogSVRTTSBNb2RlbFxyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4KICAgIFwgQ01EQiBMb2NhdGVkIGluOlxyXG4gICAgTmFtZTogQ01EQiBMb2NhdGVkIGluXHJcbiAgSVRTTSBOZXR3b3JrIEluZm86XHJcbiAgICBOYW1lOgogICAgSVRTTSBOZXR3b3JrIEluZm9cclxuICBDTURCIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCCiAgICBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCCiAgICBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgREhDUDogREhDUAogICAgICAgICAgICAgICAgREhDUCBSZXNlcnZlZDogREhDUCBSZXNlcnZlZAogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTdGF0aWM6IFN0YXRpYwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFkZHJlc3MgQWxsb2NhdGlvbgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgICAgLSBTd2l0Y2gKICAgICAgICAgICAgICAtIFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgT2JqZWN0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogRlFETgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFjdGl2ZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBJbmZvcm1hdGlvbgogICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm8KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBJbmZyYXN0cnVjdHVyZQogICAgTmFtZTogU2VydmVyCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZwogICAgU3lzdGVtOjpPcGVyYXRpbmcgU3lzdGVtXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG4KICAgIFwgLSBOYW1lOiBIYXJkd2FyZVxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTQogICAgQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gR3JhcGhpY3MgQ2FyZDo6R3JhcGhpY3MgQ2FyZFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlOjpTdG9yYWdlXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOjpTdG9yYWdlIFBhcnRpdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBGb3JtIEZhY3Rvcjo6Rm9ybSBGYWN0b3JcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuXHJcbiAgLSBOYW1lOiBTb2Z0d2FyZVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZyBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU2VydmVyIFNvZnR3YXJlOjpTZXJ2ZXIgU29mdHdhcmVcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuXHJcbiAgLSBOYW1lOiBOZXR3b3JrIEluZm9cclxuCiAgICBcICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG5cclxuICAtIE5hbWU6IEFjY291bnRpbmdcclxuCiAgICBcICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBBY2NvdW50aW5nOjpBY2NvdW50aW5nXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBMb2NhdGVkCiAgICBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQKICAgIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG5cclxuCiAgICBcIC0gTmFtZTogRGV0YWlsc1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTQogICAgTW9kZWw6Ok1vZGVsXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENQVTo6Q1BVXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1lbW9yeTo6TWVtb3J5XHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIEdyYXBoaWNzIENhcmQ6OkdyYXBoaWNzIENhcmRcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZwogICAgU3lzdGVtOjpPcGVyYXRpbmcgU3lzdGVtXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogSVRTTSBTZXJ2ZXIgU29mdHdhcmU6OlNlcnZlciBTb2Z0d2FyZVxyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZTo6U3RvcmFnZVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjo6U3RvcmFnZQogICAgUGFydGl0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIEZvcm0gRmFjdG9yOjpGb3JtIEZhY3RvclxyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDVcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzCiAgICBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwKICAgIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UKICAgIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoCiAgICBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24KICAgIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUKICAgIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6CiAgICBJVFNNIE1vZGVsXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgQ01EQiBMb2NhdGVkIGluOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBJVFNNIE9wZXJhdGluZyBTeXN0ZW06XHJcbiAgICBOYW1lOiBJVFNNIE9wZXJhdGluZwogICAgU3lzdGVtXHJcbiAgSVRTTSBTZXJ2ZXIgU29mdHdhcmU6XHJcbiAgICBOYW1lOiBJVFNNIFNlcnZlciBTb2Z0d2FyZSAgXHJcbiAgSVRTTQogICAgQ1BVOlxyXG4gICAgTmFtZTogSVRTTSBDUFVcclxuICBJVFNNIE1lbW9yeTpcclxuICAgIE5hbWU6IElUU00gTWVtb3J5XHJcbiAgSVRTTQogICAgR3JhcGhpY3MgQ2FyZDpcclxuICAgIE5hbWU6IElUU00gR3JhcGhpY3MgQ2FyZFxyXG4gIElUU00gU3RvcmFnZTpcclxuICAgIE5hbWU6CiAgICBJVFNNIFN0b3JhZ2VcclxuICBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOlxyXG4gICAgTmFtZTogSVRTTSBTdG9yYWdlIFBhcnRpdGlvbgogICAgXCAgIFxyXG4gIElUU00gRm9ybSBGYWN0b3I6XHJcbiAgICBOYW1lOiBJVFNNIEZvcm0gRmFjdG9yXHJcbiAgSVRTTSBOZXR3b3JrIEluZm86XHJcbgogICAgXCAgIE5hbWU6IElUU00gTmV0d29yayBJbmZvXHJcbiAgSVRTTSBMaWNlbnNlOlxyXG4gICAgTmFtZTogSVRTTSBMaWNlbnNlXHJcbiAgQ01EQgogICAgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQgogICAgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENQVS1DUFVDbGFzczoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRGVza3RvcDogRGVza3RvcAogICAgICAgICAgTGFwdG9wOiBMYXB0b3AKICAgICAgICAgIE1vYmlsZUVtYmVkZGVkOiBNb2JpbGUvRW1iZWRkZWQKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2VydmVyOiBTZXJ2ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDUFUgQ2xhc3MKICAgICAgTmFtZTogQ1BVLUNQVUNsYXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtQ2xvY2tzcGVlZDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMTZHSHo6IDEuNiBHSHoKICAgICAgICAgIDE3R0h6OiAxLjcgR0h6CiAgICAgICAgICAxOEdIejogMS44IEdIegogICAgICAgICAgMTlHSHo6IDEuOSBHSHoKICAgICAgICAgIDIwR0h6OiAyLjAgR0h6CiAgICAgICAgICAyMUdIejogMi4xIEdIegogICAgICAgICAgMjJHSHo6IDIuMiBHSHoKICAgICAgICAgIDIzR0h6OiAyLjMgR0h6CiAgICAgICAgICAyNEdIejogMi40IEdIegogICAgICAgICAgMjVHSHo6IDIuNSBHSHoKICAgICAgICAgIDI2R0h6OiAyLjYgR0h6CiAgICAgICAgICAyN0dIejogMi43IEdIegogICAgICAgICAgMjhHSHo6IDIuOCBHSHoKICAgICAgICAgIDI5R0h6OiAyLjkgR0h6CiAgICAgICAgICAzMEdIejogMy4wIEdIegogICAgICAgICAgMzFHSHo6IDMuMSBHSHoKICAgICAgICAgIDMyR0h6OiAzLjIgR0h6CiAgICAgICAgICAzM0dIejogMy4zIEdIegogICAgICAgICAgMzRHSHo6IDMuNCBHSHoKICAgICAgICAgIDM1R0h6OiAzLjUgR0h6CiAgICAgICAgICAzNkdIejogMy42IEdIegogICAgICAgICAgMzdHSHo6IDMuNyBHSHoKICAgICAgICAgIDM4R0h6OiAzLjggR0h6CiAgICAgICAgICAzOUdIejogMy45IEdIegogICAgICAgICAgNDBHSHo6IDQuMCBHSHoKICAgICAgICAgIDQxR0h6OiA0LjEgR0h6CiAgICAgICAgICA0MkdIejogNC4yIEdIegogICAgICAgICAgNDNHSHo6IDQuMyBHSHoKICAgICAgICAgIDQ0R0h6OiA0LjQgR0h6CiAgICAgICAgICA0NUdIejogNC41IEdIegogICAgICAgICAgNDZHSHo6IDQuNiBHSHoKICAgICAgICAgIDQ3R0h6OiA0LjcgR0h6CiAgICAgICAgICA0OEdIejogNC44IEdIegogICAgICAgICAgNDlHSHo6IDQuOSBHSHoKICAgICAgICAgIDUwR0h6OiA1LjAgR0h6CiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3NwZWVkCiAgICAgIE5hbWU6IENQVS1DbG9ja3NwZWVkCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtTnVtYmVyT2ZDUFU6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIENQVXMKICAgICAgTmFtZTogQ1BVLU51bWJlck9mQ1BVCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtUGh5c2ljYWxDb3JlczoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBoeXNpY2FsIENvcmVzCiAgICAgIE5hbWU6IENQVS1QaHlzaWNhbENvcmVzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtU29ja2V0VHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU00OiBBTTQKICAgICAgICAgIEJHQTogQkdBCiAgICAgICAgICBMR0ExMTUxOiBMR0ExMTUxCiAgICAgICAgICBMR0ExMjAwOiBMR0ExMjAwCiAgICAgICAgICBMR0ExMzY2OiBMR0ExMzY2CiAgICAgICAgICBMR0ExNzAwOiBMR0ExNzAwCiAgICAgICAgICBMR0EyMDExOiBMR0EyMDExCiAgICAgICAgICBMR0EyMDExMzogTEdBMjAxMS0zCiAgICAgICAgICBMR0EyMDY2OiBMR0EyMDY2CiAgICAgICAgICBMR0E3NzU6IExHQTc3NQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQR0E6IFBHQQogICAgICAgICAgU29ja2V0MzcwOiBTb2NrZXQgMzcwCiAgICAgICAgICBTb2NrZXQ0Nzg6IFNvY2tldCA0NzgKICAgICAgICAgIFRSNDogVFI0CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogU29ja2V0IFR5cGUKICAgICAgTmFtZTogQ1BVLVNvY2tldFR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1UaHJlYWRzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzE5JzogJzE5JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICcyMCc6ICcyMCcKICAgICAgICAgICcyMSc6ICcyMScKICAgICAgICAgICcyMic6ICcyMicKICAgICAgICAgICcyMyc6ICcyMycKICAgICAgICAgICcyNCc6ICcyNCcKICAgICAgICAgICcyNSc6ICcyNScKICAgICAgICAgICcyNic6ICcyNicKICAgICAgICAgICcyNyc6ICcyNycKICAgICAgICAgICcyOCc6ICcyOCcKICAgICAgICAgICcyOSc6ICcyOScKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnMzAnOiAnMzAnCiAgICAgICAgICAnMzEnOiAnMzEnCiAgICAgICAgICAnMzInOiAnMzInCiAgICAgICAgICAnMzMnOiAnMzMnCiAgICAgICAgICAnMzQnOiAnMzQnCiAgICAgICAgICAnMzUnOiAnMzUnCiAgICAgICAgICAnMzYnOiAnMzYnCiAgICAgICAgICAnMzcnOiAnMzcnCiAgICAgICAgICAnMzgnOiAnMzgnCiAgICAgICAgICAnMzknOiAnMzknCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzQwJzogJzQwJwogICAgICAgICAgJzQxJzogJzQxJwogICAgICAgICAgJzQyJzogJzQyJwogICAgICAgICAgJzQzJzogJzQzJwogICAgICAgICAgJzQ0JzogJzQ0JwogICAgICAgICAgJzQ1JzogJzQ1JwogICAgICAgICAgJzQ2JzogJzQ2JwogICAgICAgICAgJzQ3JzogJzQ3JwogICAgICAgICAgJzQ4JzogJzQ4JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVGhyZWFkcwogICAgICBOYW1lOiBDUFUtVGhyZWFkcwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tTGVuc1RvTGljZW5zZUNvdW50OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBDb3VudAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tUmVmZXJlbmNlVG9PUzoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIE9wZXJhdGluZyBTeXN0ZW0KICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogT3BlcmF0aW5nIFN5c3RlbQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvT1MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tEZXB0aDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMjMuNiBpbmNoZXMgKDYwMCBtbSk6IDIzLjYgaW5jaGVzICg2MDAgbW0pCiAgICAgICAgICAzMS41IGluY2hlcyAoODAwIG1tKTogMzEuNSBpbmNoZXMgKDgwMCBtbSkKICAgICAgICAgIDM1LjQgaW5jaGVzICg5MDAgbW0pOiAzNS40IGluY2hlcyAoOTAwIG1tKQogICAgICAgICAgMzkuNCBpbmNoZXMgKDEwMDAgbW0pOiAzOS40IGluY2hlcyAoMTAwMCBtbSkKICAgICAgICAgIDQzLjMgaW5jaGVzICgxMTAwIG1tKTogJzQzLjMgaW5jaGVzICgxMTAwIG1tKTonCiAgICAgICAgICA0Ny4yIGluY2hlcyAoMTIwMCBtbSk6IDQ3LjIgaW5jaGVzICgxMjAwIG1tKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBEZXB0aAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGgKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tVbml0czoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKScKICAgICAgICAgICcxMCc6ICcxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknCiAgICAgICAgICAnMTInOiAnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKScKICAgICAgICAgICcxNSc6ICcxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJwogICAgICAgICAgJzE4JzogJzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKScKICAgICAgICAgICcyJzogJzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKScKICAgICAgICAgICcyMCc6ICcyMFU6IDM1IGluY2hlcyAoODguOSBjbSknCiAgICAgICAgICAnMjInOiAnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJwogICAgICAgICAgJzI0JzogJzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJwogICAgICAgICAgJzI3JzogJzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJwogICAgICAgICAgJzMnOiAnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknCiAgICAgICAgICAnMzAnOiAnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKScKICAgICAgICAgICczMyc6ICczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKScKICAgICAgICAgICczNic6ICczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKScKICAgICAgICAgICczOSc6ICczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKScKICAgICAgICAgICc0JzogJzRVOiA3IGluY2hlcyAoMTcuNzggY20pJwogICAgICAgICAgJzQyJzogJzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknCiAgICAgICAgICAnNDUnOiAnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknCiAgICAgICAgICAnNDgnOiAnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknCiAgICAgICAgICAnNSc6ICc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKScKICAgICAgICAgICc2JzogJzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJwogICAgICAgICAgJzcnOiAnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJwogICAgICAgICAgJzgnOiAnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJwogICAgICAgICAgJzknOiAnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBVbml0cyAoVSkKICAgICAgTmFtZTogSVRTTUZvcm1GYWN0b3ItUmFja1VuaXRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1UeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAxOS1pbmNoIFJhY2s6IDE5LWluY2ggUmFjawogICAgICAgICAgMjEtaW5jaCBSYWNrOiAyMS1pbmNoIFJhY2sKICAgICAgICAgIDIzLWluY2ggUmFjazogMjMtaW5jaCBSYWNrCiAgICAgICAgICBDdXN0b20gUmFjazogQ3VzdG9tIFJhY2sKICAgICAgICAgIEVUU0kgUmFjazogRVRTSSBSYWNrCiAgICAgICAgICBNaW5pLVJhY2s6IE1pbmktUmFjawogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUb3dlcjogVG93ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBGb3JtIEZhY3RvcgogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1XZWlnaHQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSGFyZHdhcmUgV2VpZ2h0CiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVdlaWdodAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFHUDogQUdQCiAgICAgICAgICBFSVNBOiBFSVNBCiAgICAgICAgICBGaXJlV2lyZUlFRUUxMzk0OiBGaXJlV2lyZSAoSUVFRSAxMzk0KQogICAgICAgICAgSVNBOiBJU0EKICAgICAgICAgIExQQ0xvd1BpbkNvdW50OiBMUEMgKExvdyBQaW4gQ291bnQpCiAgICAgICAgICBNQ0FNaWNyb0NoYW5uZWxBcmNoaXRlY3R1cmU6IE1DQSAoTWljcm8gQ2hhbm5lbCBBcmNoaXRlY3R1cmUpCiAgICAgICAgICBOdUJ1czogTnVCdXMKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUENJOiBQQ0kKICAgICAgICAgIFBDSUV4cHJlc3NQQ0llOiBQQ0kgRXhwcmVzcyAoUENJZSkKICAgICAgICAgIFBDSVg6IFBDSS1YCiAgICAgICAgICBUaHVuZGVyYm9sdDogVGh1bmRlcmJvbHQKICAgICAgICAgIFVTQkM6IFVTQi1DCiAgICAgICAgICBVU0JVbml2ZXJzYWxTZXJpYWxCdXM6IFVTQiAoVW5pdmVyc2FsIFNlcmlhbCBCdXMpCiAgICAgICAgICBWRVNBTG9jYWxCdXNWTEI6IFZFU0EgTG9jYWwgQnVzIChWTEIpCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQnVzIEludGVyZmFjZQogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLUJ1c0ludGVyZmFjZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Db3VudDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTURSYWRlb25IRDY3NTA6IEFNRCBSYWRlb24gSEQgNjc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzcwOiBBTUQgUmFkZW9uIEhEIDY3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjc5MDogQU1EIFJhZGVvbiBIRCA2NzkwCiAgICAgICAgICBBTURSYWRlb25IRDY4NTA6IEFNRCBSYWRlb24gSEQgNjg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODcwOiBBTUQgUmFkZW9uIEhEIDY4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk1MDogQU1EIFJhZGVvbiBIRCA2OTUwCiAgICAgICAgICBBTURSYWRlb25IRDY5NzA6IEFNRCBSYWRlb24gSEQgNjk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTkwOiBBTUQgUmFkZW9uIEhEIDY5OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc1MDogQU1EIFJhZGVvbiBIRCA3NzUwCiAgICAgICAgICBBTURSYWRlb25IRDc3NzA6IEFNRCBSYWRlb24gSEQgNzc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzkwOiBBTUQgUmFkZW9uIEhEIDc3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg1MDogQU1EIFJhZGVvbiBIRCA3ODUwCiAgICAgICAgICBBTURSYWRlb25IRDc4NzA6IEFNRCBSYWRlb24gSEQgNzg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTUwOiBBTUQgUmFkZW9uIEhEIDc5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzk3MDogQU1EIFJhZGVvbiBIRCA3OTcwCiAgICAgICAgICBBTURSYWRlb25IRDc5OTA6IEFNRCBSYWRlb24gSEQgNzk5MAogICAgICAgICAgQU1EUmFkZW9uUHJvRHVvOiBBTUQgUmFkZW9uIFBybyBEdW8KICAgICAgICAgIEFNRFJhZGVvblByb1NTRzogQU1EIFJhZGVvbiBQcm8gU1NHCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDIxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDIxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYMzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMzEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g0MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA0MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDUxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDUxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNzEwMAogICAgICAgICAgQU1EUmFkZW9uUjUyMTA6IEFNRCBSYWRlb24gUjUgMjEwCiAgICAgICAgICBBTURSYWRlb25SNTIyMDogQU1EIFJhZGVvbiBSNSAyMjAKICAgICAgICAgIEFNRFJhZGVvblI1MjMwOiBBTUQgUmFkZW9uIFI1IDIzMAogICAgICAgICAgQU1EUmFkZW9uUjUzMjA6IEFNRCBSYWRlb24gUjUgMzIwCiAgICAgICAgICBBTURSYWRlb25SNTMzMDogQU1EIFJhZGVvbiBSNSAzMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzQwOiBBTUQgUmFkZW9uIFI1IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNDA6IEFNRCBSYWRlb24gUjcgMjQwCiAgICAgICAgICBBTURSYWRlb25SNzI1MDogQU1EIFJhZGVvbiBSNyAyNTAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwWDogQU1EIFJhZGVvbiBSNyAyNTBYCiAgICAgICAgICBBTURSYWRlb25SNzI2MFg6IEFNRCBSYWRlb24gUjcgMjYwWAogICAgICAgICAgQU1EUmFkZW9uUjczNDA6IEFNRCBSYWRlb24gUjcgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzM1MDogQU1EIFJhZGVvbiBSNyAzNTAKICAgICAgICAgIEFNRFJhZGVvblI3MzYwOiBBTUQgUmFkZW9uIFI3IDM2MAogICAgICAgICAgQU1EUmFkZW9uUjczNzA6IEFNRCBSYWRlb24gUjcgMzcwCiAgICAgICAgICBBTURSYWRlb25SOTI4NTogQU1EIFJhZGVvbiBSOSAyODUKICAgICAgICAgIEFNRFJhZGVvblI5MjkwOiBBTUQgUmFkZW9uIFI5IDI5MAogICAgICAgICAgQU1EUmFkZW9uUjkyOTBYOiBBTUQgUmFkZW9uIFI5IDI5MFgKICAgICAgICAgIEFNRFJhZGVvblI5Mjk1WDI6IEFNRCBSYWRlb24gUjkgMjk1WDIKICAgICAgICAgIEFNRFJhZGVvblI5MzgwOiBBTUQgUmFkZW9uIFI5IDM4MAogICAgICAgICAgQU1EUmFkZW9uUjkzODBYOiBBTUQgUmFkZW9uIFI5IDM4MFgKICAgICAgICAgIEFNRFJhZGVvblI5MzkwOiBBTUQgUmFkZW9uIFI5IDM5MAogICAgICAgICAgQU1EUmFkZW9uUjkzOTBYOiBBTUQgUmFkZW9uIFI5IDM5MFgKICAgICAgICAgIEFNRFJhZGVvblI5RnVyeVg6IEFNRCBSYWRlb24gUjkgRnVyeSBYCiAgICAgICAgICBBTURSYWRlb25SOU5hbm86IEFNRCBSYWRlb24gUjkgTmFubwogICAgICAgICAgQU1EUmFkZW9uUlg1NDAwWFQ6IEFNRCBSYWRlb24gUlggNTQwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwOiBBTUQgUmFkZW9uIFJYIDU1MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMFhUOiBBTUQgUmFkZW9uIFJYIDU1MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMDogQU1EIFJhZGVvbiBSWCA1NjAwCiAgICAgICAgICBBTURSYWRlb25SWDU2MDBYVDogQU1EIFJhZGVvbiBSWCA1NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU3MDogQU1EIFJhZGVvbiBSWCA1NzAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMDogQU1EIFJhZGVvbiBSWCA1NzAwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDBYVDogQU1EIFJhZGVvbiBSWCA1NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU4MDogQU1EIFJhZGVvbiBSWCA1ODAKICAgICAgICAgIEFNRFJhZGVvblJYNTkwOiBBTUQgUmFkZW9uIFJYIDU5MAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwOiBBTUQgUmFkZW9uIFJYIDY2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMFhUOiBBTUQgUmFkZW9uIFJYIDY2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMDogQU1EIFJhZGVvbiBSWCA2NzAwCiAgICAgICAgICBBTURSYWRlb25SWDY3MDBYVDogQU1EIFJhZGVvbiBSWCA2NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY4MDBYVDogQU1EIFJhZGVvbiBSWCA2ODAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY5MDBYVDogQU1EIFJhZGVvbiBSWCA2OTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E1NjogQU1EIFJhZGVvbiBSWCBWZWdhIDU2CiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E2NDogQU1EIFJhZGVvbiBSWCBWZWdhIDY0CiAgICAgICAgICBOVklESUFHZUZvcmNlMjEwOiBOVklESUEgR2VGb3JjZSAyMTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDEwMzA6IE5WSURJQSBHZUZvcmNlIEdUIDEwMzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUxMDogTlZJRElBIEdlRm9yY2UgR1QgNTEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MjA6IE5WSURJQSBHZUZvcmNlIEdUIDUyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTMwOiBOVklESUEgR2VGb3JjZSBHVCA1MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDU0NTogTlZJRElBIEdlRm9yY2UgR1QgNTQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MTA6IE5WSURJQSBHZUZvcmNlIEdUIDYxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjIwOiBOVklESUEgR2VGb3JjZSBHVCA2MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYzMDogTlZJRElBIEdlRm9yY2UgR1QgNjMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2NDA6IE5WSURJQSBHZUZvcmNlIEdUIDY0MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzEwOiBOVklESUEgR2VGb3JjZSBHVCA3MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDczMDogTlZJRElBIEdlRm9yY2UgR1QgNzMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA2MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDcwOiBOVklESUEgR2VGb3JjZSBHVFggMTA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzQ1OiBOVklESUEgR2VGb3JjZSBHVFggNzQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwOiBOVklESUEgR2VGb3JjZSBHVFggNzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc3MDogTlZJRElBIEdlRm9yY2UgR1RYIDc3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MDogTlZJRElBIEdlRm9yY2UgR1RYIDc4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTUwOiBOVklESUEgR2VGb3JjZSBHVFggOTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTYwOiBOVklESUEgR2VGb3JjZSBHVFggOTYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTcwOiBOVklESUEgR2VGb3JjZSBHVFggOTcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwOiBOVklESUEgR2VGb3JjZSBHVFggOTgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDE1MDogTlZJRElBIEdlRm9yY2UgTVgxNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDM1MDogTlZJRElBIEdlRm9yY2UgTVgzNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDQ1MDogTlZJRElBIEdlRm9yY2UgTVg0NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDYwOiBOVklESUEgR2VGb3JjZSBSVFggMjA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA2MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDkwOiBOVklESUEgR2VGb3JjZSBSVFggMzA5MAogICAgICAgICAgTlZJRElBTlZTMzAwOiBOVklESUEgTlZTIDMwMAogICAgICAgICAgTlZJRElBTlZTMzEwOiBOVklESUEgTlZTIDMxMAogICAgICAgICAgTlZJRElBTlZTNTEwOiBOVklESUEgTlZTIDUxMAogICAgICAgICAgTlZJRElBUXVhZHJvMjAwMDogTlZJRElBIFF1YWRybyAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm82MDA6IE5WSURJQSBRdWFkcm8gNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMTIwMDogTlZJRElBIFF1YWRybyBLMTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzIyMDA6IE5WSURJQSBRdWFkcm8gSzIyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MDAwOiBOVklESUEgUXVhZHJvIEs0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwOiBOVklESUEgUXVhZHJvIEs0MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjAwOiBOVklESUEgUXVhZHJvIEs0MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNTIwMDogTlZJRElBIFF1YWRybyBLNTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYwMDogTlZJRElBIFF1YWRybyBLNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjEwTTogTlZJRElBIFF1YWRybyBLNjEwTQogICAgICAgICAgTlZJRElBUXVhZHJvSzYyMDogTlZJRElBIFF1YWRybyBLNjIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwTTogTlZJRElBIFF1YWRybyBLNjIwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTEwMDBNOiBOVklESUEgUXVhZHJvIE0xMDAwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTIwMDA6IE5WSURJQSBRdWFkcm8gTTIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb000MDAwOiBOVklESUEgUXVhZHJvIE00MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNTAwMDogTlZJRElBIFF1YWRybyBNNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwMDA6IE5WSURJQSBRdWFkcm8gTTYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDBNOiBOVklESUEgUXVhZHJvIE02MDBNCiAgICAgICAgICBOVklESUFRdWFkcm9QMTAwMDogTlZJRElBIFF1YWRybyBQMTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDIwMDA6IE5WSURJQSBRdWFkcm8gUDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDA6IE5WSURJQSBRdWFkcm8gUDQwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDA6IE5WSURJQSBRdWFkcm8gUDQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A1MDAwOiBOVklESUEgUXVhZHJvIFA1MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwOiBOVklESUEgUXVhZHJvIFA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDAwOiBOVklESUEgUXVhZHJvIFA2MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjIwOiBOVklESUEgUXVhZHJvIFA2MjAKICAgICAgICAgIE5WSURJQVRlc2xhSzgwOiBOVklESUEgVGVzbGEgSzgwCiAgICAgICAgICBOVklESUFUZXNsYVAxMDA6IE5WSURJQSBUZXNsYSBQMTAwCiAgICAgICAgICBOVklESUFUZXNsYVQ0OiBOVklESUEgVGVzbGEgVDQKICAgICAgICAgIE5WSURJQVRlc2xhVjEwMDogTlZJRElBIFRlc2xhIFYxMDAKICAgICAgICAgIE5WSURJQVRpdGFuUlRYOiBOVklESUEgVGl0YW4gUlRYCiAgICAgICAgICBOVklESUFUaXRhblY6IE5WSURJQSBUaXRhbiBWCiAgICAgICAgICBOVklESUFUaXRhblhQYXNjYWw6IE5WSURJQSBUaXRhbiBYIChQYXNjYWwpCiAgICAgICAgICBOVklESUFUaXRhblhwOiBOVklESUEgVGl0YW4gWHAKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAxIEdCCiAgICAgICAgICAnMTEnOiAxMSBHQgogICAgICAgICAgJzEyOCc6IDEyOCBHQgogICAgICAgICAgJzE2JzogMTYgR0IKICAgICAgICAgICcyJzogMiBHQgogICAgICAgICAgJzI0JzogMjQgR0IKICAgICAgICAgICcyNTYnOiAyNTYgR0IKICAgICAgICAgICczMic6IDMyIEdCCiAgICAgICAgICAnNCc6IDQgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZAogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgR0REUjU6IEdERFI1CiAgICAgICAgICBHRERSNVg6IEdERFI1WAogICAgICAgICAgR0REUjY6IEdERFI2CiAgICAgICAgICBHRERSNlg6IEdERFI2WAogICAgICAgICAgSEJNMjogSEJNMgogICAgICAgICAgSEJNMkU6IEhCTTJFCiAgICAgICAgICBIQk1IaWdoQmFuZHdpZHRoTWVtb3J5OiBIQk0gKEhpZ2ggQmFuZHdpZHRoIE1lbW9yeSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1lbW9yeSBUeXBlCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1PdXRwdXRzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEVkk6IERWSQogICAgICAgICAgRGlzcGxheVBvcnQ6IERpc3BsYXlQb3J0CiAgICAgICAgICBIRE1JOiBIRE1JCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFZHQTogVkdBCiAgICAgICAgICBWaXJ0dWFsTGluazogVmlydHVhbExpbmsKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBPdXRwdXRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtT3V0cHV0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEFKQVhUcmlnZ2VyczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLUNvdW50CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudFwiICVdWyUgQ2FwYWNpdHkKICAgICAgICAgID0gXCJEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplXCIgJV1cclxuWyUgVG90YWwgPSBEYXRhLiRDb3VudAogICAgICAgICAgKiBEYXRhLiRDYXBhY2l0eSAlXVxyXG5bJSBUb3RhbCAlXSBHQiIKICAgICAgICBJbnRlcnByZXRlcjogfgogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgUmVhZG9ubHk6ICcxJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSZXF1aXJlZEFyZ3M6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVXBkYXRlRXZlbnRzOgogICAgICAgIC0gQ29uZmlnSXRlbUNyZWF0ZQogICAgICAgIC0gTmFtZVVwZGF0ZQogICAgICAgIC0gVmFsdWVVcGRhdGUKICAgICAgICAtIFZlcnNpb25DcmVhdGUKICAgICAgRmllbGRUeXBlOiBTY3JpcHRUZW1wbGF0ZVRvb2xraXQKICAgICAgTGFiZWw6IFRvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQikKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LUNhcGFjaXR5OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMTAyNCc6IDEwMjQgR0IKICAgICAgICAgICcxMic6IDEyIEdCCiAgICAgICAgICAnMTI4JzogMTI4IEdCCiAgICAgICAgICAnMTYnOiAxNiBHQgogICAgICAgICAgJzI0JzogMjQgR0IKICAgICAgICAgICcyNTYnOiAyNTYgR0IKICAgICAgICAgICczMic6IDMyIEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgJzk2JzogOTYgR0IKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENhcGFjaXR5IChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DYXBhY2l0eQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1lbW9yeS1DbG9ja1JhdGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDAnOiAnMTAwJwogICAgICAgICAgJzEzMyc6ICcxMzMnCiAgICAgICAgICAnMTY2JzogJzE2NicKICAgICAgICAgICcyMDAnOiAnMjAwJwogICAgICAgICAgJzIzMyc6ICcyMzMnCiAgICAgICAgICAnMjY2JzogJzI2NicKICAgICAgICAgICczMDAnOiAnMzAwJwogICAgICAgICAgJzMzMyc6ICczMzMnCiAgICAgICAgICAnMzY2JzogJzM2NicKICAgICAgICAgICc0MDAnOiAnNDAwJwogICAgICAgICAgJzQ1MCc6ICc0NTAnCiAgICAgICAgICAnNTAwJzogJzUwMCcKICAgICAgICAgICc1MjUnOiAnNTI1JwogICAgICAgICAgJzYwMCc6ICc2MDAnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3JhdGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DbG9ja1JhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ291bnQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgUkFNIG1vZHVsZXMKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1lbW9yeS1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEFKQVhUcmlnZ2VyczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudAogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ291bnRcIiAlXVslIENhcGFjaXR5ID0KICAgICAgICAgIFwiRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHlcIiAlXVxyXG5bJSBUb3RhbCA9IERhdGEuJENvdW50ICogRGF0YS4kQ2FwYWNpdHkKICAgICAgICAgICVdXHJcblslIFRvdGFsICVdIEdCIgogICAgICAgIEludGVycHJldGVyOiB+CiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBSZWFkb25seTogJzEnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJlcXVpcmVkQXJnczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVXBkYXRlRXZlbnRzOgogICAgICAgIC0gQ29uZmlnSXRlbUNyZWF0ZQogICAgICAgIC0gVmFsdWVVcGRhdGUKICAgICAgICAtIFZlcnNpb25EZWxldGUKICAgICAgRmllbGRUeXBlOiBTY3JpcHRUZW1wbGF0ZVRvb2xraXQKICAgICAgTGFiZWw6IFRvdGFsIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01NZW1vcnktVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1UeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBERFI6IEREUgogICAgICAgICAgRERSMjogRERSMgogICAgICAgICAgRERSMzogRERSMwogICAgICAgICAgRERSNDogRERSNAogICAgICAgICAgRERSNTogRERSNQogICAgICAgICAgU0RSQU06IFNEUkFNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSVB2NDogSVB2NAogICAgICAgICAgICAgICAgSVB2NjogSVB2NgogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IElQIFByb3RvY29sCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IG9iamVjdCBwb3J0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBDTkFNRS9BbGlhcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIFNlcnZlciBTb2Z0d2FyZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogU2VydmVyIFNvZnR3YXJlCiAgICAgIE5hbWU6IElUU01TZXJ2ZXJTb2Z0d2FyZS1SZWZlcmVuY2VUb1NlcnZlclNvZnR3YXJlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZS1TdG9yYWdlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtVHlwZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSERESGFyZERpc2tEcml2ZTogSEREIChIYXJkIERpc2sgRHJpdmUpCiAgICAgICAgICAgICAgICBOVk1lU1NETm9uVm9sYXRpbGVNZW1vcnlFeHByZXNzU29saWRTdGF0ZURyaXZlOiBOVk1lIFNTRCAoTm9uLVZvbGF0aWxlCiAgICAgICAgICAgICAgICAgIE1lbW9yeSBFeHByZXNzIFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTU0RTb2xpZFN0YXRlRHJpdmU6IFNTRCAoU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBTU0hEU29saWRTdGF0ZUh5YnJpZERyaXZlOiBTU0hEIChTb2xpZCBTdGF0ZSBIeWJyaWQgRHJpdmUpCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBUeXBlCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBBREFUQTogQURBVEEKICAgICAgICAgICAgICAgIEFEQVRBVGVjaG5vbG9neTogQURBVEEgVGVjaG5vbG9neQogICAgICAgICAgICAgICAgQXBhY2VyOiBBcGFjZXIKICAgICAgICAgICAgICAgIEJ1ZmZhbG86IEJ1ZmZhbG8KICAgICAgICAgICAgICAgIENvcnNhaXI6IENvcnNhaXIKICAgICAgICAgICAgICAgIENydWNpYWxNaWNyb246IENydWNpYWwgKE1pY3JvbikKICAgICAgICAgICAgICAgIEdUZWNobm9sb2d5V2VzdGVybkRpZ2l0YWw6IEctVGVjaG5vbG9neSAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgSEdTVFdlc3Rlcm5EaWdpdGFsOiBIR1NUIChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBIaXRhY2hpOiBIaXRhY2hpCiAgICAgICAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgICAgICAgIEtpbmdzdG9uOiBLaW5nc3RvbgogICAgICAgICAgICAgICAgS2luZ3N0b25EaWdpdGFsOiBLaW5nc3RvbiBEaWdpdGFsCiAgICAgICAgICAgICAgICBMYUNpZVNlYWdhdGU6IExhQ2llIChTZWFnYXRlKQogICAgICAgICAgICAgICAgTGV4YXI6IExleGFyCiAgICAgICAgICAgICAgICBNYXh0b3I6IE1heHRvcgogICAgICAgICAgICAgICAgT0NaVG9zaGliYTogT0NaIChUb3NoaWJhKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBQTlk6IFBOWQogICAgICAgICAgICAgICAgUGxleHRvcjogUGxleHRvcgogICAgICAgICAgICAgICAgU0toeW5peDogU0sgaHluaXgKICAgICAgICAgICAgICAgIFNhbXN1bmc6IFNhbXN1bmcKICAgICAgICAgICAgICAgIFNhbXN1bmdTZW1pY29uZHVjdG9yOiBTYW1zdW5nIFNlbWljb25kdWN0b3IKICAgICAgICAgICAgICAgIFNhbkRpc2tXZXN0ZXJuRGlnaXRhbDogU2FuRGlzayAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgU2VhZ2F0ZTogU2VhZ2F0ZQogICAgICAgICAgICAgICAgU2lsaWNvblBvd2VyOiBTaWxpY29uIFBvd2VyCiAgICAgICAgICAgICAgICBTb255OiBTb255CiAgICAgICAgICAgICAgICBTdXBlclRhbGVudDogU3VwZXIgVGFsZW50CiAgICAgICAgICAgICAgICBUZWFtR3JvdXA6IFRlYW0gR3JvdXAKICAgICAgICAgICAgICAgIFRvc2hpYmE6IFRvc2hpYmEKICAgICAgICAgICAgICAgIFRyYW5zY2VuZDogVHJhbnNjZW5kCiAgICAgICAgICAgICAgICBXZXN0ZXJuRGlnaXRhbDogV2VzdGVybiBEaWdpdGFsCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBNYW51ZmFjdHVyZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTW9kZWwKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBTZXJpYWxOdW1iZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZQogICAgICBOYW1lOiBJVFNNU3RvcmFnZS1TdG9yYWdlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb246CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1OYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBOYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIEZyZWUgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tVXNlZENhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBVc2VkIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIE1vdW50IFBvaW50CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBTdG9yYWdlIFBhcnRpdGlvbgogICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IFNlcnZlciAodmlydHVhbCkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLQogICAgQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbgogICAgXCAtIE5hbWU6IEhhcmR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBDUFU6OkNQVVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBNZW1vcnk6Ok1lbW9yeVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UgUGFydGl0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIEZvcm0gRmFjdG9yOjpGb3JtIEZhY3RvclxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG5cclxuICAtIE5hbWU6IFNvZnR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTZXJ2ZXIgU29mdHdhcmU6OlNlcnZlciBTb2Z0d2FyZVxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuICAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuICAtIE5hbWU6IExvY2F0ZWQKICAgIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4KICAgIFwgLSBOYW1lOiBEZXRhaWxzXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gR3JhcGhpY3MgQ2FyZDo6R3JhcGhpY3MgQ2FyZFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBJVFNNIFNlcnZlciBTb2Z0d2FyZTo6U2VydmVyIFNvZnR3YXJlXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlOjpTdG9yYWdlXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOjpTdG9yYWdlCiAgICBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gRm9ybSBGYWN0b3I6OkZvcm0gRmFjdG9yXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA1XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogNVxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcblJvbGVzOlxyXG4gICMgUm9sZXMKICAgIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLAogICAgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZQogICAgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4gICMgRm9yIGVhY2gKICAgIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4gICMgZGVmaW5pdGlvbgogICAgcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4gICMgVGhpcyBpcyB3aGVyZQogICAgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNIE1vZGVsOlxyXG4gICAgTmFtZToKICAgIElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQgaW46XHJcbgogICAgXCAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIE5hbWU6IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW1cclxuICBJVFNNIFNlcnZlciBTb2Z0d2FyZTpcclxuICAgIE5hbWU6IElUU00gU2VydmVyIFNvZnR3YXJlICBcclxuICBJVFNNCiAgICBDUFU6XHJcbiAgICBOYW1lOiBJVFNNIENQVVxyXG4gIElUU00gTWVtb3J5OlxyXG4gICAgTmFtZTogSVRTTSBNZW1vcnlcclxuICBJVFNNCiAgICBHcmFwaGljcyBDYXJkOlxyXG4gICAgTmFtZTogSVRTTSBHcmFwaGljcyBDYXJkXHJcbiAgSVRTTSBTdG9yYWdlOlxyXG4gICAgTmFtZToKICAgIElUU00gU3RvcmFnZVxyXG4gIElUU00gU3RvcmFnZSBQYXJ0aXRpb246XHJcbiAgICBOYW1lOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uCiAgICBcICAgXHJcbiAgSVRTTSBGb3JtIEZhY3RvcjpcclxuICAgIE5hbWU6IElUU00gRm9ybSBGYWN0b3JcclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuCiAgICBcICAgTmFtZTogSVRTTSBOZXR3b3JrIEluZm9cclxuICBJVFNNIExpY2Vuc2U6XHJcbiAgICBOYW1lOiBJVFNNIExpY2Vuc2VcclxuICBDTURCCiAgICBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCCiAgICBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ1BVLUNQVUNsYXNzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRGVza3RvcDogRGVza3RvcAogICAgICAgICAgTGFwdG9wOiBMYXB0b3AKICAgICAgICAgIE1vYmlsZUVtYmVkZGVkOiBNb2JpbGUvRW1iZWRkZWQKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2VydmVyOiBTZXJ2ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDUFUgQ2xhc3MKICAgICAgTmFtZTogQ1BVLUNQVUNsYXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtQ2xvY2tzcGVlZDoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE2R0h6OiAxLjYgR0h6CiAgICAgICAgICAxN0dIejogMS43IEdIegogICAgICAgICAgMThHSHo6IDEuOCBHSHoKICAgICAgICAgIDE5R0h6OiAxLjkgR0h6CiAgICAgICAgICAyMEdIejogMi4wIEdIegogICAgICAgICAgMjFHSHo6IDIuMSBHSHoKICAgICAgICAgIDIyR0h6OiAyLjIgR0h6CiAgICAgICAgICAyM0dIejogMi4zIEdIegogICAgICAgICAgMjRHSHo6IDIuNCBHSHoKICAgICAgICAgIDI1R0h6OiAyLjUgR0h6CiAgICAgICAgICAyNkdIejogMi42IEdIegogICAgICAgICAgMjdHSHo6IDIuNyBHSHoKICAgICAgICAgIDI4R0h6OiAyLjggR0h6CiAgICAgICAgICAyOUdIejogMi45IEdIegogICAgICAgICAgMzBHSHo6IDMuMCBHSHoKICAgICAgICAgIDMxR0h6OiAzLjEgR0h6CiAgICAgICAgICAzMkdIejogMy4yIEdIegogICAgICAgICAgMzNHSHo6IDMuMyBHSHoKICAgICAgICAgIDM0R0h6OiAzLjQgR0h6CiAgICAgICAgICAzNUdIejogMy41IEdIegogICAgICAgICAgMzZHSHo6IDMuNiBHSHoKICAgICAgICAgIDM3R0h6OiAzLjcgR0h6CiAgICAgICAgICAzOEdIejogMy44IEdIegogICAgICAgICAgMzlHSHo6IDMuOSBHSHoKICAgICAgICAgIDQwR0h6OiA0LjAgR0h6CiAgICAgICAgICA0MUdIejogNC4xIEdIegogICAgICAgICAgNDJHSHo6IDQuMiBHSHoKICAgICAgICAgIDQzR0h6OiA0LjMgR0h6CiAgICAgICAgICA0NEdIejogNC40IEdIegogICAgICAgICAgNDVHSHo6IDQuNSBHSHoKICAgICAgICAgIDQ2R0h6OiA0LjYgR0h6CiAgICAgICAgICA0N0dIejogNC43IEdIegogICAgICAgICAgNDhHSHo6IDQuOCBHSHoKICAgICAgICAgIDQ5R0h6OiA0LjkgR0h6CiAgICAgICAgICA1MEdIejogNS4wIEdIegogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xvY2tzcGVlZAogICAgICBOYW1lOiBDUFUtQ2xvY2tzcGVlZAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLU51bWJlck9mQ1BVOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgQ1BVcwogICAgICBOYW1lOiBDUFUtTnVtYmVyT2ZDUFUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1QaHlzaWNhbENvcmVzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBoeXNpY2FsIENvcmVzCiAgICAgIE5hbWU6IENQVS1QaHlzaWNhbENvcmVzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtU29ja2V0VHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFNNDogQU00CiAgICAgICAgICBCR0E6IEJHQQogICAgICAgICAgTEdBMTE1MTogTEdBMTE1MQogICAgICAgICAgTEdBMTIwMDogTEdBMTIwMAogICAgICAgICAgTEdBMTM2NjogTEdBMTM2NgogICAgICAgICAgTEdBMTcwMDogTEdBMTcwMAogICAgICAgICAgTEdBMjAxMTogTEdBMjAxMQogICAgICAgICAgTEdBMjAxMTM6IExHQTIwMTEtMwogICAgICAgICAgTEdBMjA2NjogTEdBMjA2NgogICAgICAgICAgTEdBNzc1OiBMR0E3NzUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUEdBOiBQR0EKICAgICAgICAgIFNvY2tldDM3MDogU29ja2V0IDM3MAogICAgICAgICAgU29ja2V0NDc4OiBTb2NrZXQgNDc4CiAgICAgICAgICBUUjQ6IFRSNAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFNvY2tldCBUeXBlCiAgICAgIE5hbWU6IENQVS1Tb2NrZXRUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtVGhyZWFkczoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMTknOiAnMTknCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzIwJzogJzIwJwogICAgICAgICAgJzIxJzogJzIxJwogICAgICAgICAgJzIyJzogJzIyJwogICAgICAgICAgJzIzJzogJzIzJwogICAgICAgICAgJzI0JzogJzI0JwogICAgICAgICAgJzI1JzogJzI1JwogICAgICAgICAgJzI2JzogJzI2JwogICAgICAgICAgJzI3JzogJzI3JwogICAgICAgICAgJzI4JzogJzI4JwogICAgICAgICAgJzI5JzogJzI5JwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICczMCc6ICczMCcKICAgICAgICAgICczMSc6ICczMScKICAgICAgICAgICczMic6ICczMicKICAgICAgICAgICczMyc6ICczMycKICAgICAgICAgICczNCc6ICczNCcKICAgICAgICAgICczNSc6ICczNScKICAgICAgICAgICczNic6ICczNicKICAgICAgICAgICczNyc6ICczNycKICAgICAgICAgICczOCc6ICczOCcKICAgICAgICAgICczOSc6ICczOScKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNDAnOiAnNDAnCiAgICAgICAgICAnNDEnOiAnNDEnCiAgICAgICAgICAnNDInOiAnNDInCiAgICAgICAgICAnNDMnOiAnNDMnCiAgICAgICAgICAnNDQnOiAnNDQnCiAgICAgICAgICAnNDUnOiAnNDUnCiAgICAgICAgICAnNDYnOiAnNDYnCiAgICAgICAgICAnNDcnOiAnNDcnCiAgICAgICAgICAnNDgnOiAnNDgnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUaHJlYWRzCiAgICAgIE5hbWU6IENQVS1UaHJlYWRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBDb3VudAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gTGljZW5zZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMaWNlbnNlCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLVJlZmVyZW5jZVRvT1M6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gT3BlcmF0aW5nIFN5c3RlbQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9PUwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcGVyYXRpbmcgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IEN1c3RvbWVyQ29tcGFueU5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogUHVyY2hhc2VkIGF0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tEZXB0aDoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDIzLjYgaW5jaGVzICg2MDAgbW0pOiAyMy42IGluY2hlcyAoNjAwIG1tKQogICAgICAgICAgMzEuNSBpbmNoZXMgKDgwMCBtbSk6IDMxLjUgaW5jaGVzICg4MDAgbW0pCiAgICAgICAgICAzNS40IGluY2hlcyAoOTAwIG1tKTogMzUuNCBpbmNoZXMgKDkwMCBtbSkKICAgICAgICAgIDM5LjQgaW5jaGVzICgxMDAwIG1tKTogMzkuNCBpbmNoZXMgKDEwMDAgbW0pCiAgICAgICAgICA0My4zIGluY2hlcyAoMTEwMCBtbSk6ICc0My4zIGluY2hlcyAoMTEwMCBtbSk6JwogICAgICAgICAgNDcuMiBpbmNoZXMgKDEyMDAgbW0pOiA0Ny4yIGluY2hlcyAoMTIwMCBtbSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFJhY2sgRGVwdGgKICAgICAgTmFtZTogSVRTTUZvcm1GYWN0b3ItUmFja0RlcHRoCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1SYWNrVW5pdHM6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJwogICAgICAgICAgJzEwJzogJzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKScKICAgICAgICAgICcxMic6ICcxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJwogICAgICAgICAgJzE1JzogJzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknCiAgICAgICAgICAnMTgnOiAnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJwogICAgICAgICAgJzInOiAnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJwogICAgICAgICAgJzIwJzogJzIwVTogMzUgaW5jaGVzICg4OC45IGNtKScKICAgICAgICAgICcyMic6ICcyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknCiAgICAgICAgICAnMjQnOiAnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknCiAgICAgICAgICAnMjcnOiAnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknCiAgICAgICAgICAnMyc6ICczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKScKICAgICAgICAgICczMCc6ICczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJwogICAgICAgICAgJzMzJzogJzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJwogICAgICAgICAgJzM2JzogJzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJwogICAgICAgICAgJzM5JzogJzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJwogICAgICAgICAgJzQnOiAnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknCiAgICAgICAgICAnNDInOiAnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKScKICAgICAgICAgICc0NSc6ICc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKScKICAgICAgICAgICc0OCc6ICc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKScKICAgICAgICAgICc1JzogJzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJwogICAgICAgICAgJzYnOiAnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknCiAgICAgICAgICAnNyc6ICc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknCiAgICAgICAgICAnOCc6ICc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknCiAgICAgICAgICAnOSc6ICc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBSYWNrIFVuaXRzIChVKQogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrVW5pdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVR5cGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAxOS1pbmNoIFJhY2s6IDE5LWluY2ggUmFjawogICAgICAgICAgMjEtaW5jaCBSYWNrOiAyMS1pbmNoIFJhY2sKICAgICAgICAgIDIzLWluY2ggUmFjazogMjMtaW5jaCBSYWNrCiAgICAgICAgICBDdXN0b20gUmFjazogQ3VzdG9tIFJhY2sKICAgICAgICAgIEVUU0kgUmFjazogRVRTSSBSYWNrCiAgICAgICAgICBNaW5pLVJhY2s6IE1pbmktUmFjawogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUb3dlcjogVG93ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBGb3JtIEZhY3RvcgogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1XZWlnaHQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEhhcmR3YXJlIFdlaWdodAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1XZWlnaHQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQnVzSW50ZXJmYWNlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQUdQOiBBR1AKICAgICAgICAgIEVJU0E6IEVJU0EKICAgICAgICAgIEZpcmVXaXJlSUVFRTEzOTQ6IEZpcmVXaXJlIChJRUVFIDEzOTQpCiAgICAgICAgICBJU0E6IElTQQogICAgICAgICAgTFBDTG93UGluQ291bnQ6IExQQyAoTG93IFBpbiBDb3VudCkKICAgICAgICAgIE1DQU1pY3JvQ2hhbm5lbEFyY2hpdGVjdHVyZTogTUNBIChNaWNybyBDaGFubmVsIEFyY2hpdGVjdHVyZSkKICAgICAgICAgIE51QnVzOiBOdUJ1cwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQQ0k6IFBDSQogICAgICAgICAgUENJRXhwcmVzc1BDSWU6IFBDSSBFeHByZXNzIChQQ0llKQogICAgICAgICAgUENJWDogUENJLVgKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFVTQlVuaXZlcnNhbFNlcmlhbEJ1czogVVNCIChVbml2ZXJzYWwgU2VyaWFsIEJ1cykKICAgICAgICAgIFZFU0FMb2NhbEJ1c1ZMQjogVkVTQSBMb2NhbCBCdXMgKFZMQikKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBCdXMgSW50ZXJmYWNlCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtQnVzSW50ZXJmYWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLUNvdW50OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU1EUmFkZW9uSEQ2NzUwOiBBTUQgUmFkZW9uIEhEIDY3NTAKICAgICAgICAgIEFNRFJhZGVvbkhENjc3MDogQU1EIFJhZGVvbiBIRCA2NzcwCiAgICAgICAgICBBTURSYWRlb25IRDY3OTA6IEFNRCBSYWRlb24gSEQgNjc5MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODUwOiBBTUQgUmFkZW9uIEhEIDY4NTAKICAgICAgICAgIEFNRFJhZGVvbkhENjg3MDogQU1EIFJhZGVvbiBIRCA2ODcwCiAgICAgICAgICBBTURSYWRlb25IRDY5NTA6IEFNRCBSYWRlb24gSEQgNjk1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTcwOiBBTUQgUmFkZW9uIEhEIDY5NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk5MDogQU1EIFJhZGVvbiBIRCA2OTkwCiAgICAgICAgICBBTURSYWRlb25IRDc3NTA6IEFNRCBSYWRlb24gSEQgNzc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzcwOiBBTUQgUmFkZW9uIEhEIDc3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENzc5MDogQU1EIFJhZGVvbiBIRCA3NzkwCiAgICAgICAgICBBTURSYWRlb25IRDc4NTA6IEFNRCBSYWRlb24gSEQgNzg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ3ODcwOiBBTUQgUmFkZW9uIEhEIDc4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENzk1MDogQU1EIFJhZGVvbiBIRCA3OTUwCiAgICAgICAgICBBTURSYWRlb25IRDc5NzA6IEFNRCBSYWRlb24gSEQgNzk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTkwOiBBTUQgUmFkZW9uIEhEIDc5OTAKICAgICAgICAgIEFNRFJhZGVvblByb0R1bzogQU1EIFJhZGVvbiBQcm8gRHVvCiAgICAgICAgICBBTURSYWRlb25Qcm9TU0c6IEFNRCBSYWRlb24gUHJvIFNTRwogICAgICAgICAgQU1EUmFkZW9uUHJvV1gyMTAwOiBBTUQgUmFkZW9uIFBybyBXWCAyMTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDMxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDMxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNDEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNDEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g1MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA1MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDcxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDcxMDAKICAgICAgICAgIEFNRFJhZGVvblI1MjEwOiBBTUQgUmFkZW9uIFI1IDIxMAogICAgICAgICAgQU1EUmFkZW9uUjUyMjA6IEFNRCBSYWRlb24gUjUgMjIwCiAgICAgICAgICBBTURSYWRlb25SNTIzMDogQU1EIFJhZGVvbiBSNSAyMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzIwOiBBTUQgUmFkZW9uIFI1IDMyMAogICAgICAgICAgQU1EUmFkZW9uUjUzMzA6IEFNRCBSYWRlb24gUjUgMzMwCiAgICAgICAgICBBTURSYWRlb25SNTM0MDogQU1EIFJhZGVvbiBSNSAzNDAKICAgICAgICAgIEFNRFJhZGVvblI3MjQwOiBBTUQgUmFkZW9uIFI3IDI0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNTA6IEFNRCBSYWRlb24gUjcgMjUwCiAgICAgICAgICBBTURSYWRlb25SNzI1MFg6IEFNRCBSYWRlb24gUjcgMjUwWAogICAgICAgICAgQU1EUmFkZW9uUjcyNjBYOiBBTUQgUmFkZW9uIFI3IDI2MFgKICAgICAgICAgIEFNRFJhZGVvblI3MzQwOiBBTUQgUmFkZW9uIFI3IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjczNTA6IEFNRCBSYWRlb24gUjcgMzUwCiAgICAgICAgICBBTURSYWRlb25SNzM2MDogQU1EIFJhZGVvbiBSNyAzNjAKICAgICAgICAgIEFNRFJhZGVvblI3MzcwOiBBTUQgUmFkZW9uIFI3IDM3MAogICAgICAgICAgQU1EUmFkZW9uUjkyODU6IEFNRCBSYWRlb24gUjkgMjg1CiAgICAgICAgICBBTURSYWRlb25SOTI5MDogQU1EIFJhZGVvbiBSOSAyOTAKICAgICAgICAgIEFNRFJhZGVvblI5MjkwWDogQU1EIFJhZGVvbiBSOSAyOTBYCiAgICAgICAgICBBTURSYWRlb25SOTI5NVgyOiBBTUQgUmFkZW9uIFI5IDI5NVgyCiAgICAgICAgICBBTURSYWRlb25SOTM4MDogQU1EIFJhZGVvbiBSOSAzODAKICAgICAgICAgIEFNRFJhZGVvblI5MzgwWDogQU1EIFJhZGVvbiBSOSAzODBYCiAgICAgICAgICBBTURSYWRlb25SOTM5MDogQU1EIFJhZGVvbiBSOSAzOTAKICAgICAgICAgIEFNRFJhZGVvblI5MzkwWDogQU1EIFJhZGVvbiBSOSAzOTBYCiAgICAgICAgICBBTURSYWRlb25SOUZ1cnlYOiBBTUQgUmFkZW9uIFI5IEZ1cnkgWAogICAgICAgICAgQU1EUmFkZW9uUjlOYW5vOiBBTUQgUmFkZW9uIFI5IE5hbm8KICAgICAgICAgIEFNRFJhZGVvblJYNTQwMFhUOiBBTUQgUmFkZW9uIFJYIDU0MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMDogQU1EIFJhZGVvbiBSWCA1NTAwCiAgICAgICAgICBBTURSYWRlb25SWDU1MDBYVDogQU1EIFJhZGVvbiBSWCA1NTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU2MDA6IEFNRCBSYWRlb24gUlggNTYwMAogICAgICAgICAgQU1EUmFkZW9uUlg1NjAwWFQ6IEFNRCBSYWRlb24gUlggNTYwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NzA6IEFNRCBSYWRlb24gUlggNTcwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDA6IEFNRCBSYWRlb24gUlggNTcwMAogICAgICAgICAgQU1EUmFkZW9uUlg1NzAwWFQ6IEFNRCBSYWRlb24gUlggNTcwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1ODA6IEFNRCBSYWRlb24gUlggNTgwCiAgICAgICAgICBBTURSYWRlb25SWDU5MDogQU1EIFJhZGVvbiBSWCA1OTAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMDogQU1EIFJhZGVvbiBSWCA2NjAwCiAgICAgICAgICBBTURSYWRlb25SWDY2MDBYVDogQU1EIFJhZGVvbiBSWCA2NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY3MDA6IEFNRCBSYWRlb24gUlggNjcwMAogICAgICAgICAgQU1EUmFkZW9uUlg2NzAwWFQ6IEFNRCBSYWRlb24gUlggNjcwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg2ODAwWFQ6IEFNRCBSYWRlb24gUlggNjgwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg2OTAwWFQ6IEFNRCBSYWRlb24gUlggNjkwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlhWZWdhNTY6IEFNRCBSYWRlb24gUlggVmVnYSA1NgogICAgICAgICAgQU1EUmFkZW9uUlhWZWdhNjQ6IEFNRCBSYWRlb24gUlggVmVnYSA2NAogICAgICAgICAgTlZJRElBR2VGb3JjZTIxMDogTlZJRElBIEdlRm9yY2UgMjEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1QxMDMwOiBOVklESUEgR2VGb3JjZSBHVCAxMDMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MTA6IE5WSURJQSBHZUZvcmNlIEdUIDUxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTIwOiBOVklESUEgR2VGb3JjZSBHVCA1MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUzMDogTlZJRElBIEdlRm9yY2UgR1QgNTMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1NDU6IE5WSURJQSBHZUZvcmNlIEdUIDU0NQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjEwOiBOVklESUEgR2VGb3JjZSBHVCA2MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYyMDogTlZJRElBIEdlRm9yY2UgR1QgNjIwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MzA6IE5WSURJQSBHZUZvcmNlIEdUIDYzMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjQwOiBOVklESUEgR2VGb3JjZSBHVCA2NDAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDcxMDogTlZJRElBIEdlRm9yY2UgR1QgNzEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q3MzA6IE5WSURJQSBHZUZvcmNlIEdUIDczMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwNTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA1MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwNjA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA3MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDgwOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDEwODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjUwOiBOVklESUEgR2VGb3JjZSBHVFggMTY1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NjA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTY2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc0NTogTlZJRElBIEdlRm9yY2UgR1RYIDc0NQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc1MDogTlZJRElBIEdlRm9yY2UgR1RYIDc1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc1MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzYwOiBOVklESUEgR2VGb3JjZSBHVFggNzYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NzA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3ODA6IE5WSURJQSBHZUZvcmNlIEdUWCA3ODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3ODBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk1MDogTlZJRElBIEdlRm9yY2UgR1RYIDk1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk2MDogTlZJRElBIEdlRm9yY2UgR1RYIDk2MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk3MDogTlZJRElBIEdlRm9yY2UgR1RYIDk3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk4MDogTlZJRElBIEdlRm9yY2UgR1RYIDk4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggOTgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlTVgxNTA6IE5WSURJQSBHZUZvcmNlIE1YMTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlTVgzNTA6IE5WSURJQSBHZUZvcmNlIE1YMzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlTVg0NTA6IE5WSURJQSBHZUZvcmNlIE1YNDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA2MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDcwOiBOVklESUEgR2VGb3JjZSBSVFggMjA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwODA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMjA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNTA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA1MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNjBUaTogTlZJRElBIEdlRm9yY2UgUlRYIDMwNjAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDcwOiBOVklESUEgR2VGb3JjZSBSVFggMzA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwODA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA5MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwOTAKICAgICAgICAgIE5WSURJQU5WUzMwMDogTlZJRElBIE5WUyAzMDAKICAgICAgICAgIE5WSURJQU5WUzMxMDogTlZJRElBIE5WUyAzMTAKICAgICAgICAgIE5WSURJQU5WUzUxMDogTlZJRElBIE5WUyA1MTAKICAgICAgICAgIE5WSURJQVF1YWRybzIwMDA6IE5WSURJQSBRdWFkcm8gMjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvNjAwOiBOVklESUEgUXVhZHJvIDYwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzEyMDA6IE5WSURJQSBRdWFkcm8gSzEyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0syMjAwOiBOVklESUEgUXVhZHJvIEsyMjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDAwMDogTlZJRElBIFF1YWRybyBLNDAwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzQyMDogTlZJRElBIFF1YWRybyBLNDIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwMDogTlZJRElBIFF1YWRybyBLNDIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzUyMDA6IE5WSURJQSBRdWFkcm8gSzUyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s2MDA6IE5WSURJQSBRdWFkcm8gSzYwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYxME06IE5WSURJQSBRdWFkcm8gSzYxME0KICAgICAgICAgIE5WSURJQVF1YWRyb0s2MjA6IE5WSURJQSBRdWFkcm8gSzYyMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYyME06IE5WSURJQSBRdWFkcm8gSzYyME0KICAgICAgICAgIE5WSURJQVF1YWRyb00xMDAwTTogTlZJRElBIFF1YWRybyBNMTAwME0KICAgICAgICAgIE5WSURJQVF1YWRyb00yMDAwOiBOVklESUEgUXVhZHJvIE0yMDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNDAwMDogTlZJRElBIFF1YWRybyBNNDAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTUwMDA6IE5WSURJQSBRdWFkcm8gTTUwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDAwOiBOVklESUEgUXVhZHJvIE02MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNjAwTTogTlZJRElBIFF1YWRybyBNNjAwTQogICAgICAgICAgTlZJRElBUXVhZHJvUDEwMDA6IE5WSURJQSBRdWFkcm8gUDEwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1AyMDAwOiBOVklESUEgUXVhZHJvIFAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNDAwOiBOVklESUEgUXVhZHJvIFA0MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDAwOiBOVklESUEgUXVhZHJvIFA0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNTAwMDogTlZJRElBIFF1YWRybyBQNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDYwMDogTlZJRElBIFF1YWRybyBQNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwMDogTlZJRElBIFF1YWRybyBQNjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDYyMDogTlZJRElBIFF1YWRybyBQNjIwCiAgICAgICAgICBOVklESUFUZXNsYUs4MDogTlZJRElBIFRlc2xhIEs4MAogICAgICAgICAgTlZJRElBVGVzbGFQMTAwOiBOVklESUEgVGVzbGEgUDEwMAogICAgICAgICAgTlZJRElBVGVzbGFUNDogTlZJRElBIFRlc2xhIFQ0CiAgICAgICAgICBOVklESUFUZXNsYVYxMDA6IE5WSURJQSBUZXNsYSBWMTAwCiAgICAgICAgICBOVklESUFUaXRhblJUWDogTlZJRElBIFRpdGFuIFJUWAogICAgICAgICAgTlZJRElBVGl0YW5WOiBOVklESUEgVGl0YW4gVgogICAgICAgICAgTlZJRElBVGl0YW5YUGFzY2FsOiBOVklESUEgVGl0YW4gWCAoUGFzY2FsKQogICAgICAgICAgTlZJRElBVGl0YW5YcDogTlZJRElBIFRpdGFuIFhwCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBHcmFwaGljcyBjYXJkCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6IDEgR0IKICAgICAgICAgICcxMSc6IDExIEdCCiAgICAgICAgICAnMTI4JzogMTI4IEdCCiAgICAgICAgICAnMTYnOiAxNiBHQgogICAgICAgICAgJzInOiAyIEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0JzogNCBHQgogICAgICAgICAgJzQ4JzogNDggR0IKICAgICAgICAgICc1MTInOiA1MTIgR0IKICAgICAgICAgICc2NCc6IDY0IEdCCiAgICAgICAgICAnOCc6IDggR0IKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgR0REUjU6IEdERFI1CiAgICAgICAgICBHRERSNVg6IEdERFI1WAogICAgICAgICAgR0REUjY6IEdERFI2CiAgICAgICAgICBHRERSNlg6IEdERFI2WAogICAgICAgICAgSEJNMjogSEJNMgogICAgICAgICAgSEJNMkU6IEhCTTJFCiAgICAgICAgICBIQk1IaWdoQmFuZHdpZHRoTWVtb3J5OiBIQk0gKEhpZ2ggQmFuZHdpZHRoIE1lbW9yeSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1lbW9yeSBUeXBlCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1PdXRwdXRzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRFZJOiBEVkkKICAgICAgICAgIERpc3BsYXlQb3J0OiBEaXNwbGF5UG9ydAogICAgICAgICAgSERNSTogSERNSQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUaHVuZGVyYm9sdDogVGh1bmRlcmJvbHQKICAgICAgICAgIFVTQkM6IFVTQi1DCiAgICAgICAgICBWR0E6IFZHQQogICAgICAgICAgVmlydHVhbExpbms6IFZpcnR1YWxMaW5rCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogT3V0cHV0cwogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBFeHByZXNzaW9uOiAiWyUgQ291bnQgPSBcIkR5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLUNvdW50XCIgJV1bJSBDYXBhY2l0eQogICAgICAgICAgPSBcIkR5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemVcIiAlXVxyXG5bJSBUb3RhbCA9IERhdGEuJENvdW50CiAgICAgICAgICAqIERhdGEuJENhcGFjaXR5ICVdXHJcblslIFRvdGFsICVdIEdCIgogICAgICAgIEludGVycHJldGVyOiB+CiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBSZWFkb25seTogJzEnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJlcXVpcmVkQXJnczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLUNvdW50CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBOYW1lVXBkYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkNyZWF0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKQogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLVRvdGFsUkFNR0IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU01NZW1vcnktQ2FwYWNpdHk6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMTAyNCc6IDEwMjQgR0IKICAgICAgICAgICcxMic6IDEyIEdCCiAgICAgICAgICAnMTI4JzogMTI4IEdCCiAgICAgICAgICAnMTYnOiAxNiBHQgogICAgICAgICAgJzI0JzogMjQgR0IKICAgICAgICAgICcyNTYnOiAyNTYgR0IKICAgICAgICAgICczMic6IDMyIEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgJzk2JzogOTYgR0IKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENhcGFjaXR5IChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DYXBhY2l0eQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1lbW9yeS1DbG9ja1JhdGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMTAwJzogJzEwMCcKICAgICAgICAgICcxMzMnOiAnMTMzJwogICAgICAgICAgJzE2Nic6ICcxNjYnCiAgICAgICAgICAnMjAwJzogJzIwMCcKICAgICAgICAgICcyMzMnOiAnMjMzJwogICAgICAgICAgJzI2Nic6ICcyNjYnCiAgICAgICAgICAnMzAwJzogJzMwMCcKICAgICAgICAgICczMzMnOiAnMzMzJwogICAgICAgICAgJzM2Nic6ICczNjYnCiAgICAgICAgICAnNDAwJzogJzQwMCcKICAgICAgICAgICc0NTAnOiAnNDUwJwogICAgICAgICAgJzUwMCc6ICc1MDAnCiAgICAgICAgICAnNTI1JzogJzUyNScKICAgICAgICAgICc2MDAnOiAnNjAwJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xvY2tyYXRlCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ2xvY2tSYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNvdW50OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE51bWJlciBvZiBSQU0gbW9kdWxlcwogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LVRvdGFsUkFNR0I6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEFKQVhUcmlnZ2VyczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudAogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ291bnRcIiAlXVslIENhcGFjaXR5ID0KICAgICAgICAgIFwiRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHlcIiAlXVxyXG5bJSBUb3RhbCA9IERhdGEuJENvdW50ICogRGF0YS4kQ2FwYWNpdHkKICAgICAgICAgICVdXHJcblslIFRvdGFsICVdIEdCIgogICAgICAgIEludGVycHJldGVyOiB+CiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBSZWFkb25seTogJzEnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJlcXVpcmVkQXJnczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVXBkYXRlRXZlbnRzOgogICAgICAgIC0gQ29uZmlnSXRlbUNyZWF0ZQogICAgICAgIC0gVmFsdWVVcGRhdGUKICAgICAgICAtIFZlcnNpb25EZWxldGUKICAgICAgRmllbGRUeXBlOiBTY3JpcHRUZW1wbGF0ZVRvb2xraXQKICAgICAgTGFiZWw6IFRvdGFsIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01NZW1vcnktVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1UeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRERSOiBERFIKICAgICAgICAgIEREUjI6IEREUjIKICAgICAgICAgIEREUjM6IEREUjMKICAgICAgICAgIEREUjQ6IEREUjQKICAgICAgICAgIEREUjU6IEREUjUKICAgICAgICAgIFNEUkFNOiBTRFJBTQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBJUHY0OiBJUHY0CiAgICAgICAgICAgICAgICBJUHY2OiBJUHY2CiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogSVAgUHJvdG9jb2wKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IElQIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgICAtIFN3aXRjaAogICAgICAgICAgICAgIC0gV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBPYmplY3QKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgb2JqZWN0IHBvcnQKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBGUUROCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENOQU1FL0FsaWFzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWN0aXZlCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBOZXR3b3JrIEluZm9ybWF0aW9uCiAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNlcnZlclNvZnR3YXJlLVJlZmVyZW5jZVRvU2VydmVyU29mdHdhcmU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gU2VydmVyIFNvZnR3YXJlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBTZXJ2ZXIgU29mdHdhcmUKICAgICAgTmFtZTogSVRTTVNlcnZlclNvZnR3YXJlLVJlZmVyZW5jZVRvU2VydmVyU29mdHdhcmUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TdG9yYWdlLVN0b3JhZ2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtVHlwZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIEhEREhhcmREaXNrRHJpdmU6IEhERCAoSGFyZCBEaXNrIERyaXZlKQogICAgICAgICAgICAgICAgTlZNZVNTRE5vblZvbGF0aWxlTWVtb3J5RXhwcmVzc1NvbGlkU3RhdGVEcml2ZTogTlZNZSBTU0QgKE5vbi1Wb2xhdGlsZQogICAgICAgICAgICAgICAgICBNZW1vcnkgRXhwcmVzcyBTb2xpZCBTdGF0ZSBEcml2ZSkKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU1NEU29saWRTdGF0ZURyaXZlOiBTU0QgKFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgU1NIRFNvbGlkU3RhdGVIeWJyaWREcml2ZTogU1NIRCAoU29saWQgU3RhdGUgSHlicmlkIERyaXZlKQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgVHlwZQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1UeXBlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1NYW51ZmFjdHVyZXIKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBBREFUQTogQURBVEEKICAgICAgICAgICAgICAgIEFEQVRBVGVjaG5vbG9neTogQURBVEEgVGVjaG5vbG9neQogICAgICAgICAgICAgICAgQXBhY2VyOiBBcGFjZXIKICAgICAgICAgICAgICAgIEJ1ZmZhbG86IEJ1ZmZhbG8KICAgICAgICAgICAgICAgIENvcnNhaXI6IENvcnNhaXIKICAgICAgICAgICAgICAgIENydWNpYWxNaWNyb246IENydWNpYWwgKE1pY3JvbikKICAgICAgICAgICAgICAgIEdUZWNobm9sb2d5V2VzdGVybkRpZ2l0YWw6IEctVGVjaG5vbG9neSAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgSEdTVFdlc3Rlcm5EaWdpdGFsOiBIR1NUIChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBIaXRhY2hpOiBIaXRhY2hpCiAgICAgICAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgICAgICAgIEtpbmdzdG9uOiBLaW5nc3RvbgogICAgICAgICAgICAgICAgS2luZ3N0b25EaWdpdGFsOiBLaW5nc3RvbiBEaWdpdGFsCiAgICAgICAgICAgICAgICBMYUNpZVNlYWdhdGU6IExhQ2llIChTZWFnYXRlKQogICAgICAgICAgICAgICAgTGV4YXI6IExleGFyCiAgICAgICAgICAgICAgICBNYXh0b3I6IE1heHRvcgogICAgICAgICAgICAgICAgT0NaVG9zaGliYTogT0NaIChUb3NoaWJhKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBQTlk6IFBOWQogICAgICAgICAgICAgICAgUGxleHRvcjogUGxleHRvcgogICAgICAgICAgICAgICAgU0toeW5peDogU0sgaHluaXgKICAgICAgICAgICAgICAgIFNhbXN1bmc6IFNhbXN1bmcKICAgICAgICAgICAgICAgIFNhbXN1bmdTZW1pY29uZHVjdG9yOiBTYW1zdW5nIFNlbWljb25kdWN0b3IKICAgICAgICAgICAgICAgIFNhbkRpc2tXZXN0ZXJuRGlnaXRhbDogU2FuRGlzayAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgU2VhZ2F0ZTogU2VhZ2F0ZQogICAgICAgICAgICAgICAgU2lsaWNvblBvd2VyOiBTaWxpY29uIFBvd2VyCiAgICAgICAgICAgICAgICBTb255OiBTb255CiAgICAgICAgICAgICAgICBTdXBlclRhbGVudDogU3VwZXIgVGFsZW50CiAgICAgICAgICAgICAgICBUZWFtR3JvdXA6IFRlYW0gR3JvdXAKICAgICAgICAgICAgICAgIFRvc2hpYmE6IFRvc2hpYmEKICAgICAgICAgICAgICAgIFRyYW5zY2VuZDogVHJhbnNjZW5kCiAgICAgICAgICAgICAgICBXZXN0ZXJuRGlnaXRhbDogV2VzdGVybiBEaWdpdGFsCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBNYW51ZmFjdHVyZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1vZGVsCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLU1vZGVsCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIFNlcmlhbE51bWJlcgogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXIKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBTdG9yYWdlCiAgICAgIE5hbWU6IElUU01TdG9yYWdlLVN0b3JhZ2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TdG9yYWdlUGFydGl0aW9uLVBhcnRpdGlvbjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1OYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gTmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1OYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1DYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLUZyZWVDYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIEZyZWUgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tVXNlZENhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gVXNlZCBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Vc2VkQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Nb3VudFBvaW50CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gTW91bnQgUG9pbnQKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTW91bnRQb2ludAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IFN0b3JhZ2UgUGFydGl0aW9uCiAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLVBhcnRpdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gU29mdHdhcmUKICAgIE5hbWU6IFNlcnZlciBTb2Z0d2FyZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU2VydmVyOjpTZXJ2ZXJcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTGljZW5zZTo6TGljZW5zZVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuUm9sZXM6XHJcbgogICAgXCAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMKICAgIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4KICAgIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNCiAgICBTZXJ2ZXI6XHJcbiAgICBOYW1lOiBJVFNNIFNlcnZlclxyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4KICAgIFwgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOgogICAgQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogU2VydmVyIFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIExpY2Vuc2UKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTGljZW5zZQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1SZWZlcmVuY2VUb1NlcnZlcjoKICAgICAgQ0lDbGFzczogU2VydmVyIFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIFNlcnZlcgogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogU2VydmVyCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9TZXJ2ZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBXb3JrcGxhY2UKICAgIE5hbWU6IFNJTSBDYXJkCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRyYWN0OjpDb250cmFjdFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBcclxuUm9sZXM6CiAgICBcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4KICAgIFwgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuCiAgICBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbAogICAgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTSBHRiBTSU0gQ2FyZFxyXG4gIElUU00gQ29udHJhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRyYWN0XHJcbgogICAgXCBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6CiAgICBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBJVFNNLUxlbnNUb0NvbnRyYWN0UGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBDb250cmFjdC1QZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9Db250cmFjdAogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9Db250cmFjdAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogQ29udHJhY3QgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9Db250cmFjdFBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvQ29udHJhY3RQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBDb250cmFjdC1QZXJpb2RVbnRpbAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvQ29udHJhY3QKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvQ29udHJhY3QKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IENvbnRyYWN0IHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0NvbnRyYWN0UGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvQ29udHJhY3RUeXBlOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IENvbnRyYWN0LVR5cGUKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0NvbnRyYWN0CiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0NvbnRyYWN0CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBUeXBlCiAgICAgIE5hbWU6IElUU00tTGVuc1RvQ29udHJhY3RUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvQ29udHJhY3Q6CiAgICAgIENJQ2xhc3M6IFNJTSBDYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIENvbnRyYWN0CiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IENvbnRyYWN0CiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9Db250cmFjdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNJTS1DYXJkbnVtYmVyOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ2FyZCBOdW1iZXIKICAgICAgTmFtZTogSVRTTVNJTS1DYXJkbnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU0lNLU1vYmlsZU51bWJlcjoKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vYmlsZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTVNJTS1Nb2JpbGVOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tUElOOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogUElOCiAgICAgIE5hbWU6IElUU01TSU0tUElOCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU0lNLVBJTjI6CiAgICAgIENJQ2xhc3M6IFNJTSBDYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBQSU4gMgogICAgICBOYW1lOiBJVFNNU0lNLVBJTjIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tUFVLOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogUFVLCiAgICAgIE5hbWU6IElUU01TSU0tUFVLCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU0lNLVBVSzI6CiAgICAgIENJQ2xhc3M6IFNJTSBDYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBQVUsgMgogICAgICBOYW1lOiBJVFNNU0lNLVBVSzIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tVHlwZToKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBFbWJlZGRlZCBTSU0gKGVTSU0pOiBFbWJlZGRlZCBTSU0gKGVTSU0pCiAgICAgICAgICBNaWNybyBTSU06IE1pY3JvIFNJTQogICAgICAgICAgTmFubyBTSU06IE5hbm8gU0lNCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFN0YW5kYXJkIFNJTTogU3RhbmRhcmQgU0lNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FyZCBUeXBlCiAgICAgIE5hbWU6IElUU01TSU0tVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogU21hcnRib2FyZAogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsIEluZm9ybWF0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQKICAgIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICBcclxuCiAgICBcIC0gTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCCiAgICBBY2NvdW50aW5nOjpBY2NvdW50aW5nXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4KICAgIFwgLSBOYW1lOiBMb2NhdGVkIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsCiAgICBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MKICAgIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbAogICAgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTSBHRiBEaXNwbGF5XHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuCiAgICBcIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIKICAgIExvY2F0ZWQgaW5cclxuICBDTURCIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuCiAgICBcICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDb250YWN0IERpc3RyaWJ1dG9yCiAgICAgIE5hbWU6IENvbnRhY3QtRGlzdHJpYnV0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtVXNlcjoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgSW52b2ljZQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlcnN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1Qb3dlckRlbGl2ZXJ5OgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgTm86IE5vCiAgICAgICAgICBZZXM6IFllcwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBvd2VyIERlbGl2ZXJ5CiAgICAgIE5hbWU6IElUU01EaXNwbGF5LVBvd2VyRGVsaXZlcnkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01EaXNwbGF5LVJlc29sdXRpb246CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAySyAoMjA0OCB4IDEwODApOiAySyAoMjA0OCB4IDEwODApCiAgICAgICAgICAnNEsgVWx0cmEgSEQgKDM4NDAgeCAyMTYwKTonOiAnNEsgVWx0cmEgSEQgKDM4NDAgeCAyMTYwKTonCiAgICAgICAgICA1SyAoNTEyMCB4IDI4ODApOiA1SyAoNTEyMCB4IDI4ODApCiAgICAgICAgICA4SyBVbHRyYSBIRCAoNzY4MCB4IDQzMjApOiA4SyBVbHRyYSBIRCAoNzY4MCB4IDQzMjApCiAgICAgICAgICBGdWxsIEhEICgxOTIwIHggMTA4MCk6IEZ1bGwgSEQgKDE5MjAgeCAxMDgwKQogICAgICAgICAgSEQgKDEyODAgeCA3MjApOiBIRCAoMTI4MCB4IDcyMCkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUXVhZCBIRCAoMjU2MCB4IDE0NDApOiBRdWFkIEhEICgyNTYwIHggMTQ0MCkKICAgICAgICAgIFVXUUhEICgzNDQwIHggMTQ0MCk6IFVXUUhEICgzNDQwIHggMTQ0MCkKICAgICAgICAgIFdVWEdBICgxOTIwIHggMTIwMCk6IFdVWEdBICgxOTIwIHggMTIwMCkKICAgICAgICAgIFdYR0EgKDEzNjYgeCA3NjgpOiBXWEdBICgxMzY2IHggNzY4KQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1vbml0b3IgUmVzb2x1dGlvbgogICAgICBOYW1lOiBJVFNNRGlzcGxheS1SZXNvbHV0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1TaXplSW5jaDoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcyNyc6IDI3IgogICAgICAgICAgJzMyJzogMzIiCiAgICAgICAgICAnMzQnOiAzNCIKICAgICAgICAgICczNSc6IDM1IgogICAgICAgICAgJzQwJzogNDAiCiAgICAgICAgICAnNDMnOiA0MyIKICAgICAgICAgICc0OSc6IDQ5IgogICAgICAgICAgJzU1JzogNTUiCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNb25pdG9yIFNpemUKICAgICAgTmFtZTogSVRTTURpc3BsYXktU2l6ZUluY2gKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01EaXNwbGF5LVR5cGU6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSk6IExDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KQogICAgICAgICAgTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKTogTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKQogICAgICAgICAgT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKTogT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0CiAgICAgICAgICAgIEVtaXR0aW5nIERpb2RlKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUb3VjaHNjcmVlbiBNb25pdG9yOiBUb3VjaHNjcmVlbiBNb25pdG9yCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNRGlzcGxheS1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBJbmZyYXN0cnVjdHVyZQogICAgTmFtZTogU3RvcmFnZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTW9kZWw6Ok1vZGVsXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuCiAgICBcIC0gTmFtZTogSGFyZHdhcmVcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIENQVTo6Q1BVXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIE1lbW9yeTo6TWVtb3J5XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIEdyYXBoaWNzIENhcmQ6OkdyYXBoaWNzIENhcmRcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZTo6U3RvcmFnZVxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjo6U3RvcmFnZSBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gRm9ybSBGYWN0b3I6OkZvcm0gRmFjdG9yXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcblxyXG4gIC0gTmFtZTogU29mdHdhcmVcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcgU3lzdGVtOjpPcGVyYXRpbmcgU3lzdGVtXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFNlcnZlciBTb2Z0d2FyZTo6U2VydmVyIFNvZnR3YXJlXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcblxyXG4gIC0gTmFtZTogTmV0d29yayBJbmZvXHJcbgogICAgXCAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbiAgLSBOYW1lOiBBY2NvdW50aW5nXHJcbgogICAgXCAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZAogICAgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IERldGFpbHNcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDUFU6OkNQVVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNZW1vcnk6Ok1lbW9yeVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuCiAgICBcICAgICAtIFNlY3Rpb246IElUU00gU2VydmVyIFNvZnR3YXJlOjpTZXJ2ZXIgU29mdHdhcmVcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDoKICAgIDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UKICAgIFBhcnRpdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBGb3JtIEZhY3Rvcjo6Rm9ybSBGYWN0b3JcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDVcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiA1XHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcwogICAgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsCiAgICBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlCiAgICBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaAogICAgY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uCiAgICByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlCiAgICB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOgogICAgSVRTTSBNb2RlbFxyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuCiAgICBcICAgTmFtZTogQ01EQiBMb2NhdGVkIGluXHJcbiAgSVRTTSBPcGVyYXRpbmcgU3lzdGVtOlxyXG4gICAgTmFtZTogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbVxyXG4gIElUU00gU2VydmVyIFNvZnR3YXJlOlxyXG4gICAgTmFtZTogSVRTTSBTZXJ2ZXIgU29mdHdhcmUgIFxyXG4gIElUU00KICAgIENQVTpcclxuICAgIE5hbWU6IElUU00gQ1BVXHJcbiAgSVRTTSBNZW1vcnk6XHJcbiAgICBOYW1lOiBJVFNNIE1lbW9yeVxyXG4gIElUU00KICAgIEdyYXBoaWNzIENhcmQ6XHJcbiAgICBOYW1lOiBJVFNNIEdyYXBoaWNzIENhcmRcclxuICBJVFNNIFN0b3JhZ2U6XHJcbiAgICBOYW1lOgogICAgSVRTTSBTdG9yYWdlXHJcbiAgSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjpcclxuICAgIE5hbWU6IElUU00gU3RvcmFnZSBQYXJ0aXRpb24KICAgIFwgICBcclxuICBJVFNNIEZvcm0gRmFjdG9yOlxyXG4gICAgTmFtZTogSVRTTSBGb3JtIEZhY3RvclxyXG4gIElUU00gTmV0d29yayBJbmZvOlxyXG4KICAgIFwgICBOYW1lOiBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4gIENNREIKICAgIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIKICAgIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDUFUtQ1BVQ2xhc3M6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEZXNrdG9wOiBEZXNrdG9wCiAgICAgICAgICBMYXB0b3A6IExhcHRvcAogICAgICAgICAgTW9iaWxlRW1iZWRkZWQ6IE1vYmlsZS9FbWJlZGRlZAogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBTZXJ2ZXI6IFNlcnZlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENQVSBDbGFzcwogICAgICBOYW1lOiBDUFUtQ1BVQ2xhc3MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1DbG9ja3NwZWVkOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMTZHSHo6IDEuNiBHSHoKICAgICAgICAgIDE3R0h6OiAxLjcgR0h6CiAgICAgICAgICAxOEdIejogMS44IEdIegogICAgICAgICAgMTlHSHo6IDEuOSBHSHoKICAgICAgICAgIDIwR0h6OiAyLjAgR0h6CiAgICAgICAgICAyMUdIejogMi4xIEdIegogICAgICAgICAgMjJHSHo6IDIuMiBHSHoKICAgICAgICAgIDIzR0h6OiAyLjMgR0h6CiAgICAgICAgICAyNEdIejogMi40IEdIegogICAgICAgICAgMjVHSHo6IDIuNSBHSHoKICAgICAgICAgIDI2R0h6OiAyLjYgR0h6CiAgICAgICAgICAyN0dIejogMi43IEdIegogICAgICAgICAgMjhHSHo6IDIuOCBHSHoKICAgICAgICAgIDI5R0h6OiAyLjkgR0h6CiAgICAgICAgICAzMEdIejogMy4wIEdIegogICAgICAgICAgMzFHSHo6IDMuMSBHSHoKICAgICAgICAgIDMyR0h6OiAzLjIgR0h6CiAgICAgICAgICAzM0dIejogMy4zIEdIegogICAgICAgICAgMzRHSHo6IDMuNCBHSHoKICAgICAgICAgIDM1R0h6OiAzLjUgR0h6CiAgICAgICAgICAzNkdIejogMy42IEdIegogICAgICAgICAgMzdHSHo6IDMuNyBHSHoKICAgICAgICAgIDM4R0h6OiAzLjggR0h6CiAgICAgICAgICAzOUdIejogMy45IEdIegogICAgICAgICAgNDBHSHo6IDQuMCBHSHoKICAgICAgICAgIDQxR0h6OiA0LjEgR0h6CiAgICAgICAgICA0MkdIejogNC4yIEdIegogICAgICAgICAgNDNHSHo6IDQuMyBHSHoKICAgICAgICAgIDQ0R0h6OiA0LjQgR0h6CiAgICAgICAgICA0NUdIejogNC41IEdIegogICAgICAgICAgNDZHSHo6IDQuNiBHSHoKICAgICAgICAgIDQ3R0h6OiA0LjcgR0h6CiAgICAgICAgICA0OEdIejogNC44IEdIegogICAgICAgICAgNDlHSHo6IDQuOSBHSHoKICAgICAgICAgIDUwR0h6OiA1LjAgR0h6CiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3NwZWVkCiAgICAgIE5hbWU6IENQVS1DbG9ja3NwZWVkCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtTnVtYmVyT2ZDUFU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE51bWJlciBvZiBDUFVzCiAgICAgIE5hbWU6IENQVS1OdW1iZXJPZkNQVQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLVBoeXNpY2FsQ29yZXM6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzE5JzogJzE5JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICcyMCc6ICcyMCcKICAgICAgICAgICcyMSc6ICcyMScKICAgICAgICAgICcyMic6ICcyMicKICAgICAgICAgICcyMyc6ICcyMycKICAgICAgICAgICcyNCc6ICcyNCcKICAgICAgICAgICcyNSc6ICcyNScKICAgICAgICAgICcyNic6ICcyNicKICAgICAgICAgICcyNyc6ICcyNycKICAgICAgICAgICcyOCc6ICcyOCcKICAgICAgICAgICcyOSc6ICcyOScKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnMzAnOiAnMzAnCiAgICAgICAgICAnMzEnOiAnMzEnCiAgICAgICAgICAnMzInOiAnMzInCiAgICAgICAgICAnMzMnOiAnMzMnCiAgICAgICAgICAnMzQnOiAnMzQnCiAgICAgICAgICAnMzUnOiAnMzUnCiAgICAgICAgICAnMzYnOiAnMzYnCiAgICAgICAgICAnMzcnOiAnMzcnCiAgICAgICAgICAnMzgnOiAnMzgnCiAgICAgICAgICAnMzknOiAnMzknCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzQwJzogJzQwJwogICAgICAgICAgJzQxJzogJzQxJwogICAgICAgICAgJzQyJzogJzQyJwogICAgICAgICAgJzQzJzogJzQzJwogICAgICAgICAgJzQ0JzogJzQ0JwogICAgICAgICAgJzQ1JzogJzQ1JwogICAgICAgICAgJzQ2JzogJzQ2JwogICAgICAgICAgJzQ3JzogJzQ3JwogICAgICAgICAgJzQ4JzogJzQ4JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUGh5c2ljYWwgQ29yZXMKICAgICAgTmFtZTogQ1BVLVBoeXNpY2FsQ29yZXMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1Tb2NrZXRUeXBlOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU00OiBBTTQKICAgICAgICAgIEJHQTogQkdBCiAgICAgICAgICBMR0ExMTUxOiBMR0ExMTUxCiAgICAgICAgICBMR0ExMjAwOiBMR0ExMjAwCiAgICAgICAgICBMR0ExMzY2OiBMR0ExMzY2CiAgICAgICAgICBMR0ExNzAwOiBMR0ExNzAwCiAgICAgICAgICBMR0EyMDExOiBMR0EyMDExCiAgICAgICAgICBMR0EyMDExMzogTEdBMjAxMS0zCiAgICAgICAgICBMR0EyMDY2OiBMR0EyMDY2CiAgICAgICAgICBMR0E3NzU6IExHQTc3NQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQR0E6IFBHQQogICAgICAgICAgU29ja2V0MzcwOiBTb2NrZXQgMzcwCiAgICAgICAgICBTb2NrZXQ0Nzg6IFNvY2tldCA0NzgKICAgICAgICAgIFRSNDogVFI0CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogU29ja2V0IFR5cGUKICAgICAgTmFtZTogQ1BVLVNvY2tldFR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1UaHJlYWRzOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFRocmVhZHMKICAgICAgTmFtZTogQ1BVLVRocmVhZHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RVbnRpbAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlVHlwZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tUmVmZXJlbmNlVG9PUzoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBPcGVyYXRpbmcgU3lzdGVtCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb09TCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItUmFja0RlcHRoOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMjMuNiBpbmNoZXMgKDYwMCBtbSk6IDIzLjYgaW5jaGVzICg2MDAgbW0pCiAgICAgICAgICAzMS41IGluY2hlcyAoODAwIG1tKTogMzEuNSBpbmNoZXMgKDgwMCBtbSkKICAgICAgICAgIDM1LjQgaW5jaGVzICg5MDAgbW0pOiAzNS40IGluY2hlcyAoOTAwIG1tKQogICAgICAgICAgMzkuNCBpbmNoZXMgKDEwMDAgbW0pOiAzOS40IGluY2hlcyAoMTAwMCBtbSkKICAgICAgICAgIDQzLjMgaW5jaGVzICgxMTAwIG1tKTogJzQzLjMgaW5jaGVzICgxMTAwIG1tKTonCiAgICAgICAgICA0Ny4yIGluY2hlcyAoMTIwMCBtbSk6IDQ3LjIgaW5jaGVzICgxMjAwIG1tKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBEZXB0aAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGgKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tVbml0czoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknCiAgICAgICAgICAnMTAnOiAnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJwogICAgICAgICAgJzEyJzogJzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknCiAgICAgICAgICAnMTUnOiAnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKScKICAgICAgICAgICcxOCc6ICcxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknCiAgICAgICAgICAnMic6ICcyVTogMy41IGluY2hlcyAoOC44OSBjbSknCiAgICAgICAgICAnMjAnOiAnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJwogICAgICAgICAgJzIyJzogJzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKScKICAgICAgICAgICcyNCc6ICcyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKScKICAgICAgICAgICcyNyc6ICcyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKScKICAgICAgICAgICczJzogJzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJwogICAgICAgICAgJzMwJzogJzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknCiAgICAgICAgICAnMzMnOiAnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknCiAgICAgICAgICAnMzYnOiAnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknCiAgICAgICAgICAnMzknOiAnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknCiAgICAgICAgICAnNCc6ICc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKScKICAgICAgICAgICc0Mic6ICc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJwogICAgICAgICAgJzQ1JzogJzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJwogICAgICAgICAgJzQ4JzogJzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJwogICAgICAgICAgJzUnOiAnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknCiAgICAgICAgICAnNic6ICc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKScKICAgICAgICAgICc3JzogJzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKScKICAgICAgICAgICc4JzogJzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKScKICAgICAgICAgICc5JzogJzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKScKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFJhY2sgVW5pdHMgKFUpCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVJhY2tVbml0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItVHlwZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE5LWluY2ggUmFjazogMTktaW5jaCBSYWNrCiAgICAgICAgICAyMS1pbmNoIFJhY2s6IDIxLWluY2ggUmFjawogICAgICAgICAgMjMtaW5jaCBSYWNrOiAyMy1pbmNoIFJhY2sKICAgICAgICAgIEN1c3RvbSBSYWNrOiBDdXN0b20gUmFjawogICAgICAgICAgRVRTSSBSYWNrOiBFVFNJIFJhY2sKICAgICAgICAgIE1pbmktUmFjazogTWluaS1SYWNrCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRvd2VyOiBUb3dlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEZvcm0gRmFjdG9yCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVdlaWdodDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSGFyZHdhcmUgV2VpZ2h0CiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVdlaWdodAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2U6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBR1A6IEFHUAogICAgICAgICAgRUlTQTogRUlTQQogICAgICAgICAgRmlyZVdpcmVJRUVFMTM5NDogRmlyZVdpcmUgKElFRUUgMTM5NCkKICAgICAgICAgIElTQTogSVNBCiAgICAgICAgICBMUENMb3dQaW5Db3VudDogTFBDIChMb3cgUGluIENvdW50KQogICAgICAgICAgTUNBTWljcm9DaGFubmVsQXJjaGl0ZWN0dXJlOiBNQ0EgKE1pY3JvIENoYW5uZWwgQXJjaGl0ZWN0dXJlKQogICAgICAgICAgTnVCdXM6IE51QnVzCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBDSTogUENJCiAgICAgICAgICBQQ0lFeHByZXNzUENJZTogUENJIEV4cHJlc3MgKFBDSWUpCiAgICAgICAgICBQQ0lYOiBQQ0ktWAogICAgICAgICAgVGh1bmRlcmJvbHQ6IFRodW5kZXJib2x0CiAgICAgICAgICBVU0JDOiBVU0ItQwogICAgICAgICAgVVNCVW5pdmVyc2FsU2VyaWFsQnVzOiBVU0IgKFVuaXZlcnNhbCBTZXJpYWwgQnVzKQogICAgICAgICAgVkVTQUxvY2FsQnVzVkxCOiBWRVNBIExvY2FsIEJ1cyAoVkxCKQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEJ1cyBJbnRlcmZhY2UKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQ291bnQ6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3I6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTURSYWRlb25IRDY3NTA6IEFNRCBSYWRlb24gSEQgNjc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzcwOiBBTUQgUmFkZW9uIEhEIDY3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjc5MDogQU1EIFJhZGVvbiBIRCA2NzkwCiAgICAgICAgICBBTURSYWRlb25IRDY4NTA6IEFNRCBSYWRlb24gSEQgNjg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODcwOiBBTUQgUmFkZW9uIEhEIDY4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk1MDogQU1EIFJhZGVvbiBIRCA2OTUwCiAgICAgICAgICBBTURSYWRlb25IRDY5NzA6IEFNRCBSYWRlb24gSEQgNjk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTkwOiBBTUQgUmFkZW9uIEhEIDY5OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc1MDogQU1EIFJhZGVvbiBIRCA3NzUwCiAgICAgICAgICBBTURSYWRlb25IRDc3NzA6IEFNRCBSYWRlb24gSEQgNzc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzkwOiBBTUQgUmFkZW9uIEhEIDc3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg1MDogQU1EIFJhZGVvbiBIRCA3ODUwCiAgICAgICAgICBBTURSYWRlb25IRDc4NzA6IEFNRCBSYWRlb24gSEQgNzg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTUwOiBBTUQgUmFkZW9uIEhEIDc5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzk3MDogQU1EIFJhZGVvbiBIRCA3OTcwCiAgICAgICAgICBBTURSYWRlb25IRDc5OTA6IEFNRCBSYWRlb24gSEQgNzk5MAogICAgICAgICAgQU1EUmFkZW9uUHJvRHVvOiBBTUQgUmFkZW9uIFBybyBEdW8KICAgICAgICAgIEFNRFJhZGVvblByb1NTRzogQU1EIFJhZGVvbiBQcm8gU1NHCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDIxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDIxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYMzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMzEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g0MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA0MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDUxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDUxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNzEwMAogICAgICAgICAgQU1EUmFkZW9uUjUyMTA6IEFNRCBSYWRlb24gUjUgMjEwCiAgICAgICAgICBBTURSYWRlb25SNTIyMDogQU1EIFJhZGVvbiBSNSAyMjAKICAgICAgICAgIEFNRFJhZGVvblI1MjMwOiBBTUQgUmFkZW9uIFI1IDIzMAogICAgICAgICAgQU1EUmFkZW9uUjUzMjA6IEFNRCBSYWRlb24gUjUgMzIwCiAgICAgICAgICBBTURSYWRlb25SNTMzMDogQU1EIFJhZGVvbiBSNSAzMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzQwOiBBTUQgUmFkZW9uIFI1IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNDA6IEFNRCBSYWRlb24gUjcgMjQwCiAgICAgICAgICBBTURSYWRlb25SNzI1MDogQU1EIFJhZGVvbiBSNyAyNTAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwWDogQU1EIFJhZGVvbiBSNyAyNTBYCiAgICAgICAgICBBTURSYWRlb25SNzI2MFg6IEFNRCBSYWRlb24gUjcgMjYwWAogICAgICAgICAgQU1EUmFkZW9uUjczNDA6IEFNRCBSYWRlb24gUjcgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzM1MDogQU1EIFJhZGVvbiBSNyAzNTAKICAgICAgICAgIEFNRFJhZGVvblI3MzYwOiBBTUQgUmFkZW9uIFI3IDM2MAogICAgICAgICAgQU1EUmFkZW9uUjczNzA6IEFNRCBSYWRlb24gUjcgMzcwCiAgICAgICAgICBBTURSYWRlb25SOTI4NTogQU1EIFJhZGVvbiBSOSAyODUKICAgICAgICAgIEFNRFJhZGVvblI5MjkwOiBBTUQgUmFkZW9uIFI5IDI5MAogICAgICAgICAgQU1EUmFkZW9uUjkyOTBYOiBBTUQgUmFkZW9uIFI5IDI5MFgKICAgICAgICAgIEFNRFJhZGVvblI5Mjk1WDI6IEFNRCBSYWRlb24gUjkgMjk1WDIKICAgICAgICAgIEFNRFJhZGVvblI5MzgwOiBBTUQgUmFkZW9uIFI5IDM4MAogICAgICAgICAgQU1EUmFkZW9uUjkzODBYOiBBTUQgUmFkZW9uIFI5IDM4MFgKICAgICAgICAgIEFNRFJhZGVvblI5MzkwOiBBTUQgUmFkZW9uIFI5IDM5MAogICAgICAgICAgQU1EUmFkZW9uUjkzOTBYOiBBTUQgUmFkZW9uIFI5IDM5MFgKICAgICAgICAgIEFNRFJhZGVvblI5RnVyeVg6IEFNRCBSYWRlb24gUjkgRnVyeSBYCiAgICAgICAgICBBTURSYWRlb25SOU5hbm86IEFNRCBSYWRlb24gUjkgTmFubwogICAgICAgICAgQU1EUmFkZW9uUlg1NDAwWFQ6IEFNRCBSYWRlb24gUlggNTQwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwOiBBTUQgUmFkZW9uIFJYIDU1MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMFhUOiBBTUQgUmFkZW9uIFJYIDU1MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMDogQU1EIFJhZGVvbiBSWCA1NjAwCiAgICAgICAgICBBTURSYWRlb25SWDU2MDBYVDogQU1EIFJhZGVvbiBSWCA1NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU3MDogQU1EIFJhZGVvbiBSWCA1NzAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMDogQU1EIFJhZGVvbiBSWCA1NzAwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDBYVDogQU1EIFJhZGVvbiBSWCA1NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU4MDogQU1EIFJhZGVvbiBSWCA1ODAKICAgICAgICAgIEFNRFJhZGVvblJYNTkwOiBBTUQgUmFkZW9uIFJYIDU5MAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwOiBBTUQgUmFkZW9uIFJYIDY2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMFhUOiBBTUQgUmFkZW9uIFJYIDY2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMDogQU1EIFJhZGVvbiBSWCA2NzAwCiAgICAgICAgICBBTURSYWRlb25SWDY3MDBYVDogQU1EIFJhZGVvbiBSWCA2NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY4MDBYVDogQU1EIFJhZGVvbiBSWCA2ODAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY5MDBYVDogQU1EIFJhZGVvbiBSWCA2OTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E1NjogQU1EIFJhZGVvbiBSWCBWZWdhIDU2CiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E2NDogQU1EIFJhZGVvbiBSWCBWZWdhIDY0CiAgICAgICAgICBOVklESUFHZUZvcmNlMjEwOiBOVklESUEgR2VGb3JjZSAyMTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDEwMzA6IE5WSURJQSBHZUZvcmNlIEdUIDEwMzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUxMDogTlZJRElBIEdlRm9yY2UgR1QgNTEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MjA6IE5WSURJQSBHZUZvcmNlIEdUIDUyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTMwOiBOVklESUEgR2VGb3JjZSBHVCA1MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDU0NTogTlZJRElBIEdlRm9yY2UgR1QgNTQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MTA6IE5WSURJQSBHZUZvcmNlIEdUIDYxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjIwOiBOVklESUEgR2VGb3JjZSBHVCA2MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYzMDogTlZJRElBIEdlRm9yY2UgR1QgNjMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2NDA6IE5WSURJQSBHZUZvcmNlIEdUIDY0MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzEwOiBOVklESUEgR2VGb3JjZSBHVCA3MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDczMDogTlZJRElBIEdlRm9yY2UgR1QgNzMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA2MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDcwOiBOVklESUEgR2VGb3JjZSBHVFggMTA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzQ1OiBOVklESUEgR2VGb3JjZSBHVFggNzQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwOiBOVklESUEgR2VGb3JjZSBHVFggNzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc3MDogTlZJRElBIEdlRm9yY2UgR1RYIDc3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MDogTlZJRElBIEdlRm9yY2UgR1RYIDc4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTUwOiBOVklESUEgR2VGb3JjZSBHVFggOTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTYwOiBOVklESUEgR2VGb3JjZSBHVFggOTYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTcwOiBOVklESUEgR2VGb3JjZSBHVFggOTcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwOiBOVklESUEgR2VGb3JjZSBHVFggOTgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDE1MDogTlZJRElBIEdlRm9yY2UgTVgxNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDM1MDogTlZJRElBIEdlRm9yY2UgTVgzNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDQ1MDogTlZJRElBIEdlRm9yY2UgTVg0NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDYwOiBOVklESUEgR2VGb3JjZSBSVFggMjA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA2MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDkwOiBOVklESUEgR2VGb3JjZSBSVFggMzA5MAogICAgICAgICAgTlZJRElBTlZTMzAwOiBOVklESUEgTlZTIDMwMAogICAgICAgICAgTlZJRElBTlZTMzEwOiBOVklESUEgTlZTIDMxMAogICAgICAgICAgTlZJRElBTlZTNTEwOiBOVklESUEgTlZTIDUxMAogICAgICAgICAgTlZJRElBUXVhZHJvMjAwMDogTlZJRElBIFF1YWRybyAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm82MDA6IE5WSURJQSBRdWFkcm8gNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMTIwMDogTlZJRElBIFF1YWRybyBLMTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzIyMDA6IE5WSURJQSBRdWFkcm8gSzIyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MDAwOiBOVklESUEgUXVhZHJvIEs0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwOiBOVklESUEgUXVhZHJvIEs0MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjAwOiBOVklESUEgUXVhZHJvIEs0MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNTIwMDogTlZJRElBIFF1YWRybyBLNTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYwMDogTlZJRElBIFF1YWRybyBLNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjEwTTogTlZJRElBIFF1YWRybyBLNjEwTQogICAgICAgICAgTlZJRElBUXVhZHJvSzYyMDogTlZJRElBIFF1YWRybyBLNjIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwTTogTlZJRElBIFF1YWRybyBLNjIwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTEwMDBNOiBOVklESUEgUXVhZHJvIE0xMDAwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTIwMDA6IE5WSURJQSBRdWFkcm8gTTIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb000MDAwOiBOVklESUEgUXVhZHJvIE00MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNTAwMDogTlZJRElBIFF1YWRybyBNNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwMDA6IE5WSURJQSBRdWFkcm8gTTYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDBNOiBOVklESUEgUXVhZHJvIE02MDBNCiAgICAgICAgICBOVklESUFRdWFkcm9QMTAwMDogTlZJRElBIFF1YWRybyBQMTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDIwMDA6IE5WSURJQSBRdWFkcm8gUDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDA6IE5WSURJQSBRdWFkcm8gUDQwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDA6IE5WSURJQSBRdWFkcm8gUDQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A1MDAwOiBOVklESUEgUXVhZHJvIFA1MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwOiBOVklESUEgUXVhZHJvIFA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDAwOiBOVklESUEgUXVhZHJvIFA2MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjIwOiBOVklESUEgUXVhZHJvIFA2MjAKICAgICAgICAgIE5WSURJQVRlc2xhSzgwOiBOVklESUEgVGVzbGEgSzgwCiAgICAgICAgICBOVklESUFUZXNsYVAxMDA6IE5WSURJQSBUZXNsYSBQMTAwCiAgICAgICAgICBOVklESUFUZXNsYVQ0OiBOVklESUEgVGVzbGEgVDQKICAgICAgICAgIE5WSURJQVRlc2xhVjEwMDogTlZJRElBIFRlc2xhIFYxMDAKICAgICAgICAgIE5WSURJQVRpdGFuUlRYOiBOVklESUEgVGl0YW4gUlRYCiAgICAgICAgICBOVklESUFUaXRhblY6IE5WSURJQSBUaXRhbiBWCiAgICAgICAgICBOVklESUFUaXRhblhQYXNjYWw6IE5WSURJQSBUaXRhbiBYIChQYXNjYWwpCiAgICAgICAgICBOVklESUFUaXRhblhwOiBOVklESUEgVGl0YW4gWHAKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogMSBHQgogICAgICAgICAgJzExJzogMTEgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMic6IDIgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQnOiA0IEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBHRERSNTogR0REUjUKICAgICAgICAgIEdERFI1WDogR0REUjVYCiAgICAgICAgICBHRERSNjogR0REUjYKICAgICAgICAgIEdERFI2WDogR0REUjZYCiAgICAgICAgICBIQk0yOiBIQk0yCiAgICAgICAgICBIQk0yRTogSEJNMkUKICAgICAgICAgIEhCTUhpZ2hCYW5kd2lkdGhNZW1vcnk6IEhCTSAoSGlnaCBCYW5kd2lkdGggTWVtb3J5KQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWVtb3J5IFR5cGUKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHM6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEVkk6IERWSQogICAgICAgICAgRGlzcGxheVBvcnQ6IERpc3BsYXlQb3J0CiAgICAgICAgICBIRE1JOiBIRE1JCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFZHQTogVkdBCiAgICAgICAgICBWaXJ0dWFsTGluazogVmlydHVhbExpbmsKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBPdXRwdXRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtT3V0cHV0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnRcIiAlXVslIENhcGFjaXR5CiAgICAgICAgICA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQKICAgICAgICAgICogRGF0YS4kQ2FwYWNpdHkgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIE5hbWVVcGRhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uQ3JlYXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1DYXBhY2l0eToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDI0JzogMTAyNCBHQgogICAgICAgICAgJzEyJzogMTIgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICAnOTYnOiA5NiBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgKEdCKQogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNsb2NrUmF0ZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDAnOiAnMTAwJwogICAgICAgICAgJzEzMyc6ICcxMzMnCiAgICAgICAgICAnMTY2JzogJzE2NicKICAgICAgICAgICcyMDAnOiAnMjAwJwogICAgICAgICAgJzIzMyc6ICcyMzMnCiAgICAgICAgICAnMjY2JzogJzI2NicKICAgICAgICAgICczMDAnOiAnMzAwJwogICAgICAgICAgJzMzMyc6ICczMzMnCiAgICAgICAgICAnMzY2JzogJzM2NicKICAgICAgICAgICc0MDAnOiAnNDAwJwogICAgICAgICAgJzQ1MCc6ICc0NTAnCiAgICAgICAgICAnNTAwJzogJzUwMCcKICAgICAgICAgICc1MjUnOiAnNTI1JwogICAgICAgICAgJzYwMCc6ICc2MDAnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3JhdGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DbG9ja1JhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ291bnQ6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIFJBTSBtb2R1bGVzCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudFwiICVdWyUgQ2FwYWNpdHkgPQogICAgICAgICAgXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQgKiBEYXRhLiRDYXBhY2l0eQogICAgICAgICAgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkRlbGV0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgUkFNIChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LVR5cGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBERFI6IEREUgogICAgICAgICAgRERSMjogRERSMgogICAgICAgICAgRERSMzogRERSMwogICAgICAgICAgRERSNDogRERSNAogICAgICAgICAgRERSNTogRERSNQogICAgICAgICAgU0RSQU06IFNEUkFNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbzoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBJUCBOZXR3b3JrCiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogUmVsZXZhbnRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBJUCBOZXR3b3JrCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1BQyBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSG9zdG5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBQcmltYXJ5CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTZXJ2ZXIgU29mdHdhcmUKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFNlcnZlciBTb2Z0d2FyZQogICAgICBOYW1lOiBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2UtU3RvcmFnZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1UeXBlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSERESGFyZERpc2tEcml2ZTogSEREIChIYXJkIERpc2sgRHJpdmUpCiAgICAgICAgICAgICAgICBOVk1lU1NETm9uVm9sYXRpbGVNZW1vcnlFeHByZXNzU29saWRTdGF0ZURyaXZlOiBOVk1lIFNTRCAoTm9uLVZvbGF0aWxlCiAgICAgICAgICAgICAgICAgIE1lbW9yeSBFeHByZXNzIFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTU0RTb2xpZFN0YXRlRHJpdmU6IFNTRCAoU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBTU0hEU29saWRTdGF0ZUh5YnJpZERyaXZlOiBTU0hEIChTb2xpZCBTdGF0ZSBIeWJyaWQgRHJpdmUpCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBUeXBlCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIEFEQVRBOiBBREFUQQogICAgICAgICAgICAgICAgQURBVEFUZWNobm9sb2d5OiBBREFUQSBUZWNobm9sb2d5CiAgICAgICAgICAgICAgICBBcGFjZXI6IEFwYWNlcgogICAgICAgICAgICAgICAgQnVmZmFsbzogQnVmZmFsbwogICAgICAgICAgICAgICAgQ29yc2FpcjogQ29yc2FpcgogICAgICAgICAgICAgICAgQ3J1Y2lhbE1pY3JvbjogQ3J1Y2lhbCAoTWljcm9uKQogICAgICAgICAgICAgICAgR1RlY2hub2xvZ3lXZXN0ZXJuRGlnaXRhbDogRy1UZWNobm9sb2d5IChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBIR1NUV2VzdGVybkRpZ2l0YWw6IEhHU1QgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIEhpdGFjaGk6IEhpdGFjaGkKICAgICAgICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgICAgICAgS2luZ3N0b246IEtpbmdzdG9uCiAgICAgICAgICAgICAgICBLaW5nc3RvbkRpZ2l0YWw6IEtpbmdzdG9uIERpZ2l0YWwKICAgICAgICAgICAgICAgIExhQ2llU2VhZ2F0ZTogTGFDaWUgKFNlYWdhdGUpCiAgICAgICAgICAgICAgICBMZXhhcjogTGV4YXIKICAgICAgICAgICAgICAgIE1heHRvcjogTWF4dG9yCiAgICAgICAgICAgICAgICBPQ1pUb3NoaWJhOiBPQ1ogKFRvc2hpYmEpCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFBOWTogUE5ZCiAgICAgICAgICAgICAgICBQbGV4dG9yOiBQbGV4dG9yCiAgICAgICAgICAgICAgICBTS2h5bml4OiBTSyBoeW5peAogICAgICAgICAgICAgICAgU2Ftc3VuZzogU2Ftc3VuZwogICAgICAgICAgICAgICAgU2Ftc3VuZ1NlbWljb25kdWN0b3I6IFNhbXN1bmcgU2VtaWNvbmR1Y3RvcgogICAgICAgICAgICAgICAgU2FuRGlza1dlc3Rlcm5EaWdpdGFsOiBTYW5EaXNrIChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBTZWFnYXRlOiBTZWFnYXRlCiAgICAgICAgICAgICAgICBTaWxpY29uUG93ZXI6IFNpbGljb24gUG93ZXIKICAgICAgICAgICAgICAgIFNvbnk6IFNvbnkKICAgICAgICAgICAgICAgIFN1cGVyVGFsZW50OiBTdXBlciBUYWxlbnQKICAgICAgICAgICAgICAgIFRlYW1Hcm91cDogVGVhbSBHcm91cAogICAgICAgICAgICAgICAgVG9zaGliYTogVG9zaGliYQogICAgICAgICAgICAgICAgVHJhbnNjZW5kOiBUcmFuc2NlbmQKICAgICAgICAgICAgICAgIFdlc3Rlcm5EaWdpdGFsOiBXZXN0ZXJuIERpZ2l0YWwKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIE1hbnVmYWN0dXJlcgogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1NYW51ZmFjdHVyZXIKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1Nb2RlbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTW9kZWwKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVNlcmlhbE51bWJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IFN0b3JhZ2UKICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU3RvcmFnZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBOYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gRnJlZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Vc2VkQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBVc2VkIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBNb3VudCBQb2ludAogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Nb3VudFBvaW50CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZSBQYXJ0aXRpb24KICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBMb2NhdGlvbgogICAgTmFtZTogU3Vic2lkaWFyeQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIEFkZHJlc3NcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIENNREIKICAgIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIKICAgIERlc2NyaXB0aW9uXHJcblxyXG5TZWN0aW9uczpcclxuICBBZGRyZXNzOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBIZWFkZXI6CiAgICBBZGRyZXNzXHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVN0cmVldFxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1DaXR5XHJcbiAgICAgIC0KICAgIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnlcclxuICAgICAgLSBERjogTG9jYXRpb24tTGF0aXR1ZGVcclxuICAgICAgLSBERjoKICAgIExvY2F0aW9uLUxvbmdpdHVkZSIKICBEeW5hbWljRmllbGRzOgogICAgTG9jYXRpb24tQ2l0eToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ2l0eQogICAgICBOYW1lOiBMb2NhdGlvbi1DaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1MYXRpdHVkZToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTGF0aXR1ZGUKICAgICAgTmFtZTogTG9jYXRpb24tTGF0aXR1ZGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLUxvbmdpdHVkZToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTG9uZ2l0dWRlCiAgICAgIE5hbWU6IExvY2F0aW9uLUxvbmdpdHVkZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5OgogICAgICBDSUNsYXNzOiBTdWJzaWRpYXJ5CiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIENvdW50cnkKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6IDAKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBDb3VudHJ5CiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tU3RyZWV0OgogICAgICBDSUNsYXNzOiBTdWJzaWRpYXJ5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTdHJlZXQKICAgICAgTmFtZTogTG9jYXRpb24tU3RyZWV0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gTmV0d29yayBJbmZyYXN0cnVjdHVyZQogICAgTmFtZTogU3dpdGNoCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgUm93U3BhbjoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbiAgLSBOYW1lOiBOZXR3b3JrCiAgICBJbmZvXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZAogICAgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNCiAgICBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuCiAgICBcIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gTmV0d29yayBJbmZvOlxyXG4gICAgTmFtZToKICAgIElUU00gTmV0d29yayBJbmZvXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQgogICAgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQgogICAgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlcnN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgICAtIFN3aXRjaAogICAgICAgICAgICAgIC0gV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBPYmplY3QKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBGUUROCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWN0aXZlCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBOZXR3b3JrIEluZm9ybWF0aW9uCiAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBJbmZyYXN0cnVjdHVyZQogICAgTmFtZTogVVBTCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwKICAgIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbgogICAgXCAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG4gIC0gTmFtZTogTG9jYXRlZCBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyCiAgICBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlCiAgICBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZQogICAgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcwogICAgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTQogICAgR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4KICAgIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbCBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIFVQU1xyXG4gIElUU00gTW9kZWw6XHJcbgogICAgXCAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQKICAgIGluOlxyXG4gICAgTmFtZTogQ01EQiBMb2NhdGVkIGluXHJcbiAgSVRTTSBOZXR3b3JrIEluZm86XHJcbiAgICBOYW1lOiBJVFNNIE5ldHdvcmsKICAgIEluZm9cclxuICBDTURCIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuCiAgICBcICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSVB2NDogSVB2NAogICAgICAgICAgICAgICAgSVB2NjogSVB2NgogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IElQIFByb3RvY29sCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IG9iamVjdCBwb3J0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBDTkFNRS9BbGlhcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNVVBTLUJhdHRlcnlDYXBhY2l0eToKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBCYXR0ZXJ5IENhcGFjaXR5IChBaCkKICAgICAgTmFtZTogSVRTTVVQUy1CYXR0ZXJ5Q2FwYWNpdHkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01VUFMtQmF0dGVyeVR5cGU6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEZseXdoZWVsOiBGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZQogICAgICAgICAgTGktaW9uOiBMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5CiAgICAgICAgICBMaUZlUE80OiBMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5CiAgICAgICAgICBOaUNkOiBOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeQogICAgICAgICAgTmlNSDogTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU0xBOiBTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnkKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBCYXR0ZXJ5IFR5cGUKICAgICAgTmFtZTogSVRTTVVQUy1CYXR0ZXJ5VHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVVQUy1NYXhpbXVtTG9hZENhcGFjaXR5OgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1heGltdW0gTG9hZCBDYXBhY2l0eSAoVykKICAgICAgTmFtZTogSVRTTVVQUy1NYXhpbXVtTG9hZENhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIE5ldHdvcmsgSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IFdMQU4gYWNjZXNzIHBvaW50CiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgUm93U3BhbjoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbiAgLSBOYW1lOiBOZXR3b3JrCiAgICBJbmZvXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZAogICAgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNCiAgICBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuCiAgICBcIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gTmV0d29yayBJbmZvOlxyXG4gICAgTmFtZToKICAgIElUU00gTmV0d29yayBJbmZvXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQgogICAgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQgogICAgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDb250YWN0IERpc3RyaWJ1dG9yCiAgICAgIE5hbWU6IENvbnRhY3QtRGlzdHJpYnV0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtVXNlcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgSW52b2ljZQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBJUHY0OiBJUHY0CiAgICAgICAgICAgICAgICBJUHY2OiBJUHY2CiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogSVAgUHJvdG9jb2wKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IElQIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgb2JqZWN0IHBvcnQKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENOQU1FL0FsaWFzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCg==</File>
        <File Location="var/packagesetup/ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIHZhcjo6cGFja2FnZXNldHVwOjpJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGZpcnN0IHBhaXJzKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc0FycmF5UmVmV2l0aERhdGEgSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZzo6UHJlZmVyZW5jZXNEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlZhbGlkJywKKTsKCj1oZWFkMSBOQU1FCgp2YXI6OnBhY2thZ2VzZXR1cDo6SVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50IC0gY29kZSB0byBleGVjdXRlIGR1cmluZyBwYWNrYWdlIGluc3RhbGxhdGlvbgoKPWhlYWQxIERFU0NSSVBUSU9OCgpGdW5jdGlvbnMgZm9yIGluc3RhbGxpbmcgdGhlIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCBwYWNrYWdlLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRDb2RlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgndmFyOjpwYWNrYWdlc2V0dXA6OklUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCcpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7fSwgJFR5cGU7CgogICAgIyBGb3JjZSBhIHJlbG9hZCBvZiBaWlpBdXRvLnBtIGFuZCBaWlpBQXV0by5wbSB0byBnZXQgdGhlIGZyZXNoIGNvbmZpZ3VyYXRpb24gdmFsdWVzLgogICAgZm9yIG15ICRNb2R1bGUgKCBzb3J0IGtleXMgJUlOQyApIHsKICAgICAgICBpZiAoICRNb2R1bGUgPX4gbS9aWlpBQT91dG9cLnBtJC8gKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkSU5DeyRNb2R1bGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIENyZWF0ZSBjb21tb24gb2JqZWN0cyB3aXRoIGZyZXNoIGRlZmF1bHQgY29uZmlnLgogICAgJEtlcm5lbDo6T00tPk9iamVjdHNEaXNjYXJkKCk7CgogICAgIyBkZWZpbmUgVXNlcklEIHBhcmFtZXRlciBmb3IgdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBzdGF0cyBvYmplY3QKICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyA9PiB7CiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZGVmaW5lIGZpbGUgcHJlZml4IGZvciBzdGF0cwogICAgJFNlbGYtPntTdGF0c0ZpbGVQcmVmaXh9ID0gJ0lUU01TdGF0cyc7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgQ29kZUluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIGluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZUluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlSW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWRkIHRoZSBncm91cCBpdHNtLWNvbmZpZ2l0ZW0KICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0dyb3VwIGZvciBJVFNNIENvbmZpZ0l0ZW0gbWFzayBhY2Nlc3MgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nLAogICAgKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgbGFzdF92ZXJzaW9uX2lkIHJvd3MgaW4gQzxjb25maWdpdGVtPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eUxhc3RWZXJzaW9uSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgaW5jaV9zdGF0ZV9pZCByb3dzIGluIEM8Y29uZmlnaXRlbV92ZXJzaW9uPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eVZlcnNpb25JbmNpZGVudFN0YXRlSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgQzxjdXJfZGVwbF9zdGF0ZV9pZD4gb3IgQzxjdXJfaW5jaV9zdGF0ZV9pZD4gcm93cyBpbiBDPGNvbmZpZ2l0ZW0+IHRhYmxlCiAgICAkU2VsZi0+X0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCgpOwoKICAgICMgc2V0IHByZWZlcmVuY2VzIGZvciBkZXBsb3ltZW50IHN0YXRlcwogICAgJFNlbGYtPl9TZXREZXBsb3ltZW50U3RhdGVQcmVmZXJlbmNlcygpOwoKICAgICMgYWRkIHRoZSBDb25maWdJdGVtIG1hbmFnZW1lbnQgaW52b2tlciB0byB0aGUgRWxhc3RpY3NlYXJjaCB3ZWJzZXJ2aWNlCiAgICAkU2VsZi0+X1VwZGF0ZUVsYXN0aWNzZWFyY2hXZWJTZXJ2aWNlKCBBY3Rpb24gPT4gJ0FkZCcgKTsKCiAgICAjIGluc3RhbGwgc3RhdHMKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycpLT5TdGF0c0luc3RhbGwoCiAgICAgICAgRmlsZVByZWZpeCA9PiAkU2VsZi0+e1N0YXRzRmlsZVByZWZpeH0sCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVSZWluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIHJlaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlUmVpbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZVJlaW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWRkIHRoZSBncm91cCBpdHNtLWNvbmZpZ2l0ZW0KICAgICRTZWxmLT5fR3JvdXBBZGQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ0dyb3VwIGZvciBJVFNNIENvbmZpZ0l0ZW0gbWFzayBhY2Nlc3MgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nLAogICAgKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgbGFzdF92ZXJzaW9uX2lkIHJvd3MgaW4gQzxjb25maWdpdGVtPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eUxhc3RWZXJzaW9uSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgaW5jaV9zdGF0ZV9pZCByb3dzIGluIEM8Y29uZmlnaXRlbV92ZXJzaW9uPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eVZlcnNpb25JbmNpZGVudFN0YXRlSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgY3VyX2RlcGxfc3RhdGVfaWQgb3IgY3VyX2luY2lfc3RhdGVfaWQgcm93cyBpbiBDPGNvbmZpZ2l0ZW0+IHRhYmxlCiAgICAkU2VsZi0+X0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCgpOwoKICAgICMgc2V0IHByZWZlcmVuY2VzIGZvciBzb21lIGRlcGxveW1lbnQgc3RhdGVzCiAgICAkU2VsZi0+X1NldERlcGxveW1lbnRTdGF0ZVByZWZlcmVuY2VzKCk7CgogICAgIyBpbnN0YWxsIHN0YXRzCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnKS0+U3RhdHNJbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntTdGF0c0ZpbGVQcmVmaXh9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVXBncmFkZUZyb21Mb3dlclRoYW5fMTFfMF8xNSgpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gMTEuMC4xNC4KCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl8xMV8wXzE1KCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzExXzBfMTUgeyAgICAjIyBubyBjcml0aWMgcXcoT1RPQk86OlJlcXVpcmVDYW1lbENhc2UpCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdXBkYXRlIHN5c2NvbmZpZyBzZXR0aW5ncyBvZiBjdXN0b21lciBjb21wYW55IGFuZCBjdXN0b21lciB1c2VyIGluZm9ybWF0aW9uIGNlbnRlciB3aWRnZXRzCiAgICAkU2VsZi0+X1VwZGF0ZURhc2hib2FyZFdpZGdldFN5c0NvbmZpZygpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzExXzBfNygpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gMTEuMC43LgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzExXzBfNygpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl8xMV8wXzcgeyAgICAjIyBubyBjcml0aWMgcXcoT1RPQk86OlJlcXVpcmVDYW1lbENhc2UpCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWRkIHRoZSBDb25maWdJdGVtIG1hbmFnZW1lbnQgaW52b2tlciB0byB0aGUgRWxhc3RpY3NlYXJjaCB3ZWJzZXJ2aWNlCiAgICAkU2VsZi0+X1VwZGF0ZUVsYXN0aWNzZWFyY2hXZWJTZXJ2aWNlKCBBY3Rpb24gPT4gJ0FkZCcgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVVcGdyYWRlKCkKCnJ1biB0aGUgY29kZSB1cGdyYWRlIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGZpbGwgdXAgZW1wdHkgbGFzdF92ZXJzaW9uX2lkIHJvd3MgaW4gQzxjb25maWdpdGVtPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eUxhc3RWZXJzaW9uSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgaW5jaV9zdGF0ZV9pZCByb3dzIGluIEM8Y29uZmlnaXRlbV92ZXJzaW9uPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eVZlcnNpb25JbmNpZGVudFN0YXRlSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgY3VyX2RlcGxfc3RhdGVfaWQgb3IgY3VyX2luY2lfc3RhdGVfaWQgcm93cyBpbiBDPGNvbmZpZ2l0ZW0+IHRhYmxlCiAgICAkU2VsZi0+X0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCgpOwoKICAgICMgc2V0IHByZWZlcmVuY2VzIGZvciBzb21lIGRlcGxveW1lbnQgc3RhdGVzCiAgICAkU2VsZi0+X1NldERlcGxveW1lbnRTdGF0ZVByZWZlcmVuY2VzKCk7CgogICAgIyBpbnN0YWxsIHN0YXRzCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3RhdHMnKS0+U3RhdHNJbnN0YWxsKAogICAgICAgIEZpbGVQcmVmaXggPT4gJFNlbGYtPntTdGF0c0ZpbGVQcmVmaXh9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVW5pbnN0YWxsKCkKCnJ1biB0aGUgY29kZSB1bmluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVuaW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVVbmluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNsZWFyIGNvbmZpZ2l0ZW1fbGluayB0YWJsZQogICAgIyAgIHBsYWNpbmcgdGhpcyBiZWZvcmUgX0R5bmFtaWNGaWVsZHNEZWxldGUgdG8gYXZvaWQgZm9yZWlnbiBrZXkgY29uc3RyYWludHMgcHJldmVudGluZyBkeW5hbWljIGZpZWxkIHZhbHVlIGRlbGV0aW9uCiAgICAkU2VsZi0+X0NvbmZpZ0l0ZW1MaW5rRGVsZXRlKCk7CgogICAgIyBkZWxldGUgYWxsIGR5bmFtaWMgZmllbGRzOgogICAgIyAgIG9mIG9iamVjdCB0eXBlIGNvbmZpZyBpdGVtCiAgICAjICAgb2YgZmllbGQgdHlwZSBJVFNNQ29uZmlnSXRlbVJlZmVyZW5jZSBhbmQgSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uUmVmZXJlbmNlCiAgICAkU2VsZi0+X0R5bmFtaWNGaWVsZHNEZWxldGUoKTsKCiAgICAjIGNsZWFuIHVwIEltcG9ydEV4cG9ydCB0ZW1wbGF0ZXMKICAgICRTZWxmLT5fQ29uZmlnSXRlbUltcG9ydEV4cG9ydFRlbXBsYXRlc0RlbGV0ZSgpOwoKICAgICMgZGVsZXRlIGFsbCBsaW5rcyB3aXRoIGNvbmZpZ3VyYXRpb24gaXRlbXMKICAgICRTZWxmLT5fTGlua0RlbGV0ZSgpOwoKICAgICMgZGVhY3RpdmF0ZSB0aGUgZ3JvdXAgQzxpdHNtLWNvbmZpZ2l0ZW0+CiAgICAkU2VsZi0+X0dyb3VwRGVhY3RpdmF0ZSgKICAgICAgICBOYW1lID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgKTsKCiAgICAjIGRlbGV0ZSAnQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMnIHNlcnZpY2UgcHJlZmVyZW5jZXMKICAgICRTZWxmLT5fRGVsZXRlU2VydmljZVByZWZlcmVuY2VzKCk7CgogICAgIyByZW1vdmUgdGhlIENvbmZpZ0l0ZW0gbWFuYWdlbWVudCBpbnZva2VyIGZyb20gdGhlIEVsYXN0aWNzZWFyY2ggd2Vic2VydmljZQogICAgJFNlbGYtPl9VcGRhdGVFbGFzdGljc2VhcmNoV2ViU2VydmljZSggQWN0aW9uID0+ICdSZW1vdmUnICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVW5pbnN0YWxsUG9zdCgpCgpydW4gdGhlIGNvZGUgdW5pbnN0YWxsIHBvc3QgcGFydAoKdXNpbmcgYSBwb3N0IGZ1bmN0aW9uIGJlY2F1c2UgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgaG9sZCBhIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gY29uZmlnIGl0ZW0gY2xhc3MgaXRlbXMKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVbmluc3RhbGxQb3N0KCk7Cgo9Y3V0CgpzdWIgQ29kZVVuaW5zdGFsbFBvc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGRlbGV0ZSBnZW5lcmFsIGNhdGFsb2cgY2xhc3NlczoKICAgICMgICBJVFNNOjpDb25maWdJdGVtOjpDbGFzcwogICAgIyAgIElUU006OkNvbmZpZ0l0ZW06OlJvbGUKICAgICMgICBJVFNNOjpDb25maWdJdGVtOjpDbGFzczo6Q2F0ZWdvcnkKICAgICRTZWxmLT5fR2VuZXJhbENhdGFsb2dDbGFzc2VzRGVsZXRlKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfU2V0RGVwbG95bWVudFN0YXRlUHJlZmVyZW5jZXMoKQoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X1NldERlcGxveW1lbnRTdGF0ZVByZWZlcmVuY2VzKCkKCj1jdXQKCnN1YiBfU2V0RGVwbG95bWVudFN0YXRlUHJlZmVyZW5jZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlTWFwID0gKAogICAgICAgIEV4cGlyZWQgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICBJbmFjdGl2ZSAgICA9PiAncG9zdHByb2R1Y3RpdmUnLAogICAgICAgIE1haW50ZW5hbmNlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICBQaWxvdCAgICAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgUGxhbm5lZCAgICAgPT4gJ3ByZXByb2R1Y3RpdmUnLAogICAgICAgIFByb2R1Y3Rpb24gID0+ICdwcm9kdWN0aXZlJywKICAgICAgICBSZXBhaXIgICAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgUmV0aXJlZCAgICAgPT4gJ3Bvc3Rwcm9kdWN0aXZlJywKICAgICAgICBSZXZpZXcgICAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgJ1Rlc3QvUUEnICAgPT4gJ3ByZXByb2R1Y3RpdmUnLAogICAgKTsKCiAgICBOQU1FOgogICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVNYXAgKSB7CiAgICAgICAgbXkgJEl0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICAgICAgTmFtZSAgPT4gJE5hbWUsCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICk7CgogICAgICAgIG5leHQgTkFNRSBpZiAhJEl0ZW07CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW0tPntJdGVtSUR9LAogICAgICAgICAgICBLZXkgICAgPT4gJ0Z1bmN0aW9uYWxpdHknLAogICAgICAgICAgICBWYWx1ZSAgPT4gWyAkTWFweyROYW1lfSBdLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfR3JvdXBBZGQoKQoKYWRkIGEgZ3JvdXAKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Hcm91cEFkZCgKICAgICAgICBOYW1lICAgICAgICA9PiAndGhlLWdyb3VwLW5hbWUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICdUaGUgZ3JvdXAgZGVzY3JpcHRpb24uJywKICAgICk7Cgo9Y3V0CgpzdWIgX0dyb3VwQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE5hbWUgRGVzY3JpcHRpb24pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgIG15ICVWYWxpZExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnKS0+VmFsaWRMaXN0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIG15ICVWYWxpZExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlVmFsaWRMaXN0OwoKICAgICMgZ2V0IGxpc3Qgb2YgYWxsIGdyb3VwcwogICAgbXkgJUdyb3VwTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExpc3QoKTsKCiAgICAjIHJldmVyc2UgdGhlIGdyb3VwIGxpc3QgZm9yIGVhc2llciBsb29rdXAKICAgIG15ICVHcm91cExpc3RSZXZlcnNlID0gcmV2ZXJzZSAlR3JvdXBMaXN0OwoKICAgICMgY2hlY2sgaWYgZ3JvdXAgYWxyZWFkeSBleGlzdHMKICAgIG15ICRHcm91cElEID0gJEdyb3VwTGlzdFJldmVyc2V7ICRQYXJhbXtOYW1lfSB9OwoKICAgICMgcmVhY3RpdmF0ZSB0aGUgZ3JvdXAKICAgIGlmICgkR3JvdXBJRCkgewoKICAgICAgICAjIGdldCBjdXJyZW50IGdyb3VwIGRhdGEKICAgICAgICBteSAlR3JvdXBEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwR2V0KAogICAgICAgICAgICBJRCAgICAgPT4gJEdyb3VwSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgcmVhY3RpdmF0ZSBncm91cAogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cFVwZGF0ZSgKICAgICAgICAgICAgJUdyb3VwRGF0YSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAkVmFsaWRMaXN0UmV2ZXJzZXt2YWxpZH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGFkZCB0aGUgZ3JvdXAKICAgIGVsc2UgewogICAgICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwQWRkKAogICAgICAgICAgICBOYW1lICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgQ29tbWVudCA9PiAkUGFyYW17RGVzY3JpcHRpb259LAogICAgICAgICAgICBWYWxpZElEID0+ICRWYWxpZExpc3RSZXZlcnNle3ZhbGlkfSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBsb29rdXAgdGhlIG5ldyBncm91cCBpZAogICAgbXkgJE5ld0dyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgR3JvdXAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgIyBhZGQgdXNlciByb290IHRvIHRoZSBncm91cAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTWVtYmVyQWRkKAogICAgICAgIEdJRCAgICAgICAgPT4gJE5ld0dyb3VwSUQsCiAgICAgICAgVUlEICAgICAgICA9PiAxLAogICAgICAgIFBlcm1pc3Npb24gPT4gewogICAgICAgICAgICBybyAgICAgICAgPT4gMSwKICAgICAgICAgICAgbW92ZV9pbnRvID0+IDEsCiAgICAgICAgICAgIGNyZWF0ZSAgICA9PiAxLAogICAgICAgICAgICBvd25lciAgICAgPT4gMSwKICAgICAgICAgICAgcHJpb3JpdHkgID0+IDEsCiAgICAgICAgICAgIHJ3ICAgICAgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0dyb3VwRGVhY3RpdmF0ZSgpCgpkZWFjdGl2YXRlIGEgZ3JvdXAKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9Hcm91cERlYWN0aXZhdGUoCiAgICAgICAgTmFtZSA9PiAndGhlLWdyb3VwLW5hbWUnLAogICAgKTsKCj1jdXQKCnN1YiBfR3JvdXBEZWFjdGl2YXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgTmFtZSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgbG9va3VwIGdyb3VwIGlkCiAgICBteSAkR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICBHcm91cCA9PiAkUGFyYW17TmFtZX0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJEdyb3VwSUQ7CgogICAgIyBnZXQgdmFsaWQgbGlzdAogICAgbXkgJVZhbGlkTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgbXkgJVZhbGlkTGlzdFJldmVyc2UgPSByZXZlcnNlICVWYWxpZExpc3Q7CgogICAgIyBnZXQgY3VycmVudCBncm91cCBkYXRhCiAgICBteSAlR3JvdXBEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwR2V0KAogICAgICAgIElEICAgICA9PiAkR3JvdXBJRCwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgIyBkZWFjdGl2YXRlIGdyb3VwCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBVcGRhdGUoCiAgICAgICAgJUdyb3VwRGF0YSwKICAgICAgICBWYWxpZElEID0+ICRWYWxpZExpc3RSZXZlcnNle2ludmFsaWR9LAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCiMgVE9ETyB2ZXJpZnkgaWYgYWxsIHJlbGV2YW50IGxpbmtzIGFyZSBkZWxldGVkCgo9aGVhZDIgX0xpbmtEZWxldGUoKQoKZGVsZXRlIGFsbCBleGlzdGluZyBsaW5rcyB0byBjb25maWd1cmF0aW9uIGl0ZW1zCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fTGlua0RlbGV0ZSgpOwoKPWN1dAoKc3ViIF9MaW5rRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgYWxsIGNvbmZpZ3VyYXRpb24gaXRlbXMKICAgIG15ICRDb25maWdJdGVtSURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1TZWFyY2goKTsKCiAgICByZXR1cm4gaWYgISRDb25maWdJdGVtSURzOwogICAgcmV0dXJuIGlmIHJlZiAkQ29uZmlnSXRlbUlEcyBuZSAnQVJSQVknOwoKICAgICMgZGVsZXRlIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskQ29uZmlnSXRlbUlEc30gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0RlbGV0ZUFsbCgKICAgICAgICAgICAgT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIEtleSAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0ZpbGx1cEVtcHR5TGFzdFZlcnNpb25JRCgpCgpmaWxsIHVwIGVtcHR5IGVudHJpZXMgaW4gdGhlIGxhc3RfdmVyc2lvbl9pZCBjb2x1bW4gb2YgdGhlIEM8Y29uZmlnaXRlbT4gdGFibGUKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9GaWxsdXBFbXB0eUxhc3RWZXJzaW9uSUQoKTsKCj1jdXQKCnN1YiBfRmlsbHVwRW1wdHlMYXN0VmVyc2lvbklEIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY29uZmlndXJhdGlvbiBpdGVtcyB3aXRoIGVtcHR5IGxhc3RfdmVyc2lvbl9pZAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtIFdIRVJFICcKICAgICAgICAgICAgLiAnbGFzdF92ZXJzaW9uX2lkID0gMCBPUiBsYXN0X3ZlcnNpb25faWQgSVMgTlVMTCcsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQENvbmZpZ0l0ZW1JRHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRSb3dbMF07CiAgICB9CgogICAgQ09ORklHSVRFTUlEOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CgogICAgICAgICMgZ2V0IHRoZSBsYXN0IHZlcnNpb24gb2YgdGhpcyBjb25maWd1cmF0aW9uIGl0ZW0KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24gJwogICAgICAgICAgICAgICAgLiAnV0hFUkUgY29uZmlnaXRlbV9pZCA9ID8gT1JERVIgQlkgaWQgREVTQycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRDb25maWdJdGVtSUQgXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgICAgICBteSAkVmVyc2lvbklEOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRWZXJzaW9uSUQgPSAkUm93WzBdOwogICAgICAgIH0KCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRWZXJzaW9uSUQ7CgogICAgICAgICMgdXBkYXRlIEM8aW5jaV9zdGF0ZV9pZD4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnVVBEQVRFIGNvbmZpZ2l0ZW0gJwogICAgICAgICAgICAgICAgLiAnU0VUIGxhc3RfdmVyc2lvbl9pZCA9ID8gJwogICAgICAgICAgICAgICAgLiAnV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkVmVyc2lvbklELCBcJENvbmZpZ0l0ZW1JRCBdLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfRmlsbHVwRW1wdHlWZXJzaW9uSW5jaWRlbnRTdGF0ZUlEKCkKCmZpbGwgdXAgZW1wdHkgZW50cmllcyBpbiB0aGUgQzxpbmNpX3N0YXRlX2lkIGNvbHVtbj4gb2YgdGhlIEM8Y29uZmlnaXRlbV92ZXJzaW9uPiB0YWJsZQoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0ZpbGx1cEVtcHR5VmVyc2lvbkluY2lkZW50U3RhdGVJRCgpOwoKPWN1dAoKc3ViIF9GaWxsdXBFbXB0eVZlcnNpb25JbmNpZGVudFN0YXRlSUQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBvcGVyYXRpb25hbCBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyAgICAgICA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBlcnJvciBoYW5kbGluZwogICAgaWYgKCAhJEluY2lTdGF0ZUxpc3QgfHwgcmVmICRJbmNpU3RhdGVMaXN0IG5lICdIQVNIJyB8fCAhJXskSW5jaVN0YXRlTGlzdH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBmaW5kIGFueSBpdGVtIGluIGdlbmVyYWwgY2F0YWxvZyBjbGFzcyBJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzb3J0IGlkcwogICAgbXkgQEluY2lTdGF0ZUtleUxpc3QgPSBzb3J0IGtleXMgJXskSW5jaVN0YXRlTGlzdH07CgogICAgIyB1cGRhdGUgaW5jaV9zdGF0ZV9pZAogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ1VQREFURSBjb25maWdpdGVtX3ZlcnNpb24gJwogICAgICAgICAgICAuICdTRVQgaW5jaV9zdGF0ZV9pZCA9ID8gJwogICAgICAgICAgICAuICdXSEVSRSBpbmNpX3N0YXRlX2lkID0gMCBPUiBpbmNpX3N0YXRlX2lkIElTIE5VTEwnLAogICAgICAgIEJpbmQgPT4gWyBcJEluY2lTdGF0ZUtleUxpc3RbMF0gXSwKICAgICk7Cn0KCj1oZWFkMiBfRmlsbHVwRW1wdHlJbmNpZGVudEFuZERlcGxveW1lbnRTdGF0ZUlEKCkKCmZpbGwgdXAgZW1wdHkgZW50cmllcyBpbiB0aGUgY3VyX2RlcGxfc3RhdGVfaWQgb3IgY3VyX2luY2lfc3RhdGVfaWQgY29sdW1uIG9mIHRoZSBDPGNvbmZpZ2l0ZW0+IHRhYmxlCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fRmlsbHVwRW1wdHlJbmNpZGVudEFuZERlcGxveW1lbnRTdGF0ZUlEKCk7Cgo9Y3V0CgpzdWIgX0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBlbXB0eSBjdXJfZGVwbF9zdGF0ZV9pZCBvciBjdXJfaW5jaV9zdGF0ZV9pZAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtIFdIRVJFICcKICAgICAgICAgICAgLiAnY3VyX2RlcGxfc3RhdGVfaWQgPSAwIE9SIGN1cl9kZXBsX3N0YXRlX2lkIElTIE5VTEwgT1IgJwogICAgICAgICAgICAuICdjdXJfaW5jaV9zdGF0ZV9pZCA9IDAgT1IgY3VyX2luY2lfc3RhdGVfaWQgSVMgTlVMTCcsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQENvbmZpZ0l0ZW1JRHM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRSb3dbMF07CiAgICB9CgogICAgQ09ORklHSVRFTUlEOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CgogICAgICAgICMgZ2V0IGxhc3QgdmVyc2lvbgogICAgICAgIG15ICRMYXN0VmVyc2lvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwoKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhJExhc3RWZXJzaW9uOwogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmIHJlZiAkTGFzdFZlcnNpb24gbmUgJ0hBU0gnOwogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkTGFzdFZlcnNpb24tPntEZXBsU3RhdGVJRH07CiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRMYXN0VmVyc2lvbi0+e0luY2lTdGF0ZUlEfTsKCiAgICAgICAgIyBjb21wbGV0ZSBjb25maWd1cmF0aW9uIGl0ZW0KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnVVBEQVRFIGNvbmZpZ2l0ZW0gU0VUICcKICAgICAgICAgICAgICAgIC4gJ2N1cl9kZXBsX3N0YXRlX2lkID0gPywgJwogICAgICAgICAgICAgICAgLiAnY3VyX2luY2lfc3RhdGVfaWQgPSA/ICcKICAgICAgICAgICAgICAgIC4gJ1dIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICAgICAgXCRMYXN0VmVyc2lvbi0+e0RlcGxTdGF0ZUlEfSwKICAgICAgICAgICAgICAgIFwkTGFzdFZlcnNpb24tPntJbmNpU3RhdGVJRH0sCiAgICAgICAgICAgICAgICBcJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgXSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0RlbGV0ZVNlcnZpY2VQcmVmZXJlbmNlcygpCgpEZWxldGVzIHRoZSBzZXJ2aWNlIHByZWZlcmVuY2VzIGZvciB0aGUga2V5ICdDdXJJbmNpU3RhdGVUeXBlRnJvbUNJcycuCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fRGVsZXRlU2VydmljZVByZWZlcmVuY2VzKCk7Cgo9Y3V0CgpzdWIgX0RlbGV0ZVNlcnZpY2VQcmVmZXJlbmNlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IHNlcnZpY2UgbGlzdAogICAgbXkgJVNlcnZpY2VMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+U2VydmljZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIFNFUlZJQ0VJRDoKICAgIGZvciBteSAkU2VydmljZUlEICggc29ydCBrZXlzICVTZXJ2aWNlTGlzdCApIHsKCiAgICAgICAgIyBkZWxldGUgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgdHlwZSBmcm9tIENJcyBvZiB0aGUgc2VydmljZQogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyktPlNlcnZpY2VQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJycsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfVXBkYXRlRWxhc3RpY3NlYXJjaFdlYlNlcnZpY2UoKQoKQWRkcyB0aGUgQ29uZmlnSXRlbSBtYW5hZ2VtZW50IGludm9rZXIuCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fVXBkYXRlRWxhc3RpY3NlYXJjaFdlYlNlcnZpY2UoCiAgICAgICAgTW9kZSA9PiAnQWRkfFJlbW92ZScKICAgICk7Cgo9Y3V0CgpzdWIgX1VwZGF0ZUVsYXN0aWNzZWFyY2hXZWJTZXJ2aWNlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFdlYnNlcnZpY2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpOwogICAgbXkgJFdlYnNlcnZpY2UgICAgICAgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUdldCgKICAgICAgICBOYW1lID0+ICdFbGFzdGljc2VhcmNoJywKICAgICk7CgogICAgaWYgKCAhJFdlYnNlcnZpY2UgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEaWQgbm90IGZpbmQgdGhlIEVsYXN0aWNzZWFyY2ggd2Vic2VydmljZSEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJFBhcmFte0FjdGlvbn0gZXEgJ0FkZCcgKSB7CiAgICAgICAgJFdlYnNlcnZpY2UtPntDb25maWd9e1JlcXVlc3Rlcn17SW52b2tlcn17Q29uZmlnSXRlbUluZ2VzdEF0dGFjaG1lbnR9ID0gewogICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAnJywKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ0VsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1NYW5hZ2VtZW50JywKICAgICAgICB9OwogICAgICAgICRXZWJzZXJ2aWNlLT57Q29uZmlnfXtSZXF1ZXN0ZXJ9e0ludm9rZXJ9e0NvbmZpZ0l0ZW1NYW5hZ2VtZW50fSA9IHsKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJycsCiAgICAgICAgICAgIEV2ZW50cyAgICAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBBc3luY2hyb25vdXMgPT4gJzAnLAogICAgICAgICAgICAgICAgICAgIEV2ZW50ICAgICAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEFzeW5jaHJvbm91cyA9PiAnMCcsCiAgICAgICAgICAgICAgICAgICAgRXZlbnQgICAgICAgID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQXN5bmNocm9ub3VzID0+ICcwJywKICAgICAgICAgICAgICAgICAgICBFdmVudCAgICAgICAgPT4gJ0F0dGFjaG1lbnRBZGRQb3N0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQXN5bmNocm9ub3VzID0+ICcwJywKICAgICAgICAgICAgICAgICAgICBFdmVudCAgICAgICAgPT4gJ0F0dGFjaG1lbnREZWxldGVQb3N0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQXN5bmNocm9ub3VzID0+ICcwJywKICAgICAgICAgICAgICAgICAgICBFdmVudCAgICAgICAgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgVHlwZSA9PiAnRWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbU1hbmFnZW1lbnQnLAogICAgICAgIH07CiAgICAgICAgJFdlYnNlcnZpY2UtPntDb25maWd9e1JlcXVlc3Rlcn17VHJhbnNwb3J0fXtDb25maWd9e0ludm9rZXJDb250cm9sbGVyTWFwcGluZ317Q29uZmlnSXRlbUluZ2VzdEF0dGFjaG1lbnR9ID0gewogICAgICAgICAgICBDb21tYW5kICAgID0+ICdQT1NUJywKICAgICAgICAgICAgQ29udHJvbGxlciA9PiAnL3RtcGF0dGFjaG1lbnRzLzpkb2NhcGkvOmlkP3BpcGVsaW5lPTpwYXRoJywKICAgICAgICB9OwogICAgICAgICRXZWJzZXJ2aWNlLT57Q29uZmlnfXtSZXF1ZXN0ZXJ9e1RyYW5zcG9ydH17Q29uZmlnfXtJbnZva2VyQ29udHJvbGxlck1hcHBpbmd9e0NvbmZpZ0l0ZW1NYW5hZ2VtZW50fSA9IHsKICAgICAgICAgICAgQ29tbWFuZCAgICA9PiAnUE9TVCcsCiAgICAgICAgICAgIENvbnRyb2xsZXIgPT4gJy9jb25maWdpdGVtLzpkb2NhcGkvOmlkJywKICAgICAgICB9OwogICAgfQoKICAgIGVsc2lmICggJFBhcmFte0FjdGlvbn0gZXEgJ1JlbW92ZScgKSB7CiAgICAgICAgZGVsZXRlICRXZWJzZXJ2aWNlLT57Q29uZmlnfXtSZXF1ZXN0ZXJ9e0ludm9rZXJ9e0NvbmZpZ0l0ZW1Jbmdlc3RBdHRhY2htZW50fTsKICAgICAgICBkZWxldGUgJFdlYnNlcnZpY2UtPntDb25maWd9e1JlcXVlc3Rlcn17SW52b2tlcn17Q29uZmlnSXRlbU1hbmFnZW1lbnR9OwogICAgICAgIGRlbGV0ZSAkV2Vic2VydmljZS0+e0NvbmZpZ317UmVxdWVzdGVyfXtUcmFuc3BvcnR9e0ludm9rZXJDb250cm9sbGVyTWFwcGluZ317Q29uZmlnSXRlbUluZ2VzdEF0dGFjaG1lbnR9OwogICAgICAgIGRlbGV0ZSAkV2Vic2VydmljZS0+e0NvbmZpZ317UmVxdWVzdGVyfXtUcmFuc3BvcnR9e0ludm9rZXJDb250cm9sbGVyTWFwcGluZ317Q29uZmlnSXRlbU1hbmFnZW1lbnR9OwogICAgfQoKICAgIGVsc2UgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gQWN0aW9uIHByb3ZpZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFN1Y2Nlc3MgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZVVwZGF0ZSgKICAgICAgICAleyRXZWJzZXJ2aWNlfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgdXBkYXRlIHRoZSBFbGFzdGljc2VhcmNoIHdlYnNlcnZpY2UhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIHJldHVybiAxOwoKfQoKPWhlYWQyIF9VcGRhdGVEYXNoYm9hcmRXaWRnZXRTeXNDb25maWcoKQoKVXBkYXRlcyB0aGUgc3lzY29uZmlnIHNldHRpbmdzIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGFuZCBjdXN0b21lciB1c2VyIGluZm9ybWF0aW9uIGNlbnRlciB3aWRnZXRzIHRvIHRoZSBuZXcgc3RydWN0dXJlLgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X1VwZGF0ZURhc2hib2FyZFdpZGdldFN5c0NvbmZpZygpOwoKPWN1dAoKc3ViIF9VcGRhdGVEYXNoYm9hcmRXaWRnZXRTeXNDb25maWcgewoKICAgIG15ICRMb2dPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwoKICAgIG15IEBTZXR0aW5ncyA9ICgKICAgICAgICAiQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkiLAogICAgICAgICJBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DVUlDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyIgogICAgKTsKCiAgICBTRVRUSU5HOgogICAgZm9yIG15ICRTZXR0aW5nTmFtZSAoQFNldHRpbmdzKSB7CgogICAgICAgIG15ICVTZXR0aW5nID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0dldCgKICAgICAgICAgICAgTmFtZSA9PiAkU2V0dGluZ05hbWUsCiAgICAgICAgKTsKCiAgICAgICAgIyBkbyBub3RoaW5nIGlmIHNldHRpbmcgaXMgbm90IG1vZGlmaWVkCiAgICAgICAgbmV4dCBTRVRUSU5HIHVubGVzcyAkU2V0dGluZ3tJc01vZGlmaWVkfTsKCiAgICAgICAgIyBmZXRjaCBkeW5hbWljIGZpZWxkIGZyb20gb2xkIHN0cnVjdHVyZQogICAgICAgIG15ICRJZGVudGlmaWVyREYgPSBmaXJzdCB7ICRTZXR0aW5ne0VmZmVjdGl2ZVZhbHVlfXtDb25maWdJdGVtS2V5fXskX30gfSBrZXlzICRTZXR0aW5ne0VmZmVjdGl2ZVZhbHVlfXtDb25maWdJdGVtS2V5fS0+JSo7CgogICAgICAgIG15ICRFeGNsdXNpdmVMb2NrR1VJRCA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdMb2NrKAogICAgICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICAgICAgICAgRm9yY2UgICAgID0+IDEsCiAgICAgICAgICAgIERlZmF1bHRJRCA9PiAkU2V0dGluZ3tEZWZhdWx0SUR9LAogICAgICAgICk7CgogICAgICAgICMgVXBkYXRlIHNldHRpbmcgd2l0aCBtb2RpZmllZCBkYXRhCiAgICAgICAgbXkgJVJlc3VsdCA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdVcGRhdGUoCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICRTZXR0aW5nTmFtZSwKICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gewogICAgICAgICAgICAgICAgJFNldHRpbmd7RWZmZWN0aXZlVmFsdWV9LT4lKiwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgPT4gJElkZW50aWZpZXJERiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhjbHVzaXZlTG9ja0dVSUQgPT4gJEV4Y2x1c2l2ZUxvY2tHVUlELAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRSZXN1bHR7U3VjY2Vzc30gKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHVwZGF0ZSBzZXR0aW5nICRTZXR0aW5nTmFtZS4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nVW5sb2NrKAogICAgICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICAgICAgICAgRGVmYXVsdElEID0+ICRTZXR0aW5ne0RlZmF1bHRJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IHVubG9jayBzZXR0aW5nICRTZXR0aW5nTmFtZS4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbXkgJURlcGxveW1lbnRSZXN1bHQgPSAkU3lzQ29uZmlnT2JqZWN0LT5Db25maWd1cmF0aW9uRGVwbG95KAogICAgICAgICAgICBDb21tZW50cyAgICAgID0+ICJJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQgVXBncmFkZSAtIHVwZGF0ZWQgJ0NvbmZpZ0tleScgaW4gc2V0dGluZyAnJFNldHRpbmdOYW1lJy4iLAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgIEZvcmNlICAgICAgICAgPT4gMSwKICAgICAgICAgICAgRGlydHlTZXR0aW5ncyA9PiBbJFNldHRpbmdOYW1lXSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRGVwbG95bWVudFJlc3VsdHtTdWNjZXNzfSApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEZXBsb3ltZW50IGZhaWxlZC4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9EeW5hbWljRmllbGRzRGVsZXRlKCkKCkRlbGV0ZXMgdGhlIGR5bmFtaWMgZmllbGRzIHdoaWNoIGFyZSByZWxhdGVkIHRvIHRoaXMgcGFja2FnZSwgZWl0aGVyIGJlY2F1c2UgdGhleSBhcmUgb2Ygb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0gb3IgYmVjYXVzZSB0aGV5IGFyZSBvZiBmaWVsZCB0eXBlIElUU01Db25maWdJdGVtUmVmZXJlbmNlIG9yIElUU01Db25maWdJdGVtVmVyc2lvblJlZmVyZW5jZS4KCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9EeW5hbWljRmllbGRzRGVsZXRlKCk7Cgo9Y3V0CgpzdWIgX0R5bmFtaWNGaWVsZHNEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWNlc3Nhcnkgb2JqZWN0cwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgZ2V0IGFsbCBkeW5hbWljIGZpZWxkcyBiZWNhdXNlIHdlIGNhbid0IGZpbHRlciBmb3IgZmllbGQgdHlwZSBpbiBkeW5hbWljIGZpZWxkIGxpc3QgZnVuY3Rpb25zCiAgICBteSAkRHluYW1pY0ZpZWxkcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICk7CgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCAkRHluYW1pY0ZpZWxkcy0+QCogKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxECiAgICAgICAgICAgIHVubGVzcyAoCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57T2JqZWN0VHlwZX0gZXEgJ0lUU01Db25maWdJdGVtJwogICAgICAgICAgICAgICAgfHwgJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0NvbmZpZ0l0ZW0nCiAgICAgICAgICAgICAgICB8fCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBlcSAnQ29uZmlnSXRlbVZlcnNpb24nCiAgICAgICAgICAgICk7CgogICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0ludGVybmFsRmllbGR9ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICAnUHJpb3JpdHknID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAnTWVzc2FnZScgID0+ICJDb3VsZCBub3QgZGVsZXRlIGludGVybmFsIER5bmFtaWNGaWVsZCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0hIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQoKICAgICAgICBteSAkVmFsdWVzRGVsZXRlU3VjY2VzcyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5BbGxWYWx1ZXNEZWxldGUoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkVmFsdWVzRGVsZXRlU3VjY2VzcyApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgJ1ByaW9yaXR5JyA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiQ291bGQgbm90IGRlbGV0ZSB2YWx1ZXMgZm9yIER5bmFtaWNGaWVsZCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0hIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQoKICAgICAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZERlbGV0ZSgKICAgICAgICAgICAgSUQgICAgID0+ICREeW5hbWljRmllbGRDb25maWctPntJRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICAnUHJpb3JpdHknID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAnTWVzc2FnZScgID0+ICJDb3VsZCBub3QgZGVsZXRlIER5bmFtaWNGaWVsZCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0hIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0dlbmVyYWxDYXRhbG9nQ2xhc3Nlc0RlbGV0ZSgpCgpEZWxldGVzIHRoZSBnZW5lcmFsIGNhdGFsb2cgY2xhc3MgaXRlbXMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gdGhpcyBwYWNrYWdlIGFuZCB0aGVpciBwcmVmZXJlbmNlcyBhcyB3ZWxsLgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0dlbmVyYWxDYXRhbG9nQ2xhc3Nlc0RlbGV0ZSgpOwoKPWN1dAoKc3ViIF9HZW5lcmFsQ2F0YWxvZ0NsYXNzZXNEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWNlc3Nhcnkgb2JqZWN0cwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkUHJlZmVyZW5jZXNPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2c6OlByZWZlcmVuY2VzREInKTsKICAgIG15ICREQk9iamVjdCAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwogICAgbXkgJExvZ09iamVjdCAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgIG15IEBDbGFzc2VzVG9EZWxldGUKICAgICAgICA9IHF3KElUU006OkNvbmZpZ0l0ZW06OkNsYXNzIElUU006OkNvbmZpZ0l0ZW06OlJvbGUgSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3M6OkNhdGVnb3J5IElUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZSBJVFNNOjpDb25maWdJdGVtOjpZZXNObyk7CgogICAgQ0xBU1M6CiAgICBmb3IgbXkgJENsYXNzIChAQ2xhc3Nlc1RvRGVsZXRlKSB7CgogICAgICAgIG15ICRJdGVtTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICRDbGFzcywKICAgICAgICAgICAgVmFsaWQgPT4gMCwKICAgICAgICApOwoKICAgICAgICBuZXh0IENMQVNTIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkSXRlbUxpc3QpOwoKICAgICAgICBmb3IgbXkgJEl0ZW0gKCBwYWlycyAkSXRlbUxpc3QtPiUqICkgewogICAgICAgICAgICBteSAoICRJRCwgJE5hbWUgKSA9ICRJdGVtLT5AKjsKCiAgICAgICAgICAgICMgdW5zZXQgcHJlZmVyZW5jZXMgb2YgaXRlbQogICAgICAgICAgICBteSAlUHJlZmVyZW5jZXMgPSAkUHJlZmVyZW5jZXNPYmplY3QtPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJElELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCVQcmVmZXJlbmNlcykgewogICAgICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICgga2V5cyAlUHJlZmVyZW5jZXMgKSB7CiAgICAgICAgICAgICAgICAgICAgJFByZWZlcmVuY2VzT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJElELAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgPT4gJFByZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICA9PiAnJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGRlbGV0ZSBpdGVtIGZyb20gZGF0YWJhc2UKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gZ2VuZXJhbF9jYXRhbG9nIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgICAgICAgICBcJElELAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICAgICAgJ1ByaW9yaXR5JyA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICdNZXNzYWdlJyAgPT4gIkNvdWxkIG5vdCBkZWxldGUgR2VuZXJhbENhdGFsb2cgaXRlbSAkTmFtZSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG5leHQgQ0xBU1M7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfQ29uZmlnSXRlbUxpbmtEZWxldGUoKQoKQ2xlYXJzIHRoZSBjb25maWdpdGVtX2xpbmsgZGF0YWJhc2UgdGFibGUuCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fQ29uZmlnSXRlbUxpbmtEZWxldGUoKTsKCj1jdXQKCnN1YiBfQ29uZmlnSXRlbUxpbmtEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGRlbGV0ZSB0YWJsZSByb3dzIGZyb20gZGF0YWJhc2UKICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnREVMRVRFIEZST00gY29uZmlnaXRlbV9saW5rJywKICAgICk7CiAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgJ1ByaW9yaXR5JyA9PiAnZXJyb3InLAogICAgICAgICAgICAnTWVzc2FnZScgID0+ICJDb3VsZCBub3QgZGVsZXRlIHJvd3Mgb2YgdGFibGUgY29uZmlnaXRlbV9saW5rISIsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9Db25maWdJdGVtSW1wb3J0RXhwb3J0VGVtcGxhdGVzRGVsZXRlKCkKCkRlbGV0ZXMgYWxsIEltcG9ydEV4cG9ydCB0ZW1wbGF0ZXMgd2l0aCBvYmplY3QgdHlwZSBDb25maWdJdGVtLgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0NvbmZpZ0l0ZW1JbXBvcnRFeHBvcnRUZW1wbGF0ZXNEZWxldGUoKTsKCj1jdXQKCnN1YiBfQ29uZmlnSXRlbUltcG9ydEV4cG9ydFRlbXBsYXRlc0RlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRJbXBvcnRFeHBvcnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0Jyk7CgogICAgbXkgJFRlbXBsYXRlSURMaXN0ID0gJEltcG9ydEV4cG9ydE9iamVjdC0+VGVtcGxhdGVMaXN0KAogICAgICAgIE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKICAgIHJldHVybiAxIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJFRlbXBsYXRlSURMaXN0KTsKCiAgICBmb3IgbXkgJFRlbXBsYXRlSUQgKCAkVGVtcGxhdGVJRExpc3QtPkAqICkgewoKICAgICAgICAjIGRlbGV0ZSB0ZW1wbGF0ZSBmcm9tIGRhdGFiYXNlCiAgICAgICAgbXkgJERlbGV0ZVN1Y2Nlc3MgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZURlbGV0ZSgKICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRCwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgaWYgKCAhJERlbGV0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgJ1ByaW9yaXR5JyA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiQ291bGQgbm90IGRlbGV0ZSBJbXBvcnRFeHBvcnQgdGVtcGxhdGUgb2YgdHlwZSBJVFNNQ29uZmlnSXRlbSB3aXRoIElEICRUZW1wbGF0ZUlEISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="doc/en/ITSMConfigurationManagement.pdf" Permission="644" Encode="Base64">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dwKAdwKAdwKAd0oAAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0SAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHinBADgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcC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4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAd0oAAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0SAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A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nQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0SAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHinBADgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeKQEAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAd0oAAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA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iifrl/zl6ZeihLW7v3j8zieolH+/Nped/9enNrzLufvFTa8HGvI/eO+577q5G8wHTFwngTYaWRcss0BXT15P+YSMku236vbHu4Ltrt0HrpjO/J15tsmPhi8uDnj+raz8TcGx5ust2ZTwnvCdN54OY5uqVvHWE7c3bMxYkr30+eIhfcX89T1fb1ljn/P9pldTM8u6aQe/lQ/ft+k29/GxN9O+f+OK04kP6j56JbeVVAQt3bD5lUUBfJahIee1577dntemd/RK+sU9z97pJW7Zc/ut9Xc8J/r6+ePB/9j8rN+Zj57/4su06mbGPnLt+hf+GOfFp7I2PfSiIcE5c8feRsIhYvnrz/llPP/vr08OSYMTX3z33sVKgkX1HHn7o9e2nirv4njELnryhdsS1ezJ6pA4+M8n/2/PwOCBpxZ3Pr736SAu/tQCAAAAwLWG5REAAADAmtAtH67foHS7b80L+R00Xf7lqwsCVrlGv5+muXBHrsOcZ/8yt+ftf75xyjjVwnmhj7x6S1KoR8wdyxaryRn3PvDwEt+gyAX3r3AabGgbHM0/BeFP/euuWxOC59/2sw9fimft3bmt0XDyk21Hg+547y+LF8z2i1m+7s0X4gf+s+vAyJO/mD7ewk3337MoyFsxyW2VJCE+UZP1fb65hlT50Z3NIauTJGP70a1b3s2R/ux3b/wqOjoqdP2fHvtTQucnH+QPawvf/3fDzEefePXeyLlxsQ/987cbnad4edQl6jkOO3j93Zt+Fa66Zp8aZ9pTMvPV0cuDOPaJcyK683blWVwhgbfwV/ueDRYn/DLt21v8Wg/+36/2Di//za6j7277k2fRX155OUt3YdE9mR/nh/8795uylJ95Zn26OWWYZax5+8G3j7is++zQuzv/Glz72uubj5ubl+nN+fCA+pntr22a3ff9Yy9/rJn72o73jn5zp3/e+7949fTI8KGKD9bPff+jM4XPrRvafvfdB5ye3VyUu2md9uAbW5soFl318esP7RDd887mrENPP6jIeujB7eXGSeugm/3HlzcnS0P/8LcUJLYAAAAAcH1gpi0AAABYFX7knetv++7o7pT6bprpzsjRh8+6584I9cWfRCc4Lrf+ctOWXz/16M71exKnUjQhtndX8zik6SRCAY908XQWm19wpSIeQbNGM1u2f0iCK59rXjeA75QYNpP5vLhC51jW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</File>
    </Filelist>
    <DatabaseInstall Type="post">
        <TableCreate Type="post" Name="configitem">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="configitem_number" Required="true" Size="100" Type="VARCHAR"></Column>
            <Column Name="class_id" Required="true" Type="INTEGER"></Column>
            <Column Name="last_version_id" Required="false" Type="BIGINT"></Column>
            <Column Name="cur_depl_state_id" Required="false" Type="INTEGER"></Column>
            <Column Name="cur_inci_state_id" Required="false" Type="INTEGER"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <Column Name="change_time" Required="true" Type="DATE"></Column>
            <Column Name="change_by" Required="true" Type="INTEGER"></Column>
            <Unique>
                                <UniqueColumn Name="configitem_number"></UniqueColumn>
</Unique>
            <Index Name="configitem_class_id">
                <IndexColumn Name="class_id">
                </IndexColumn>
            </Index>
            <Index Name="configitem_last_version_id">
                <IndexColumn Name="last_version_id">
                </IndexColumn>
            </Index>
            <Index Name="configitem_cur_depl_state_id">
                <IndexColumn Name="cur_depl_state_id">
                </IndexColumn>
            </Index>
            <Index Name="configitem_cur_inci_state_id">
                <IndexColumn Name="cur_inci_state_id">
                </IndexColumn>
            </Index>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Foreign="id" Local="class_id">
                </Reference>
                <Reference Foreign="id" Local="cur_depl_state_id">
                </Reference>
                <Reference Foreign="id" Local="cur_inci_state_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
                <Reference Foreign="id" Local="change_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_definition">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="INTEGER"></Column>
            <Column Name="class_id" Required="true" Type="INTEGER"></Column>
            <Column Name="configitem_definition" Required="true" Type="LONGBLOB"></Column>
            <Column Name="dynamicfield_definition" Required="false" Type="LONGBLOB"></Column>
            <Column Name="version" Required="true" Type="INTEGER"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Foreign="id" Local="class_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_version">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="configitem_id" Required="true" Type="BIGINT"></Column>
            <Column Name="name" Required="true" Size="191" Type="VARCHAR"></Column>
            <Column Name="version_string" Required="true" Size="191" Type="VARCHAR"></Column>
            <Column Name="definition_id" Required="true" Type="INTEGER"></Column>
            <Column Name="depl_state_id" Required="true" Type="INTEGER"></Column>
            <Column Name="inci_state_id" Required="false" Type="INTEGER"></Column>
            <Column Name="description" Required="false" Size="1800000" Type="VARCHAR"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <Column Name="change_time" Required="true" Type="DATE"></Column>
            <Column Name="change_by" Required="true" Type="INTEGER"></Column>
            <Index Name="configitem_version_configitem_id">
                <IndexColumn Name="configitem_id">
                </IndexColumn>
            </Index>
            <Index Name="configitem_version_depl_state_id">
                <IndexColumn Name="depl_state_id">
                </IndexColumn>
            </Index>
            <Index Name="configitem_version_inci_state_id">
                <IndexColumn Name="inci_state_id">
                </IndexColumn>
            </Index>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_definition">
                <Reference Foreign="id" Local="definition_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Foreign="id" Local="depl_state_id">
                </Reference>
                <Reference Foreign="id" Local="inci_state_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_counter">
            <Column Name="class_id" PrimaryKey="true" Required="true" Type="INTEGER"></Column>
            <Column Name="counter_type" Required="true" Size="50" Type="VARCHAR"></Column>
            <Column Name="counter" Required="true" Size="50" Type="VARCHAR"></Column>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_history_type">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="INTEGER"></Column>
            <Column Name="name" Required="true" Size="191" Type="VARCHAR"></Column>
            <Column Name="comments" Size="191" Type="VARCHAR"></Column>
            <Column Name="valid_id" Required="true" Type="SMALLINT"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <Column Name="change_time" Type="DATE"></Column>
            <Column Name="change_by" Type="INTEGER"></Column>
            <Unique Name="configitem_history_type_name">
                                <UniqueColumn Name="name"></UniqueColumn>
</Unique>
            <ForeignKey ForeignTable="valid">
                <Reference Foreign="id" Local="valid_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
                <Reference Foreign="id" Local="change_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_history">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="configitem_id" Required="true" Type="BIGINT"></Column>
            <Column Name="type_id" Required="true" Type="INTEGER"></Column>
            <Column Name="content" Required="true" Size="191" Type="VARCHAR"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_history_type">
                <Reference Foreign="id" Local="type_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_definition_sync">
            <Column Name="class_id" Required="true" Type="INTEGER"></Column>
            <Column Name="field_id" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Foreign="id" Local="class_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="dynamic_field">
                <Reference Foreign="id" Local="field_id">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_link">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="source_configitem_id" Required="false" Type="BIGINT"></Column>
            <Column Name="source_configitem_version_id" Required="false" Type="BIGINT"></Column>
            <Column Name="target_configitem_id" Required="false" Type="BIGINT"></Column>
            <Column Name="target_configitem_version_id" Required="false" Type="BIGINT"></Column>
            <Column Name="link_type_id" Required="true" Type="SMALLINT"></Column>
            <Column Name="dynamic_field_id" Required="false" Type="INTEGER"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="source_configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_version">
                <Reference Foreign="id" Local="source_configitem_version_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="target_configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_version">
                <Reference Foreign="id" Local="target_configitem_version_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="link_type">
                <Reference Foreign="id" Local="link_type_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="dynamic_field">
                <Reference Foreign="id" Local="dynamic_field_id">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableAlter Type="post" Name="acl">
            <ColumnAdd Default="Ticket" Name="object_type" Required="true" Size="100" Type="VARCHAR"></ColumnAdd>
        </TableAlter>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Expired</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Inactive</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Maintenance</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Pilot</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Planned</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Production</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Repair</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Retired</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Review</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Translatable="1" Type="Quote">Test/QA</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::YesNo</Data>
            <Data Key="name" Translatable="1" Type="Quote">Yes</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::YesNo</Data>
            <Data Key="name" Translatable="1" Type="Quote">No</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Class::Category</Data>
            <Data Key="name" Translatable="1" Type="Quote">All</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">ConfigItemCreate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">ConfigItemDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">LinkAdd</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">LinkDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">NameUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">VersionCreate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">VersionUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">ValueUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">DefinitionUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">IncidentStateUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">DeploymentStateUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">VersionDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">AttachmentAdd</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="configitem_history_type">
            <Data Key="name" Type="Quote">AttachmentDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
    </DatabaseInstall>
    <DatabaseUpgrade Type="post">
        <TableCreate Type="post" Name="configitem_history_type" Version="1.3.71">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="INTEGER"></Column>
            <Column Name="name" Required="true" Size="191" Type="VARCHAR"></Column>
            <Column Name="comments" Size="191" Type="VARCHAR"></Column>
            <Column Name="valid_id" Required="true" Type="SMALLINT"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <Column Name="change_time" Type="DATE"></Column>
            <Column Name="change_by" Type="INTEGER"></Column>
            <Unique Name="configitem_history_type_name">
                                <UniqueColumn Name="name"></UniqueColumn>
</Unique>
            <ForeignKey ForeignTable="valid">
                <Reference Foreign="id" Local="valid_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Foreign="id" Local="create_by">
                </Reference>
                <Reference Foreign="id" Local="change_by">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_definition_sync" Version="11.0.1">
            <Column Name="class_id" Required="true" Type="INTEGER"></Column>
            <Column Name="field_id" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Foreign="id" Local="class_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="dynamic_field">
                <Reference Foreign="id" Local="field_id">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableCreate Type="post" Name="configitem_link" Version="11.0.1">
            <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="true" Type="BIGINT"></Column>
            <Column Name="source_configitem_id" Required="false" Type="BIGINT"></Column>
            <Column Name="source_configitem_version_id" Required="false" Type="BIGINT"></Column>
            <Column Name="target_configitem_id" Required="false" Type="BIGINT"></Column>
            <Column Name="target_configitem_version_id" Required="false" Type="BIGINT"></Column>
            <Column Name="link_type_id" Required="true" Type="SMALLINT"></Column>
            <Column Name="dynamic_field_id" Required="false" Type="INTEGER"></Column>
            <Column Name="create_time" Required="true" Type="DATE"></Column>
            <Column Name="create_by" Required="true" Type="INTEGER"></Column>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="source_configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_version">
                <Reference Foreign="id" Local="source_configitem_version_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem">
                <Reference Foreign="id" Local="target_configitem_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_version">
                <Reference Foreign="id" Local="target_configitem_version_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="link_type">
                <Reference Foreign="id" Local="link_type_id">
                </Reference>
            </ForeignKey>
            <ForeignKey ForeignTable="dynamic_field">
                <Reference Foreign="id" Local="dynamic_field_id">
                </Reference>
            </ForeignKey>
        </TableCreate>
        <TableAlter Type="post" Name="configitem_definition" Version="11.0.1">
            <ColumnAdd Name="dynamicfield_definition" Required="false" Type="LONGBLOB"></ColumnAdd>
        </TableAlter>
        <TableAlter Type="post" Name="configitem_version" Version="11.0.1">
            <ColumnAdd Name="version_string" Required="true" Size="191" Type="VARCHAR"></ColumnAdd>
            <ColumnAdd Name="description" Required="false" Size="1800000" Type="VARCHAR"></ColumnAdd>
            <ColumnAdd Name="change_time" Required="true" Type="DATE"></ColumnAdd>
            <ColumnAdd Name="change_by" Required="true" Type="INTEGER"></ColumnAdd>
        </TableAlter>
        <TableAlter Type="post" Name="acl" Version="11.0.1">
            <ColumnAdd Default="Ticket" Name="object_type" Required="true" Size="100" Type="VARCHAR"></ColumnAdd>
        </TableAlter>
        <Insert Type="post" Table="configitem_history_type" Version="11.0.1">
            <Data Key="name" Type="Quote">VersionUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Type="post" Table="general_catalog" Version="11.0.1">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Class::Category</Data>
            <Data Key="name" Translatable="1" Type="Quote">All</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
    </DatabaseUpgrade>
    <DatabaseUninstall Type="pre">
        <TableDrop Type="pre" Name="configitem_definition_sync">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_link">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_counter">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_version">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_definition">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_history">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem_history_type">
        </TableDrop>
        <TableDrop Type="pre" Name="configitem">
        </TableDrop>
        <TableAlter Type="pre" Name="acl">
            <ColumnDrop Name="object_type"></ColumnDrop>
        </TableAlter>
    </DatabaseUninstall>
</otrs_package>